# Quick Pane v1 Test Plan and QA Checklist ## Automated coverage ### Settings - Valid defaults load when no Quick Pane configuration exists. - Valid configuration round-trips through native storage. - Invalid workspace, model, prompt, and tool-call values show field errors and retain prior saved state. - Quick model picker affects quick request only; follow-up model remains configured default. ### Runtime guardrails - Quick runtime receives immutable advisory read-only/no-subagent prompt text plus supplemental prompt. - Mutation, subagent, multi-step, and complex requests are instructed to preflight-escalate. - Quick Pane has no time-based abort; configured tool-call guidance remains prompt-only. - Full ordered user/assistant transcript remains visible for follow-ups. Each follow-up clears prior answer/partial-handoff state before model, thinking, or prompt submission. - Reflected user messages are resolved by exact submitted raw-prompt mapping. Supplemental instructions and entered requests containing `\n\nUser request:` render only the exact entered multiline request; unknown Quick Pane advisory prompts are hidden and ordinary user text remains visible. - Tests/documentation state current limitations: Pi RPC cannot trusted-enforce prompt policy or guarantee memory-only temporary sessions. ### UI and bridge - Quick Pane opens/focuses through dedicated native command without changing normal `--new` or `--toggle` behavior. - Workspace and quick-model picker values reach runtime creation. - Permission and clarification extension requests remain visible inline and send correct response payloads; runtime errors do not erase partial transcript or pending extensions. - `Esc` and **Close** hide without cleanup. Reopening an idle chat at or under three minutes preserves runtime, draft/catalog, and transcript; reopening after more than three minutes renews it. - `Ctrl+N` prevents browser default, aborts active work when needed, retries queued cleanup, clears draft/transcript/raw-prompt mappings, and prepares a fresh runtime/catalog. Idle reset does not send an abort. - Stale runtimes created by superseded preparation are queued after cleanup failure and retried before later stale-chat renewal. - Quick Pane opens at 640×360 with a 520×360 native minimum. Content-driven native growth stops at 520px tall; transcript and model results scroll internally after that. - Settings-startup and model-catalog errors show **Retry**. Catalog retry cleans up failed runtime before replacement preparation; model selection and Send stay disabled until ready. - **Continue in full session** appears after first completed assistant answer with valid handoff settings, plus preserved request/runtime escalation notices. It never starts automatically. Handoff creates normal session with transcript-derived current-chat context, workspace, and follow-up model. Current answer extraction starts only after exact mapped submitted prompt in snapshot transcript; failed follow-ups with no current assistant message never reuse prior answer as partial findings. ## Manual smoke checklist 1. Configure default workspace, models, prompt, and tool-call guidance. 2. Add desktop/WM hotkey using Settings launch command. 3. From no running GUI process, invoke hotkey and verify Quick Pane opens/focuses. 4. Submit a short answer-only request; verify no time-based abort and visible manual **Continue in full session** after completion. 5. Submit read-only inspection request; answer any external-read permission prompt inline. 6. Submit mutation or multi-step request; verify reason and **Continue in full session**. 7. Continue; verify normal session receives handoff and follow-up model. 8. Close Quick Pane and reopen within three minutes; verify idle runtime, draft/catalog, and full transcript remain. Repeat after more than three idle minutes; verify fresh chat/runtime appears. 9. Press `Ctrl+N` while idle and active; verify fresh empty chat in both cases and active work aborts before replacement. 10. Verify pane opens at 640×360, grows only to 520px tall as transcript grows, then keeps transcript/model results scrolling internally. 11. Induce settings-startup or model-catalog failure; verify visible **Retry**, disabled model/Send controls until recovery, and successful retry. Verify empty catalog stays blocked without unsupported actions. ## Exit criteria All targeted automated tests pass. Manual cold-launch/hotkey smoke completes. No regressions in normal sessions, `--toggle`, or `--new` behavior.