From 8acf6812a6079e69fc9661e18f20f95da125e549 Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 13 Jun 2026 00:01:13 +0900 Subject: [PATCH] ticket: record panel focus implementation --- .yoi/tickets/00001KTVJFT6F/item.md | 2 +- .yoi/tickets/00001KTVJFT6F/thread.md | 50 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/.yoi/tickets/00001KTVJFT6F/item.md b/.yoi/tickets/00001KTVJFT6F/item.md index 6c520004..3f3ea6b9 100644 --- a/.yoi/tickets/00001KTVJFT6F/item.md +++ b/.yoi/tickets/00001KTVJFT6F/item.md @@ -2,7 +2,7 @@ title: 'Workspace panel の focus model を composer target と row selection に整理する' state: 'inprogress' created_at: '2026-06-11T14:48:26Z' -updated_at: '2026-06-12T14:46:41Z' +updated_at: '2026-06-12T15:01:02Z' assignee: null readiness: 'implementation_ready' risk_flags: ['tui-ux', 'input-safety'] diff --git a/.yoi/tickets/00001KTVJFT6F/thread.md b/.yoi/tickets/00001KTVJFT6F/thread.md index 944adcee..43a46c4a 100644 --- a/.yoi/tickets/00001KTVJFT6F/thread.md +++ b/.yoi/tickets/00001KTVJFT6F/thread.md @@ -149,3 +149,53 @@ Coder delegated. - Constraint: coder was instructed not to use root/original workspace for decision evidence or git/validation/cleanup, and not to create generated memory/local/runtime/log/lock/secret-like `.yoi` paths. --- + + + +## Implementation report + +Coder completed implementation. + +Coder Pod: +- `yoi-coder-panel-focus-model` + +Implementation branch/worktree: +- Branch: `ticket/panel-focus-composer-row-selection` +- Worktree: `/home/hare/Projects/yoi/.worktree/panel-focus-composer-row-selection` +- Commit: `c5ef6f79 tui: clarify panel composer target and row selection` +- Worktree status: clean + +Changed surfaces: +- `crates/tui/src/multi_pod.rs` +- `crates/tui/src/workspace_panel.rs` + +Implementation summary: +- Removed user-visible `PanelFocus` / `ItemAction` style focus model. +- `Tab` switches composer target without clearing selected row. +- `Esc` clears row selection while preserving composer draft and target. +- Non-empty composer prioritizes draft/text input and `Enter` targets composer send. +- Blank composer uses selected row as `Enter` target for Ticket action / Pod open. +- Title/status/actionbar/row hints no longer expose `global composer`, `item action`, or `Right action focus` as focus states. +- `Left` / `Right` are presented as composer cursor movement, not Panel focus switching. + +Orchestrator-verified evidence from child worktree: +- `git status --short --branch`: clean on `ticket/panel-focus-composer-row-selection` +- Focused changed tests passed individually: + - `cargo test -p tui selected_ticket_row_with_non_empty_composer_shows_composer_enter_behavior` + - `cargo test -p tui multi_esc_clears_row_selection_without_quitting_and_preserves_draft` + - `cargo test -p tui multi_composer_target_switch_preserves_typed_text` + - `cargo test -p tui multi_blank_ticket_intake_enter_uses_selected_row_and_preserves_input` +- `cargo fmt --check`: pass +- `git diff --check`: pass +- `cargo run -p yoi -- ticket doctor`: `doctor: ok` +- `nix build .#yoi`: pass + +Known unrelated validation failure: +- `cargo test -p tui multi_ --lib` fails one test: `multi_pod::tests::orchestrator_launch_context_uses_orchestration_root_for_runtime_workspace`. +- The same focused failing test also fails on current Orchestrator branch before this implementation is merged, with `context.workspace_root` `/repo/yoi` vs expected `/repo/yoi/.worktree/orchestration/yoi-orchestrator`. +- The failure is not in the changed focus/composer/row-selection path, but reviewer should still confirm it is unrelated and not introduced by this Ticket. + +Next: +- Spawn read-only sibling reviewer against the recorded intent, binding decisions/invariants, acceptance criteria, commit `c5ef6f79`, diff, focused validation evidence, `nix build` evidence, and the known pre-existing unrelated `multi_` failure. + +---