ticket: use base32 project record ids

This commit is contained in:
2026-06-09 22:10:47 +09:00
parent 0803bc3725
commit 4203988d74
798 changed files with 477 additions and 105 deletions
@@ -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 `<title> [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.
+62
View File
@@ -0,0 +1,62 @@
---
title: "Workspace panel layout and display tuning"
state: "closed"
created_at: "2026-06-06T06:05:48Z"
updated_at: "2026-06-06T21:16:52Z"
---
## Background
The first-pass workspace panel implementation is complete. It provides `yoi panel`, Ticket-config-gated Ticket/action rows, no-Ticket Pod-centric fallback, background Orchestrator lifecycle, Companion vs Ticket Intake composer targets, Intake -> Orchestrator handoff, and minimal Ticket action dispatch.
The implementation intentionally kept layout and displayed content simple. The next pass should tune what the user sees and how the panel is organized while preserving the existing TUI visual language and the thin ViewModel/action-dispatch boundaries.
## Goal
Refine the workspace panel layout, labels, ordering, and displayed detail so the first-pass functionality is easy to understand and operate in real use.
## Requirements
- Follow existing TUI visual conventions/components.
- Preserve the single `yoi panel` route and no-Ticket Pod-centric behavior.
- Keep the UI intermediate representation thin; do not move authority into rendering code.
- Rework row rendering into stable, aligned columns rather than sentence-like rows.
- Ticket/action rows should put short, fixed-ish fields first and move the long Ticket title to the end.
- Example column order: marker/selection, priority/action/status/phase/id-or-slug, then title.
- The exact set can be tuned, but the long free-text title must not be the leading column.
- Pod rows should likewise put short, alignable state/action fields first and move the variable-length Pod id/name to the end.
- Example column order: marker/selection, status/action/role-or-kind, then Pod id/name.
- Long Pod identifiers should not break status/action alignment.
- Ticket rows and Pod rows may use different schemas, but each row family should align its own columns consistently.
- Improve Ticket/action row labels, status markers, and key hints.
- Improve detail pane content for selected Ticket/action rows:
- current phase;
- next action;
- latest plan/report/review excerpt;
- related Pods;
- Orchestrator/handoff/action diagnostics.
- Improve composer target display so Companion vs Ticket Intake is obvious.
- Improve diagnostics/notices for Orchestrator lifecycle, Intake launch/handoff, and Ticket Go/Defer actions.
- Add or refine the phase/dependency/timeline view if it is useful in the first tuning pass.
- Keep Pod-centric no-Ticket panel functionally equivalent to the old multi-Pod dashboard.
- Avoid broad refactors or new scheduling behavior.
## Non-goals
- New scheduling/queue system.
- Automatic implementation authorization.
- Replacing the single-Pod TUI.
- Reintroducing `--multi`.
- Changing Ticket backend storage/config semantics.
## Acceptance criteria
- `yoi panel` remains functional in both Ticket-enabled and no-Ticket workspaces.
- The primary row list makes user-action-required items visually distinguishable from passive background Pods.
- Ticket/action rows have aligned columns with the long Ticket title at the end, not the beginning.
- Pod rows have aligned columns with variable-length Pod id/name at the end, not the beginning.
- Short status/action fields stay visually comparable across rows.
- The active composer target is unambiguous.
- Common diagnostics are concise and actionable.
- Layout/display tests or snapshot-like unit tests cover key row/detail rendering decisions where practical.
- Existing validation continues to pass.
+57
View File
@@ -0,0 +1,57 @@
Implemented workspace panel aligned row layout.
Final Ticket/action row schema:
```text
<marker><priority> <action> <status> <phase> <slug-or-id> <title>
```
Column behavior:
- marker: width 2;
- priority: width 11;
- action: width 7;
- status: width 24;
- phase: width 12;
- slug-or-id: width 32;
- title: flexible remaining width.
Fixed columns are padded/truncated before the title. The long Ticket title is last and truncates with `…` when needed.
Final Pod row schema:
```text
<marker><status> <action> <kind> <pod-name>
```
Column behavior:
- marker: width 2;
- status: width 18;
- action: width 8;
- kind: width 3, currently `pod`;
- pod name: flexible remaining width.
Fixed Pod columns are padded/truncated before the Pod name. Long Pod names no longer shift status/action alignment.
Tests added/updated:
- `panel_ticket_rows_use_aligned_columns_before_title`
- `panel_ticket_title_truncates_after_stable_columns`
- `panel_pod_rows_use_aligned_columns_before_pod_name`
- `panel_pod_name_truncates_after_status_action_and_kind`
- adjusted action-before-pod ordering test to locate Ticket rows by slug because title is no longer the leading field.
Validation after merge:
- `cargo test -p tui panel_`
- `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 HEAD~1..HEAD`
- `cargo build -p yoi`
- `target/debug/yoi ticket doctor`
- `nix build .#yoi --no-link --print-out-paths`
External review approved with no requested changes.
Remaining UX/display tuning:
- Broader detail-pane/timeline/copy tuning remains optional follow-up; this ticket intentionally stayed focused on aligned row columns.
+135
View File
@@ -0,0 +1,135 @@
<!-- event: create author: yoi ticket at: 2026-06-06T06:05:48Z -->
## Created
Created by LocalTicketBackend create.
---
<!-- event: plan author: hare at: 2026-06-06T06:06:30Z -->
## Plan
Created after closing the first-pass workspace orchestration panel implementation.
The first pass deliberately prioritized end-to-end behavior over visual/layout polish. This ticket owns the next tuning pass: row labels, key hints, detail pane content, composer target visibility, concise diagnostics, and optional phase/dependency/timeline display, while preserving existing TUI conventions and the thin ViewModel/action-dispatch boundaries.
---
<!-- event: decision author: hare at: 2026-06-06T08:36:49Z -->
## Decision
User layout direction:
Rows should be column-aligned instead of leading with long identifiers/titles.
- Ticket/action rows: move the long Ticket title to the end. Put short, alignable fields first, such as priority/action/status/phase/id-or-slug, then the title.
- Pod rows: move variable-length Pod id/name to the end. Put short, alignable fields first, such as status/action/role-or-kind, then the Pod id/name.
- Ticket and Pod rows do not need to share exactly the same schema, but each row family should keep stable aligned columns so status/action can be visually scanned.
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`.
---
<!-- event: review author: hare at: 2026-06-06T21:16:52Z status: approve -->
## Review: approve
External reviewer approved the implementation with no requested changes.
Review summary:
- Ticket/action rows use stable fixed-width columns first and place the variable Ticket title last.
- Pod rows use stable fixed-width columns first and place the variable Pod name/id last.
- Long titles/names truncate after stable columns and do not shift status/action alignment.
- Color/style semantics are preserved closely.
- Changes are scoped to rendering/helpers/tests; no Ticket action dispatch, Intake launch, Orchestrator lifecycle, Pod open/direct-send, composer target, authority, or I/O semantics changed.
- No `--multi` route was reintroduced.
- Tests cover row rendering, alignment, and truncation.
---
<!-- event: close author: hare at: 2026-06-06T21:16:52Z status: closed -->
## Closed
Implemented workspace panel aligned row layout.
Final Ticket/action row schema:
```text
<marker><priority> <action> <status> <phase> <slug-or-id> <title>
```
Column behavior:
- marker: width 2;
- priority: width 11;
- action: width 7;
- status: width 24;
- phase: width 12;
- slug-or-id: width 32;
- title: flexible remaining width.
Fixed columns are padded/truncated before the title. The long Ticket title is last and truncates with `…` when needed.
Final Pod row schema:
```text
<marker><status> <action> <kind> <pod-name>
```
Column behavior:
- marker: width 2;
- status: width 18;
- action: width 8;
- kind: width 3, currently `pod`;
- pod name: flexible remaining width.
Fixed Pod columns are padded/truncated before the Pod name. Long Pod names no longer shift status/action alignment.
Tests added/updated:
- `panel_ticket_rows_use_aligned_columns_before_title`
- `panel_ticket_title_truncates_after_stable_columns`
- `panel_pod_rows_use_aligned_columns_before_pod_name`
- `panel_pod_name_truncates_after_status_action_and_kind`
- adjusted action-before-pod ordering test to locate Ticket rows by slug because title is no longer the leading field.
Validation after merge:
- `cargo test -p tui panel_`
- `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 HEAD~1..HEAD`
- `cargo build -p yoi`
- `target/debug/yoi ticket doctor`
- `nix build .#yoi --no-link --print-out-paths`
External review approved with no requested changes.
Remaining UX/display tuning:
- Broader detail-pane/timeline/copy tuning remains optional follow-up; this ticket intentionally stayed focused on aligned row columns.
---