yoi/.yoi/tickets/closed/20260605-210704-workspace-panel-composer-targets/thread.md

3.5 KiB

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.