The operator rejected Workstation's expanded topology toolbar on 2026-09-13: Save workspace, Close workspace and per-window Open/Show controls occupy multiple rows and dominate the docking surface. The requested product surface is Reset to default, Undo and Redo. The operator renewed this polish lane on 2026-09-22. The earlier transition parking is lifted for this bounded consumer change; current popup, history and persistence journeys remain its validation gate.
The Problem
The toolbar grows with every popup because WorkspaceController observes WorkspaceSet membership and creates two recovery buttons per participant. Native window close, automatic transaction persistence and the pane's existing pop-out action already supply the intended interactions; the app should not duplicate those controls across an expanding toolbar.
The Architectural Reality
At composition draft PR #18677 (921118d447), apps/workstation/view/TopologyToolbar.mjs owns the static buttons and state readout. WorkspaceController.syncTopologyBar() inserts the per-window buttons, and onComponentConstructed() subscribes to membership. Workspace.syncTopologyState() and its boot/projection hooks exist for the window-count readout. resources/scss/src/apps/workstation/Workspace.scss styles that readout.
Automatic persistence already belongs to TopologyLibrary.attachGroup(): its Group commit listener calls persistCurrent(). Existing persistence/adoption APIs must be distinguished from the toolbar-only handlers before deleting code.
The Fix
Keep only Reset to default, Undo and Redo in the topology toolbar, including the live history badges. Per the operator's 2026-09-23 composition refinement, render two rows: tour/theme above, live store statistics beside the three layout controls below. Reuse the existing view owners and one consistent background. Remove Save/Close, per-window Open/Show controls and the extra topology readout. Remove their UI-only handlers, membership subscription, readout publisher and unused styling. Preserve reset and live history bindings, normal persistence, native close and pane pop-out. Update the app README, the assertions which encoded the removed UI, and the passages in learn/guides/uibuildingblocks/DockLayoutsWindows.md that teach it.
Contract Ledger Matrix
Surface
Authority
Behavior
Fallback
Docs
Evidence
Topology toolbar
Operator product correction
Exactly Reset to default, Undo, Redo; popup membership adds no controls
Existing disabled states when actions are unavailable
Workstation README
Live screenshots before/after popup creation and unit control-count assertion
Existing app workflows
Group persistence and native/pane controls
Persist commits automatically; use native close and pane pop-out
Existing engine refusal/recovery semantics
README
Existing saved-layout and pop-out journeys
Decision Record impact
None: bounded consumer presentation correction; no engine or persistence contract redesign.
Acceptance Criteria
The topology toolbar contains only Reset to default, Undo and Redo, before and after creating or restoring multiple popup participants. The app has two visual control rows: tour/theme, then stats and layout controls with a consistent skin.
Reset restores the declared default; Undo/Redo enabled states and history counts remain reactive and operable.
Toolbar-only recovery handlers, membership observation and readout state/style are removed, without deleting APIs still used by boot, persistence or other consumers.
Automatic persistence, native close and pane pop-out keep working; no replacement Save/Close/Open surface is introduced elsewhere as part of this change. Native close and cold hydrate retain headless participants; the user-facing recovery is Reset to the shipped arrangement (or Undo while warm history exists). Layout-preserving open/mount remains programmatic. No automatic inline recovery or window-lifecycle policy change is included.
README, relevant tests and learn/guides/uibuildingblocks/DockLayoutsWindows.md describe the corrected UI. The guide teaches the per-window Open … as window / Show … here buttons in stations two and three, Show here as a road home in station five, and popups offering themselves as windows in station six. A live main-window screenshot with at least two popups demonstrates that toolbar height no longer grows with membership.
Out of Scope
Multi-window transition repair (higher priority), engine changes, deleting storage/recovery APIs merely because their toolbar buttons disappear, or a broader visual redesign beyond the requested two-row composition.
Avoided Traps
Do not hide the same buttons in an unsolicited menu, replace them with icons, or retain a membership-driven hidden subtree. Do not mistake removing manual-save UI for removing automatic persistence. Do not turn this deferred correction into a blocker for the transition repair.
valid-as-written for the UI reduction on dev@e66b6f8142b26ad45eac6351ec8f7ca4ddd79a93. Created 2026-09-13; last substantive update 2026-09-19; pre-stale under the 90-day workflow, with neither stale nor no-auto-close label. No parent or open blocker edge; current open PR and latest-30 issue sweeps found no duplicate toolbar reduction. The composition and later open-window URL repair have landed; neither removes these controls.
Prescription checked: apps/workstation/view/TopologyToolbar.mjs and WorkspaceController.mjs own the concern. src/Neo.mjs, src/core/Base.mjs and src/state/Provider.mjs confirm that retained history/perspective bindings need no app-owned publication. Remove the unused UI wrappers and readout path; retain the underlying save, native close, open and mount commands and their behavioral coverage. This deletes consumer machinery and adds no engine layer.
The earlier parked transition residual #18731 is closed through merged #18752. Its parent records the three-arm native overlap receipt at https://github.com/neomjs/neo/issues/18303#issuecomment-5686671628. This is historical evidence for resuming, not a claim that the whole open epic is complete. Current native validation accompanies this change.
Prior decision recovered from Memory Core fd9aa8e3-35ab-465c-aee1-e1f106473df2, session 11c69fd6-d7bd-4dc4-a954-2a15ec845a76. Knowledge Base discovery intentionally skipped under the operator's current staleness warning; live GitHub, source and Memory Core supplied the intake.
Creation checks: live latest-20 open issues and recent all-read-state A2A claims checked immediately before filing; no equivalent. Same-surface own assignments 18461 and 18456 read: composition/refactoring, without this new operator-requested UI reduction. MC query “Workstation toolbar crowded save close open windows” surfaced earlier close/save work, not an existing reduction decision. Labels verified. Six-stage check: screenshot + source confirm the symptom; the app view/controller own the controls; humans consume the UI; no service-boundary change or new module is prescribed.
Retrieval Hint: Workstation overloaded toolbar, remove Save Close Open Show, retain Reset Undo Redo; PR 18677 at 921118d447 holds the focused toolbar owner.
tobiu referenced in commit 7c1c7cb - "fix(workstation): compose two compact toolbar rows (#18680) (#19054)" on Sep 23, 2026, 12:51 AM
Context
The operator rejected Workstation's expanded topology toolbar on 2026-09-13: Save workspace, Close workspace and per-window Open/Show controls occupy multiple rows and dominate the docking surface. The requested product surface is Reset to default, Undo and Redo. The operator renewed this polish lane on 2026-09-22. The earlier transition parking is lifted for this bounded consumer change; current popup, history and persistence journeys remain its validation gate.
The Problem
The toolbar grows with every popup because WorkspaceController observes WorkspaceSet membership and creates two recovery buttons per participant. Native window close, automatic transaction persistence and the pane's existing pop-out action already supply the intended interactions; the app should not duplicate those controls across an expanding toolbar.
The Architectural Reality
At composition draft PR #18677 (
921118d447),apps/workstation/view/TopologyToolbar.mjsowns the static buttons and state readout.WorkspaceController.syncTopologyBar()inserts the per-window buttons, andonComponentConstructed()subscribes to membership.Workspace.syncTopologyState()and its boot/projection hooks exist for the window-count readout.resources/scss/src/apps/workstation/Workspace.scssstyles that readout.Automatic persistence already belongs to
TopologyLibrary.attachGroup(): its Group commit listener callspersistCurrent(). Existing persistence/adoption APIs must be distinguished from the toolbar-only handlers before deleting code.The Fix
Keep only Reset to default, Undo and Redo in the topology toolbar, including the live history badges. Per the operator's 2026-09-23 composition refinement, render two rows: tour/theme above, live store statistics beside the three layout controls below. Reuse the existing view owners and one consistent background. Remove Save/Close, per-window Open/Show controls and the extra topology readout. Remove their UI-only handlers, membership subscription, readout publisher and unused styling. Preserve reset and live history bindings, normal persistence, native close and pane pop-out. Update the app README, the assertions which encoded the removed UI, and the passages in
learn/guides/uibuildingblocks/DockLayoutsWindows.mdthat teach it.Contract Ledger Matrix
Decision Record impact
None: bounded consumer presentation correction; no engine or persistence contract redesign.
Acceptance Criteria
learn/guides/uibuildingblocks/DockLayoutsWindows.mddescribe the corrected UI. The guide teaches the per-windowOpen … as window/Show … herebuttons in stations two and three, Show here as a road home in station five, and popups offering themselves as windows in station six. A live main-window screenshot with at least two popups demonstrates that toolbar height no longer grows with membership.Out of Scope
Multi-window transition repair (higher priority), engine changes, deleting storage/recovery APIs merely because their toolbar buttons disappear, or a broader visual redesign beyond the requested two-row composition.
Avoided Traps
Do not hide the same buttons in an unsolicited menu, replace them with icons, or retain a membership-driven hidden subtree. Do not mistake removing manual-save UI for removing automatic persistence. Do not turn this deferred correction into a blocker for the transition repair.
Related
Related: #18461 Related: #18677 Related: #18676 Related: #17844
Intake refresh — 2026-09-22
valid-as-writtenfor the UI reduction ondev@e66b6f8142b26ad45eac6351ec8f7ca4ddd79a93. Created 2026-09-13; last substantive update 2026-09-19; pre-stale under the 90-day workflow, with neither stale nor no-auto-close label. No parent or open blocker edge; current open PR and latest-30 issue sweeps found no duplicate toolbar reduction. The composition and later open-window URL repair have landed; neither removes these controls.Prescription checked:
apps/workstation/view/TopologyToolbar.mjsandWorkspaceController.mjsown the concern.src/Neo.mjs,src/core/Base.mjsandsrc/state/Provider.mjsconfirm that retained history/perspective bindings need no app-owned publication. Remove the unused UI wrappers and readout path; retain the underlying save, native close, open and mount commands and their behavioral coverage. This deletes consumer machinery and adds no engine layer.The earlier parked transition residual #18731 is closed through merged #18752. Its parent records the three-arm native overlap receipt at https://github.com/neomjs/neo/issues/18303#issuecomment-5686671628. This is historical evidence for resuming, not a claim that the whole open epic is complete. Current native validation accompanies this change.
Prior decision recovered from Memory Core
fd9aa8e3-35ab-465c-aee1-e1f106473df2, session11c69fd6-d7bd-4dc4-a954-2a15ec845a76. Knowledge Base discovery intentionally skipped under the operator's current staleness warning; live GitHub, source and Memory Core supplied the intake.Creation checks: live latest-20 open issues and recent all-read-state A2A claims checked immediately before filing; no equivalent. Same-surface own assignments
18461and18456read: composition/refactoring, without this new operator-requested UI reduction. MC query “Workstation toolbar crowded save close open windows” surfaced earlier close/save work, not an existing reduction decision. Labels verified. Six-stage check: screenshot + source confirm the symptom; the app view/controller own the controls; humans consume the UI; no service-boundary change or new module is prescribed.Origin Session ID: 11c69fd6-d7bd-4dc4-a954-2a15ec845a76.
Retrieval Hint: Workstation overloaded toolbar, remove Save Close Open Show, retain Reset Undo Redo; PR
18677at921118d447holds the focused toolbar owner.