Skip to content

studio landing (/studio): the header holds only the product wordmark — no account menu, breadcrumb or search — and most of the page is blank #11863

Description

@objectstack-fleet

Filing gate ② — a product decision only the maintainer can make.

Who acts on it: objectui maintainer (Studio owner) — a decision on the landing frame. ⛔ Not a claim. Filed on the maintainer's word: 「Studio 首页顶部只有一个标志,没有用户菜单、面包屑和搜索,大半屏是空白;在手机上打开 Studio 基本没法用,也没有"请在电脑上编辑"的提示立卡」.

Maintainer quick-read

The /studio front door is a deliberate standalone frame whose only control is the product wordmark back to Home (StudioLanding in the console's StudioRoute). Should it get the console's standard header pieces and use the empty space?

Seen on 2026-10-07 (1440×900)

The header shows only "ObjectOS": no account menu (profile, language, sign out), no breadcrumb, no search across packages, objects or flows. The package cards fill roughly the top third; the rest of the page is blank.

Not repeated here

Studio below tablet width, including the missing "best on desktop" hint on phones, is #11795 (its option A).

Options

  • A — reuse the console app header (account menu, search, notifications) with a Studio breadcrumb, and fill the landing with recent work (last edited packages, objects, flows) and starting templates.
  • B — add only the account menu and a package search box.
  • C — status quo.

Recommendation

A: the landing is where an author starts every session.

Environment

Source read on objectui main at 82500a7 and objectstack main at 033e5c53. Live observations are from the 2026-10-07 browser QA pass: examples/app-showcase booted with objectstack dev --ui --seed-admin (objectstack 879bd38c), console from objectui 179f6fe9, Chromium 141 at 1440×900, signed in as the seeded platform admin admin@objectos.ai.

Duplicate check

Dedupe words: studio landing header wordmark only · no user menu search breadcrumb studio · studio front door empty

Filed by Claude Code (session session_01D76mrPJrSSdaKRxR2rvrMG) from the 2026-10-07 QA pass and a follow-up source reading.


Generated by Claude Code

Activity

  1. added
    enhancementNew feature or request
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    on Oct 8, 2026
  2. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: write metadata — the Studio front door | 缺项 | P3

    Triage: first grade, enhancement · priority:p3 · domain:ui · area:studio · pm:queue. Filed as ②, routed: the maintainer's complaint names what is missing, and adding the console's standard header pieces changes no contract

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-08T04:04Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: lands in StudioLanding in the console's StudioRoute ⇒ domain:ui; rationale: a Studio or console surface in objectui. Read on objectui main 4e7dd56ed1.

    • Why not the decision box: an account menu, a breadcrumb and search are the console's own header pieces, reused. Why p3: Studio works; its front door is bare.
    • Direction:
      • give /studio the account menu (profile, language, sign out), a breadcrumb and search across packages, objects and flows
      • use the empty space for recent items and package cards
    • Not here: below-tablet use and the "best on desktop" hint are studio: unusable below tablet width, and the flow canvas does not fit-to-view on resize #11795.
    • Clause-②: no. Patch changeset in objectui.
  3. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2
    Session: session_01MgfduSkFrfM3eorB3UGfAU
    Account: os-bill
    Branch: claude/issue-11863-studio-landing-header
    Worktree: objectui-issue-11863
    Domain: domain:ui
    Seat: domain:ui#2
    File surface (line numbers on 0855fc6):

    • apps/console/src/components/StudioRoute.tsx: StudioLanding's header (about :163–:185). It gains:

      • the account menu (profile, language, sign out) the console already renders;
      • a Studio breadcrumb;
      • search across packages, objects and flows, through the console's existing search or command surface.

      All three reuse existing components; none is re-implemented.

    • packages/app-shell/src/views/studio-design/BuilderLanding.tsx: the landing body, for recent items (last edited packages, objects, flows) and package cards. ⛔ Edits here start only after PR objectui#11899 (objectui#11855, in the merge queue) has landed. The dev rebases its worktree on that main first.

    • apps/console/src/i18n or app-shell's metadata-admin/i18n.ts: only new console.studio.* / engine.studio.landing.* rows, en and zh, next to the existing ones.

    • The tests beside these, and .changeset/11863-*.md.

    ⛔ Not on it:

    • StudioDesignSurface.tsx: seat 3's objectui#11823 and this seat's objectui#11807 hold regions of it.
    • The command palette's own code (packages/app-shell/src/chrome/CommandPalette.tsx): reused as it is. If search needs a change there, the dev reports it first.
    • Studio below tablet width, which belongs to objectui#11795.
    • packages/components/src/ui/** and packages/i18n/**.

    Any file outside this list: the dev reports it before opening the PR (stop on breach; explain in the report).
    Container & model: M, mode:subagent, model: opus (dispatch-gates --tier --repo objectstack-ai/objectui over these paths: no path-derived mandate; default tier)
    Clause-②: no
    Responsibility: objectui console /studio: StudioLanding's header holds only the product wordmark (no account menu, breadcrumb or search), and most of the landing is blank below the package cards | the console's own header pieces (account menu, search) exist and are reused | every Studio author, who starts each session on /studio, seen in the filer's 2026-10-07 browser QA pass at 1440x900
    Thread-read: 6051961106
    Serial constraints cleared: one declared, not blocking.

    • objectui#11855 (this seat, PR objectui#11899, accepted, in the merge queue): it edits BuilderLanding.tsx's Duplicate form. This card's BuilderLanding.tsx edits wait for it to land.
    • objectui#11808 (queued, unclaimed): its read-only card is also in BuilderLanding.tsx. It is left to that card.
    • In-flight claims read 2026-10-08T05:48Z: none names StudioRoute.tsx or StudioLanding. Only objectui#11855 names BuilderLanding.tsx.
    • Open objectui PRs, read 2026-10-08T05:48Z: only objectui#11899 touches BuilderLanding.tsx, and none touches StudioRoute.tsx.

    Why Clause-②: no: this is the Studio front door's UX, built from the console's existing header pieces. No export, prop, route or packages/i18n key changes.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 11863,
    "status": "needs_decision",
    "branch": "claude/issue-11863-studio-landing-header",
    "pr": null,
    "session": "session_01MgfduSkFrfM3eorB3UGfAU",
    "premise_still_valid": true,
    "summary": "The card's defect reproduces in a real browser (Chromium 1440x900, mocked API, console served by vite from this worktree at 0855fc6): the /studio header holds one control, the 'Back to home' wordmark link, and the landing ends at y=480 of 900 (the last card at 431.5), 1024 px wide of 1440. The direction cannot be built inside the claimed surface, so I stopped before any edit; no commit, no PR. Each PM hypothesis was measured. H1 holds only as AppHeader as a whole. The console's account menu (profile, theme and language, sign out) lives inline in app-shell's AppHeader, not as a component of its own. /studio has the same provider tree /home has, so AppHeader with variant home mounts there just as HomeLayout mounts it. The auth package's UserMenu is a different flat widget that nothing mounts. H2 is falsified for /studio. The palette and SearchResultsPage are scoped to an app: they search the active app's nav entries and records, switch apps and set the theme, and every link they build starts with /apps/APP. They have no package or flow source. Only ConsoleLayout mounts CommandPaletteProvider, so AppHeader's Search trigger does nothing outside an app: on /home a click and Ctrl+K open nothing, while the same click inside an app opens the palette. Mounted with no active app, the full-search command goes to /apps/undefined/search. So 'ship objects plus what it covers' would give either a dead trigger or a broken link, and no objects. H3 is falsified. A /studio/PKG/TAB visit records nothing, and the published RecentItemType has no package or flow kind. H4 is blocked on i18n. No key anywhere means Studio, apps/console/src/i18n does not exist, and the console.studio rows live only in packages/i18n, which is off this claim, in all 10 packs. Every route forward needs files the claim does not hold, and two of them widen a published API: the AppHeader variant union and RecentItemType, so the re-claim is Clause-2 yes. Three mechanism questions, with options, are in open_questions. #11899 merged at 06:01:12Z, so the BuilderLanding wait has cleared. Recommended re-claim surface: packages/app-shell/src/layout/AppHeader.tsx; apps/console/src/components/StudioRoute.tsx; packages/app-shell/src/chrome/CommandPalette.tsx plus the palette's mount point for the frames outside an app (HomeLayout, OrganizationsLayout, AiChatPage, StudioLanding, or once above them); packages/app-shell/src/context/RecentItemsProvider.tsx and useRecentItemLabel; packages/app-shell/src/views/studio-design/BuilderLanding.tsx; packages/i18n/src/locales/.ts (all 10 packs: a crumb label, a recent-kind label, and retiring console.studio.backToHome); the engine.studio.landing rows in app-shell's metadata-admin/i18n.ts; the tests beside these and a patch changeset. The seat could split it into a header card (Q1 and Q2) and a body card (Q3).",
    "tests": "No diff, so no gate measured a change. Three measurements back the hypothesis verdicts. (1) A scratch vitest probe under the verify lock: bash os-verify-lock.sh -c 'pnpm exec vitest run --maxWorkers=2 packages/app-shell/src/chrome/probe-11863.test.tsx'. Lock verdict: 'VERDICT command-exit 0', 'Tests 5 passed (5)'. Its cases: the palette mounted at /studio with no active app renders no object entry, and its full-search command navigates to '/apps/undefined/search'; useCommandPalette outside a provider leaves the path at /home with open=false, and the control inside a provider gives ?palette=1 with open=true; useTrackRouteAsRecent records [] for /studio/crm/data under both base segments, and the control /apps/showcase_app/showcase_task records ['object:showcase_task']. The probe file was deleted afterwards and never committed (git status clean). (2) A scratch Playwright drive, exit 0, Chromium at /opt/pw-browsers/chromium, 1440x900, my own vite dev server on :5297 (stopped by PID afterwards), API mocked with page.route. /studio: header text 'ObjectOS', interactive ['a:Back to home'], landing rect top 40.5 and bottom 479.5 of 900. /home: the Search trigger is visible; after a click the URL is '/home' and the palette overlay count is 0; after Ctrl+K the count is still 0. CONTROL /apps/probe_app/probe_task: the same click gives '?palette=1' and an overlay count of 1. pageErrors: []. (3) Reads at 0855fc6. git ls-tree apps/console/src/: 0 hits for 'i18n', 1 hit for the 'components' control. git grep backToHome: apps/console code plus the 10 packages/i18n/src/locales packs only. git grep for palette mounts: CommandPaletteProvider only in ConsoleLayout, CommandPalette only in AppContent; the control (AppHeader's useCommandPalette) hits. AppHeader is mounted by HomeLayout and AiChatPage (variant home) and by OrganizationsLayout and OrganizationLayout (variant orgs). UserMenu's only hit is its own docstring example. RecentItemType is 'object' | 'dashboard' | 'page' | 'report' | 'record' | 'metadata' and is exported from the app-shell index.",
    "mcp_calls": "0",
    "api_writes": "1 — POST issues/11863/comments (this os-dev-report) via scripts/pm/post-stamped.mjs through the fleet-write relay; plus one git push of the empty branch (not a REST write)",
    "gates": {
    "head": "0855fc671 (git rev-parse --short HEAD; no commit on the branch, origin branch equals the base)",
    "ran": [
    "os-verify-lock vitest probe: VERDICT command-exit 0 · Tests 5 passed (5)",
    "scratch browser drive: exit 0"
    ],
    "not_measured": "NOT MEASURED: every dispatch gate family (console/app-shell type-check, check:i18n-keys, i18n parity, check:eager-closure, changeset presence/no-major, check:new-line-citations, check:control-bytes, eslint, column-identity ratchet), reason: empty diff, nothing to judge"
    },
    "files_changed": [],
    "deviations": [
    "Stopped before the PR, as the dispatch says for a file outside the list ('stop and report before opening the PR') and for a new published prop. No PR was opened and no label-write or PR-assignee write was made.",
    "Conflict inside the dispatch. The i18n clause says 'in the table that already holds that prefix', and the claim's Not-on-it list says packages/i18n/**. The only table holding console.studio.
    is packages/i18n/src/locales (10 packs, held by a parity test), and the claim's other option, apps/console/src/i18n, does not exist at 0855fc6.",
    "Conflict with objectui AGENTS.md: the dispatch says rebase onto main before the BuilderLanding edits, but this repo forbids force-push and names merge as the way to sync. Moot this run, since there are no commits.",
    "Conflict with the agent definition: the dispatch asks for a first line made of the Fixes keyword and this card's number, and the definition asks for 'Part of' on any partial PR. Moot, since there is no PR.",
    "Not dispatch-gated: a scratch probe test was created in the worktree, run and deleted, and a dev server on :5297 was started and stopped by its recorded PID."
    ],
    "open_questions": [
    {
    "question": "Q1. How does the /studio header get the Studio crumb next to the console's account menu? Measured: the menu exists only inline in AppHeader. AppHeader renders a crumb only in its app variant; the orgs variant hard-codes one ('Workspaces'). No key means 'Studio', and console.studio rows live only in packages/i18n.",
    "options": [
    "A. AppHeader gains a studio variant, a sibling of orgs (brand, then a fixed Studio crumb), and StudioLanding mounts it. One crumb-label row goes into all 10 packs, and console.studio.backToHome retires with the wordmark link. Cost: AppHeader.tsx, StudioRoute.tsx and 10 locale packs; the published variant union widens (Clause-2 yes).",
    "B. AppHeader gains a generic crumb-trail prop for the variants used outside an app. Same files; a wider published API with one consumer.",
    "C. Mount AppHeader with variant home unchanged and drop the crumb. Fits the claimed surface, but leaves console.studio.backToHome dead in 10 packs and drops a ruled direction item."
    ],
    "recommendation": "A. Business need: the maintainer named the breadcrumb in the filing quote, and this frame is where an author starts every session. Long-term: one header component for every console frame; orgs already sets the fixed-crumb-per-frame precedent, so A adds no new mechanism. AI-error: neutral, since this is chrome with no authorable key. Startup scope: A adds one union member and one key, B is a general API for one consumer (speculative), and C silently narrows a ruled direction."
    },
    {
    "question": "Q2. What does the header search search on /studio? Measured: the console search is scoped to an app and has no package or flow source. Its trigger is dead outside an app: measured on /home, and the same holds for /ai and /organizations by source. With no active app its full-search link is /apps/undefined/search. The dispatch fallback, 'ship objects plus what it covers', yields no objects.",
    "options": [
    "A. Make the palette work in frames outside an app. Mount provider and palette for HomeLayout, OrganizationsLayout, AiChatPage and StudioLanding, or once above them. With no active app the palette drops the app-scoped groups and full search. On /studio it adds a Studio group: packages (packages-io fetchPackages), objects (MetadataProvider) and flows, each opening /studio/PKG/TAB. Cost: CommandPalette.tsx plus the mount point(s). It also fixes the measured /home dead trigger.",
    "B. A filter box on the landing over the package cards (BuilderLanding, engine.studio.landing rows). Packages only. AppHeader's trigger stays dead unless A's no-app half also lands.",
    "C. A without flows (packages and objects only), if there is no read that lists flows across packages."
    ],
    "recommendation": "A, or C if flows have no list read. Business need: the maintainer named search, and the console's own trigger is measured dead on /home today. Long-term: one search surface instead of a second, Studio-only dialect. AI-error: neutral. Startup scope: it reuses existing reads (fetchPackages, MetadataProvider objects); B adds a second search UI and leaves a dead trigger in the header."
    },
    {
    "question": "Q3. Recent items on the landing. Measured: Studio visits are not recorded, and the published RecentItemType has no package or flow kind. useTrackRouteAsRecent reads only /apps/APP paths. Selection of an object or flow inside a pillar lives in StudioDesignSurface's URL, which other claims hold.",
    "options": [
    "A. Add a package kind to RecentItemType, stored by identity and labelled at render from the package list (the objectui#11678 shape). Record visits from StudioRoute, the route owner, and list the last few on the landing. One itemType row in all 10 packs. The published type widens (Clause-2 yes).",
    "B. Record package visits under the existing metadata text kind (label = package id, frozen at visit). No type change, but it rebuilds the frozen-label pattern objectui#11678 retired, and machine ids would appear in Home's Recently Accessed and in the sidebar.",
    "C. No recent items; lay the package cards out to use the width only."
    ],
    "recommendation": "A, packages only. Recent objects and flows need StudioDesignSurface's URL contract and belong to a later card. Business need: the author starts every session here (the card's own recommendation), and the page measures blank below y=480 of 900. Long-term: storage by identity, per objectui#11678, where B regresses it. AI-error: neutral. Startup scope: one union member and one key per pack; recent objects and flows wait until something pulls for them."
    }
    ],
    "decision_frame": "每个方案必须沿四条固定评估轴分析,这是决策分析的核心原则,不是可选项:\n\n- 实际业务需求 — 它服务的是真实存在的业务场景,\n 还是投机性能力面?判据要求实测(谁在写这个键、谁在读、\n 示例应用与真实部署的用法),「读起来像有用」不作数。这条轴会改变结论,不是陪衬。\n- 项目长远合理性 — 哪个方案符合北极星方向与可持续架构(no workarounds、\n contract-first),临时补丁式选项要明说长期代价。\n- 防 AI 写代码犯错,尤其是防 AI 写元数据 app 犯错 — 哪个方案让 AI 在结构上更难写错:\n 契约收紧(严格 schema、publish 时响亮拒绝)优于消费端宽容(?? 回退、静默容错)——\n 宽容恰是 AI 批量犯错被掩盖的温床;声明即强制,绝不让 AI 声明一个运行时不兑现的能力。\n- 创业阶段不扩散需求 — 创业阶段聚焦原则:创业项目先专注核心能力,能力扩张默认\n 从紧,无拉动的声明面按 implementation-first 处置,已发布零消费能力不因沉没成本豁免。\n 过渡也从紧 —— 创业阶段不渐进:废弃别名/拼写与能力退役默认立即退休,无分阶段\n 窗口、无双拼写宽限;staged 仅凭具名外部用户证据方可荐。新增门禁默认否:门禁是只减\n 不增的零件,例外只有维护者点名;荐新增门禁须引其点名原话,否则荐「不加」。\n\n基本裁决原则:spec 声明 > 实现 > 文档面;声明而未兑现是实现缺口,补实现或退役,\n⛔ 不在消费端收窄;未声明键随实现,文档随之。「声明即强制」只及 spec 与元数据契约、\n运行时能力,⛔ 不及 AGENTS.md 这类给 agent 读的约定 —— 那些的读者是 agent,不是门禁。\n推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡,\n交维护者拍板。\n",
    "out_of_scope_findings": [
    "class: a · reach: /home in the UI (Chromium 1440x900, mocked API, console at 0855fc6). The header's visible 'Search ⌘K' trigger opens nothing on a click (URL stays /home, palette overlay count 0) or on Ctrl+K. Control: the same trigger at /apps/probe_app/probe_task opens the palette (?palette=1). Location: AppHeader's search button calls useCommandPalette().openCommandPalette, which is a documented no-op outside a CommandPaletteProvider; only ConsoleLayout mounts one, so the same holds for /ai, /organizations and /organizations/SLUG by source (the /home case was measured, the others were not) · dedupe words: home header search button does nothing · command palette not mounted outside apps · ctrl k inert on home",
    "carrier: the re-claim of this card (Q2 option A) · noted, not filed. The palette's full-search command builds /apps/undefined/search when it is mounted with no active app. It cannot be reached today, because every mount has an app.",
    "carrier: the re-claim of this card (Q1 option A or C) · noted, not filed. console.studio.backToHome becomes a dead key in 10 packs once the wordmark link gives way to AppHeader, and it should retire in the same PR."
    ]
    }


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Release and question for triage: objectui#11863 needs a Clause-②: yes route · domain:ui seat 2 · 2026-10-08T06:11Z

    Release: session_01MgfduSkFrfM3eorB3UGfAU (domain:ui seat 2, account os-bill) releases claim 6053284159. The dev stopped before any edit, as its dispatch requires when the direction needs files outside the claim or a wider published surface. There is no commit and no PR. The branch claude/issue-11863-studio-landing-header stays at 0855fc6 as the claim's marker. The full report is comment 6053561282.

    Why it leaves this lane. All three parts of triage direction 6051961106 widen a published surface of @object-ui/app-shell, or add packages/i18n keys. Each was measured on 0855fc6:

    • Account menu and breadcrumb. The console's account menu (profile, theme and language, sign out) exists only inline in the exported AppHeader. A Studio crumb beside it means one more member of AppHeader's published variant union, like orgs, which hard-codes Workspaces. It also means one crumb-label row in all ten packages/i18n packs, because no key means "Studio" and console.studio.* lives only there.
    • Search. The command palette and SearchResultsPage are scoped to an app: every link starts with /apps/APP, and they have no package or flow source. Only ConsoleLayout mounts CommandPaletteProvider. Mounted with no active app, the palette's full-search command builds /apps/undefined/search. Searching packages, objects and flows from /studio means mounting the palette outside app frames and giving it a Studio group.
    • Recent items. /studio/PKG/TAB visits are not recorded. The exported RecentItemType (object | dashboard | page | report | record | metadata) has no package kind.

    Under the protocol, a card that widens a published surface is Clause-②: yes: spec-lane work, landed only after a contract review. So this seat does not re-claim it with a wider surface.

    The dev's options and recommendations, for the next owner. Each was argued on the four axes in comment 6053561282.

    • Q1, header: A, a studio variant of AppHeader with a fixed Studio crumb, mounted by StudioLanding. It adds one union member and one key, and retires console.studio.backToHome with the wordmark link.
    • Q2, search: A, make the palette work outside app frames (Home, Organizations, AI, Studio) and give /studio a group for packages, objects and flows. It falls back to C, packages and objects, if no read lists flows across packages.
    • Q3, recent items: A, a package kind on RecentItemType, stored by identity and labelled at render as in objectui#11678, recorded from StudioRoute and listed on the landing. Objects and flows wait for a later card.
    • Split: a header-and-search card (Q1, Q2) and a landing-body card (Q3) could ship apart.

    Filed from this run: the visible Search ⌘K trigger in the header on /home opens nothing, by click or Ctrl+K. It is a separate card from this one, because it is a defect today whatever is decided here.

    Labels: pm:dispatched → pm:queue plus pm:retriage; the assignee is cleared.


    Generated by Claude Code

  6. added
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    and removed on Oct 8, 2026
  7. 28 remaining items

  8. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed, Q1: PR #12004 merged through the merge queue as 7ebff399 (Part of; this card stays open for Q2). pm:dispatched → pm:queue, unassigned, in this act. From the domain:spec @ objectui seat (objectui#10217), session session_01DBZ9bntPZ7VKyQNtJeNsgw, 2026-10-08T22:40Z.

    Release: session session_01DBZ9bntPZ7VKyQNtJeNsgw · cause: Q1 has landed · destination: pm:queue, no assignee. Q2 is claimed afresh from the queue.

    Verification

    • Merge content matches the PR: the landed commit's git patch-id --stable equals the PR's net diff against its merge base 902fbe19 (ca0a004b90ba on both sides).
    • On main, by content:
      • AppHeaderVariant is 'app' | 'home' | 'orgs' | 'studio';
      • StudioRoute.tsx's landing mounts <AppHeader variant="studio" />;
      • main's push Bundle Analysis is green.
    • Reviewed head is the landed head: the at-tier record 6070090337 PASSed bd5e188f, and nothing was pushed after it. The ACCEPT is 6070134644. The PR body, which became the commit message, was corrected in that act.

    Delivered, Q1:

    • The /studio landing mounts the console's own header: the brand, a fixed Studio crumb, and the right-hand cluster.
    • It shows no search trigger, because no palette is mounted there.
    • console.studio.backToHome retired from all ten packs (@object-ui/i18n minor, the narrowing stated).

    Left on this card: Q2, search on /studio: the palette outside app frames, plus a Studio group (ruled A after objectui#11912, with C as the fallback if no read lists flows across packages). It mounts code on first load, and after Q1 the console's eager closure has about 70 B of headroom under its 3,391,484 B ceiling. So Q2 is claimed measurement-first. A build that does not fit waits for the bytes objectui#11939 (the lazy designers, p1 under objectui#11942's ruling) frees. ⛔ The ceiling is not raised.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (this card's Q2 only, search on /studio, per retriage 6054672824 Q2 → A with C as the fallback, routed to this lane by 6060520389; Q1 and Q3 have landed)
    Session: session_01CijGnfWLxTLUFcJkY2ouUw
    Account: os-tesla (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-11863-studio-search
    Worktree: objectui-issue-11863-q2
    Domain: domain:spec
    Seat: domain:spec#1
    File surface (on objectui main 049012b):

    • apps/console/src/components/StudioRoute.tsx: StudioLanding only, where a palette is mounted for /studio. ⛔ Not RequireStudioAccess, which objectui#12035 takes next in this lane.
    • packages/app-shell/src/chrome/CommandPalette.tsx: a no-app mode (no app-scoped group, no full-search command) and a Studio group listing packages, objects and flows, each opening its Studio page. Flows only if a read lists them across packages; otherwise the ruling's fallback C (packages and objects).
    • packages/app-shell/src/context/CommandPaletteProvider.tsx, and packages/app-shell/src/layout/AppHeader.tsx only as far as the studio variant's Search trigger needs. objectui#11987's rule already draws it wherever a palette is mounted.
    • packages/i18n/src/locales/*.ts: new rows only where no existing key fits, in all ten packs.
    • The tests beside these, the README or docs page that describes the palette's scope if one does, and one .changeset/11863-*.md.

    ⛔ Not on it:

    • the Home, Organizations and AI frames: objectui#11912 closed by hiding their trigger (PR objectui#11987), not by mounting a palette there;
    • StudioDesignSurface.tsx (objectui#11794, PR objectui#12040);
    • the recent-items files and BuilderLanding.tsx (Q3, landed).

    Any file outside this list: the dev reports it before opening the PR (stop on breach; explain in the report).
    Container & model: M, mode:subagent, model: default (dispatch-gates --tier --repo objectstack-ai/objectui: "no path-derived mandate: the surface hits none of the 3 declared glob(s)"; clause ② forbids a build below default). The contract review is owed at CONTRACT_REVIEW_TIER, by an isolated subagent, because this seat is not serving at that tier.
    Clause-②: yes
    Ruling-ref: 6054672824 (Q2 → A, with C as the fallback), 6060520389 (lane)
    Responsibility: n/a — not a defect card
    Thread-read: 6070490884
    Serial constraints cleared: read at 2026-10-09T07:55Z on objectui main 049012b. No open objectui PR touches StudioRoute.tsx, CommandPalette.tsx, CommandPaletteProvider.tsx, AppHeader.tsx or a locale pack. In-flight claims: objectui#11794 (domain:ui#2) holds StudioDesignSurface.tsx, which is disjoint; objectui#12034 (domain:ui#2) holds the console's language loading (main.tsx, loadLanguage.ts, loadLocales.ts), which is disjoint. objectui#12035 (this lane, also area:studio) shares StudioRoute.tsx and the locale packs, so it waits for this card. They are not folded: a no-access notice and a search share no defect shape.

    Why Clause-②: yes: a palette that answers with no active app, a Studio group, and any new pack row widen published surfaces of @object-ui/app-shell and @object-ui/i18n (triage 6054672824).

  10. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 11863,
    "status": "done",
    "branch": "claude/issue-11863-studio-search",
    "pr": "#12044",
    "session": "session_01CijGnfWLxTLUFcJkY2ouUw (mode subagent: the parent PM session, claim 6076852010)",
    "premise_still_valid": true,
    "summary": "Q2 of objectui#11863 (retriage 6054672824: Q2 to A, C as fallback) is built as A with flows in draft PR objectui#12044. Its first line is 'Fixes #11863', because Q1 (PR #12004) and Q3 (PR #11996) have landed and Q2 was the card's last ruled item. CommandPalette gets a declared second scope, scope="studio", that takes no other prop. In that scope there is no app navigation group, no record search, no app switching and no full-search command. It lists three Studio groups: Packages (fetchPackages, opened at /studio/PKG/data), Objects (useMetadata().objects under their _packageId, opened at /studio/PKG/data?surface=object:NAME) and Flows (the cache's unscoped flow list, opened at /studio/PKG/automations?surface=flow:NAME, or /studio/~org/automations?surface=flow:NAME for a flow in no package). Nothing is read until the palette opens. StudioLanding mounts CommandPaletteProvider plus the palette, so the studio header draws its Search trigger under objectui#11912's unchanged rule, and Ctrl+K opens it. Two rows were added in all ten packs, console.commandPalette.packages and .flows; the objects heading reuses console.commandPalette.objects. The app-shell README, the console guide and the changeset (.changeset/11863-studio-search.md: app-shell minor, i18n and console patch) describe it. HYPOTHESES. H1 held on 049012b: only ConsoleLayout mounted a provider, and on base StudioRoute the /studio trigger is absent (reverse leg), so this card mounts the palette itself. H2 held: the clean shape is StudioLanding only, and /home still draws 0 and 0 triggers in the browser. H3 held on 049012b: a scratch probe (deleted) mounted the base palette with no app, and the query 'search' then picking full search went to /apps/undefined/search. The new scope drops that command by declaration. H4: a cross-package flow read exists, so this is A, not C: MetadataProvider getItemsByType('flow') is the unscoped GET /api/v1/meta/flow, the same list loadPackageLessSurfaces narrows ('The unscoped list also carries every PACKAGED item'), and the server's getMetaItems({type}) without a package returns all packages. URL shapes come from StudioDesignSurface's PILLAR_FOR_SURFACE_TYPE, the ?surface= deep link and studioOrgScopePath. These were checked with a mocked API, not a live server. H5 fits: the eager closure went from 3,238,404 B (049012b) to 3,239,095 B (dbca37f), +691 B, ceiling 3,281,467 untouched. packages-io was already eager in the PackagesPage chunk. H6: no packages/i18n row fits a Packages or Flows heading (common.package and packagedAutomation.colFlow are singular; console.studio.title is the product name), and the designer table is a different catalogue the palette does not read, so two rows were added. Card assignee untouched. PR assignee os-tesla, read back MATCHES.",
    "tests": "All under os-verify-lock from the worktree root, at head b6a003e unless stated. UNION, the 59 test files git grep -l names for CommandPalette|CommandPaletteProvider|AppHeader|StudioRoute|commandPalette: 'Test Files 59 passed (59)', 'Tests 515 passed (515)'. packages/i18n/: 'Test Files 82 passed (82)', 'Tests 1316 passed | 13 skipped (1329)'. scripts/tests/: 'Test Files 179 passed | 2 skipped (181)', 'Tests 5452 passed | 2 skipped (5454)'. TYPE-CHECK: pnpm --filter @object-ui/i18n --filter @object-ui/app-shell --filter @object-ui/console run type-check, exit 0, three script names echoed, after turbo run build --filter='@object-ui/console^...'. app-shell's tsconfig.test.json compiles the new test's two @ts-expect-error pins: a studio palette given activeApp, and a bare CommandPalette. NEW: CommandPalette.studioScope-11863.test.tsx (10 cases) and StudioRoute.searchPalette-11863.test.tsx (4 cases). CHANGED: the 11912 pin's CONTROL adds 'studio' under a provider. REVERSE VERIFICATION from committed dbca37f: CommandPalette.tsx and StudioRoute.tsx were swapped to base blobs 77b85897 and 9e2098ca (anchors useStudioPaletteEntries 1 to 0, scope="studio" 1 to 0). Result 'Tests 13 failed | 8 passed (21)'. Red: the 9 studio-scope cases (base throws TypeError 'Cannot read properties of undefined (reading 'filter')' with no app props) and the 4 route cases ('Unable to find an element by: [data-testid="action:command-palette:open"]'). Green: the app-scope CONTROL and the 7 cases of the 11912 pin. The trap restored both files from HEAD (blobs 05643164 and b314334d equal HEAD, git diff HEAD empty). H3 PROBE on base blob 77b85897: 1 passed, asserting '/apps/undefined/search'; the probe was deleted and git status was empty. BROWSER: the dbca37f console build, served by vite preview on :5297 (stopped by PID), Chromium /opt/pw-browsers/chromium at 1440x900, API mocked with page.route, pageErrors []. /studio: desktop trigger 1, compact 1; a click gives /studio?palette=1. Headings were Packages, Objects, Flows, Preferences. Items: Acme CRM, People, Account (Acme CRM), Employee (People), Onboard Account (Acme CRM), Nightly Cleanup, and 3 theme commands. The kernel package, object and flow were absent. Query 'search' gave 0 items. Query 'employee', picked, went to /studio/com.acme.hr/data?surface=object%3Ahr_employee. Ctrl+K on /studio gave /studio?palette=1, and picking the package-less flow went to /studio/~org/automations?surface=flow%3Aorg_cleanup. CONTROL /apps/crm_app: triggers 1 and 1; headings Objects, Preferences, Actions; 'search' gave the full-search command. /home: triggers 0 and 0.",
    "mcp_calls": "0",
    "api_writes": "3, each through /home/user/objectstack/scripts/pm write tools and the fleet-write relay (repository_dispatch to objectstack-ai/objectstack, executed as objectstack-fleet[bot]): POST /repos/objectstack-ai/objectui/pulls (pr_create, draft; read back 11531 bytes sent, 11531 stored, identical); POST /repos//issues/12044/assignees (label-write --assign os-tesla; read back MATCHES; labels untouched, labeler.yml set them); POST /repos//issues/11863/comments (this os-dev-report via post-stamped). Plus git pushes of the branch (not REST).",
    "gates": {
    "head": "b6a003e (git rev-parse --short HEAD; nothing committed after the union, the gates or the report)",
    "ran": [
    "vitest union, 59 files naming CommandPalette/CommandPaletteProvider/AppHeader/StudioRoute/commandPalette: exit 0, Test Files 59 passed (59), Tests 515 passed (515)",
    "vitest packages/i18n/: exit 0, Test Files 82 passed (82), Tests 1316 passed | 13 skipped (1329)",
    "vitest scripts/tests/: exit 0, Test Files 179 passed | 2 skipped (181), Tests 5452 passed | 2 skipped (5454)",
    "type-check i18n + app-shell + console: exit 0, three script names echoed",
    "check:eager-closure: exit 0; base 049012b 3,238,404 B ('3162.5 KB gzipped across 289 of 2474 chunks (budget: 3204.6 KB, headroom: 42.1 KB)'); branch dbca37f 3,239,095 B ('3163.2 KB gzipped across 289 of 2474 chunks (budget: 3204.6 KB, headroom: 41.4 KB)'); delta +691 B; i18n-locale-en 45,231 to 45,241 B; b6a003e changes one test docstring only",
    "check:i18n-keys exit 0 ('Every in-scope call-site key resolves against the en pack (3313 keys)')",
    "check:i18n-drift exit 0 ('No en value changed in this range.')",
    "check:i18n-dead-keys exit 0, report-only; neither new key a candidate",
    "check:eager-locale-catalogues exit 0",
    "check:new-line-citations exit 0 ('VERDICT new-cross-file-line-citations: 0 new citation(s)')",
    "check:control-bytes exit 0 ('OK (scanned 8189 tracked text file(s)')",
    "check:vi-mock-specifiers / check:vi-mock-inherit / check:vi-mock-override-shape / check:test-path-roots: exit 0 each",
    "check:changeset-claims exit 0, report-only: 11806-login-server-unreachable.md names packages/app-shell/README.md for its sign-up table, untouched here, still true",
    "check:pending-changeset-literals / check:doc-fences / check:icon-record-names / check:shell-escape-residue / check:unreferenced-sources: exit 0 each",
    "check:readme-exports exit 0 (579 self-imports judged, 579 real); check:doc-snippets exit 0 ('Every covered documentation snippet compiles against the built types.')",
    "check-changeset-presence exit 0 ('17 source file(s) of 3 released package(s) changed, and this change declares 1 changeset(s): .changeset/11863-studio-search.md'); check-changeset-no-major exit 0",
    "eslint --no-inline-config --format json over the 17 changed ts/tsx files: exit 0, 0 errors; the 5 edited files carry their base blobs' warning counts (2/13/22/11/13 via --stdin), the 2 new tests 0; population /*.{ts,tsx} from eslint.config.js; config not type-aware (no parserOptions.project/projectService), so untouched files' verdicts cannot move",
    "check-governed-queue-guard --test over the 20 changed paths: NOT GOVERNED"
    ],
    "not_measured": "NOT MEASURED: the PR's own CI, reason: in_progress at report time (one read of b6a003e's 42 check runs: 20 success, 3 skipped, 19 in_progress including Lint, Type Check, Bundle Analysis, Build & E2E and the 8 Test shards; none failed). Repo-wide pnpm lint is CI's."
    },
    "files_changed": [
    ".changeset/11863-studio-search.md",
    "apps/console/src/components/StudioRoute.tsx",
    "apps/console/src/components/StudioRoute.searchPalette-11863.test.tsx",
    "content/docs/guide/console.md",
    "packages/app-shell/README.md",
    "packages/app-shell/src/chrome/CommandPalette.tsx",
    "packages/app-shell/src/chrome/CommandPalette.studioScope-11863.test.tsx",
    "packages/app-shell/src/layout/AppHeader.tsx",
    "packages/app-shell/src/layout/tests/AppHeader.searchTriggerNeedsPalette-11912.test.tsx",
    "packages/app-shell/src/layout/tests/AppHeader.studioVariant-11863.test.tsx",
    "packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts"
    ],
    "line_budget": "n/a: the diff touches no skills/
    file",
    "deviations": [
    "File surface: every path is in the claim's list or its categories. CommandPaletteProvider.tsx was not touched. AppHeader.tsx has a comment change only. The tests beside the claimed files are the two new suites plus two AppHeader suites whose prose said /studio mounts no palette; the 11912 suite's CONTROL also gains 'studio'. The docs are the two pages that describe the palette's scope (the app-shell README and content/docs/guide/console.md). No file outside the list.",
    "Attribution: the harness reminder asked for a model-named Co-Authored-By trailer and a different PR footer. I followed objectui AGENTS.md (the model-free trailer pair) and os-dev.md (the session-URL PR footer), which the reminder itself says take precedence.",
    "Not dispatch-gated: a scratch probe test (H3) and a reverse-verification script were run under the lock with trap restore, and the probe was deleted. A vite preview server on :5297 and a Playwright drive outside the repo were stopped by recorded PID. The worktree was removed without --force after rm -rf node_modules."
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: the domain:spec seat (this card's lane) · noted, not filed. The pending .changeset/11863-studio-header.md (Q1) ends with 'No command palette is mounted on /studio, so the header shows no search trigger there.' This PR makes that sentence false. The file is outside this claim, so it is not edited; this PR's changeset states the reversal in its first paragraph. Also in the PR's Acceptance notes.",
    "carrier: none (design bound, in the PR's Acceptance notes and the code's doc) · noted, not filed. The studio scope lists only published objects and flows (the metadata cache's lists), so a draft-only item is not found. A failed package read leaves the packaged entries out, and the landing under the palette shows that read's error."
    ]
    }


    Generated by Claude Code

  11. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 11863,
    "round": "patch 1: Q1 changeset dated note",
    "status": "done",
    "branch": "claude/issue-11863-studio-search",
    "pr": "#12044",
    "head": "12f3f094d420c640117fd0be542806c2027941ac",
    "session": "session_01CijGnfWLxTLUFcJkY2ouUw (mode subagent: the parent PM session, claim 6076852010)",
    "premise_still_valid": true,
    "summary": "Patch round 1 for PR objectui#12044 (Q2 of objectui#11863). There is one commit, 12f3f09, on top of b6a003e, and it changes text only. The pending .changeset/11863-studio-header.md (Q1) gains one append-only dated note, in the objectui#6152 round-12 shape, after the paragraph that ends with 'No command palette is mounted on /studio, so the header shows no search trigger there.' The sentence itself is unchanged. The note reads: 'Note added 2026-10-09 (objectui#11863 Q2, PR objectui#12044): the last sentence above no longer holds. From objectui#11863 Q2 the landing mounts the command palette in its studio scope, so the header draws the search trigger and ⌘K opens the palette; see .changeset/11863-studio-search.md.' The diff is 2 lines added and 0 removed. The anchor sentence still appears once and the note once. Blob f4af4f3a became 89353c20. Nothing else in that file changed. It was a plain push, b6a003e..12f3f09: no merge of main (the PR reads mergeable_state 'behind', not 'dirty'), no rebase, no force. PR BODY, re-read sentence by sentence: the Acceptance note that said the Q1 changeset 'is outside this claim, so it is not edited' was false and is replaced; it now describes the appended note. The Docs bullet names the note. The Verification section gains a 'Patch round 1, head 12f3f09' bullet with this round's gates. It says the union, type-check, eslint, bundle and browser readings were not re-run, because no source or test file changed. The body rewrite asked for --ack-through. The two newer comments on the PR were read and carried into that bullet. The first is the changeset-claim re-read 6077690455: 11806-login-server-unreachable.md names packages/app-shell/README.md, and its sign-up-table paragraph is untouched and still true. The second is the CI Console Performance Budget 6077731629 on b6a003e: PASS, 3163.4 KB against 3204.6 KB. The rewrite went through post-stamped --body=12044 --ack-through=6077731629: 12886 bytes sent and 12886 stored, identical. A full read-back of the body matches byte for byte, with first line 'Fixes #11863' and the session-URL footer kept.",
    "tests": "No vitest, type-check, eslint, bundle or browser run this round: the only change is changeset prose, and no source or test file changed. The b6a003e readings in the round-0 report (comment 6077723448) stand. GATES at 12f3f09 (git rev-parse --short HEAD), each exit 0. check-changeset-presence: '17 source file(s) of 3 released package(s) changed, and this change declares 1 changeset(s): .changeset/11863-studio-search.md'. check-changeset-no-major: 'No changeset declares a major bump.' check:changeset-claims: report-only, the same single reading, 11806-login-server-unreachable.md naming packages/app-shell/README.md. check:pending-changeset-literals: 'No test source names a pending changeset.' check:control-bytes: 'OK (scanned 8189 tracked text file(s); skipped 85 binary)'. check:new-line-citations: its VERDICT line reads '0 new citation(s)', enforcement report-only.",
    "mcp_calls": "0",
    "api_writes": "2 this round, both through the fleet-write relay (repository_dispatch to objectstack-ai/objectstack, executed as objectstack-fleet[bot]): PATCH /repos//issues/12044 (the PR body, via post-stamped --body=12044 --ack-through=6077731629; read back 12886 bytes, identical); POST /repos//issues/11863/comments (this os-dev-report via post-stamped). The first --body attempt was refused before any write (exit 2, an unacknowledged-comments check) and sent nothing. Plus one git push of the branch (not REST).",
    "gates": {
    "head": "12f3f09 (git rev-parse --short HEAD; nothing committed after the gates or the report)",
    "ran": [
    "check-changeset-presence exit 0 ('17 source file(s) of 3 released package(s) changed, and this change declares 1 changeset(s): .changeset/11863-studio-search.md')",
    "check-changeset-no-major exit 0 ('No changeset declares a major bump.')",
    "check:changeset-claims exit 0, report-only: 11806-login-server-unreachable.md names packages/app-shell/README.md; its sign-up-table paragraph is untouched, still true",
    "check:pending-changeset-literals exit 0 ('No test source names a pending changeset.')",
    "check:control-bytes exit 0 ('OK (scanned 8189 tracked text file(s); skipped 85 binary)')",
    "check:new-line-citations exit 0 (its VERDICT line reads '0 new citation(s)', enforcement report-only)"
    ],
    "not_measured": "NOT MEASURED this round, reason: no source or test change, as the patch request directs: the vitest union, packages/i18n and scripts/tests suites, type-check, eslint, check:eager-closure and the browser drive. Their b6a003e readings are in comment 6077723448. The PR's CI on 12f3f09 had not been read at report time."
    },
    "files_changed": [
    ".changeset/11863-studio-header.md"
    ],
    "line_budget": "n/a: the diff touches no skills/** file",
    "deviations": [
    "The worktree was recreated from the remote head b6a003e for this round. After the push it was removed without --force, following rm -rf node_modules.",
    "The patch request named --ack-through only 'if it asks'. It asked (2 unread bot comments), and both were read and carried into the body before acknowledging."
    ],
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  12. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT, Q2: PR #12044 at 12f3f094. Reports 6077723448 (the build) and 6077810878 (patch round 1, the Q1 changeset note). From the domain:spec @ objectui seat (objectui#10217), session session_01CijGnfWLxTLUFcJkY2ouUw, 2026-10-09T09:15Z. Ready and auto-merge follow once every check on this head is green.

    Contract face. The at-tier record 6078001258 on PR #12044 (Served-tier: CONTRACT_REVIEW_TIER, Local-runs: none, isolated subagent) reads PASS on this head, and the seat adopts it.

    • CommandPalette's props become a union discriminated on scope. The app arm keeps every required prop, so no existing call is refused. scope="studio" takes no other prop, and two compile pins hold both directions.
    • @object-ui/i18n gains console.commandPalette.packages and .flows in all ten packs, additive only.
    • The changeset declares @object-ui/app-shell minor, plus @object-ui/i18n and @object-ui/console patch, on Q3's precedent (record 6066636004). Clause-②: yes agrees across the claim, the PR body and the changeset.

    Checked against the PR, not the reports:

    • Draft, base main, first line Fixes #11863, and no other closing keyword in the body. Q2 is the card's last ruled item: Q1 landed as 7ebff399, Q3 as 054fd844.
    • 21 files, each inside the claim's surface. AppHeader.tsx is comment-only, and CommandPaletteProvider.tsx is untouched. Not governed: 0 of 21 paths, 873 changed lines (check-governed-merges).
    • The ruling's shape: Q2 → A with flows. The cross-package flow read the ruling made the condition exists (getItemsByType('flow'), the unscoped read), so C is not invoked. The Home, Organizations and AI frames stay as objectui#11987 left them.
    • Patch round 1, read by diff: b6a003e..12f3f094 adds two lines to .changeset/11863-studio-header.md, an append-only dated note under the Q1 sentence this PR makes false ("No command palette is mounted on /studio…"). The sentence itself is unchanged, in round 12's shape on objectui#6152.
    • Prose face (the record's ① 8, and the seat's read of the changeset, the app-shell README paragraph and the console.md row): each describes the code at this head.
    • Bundle: the budget bot reads 3163.4 KB against the 3204.6 KB ceiling, PASS. The dev's delta is +691 B gzip.
    • CI on 12f3f094 at ACCEPT: 35 success, 3 skipped by design (the two coverage legs and dependabot), and 4 test shards in progress. None has failed. Type Check and Lint are green. The flip waits for the shards.

    Out of scope, one line each:

    • The studio scope lists published objects and flows only, so a draft-only item is not found. That is a stated bound, carried by the changeset. Carrier: none.
    • After a failed fetchPackages, the palette's empty state gives no reason; the landing underneath reports that read's error. A note, carrier none.
    • The pending .changeset/11806-login-server-unreachable.md names packages/app-shell/README.md. Its sign-up-table paragraph is untouched and still true (the bot's 6077690455, the dev's re-read).

    On merge, Fixes #11863 closes the card.

  13. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed, Q2: PR #12044 merged through the merge queue as 5275d1f3. Fixes #11863 closed the card completed, and pm:dispatched is removed in this act. From the domain:spec @ objectui seat (objectui#10217), session session_01CijGnfWLxTLUFcJkY2ouUw, 2026-10-09T09:39Z.

    Verification

    • Merge content matches the PR: the landed commit is single-parent on main, and its git patch-id --stable equals the PR's net diff against its merge base 049012bf (9412ba86082f on both sides).
    • On main, by content: StudioRoute.tsx mounts CommandPalette scope="studio", and the en pack carries console.commandPalette.packages.
    • Reviewed head is the landed head: the at-tier record 6078001258 PASSed 12f3f094, and nothing was pushed after it. The ACCEPT was posted on this card before the flip.
    • No other card closed: the only issue closed at the merge is this one.

    The card, complete:

    • Q1: the console's header on /studio (7ebff399).
    • Q2: search across packages, objects and flows (5275d1f3).
    • Q3: recent packages on the landing (054fd844).

    Next in this lane: objectui#12035, which waited on StudioRoute.tsx and the locale packs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec laneenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions