This commit is contained in:
+14
-12
@@ -71,21 +71,23 @@ shutdown against ordered raw-byte output. The GPUI slice feeds one actor session
|
||||
through the terminal engine while five surfaces retain deterministic comparison
|
||||
output. Its adapter groups adjacent cells into native GPUI paint runs and renders
|
||||
ANSI/indexed/RGB colors, emphasis, hyperlinks, and cursor shapes. Window geometry
|
||||
drives terminal rows and columns and resizes both the engine and PTY. Selection,
|
||||
scrollback navigation, mouse reporting, and a lower-level terminal canvas remain.
|
||||
This actor still runs in-process; moving the same framework-neutral
|
||||
contract behind local authenticated IPC is the next durability step. See
|
||||
decisions 0004 and 0005.
|
||||
drives terminal rows and columns and resizes both the engine and PTY. The engine
|
||||
now exposes retained-history offsets and page/top/bottom viewport movement
|
||||
without writing scroll keys to the PTY. Text selection, mouse reporting, and a
|
||||
lower-level terminal canvas remain. This actor still runs in-process; moving the
|
||||
same framework-neutral contract behind local authenticated IPC is the next
|
||||
durability step. See decisions 0004 and 0005.
|
||||
|
||||
## Default workspace composition
|
||||
|
||||
The default desktop workspace is a vertical 3×1 composition: the top 20% holds
|
||||
pane, agent, tool, context, and goal state; the middle 60% is the active terminal
|
||||
or work surface; the bottom 20% is the answer, choice, chat, and approval shelf.
|
||||
Six deterministic surfaces still update in the spike so performance comparisons
|
||||
remain meaningful, but only the selected surface owns the large work region.
|
||||
Users may deliberately split that region later; a dashboard grid is not the
|
||||
calm default. See decision 0008.
|
||||
The default desktop workspace has three horizontal bands: the top 20% holds pane,
|
||||
agent, tool, context, and goal state; the middle 60% holds responsive vertical
|
||||
work lanes; and the bottom 20% is the answer, choice, chat, and approval shelf.
|
||||
The work region shows one lane in compact windows, three at normal desktop
|
||||
widths, and five on a 3440 px ultrawide. The selected lane alone owns keyboard
|
||||
input. Six surfaces continue updating so performance comparisons remain
|
||||
meaningful, with a sliding visible window keeping the selected pane onscreen.
|
||||
See decisions 0008 and 0009.
|
||||
|
||||
We should evaluate, not blindly copy, WezTerm, Zellij, RMUX, tmux, and cmux. The
|
||||
first spike must compare a reusable terminal crate with a small first-party layer.
|
||||
|
||||
@@ -66,11 +66,13 @@ surface change never silently launches a process, moves the pane to another
|
||||
host, or changes which agent owns the session. Unsupported surfaces are shown as
|
||||
unavailable rather than simulated.
|
||||
|
||||
The default workspace is a 3×1 vertical composition: the top 20% shows context,
|
||||
pane/agent state, tools, and goal; the middle 60% is the selected terminal or
|
||||
work surface; the bottom 20% is the decision shelf. Multiple panes may continue
|
||||
working offscreen and remain one shortcut away. Explicit split and dashboard
|
||||
layouts remain supported, but they do not displace the primary-terminal default.
|
||||
The default workspace has three horizontal bands: the top 20% shows context,
|
||||
pane/agent state, tools, and goal; the middle 60% is a responsive set of vertical
|
||||
work lanes; and the bottom 20% is the decision shelf. The work band shows one
|
||||
lane in compact windows, three at normal desktop widths, and up to five on an
|
||||
ultrawide display. One lane owns keyboard input at a time, and selecting a lane
|
||||
never pauses the others. Explicit split trees and dashboard layouts remain
|
||||
supported, but they do not displace this terminal-first default.
|
||||
|
||||
An optional decision shelf sits below the active work surface. It may show an
|
||||
answer draft, two or three concrete choices, why each was suggested, and the
|
||||
|
||||
+8
-4
@@ -118,10 +118,14 @@ who already have the final cargo-watch release installed.
|
||||
blocked OSC 52 behavior, key encoding, application-cursor mode, and resize.
|
||||
- `lumbridge-core` tests capability-gated split/select/rename/close commands,
|
||||
idempotent request IDs, close-tree promotion, and atomic agentic setup plans.
|
||||
- The GPUI slice tests its key-event adapter, 20/60/20 geometry-to-PTY sizing,
|
||||
xterm 256-color conversion, styled-run coalescing, and cursor-run boundaries.
|
||||
It renders one real actor-owned VT session while five surfaces continue their
|
||||
deterministic background workload.
|
||||
- The GPUI slice tests its key-event adapter, responsive one/three/five-lane
|
||||
geometry, selected-pane lane windowing, 20/60/20 geometry-to-PTY sizing, xterm
|
||||
256-color conversion, styled-run coalescing, cursor-run boundaries, and
|
||||
scrollback shortcut routing. It renders one real actor-owned VT session while
|
||||
five surfaces continue their deterministic background workload.
|
||||
- `lumbridge-terminal` retains 10,000 history lines by default and tests
|
||||
framework-neutral page/top/bottom viewport movement, revision changes, and
|
||||
live-bottom no-ops without sending history-navigation bytes to the child PTY.
|
||||
- The current-GPUI probe compile-checks real AccessKit element wiring and real
|
||||
platform input-handler installation. Unit tests cover its semantic tree and
|
||||
UTF-16/UTF-8 composed-text mutations. OS screen readers, IME candidate windows,
|
||||
|
||||
@@ -24,9 +24,9 @@ from macOS and Linux and the hard gates pass.
|
||||
The current programs establish dependency, build, launch, and interaction
|
||||
baselines. GPUI now routes a real PTY through a VT engine and keyboard encoder,
|
||||
paints coalesced styled cell runs and cursor shapes, and derives PTY rows/columns
|
||||
from its 60% terminal band when the window changes. Selection, scrollback
|
||||
navigation, mouse modes, a native Markdown editor, and one isolated browser child
|
||||
remain.
|
||||
from its responsive one/three/five-lane 60% terminal band when the window
|
||||
changes. Retained-history page/top/bottom navigation is wired. Text selection,
|
||||
mouse modes, a native Markdown editor, and one isolated browser child remain.
|
||||
|
||||
## Ubuntu baseline — metal, 2026-08-31
|
||||
|
||||
@@ -87,9 +87,9 @@ fallback.
|
||||
## Measurement semantics
|
||||
|
||||
Both renderers retain the same all-deterministic six-surface action stream for
|
||||
comparison. GPUI now presents the selected surface in a 20/60/20 vertical
|
||||
workspace while one terminal fixture is replaced with a real actor-owned VT
|
||||
session and five deterministic surfaces keep running offscreen. Counters
|
||||
comparison. GPUI now presents a 20/60/20 workspace whose middle band shows one,
|
||||
three, or five vertical work lanes while one terminal fixture is replaced with a
|
||||
real actor-owned VT session and five deterministic surfaces keep running. Counters
|
||||
separate external PTY batches/lines from total model updates. The GPUI footer
|
||||
reports dispatch-to-element-build p50/p95 over a bounded 256-sample window. It
|
||||
is deliberately not called key-to-present or frame-present latency: neither
|
||||
|
||||
+18
-12
@@ -10,12 +10,14 @@ framework decision gate, not a decorative dashboard.
|
||||
## Current-run audit
|
||||
|
||||
The first 2026-08-31 GPUI baseline proved six-surface density but gave every
|
||||
pane equal visual priority. The current slice replaces that dashboard with a
|
||||
3×1 default: 20% context and pane selection, 60% active work surface, and 20%
|
||||
decision shelf. Keyboard focus, command-palette input, live PTY input, styled VT
|
||||
cells, cursor shapes, and geometry-driven resize are wired. Remaining visible
|
||||
gaps are terminal selection/scrollback, real decision-shelf actions, usage-detail
|
||||
provenance, and end-to-end platform accessibility/IME.
|
||||
pane equal visual priority. The current slice replaces that dashboard with three
|
||||
horizontal bands: 20% context and pane selection, a 60% responsive work region,
|
||||
and a 20% decision shelf. The work region shows one, three, or five vertical
|
||||
lanes according to available width. Keyboard focus, command-palette input, live
|
||||
PTY input, styled VT cells, cursor shapes, geometry-driven resize, and retained-
|
||||
history navigation are wired. Remaining visible gaps are terminal text selection
|
||||
and mouse modes, real decision-shelf actions, usage-detail provenance, and end-to-
|
||||
end platform accessibility/IME.
|
||||
|
||||
Screenshots for the audit are stored outside Git under
|
||||
`~/shots/2026-08/lumbridge-ui-audit/`. Accessibility and IME correctness cannot
|
||||
@@ -40,8 +42,8 @@ research, not source assets for Lumbridge. We adapt these interaction patterns:
|
||||
cards;
|
||||
- a quiet top tab strip for mixed terminal, Markdown, browser, and review
|
||||
surfaces;
|
||||
- one primary work surface with optional splits, instead of forcing every
|
||||
surface into an equal dashboard tile;
|
||||
- a primary work region with a small responsive number of equal vertical lanes,
|
||||
instead of either one ultrawide terminal or a dense equal-card dashboard;
|
||||
- narrow contextual tools, such as files, review, or Buzz, that can collapse
|
||||
when the terminal needs the space;
|
||||
- usage and agent state at the edge of the workspace rather than in modal
|
||||
@@ -62,8 +64,9 @@ surface rather than a hosted Lumbridge control plane.
|
||||
the selected pane receives the accent treatment.
|
||||
4. A waiting pane uses an amber semantic label in both the context band and
|
||||
attention sidebar. The label always includes words such as `NEEDS INPUT`.
|
||||
5. The middle 60% gives the selected terminal or work surface uninterrupted
|
||||
reading space and retains target, harness state, dimensions, and surface tabs.
|
||||
5. The middle 60% gives one, three, or five terminal/work lanes uninterrupted
|
||||
height and retains target, harness state, dimensions, and surface tabs. The
|
||||
selected lane alone owns keyboard input.
|
||||
6. The footer groups connection state, selected-harness identity, usage-window
|
||||
provenance, and burn forecast into readable regions.
|
||||
7. The selected pane has a quiet surface strip for Terminal, Browser, Tools,
|
||||
@@ -79,6 +82,8 @@ surface rather than a hosted Lumbridge control plane.
|
||||
- `Alt+1` through `Alt+6`: focus a pane directly while leaving terminal digits
|
||||
available to the PTY.
|
||||
- `Cmd+K` on macOS or `Ctrl+K` on Linux: open the command palette.
|
||||
- `Shift+PageUp/PageDown`: move the selected live terminal through retained
|
||||
history; `Shift+Home/End` jumps to the history top/live bottom.
|
||||
- Typing while the palette is open changes its query; arrows change the result;
|
||||
`Enter` runs it; `Escape` closes it and restores pane focus.
|
||||
- `Enter` on a waiting agent opens its request detail. Approval remains a
|
||||
@@ -92,8 +97,9 @@ receive the same state transitions and tests.
|
||||
|
||||
- In the first actor integration, one terminal pane consumes ordered output from
|
||||
a real local PTY while each deterministic tick updates the other five
|
||||
surfaces offscreen. The all-deterministic constructor remains available for
|
||||
framework comparison and replay tests.
|
||||
surfaces. One, three, or five are visible according to available width; the
|
||||
all-deterministic constructor remains available for framework comparison and
|
||||
replay tests.
|
||||
- One pane enters and leaves `needs input` through a deterministic event.
|
||||
- Markdown, browser-boundary, and review panes update counters without using a
|
||||
web application shell.
|
||||
|
||||
@@ -2,22 +2,21 @@
|
||||
|
||||
Status: accepted for the native vertical slice.
|
||||
|
||||
Lumbridge defaults to three vertical bands in one column. The top 20% exposes
|
||||
Lumbridge defaults to three horizontal bands in one column. The top 20% exposes
|
||||
pane, agent, tools, context, goal, target, and attention state. The middle 60%
|
||||
belongs to the active terminal or work surface. The bottom 20% holds answers,
|
||||
choices, chat, approvals, and the local-analyst boundary.
|
||||
is the terminal-first work region. The bottom 20% holds answers, choices, chat,
|
||||
approvals, and the local-analyst boundary.
|
||||
|
||||
This composition favors the surface where engineers type and read for most of
|
||||
the day. It keeps context and decisions visible without making six equally sized
|
||||
cards compete for attention. Pane selectors and keyboard shortcuts switch the
|
||||
large work surface. Users may later create deliberate splits or dashboard grids,
|
||||
but those are workspace choices rather than the default visual hierarchy.
|
||||
This composition favors the region where engineers type and read for most of the
|
||||
day. It keeps context and decisions visible without making every surface a small
|
||||
dashboard card. The middle region may contain a responsive number of vertical
|
||||
work lanes under decision 0009; the selected lane alone owns keyboard input.
|
||||
|
||||
The framework spike retains six updating surfaces even when five are offscreen.
|
||||
That preserves the earlier streaming and reducer workload for performance
|
||||
comparison. Hidden surfaces do not receive keyboard input merely because they
|
||||
continue to update.
|
||||
|
||||
Window geometry determines the middle band's terminal rows and columns. The UI
|
||||
Window and lane geometry determine each terminal's rows and columns. The UI
|
||||
resizes the terminal engine and PTY through the bounded runtime actor; it does
|
||||
not resize only the text view or infer terminal wrapping after the fact.
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# 0009: The primary work region uses responsive vertical lanes
|
||||
|
||||
Status: accepted for the native vertical slice.
|
||||
|
||||
The middle 60% work region shows one vertical lane in compact windows, three at
|
||||
normal desktop widths, and five when at least 2800 px remains after the sidebar.
|
||||
A 3440 px ultrawide therefore presents five lanes. A sliding window over the six
|
||||
comparison panes always keeps the selected pane visible.
|
||||
|
||||
This is not a return to the original 2×3 dashboard. Every lane receives the full
|
||||
work-region height, the surrounding context and decision bands remain stable,
|
||||
and only the selected lane owns keyboard input. Clicking a lane selects it. Pane
|
||||
processes and output continue independently of selection.
|
||||
|
||||
Terminal geometry is computed from the actual width of one lane, including gaps
|
||||
and insets. The selected real PTY is resized through the runtime actor when the
|
||||
responsive lane count or window bounds change. On the 3440×1440 reference
|
||||
display the current fixed-cell spike derives approximately 71 columns by 40
|
||||
rows per lane.
|
||||
|
||||
The first actor slice still owns one real PTY and five deterministic comparison
|
||||
surfaces. Promoting the runtime boundary from one actor to a pane-indexed session
|
||||
registry is required before all five visible terminal lanes can own independent
|
||||
real processes.
|
||||
Reference in New Issue
Block a user