Skip to content

emrg: GUI layout v0.2 — panels become workspace views - #762

Merged
argszero merged 1 commit into
masterfrom
feature/gui-workspace-views
Aug 13, 2026
Merged

emrg: GUI layout v0.2 — panels become workspace views#762
argszero merged 1 commit into
masterfrom
feature/gui-workspace-views

Conversation

@argszero

Copy link
Copy Markdown
Owner

Summary

Host rejected the v0.1 sidebar-panel design (rant 2026-08-13T18:55:09): panels expanding inside the 264px sidebar left only ~220px usable width, cramping the settings 6-tab / task CRUD / project list. v0.2 switches the whole right workspace area on nav click — same mechanism as session switching (DOM show/hide, state preserved).

Changes

DOM (index.html)

  • #chat-view#workspace (unified term: workspace is the shared parent of session views + panel views)
  • 4 panels (projects/tasks/rants/settings) moved from #sidebar into #workspace: .side-panel.workspace-view, data-panel-bodydata-view; #panel-sessions deleted (sessions = activate current session view)
  • nav items data-paneldata-view

CSS (layout.css)

  • .workspace-view: default display:none; .activedisplay:flex; flex-direction:column; height:100%; overflow-y:auto; padding (fills entire workspace)
  • #workspace: flex:1 / min-width:0 / overflow:hidden
  • removed sidebar .side-panel narrow rules

JS (app.js / chat.js / dialogs.js)

  • SIDE_PANELS/switchPanelVIEWS/switchView; state.activePanelstate.activeView
  • panel view active → hides #composer-wrap / #empty-state / #result-panel / #result-resizer (+ closes HTML preview); session view → restores
  • activateSessionView clears all panel views + nav highlight (mutual exclusion)
  • toggle: clicking the active nav item closes back to the session view

Docs

  • docs/gui-redesign.md v0.2 with host-confirmed terminology (App Shell / Sidebar / Nav / Workspace / Workspace View / Session View)

Verification

  • GUI tests 236/236 (updated to .active semantics + new nav-view test)
  • pytest 801 green, doc-count guard 3/3, node --check clean

Host rejected the v0.1 design where nav clicks expand panels inside the
264px sidebar (~220px usable). v0.2: nav click switches the whole right
workspace area, same mechanism as session switching (DOM show/hide via
.active mutual exclusion, state preserved).

- #chat-view renamed #workspace (shared parent of session views + panel views)
- 4 panels (projects/tasks/rants/settings) moved from #sidebar into #workspace,
  .side-panel -> .workspace-view, data-panel-body -> data-view; #panel-sessions deleted
- nav data-panel -> data-view (sessions = activate current session view)
- switchPanel -> switchView (VIEWS), state.activePanel -> state.activeView
- panel view active: composer + empty-state + result-panel + resizer hidden;
  session view: restored (per-sid state preserved)
- activateSessionView clears all panel views + nav highlight (mutual exclusion)
- docs/gui-redesign.md v0.2 terminology (App Shell / Sidebar / Workspace / Views)
- GUI tests updated to .active semantics + new nav test (236 pass)

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — self-review (1/3). Verified locally: GUI tests 236/236 (nav-view test covers panel activation + mutual exclusion + composer/result-panel hide/restore + toggle-to-session), pytest 801, doc-count 3/3, node --check clean. CI: test + test-windows both PASS. Diff check: #chat-view → #workspace rename consistent across index.html/layout.css/app.js/chat.js; panels moved into #workspace with .workspace-view mutual-exclusion classes; switchView toggle semantics preserved; no .side-panel / chat-view id residue in DOM.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle (2/3). Independent re-review of full diff:

  • Refactor correctness: #chat-view → #workspace rename consistent across index.html/layout.css/app.js/chat.js/dialogs.js/markdown.js; .side-panel → .workspace-view with data-view attributes; #panel-sessions removed (sessions = activate current session view).
  • switchView semantics: toggle-off on same item returns to session view; opening a panel explicitly clears ALL session views + panel views via DOM (not relying on tree order) for mutual exclusion; nav highlight toggled consistently.
  • setWorkspaceChrome("panel") hides composer/empty-state/result-panel/resizer (incl. HTML-preview closePreview call) and restores them on session view — no stuck hidden input.
  • Residue check: grep for data-panel/side-panel/chat-view/panel-sessions/panel-body → 0 hits in renderer code (only CSS comment historical mention).
  • Tests: GUI 236/236 pass locally (new nav-view test covers panel activation + mutual exclusion + chrome hide/restore + toggle-to-session); pytest 801 passed; doc-count guard 3/3; node --check clean.
  • CI: test 31694170177 test+test-windows PASS; MERGEABLE.

Awaiting 3rd ✅ from another cycle.

@pm25coder

Copy link
Copy Markdown
Contributor

I tested PR #762 end-to-end on branch head 6796686 (checkout feature/gui-workspace-views).

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle (3/3). Fresh verification on head 6796686: pytest 801 passed, GUI tests 236/236 passed, node --check clean; grep residue check for side-panel/data-panel/chat-view/panel-sessions in renderer code → 0 hits. CI test + test-windows PASS. Merging.

@argszero
argszero merged commit d664ada into master Aug 13, 2026
2 checks passed
@argszero
argszero deleted the feature/gui-workspace-views branch August 13, 2026 11:13
argszero added a commit that referenced this pull request Aug 13, 2026
…e-view-body CSS (#763)

Follow-up to the GUI layout v0.2 workspace-views merge (#762, rant 18:55:09):

- evolution_prompt.md: add implemented-features quick-ref entry for #762
  (panels → workspace views, terminology, merged d664ada)
- i18n.js: remove 6 dead keys (nav.sessionsPanel/projectsPanel/tasksPanel/
  rantsPanel/settingsPanel + nav.placeholder) — they were only used by the
  deleted .side-panel-title elements from #762; grep-verified zero usages
- layout.css: add .workspace-view-body rule restoring v0.1 .side-panel-body
  visual parity (font-size fs-secondary + color text-3) that the migration
  dropped for the projects/tasks/rants panel content wrappers

Verification: GUI tests 236/236, pytest 801, node --check, import + CLI green

Co-authored-by: EMRG Evolution <emrg@argszero.dev>
argszero added a commit that referenced this pull request Aug 13, 2026
…to session-view scrolls (#764)

Regression from #634 (per-session .session-view scroll containers): #workspace
is overflow:hidden and never scrolls itself, but both scroll listeners were
attached to it in bubble phase. Native scroll events do NOT bubble, so:

- back-to-bottom button never appeared in the real GUI (tests dispatched
  scroll directly on the wrapper, masking the bug)
- scroll-to-top older-history load never fired (same cause)
- returning from a panel view (v0.2 #762) always jumped to bottom, violating
  the rant acceptance "scroll position preserved" (browser-tab semantics)

Fix:
- attach both #workspace scroll listeners with capture: true so child
  .session-view scrolls reach them
- updateBackToBottomState/activeScrollEl helpers read metrics from the
  active .session-view (not the non-scrolling #workspace)
- back-to-bottom click scrolls the active .session-view
- activateSessionView only scrolls to bottom for newly-created containers;
  existing containers preserve their scroll position (panel round-trip / session
  switch no longer jump)
- setWorkspaceChrome hides back-to-bottom in panel views, restores per
  position when returning to session view

Tests: +1 renderer.smoke (back-to-bottom follows session-view scroll via
capture, panel-view hide + position restore on return) — GUI 236→237;
Agent.md count synced; pytest 801 green.

Co-authored-by: EMRG Evolution <emrg@argszero.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants