This commit is contained in:
@@ -95,7 +95,12 @@ Panel attachment is independent from session lifetime. Detaching removes a pane
|
||||
from the layout tree but retains its definition in the workspace's detached
|
||||
registry and leaves its runtime-owned process alive. Reattaching restores that
|
||||
identity without a launch. Terminating an attached or detached session is a
|
||||
separate Execute-capability operation. See decision 0010.
|
||||
separate Execute-capability operation. The GPUI slice now layers an unbounded
|
||||
panel registry above the six-surface comparison fixture. New Terminal, Browser,
|
||||
Markdown, and Review panels receive monotonic local IDs, are inserted beside
|
||||
the selection, and persist their identity, order, selection, and attachment in
|
||||
a credential-free SQLite snapshot. Each Terminal panel is keyed into the
|
||||
runtime registry by that durable panel ID. See decisions 0010 and 0011.
|
||||
|
||||
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.
|
||||
|
||||
@@ -6,6 +6,10 @@ Buzz is Lumbridge's first-class collaboration surface, not its control plane.
|
||||
Lumbridge remains useful offline, owns its local workspace state, and never
|
||||
requires a Buzz account to open a terminal or run an agent.
|
||||
|
||||
Lumbridge Code engineering uses the canonical `lumbridgecode` channel on the
|
||||
cloud-1 Buzz community. Buzz is the collaboration product; Lumbridge does not
|
||||
refer to or depend on Slack.
|
||||
|
||||
The initial integration provides:
|
||||
|
||||
- connect an existing Buzz identity using an OS credential-store reference;
|
||||
|
||||
+6
-3
@@ -124,9 +124,12 @@ who already have the final cargo-watch release installed.
|
||||
- The GPUI slice tests its key-event adapter, responsive one/three/five-panel
|
||||
geometry, selected-panel windowing, per-panel 20/60/20 PTY sizing, xterm
|
||||
256-color conversion, styled-run coalescing, cursor-run boundaries, and
|
||||
scrollback shortcut routing. It renders three independently actor-owned VT
|
||||
sessions while three non-terminal surfaces continue their deterministic
|
||||
background workload.
|
||||
scrollback shortcut routing. Its panel registry tests monotonic identity,
|
||||
insert-beside-selection, detach/reattach identity preservation, snapshot
|
||||
validation, SQLite round-trip, and refusal to reuse a restored ID. It renders
|
||||
an independent actor-owned VT session for every Terminal panel while the
|
||||
original three non-terminal 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.
|
||||
|
||||
@@ -90,10 +90,13 @@ fallback.
|
||||
## Measurement semantics
|
||||
|
||||
Both renderers retain the same all-deterministic six-surface action stream for
|
||||
comparison. GPUI now presents one, three, or five vertical panels, each with its
|
||||
own 20/60/20 context/work/decision composition, while all three terminal
|
||||
fixtures are independent actor-owned VT sessions and the three non-terminal
|
||||
surfaces keep deterministic updates running. Counters
|
||||
comparison. GPUI now layers an unbounded, SQLite-snapshotted panel registry over
|
||||
that benchmark and presents one, three, or five vertical panels, each with its
|
||||
own 20/60/20 context/work/decision composition. The Add Panel chooser creates
|
||||
Terminal, Browser, Markdown, and Review panels beside the selection or
|
||||
reattaches an existing session. Every Terminal panel receives an independent
|
||||
actor-owned VT session; the three seed non-terminal surfaces keep deterministic
|
||||
updates 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
|
||||
|
||||
@@ -20,9 +20,12 @@ decision-shelf actions, usage-detail provenance, and end-to-end platform
|
||||
accessibility/IME.
|
||||
|
||||
Panel lifecycle is now visible in the slice: every panel has a Detach action,
|
||||
the workspace bar has Add panel, and the sidebar exposes Detached sessions for
|
||||
reattachment. The wording is deliberate because panel removal keeps its session
|
||||
alive; termination is not exposed as a visually equivalent close action.
|
||||
the workspace bar opens an Add Panel chooser for Terminal, Browser, Markdown,
|
||||
and Review, and the sidebar and chooser expose Detached sessions for
|
||||
reattachment. Created panels are inserted beside the selection and receive a
|
||||
monotonic identity persisted with their ordering and attachment state in local
|
||||
SQLite. The wording is deliberate because panel removal keeps its session alive;
|
||||
termination is not exposed as a visually equivalent close action.
|
||||
|
||||
Screenshots for the audit are stored outside Git under
|
||||
`~/shots/2026-08/lumbridge-ui-audit/`. Accessibility and IME correctness cannot
|
||||
@@ -87,7 +90,7 @@ surface rather than a hosted Lumbridge control plane.
|
||||
leaving ordinary terminal arrows and text available to the PTY.
|
||||
- `Alt+1` through `Alt+6`: focus a pane directly while leaving terminal digits
|
||||
available to the PTY.
|
||||
- `Alt+Shift+N`: add or reattach the next panel in the deterministic slice.
|
||||
- `Alt+Shift+N`: open the Add Panel chooser; `1`–`4` create a typed panel.
|
||||
- `Alt+Shift+W`: detach the selected panel while its session keeps running.
|
||||
- `Cmd+K` on macOS or `Ctrl+K` on Linux: open the command palette.
|
||||
- `Shift+PageUp/PageDown`: move the selected live terminal through retained
|
||||
@@ -98,8 +101,9 @@ surface rather than a hosted Lumbridge control plane.
|
||||
separate explicit action and is never triggered by focusing the pane.
|
||||
- `Escape` closes transient UI before it changes workspace state.
|
||||
|
||||
Every command is represented by the shared interaction model so GPUI and Floem
|
||||
receive the same state transitions and tests.
|
||||
The six seed surfaces still replay through the shared interaction model so GPUI
|
||||
and Floem retain a comparable benchmark. Dynamic product panels use the GPUI
|
||||
panel registry until that contract moves into the framework-neutral UI crate.
|
||||
|
||||
## Decisive workload
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ derives approximately 71 columns by 42 rows per panel.
|
||||
|
||||
The runtime slice now owns three independent real PTYs through a pane-indexed
|
||||
session registry, one for every terminal fixture. The Markdown, browser, and
|
||||
review fixtures remain deterministic comparison surfaces. Adding arbitrary new
|
||||
terminal panels requires replacing the fixed fixture identity pool with dynamic
|
||||
pane creation; it does not require another runtime ownership design.
|
||||
review fixtures remain deterministic comparison surfaces. The GPUI product
|
||||
slice now adds arbitrary panels through a persistent dynamic identity layer;
|
||||
each additional Terminal panel is another entry in the same runtime ownership
|
||||
design. The fixed fixture remains only as the GPUI/Floem benchmark input.
|
||||
|
||||
@@ -15,12 +15,11 @@ confirmation that names the process, target machine, and any dirty or waiting
|
||||
state. Detaching the selected panel chooses its next attached sibling, falling
|
||||
back to the previous sibling. A workspace retains at least one attached panel.
|
||||
|
||||
The add affordance has two product paths: quick activation creates the user's
|
||||
default panel beside the selection, while its menu offers Terminal, Browser,
|
||||
Markdown, Review, and Reattach running session. The deterministic UI spike uses
|
||||
six fixed fixtures, starts with five attached, and reattaches the first detached
|
||||
fixture when Add panel is activated. That fixture limit is test scaffolding, not
|
||||
a product limit.
|
||||
The add affordance opens a chooser for Terminal, Browser, Markdown, Review, and
|
||||
Reattach running session. The deterministic comparison model still uses six
|
||||
seed fixtures and starts with five attached. The GPUI slice no longer inherits
|
||||
that fixture limit: Add Panel creates a new persistent panel identity beside the
|
||||
selection or reattaches the exact detached identity without relaunching it.
|
||||
|
||||
The typed command plane retains detached pane definitions separately from the
|
||||
layout tree. `ClosePane(Detach)` moves a definition into that registry,
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# 0011: Dynamic panels have persistent local identities
|
||||
|
||||
Status: accepted for the GPUI product slice.
|
||||
|
||||
The six-surface fixture remains a deterministic benchmark shared with Floem; it
|
||||
is not the product's panel database. GPUI layers an unbounded workspace registry
|
||||
above it. Add Panel creates Terminal, Browser, Markdown, or Review beside the
|
||||
selected panel. Each new panel receives a monotonically increasing `PanelId`
|
||||
that is never derived from its title, position, surface, process ID, or visible
|
||||
index.
|
||||
|
||||
The registry persists panel identity, kind, title, target, order, attachment,
|
||||
selection, and the next unused ID as one versioned, credential-free SQLite
|
||||
snapshot. Invalid snapshots fail closed to the seed layout rather than partially
|
||||
restoring aliases. SQLite never stores terminal output, credentials, private
|
||||
keys, subscription tokens, or Buzz identity secrets through this boundary.
|
||||
|
||||
Every Terminal panel uses its `PanelId` as the runtime-registry key. Detaching
|
||||
changes only layout attachment, so the actor and PTY keep running. Reattaching
|
||||
selects the same ID. A restored in-process spike must currently launch a new PTY
|
||||
for that persisted panel because actor durability across UI process restarts
|
||||
requires the planned separate Lumbridge runtime and authenticated IPC; the UI
|
||||
does not pretend otherwise.
|
||||
Reference in New Issue
Block a user