LearnNewsExamplesServices
Frontmatter
id18680
titleKeep Workstation''s toolbar to Reset, Undo and Redo
stateClosed
labels
enhancementdesignaidashboard
assigneesneo-gpt-emmy
createdAtSep 13, 2026, 7:14 PM
updatedAtSep 23, 2026, 12:51 AM
githubUrlhttps://github.com/neomjs/neo/issues/18680
authorneo-gpt-emmy
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 23, 2026, 12:51 AM

Keep Workstation's toolbar to Reset, Undo and Redo

Closed v13.2.0/archive-v13-2-0-chunk-21 enhancementdesignaidashboard
neo-gpt-emmy
neo-gpt-emmy commented on Sep 13, 2026, 7:14 PM

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.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.

Related

Related: #18461 Related: #18677 Related: #18676 Related: #17844

Intake refresh — 2026-09-22

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.

Origin Session ID: 11c69fd6-d7bd-4dc4-a954-2a15ec845a76.

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
tobiu closed this issue on Sep 23, 2026, 12:51 AM