Settings › Appearance › Layout brings the three panels back as an option beside the grid - #122
Closed
davidbudac wants to merge 3 commits into
Closed
davidbudac wants to merge 3 commits into
davidbudac wants to merge 3 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: the panel walk that was kept under the grid is reachable again; event_loop/panels.rs gives the grid-owned keys their panel meaning (`Space` follow-up modal, `^F` full screen, `]`/`[` attention walk, `⇧A` folds ARCHIVED) or a line saying they have none here. Rows and group headers take clicks. - Column widths are fixed for now; splitters, rails and wheel scrolling are follow-ups. - docs/configuration.md, docs/keys.md and docs/sessions.md follow, and a `panels` screenshot scene. Refs AgentSystemLabs#108 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…olumn under a cursor that stays put - `?` with the PANELS up describes the columns — the walk, Enter, Space, `^F`, `⇧A`, the attention walk — in place of the grid's cards and tabs; the grid's help is unchanged. - A wheel notch over a column longer than the screen scrolls it three lines, held at its ends, without moving the cursor, FOCUS or the pane's session, as the grid's wheel does. The next move of that column's cursor brings it back on screen (`panels::ColumnScroll`). - docs/keys.md follows. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
The grid replaced the three panels in 0.34 and some people want the columns back;
Settings › Appearance › Layoutnow switches between the GRID and the PANELS, live, with the grid still the default.Contents: 1. The problem · 2. What changed · 3. How it looks · 4. How it works · 5. Risk · 6. Technical overview · 7. Notes
1. The problem
0.34 made the GRID the whole screen and removed the PROJECTS | WORKTREES | SESSIONS columns. The list layout (
worktree_layout) helped, but #108 asks for the columns themselves, and so does a second reader there.2. What changed
Settings › Appearance › Layout:grid(default) orpanels;layoutinconfig.jsonOPEN PRSandISSUES, each folding on a clickRECENT,TERMINALS,PULL REQUESTSand a foldedARCHIVEDgroupproject ▸ worktree ▸ sessionh/landTabcross the columns,j/kwalk a column,Enterdrills in and attachesSpaceopens the FOLLOW-UP MODAL,^Ffull-screens,Shift+AfoldsARCHIVED,]/[walk attentionx,1–9,+,`and^`have nothing to act on and the footer says soEnter; the wheel scrolls a column under a cursor that stays put, as the grid's does?lists the panels' keys while the panels are uplayoutatgrid— or absent — nothing draws or answers differently: every branch this adds testsApp::panels.Settings › Hotkeyshints still use the grid's wordsARCHIVEDopen state is shared, so leaving it open in the panels shows the archived list back on the grid3. How it looks
api-server, the SESSIONS cursor on the one asking a question, live in the pane?with the panels up: THE COLUMNS in place of the grid's cards and tabsCaptured with
make shot SCENE=panels(andKEYS="?") at 190x50, rendered on Linux with DejaVu Sans Mono because the harness's Menlo path is macOS-only.4. How it works
5. Risk
Verdict: 🟢 Low risk — TUI only and opt-in; the grid's paths gain one boolean test each.
ClientRequest, no PROTOCOL VERSION bump, no DAEMON, store or hook change, no new file written; one new string key inconfig.jsonApp::panelstest indraw_screen,handle_key, the wheel arm anddraw_terminal; a panels frame builds three short line lists from the lists the grid already indexesworktree_layoutsetting and thelauncher/launcher_viewmodule split, but it makesFocus::Projects/Focus::Worktreesand their key arms reachable again — the code #91's follow-up meant to delete — and the panels' help repeats about 25 lines of the grid's help text rather than restructure its tablesRollback:
git revertof the three commits; alayoutkey already written to aconfig.jsonis not removed by the revert.6. Technical overview
layoutresolves toApp::panelsinapply_config.App::launcher_grid()gains&& !self.panels, which by itself routes keys past the grid's handler to the panel matchhandle_keykept;App::panels_active()picks the draw. Both layouts read the same three cursors, so there is no second selection to keep in step.App::panels_scrollholds oneColumnScrollper column for the wheel.crates/nebula-tui/src/panels.rs— the model: column widths, each column's lines,ColumnScroll;crates/nebula-tui/src/ui/panels_view.rs— the drawing, hit targets and the panels' help sections;crates/nebula-tui/src/event_loop/panels.rs— the grid-owned keys' panel meaning, row clicks, the wheel, 15 tests;crates/nebula-tui/src/config.rs— thelayoutkey and its Appearance row;app.rs,ui.rs,event_loop.rs— branch points only, 93 added lines between them.worktree_layoutvalue. That row lays out a band inside the grid; the panels replace the PROJECT TABS and the grid together.cargo fmt --all -- --checkclean.cargo clippy -p nebula-tui --all-targets: 10 warnings, all on lines this does not touch, the same onmain. Tests:cargo test --workspace --no-fail-faston Linux: every suite passes (e2e_pty29/29, nebula-daemon 304, nebula-core 33, nebula-tui lib 1257) except three tests that fail the same way without this branch —e2e_tui'stui_drag_past_the_pane_top_autoscrolls_and_copies_the_runandnebula_open_from_inside_a_session_raises_the_file_tabsfail onmainat0f98b95too, and one of nebula-tui'sipc::tests::kill_stops_a_skewed_daemon_whose_pidfile_is_gone/branch_switchgit tests fails intermittently under a parallel run and passes alone. Two more lib tests (question_mark_ignores_menus_without_session_rows,the_harness_picker_is_no_wider_than_its_rows_and_keeps_its_keys_in_the_footer) fail when the suite runs inside an SSH session, onmainas well. Not run on macOS.7. Notes
v0.42.0; no conflicts withmainat0f98b95.layout_defaults_to_the_grid_cycles_and_persistsinconfig.rs, and two ine2e_tui.rs(tui_panels_walk_projects_worktrees_and_sessions,tui_layout_setting_switches_grid_and_panels_live).docs/configuration.md,docs/keys.mdanddocs/sessions.mdfollow; apanelsscene joins the SCREENSHOT HARNESS.🤖 Generated with Claude Code