Skip to content

[epic] Studio design surface layout redesign: one skeleton for the shell and the four pillars (Data, Automations, Interfaces, Access), from the 2026-10-15 design canvas #12446

Closed
26 of 26 issues completed

Description

@objectstack-fleet

Closed: 2026-10-16T06:31Z · every sub-issue closed (26 of 26; summary 6206354798) · on the maintainer's word in seat domain:ui#4's chat, verbatim 「可以,关闭史诗 #12446」
Ruled: 6192878850 · Decision D · letter C (batch #351 record 6203298329) · 2026-10-15T22:14Z

Previous body refresh: the epic PM session at 2026-10-15T09:27Z; this rewrite adds the Ruled: line above and replaces the subscript line only.

Source

The Studio design surface (/_console/studio/app.objectstack.hotcrm/data (the package id, then the pillar segment), packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx and its panels) is the console's metadata-authoring workbench. On 2026-10-15 the maintainer reviewed it in the browser against the HotCRM app (objectui main a2225f91, hotcrm served by objectstack serve --dev) and asked for a layout redesign: the pillars stack a shell header, a pillar-specific second band, an object header that spans the rail, a segmented tab strip and a bordered card before the first row of content; read-only is said in five places; the Automations rail is a flat list of 23 flows; the Interfaces rail shows one kind of entry at a time.

The target is a design canvas of eight artboards (a Claude Design artifact, private to the maintainer): Data Records (writable), Data Form designer, Data Records (read-only package), Automations, Access, Interfaces page designer, Interfaces object entry, Interfaces dashboard entry. Every child card below restates its artboard in words and numbers, so a developer never needs the canvas.

Session

Epic PM session: session_cdb7a717-def7-4e71-9988-f089fbaa18ff (Claude Code desktop, maintainer attending).

Dispatch seat: domain:ui#4, session session_01SJn1GEkrbbBQkhGC26wEDw (os-sales), on the maintainer's instruction in that session's chat, verbatim: 「你负责专题卡的派发 objectui#12446」. It claims and dispatches the seven open children; the epic PM session above keeps #12459 to MERGED.

Territory

Closed and released. Every sub-issue is closed and pm:epic is removed, so these paths are ordinary lane territory again; nothing below is held.

  • packages/app-shell/src/views/studio-design/** — StudioDesignSurface.tsx (shell, DataPillar, AutomationsPillar, InterfacesPillar, AccessPillar), ObjectFormDesigner.tsx, ObjectListViewInspector.tsx, and two new shared files the children introduce (a rail and an inspector shell).
  • packages/app-shell/src/views/metadata-admin/i18n.ts — Studio keys only (engine.studio.*, engine.inspector.appNav.*).
  • Named but not claimed: packages/plugin-grid (the Records toolbar's icon-only buttons) — the Data card touches it only if the toolbar restyle cannot be done from the host.
  • Outside the subtree: the objectstack console pin bump (pnpm objectui:refresh + manifest regeneration) is a follow-up card in objectstack-ai/objectstack once the last child lands. The Console Pin Gate builds and does not boot, so that bump opens the console locally and walks all four pillars.

Rulings

Maintainer, in this session on 2026-10-15, verbatim:

使用 pm-dispatch 技能,创建专题卡,以及具体的子卡片。

流程自动化左侧平铺有点乱,是否建议按对象分类?

界面设计那个你看一下真实的前端界面,而且有很多种菜单类型,仪表盘只是一种。

Design decisions the canvas carries, which every child cites by number:

  1. One skeleton for all four pillars. Rail 240 px → content column (item header row + underline tab row + toolbar + body) → inspector aside 300 px. The pillar-specific second band (Automations "Off by default · review before enabling", Interfaces "Home · Dashboard", Access "Permission matrix · Objects × CRUD") retires; what it said moves into the item header row of the content column.
  2. Shell header, 48 px, a three-column grid. Left: home, then an app chip (24 px app icon tile, package name, chevron). Center: the pillars as a segmented control. Right: Changes with a count badge, Publish. The "·" separator retires.
  3. Type scale and rhythm. 18 / 13 / 12 / 11 px for item title / body / meta / label; rail rows 32 px, table rows 40 px, radius 8 px; the console's existing primary token; no new colors.
  4. Read-only is said twice. A lock with "Read-only" in the app chip, and one "Read-only · Customize with an overlay" link in the item header. Publish drops to an outline disabled button; the rail's add button hides; "Add record" stays because records remain usable.
  5. Rails carry the user's mental model. Automations groups by trigger object; Interfaces shows the app's navigation tree exactly as the shipped sidebar renders it, and "+" offers the ten nav kinds the spec declares.

Open decisions

Three children reverse an earlier ruling or a pinned behavior. Each names it. The maintainer answered all three on 2026-10-15, as designed; the ruling comment on this card quotes the words and states the premise each card re-checks before building. The three cards are dispatched once #12459 lands.

Children

Posted as a checklist comment on this card once the ten exist; each child carries a Parent: line and the shared cards list the pillar cards that depend on them.

Acceptance (epic)

  • Every child merged, each PR carrying before/after screenshots of the same place from the local console (pnpm --filter @object-ui/console dev, port 5180) in light and dark.
  • The four pillars share the skeleton of decision 1 and the header of decision 2; a screenshot per pillar at 1280 px shows the rail, item header, tab row and aside at the same x and y across all four.
  • The follow-up pin bump filed in objectstack-ai/objectstack and linked here.

Body refreshed 2026-10-16T06:31Z by seat domain:ui#4 (session_01SJn1GEkrbbBQkhGC26wEDw), on the maintainer's word 「可以,关闭史诗 #12446」: the Closed line at the top and the Territory section's release note. The director seat's refresh at 2026-10-15T22:14Z (summon 42, session_01AKVFxqmRLqktJspVXwPE9A) added the Ruled line; the epic PM session's earlier refresh is named in the third line of this body.

Activity

  1. added
    enhancementNew feature or request
    pm:epicParent delegated to a dedicated epic PM — other PMs never dispatch into its subtree
    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 15, 2026
  2. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Children (2026-10-15T08:04Z)

    Dispatch order follows the dependency lines on the cards: the shell and the two shared pieces first, then the pillars.

    Shell and shared pieces

    Pillars

    Held on a maintainer decision (see Open decisions above)

    Follow-up outside this subtree: the objectstack console pin bump once the last child lands.

    Epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff; reading time 2026-10-15T08:04Z.

  3. 28 remaining items

  4. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Test-pass cards · 2026-10-15T14:36Z

    Sixteen cards came out of the 2026-10-15 Studio test pass (objectui main d4bc81eab, HotCRM 63db83e2, every surface walked in the maintainer's browser pane). They are queue cards for the domain:ui lane, not children reserved by this epic. Maintainer, in the epic PM session on 2026-10-15, verbatim:

    貌似有一批标签错了,而且未必都需要绑定到epic

    正常让车道队列派发就可以。

    绑定sub-issue 也可以放到车道中开发吗?

    So: every card carries pm:queue (never pm:epic), the lane takes them in its own order, and the Studio ones stay bound here as sub-issues for the roll-up only. The grid card is not bound: its fix lives in packages/plugin-grid and reaches every list (area:records).

    Defects (bug): #12506 grid row height (not bound, area:records) · #12507 flow edge labels (area:workflow) · #12508 /layers 404 and /ai/models 501 · #12509 header overlap below 640 px · #12510 unnamed controls (a11y) · #12511 object header actions.

    Experience (enhancement): #12512 New package form · #12513 Studio home loop · #12514 empty states · #12515 Form Preview of the draft · #12516 field creation · #12517 Publish posture · #12519 navigation edit mode · #12522 page designer · #12524 draft chip placement · #12531 icon picker.

    Not covered by the pass, for a later one: the 1000 px fold, keyboard navigation, the zh locale, new report and dashboard entries, saving the permission matrix, the hook and action create forms. #12450, #12452 and #12454 landed (#12477, #12470, #12481) before the epic PM's acceptance reading; that reading follows on each card.

    Epic PM session session_cdb7a717-def7-4e71-9988-f089fbaa18ff.

  5. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: screenshots do not enter main · recorded by seat domain:ui#4 · 2026-10-15T22:02Z

    The maintainer, in this seat's session (session_01SJn1GEkrbbBQkhGC26wEDw), 2026-10-15, verbatim: 「截图不进 main,统一用证据分支」 ("screenshots do not enter main; use evidence branches throughout").

    What it means for this epic and its test-pass cards:

    • A PR's screenshots (before and after, light and dark) are committed on a separate, never-merged branch claude/issue-N-evidence, under docs/design/studio-redesign/findings/N/. The PR body links each one as a commit-pinned raw URL. The feature branch carries no PNG.
    • The artboards are design sources, not screenshots, and they stay where they are: the *.html and *.png pairs beside this folder's README.md.
    • The README's "What a pull request against a card must show" list is unchanged. The screenshots are still required; they live on the evidence branch.

    What is already on main: 61 screenshots (8.2 MB) under docs/design/studio-redesign/after/.

    They move to an evidence branch and leave main in one cleanup PR, through the card this seat files next. Their history stays reachable at the merge commits that added them.

    Already following it: the cards this seat dispatched since 17:30 (objectui#12519, #12506, #12508 round 2, #12510, #12514, #12515, #12516 and #12522).


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #351 item 1 (this epic's Decision D) · letter C · maintainer 「C (推荐)」 2026-10-15T22:08Z

    Director seat, summon #42, session_01AKVFxqmRLqktJspVXwPE9A. This is the batch record for Decision D, presented in this seat's session on the delta 6191015861; the maintainer's answer takes the recommendation.

    The ruling of record is 6192878850 (seat domain:ui#4, in its own session, the maintainer's 「C 维持现状 (Recommended)」 at 2026-10-15T13:10Z, recorded first; needs-user-decision already off this card). The letters agree; this comment amends nothing in it. One reading added where it is silent: card acceptance 1 of #12450 (the object title's edge equals the row-number edge) is read against the runtime grid and recorded as met or as a named deviation, in the same deviation comment. Decisions A, B and C stand as recorded at 6188626991.

    Workload of the letter: none beyond the deviation comment on #12450. State: unchanged in this act (pm:epic; no six-state label); the body's first line gets a Ruled: line naming 6192878850.

  7. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic summary · every sub-issue closed · seat domain:ui#4 · 2026-10-16T02:01Z

    All 26 sub-issues of this epic are closed: 23 completed, and 3 closed as duplicates of the skeleton.

    group cards how they closed
    Skeleton objectui#12459; objectui#12447, #12448 and #12449 folded into it as duplicates PR objectui#12460
    Design children (the artboards) objectui#12450, #12451, #12452, #12453, #12454, #12455, #12456 PRs objectui#12477, #12501, #12470, #12565, #12481, #12544, #12525
    Test-pass cards (the 2026-10-15 walk) objectui#12507, #12508, #12509, #12510, #12511, #12512, #12513, #12514, #12515, #12516, #12517, #12519, #12522, #12524 PRs objectui#12555, #12560 + #12570, #12549, #12580, #12550, #12551, #12590, #12581, #12576, #12587, #12595, #12566, #12582, #12589
    Other children objectui#12531 closed by its own PR

    Each card carries its ACCEPT, its landing record and a Landed comment with probes on main. Seat post objectui#10243 keeps the itemised ledger.

    Rulings recorded on this epic:

    • Decision D, letter C: preview is the runtime (6192878850).
    • Screenshots do not enter main (6203198157). It is carried out: docs/design/studio-redesign/after/ left main through objectui#12579, and every card since keeps its shots on its own claude/issue-N-evidence branch.

    Outside this epic, still open, each with its own owner:

    Close-out: the protocol's next steps are to close this parent, remove pm:epic and mark the territory section closed. They wait for the maintainer's word in this seat's chat, because the epic PM session and the maintainer own this body.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Epic close-out · seat domain:ui#4 · 2026-10-16T06:31Z

    The maintainer, in this seat's chat, verbatim: 「可以,关闭史诗 #12446」.

    The protocol's four close-out steps:

    1. Every sub-issue closed: 26 of 26 (23 completed, 3 closed as duplicates of the skeleton).
    2. The summary comment: 6206354798.
    3. In this act: the parent closes as completed and pm:epic is removed.
    4. In this act: the body's Territory section is marked closed and released.

    What stays outside the closed parent, unchanged:

    Implemented-by: the children's cloud sessions, listed per card. Closed-by: seat domain:ui#4, session_01SJn1GEkrbbBQkhGC26wEDw.


    Generated by Claude Code

  9. removed
    pm:epicParent delegated to a dedicated epic PM — other PMs never dispatch into its subtree
    on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p2tracking

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions