chore: release packages#2304
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
d7d8bac to
fa53758
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
19b2f50 to
e0f1cf3
Compare
e0f1cf3 to
660234d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@object-ui/app-shell@12.1.0
Minor Changes
6eca471: Authorization authoring UX — surface the ADR-0066 security primitives the
framework now enforces (④ secure-by-default posture, ⑤ per-operation
requiredPermissions, ⑨ capability-reference lint).
Access matrix — private-posture badge (④).
PermissionMatrixEditorobjectrows now show an amber Private badge when the object declares
access: { default: 'private' }, with a tooltip explaining that a permissionset's
'*'wildcard grant does NOT cover the object — without this, an adminreading the matrix would assume a wildcard set reaches it while the server
403s. The object catalog mapping threads
access.defaultthrough(
ObjectSummary.accessDefault).Object designer — Access section (④ + ⑤).
ObjectDefaultInspector(sharedby metadata-admin and the Studio Data-pillar settings tab) gains an "Access"
section: an exposure-posture select (
public/private, with a warning hintthat a private object needs an explicit grant before anyone but platform
admins can use it), and a "Required capabilities" editor for the object-level
requiredPermissionsAND-gate. The capability editor supports both shapes —string[](all operations) and the per-operation{read,create,update,delete}map — with a mode toggle that converts losslessly (all→per-op copies the list
into every operation; per-op→all unions). The per-operation toggle is
feature-detected against the bundled
@objectstack/spec(it needs the ⑤union, spec ≥ 12.7) so the UI never offers a shape client-side validation
would reject; map-form drafts always render per-operation inputs.
Publish — capability-reference lint (⑨).
usePublishAllDraftsnow runsvalidateCapabilityReferencesfrom@objectstack/lintover the pendingobject/app/action drafts (declaration side = published permission sets ∪
pending permission drafts) and surfaces "capability registered nowhere"
warnings as a post-publish toast. Strictly advisory and fail-safe: the rule is
feature-detected (no-op until the lint dependency ships it), and any
client/import/rule failure is swallowed — the lint can never break or block
publishing.
e2e0dbe: Dashboard authoring moves entirely into Studio.
The in-page dashboard Edit button and its inline
DashboardConfigPanelwere removed —DashboardViewis now a pure viewer, so authoring lives in one place: Studio's Interfaces pillar. The top bar's "Design in Studio" icon is now context-aware — on a dashboard route it deep-links straight to that dashboard's design page (/studio/:packageId/interfaces?surface=dashboard:<name>) via the newappStudioSurfacePathhelper, falling back to the package's Data tab elsewhere.e35f880: Studio Data tab: metadata-driven config panels for Validations, Hooks and Actions (with add).
The object Validations, Hooks and Actions sub-tabs are now no-code config panels driven by the corresponding metadata, each able to create new entries:
script:cross_field,state_machine,format,json_schemaandconditionalare all authorable (previously they were read-only "maintain in code"). The New menu adds any type seeded with a valid, never-firing skeleton, and a rule's type can be switched in place; CEL predicates reuse the sharedConditionBuilder.HookDefaultInspectorreplaces the flat generic form: the target object is an object picker (multi-select +*, not a free-text box), lifecycle events are grouped checkboxes, and the handler is a dedicated code editor (language + body). Advanced props fall through to aSchemaFormfed the livehookJSONSchema from/meta/types.ActionDefaultInspectornow receives the liveactionJSONSchema asserverSchema, so its "More fields" section can edit any spec property not curated above (nothing is un-editable).DataPillarresolves the per-type schemas once (viauseMetadataTypes) and passes them down.e1840bf: Signal the platform's preview stage in the UI.
The console top bar (
AppHeader) now shows a small Preview chip next to theproduct wordmark on every surface (home / app / orgs), so users always know the
whole platform is pre-GA. It's a new
PreviewBadgecomponent driven by abranding.stagefield in runtime-config ('preview' | 'beta' | 'ga', exposedvia
getPlatformStage()), which defaults to'preview'so the badge shows outof the box. Operators flip the stage to
'ga'at launch (OS_PRODUCT_STAGE/RuntimeConfigPlugin) and the badge disappears with no code change;'beta'renders a "Beta" chip instead. Labels are localized under
topbar.stage.*.572cc6b: Keep a clickable path back when drilling from a record into a related child record (objectui "点击子表标题跳转后如何返回").
Clicking a related sub-table row opens the child record's detail page, but that page dropped all trace of where you came from: its breadcrumb only led to the child object's list (never the parent record), and the record body's built-in Back button is suppressed on the schema-rendered surface. From a related-list drill-in the only way back was the browser Back button.
?from=URL param carries the ancestor trail. When you open a related record (both the synthRelatedRecordActionsBridge.onViewpath and the legacyRecordDetailViewonRowClickpath), the parent record is appended to a compact, refresh- and share-safe trail encoded in the URL. Nested drill-ins accumulate (Account → Invoice → Invoice Line); depth is capped at 8 and titles truncated so the URL can't grow unbounded, and a trailing self-reference is deduped. Codec (encodeRecordTrail/decodeRecordTrail/appendRecordTrail/buildRecordTrailHref) is total — a malformed value yields no ancestor crumbs rather than throwing.?from=trail now showsAccount → #parent → Invoice → #child, each ancestor anobject-list → recordpair that links back, with mid-path crumbs preserving the ancestors above them.c31874d: Record-header actions honour
Action.order, so approval decisions no longer get buried in the⋯overflow menu (objectui#2339 / framework#2670).The
action:barrenderer now stable-sorts its actions by an explicitorderfield (lower = higher / more prominent, default0) before the inline/overflow split. The sort is stable and treats unsetorderas0, so action groups where nobody setsorderkeep their exact registration order — existing toolbars are unaffected.orderis added toActionSchemain@object-ui/types, mirroringAction.orderin@objectstack/spec.RecordDetailViewnow assigns the injected Approve / Reject decision buttons a strongly-negativeorder(and gives Approve the highlightedprimaryvariant), so on a pending-approval record the approver's decision takes the primary-button slot and apprecord_headeractions follow it — instead of the app having to hide its own actions to surface the decision.bf00df4: The top bar's "Design in Studio" bridge now deep-links pages and reports, not just dashboards.
Previously only a dashboard route deep-linked to its design page in Studio's Interfaces pillar; a page or report route fell back to the package's generic Data tab, dropping the admin far from the surface they were viewing. The route-type → surface-type mapping now covers all three interface types (
dashboard/page/report) via the newappStudioRoutePathhelper, so e.g. viewing/apps/:pkg/page/showcase_crm_workbenchand clicking the hammer opens/studio/:packageId/interfaces?surface=page:showcase_crm_workbench. Object routes and the app root still open the Data tab.23132ab: Studio Interfaces: move the source-page code editor into a "Source" inspector tab, silence its bogus TypeScript errors, and deep-link menu selection.
For
kind:'html'/kind:'react'pages (asourcestring, not a block tree), the code editor now lives in a dedicated Source tab in the right-hand properties panel while the canvas shows only the live preview; edits flow through the shared draft so the preview stays in sync. TheSourcePageEditorgains amodeprop (split|editor|preview) to render the halves independently, and abeforeMounthook disables the Monaco TypeScript worker's semantic/syntax validation (and configures JSX) so JSX-flavoured HTML — intrinsic tags like<flex>, noimport React,style={{…}}object literals — no longer floods the gutter with meaningless red squiggles (the live preview and server-side validation remain the source of truth). Selecting a menu now records the open surface as?surface=<type>:<name>, so the design target is shareable and survives a reload instead of snapping back to the first nav leaf.Patch Changes
195121a: Studio form designer + preview now match the runtime form's column density.
The Data pillar's Form → Layout designer laid every section out in a fixed 2-column grid capped at
max-w-3xl, and Form → Preview capped the realObjectFormatmax-w-2xl. So on a wide screen the studio showed at most 2 columns while the record the end user actually edits spreads to up to 4 — the design surface misrepresented the real layout.ObjectFormDesignernow derives its column count the same way the runtime form does (inferColumnsover the object's editable field count, objectui#2578) and lays each section out with the shared container-query grid classes (containerGridColsFor) inside a per-section@container, so a field-heavy object reaches 4 fields per row on wide screens and collapses to one column when the panel is narrow. Wide widgets (textarea/markdown/html/…) span the full row, mirroring the form. Both the layout and preview canvases were widened tomax-w-6xlso the container queries can actually reach 4 columns.containerGridColsForis now exported from@object-ui/plugin-formas the single source of truth for these grid classes.Updated dependencies [6cbccf3]
Updated dependencies [e1840bf]
Updated dependencies [c31874d]
@object-ui/components@12.1.0
Minor Changes
c31874d: Record-header actions honour
Action.order, so approval decisions no longer get buried in the⋯overflow menu (objectui#2339 / framework#2670).The
action:barrenderer now stable-sorts its actions by an explicitorderfield (lower = higher / more prominent, default0) before the inline/overflow split. The sort is stable and treats unsetorderas0, so action groups where nobody setsorderkeep their exact registration order — existing toolbars are unaffected.orderis added toActionSchemain@object-ui/types, mirroringAction.orderin@objectstack/spec.RecordDetailViewnow assigns the injected Approve / Reject decision buttons a strongly-negativeorder(and gives Approve the highlightedprimaryvariant), so on a pending-approval record the approver's decision takes the primary-button slot and apprecord_headeractions follow it — instead of the app having to hide its own actions to surface the decision.Patch Changes
6cbccf3: Localize form validation messages, toast client-side validation failures, and make native date/time picker icons legible in dark mode.
Record-form validation messages (required, min/max length, min/max value, pattern, email, URL) were hard-coded English even when the field label was localized — e.g. a Chinese "计划开始日期" field showed "计划开始日期 is required".
buildValidationRulesbaked English strings, so the form renderer'st(...)fallback never applied. It now emitsrequired: trueand, for the other rules, amessageKey+undefinedmessage (a field-authored*_messagestill wins and passes through verbatim); the form renderer fills the blanks via i18n (validation.*keys already exist in every locale), so messages track the label's language.When client-side validation blocks a submit, the offending field's inline error can sit below the fold in a long modal/drawer form — the user clicks 创建 and sees nothing happen. The form renderer now also fires a
toast.errornaming the fields (validation.formInvalid, added to all 10 locales), mirroring the existing server-error toast so the feedback is visible regardless of scroll position.Separately, native controls now declare
color-scheme(lighton:root,darkon.dark), so the webkit calendar-picker-indicator and other built-in glyphs render light-on-dark instead of vanishing against the dark input background.Updated dependencies [6cbccf3]
Updated dependencies [e1840bf]
Updated dependencies [c31874d]
@object-ui/i18n@12.1.0
Minor Changes
e1840bf: Signal the platform's preview stage in the UI.
The console top bar (
AppHeader) now shows a small Preview chip next to theproduct wordmark on every surface (home / app / orgs), so users always know the
whole platform is pre-GA. It's a new
PreviewBadgecomponent driven by abranding.stagefield in runtime-config ('preview' | 'beta' | 'ga', exposedvia
getPlatformStage()), which defaults to'preview'so the badge shows outof the box. Operators flip the stage to
'ga'at launch (OS_PRODUCT_STAGE/RuntimeConfigPlugin) and the badge disappears with no code change;'beta'renders a "Beta" chip instead. Labels are localized under
topbar.stage.*.Patch Changes
6cbccf3: Localize form validation messages, toast client-side validation failures, and make native date/time picker icons legible in dark mode.
Record-form validation messages (required, min/max length, min/max value, pattern, email, URL) were hard-coded English even when the field label was localized — e.g. a Chinese "计划开始日期" field showed "计划开始日期 is required".
buildValidationRulesbaked English strings, so the form renderer'st(...)fallback never applied. It now emitsrequired: trueand, for the other rules, amessageKey+undefinedmessage (a field-authored*_messagestill wins and passes through verbatim); the form renderer fills the blanks via i18n (validation.*keys already exist in every locale), so messages track the label's language.When client-side validation blocks a submit, the offending field's inline error can sit below the fold in a long modal/drawer form — the user clicks 创建 and sees nothing happen. The form renderer now also fires a
toast.errornaming the fields (validation.formInvalid, added to all 10 locales), mirroring the existing server-error toast so the feedback is visible regardless of scroll position.Separately, native controls now declare
color-scheme(lighton:root,darkon.dark), so the webkit calendar-picker-indicator and other built-in glyphs render light-on-dark instead of vanishing against the dark input background.@object-ui/types@12.1.0
Minor Changes
c31874d: Record-header actions honour
Action.order, so approval decisions no longer get buried in the⋯overflow menu (objectui#2339 / framework#2670).The
action:barrenderer now stable-sorts its actions by an explicitorderfield (lower = higher / more prominent, default0) before the inline/overflow split. The sort is stable and treats unsetorderas0, so action groups where nobody setsorderkeep their exact registration order — existing toolbars are unaffected.orderis added toActionSchemain@object-ui/types, mirroringAction.orderin@objectstack/spec.RecordDetailViewnow assigns the injected Approve / Reject decision buttons a strongly-negativeorder(and gives Approve the highlightedprimaryvariant), so on a pending-approval record the approver's decision takes the primary-button slot and apprecord_headeractions follow it — instead of the app having to hide its own actions to surface the decision.@object-ui/console@12.1.0
Patch Changes
@object-ui/auth@12.1.0
Patch Changes
@object-ui/cli@12.1.0
Patch Changes
@object-ui/collaboration@12.1.0
Patch Changes
@object-ui/core@12.1.0
Patch Changes
@object-ui/data-objectstack@12.1.0
Patch Changes
@object-ui/fields@12.1.0
Patch Changes
6cbccf3: Localize form validation messages, toast client-side validation failures, and make native date/time picker icons legible in dark mode.
Record-form validation messages (required, min/max length, min/max value, pattern, email, URL) were hard-coded English even when the field label was localized — e.g. a Chinese "计划开始日期" field showed "计划开始日期 is required".
buildValidationRulesbaked English strings, so the form renderer'st(...)fallback never applied. It now emitsrequired: trueand, for the other rules, amessageKey+undefinedmessage (a field-authored*_messagestill wins and passes through verbatim); the form renderer fills the blanks via i18n (validation.*keys already exist in every locale), so messages track the label's language.When client-side validation blocks a submit, the offending field's inline error can sit below the fold in a long modal/drawer form — the user clicks 创建 and sees nothing happen. The form renderer now also fires a
toast.errornaming the fields (validation.formInvalid, added to all 10 locales), mirroring the existing server-error toast so the feedback is visible regardless of scroll position.Separately, native controls now declare
color-scheme(lighton:root,darkon.dark), so the webkit calendar-picker-indicator and other built-in glyphs render light-on-dark instead of vanishing against the dark input background.Updated dependencies [6cbccf3]
Updated dependencies [e1840bf]
Updated dependencies [c31874d]
@object-ui/layout@12.1.0
Patch Changes
@object-ui/mobile@12.1.0
Patch Changes
@object-ui/permissions@12.1.0
Patch Changes
@object-ui/plugin-ai@12.1.0
Patch Changes
@object-ui/plugin-calendar@12.1.0
Patch Changes
@object-ui/plugin-charts@12.1.0
Patch Changes
@object-ui/plugin-chatbot@12.1.0
Patch Changes
@object-ui/plugin-dashboard@12.1.0
Patch Changes
@object-ui/plugin-designer@12.1.0
Patch Changes
@object-ui/plugin-detail@12.1.0
Patch Changes
47e72b8: Fix a React Add ObjectStack Spec v0.7.1 alignment analysis and implementation roadmap #300 crash when drilling from a master record into a related child record.
DetailSectionplaced its all-emptyreturn nullguard before the virtual-scrolluseEffect, so a section that rendered all-empty on one pass (effect skipped) and populated on the next (effect runs) changed its hook count between renders of the same reconciled fiber — React threw error Add ObjectStack Spec v0.7.1 alignment analysis and implementation roadmap #300 ("rendered more hooks than during the previous render"). This reliably tripped on the master-detail drill-in (e.g. Account → Project), showing an error boundary and bouncing the user away on refresh. The all-empty guard now runs after every hook, making the hook count invariant.Updated dependencies [6cbccf3]
Updated dependencies [e1840bf]
@object-ui/plugin-editor@12.1.0
Patch Changes
@object-ui/plugin-form@12.1.0
Patch Changes
195121a: Studio form designer + preview now match the runtime form's column density.
The Data pillar's Form → Layout designer laid every section out in a fixed 2-column grid capped at
max-w-3xl, and Form → Preview capped the realObjectFormatmax-w-2xl. So on a wide screen the studio showed at most 2 columns while the record the end user actually edits spreads to up to 4 — the design surface misrepresented the real layout.ObjectFormDesignernow derives its column count the same way the runtime form does (inferColumnsover the object's editable field count, objectui#2578) and lays each section out with the shared container-query grid classes (containerGridColsFor) inside a per-section@container, so a field-heavy object reaches 4 fields per row on wide screens and collapses to one column when the panel is narrow. Wide widgets (textarea/markdown/html/…) span the full row, mirroring the form. Both the layout and preview canvases were widened tomax-w-6xlso the container queries can actually reach 4 columns.containerGridColsForis now exported from@object-ui/plugin-formas the single source of truth for these grid classes.Updated dependencies [6cbccf3]
Updated dependencies [e1840bf]
Updated dependencies [c31874d]
@object-ui/plugin-gantt@12.1.0
Patch Changes
@object-ui/plugin-grid@12.1.0
Patch Changes
@object-ui/plugin-kanban@12.1.0
Patch Changes
@object-ui/plugin-map@12.1.0
Patch Changes
@object-ui/plugin-markdown@12.1.0
Patch Changes
@object-ui/plugin-report@12.1.0
Patch Changes
@object-ui/plugin-timeline@12.1.0
Patch Changes
@object-ui/plugin-tree@12.1.0
Patch Changes
@object-ui/plugin-view@12.1.0
Patch Changes
@object-ui/providers@12.1.0
Patch Changes
@object-ui/react@12.1.0
Patch Changes
@object-ui/runner@12.1.0
Patch Changes
@object-ui/tenant@12.1.0
Patch Changes
@object-ui/create-plugin@12.1.0
@object-ui/plugin-list@12.1.0
@object-ui/react-runtime@12.1.0
@object-ui/sdui-parser@12.1.0
object-ui@12.1.0
Patch Changes