From 66b7b978395829b651bb5908206ac38ae701307d Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 6 Jun 2026 18:32:01 +0900 Subject: [PATCH] ticket: preflight workspace panel layout tuning --- .../artifacts/delegation-intent.md | 111 ++++++++++++++++++ .../item.md | 2 +- .../thread.md | 17 +++ 3 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 .yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/artifacts/delegation-intent.md diff --git a/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/artifacts/delegation-intent.md b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/artifacts/delegation-intent.md new file mode 100644 index 00000000..24c2bf09 --- /dev/null +++ b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/artifacts/delegation-intent.md @@ -0,0 +1,111 @@ +# Delegation intent: workspace panel layout/display tuning + +## Classification + +`implementation-ready` as a focused UX/layout pass after the first-pass panel implementation. + +The main requested change is row readability: Ticket titles and Pod names/ids are variable-length and currently lead the row, which makes status/action scanning hard. Rework rendering into aligned columns with short fields first and long free-text identifiers last. + +## Intent + +Tune `yoi panel` row rendering and immediate display affordances without changing Ticket backend/action semantics. + +Primary direction: + +- Ticket/action rows: short aligned columns first, long Ticket title last. +- Pod rows: short aligned columns first, variable-length Pod id/name last. +- Ticket row and Pod row schemas do not need to be identical, but each row family should align its own columns consistently. + +## Worktree / branch + +- worktree: `/home/hare/Projects/yoi/.worktree/workspace-panel-layout-display-tuning` +- branch: `work/workspace-panel-layout-display-tuning` + +This ticket may read tracked `.yoi/tickets` records/design artifacts. Do not read or edit `.yoi/memory/`. + +## Requirements + +- Rework row rendering into stable aligned columns rather than sentence-like rows. +- Ticket/action row layout should move the long Ticket title to the end. + - Put short, comparable fields first. + - Suggested fields/order: selection marker, priority bucket, action, derived status, phase, short id/slug, title. + - Exact widths can be tuned, but status/action/phase should line up across Ticket rows. +- Pod row layout should move variable-length Pod name/id to the end. + - Put short, comparable fields first. + - Suggested fields/order: selection marker, status, action, role/kind if cheaply available, Pod name/id. + - Long Pod names must not break status/action alignment. +- Preserve existing color/style semantics unless a small adjustment improves readability. +- Improve labels only where it directly helps the aligned layout; avoid broad copy rewrites. +- Preserve `yoi panel` behavior in both Ticket-enabled and no-Ticket workspaces. +- Preserve Ticket action dispatch, Intake launch, Orchestrator lifecycle, Pod open/direct-send, and composer target behavior. +- Do not move authority into rendering code; keep the thin ViewModel boundary. +- Do not reintroduce `--multi`. +- Avoid broad refactors or new scheduler/action semantics. + +## Current code map + +- `crates/tui/src/multi_pod.rs` + - `panel_row_line(...)` currently renders Ticket/action rows as ` [priority] Action: status ...`. + - `row_line(...)` currently renders Pod rows as `<pod name> [status] action ...`. + - `panel_priority_style(...)`, `row_status_label(...)`, section/header rendering, and tests are nearby. +- `crates/tui/src/workspace_panel.rs` + - `PanelRow`, `TicketPanelEntry`, `ActionPriority`, `NextUserAction`, `TicketPanelPhase`, and `ticket_subtitle(...)` provide the display fields. + - Extend display-ready fields only if needed; keep this as UI data, not authority. +- Existing tests in `crates/tui/src/multi_pod.rs` and `workspace_panel.rs` + - Add/adjust unit tests for row rendering/alignment and truncation behavior. + +## Suggested display shape + +Ticket/action row example: + +```text +▶ decision Review implementation reported review workspace-panel-composer-targets Workspace panel composer targets + ready Go ready for Go preflight ticket-slug Long Ticket title... +``` + +Pod row example: + +```text + live idle send pod companion + live running open pod very-long-background-worker-name... +``` + +Exact wording and widths can differ, but the visual rule is fixed: short comparable columns first, long names/titles last. + +## Non-goals + +- Backend/Ticket action semantic changes. +- New scheduler/queue behavior. +- Orchestrator/Intake protocol changes. +- Replacing the single-Pod TUI. +- Reintroducing `--multi`. +- Large module refactors. + +## Validation + +Run at least: + +- targeted TUI tests for Ticket row rendering/alignment; +- targeted TUI tests for Pod row rendering/alignment; +- `cargo test -p tui workspace_panel`; +- `cargo test -p tui multi_pod`; +- `cargo test -p yoi panel`; +- `cargo check --workspace --all-targets`; +- `cargo fmt --check`; +- `git diff --check`; +- `cargo build -p yoi`; +- `target/debug/yoi ticket doctor`. + +Run `nix build .#yoi --no-link` if feasible. + +## Completion report + +Report: + +- worktree path / branch; +- commit hash; +- final Ticket row column schema and widths/truncation behavior; +- final Pod row column schema and widths/truncation behavior; +- tests updated/added; +- validation results; +- remaining UX/display tuning items, if any. diff --git a/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/item.md b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/item.md index a49e19bd..ab6cd059 100644 --- a/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/item.md +++ b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/item.md @@ -7,7 +7,7 @@ kind: task priority: P2 labels: [tui, ticket, orchestration, panel, ux] created_at: 2026-06-06T06:05:48Z -updated_at: 2026-06-06T08:36:49Z +updated_at: 2026-06-06T09:32:01Z assignee: null legacy_ticket: null --- diff --git a/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/thread.md b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/thread.md index 869b0672..e3f06a53 100644 --- a/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/thread.md +++ b/.yoi/tickets/open/20260606-060548-workspace-panel-layout-display-tuning/thread.md @@ -32,4 +32,21 @@ Rows should be column-aligned instead of leading with long identifiers/titles. This should be handled in the layout/display tuning ticket, not by changing backend/action semantics. +--- + +<!-- event: plan author: hare at: 2026-06-06T09:32:01Z --> + +## Plan + +Preflight result: `implementation-ready` as a focused layout/display pass. + +Implementation should rework panel row rendering into aligned columns with short comparable fields first and long variable text last: +- Ticket/action rows: move Ticket title to the end; align priority/action/status/phase/id-or-slug first. +- Pod rows: move Pod id/name to the end; align status/action/kind first. + +This should not change Ticket backend semantics, action dispatch, Orchestrator lifecycle, Intake handoff, no-Ticket behavior, or the thin ViewModel boundary. + +Detailed delegation intent is recorded in `artifacts/delegation-intent.md`. + + ---