Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

Commit be64bf6

Browse files
chore(deps): objectui-readiness 3 round 2 — pin objectstack 5874d25302, one ai copy, merged-tree gate fixes (objectstack#25727) (#13512)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} --> _Requested by **Tesla** · [project thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoL8sNsjGD2KCCE4QzojaRfw)_ Part of objectstack-ai/objectstack#25727 Part of objectstack-ai/objectstack#25677 Clause-②: no Metadata-protocol: none ## What changes Round 2 (a) of objectui-readiness 3: the non-governed items the merged objectstack tree's verify runs found in `ui/`. - **Pin.** `.objectstack-sha` moves from `43edf90b56` to objectstack `main` `5874d25302cbb80db675eddf1b69198073fbe2a9` (`git ls-remote`, 09:15Z): 20 commits, none under `packages/spec`. `scripts/bump-objectstack.sh --no-commit` reported "on origin/main"; the packed manifests in `.objectstack-pin/` do not move. - **One `ai`.** `packages/plugin-chatbot` pins `@ai-sdk/react` to `4.0.121` and `ai` to `7.0.118`, the `ai` that `@ai-sdk/react` 4.0.121 pins (and the one `@objectstack/spec` carries in the merged tree). Measured standalone: with `ai` at `^7.0.118` the caret resolves 7.0.153, the lockfile holds both, and `@object-ui/plugin-chatbot#type-check` fails TS2322 in `useObjectChat.ts` (`DefaultChatTransport` vs `ChatTransport`); with `7.0.118` exact it is green. `pnpm-lock.yaml` is re-resolved from `main`'s, so it holds one `ai@7.0.118`. - **better-auth.** `packages/auth` pins `better-auth` to `1.7.12`. - **Skills catalog boundary.** `packages/plugin-dashboard/SKILL.md` gains frontmatter with `metadata: internal: true`, which the merged repo's create-objectstack test requires of every SKILL.md outside `skills/`. The two `.claude/skills` files go in a separate governed PR. - **ADR anchors.** The ADR-0075 citations in console and app-shell source and tests read `ObjectUI ADR-0075`, so the merged repo's ADR-anchor gate does not resolve them against objectstack's ADRs. CHANGELOG lines are published history and stay as they are (AGENTS.md rule 11); the epic seat ledgers them objectstack-side. The docs-build-trigger fixture path drops its `ADR-` prefix (`docs/adr/9999-example.md`). - **Clocked import.** `DraftChangesPanel.securityProblems.test.tsx` imports `@objectstack/lint` at module scope, the remedy AGENTS.md's test discipline prescribes, so the panel's function-body `import('@objectstack/lint')` does not pay its first transform inside the 1000 ms `findBy` window. `securityPostureLint.ts` is unchanged. - **Changeset** `25727-round2-dependency-pins.md`: `@object-ui/plugin-chatbot` and `@object-ui/auth` patch. ## Verification (local) | Gate | Exit | |---|---| | `pnpm install --frozen-lockfile` | 0 | | `pnpm type-check` (81/81 turbo tasks) | 0 | | vitest: the 5 touched test files + `packages/plugin-chatbot/` + `packages/auth/` (121 files) | 0 | | `check:spec-symbols`, `check:installed-pin-claims`, `check:lockfile-integrity`, `check:lockfile-dedupe`, `check:phantom-deps`, `check:unused-deps` | 0 each | | `check:changeset-claims`, `check:pending-changeset-literals`, `changeset:check`, `check:new-line-citations` | 0 each | | `check:skills-paths`, `check:skill-examples`, `check:skill-eval-tokens`, `check:shell-escape-residue`, `check:control-bytes`, `check:doc-json` | 0 each | | `check:test-path-roots`, `check:i18n-keys`, `check:designer-field-key-parity`, `type-check:scripts`, `lint:root`, eslint over the touched files | 0 each | | `node scripts/check-governed-queue-guard.mjs --test` over the diff | NOT GOVERNED | The whole `scripts/__tests__` suite and the full `pnpm test` run on this PR's CI shards. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Session: `https://claude.ai/code/session_01K1ngdG6x8wAt8cjeVx2cSk` --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 7c83e70 commit be64bf6

14 files changed

Lines changed: 209 additions & 231 deletions
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"@object-ui/plugin-chatbot": patch
3+
"@object-ui/auth": patch
4+
---
5+
6+
Clause-②: no
7+
Metadata-protocol: none
8+
9+
Dependency pins the merged objectstack tree resolves to one copy: `@object-ui/plugin-chatbot` pins `@ai-sdk/react` to `4.0.121` and `ai` to `7.0.118` (the `ai` that `@ai-sdk/react` 4.0.121 itself pins, so the chat transport's types come from one `ai`), and `@object-ui/auth` pins `better-auth` to `1.7.12`.

‎.objectstack-sha‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
43edf90b56db8b47ad17684c145fb7fa8bf08583
1+
5874d25302cbb80db675eddf1b69198073fbe2a9

‎apps/console/src/components/RootLandingRedirect.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ describe('resolveLandingPath', () => {
7070
// platform administration console shipped by @objectstack/platform-objects
7171
// into every deployment, so "the only app I can see is Setup" means "this
7272
// environment has no product apps yet", not "Setup is the product". Under
73-
// ADR-0075 the environment layer's home is the environment's own
73+
// ObjectUI ADR-0075 the environment layer's home is the environment's own
7474
// responsibility, and `/home` — build-with-AI, start-from-a-template, Your
7575
// apps — is that home.
7676
describe('objectui#4048 — a Setup-only deployment lands on the env home', () => {
@@ -93,7 +93,7 @@ describe('resolveLandingPath', () => {
9393
expect(resolveLandingPath([{ name: 'setup' }])).toBe('/home');
9494
});
9595

96-
it('still lands in Setup when the deployment DECLARES it (ADR-0075 wins over the default)', () => {
96+
it('still lands in Setup when the deployment DECLARES it (ObjectUI ADR-0075 wins over the default)', () => {
9797
// The declared landing is the escape hatch: an admin-console deployment
9898
// that genuinely wants Setup as its first screen says so with
9999
// `isDefault`, and rule 1 is deliberately untouched by this fix.

‎apps/console/src/components/RootLandingRedirect.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export function resolveLandingPath(apps: readonly LandingApp[] | null | undefine
100100
// .resolveLandingRoute`), which for Setup is `dashboard/system_overview`.
101101
//
102102
// "The only app I can see is Setup" means the environment has no product
103-
// apps yet — and under ADR-0075 the environment layer's home is the
103+
// apps yet — and under ObjectUI ADR-0075 the environment layer's home is the
104104
// environment's own responsibility, which is `/home` (build with AI, start
105105
// from a template, Your apps). Rule 1 is deliberately left alone: a
106106
// deployment that genuinely wants Setup as its first screen DECLARES it

‎packages/app-shell/src/__tests__/homeAffordancesFollowDeclaration-7256.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* cloud's control plane lands a signed-in customer on the app declared with
1111
* `isDefault` (`cloud_control` → its Welcome page). The chrome did not follow:
1212
* the top-bar logo, both sidebar Home rows and the app-switcher Home entry each
13-
* hard-coded `/home`, the ENVIRONMENT layer's launcher (ADR-0075). One click on
13+
* hard-coded `/home`, the ENVIRONMENT layer's launcher (ObjectUI ADR-0075). One click on
1414
* the logo therefore left the control plane's guided welcome for a screen whose
1515
* "Build an app" / "Start from a template" cards act on an environment the
1616
* control plane does not have, and whose "Your apps" tiles are the control

‎packages/app-shell/src/__tests__/homeRecoveryRedirectsFollowDeclaration-7373.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
* What was left behind: a control-plane customer refused an app, or landed on a
1818
* surface their runtime does not serve, was dropped on the ENVIRONMENT launcher
19-
* (ADR-0075) — "Build an app" / "Start from a template" cards acting on an
19+
* (ObjectUI ADR-0075) — "Build an app" / "Start from a template" cards acting on an
2020
* environment the control plane does not have, and "Your apps" tiles that are
2121
* the control plane's own internal management apps. The declaration was already
2222
* read by `/` and by the chrome; only the error paths still disagreed.
@@ -67,7 +67,7 @@
6767
* - `utils/homePath.ts` — `HOME_LAUNCHER_PATH` IS the launcher, and the `??`
6868
* fallback every site above resolves through. Making it anything else is
6969
* option C (redirecting `/home` itself), which the card's ruling excluded:
70-
* it would strip the environment layer of its real launcher (ADR-0075).
70+
* it would strip the environment layer of its real launcher (ObjectUI ADR-0075).
7171
*
7272
* `console/ConsoleShell.tsx`'s `RootRedirect` was a second such site — the `/`
7373
* LANDING rather than a recovery exit, held out of the launcher scan by a
@@ -175,7 +175,7 @@ describe('objectui#7373 — recovery redirects follow the declared landing', ()
175175
it('⛔ the launcher constant itself is untouched — option C stays excluded', () => {
176176
// `HOME_LAUNCHER_PATH` is the fallback every site above resolves through.
177177
// A card that "fixed" this line would redirect `/home` itself and strip the
178-
// environment layer of its launcher (ADR-0075) — excluded by the ruling.
178+
// environment layer of its launcher (ObjectUI ADR-0075) — excluded by the ruling.
179179
const src = stripComments(read('packages/app-shell/src/utils/homePath.ts'));
180180
expect(src).toMatch(/export const HOME_LAUNCHER_PATH = '\/home';/);
181181
});

‎packages/app-shell/src/preview/__tests__/DraftChangesPanel.securityProblems.test.tsx‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ vi.mock('@object-ui/i18n', async (importOriginal) => {
3636
});
3737

3838
import { DraftChangesPanel } from '../DraftChangesPanel';
39+
// Warm the lint package at module scope: `securityPostureLint` loads it with a
40+
// function-body `import('@objectstack/lint')`, and that first transform must not
41+
// be paid inside a 1000 ms `findBy` window (AGENTS.md, test discipline). Same
42+
// specifier, so the component's own dynamic import resolves from the cache.
43+
import '@objectstack/lint';
3944

4045
afterEach(() => {
4146
vi.restoreAllMocks();

‎packages/app-shell/src/utils/homePath.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Two different screens have both called themselves the console's home:
77
*
88
* - `/home`, the multi-app workspace launcher ("Build an app", "Start from a
9-
* template", "Your apps"). Under ADR-0075 that is the ENVIRONMENT layer's
9+
* template", "Your apps"). Under ObjectUI ADR-0075 that is the ENVIRONMENT layer's
1010
* home: its cards act on the environment the SPA is attached to.
1111
* - `/apps/<app>`, the landing an App DECLARES with `isDefault: true`. The
1212
* landing page WITHIN that app is its first navigation item (spec 17.0.0
@@ -46,7 +46,7 @@
4646

4747
/**
4848
* The multi-app workspace launcher — the environment layer's own home
49-
* (ADR-0075). The fallback whenever no App declares a landing, which is every
49+
* (ObjectUI ADR-0075). The fallback whenever no App declares a landing, which is every
5050
* ordinary environment and therefore the unchanged status quo.
5151
*/
5252
export const HOME_LAUNCHER_PATH = '/home';

‎packages/auth/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
},
4040
"dependencies": {
4141
"@objectstack/spec": "^18.0.0-next.1",
42-
"better-auth": "^1.7.2"
42+
"better-auth": "1.7.12"
4343
},
4444
"devDependencies": {
4545
"@types/react": "19.3.0",

‎packages/plugin-chatbot/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"lint": "eslint ."
3737
},
3838
"dependencies": {
39-
"@ai-sdk/react": "^4.0.68",
39+
"@ai-sdk/react": "4.0.121",
4040
"@object-ui/components": "workspace:*",
4141
"@object-ui/core": "workspace:*",
4242
"@object-ui/i18n": "workspace:*",
@@ -45,7 +45,7 @@
4545
"@radix-ui/react-slot": "^1.3.3",
4646
"@objectstack/spec": "^18.0.0-next.1",
4747
"@radix-ui/react-use-controllable-state": "^1.2.6",
48-
"ai": "^7.0.65",
48+
"ai": "7.0.118",
4949
"class-variance-authority": "^0.7.1",
5050
"lucide-react": "^1.43.0",
5151
"motion": "^13.2.0",

0 commit comments

Comments
 (0)