Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/curly-donkeys-relax.md

This file was deleted.

17 changes: 0 additions & 17 deletions .changeset/tame-otters-listen.md

This file was deleted.

16 changes: 0 additions & 16 deletions .changeset/tame-owls-wander.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/tame-plums-invite.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/tidy-plums-argue.md

This file was deleted.

22 changes: 0 additions & 22 deletions .changeset/tiny-hounds-jump.md

This file was deleted.

2 changes: 2 additions & 0 deletions packages/auth/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-auth

## 0.27.0

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/auth/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-auth",
"version": "0.26.0",
"version": "0.27.0",
"description": "Better-auth integration for OpenSaas Stack",
"type": "module",
"main": "./dist/index.js",
Expand Down
7 changes: 7 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# @opensaas/stack-cli

## 0.27.0

### Patch Changes

- Updated dependencies [[`18c39c8`](https://github.com/OpenSaasAU/stack/commit/18c39c8b8ffc0b0c5c4551385bb67054448e5781), [`9d9c7f8`](https://github.com/OpenSaasAU/stack/commit/9d9c7f8e5afd0b4afb01dc40cb16217f8d675354), [`002e755`](https://github.com/OpenSaasAU/stack/commit/002e755ca405c23127b3c88378955127cc8b3f67), [`a15e566`](https://github.com/OpenSaasAU/stack/commit/a15e5660d736c8ea2d4b804c5ef6891510b2ea3d)]:
- @opensaas/stack-core@0.27.0

## 0.26.0

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-cli",
"version": "0.26.0",
"version": "0.27.0",
"description": "CLI tools for OpenSaas Stack",
"type": "module",
"main": "./dist/index.js",
Expand Down
42 changes: 42 additions & 0 deletions packages/core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# @opensaas/stack-core

## 0.27.0

### Minor Changes

- [#635](https://github.com/OpenSaasAU/stack/pull/635) [`18c39c8`](https://github.com/OpenSaasAU/stack/commit/18c39c8b8ffc0b0c5c4551385bb67054448e5781) Thanks [@borisno2](https://github.com/borisno2)! - Add a label seam for the admin UI: `getLabelFieldName(listConfig)` resolves the field that represents a list's rows as a single label (`ui.labelField` → `name` → `title` → `id`), and `getItemLabel(listConfig, item)` reads that field off a row, falling back to `id` when it's missing. Both are exported from the root entry point.

```typescript
import { getLabelFieldName, getItemLabel } from '@opensaas/stack-core'

Post: list({
fields: { title: text() },
ui: { labelField: 'title' },
})

getLabelFieldName(listConfig) // 'title'
getItemLabel(listConfig, item) // item.title, or item.id if title is missing
```

- [#636](https://github.com/OpenSaasAU/stack/pull/636) [`a15e566`](https://github.com/OpenSaasAU/stack/commit/a15e5660d736c8ea2d4b804c5ef6891510b2ea3d) Thanks [@borisno2](https://github.com/borisno2)! - Add a relationship-options read primitive: `getRelationshipOptions(context, config, relatedListKey, { search?, take?, selectedIds? })` returns a bounded, projected `{ id, label }[]` for relationship editors. It selects only `id` and the resolved label field (via `getLabelFieldName`), so no depth-5 auto-include ever runs; `search` filters via `contains` when the label field is text; results are ordered by the label field; and currently-selected `selectedIds` are always unioned into the result even when outside the `search`/`take` window. Operation-level `query` access on the related list still applies (denied → `[]`).

Also adds a `relationshipOptions` op on `context.serverAction` so hosts can resolve options from a client without a bespoke endpoint:

```typescript
await context.serverAction({
listKey: 'Post',
action: 'relationshipOptions',
field: 'author',
search: 'ada',
take: 20,
selectedIds: ['user-123'],
})
// => { success: true, data: [{ id: 'user-123', label: 'Ada Lovelace' }, ...] }
```

`getRelationshipOptions` is exported from `@opensaas/stack-core` and re-exported from `@opensaas/stack-ui` for server components that already hold a context.

### Patch Changes

- [#633](https://github.com/OpenSaasAU/stack/pull/633) [`9d9c7f8`](https://github.com/OpenSaasAU/stack/commit/9d9c7f8e5afd0b4afb01dc40cb16217f8d675354) Thanks [@borisno2](https://github.com/borisno2)! - Fix virtual fields named in `include`/`select` throwing a Prisma "Unknown field" error. Virtual field keys are now stripped from the query payload while their value is still computed via `resolveOutput`.

- [#637](https://github.com/OpenSaasAU/stack/pull/637) [`002e755`](https://github.com/OpenSaasAU/stack/commit/002e755ca405c23127b3c88378955127cc8b3f67) Thanks [@borisno2](https://github.com/borisno2)! - Fix `calendarDay` writes 500ing on Prisma 7 `@db.Date` columns — a `resolveInput` hook now coerces a `YYYY-MM-DD` string to a UTC-midnight `Date` before validation, and the field's zod schema accepts either shape.

## 0.26.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-core",
"version": "0.26.0",
"version": "0.27.0",
"description": "Core stack for OpenSaas - schema definition, access control, and runtime utilities",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 2 additions & 0 deletions packages/rag/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-rag

## 0.27.0

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/rag/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-rag",
"version": "0.26.0",
"version": "0.27.0",
"description": "RAG and AI embeddings integration for OpenSaas Stack",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 2 additions & 0 deletions packages/storage-s3/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-storage-s3

## 0.27.0

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/storage-s3/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-storage-s3",
"version": "0.26.0",
"version": "0.27.0",
"description": "AWS S3 storage provider for OpenSaas Stack file uploads",
"type": "module",
"exports": {
Expand Down
2 changes: 2 additions & 0 deletions packages/storage-vercel/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-storage-vercel

## 0.27.0

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/storage-vercel/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-storage-vercel",
"version": "0.26.0",
"version": "0.27.0",
"description": "Vercel Blob storage provider for OpenSaas Stack file uploads",
"type": "module",
"exports": {
Expand Down
2 changes: 2 additions & 0 deletions packages/storage/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-storage

## 0.27.0

## 0.26.0

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/storage/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-storage",
"version": "0.26.0",
"version": "0.27.0",
"description": "File and image upload field types with pluggable storage providers for OpenSaas Stack",
"type": "module",
"exports": {
Expand Down
2 changes: 2 additions & 0 deletions packages/tiptap/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# @opensaas/stack-tiptap

## 0.27.0

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/tiptap/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-tiptap",
"version": "0.26.0",
"version": "0.27.0",
"description": "Tiptap rich text editor integration for OpenSaas Stack",
"type": "module",
"main": "./dist/index.js",
Expand Down
39 changes: 39 additions & 0 deletions packages/ui/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# @opensaas/stack-ui

## 0.27.0

### Minor Changes

- [#638](https://github.com/OpenSaasAU/stack/pull/638) [`95560e4`](https://github.com/OpenSaasAU/stack/commit/95560e4db69ae390131f02c357c7c0e0b82d4304) Thanks [@borisno2](https://github.com/borisno2)! - Wire the edit page onto the relationship-options primitive so relationship dropdowns are fast and live-searchable. The item-form preparation now fetches a bounded, take-limited window via `getRelationshipOptions` instead of an unbounded `findMany({})` per relationship field, always unioning the current value's id(s) so its label renders even outside the window.

`ComboboxField` (single) and `RelationshipManager` (many) gain debounced live search: typing narrows results against the label field via the `relationshipOptions` serverAction op, without any wiring changes required in host apps — `ItemForm`/`SingletonView` already pass `serverAction` and `listKey` through.

```typescript
// No config changes needed — AdminUI's edit page picks this up automatically.
// A field's relationship dropdown now:
// 1. Renders a bounded initial window (default 50) with the current value's label always visible
// 2. Debounces typed input and searches server-side via context.serverAction({ action: 'relationshipOptions', ... })
```

Components without a wired `serverAction` (e.g. custom usages of `ComboboxField`/`RelationshipManager`) fall back to client-side filtering over the initial window, unchanged from previous behavior.

- [#636](https://github.com/OpenSaasAU/stack/pull/636) [`a15e566`](https://github.com/OpenSaasAU/stack/commit/a15e5660d736c8ea2d4b804c5ef6891510b2ea3d) Thanks [@borisno2](https://github.com/borisno2)! - Add a relationship-options read primitive: `getRelationshipOptions(context, config, relatedListKey, { search?, take?, selectedIds? })` returns a bounded, projected `{ id, label }[]` for relationship editors. It selects only `id` and the resolved label field (via `getLabelFieldName`), so no depth-5 auto-include ever runs; `search` filters via `contains` when the label field is text; results are ordered by the label field; and currently-selected `selectedIds` are always unioned into the result even when outside the `search`/`take` window. Operation-level `query` access on the related list still applies (denied → `[]`).

Also adds a `relationshipOptions` op on `context.serverAction` so hosts can resolve options from a client without a bespoke endpoint:

```typescript
await context.serverAction({
listKey: 'Post',
action: 'relationshipOptions',
field: 'author',
search: 'ada',
take: 20,
selectedIds: ['user-123'],
})
// => { success: true, data: [{ id: 'user-123', label: 'Ada Lovelace' }, ...] }
```

`getRelationshipOptions` is exported from `@opensaas/stack-core` and re-exported from `@opensaas/stack-ui` for server components that already hold a context.

### Patch Changes

- [#639](https://github.com/OpenSaasAU/stack/pull/639) [`3b2beb7`](https://github.com/OpenSaasAU/stack/commit/3b2beb7fbe64ce34510a5f59e0403a9b2fdab52d) Thanks [@borisno2](https://github.com/borisno2)! - List-page relationship cells now render their label via the shared label seam (`getItemLabel`), honouring a related list's `ui.labelField` instead of an inline `name → title → label → id` guess that had drifted from the item form.

## 0.26.0

## 0.25.0
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opensaas/stack-ui",
"version": "0.26.0",
"version": "0.27.0",
"description": "Composable React UI components for OpenSaas Stack",
"type": "module",
"main": "./dist/index.js",
Expand Down