chore: release packages#1358
Closed
github-actions[bot] wants to merge 1 commit into
Closed
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
923e866 to
df03c24
Compare
df03c24 to
57da389
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@5.2.0
Minor Changes
921bd28: Console now honors
App.homePageIdfor the bare/console/apps/:appNamelanding route. Previously it always redirected to the first reachable nav
item, so CRM-style apps with KPI dashboards still landed users on the
first object list (e.g. Leads) rather than the configured home page.
The new
resolveLandingRoutelooks up thehomePageIdnav item, buildsits route (object / view / page / dashboard / report), and falls back to
the existing
findFirstRouteonly when nohomePageIdis set or itresolves to a routeless item type.
Patch Changes
9997cae: DataSource: add optional
bulkUpdate(resource, ids, patch)for "same patch, many rows" interactions (Slack "mark all as read", Linear "archive selected"). The ObjectStack adapter routes toPOST /api/v1/data/:object/updateManyso the client pays one HTTP/auth/RLS round-trip instead of N parallel PATCHes, eliminating mark-all-read jank on inboxes with 50+ unread.AppHeader's
markAllReadnow prefersbulkUpdate, with a transparent fallback to the per-id loop for adapters that don't implement the helper.5425608: CRM UX polish pass — calmer enterprise look across detail + kanban.
neutral foreground titles + a quiet grey count pill instead of full
rainbow gradient + colored title + colored count. Pipeline boards
(Opportunity, Case, Task, Lead) look like Salesforce/Linear instead of
a toy. WIP-limit overflow remains destructive-red so urgency stays loud.
record:reference_rail): newhideEmptyprop(default true) collapses entries whose total === 0 into a single
+ N empty (Quotes · Products …)chip at the bottom of the rail.Removes the 4–7 "No records" stack that dominated the aside.
record:path): completed stages now render with anemerald-tinted background + bold green check instead of low-contrast
bg-muted text-muted-foreground(which read as "light grey on white"and was borderline unreadable).
RecordDetailView): record-not-found short-circuit.Previously a stale/missing recordId still rendered the page chrome
(rail, discussion, breadcrumb with the raw id), making invalid links
look like a partially broken page. Now renders a clean centered
Emptystate with database icon + i18n'd "Record not found" copy.detail.showEmptyRelated_{one,other}andempty.recordNotFound{,Description}keys (en + zh).7c441f5: End-to-end @-mention notifications.
@object-ui/plugin-detailnow exportsextractMentions(text, suggestions)— a small utility that resolves
@<label>tokens in a comment body touser ids, using the same suggestion list that drives the in-editor
dropdown. Handles labels with spaces ("@qa Test"), CJK ("@王小明"),
longest-match disambiguation ("Anna Lee" wins over "Anna"), and ignores
unknown @-tokens. 9 unit tests.
@object-ui/app-shellRecordDetailViewnow:sys_comment.mentions(previously hard-coded
'[]', so servers had no idea who was beingpinged).
sys_notificationrow per mentioned recipient(self-mentions are filtered as noise) with the canonical bell-inbox
shape:
type: 'mention',recipient_id,actor_name,title,bodypreview (≤140 chars),source_object/source_id/source_comment_id,is_read: false,created_at.The notification write tolerates 404 silently, so deployments without
a notification collection degrade to the previous behavior (mention
text + highlight, no inbox row). Spec-compliant servers that emit
notifications via their own sys_comment after-create hook can ignore
the client-side write — the bell de-dupes by id at the polling layer.
072cad0: Always seed @-mention suggestions with the current user so the dropdown
appears even when the backend has no
sys_userdirectory (or the fetchfails). Hosts with a real user roster still get the merged list —
current user first, then directory entries de-duped by id.
Previously, typing
@in the discussion comment box was a no-op onexample backends that don't serve
sys_user, making the feature lookbroken. Authors can now at minimum mention themselves; richer rosters
are merged in automatically when available.
Updated dependencies [9997cae]
Updated dependencies [a3cb88f]
Updated dependencies [5425608]
Updated dependencies [6c3f018]
Updated dependencies [d912a60]
Updated dependencies [e919433]
Updated dependencies [70b5570]
Updated dependencies [e7b6eae]
@object-ui/data-objectstack@5.2.0
Minor Changes
9997cae: DataSource: add optional
bulkUpdate(resource, ids, patch)for "same patch, many rows" interactions (Slack "mark all as read", Linear "archive selected"). The ObjectStack adapter routes toPOST /api/v1/data/:object/updateManyso the client pays one HTTP/auth/RLS round-trip instead of N parallel PATCHes, eliminating mark-all-read jank on inboxes with 50+ unread.AppHeader's
markAllReadnow prefersbulkUpdate, with a transparent fallback to the per-id loop for adapters that don't implement the helper.Patch Changes
@object-ui/layout@5.2.0
Minor Changes
NavigationRenderernow resolves a group's initial open state with twoplatform-aware defaults:
expandedfield honored.@objectstack/specAppNavigationuses
expanded: true | falseon group items; objectui historicallyonly read
defaultOpen. App authors who wroteexpanded: falsewould see no effect because the renderer silently fell back to the
"open unless
defaultOpen === false" rule. Both field names nowresolve to the same explicit override.
expandednordefaultOpen, groups with 8 or more directchildren default to collapsed. Long sidebar sections (e.g. 10+
reports) doubled the sidebar height and pushed siblings below the
fold — Slack, Linear, and Notion all default-collapse oversized
sections for the same reason. Short groups (typical 3–6 items) still
open by default.
current route lives inside the group, so users never lose visual
orientation to a hidden active item.
Patch Changes
@object-ui/plugin-detail@5.2.0
Minor Changes
7c441f5: End-to-end @-mention notifications.
@object-ui/plugin-detailnow exportsextractMentions(text, suggestions)— a small utility that resolves
@<label>tokens in a comment body touser ids, using the same suggestion list that drives the in-editor
dropdown. Handles labels with spaces ("@qa Test"), CJK ("@王小明"),
longest-match disambiguation ("Anna Lee" wins over "Anna"), and ignores
unknown @-tokens. 9 unit tests.
@object-ui/app-shellRecordDetailViewnow:sys_comment.mentions(previously hard-coded
'[]', so servers had no idea who was beingpinged).
sys_notificationrow per mentioned recipient(self-mentions are filtered as noise) with the canonical bell-inbox
shape:
type: 'mention',recipient_id,actor_name,title,bodypreview (≤140 chars),source_object/source_id/source_comment_id,is_read: false,created_at.The notification write tolerates 404 silently, so deployments without
a notification collection degrade to the previous behavior (mention
text + highlight, no inbox row). Spec-compliant servers that emit
notifications via their own sys_comment after-create hook can ignore
the client-side write — the bell de-dupes by id at the polling layer.
70b5570:
record:pathnow distinguishes won/lost terminal stages. Stages can optin via the new
terminal: 'won' | 'lost'property on each stage entry,and the renderer also falls back to a value/label heuristic (matches
closed_lost,lost,failed,cancelled,失败,流失,丢单, etc.)so existing CRM-style picklists get the treatment without migration.
border, destructive (red) tint, pill shape, and
✗glyph — mirroringthe Salesforce / HubSpot alt-terminus pattern that signals "this
breaks the forward path, not steps past it."
emerald wash + 🏆 glyph to read as "the goal," even before the record
reaches it.
have room to fork the row.
Patch Changes
a3cb88f: CRM UX polish batch:
record:path): bump completed-stage contrast (emerald-800 text on emerald-500/15, was 700 on /10) and future-stage text fromforeground/70toforeground/85for legibility.notifications.emptyUnread,notifications.filterUnread,notifications.filterAll(en + zh) so the InboxPopover Unread/All sub-filter renders in the active locale.5425608: CRM UX polish pass — calmer enterprise look across detail + kanban.
neutral foreground titles + a quiet grey count pill instead of full
rainbow gradient + colored title + colored count. Pipeline boards
(Opportunity, Case, Task, Lead) look like Salesforce/Linear instead of
a toy. WIP-limit overflow remains destructive-red so urgency stays loud.
record:reference_rail): newhideEmptyprop(default true) collapses entries whose total === 0 into a single
+ N empty (Quotes · Products …)chip at the bottom of the rail.Removes the 4–7 "No records" stack that dominated the aside.
record:path): completed stages now render with anemerald-tinted background + bold green check instead of low-contrast
bg-muted text-muted-foreground(which read as "light grey on white"and was borderline unreadable).
RecordDetailView): record-not-found short-circuit.Previously a stale/missing recordId still rendered the page chrome
(rail, discussion, breadcrumb with the raw id), making invalid links
look like a partially broken page. Now renders a clean centered
Emptystate with database icon + i18n'd "Record not found" copy.detail.showEmptyRelated_{one,other}andempty.recordNotFound{,Description}keys (en + zh).e919433: Stop silently assuming USD when a currency field has no
currencyconfigured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
explicit currency) the cells now render as plain locale-formatted
numbers (
150,000.00) instead of$150,000.00— which was the Implement visual designer for Object UI schemas #1"why is my RMB showing as dollars?" bug.
Behavior change is opt-in via omission: when
currency/defaultCurrencyis set on the field/column, formatting is unchanged.Fixed call sites:
@object-ui/fields:formatCurrency,formatCompactCurrency, andCurrencyCellRendererno longer default-param'USD'.@object-ui/i18n:formatCurrency()falls back toformatNumbersemantics when
currencyis omitted.@object-ui/plugin-grid: column-summary formatter (Sum: 5,000,000instead of
Sum: $5,000,000.00).@object-ui/plugin-detail: header-highlight currency formatter.@object-ui/plugin-dashboard:ObjectMetricWidgetinferredcurrency now resolves to
undefined(not'USD') for un-taggedfields, so
MetricWidget'sisCurrencyheuristic falls throughto plain number formatting.
@object-ui/types@5.2.0
Minor Changes
9997cae: DataSource: add optional
bulkUpdate(resource, ids, patch)for "same patch, many rows" interactions (Slack "mark all as read", Linear "archive selected"). The ObjectStack adapter routes toPOST /api/v1/data/:object/updateManyso the client pays one HTTP/auth/RLS round-trip instead of N parallel PATCHes, eliminating mark-all-read jank on inboxes with 50+ unread.AppHeader's
markAllReadnow prefersbulkUpdate, with a transparent fallback to the per-id loop for adapters that don't implement the helper.70b5570:
record:pathnow distinguishes won/lost terminal stages. Stages can optin via the new
terminal: 'won' | 'lost'property on each stage entry,and the renderer also falls back to a value/label heuristic (matches
closed_lost,lost,failed,cancelled,失败,流失,丢单, etc.)so existing CRM-style picklists get the treatment without migration.
border, destructive (red) tint, pill shape, and
✗glyph — mirroringthe Salesforce / HubSpot alt-terminus pattern that signals "this
breaks the forward path, not steps past it."
emerald wash + 🏆 glyph to read as "the goal," even before the record
reaches it.
have room to fork the row.
@object-ui/auth@5.2.0
Patch Changes
@object-ui/cli@5.2.0
Patch Changes
@object-ui/collaboration@5.2.0
Patch Changes
@object-ui/components@5.2.0
Patch Changes
@object-ui/core@5.2.0
Patch Changes
@object-ui/fields@5.2.0
Patch Changes
6c3f018:
CurrencyCellRenderernow reads the currency code from three locationsin priority order:
field.currency(legacy grid configs) →field.defaultCurrency(canonical top-level) →field.currencyConfig.defaultCurrency(nested shape emitted by@objectstack/specField.currency({ currencyConfig: ... })).Previously the renderer only checked the first two, so currency-type
fields defined via the canonical spec helper rendered without their
configured symbol. When none of the three is set, the cell still
gracefully degrades to a plain formatted number — never silently
assuming USD.
d912a60: CRM polish — denser kanban cards, smarter currency, calmer dates.
Label: valuetwo-columngrid in favor of a single-column dense list (values only, with the
field label preserved as a hover
titlefor accessibility). Pipelinecards across Salesforce / HubSpot / Linear all do this because the
value's own type carries its meaning, and the saved space lets the
title breathe.
.00when the value is awhole number (Salesforce convention:
$1,234.50keeps cents,$1,234doesn't). Pipeline amounts like500,000.00now read as500,000.the current year —
7月21日instead of2026年7月21日. Past- andfuture-year dates keep the year for disambiguation
(
2025年11月23日)..replace(/[.,]00$/, '')workaround that hid cents forprecision:0fields; the formatter now handles whole-unit trimming natively.
e919433: Stop silently assuming USD when a currency field has no
currencyconfigured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
explicit currency) the cells now render as plain locale-formatted
numbers (
150,000.00) instead of$150,000.00— which was the Implement visual designer for Object UI schemas #1"why is my RMB showing as dollars?" bug.
Behavior change is opt-in via omission: when
currency/defaultCurrencyis set on the field/column, formatting is unchanged.Fixed call sites:
@object-ui/fields:formatCurrency,formatCompactCurrency, andCurrencyCellRendererno longer default-param'USD'.@object-ui/i18n:formatCurrency()falls back toformatNumbersemantics when
currencyis omitted.@object-ui/plugin-grid: column-summary formatter (Sum: 5,000,000instead of
Sum: $5,000,000.00).@object-ui/plugin-detail: header-highlight currency formatter.@object-ui/plugin-dashboard:ObjectMetricWidgetinferredcurrency now resolves to
undefined(not'USD') for un-taggedfields, so
MetricWidget'sisCurrencyheuristic falls throughto plain number formatting.
Updated dependencies [9997cae]
Updated dependencies [a3cb88f]
Updated dependencies [5425608]
Updated dependencies [e919433]
Updated dependencies [70b5570]
@object-ui/i18n@5.2.0
Patch Changes
a3cb88f: CRM UX polish batch:
record:path): bump completed-stage contrast (emerald-800 text on emerald-500/15, was 700 on /10) and future-stage text fromforeground/70toforeground/85for legibility.notifications.emptyUnread,notifications.filterUnread,notifications.filterAll(en + zh) so the InboxPopover Unread/All sub-filter renders in the active locale.5425608: CRM UX polish pass — calmer enterprise look across detail + kanban.
neutral foreground titles + a quiet grey count pill instead of full
rainbow gradient + colored title + colored count. Pipeline boards
(Opportunity, Case, Task, Lead) look like Salesforce/Linear instead of
a toy. WIP-limit overflow remains destructive-red so urgency stays loud.
record:reference_rail): newhideEmptyprop(default true) collapses entries whose total === 0 into a single
+ N empty (Quotes · Products …)chip at the bottom of the rail.Removes the 4–7 "No records" stack that dominated the aside.
record:path): completed stages now render with anemerald-tinted background + bold green check instead of low-contrast
bg-muted text-muted-foreground(which read as "light grey on white"and was borderline unreadable).
RecordDetailView): record-not-found short-circuit.Previously a stale/missing recordId still rendered the page chrome
(rail, discussion, breadcrumb with the raw id), making invalid links
look like a partially broken page. Now renders a clean centered
Emptystate with database icon + i18n'd "Record not found" copy.detail.showEmptyRelated_{one,other}andempty.recordNotFound{,Description}keys (en + zh).e919433: Stop silently assuming USD when a currency field has no
currencyconfigured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
explicit currency) the cells now render as plain locale-formatted
numbers (
150,000.00) instead of$150,000.00— which was the Implement visual designer for Object UI schemas #1"why is my RMB showing as dollars?" bug.
Behavior change is opt-in via omission: when
currency/defaultCurrencyis set on the field/column, formatting is unchanged.Fixed call sites:
@object-ui/fields:formatCurrency,formatCompactCurrency, andCurrencyCellRendererno longer default-param'USD'.@object-ui/i18n:formatCurrency()falls back toformatNumbersemantics when
currencyis omitted.@object-ui/plugin-grid: column-summary formatter (Sum: 5,000,000instead of
Sum: $5,000,000.00).@object-ui/plugin-detail: header-highlight currency formatter.@object-ui/plugin-dashboard:ObjectMetricWidgetinferredcurrency now resolves to
undefined(not'USD') for un-taggedfields, so
MetricWidget'sisCurrencyheuristic falls throughto plain number formatting.
@object-ui/mobile@5.2.0
Patch Changes
@object-ui/permissions@5.2.0
Patch Changes
@object-ui/plugin-aggrid@5.2.0
Patch Changes
@object-ui/plugin-ai@5.2.0
Patch Changes
@object-ui/plugin-calendar@5.2.0
Patch Changes
@object-ui/plugin-charts@5.2.0
Patch Changes
@object-ui/plugin-chatbot@5.2.0
Patch Changes
@object-ui/plugin-dashboard@5.2.0
Patch Changes
e919433: Stop silently assuming USD when a currency field has no
currencyconfigured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
explicit currency) the cells now render as plain locale-formatted
numbers (
150,000.00) instead of$150,000.00— which was the Implement visual designer for Object UI schemas #1"why is my RMB showing as dollars?" bug.
Behavior change is opt-in via omission: when
currency/defaultCurrencyis set on the field/column, formatting is unchanged.Fixed call sites:
@object-ui/fields:formatCurrency,formatCompactCurrency, andCurrencyCellRendererno longer default-param'USD'.@object-ui/i18n:formatCurrency()falls back toformatNumbersemantics when
currencyis omitted.@object-ui/plugin-grid: column-summary formatter (Sum: 5,000,000instead of
Sum: $5,000,000.00).@object-ui/plugin-detail: header-highlight currency formatter.@object-ui/plugin-dashboard:ObjectMetricWidgetinferredcurrency now resolves to
undefined(not'USD') for un-taggedfields, so
MetricWidget'sisCurrencyheuristic falls throughto plain number formatting.
Updated dependencies [9997cae]
Updated dependencies [a3cb88f]
Updated dependencies [5425608]
Updated dependencies [6c3f018]
Updated dependencies [d912a60]
Updated dependencies [e919433]
Updated dependencies [70b5570]
@object-ui/plugin-designer@5.2.0
Patch Changes
@object-ui/plugin-editor@5.2.0
Patch Changes
@object-ui/plugin-form@5.2.0
Patch Changes
@object-ui/plugin-gantt@5.2.0
Patch Changes
@object-ui/plugin-grid@5.2.0
Patch Changes
e919433: Stop silently assuming USD when a currency field has no
currencyconfigured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
explicit currency) the cells now render as plain locale-formatted
numbers (
150,000.00) instead of$150,000.00— which was the Implement visual designer for Object UI schemas #1"why is my RMB showing as dollars?" bug.
Behavior change is opt-in via omission: when
currency/defaultCurrencyis set on the field/column, formatting is unchanged.Fixed call sites:
@object-ui/fields:formatCurrency,formatCompactCurrency, andCurrencyCellRendererno longer default-param'USD'.@object-ui/i18n:formatCurrency()falls back toformatNumbersemantics when
currencyis omitted.@object-ui/plugin-grid: column-summary formatter (Sum: 5,000,000instead of
Sum: $5,000,000.00).@object-ui/plugin-detail: header-highlight currency formatter.@object-ui/plugin-dashboard:ObjectMetricWidgetinferredcurrency now resolves to
undefined(not'USD') for un-taggedfields, so
MetricWidget'sisCurrencyheuristic falls throughto plain number formatting.
Updated dependencies [9997cae]
Updated dependencies [6c3f018]
Updated dependencies [d912a60]
Updated dependencies [e919433]
Updated dependencies [70b5570]
@object-ui/plugin-kanban@5.2.0
Patch Changes
a3cb88f: CRM UX polish batch:
record:path): bump completed-stage contrast (emerald-800 text on emerald-500/15, was 700 on /10) and future-stage text fromforeground/70toforeground/85for legibility.notifications.emptyUnread,notifications.filterUnread,notifications.filterAll(en + zh) so the InboxPopover Unread/All sub-filter renders in the active locale.5425608: CRM UX polish pass — calmer enterprise look across detail + kanban.
neutral foreground titles + a quiet grey count pill instead of full
rainbow gradient + colored title + colored count. Pipeline boards
(Opportunity, Case, Task, Lead) look like Salesforce/Linear instead of
a toy. WIP-limit overflow remains destructive-red so urgency stays loud.
record:reference_rail): newhideEmptyprop(default true) collapses entries whose total === 0 into a single
+ N empty (Quotes · Products …)chip at the bottom of the rail.Removes the 4–7 "No records" stack that dominated the aside.
record:path): completed stages now render with anemerald-tinted background + bold green check instead of low-contrast
bg-muted text-muted-foreground(which read as "light grey on white"and was borderline unreadable).
RecordDetailView): record-not-found short-circuit.Previously a stale/missing recordId still rendered the page chrome
(rail, discussion, breadcrumb with the raw id), making invalid links
look like a partially broken page. Now renders a clean centered
Emptystate with database icon + i18n'd "Record not found" copy.detail.showEmptyRelated_{one,other}andempty.recordNotFound{,Description}keys (en + zh).d912a60: CRM polish — denser kanban cards, smarter currency, calmer dates.
Label: valuetwo-columngrid in favor of a single-column dense list (values only, with the
field label preserved as a hover
titlefor accessibility). Pipelinecards across Salesforce / HubSpot / Linear all do this because the
value's own type carries its meaning, and the saved space lets the
title breathe.
.00when the value is awhole number (Salesforce convention:
$1,234.50keeps cents,$1,234doesn't). Pipeline amounts like500,000.00now read as500,000.the current year —
7月21日instead of2026年7月21日. Past- andfuture-year dates keep the year for disambiguation
(
2025年11月23日)..replace(/[.,]00$/, '')workaround that hid cents forprecision:0fields; the formatter now handles whole-unit trimming natively.
Updated dependencies [9997cae]
Updated dependencies [a3cb88f]
Updated dependencies [5425608]
Updated dependencies [6c3f018]
Updated dependencies [d912a60]
Updated dependencies [7c441f5]
Updated dependencies [e919433]
Updated dependencies [70b5570]
@object-ui/plugin-list@5.2.0
Patch Changes
50cdefd: Gallery cards no longer render a giant gradient letter placeholder when
the configured
coverFieldhas no populated values anywhere in thedataset. Previously, simply declaring
gallery.coverFieldwould forcethe cover area on even when every record's image was null/empty, producing
oversized 200×200 "C" / "A" letter blocks that dwarfed the actual card
content (the Contact and Account card views in the CRM example were the
most visible offenders).
The configured-but-empty state now matches the unconfigured state:
collapse the cover area, render a compact title-plus-fields card.
When at least one record in the dataset has a cover image, the cover
area still renders for all cards so heights stay consistent.
@object-ui/plugin-map@5.2.0
Patch Changes
@object-ui/plugin-markdown@5.2.0
Patch Changes
@object-ui/plugin-report@5.2.0
Patch Changes
@object-ui/plugin-timeline@5.2.0
Patch Changes
@object-ui/plugin-view@5.2.0
Patch Changes
@object-ui/plugin-workflow@5.2.0
Patch Changes
@object-ui/providers@5.2.0
Patch Changes
@object-ui/react@5.2.0
Patch Changes
@object-ui/runner@5.2.0
Patch Changes
@object-ui/tenant@5.2.0
Patch Changes
@object-ui/console@5.2.0
@object-ui/create-plugin@5.2.0
object-ui@5.2.0
Patch Changes