You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Open Settings over the whole screen, dimming the dock with it
Opening Settings while the orchestrator dock is up laid the dialog into
the chrome region right of the dock and dimmed only that region: the
modal was squeezed into the remaining columns, and the dock stayed at
full brightness beside it — reading as live even though the modal had
already swallowed every key and click bound for it (`dispatch_modal_mouse`
routes the whole mouse channel to Settings while it is open).
That confinement existed only because the dock painted *after* the
modals, so a full-frame modal would have had its left edge overpainted.
Move the full-screen modals (settings, keybinding editor, event-debug
dialog, calibration wizard) into `render_panels_and_modals`, drawn right
after the dock and handed the whole frame — the same treatment the
workspace-trust prompt already gets. They now centre in the full window
and their dim pass covers the dock, the menu bar and the status bar.
Painting the modals that late would have left them out of the terminal
colour-capability conversion, so that pass moves to the very end of
`render`, after every layer. That also fixes the dock itself, which has
been emitting truecolor SGR on 256/16-colour terminals.
Verified interactively in tmux (dock open + Settings, with and without
the dock, narrow and tiny terminals, 256-colour mode) and covered by an
e2e test that fails without the change.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,6 +35,7 @@ Keyboard and mouse input is now parsed by our own `fresh-input-parser` crate ins
35
35
* Dock rows are fully clickable in compact (list) view, ordered by recency, and auto-name themselves from their terminal.
36
36
* Fixed a crash when navigating to an unreachable remote workspace.
37
37
* Searching the dock and then opening one of the matches no longer wipes the search — the filtered list is still there when you come back for the next one. Leaving the dock (`Esc`, clicking the editor) still clears it.
38
+
***Settings opens over the dock**, not beside it - the Settings dialog (and the keybinding editor) now centres on the whole screen and dims the dock along with everything else, instead of being squeezed into the columns right of the dock and leaving it bright, as if it were still live.
38
39
***Tidier workspace cards** - a card is now two rows instead of three: name with its git summary flush right, then the branch with the PR badge flush right. The branch starts at the card's left edge rather than floating mid-row, the empty third row is gone, and a branch that just repeats the workspace name gives its place to the project.
39
40
***Terminal**
40
41
* Scrollback no longer loses output or gets stuck mid-scroll (#2649, reported by @dmknght).
Copy file name to clipboardExpand all lines: docs/internal/rendering-and-layout.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,9 @@ Fresh is an **immediate-mode** TUI: there is no retained widget tree and no dirt
19
19
6. Carve the file-explorer sidebar out of the main content area and paint it.
20
20
7. Fire `lines_changed` plugin hooks for newly-visible lines (lets plugins add overlays *before* the content render).
21
21
8.**Render split content**: a single split-borrow of the active window yields the buffers, the split manager, and the view states, and the split renderer paints every visible leaf into the frame buffer. It returns per-leaf layout caches (split areas, tab layouts, view-line mappings, scrollbar areas, …) stored on the window for the next frame's hit-testing.
22
-
9. Post-content passes: cursor-jump animation, viewport-change hooks, popups, modals, menu bar, status bar, context menus, software cursor, dock/overlay painting, then dimming behind modals.
22
+
9. Post-content passes: cursor-jump animation, viewport-change hooks, popups, menu bar, status bar, context menus, software cursor, frame-buffer animations.
23
+
10. Topmost layers, painted after everything above: the dock into its carved column; then the full-screen modals (settings, keybinding editor, event-debug dialog, calibration wizard), each dimming the *whole* frame behind it — the dock included — and centring in the full window rather than in the chrome beside the dock; then the floating widget panel, the theme-info popup, and the blocking workspace-trust prompt. Modals paint *after* the dock so the dock's own pass cannot overpaint their left edge.
24
+
11. Terminal colour-capability conversion (256/16 fallback) over the finished buffer, so every layer — including the dock, the modals, and animation output — goes through it.
23
25
24
26
### `RenderStyle`, `EditorRenderConfig`, and rendering into an arbitrary buffer
0 commit comments