Settings › Appearance › Layout brings back the three panels as an option beside the grid - #124
Open
davidbudac wants to merge 5 commits into
Open
davidbudac wants to merge 5 commits into
davidbudac wants to merge 5 commits into
Conversation
…, WORKTREES and SESSIONS columns beside the pane, on the grid's own selection - New config key `layout`: `grid` (the default, unchanged) or `panels`. The row cycles live; switching keeps the selected project, worktree and session and whatever the pane has attached. - `panels` draws the three columns from before the grid (ui/panels_view.rs, model in panels.rs) on the cursors the grid already indexes, so there is no second selection. The PROJECTS column stands in for the PROJECT TABS. - Keys: event_loop/panels.rs gives the grid-owned keys their panel meaning (`Space` follow-up, `^F` full screen, `]`/`[` attention walk, `⇧A` folds ARCHIVED) or a line saying they have none here. Rows and group headers take clicks; the wheel scrolls a column without moving its cursor. - `?` with the PANELS up lists the panels' own keys; the grid's help is unchanged. - docs/configuration.md, docs/keys.md and docs/sessions.md follow. Refs AgentSystemLabs#108 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the widths survive a restart - Each column's right border (PROJECTS|WORKTREES, WORKTREES|SESSIONS, SESSIONS|pane) is a drag target: col-resize pointer and a lit grip on hover, a grab offset so the border doesn't jump, no row selected and no FOCUS moved. A column stops at MIN_W, the pane at MIN_PANE_W. - The widths are kept in the saved UI state (`panels_widths`, absent in older blobs); a narrow window still squeezes them for the frame without forgetting them. - The pane's PTY follows the new width through the usual resize. - `?` help, docs/keys.md and docs/sessions.md follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… collapsible columns, the old keys, help and colours, and the inline follow-up - Rows are the old shapes again: 3-row PROJECT buttons, 2-row pills with a full-height rail for checkouts, sessions, PRs and issues. A project row carries its `3 prs · 2 issues` counts and a renamed project's `└ folder`; a merged checkout goes purple with its one-shot sweep; `▶ running`, ` N new` comments, `100+` / `9/12` group counts, the empty WORKTREES hint and the footer's `+N files` are back. - Columns collapse to `▶` rails: a `◀` on each header, ⇧P / ⇧B / ⇧S and ^B / ⌘B / ⇧Z, kept in `hide_projects` / `hide_worktrees` / `hide_sessions`, with remembered widths. SESSIONS folds to its rule under an OPEN PRS or ISSUES row. Saved widths that no longer fit shrink in proportion, each open column held at MIN_W and the pane at MIN_PANE_W. - PANEL_KEYS, panels only and ahead of the keymap: ⇧Tab / ^⇧H / ^⇧L walk, ^→ into the pane without its input, `z` full screen, `m` the row menu, ⇧C a Ghostty tab. The grid keeps its own bindings. - `?` is the old help; the footer ends `m: menu ?: help`; the focused column takes the old per-preset tint; the key echo stays hidden. - Space expands a session pill into the old inline FOLLOW-UP box; RECENT PROMPTS lines return under each pill (`recent_prompts`, `recent_prompts_count`). - Settings › Appearance ends on a PANELS LAYOUT group for these settings, dated so they don't show as NEW to grid users. - Panels start on PROJECTS; switching back to the grid moves FOCUS to SESSIONS so `d` / `r` never land on a column the grid lacks. - docs/keys.md, docs/sessions.md and docs/configuration.md follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts, and full screen refuses cleanly Touches the grid too: - A PR, issue or cloud reader covering a retained attachment no longer lets keys, paste, mouse reports or a pending attach through to the hidden PTY (`App::pane_shows_terminal` / `App::pane_accepts_input`). Page/Home/End scroll the reader from a focused pane. - An archived agent is refused with a flash instead of attaching (`App::is_archived_session`, replacing three inlined checks). - Full screen works on any terminal surface, exited output and starting sessions included, and otherwise refuses with one message; the KEY COMBO DISPLAY only says "Full screen" when it happened. Panels only: - Activating a checkout walks past a folded SESSIONS; the quick prompt targets the visible checkout and carries a selected PR or issue. - A click elsewhere breaks a session row's double-click. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- panels: three launches beside PROJECTS | WORKTREES | SESSIONS. - panels-drag / panels-drag-floor: borders dragged, and the pane's floor. - panels-rails / panels-pr-fold: folded columns and the SESSIONS fold. - panels-follow-up / panels-recent-prompts / panels-settings-recent-prompts: the inline follow-up and recent prompts. - panels-restart: the dragged widths after nebula restarts, via the harness's new `RESTART=1`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Hi Cody, this took surprisingly long and a lot of effort. I was aiming for a simple switch in the settings which I think I achieved. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings back the PROJECTS | WORKTREES | SESSIONS columns from before 0.34 as an opt-in layout.
Settings › Appearance › Layoutgetspanelsnext togrid, andgridstays the default. This addresses #108 and supersedes #122, which I closed to rework it into this smaller, reviewable series.Contents: 📸 Screenshots · ✨ What you get · 🧭 What changes for grid users ·⚠️ Risk · 🔧 Technical overview
📸 Screenshots
✨ What you get
grid(default) orpanelslayoutinconfig.json; the setting switches live, no restart?help and keys (⇧Tab/^⇧H/^⇧Lwalk,zfull screen,mrow menu)Spaceopens the inline follow-up box on a session; recent prompts show under each one⇧P/⇧B/⇧Sfold a column to a rail; a window too narrow for the saved widths shrinks them proportionallySettings › Appearance.🧭 What changes for grid users
One commit (
The pane only takes input when it shows a live session…) changes shared code. The panels needed these fixes, and the same holes exist in the grid:PgUp/PgDn/Home/Endscroll the reader.The commit is self-contained, so I can split it into its own PR if you prefer.
Verdict: 🟢 Low. Everything new is behind
layout = panels, and the shared changes only make the pane refuse input in more cases.ClientRequest, daemon code or protocol change. Two additive config/UI-state keys (layout,panels_widths); older files read as before.layout = panels.panels.rsmodel,event_loop/panels.rskeys,ui/panels_view.rsdraw). Shared files getpanels_active()branches and the input gate above.Rollback:
git revertthe merge removes everything. Savedlayout/panels_widthskeys are then ignored, and thehide_*/recent_prompts*settings return to being retired-but-preserved.🔧 Technical overview
Commits, files, tests
Size: about 6,300 added lines, of which roughly 2,500 are tests and 400 are docs and screenshot scenes.
Five commits, each builds on its own:
make shot SCENE=panels…, plusRESTART=1inshot.shfor the restart scene)Where to start reading:
crates/nebula-tui/src/panels.rshas the layout maths (columns()) and the row model.event_loop/panels.rsroutes keys and mouse ahead of the grid's keymap only whenapp.panels_active(). Inapp.rs,pane_shows_terminal/pane_accepts_inputare the shared gate.Not done: workspaces. They were removed alongside the old panels, but this PR is only the layout.
Gate:
cargo fmt --checkis clean.cargo clippyadds no warnings; the 11 it reports also appear onmainwith a current toolchain.cargo test --workspace: 1772 passed, 4 failed. The same 4 fail onmainon my machine (Linux):question_mark_ignores_menus_without_session_rows,the_harness_picker_is_no_wider_than_its_rows_and_keeps_its_keys_in_the_footer,nebula_open_from_inside_a_session_raises_the_file_tabsandtui_drag_past_the_pane_top_autoscrolls_and_copies_the_run. A fewbranch_switch/ipctests also fail intermittently here; this PR doesn't touch those files. New coverage: ~75 unit tests (layout maths, drag floors, folds, persistence, follow-up, the input gate in both layouts) and 2 e2e tests (switching the layout live, and walking the columns).Closes #108
🤖 Generated with Claude Code