diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/artifacts/.gitkeep b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/artifacts/.gitkeep similarity index 100% rename from .yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/artifacts/.gitkeep rename to .yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/artifacts/.gitkeep diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/artifacts/delegation-intent.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/artifacts/delegation-intent.md similarity index 100% rename from .yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/artifacts/delegation-intent.md rename to .yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/artifacts/delegation-intent.md diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/item.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/item.md similarity index 97% rename from .yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/item.md rename to .yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/item.md index 4278b4e9..45ce3f2a 100644 --- a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/item.md +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/item.md @@ -2,12 +2,12 @@ id: 20260605-210704-workspace-panel-composer-targets slug: workspace-panel-composer-targets title: Workspace panel composer targets -status: open +status: closed kind: task priority: P1 labels: [tui, composer, intake, panel] created_at: 2026-06-05T21:07:04Z -updated_at: 2026-06-06T04:24:53Z +updated_at: 2026-06-06T04:47:31Z assignee: null legacy_ticket: null --- diff --git a/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/resolution.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/resolution.md new file mode 100644 index 00000000..2e2cba94 --- /dev/null +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/resolution.md @@ -0,0 +1,36 @@ +Implemented first workspace panel composer targets. + +Changes: +- Added workspace panel composer target model with: + - `Companion` / existing selected-Pod send behavior; + - `Ticket Intake`. +- Added `Ctrl+T` target switching without clearing typed composer text. +- Displayed active target in the panel target/status line and actionbar guidance using existing TUI conventions. +- No-Ticket and unusable-Ticket-config workspaces expose only `Companion` / Pod-centric behavior. +- `Ticket Intake` is available only when Ticket config is usable. +- Empty Intake input is rejected with a bounded diagnostic. +- Intake launch uses the existing `TicketRole::Intake` / `launch_ticket_role_pod(...)` path. +- Composer text is passed as `TicketRoleLaunchContext.user_instruction` for the Intake launch. +- Intake text is not sent to Companion/current Pod history or selected-Pod direct send path. +- Successful Intake launch clears composer and reports the launched Pod name. +- Launch failure keeps composer text and reports a bounded diagnostic. +- Intake -> Orchestrator handoff payload was intentionally not added; the follow-up handoff ticket owns that. +- `--multi` was not reintroduced. + +Validation after merge: +- `cargo test -p tui workspace_panel` +- `cargo test -p tui multi_pod` +- `cargo test -p client ticket_role` +- `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. + +Known follow-up: +- Active target display is intentionally minimal; final placement/color/wording tuning is deferred. +- Intake -> Orchestrator handoff remains the next child ticket. diff --git a/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/thread.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/thread.md new file mode 100644 index 00000000..438dbffa --- /dev/null +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/thread.md @@ -0,0 +1,86 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- + + + +## Plan + +Preflight result: `implementation-ready` after action model and Orchestrator lifecycle. + +This ticket should add the first composer target split for `yoi panel`: preserve the Companion/selected-Pod send path, and add a Ticket Intake target that launches an Intake role Pod with the composer body as the initial user instruction. The Intake body must not be appended to Companion/current Pod history or sent to the selected Pod. + +Ticket Intake target is available only when Ticket config is defined/usable. No-Ticket workspaces remain Pod-centric and expose only the existing send behavior. + +Detailed delegation intent is recorded in `artifacts/delegation-intent.md`. + + +--- + + + +## Review: approve + +External reviewer approved commit `a7c155e` with no blocking issues. + +Review summary: +- Composer targets include `Companion` and `Ticket Intake`. +- No-Ticket/unusable-Ticket-config workspaces remain Companion-only. +- Active target is visible and `Ctrl+T` switching preserves typed input. +- Ticket Intake uses `TicketRole::Intake` via `launch_ticket_role_pod` with composer text as `TicketRoleLaunchContext.user_instruction`. +- Intake text does not route through the selected-Pod direct send path. +- Empty Intake input is rejected locally with a bounded diagnostic. +- Success clears composer and reports launched Pod name; failure keeps composer and reports a bounded diagnostic. +- No Intake -> Orchestrator handoff payload was added. +- `--multi` was not reintroduced. + + +--- + + + +## Closed + +Implemented first workspace panel composer targets. + +Changes: +- Added workspace panel composer target model with: + - `Companion` / existing selected-Pod send behavior; + - `Ticket Intake`. +- Added `Ctrl+T` target switching without clearing typed composer text. +- Displayed active target in the panel target/status line and actionbar guidance using existing TUI conventions. +- No-Ticket and unusable-Ticket-config workspaces expose only `Companion` / Pod-centric behavior. +- `Ticket Intake` is available only when Ticket config is usable. +- Empty Intake input is rejected with a bounded diagnostic. +- Intake launch uses the existing `TicketRole::Intake` / `launch_ticket_role_pod(...)` path. +- Composer text is passed as `TicketRoleLaunchContext.user_instruction` for the Intake launch. +- Intake text is not sent to Companion/current Pod history or selected-Pod direct send path. +- Successful Intake launch clears composer and reports the launched Pod name. +- Launch failure keeps composer text and reports a bounded diagnostic. +- Intake -> Orchestrator handoff payload was intentionally not added; the follow-up handoff ticket owns that. +- `--multi` was not reintroduced. + +Validation after merge: +- `cargo test -p tui workspace_panel` +- `cargo test -p tui multi_pod` +- `cargo test -p client ticket_role` +- `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. + +Known follow-up: +- Active target display is intentionally minimal; final placement/color/wording tuning is deferred. +- Intake -> Orchestrator handoff remains the next child ticket. + + +--- diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/thread.md b/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/thread.md deleted file mode 100644 index 179c4d4d..00000000 --- a/.yoi/tickets/open/20260605-210704-workspace-panel-composer-targets/thread.md +++ /dev/null @@ -1,22 +0,0 @@ - - -## Created - -Created by LocalTicketBackend create. - ---- - - - -## Plan - -Preflight result: `implementation-ready` after action model and Orchestrator lifecycle. - -This ticket should add the first composer target split for `yoi panel`: preserve the Companion/selected-Pod send path, and add a Ticket Intake target that launches an Intake role Pod with the composer body as the initial user instruction. The Intake body must not be appended to Companion/current Pod history or sent to the selected Pod. - -Ticket Intake target is available only when Ticket config is defined/usable. No-Ticket workspaces remain Pod-centric and expose only the existing send behavior. - -Detailed delegation intent is recorded in `artifacts/delegation-intent.md`. - - ----