A hook resumed every finished run on a timer — unasked-for, and expensive: a `--resume` never hits the finished run's prompt cache, so each firing re-created the whole transcript as fresh input tokens. The prompts stay, the scheduler goes. A CTA is a prompt file plus a button under the last message of a finished conversation: click loads its prompt into the resume box (editable before it is sent), long-press fires it at the session in the background. The same prompts are selectable as `cta:<id>` tags in every composer. The seeded `complete` CTA also does the post-processing the hook never could afford: `conv-scaffold` reduces the conversation to markdown — metadata, its prompts, merged bash/tool/subagent summaries, one squashed diff across every commit it produced — and one subagent fills in the Summary/Analysis and publishes it onto `meta.summary`, rendered under the thread. - backend: ctas.py (store + seeded Complete), scaffold.py (+ /scaffold, PUT /summary), /api/ctas CRUD/run/prompt/reorder; hooks.py and its scheduler, pending queue and routes deleted (read-only /api/claude-hooks stays) - frontend: ConversationCtas section, Settings → CTAs, cta tags, CtaBadge - scripts/conv-scaffold.sh: scaffold + publish CLI Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.0 KiB
Executable File
5.0 KiB
Executable File