Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
912bfd4
fix(plugin-chatbot): leave the tool-loading step out of the phase lin…
Oct 19, 2026
633b8f1
feat(plugin-chatbot): a record link in an assistant answer opens the …
Oct 19, 2026
fe11eb1
fix(plugin-list,plugin-grid): ask for a referenceVia pointer's type h…
Oct 19, 2026
61ed5ad
fix(core,components): an update's Undo covers its named declaration's…
Oct 19, 2026
988aa9f
fix(plugin-charts): read a chart's object metadata through the data s…
Oct 19, 2026
8aa8e3e
chore(deps): build @objectstack/* from objectstack main 2ec6827962 an…
Oct 19, 2026
50ba1bb
fix(app-shell,plugin-detail): ask a record verdict only where a butto…
Oct 19, 2026
65fe4c2
fix(app-shell,data-objectstack): one request per metadata URL across …
Oct 19, 2026
a23a33d
feat(app-shell): an app page reads its bound row as `record` (objectu…
Oct 19, 2026
b9e1887
fix(console): seed an option-list default on the public form page (#1…
Oct 19, 2026
c219165
feat(plugin-detail): bound record blocks draw an authored emptyState …
Oct 19, 2026
083e807
fix(plugin-kanban): announce a cross-column move when its write settl…
Oct 19, 2026
51269f0
fix(app-shell,plugin-chatbot): lay the pending-drafts bar out above t…
Oct 19, 2026
fb85637
fix(form,record-details): a field group whose visibleWhen faults is h…
Oct 19, 2026
9f1dd79
fix(app-shell): a related-list row form action opens the clicked row,…
Oct 19, 2026
a928aaa
fix(plugin-grid,types): an import undo that leaves rows unreverted sa…
Oct 19, 2026
a244a17
feat(plugin-list): list-view publishes the spec keys its renderer hon…
Oct 19, 2026
1ce0711
fix(app-shell): a deep link to an object read by name always leaves t…
Oct 19, 2026
90a4fc4
fix(ci): read transient jobs-API failures, re-run attempts and stale …
Oct 19, 2026
bc98626
fix(plugin-form): master-detail line rules read the header record, no…
Oct 19, 2026
2a75c83
fix(app-shell): rate an RLS clause the runtime cannot lower an error,…
Oct 19, 2026
12dc7b4
feat(app-shell): Setup lists declared sharing rules read-only, with D…
Oct 19, 2026
cc4ae3e
fix(app-shell): Studio names Explain access contributors and the flow…
Oct 19, 2026
2493e85
feat(expression): current_user.hasCapability answers from the viewer'…
Oct 19, 2026
b3007fd
fix(app-shell): read objects by name on an empty-package app's object…
Oct 19, 2026
282b138
fix(app-shell): lay the phone preview pill out above the composer, no…
Oct 19, 2026
df71568
fix(types): a nav item's visible takes the spec's expression input (e…
Oct 19, 2026
b017621
feat(plugin-list): page list-view honours requiredPermissions (#13087)
Oct 19, 2026
6058bf8
feat(data-objectstack,app-shell): the Studio changes drawer offers to…
Oct 19, 2026
cd4623d
fix(data-objectstack,app-shell): one meta/view read per open: a settl…
Oct 19, 2026
a487ced
fix(app-shell): the RLS editor asks the lint rule about every clause …
Oct 19, 2026
90518cd
fix(app-shell): record form and modal form bind systemPermissions, so…
Oct 19, 2026
1b94d50
feat(layout,app-shell): a nav entry reads its declared API dataSource…
Oct 19, 2026
633ef99
fix(app-shell): pin a metadata list row's controls and say an unreada…
Oct 19, 2026
d11174a
feat(app-shell,plugin-list): a page list-view node's addRecord opens …
Oct 20, 2026
3bcf314
feat(data-objectstack,app-shell): mark the copilot's drafted settings…
Oct 20, 2026
a26068b
fix(app-shell): the pending-drafts bar's sentence wraps on a phone in…
Oct 20, 2026
d87e4f2
fix(app-shell): the app landing waits on its nav entries' pending API…
Oct 20, 2026
df943a2
feat(app-shell): Studio copilot draft marks, the remainder: the Permi…
Oct 20, 2026
4c68855
fix(plugin-detail): fold a declared pointer pair type half into its r…
Oct 20, 2026
2d8a8b7
fix(components): label a select nameField on the record heading's dec…
Oct 20, 2026
4b67746
fix(plugin-grid): name bulk-confirm records by the declared nameField…
Oct 20, 2026
ed28057
feat(app-shell): the create entry uses the object's create form view …
Oct 20, 2026
0b36ffa
test(e2e/live): the eleven stale live specs, each brought back to the…
Oct 20, 2026
a57d80a
fix(plugin-list): an ungrouped list asks for the declared nameField (…
Oct 20, 2026
427e59c
fix(app-shell): hold an unnamed RLS policy instead of autosaving it, …
Oct 20, 2026
96036bd
test(app-shell): wait for the counted backfill checkbox in the unchec…
Oct 20, 2026
d05f33b
fix(plugin-grid): send a csv-declared saved mapping CSV text, not JSO…
Oct 20, 2026
cbac9d7
feat(plugin-list,plugin-view,types,app-shell)!: retire the filterable…
Oct 20, 2026
5dbc6a5
fix(app-shell): the app-missing screen offers the way home beside Ret…
Oct 20, 2026
91b658a
fix(app-shell): a chart saved view keeps the view tabs (#13171)
Oct 20, 2026
4c36eab
fix(app-shell): show the server's reasons under a refused package pub…
Oct 20, 2026
157694c
fix(app-shell): bind Studio create-dialog labels to their inputs (obj…
Oct 20, 2026
616df65
fix(core, app-shell): an action param dialog keeps the typed input wh…
Oct 20, 2026
186b78d
fix(app-shell): Add branch on a Decision never overwrites a connectio…
Oct 20, 2026
f48a4d5
fix(fields): a lookup pick after a search reaches the field, and the …
Oct 20, 2026
961b69f
fix(console): settings text boxes clear to unset; Reset to default be…
Oct 20, 2026
5a8d40f
fix(plugin-grid): title the phone-width card by the declared nameFiel…
Oct 20, 2026
673a71c
fix(app-shell): packaged automation does not show "On" for a flow the…
Oct 20, 2026
74e37aa
fix(i18n,app-shell): pluralise the inbox header notification count (#…
Oct 20, 2026
f7aac4c
fix(app-shell): offer no write action on a read-only package in the P…
Oct 20, 2026
9840695
fix(plugin-grid): a finished import no longer says "Review data befor…
Oct 20, 2026
aaa1296
fix(plugin-grid,app-shell): the phone list scrolls its last card clea…
Oct 20, 2026
c209c93
fix(console): Audit Log's object filter is picked from the served obj…
Oct 20, 2026
7e62822
fix(app-shell): New package dialog drops the retired "project-scoped"…
Oct 20, 2026
768960e
fix(app-shell): draw a flow branch that skips a node around it, its l…
Oct 20, 2026
5115c1f
fix(plugin-charts): advanced chart axis ticks use the muted foregroun…
Oct 20, 2026
c9cb896
fix(app-shell): Studio Data rail's empty sentence points at the "+" a…
Oct 20, 2026
e81a37c
fix(app-shell): Pending changes field rows lead with the label; injec…
Oct 20, 2026
05e3f34
fix(app-shell): flow header meta pills ellipsize instead of clipping …
Oct 20, 2026
3cec090
fix(plugin-calendar): truncate the header date title and shorten it a…
Oct 20, 2026
5129caa
fix(fields): the lookup option preview never cuts a badge to a glyph …
Oct 20, 2026
5666e19
fix(app-shell): Studio field pickers leave out the platform's hidden …
Oct 20, 2026
19b4f64
fix(app-shell): flow designer names nodes by label, not id (objectui#…
Oct 20, 2026
7a5f267
fix(console): a settings page asks before leaving with unsaved edits …
Oct 20, 2026
2782e6d
fix(app-shell): Home's pending-drafts row names the package as Studio…
Oct 20, 2026
7d497de
fix(app-shell): the draft preview bar's count follows a runtime view-…
Oct 20, 2026
2af42d9
fix(app-shell): translate "base" in the zh Studio home new-package bu…
Oct 20, 2026
8d4e453
fix(app-shell): Setup › Packages draws Actions only over rows that ca…
Oct 20, 2026
5c12dcd
fix(app-shell): a blocked Create View type card says why on its face …
Oct 20, 2026
d722045
fix(app-shell): the form designer type tag names the type as the pick…
Oct 20, 2026
f466b0a
fix(app-shell,i18n): the Pending changes summary agrees each type wit…
Oct 20, 2026
da307ef
fix(console): Audit Log's action filter offers sys_audit_log.action's…
Oct 20, 2026
9eb1479
fix(console): skip link as the shell's first Tab stop; record dialogs…
Oct 20, 2026
58798ec
fix(app-shell,i18n): tell an override reassign what a reassign does (…
Oct 20, 2026
42bd926
fix(app-shell): the draft preview bar promises sample data only while…
Oct 20, 2026
d4d9ddb
fix(app-shell): the Studio list-view panel names the view by its disp…
Oct 20, 2026
52907d7
fix(console): a refused settings save toasts the settings by label, n…
Oct 20, 2026
f0300be
fix(plugin-grid): an empty grid with no query draws the first-run sta…
Oct 20, 2026
8803ca5
fix(app-shell,i18n): word the stored_expression strip reason ahead of…
Oct 20, 2026
599a8a5
fix(app-shell): flow Problems and selection labels name nodes by labe…
Oct 20, 2026
ab4e4d7
fix(plugin-form): the record drawer opens on its first field, not on …
Oct 20, 2026
24001c1
fix(app-shell): Pending changes group headings name their type in the…
Oct 20, 2026
06be396
fix(app-shell,i18n): a submitter's own recall is not an override, and…
Oct 20, 2026
7c05f21
fix(plugin-grid): the import result screen says what happened — succe…
Oct 20, 2026
878a4af
fix(app-shell): datasource Test and Sync draw a refusal as a refusal …
Oct 20, 2026
f22b980
fix(plugin-grid, plugin-list): $select asks for a shown column's depe…
Oct 20, 2026
80843d0
fix(app-shell): flow designer names nodes by label in the last 13 id-…
Oct 20, 2026
4b92c5a
fix(components): a collapsible form section header is keyboard-operab…
Oct 20, 2026
e70c21d
fix(app-shell): the remediation overlay offers Stop impersonating on …
Oct 20, 2026
e537636
perf(scripts): the body-dialect census skips the pinned @objectstack …
Oct 20, 2026
3650d94
fix(components): Combobox search finds an option by its label, not on…
Oct 20, 2026
e077b8a
fix(app-shell): shell menu departures ask before dropping a page's un…
Oct 20, 2026
039e0b9
fix(console): Audit Log filter labels name their controls (objectui#1…
Oct 20, 2026
12cde04
fix(app-shell): approval history rows draw the authored step label (o…
Oct 20, 2026
84b4326
fix(plugin-grid): head a date / datetime group the way its cell draws…
Oct 20, 2026
ff128e3
fix(plugin-form): opening a collapsed section keeps focus on its head…
Oct 20, 2026
9a3bcfc
fix(console): a settings page loads its namespace on the namespace al…
Oct 20, 2026
cbc312d
chore(release): exit Changesets pre mode (`next`), so the next versio…
Oct 20, 2026
588d11d
fix(app-shell): the language menu asks before a switch drops a page's…
Oct 20, 2026
9a4ddb2
fix(plugin-charts): rotate and cut an x-axis label only when its band…
Oct 20, 2026
c8833c5
fix(app-shell): the command palette, the inbox and the AI entry ask b…
Oct 20, 2026
1ca759a
fix(console): block a settings save while a visible required field is…
Oct 20, 2026
2a15427
chore(deps): move .objectstack-sha to objectstack 18.0.0 version comm…
Oct 20, 2026
a29f615
fix(plugin-form): a record drawer stays open on its first open (objec…
Oct 20, 2026
8cd4db4
fix(components): recompile a react page on its content, not its schem…
Oct 20, 2026
8e649da
fix(fields): seed a relation-backed defaultFromRow param with the sto…
Oct 20, 2026
8556295
feat(types): chain the spec's navItemVisibleDataNeedsDataSource on ev…
Oct 20, 2026
36b70c0
feat(app-shell): the package edit dialog edits `dependencies` (#13277)
Oct 20, 2026
b001d21
docs(app-shell): the organization administrator creates and removes S…
Oct 20, 2026
5235d6d
fix(app-shell): offer switch-source-off and open-in-Studio on the pac…
Oct 20, 2026
7f6a2dd
docs(console): teach a navigation visible that both validators accept…
Oct 20, 2026
cf153eb
fix(app-shell): retire the permission-set clone notice once the copy …
Oct 20, 2026
9e1bff6
fix(app-shell): the app report index lists the reports its navigation…
Oct 20, 2026
53dea27
fix(app-shell): give the package dialog's Dependencies row a key/valu…
Oct 20, 2026
3aa2f52
chore: release packages (#11600)
Oct 20, 2026
a91f6bb
feat(console): the approvals inbox opens a request on its served page…
Oct 21, 2026
8701f1e
fix(components,fields): head a widget-hinted nameField through its fa…
Oct 21, 2026
fbb4b23
fix(components,plugin-grid): selecting a cell's text neither opens th…
Oct 21, 2026
c8f8b10
fix(components): select-all, the row checkboxes and the row numbers s…
Oct 21, 2026
f669732
fix(plugin-detail): show an object-level rule refusal without the _re…
Oct 21, 2026
7c405b7
fix(components): a page:tabs item visibleWhen that faults withholds i…
Oct 21, 2026
0093b2c
fix(console): a settings value that misses its declared format blocks…
Oct 21, 2026
813c3d9
fix(fields): password inputs carry an autocomplete token (objectui#13…
Oct 21, 2026
3aafc0d
fix(react): a page node whose visibility predicate faults is withheld…
Oct 21, 2026
601c406
fix(react): the withholding console line names an element, not a navi…
Oct 21, 2026
2794254
fix(app-shell): Position preview lists the permission sets a position…
Oct 21, 2026
13c92e7
test(data-objectstack): state the batch-6 DroppedFieldsEvent reason p…
Oct 21, 2026
f5e42ca
test(types): stop authoring the retired addRecord.mode / formView in …
Oct 21, 2026
78bd6d7
feat(app-shell): the /data filter bar offers single-value relation fi…
Oct 21, 2026
7e9708e
fix(app-shell): register the console home blocks under the app-shell …
Oct 21, 2026
56cf4d8
fix(plugin-grid,app-shell): a CSV file reaches the import door as CSV…
Oct 22, 2026
cd14d8e
fix(plugin-grid,types): read bulk confirmText as a string or a templa…
Oct 22, 2026
b8fa223
fix(app-shell): offer Sync objects only on a federation-source dataso…
Oct 22, 2026
4c212b9
test(console): wait on the leave guard itself after a settings save, …
Oct 22, 2026
1aa8851
fix(hooks): port subst_end() into guard-main-checkout-bash (objectsta…
Oct 22, 2026
74ebad0
fix(pin): the missing-entry remedy builds with declarations whatever …
Oct 22, 2026
0d12e95
fix(console,permissions): a non-admin approver sees the whole approva…
Oct 22, 2026
b911ebb
fix(react,app-shell): a nav entry and a page element bound to the sam…
Oct 22, 2026
5fef032
fix(ci): the Test gate asks a shard's own check run when the jobs API…
Oct 22, 2026
56b65c0
fix(plugin-charts): a single-series bar chart draws one colour (#13346)
Oct 23, 2026
a14737b
feat(app-shell): Setup positions list shows holders and granted permi…
Oct 23, 2026
2c4e5f5
fix(app-shell): a member who may read none of an app's objects lands …
Oct 23, 2026
fcbf1b2
feat(app-shell): confirm a permission set or position deactivation, n…
Oct 23, 2026
1d178e0
feat(plugin-dashboard): a dataset chart's null bucket reads the name …
Oct 23, 2026
f2f4b7d
fix(app-shell): the pre-publish capability lint reads the registry's …
Oct 23, 2026
4603b8c
fix(app-shell): toasts sit top-centre, clear of the page header's act…
Oct 23, 2026
fb25620
fix(layout): a navigation group opens unless it declares otherwise (o…
Oct 23, 2026
404ccae
fix(app-shell,plugin-detail): Setup deletes confirm in-app and name w…
Oct 23, 2026
8cf3a86
fix(layout): AppShell draws one main landmark, not two nested ones (o…
Oct 23, 2026
d019aaa
fix(plugin-grid): the import wizard preselects the object's only appl…
Oct 23, 2026
6fb31dc
fix(types): a bulk action's confirmText envelope types source as opti…
Oct 23, 2026
49a536d
fix(plugin-detail): record header highlights write the year on every …
Oct 23, 2026
0f4adc3
feat(app-shell): Packaged automation Clone opens with a proposed name…
Oct 23, 2026
241cb78
fix(app-shell): Setup refusals lead with one plain sentence, the code…
Oct 23, 2026
05049f8
fix(app-shell): a refused screen-flow end shows its message alone (ob…
Oct 23, 2026
ff77cfc
feat(app-shell, auth, plugin-grid, plugin-list): Setup → Users and th…
Oct 23, 2026
ec627ab
fix(fields): an unreadable lookup reads "Restricted record", not its …
Oct 23, 2026
fa31856
fix(app-shell): Connect an Agent mints an API key only under a typed,…
Oct 23, 2026
5b40cea
fix(app-shell): SchemaForm rows show the label only, machine key on d…
Oct 23, 2026
3a73c07
fix(app-shell): Setup → Installed Apps is titled Installed Apps and s…
Oct 23, 2026
8d305ab
fix(app-shell): the package sheet's Adopt loose items asks in-app, re…
Oct 23, 2026
4824ad7
fix(console): resolve a form entry's inline locale map to the visitor…
Oct 23, 2026
6183aa9
fix(app-shell): host an app-relative onSuccess.navigate under the cur…
Oct 23, 2026
3ec84be
feat(app-shell): Setup → Positions creates with permission sets, labe…
Oct 23, 2026
889d028
chore(deps): lock vite 8.3.5 and pin next 16.3.8, with no manifest ra…
Oct 23, 2026
b93c9f6
fix(plugin-detail, plugin-grid): one explain request per question aft…
Oct 23, 2026
f1a4b08
fix(grid): a lookup or master_detail cell draws no tooltip carrying t…
Oct 23, 2026
8e90779
feat(core,react,app-shell): action confirmText, successMessage and er…
Oct 23, 2026
01b85d8
fix(app-shell): changing the ⌘K query no longer unmounts the console …
Oct 23, 2026
78e00db
fix(app-shell): say when a display name derives no identifier, and as…
Oct 23, 2026
4b1ddf3
fix(app-shell): a record page's onSuccess.navigate opens in its own a…
Oct 23, 2026
d17f670
fix(console): settings pages re-read their namespace after a save or …
Oct 23, 2026
afcf654
fix(i18n): zh admin-override copy says 管理员代为/代办, not 越权 (objectui#134…
Oct 23, 2026
3a8a117
fix(console): Integrations → Connect an AI agent mints an API key onl…
Oct 23, 2026
cee3bc5
fix(fields): a boolean false is neutral whatever the field is named (…
Oct 23, 2026
eadceab
fix(plugin-charts): a line or area chart no longer cuts its edge x-ax…
Oct 23, 2026
da2c0a7
chore(deps): move .objectstack-sha to objectstack 915e940499, past 92…
Oct 23, 2026
130c77d
fix(app-shell): Assigned Users confirms Remove and offers organizatio…
Oct 23, 2026
ad74e98
fix(plugin-list): translate the synthetic "All records" user-filter t…
Oct 23, 2026
d9aff15
fix(app-shell): Setup record pages carry the managed-by note on the h…
Oct 23, 2026
7f60e9d
fix(core): refuse a single-record action's row count before its dialo…
Oct 23, 2026
2c3dc72
fix(plugin-charts): a sankey names its nodes and colours its flows, a…
Oct 23, 2026
b317942
fix(plugin-charts): a dataset object-chart draws a select dimension i…
Oct 23, 2026
4eeb174
fix(app-shell): refuse a toolbar flow's row count before its dialog, …
Oct 23, 2026
2958f17
fix(auth): label the external organization role objectstack#25515 add…
Oct 23, 2026
06ce712
fix(console): evaluate a setting's visible predicate with the express…
Oct 24, 2026
f3044f7
fix(fields): sanitize html and richtext values with rehype-sanitize (…
Oct 24, 2026
3688e5c
ci(repo-gates): restore the build's turbo cache, save and prune on pu…
Oct 24, 2026
cf24190
ci(test-shard-timings-refresh): push and open the refresh pull reques…
Oct 24, 2026
861fdff
fix(ci): the affected-tests fast path runs: the shard step compares t…
Oct 24, 2026
7981384
ci: pin credential-holding third-party actions by sha and default ci.…
Oct 24, 2026
a78608f
fix(components): create form no longer locks fields through readonlyW…
Oct 24, 2026
576fd25
fix(console): open a form action inside the app it was fired from (#1…
Oct 24, 2026
47138b7
perf(console): keep the chat UI out of the first page load via @objec…
Oct 24, 2026
0984c77
chore(deps): move .objectstack-sha to the objectstack 18.1.0 release …
Oct 24, 2026
a3c0da9
chore: release packages (#13289)
Oct 24, 2026
29ffad5
tooling(ui-wiring): workspace globs and root turbo tasks for the ui/ …
Oct 24, 2026
011136c
tooling(ui-wiring): CI jobs for the ui/ tree, skipped until it exists…
Oct 24, 2026
26fb5ba
tooling(ui-wiring): spell objectui invocations so root-scoped gates d…
Oct 24, 2026
597471c
tooling(ui-wiring): workspace-mirroring gates learn the four ui/ root…
Oct 24, 2026
cd70b78
tooling(objectui-readiness): make the objectui tree merge-ready in it…
Oct 24, 2026
b97bdad
verify(ui): import objectui main (cd70b7818d) as the ui/ subtree (obj…
Oct 24, 2026
32d5045
verify(ui): resolve every @objectstack/* dependency of ui/ from this …
Oct 24, 2026
0dad5c2
verify(ui): drop objectui's nested workspace root and pin plumbing (o…
Oct 24, 2026
4ddd900
verify(ui): carry objectui's overrides and focus-scope patch at the w…
Oct 24, 2026
717defb
verify(ui): recompute the workspace lockfile with ui/ in it (objectst…
Oct 24, 2026
b2ba3a4
tooling(ui-wiring): two more workspace-mirroring gates learn the ui/ …
Oct 24, 2026
1a76fa5
verify(ui-import): drop the turbo-recursive scripts from the ui root …
Oct 25, 2026
1cade69
verify(ui-import): apply objectui#25723's reader patch (dff61d5c8) on…
Oct 25, 2026
d17ed5e
verify(ui-import): regenerate the lucide record icon names for the lo…
Oct 25, 2026
c85408f
tooling(objectui-readiness 2): readers of pnpm-workspace.yaml, turbo.…
Oct 25, 2026
723776b
chore(test): refresh the per-file test timings (objectui#12208) (#13028)
Oct 25, 2026
b41ed7f
fix(app-shell): the translation preview draws the positions and permi…
Oct 25, 2026
ee7e3a6
fix(plugin-calendar): show the lookup display name for a lookup title…
Oct 25, 2026
46c56ee
feat(plugin-detail): fold a kept all-empty record section, and an all…
Oct 25, 2026
23e912e
fix(app-shell): resolve a report's inline locale label and descriptio…
Oct 25, 2026
96c3649
fix(plugin-list,plugin-map,plugin-timeline): record preview overlay m…
Oct 25, 2026
6f629a7
chore(deps): narrow the React peer range to ^19.0.0 (objectui#13465) …
Oct 25, 2026
cfa1676
verify(ui-import): splice objectui's lockfile resolutions into the me…
Oct 25, 2026
6c3340c
tooling(objectui-readiness 4): paths handed to git use git's cwd-rela…
Oct 25, 2026
d0c9650
fix(console, app-shell): localise API Console, Public Forms, Integrat…
Oct 25, 2026
5698ec7
fix(app-shell): show a position's label in a permission set's Assigne…
Oct 25, 2026
4aa90ba
fix(a11y): name icon-only buttons and give clickable div/span control…
Oct 25, 2026
85b6a48
chore(packages): declare `sideEffects` on every published package (ob…
Oct 25, 2026
e1627fd
chore(deps): move .objectstack-sha to objectstack main 43edf90b56 (ob…
Oct 25, 2026
ee4f1ef
fix(bulk): keep per-row bulk results and refresh bound views once per…
Oct 25, 2026
610d9ef
feat(components,types)!: retire the raw-HTML html node type (objectui…
Oct 25, 2026
84ce59c
feat(core): show a holeless confirmText / successMessage as written (…
Oct 25, 2026
320ec35
fix(plugin-gantt, app-shell): refuse an invalid gantt block; designer…
Oct 25, 2026
899f381
feat(core,types)!: retire the module widget source and its runtime dy…
Oct 25, 2026
bba96ce
tooling(objectui-readiness 5): the workspace's own files come from wo…
Oct 25, 2026
62cc0f4
verify(ui-import): refresh the ui/ subtree to objectui main bba96cee5…
Oct 25, 2026
903047d
verify(ui-import): add the three plugin-detail workspace edges to the…
Oct 25, 2026
7180ec6
verify(ui-import): merge objectstack main c61f75d10f (PR A2 and 11 mo…
Oct 25, 2026
fb8f570
verify(ui-import): dedupe the merged lock so one vite and one postcss…
Oct 25, 2026
3b0be7c
verify(ui-import): move plugin-chatbot's ai / @ai-sdk/react pair onto…
Oct 25, 2026
86f5a29
verify(ui-import): counter-probe, rename ActionButtonPropsSchema.size…
Oct 25, 2026
84615e8
verify(ui-import): counter-probe v2, narrow ActionButtonPropsSchema.s…
Oct 25, 2026
9e37acd
verify(ui-import): revert both counter-probes, back to the run 8 tree…
Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
50 changes: 50 additions & 0 deletions patches/@radix-ui__react-focus-scope.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
diff --git a/dist/index.js b/dist/index.js
index e8906db3b1e87bfc568b75d72b7ed3d8d1d3c09a..7a05e0e4cffba466301ba1fb67067c0861af0a4d 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -110,6 +110,10 @@ var FocusScope = /* @__PURE__ */ React.forwardRef(
}, [trapped, container, focusScope.paused]);
React.useEffect(() => {
if (container) {
+ if (focusScope.__pendingStackRemove !== void 0) {
+ clearTimeout(focusScope.__pendingStackRemove);
+ focusScope.__pendingStackRemove = void 0;
+ }
focusScopesStack.add(focusScope);
const previouslyFocusedElement = document.activeElement;
const hasFocusedCandidate = container.contains(previouslyFocusedElement);
@@ -126,7 +130,8 @@ var FocusScope = /* @__PURE__ */ React.forwardRef(
}
return () => {
container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
- setTimeout(() => {
+ focusScope.__pendingStackRemove = setTimeout(() => {
+ focusScope.__pendingStackRemove = void 0;
const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
container.dispatchEvent(unmountEvent);
diff --git a/dist/index.mjs b/dist/index.mjs
index 030ff1a4d2383c9a0a1ba850aa4591890f028784..3dd39a90db9886bc495014a6e4136773e3548448 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -75,6 +75,10 @@ var FocusScope = /* @__PURE__ */ React.forwardRef(
}, [trapped, container, focusScope.paused]);
React.useEffect(() => {
if (container) {
+ if (focusScope.__pendingStackRemove !== void 0) {
+ clearTimeout(focusScope.__pendingStackRemove);
+ focusScope.__pendingStackRemove = void 0;
+ }
focusScopesStack.add(focusScope);
const previouslyFocusedElement = document.activeElement;
const hasFocusedCandidate = container.contains(previouslyFocusedElement);
@@ -91,7 +95,8 @@ var FocusScope = /* @__PURE__ */ React.forwardRef(
}
return () => {
container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
- setTimeout(() => {
+ focusScope.__pendingStackRemove = setTimeout(() => {
+ focusScope.__pendingStackRemove = void 0;
const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
container.dispatchEvent(unmountEvent);
11,955 changes: 10,526 additions & 1,429 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

19 changes: 18 additions & 1 deletion pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ onlyBuiltDependencies:
patchedDependencies:
tsup@8.5.1: patches/tsup@8.5.1.patch
tsx@4.23.15: patches/tsx@4.23.15.patch
# objectui's focus-scope patch (verification branch for objectstack#25697);
# it was keyed unversioned in ui/package.json's ignored `pnpm` field.
'@radix-ui/react-focus-scope@1.1.16': patches/@radix-ui__react-focus-scope.patch

# Transitive-dependency version pins. pnpm v10 reads `overrides` from THIS file
# — the `pnpm.overrides` block in package.json is silently ignored — so all
Expand Down Expand Up @@ -233,6 +236,18 @@ patchedDependencies:
# legacy agent chain; force the patched 2.0.1 line.
overrides:
esbuild: '>=0.28.1'
# objectui's security floors, from ui/package.json's ignored `pnpm` field
# (verification branch for objectstack#25697; dompurify is already pinned).
'qs@<6.15.2': '^6.15.2'
'shell-quote@<1.8.4': '^1.8.4'
'tmp@<0.2.6': '^0.2.6'
'uuid@<11.1.1': '^11.1.1'
# objectui's single react line (verification branch for objectstack#25697):
# objectui pins 19.3.0 exactly; objectstack manifests still carry ^19.2.x ranges.
react: 19.3.0
react-dom: 19.3.0
'@types/react': 19.3.0
'@types/react-dom': 19.3.0
'minimatch@<11.0.0': '^10.2.3'
'tar@>=2.0.0 <8.0.0': '^7.5.11'
'form-data@<5.0.0': '>=4.0.6'
Expand Down Expand Up @@ -364,7 +379,9 @@ overrides:
# installs, so a consumer's own brace-expansion copy is theirs to lift.
'brace-expansion@>=5.0.0 <6.0.0': '^5.0.12'
'sharp@>=0.34.0 <0.36.0': '^0.35.5'
'react-router@<8.3.0': '^8.3.0'
# react-router GHSA-qwww-vcr4-c8h2: still floors the whole 8.x line below 8.3.0; the 7.x line
# (objectui's react-router-dom 7.18 pins its own react-router) has no fix to force onto.
'react-router@>=8.0.0 <8.3.0': '^8.3.0'
'@sveltejs/kit@<2.69.1': '^2.69.1'
'@hono/node-server@<3.0.0': '^2.0.10'
# OSV batch 2026-08 (#5032) — all three name a fixed version, so they are
Expand Down
34 changes: 34 additions & 0 deletions scripts/ui-import/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# ui-import — dependency-neutral lockfile for the `ui/` subtree

Importing objectui under `ui/` must not change which dependency versions objectui's
code runs on. Deleting objectui's lockfile and running `pnpm install` re-resolves every
`ui/*` dependency from its range and moves dozens of them; `splice-lockfile.mjs` instead
carries objectui's own resolutions into the root `pnpm-lock.yaml`. The script header is
the authority on what it writes and refuses.

## Procedure (cutover, from the repository root)

1. `git subtree add --prefix ui <objectui> <sha>`, then the adaptation commits: ui
manifests take `workspace:^` for every `@objectstack/*`, objectui's `pnpm` field
(react pins, security floors, the focus-scope patch) moves to the root
`pnpm-workspace.yaml`.
2. Keep objectui's lockfile for the splice, then delete it from the tree:
`git show <sha>:pnpm-lock.yaml > /tmp/objectui-lock.yaml && git rm ui/pnpm-lock.yaml`.
3. Splice:
`node scripts/ui-import/splice-lockfile.mjs --base pnpm-lock.yaml --import /tmp/objectui-lock.yaml --prefix ui --out pnpm-lock.yaml`
It must end with `moved 0`.
4. Reconcile with pnpm: `pnpm install --lockfile-only`. pnpm applies the root
`overrides` (security floors) to the imported subgraph and re-resolves peer
suffixes; nothing else. Run it a second time: the file must not change.
5. `pnpm install --frozen-lockfile` must pass.
6. Re-measure the reconciled file:
`node scripts/ui-import/splice-lockfile.mjs --measure pnpm-lock.yaml --import /tmp/objectui-lock.yaml --prefix ui`. Every row still moved must be an override the root
`pnpm-workspace.yaml` keeps on purpose, named in its comment block.
7. Regenerate nothing. With the ui importers on objectui's versions no generated file
(for example `ui/packages/components/src/lib/lucide-record-icon-names.ts`) changes;
if a `check:` gate asks for a regeneration, a dependency moved, and step 6 says which.

An override that would move a dependency objectui pins onto another major, or split one
line (react-router under react-router-dom), is scoped in `pnpm-workspace.yaml` with a
comment naming the advisory range it still covers; dependency upgrades for objectui are
their own changes after the cutover.
Loading