feat(transcripts): trackable follow-up tasks from call action items (LC-527) #501
Loading…
Reference in a new issue
No description provided.
Delete branch "longjacksonle/feat/LC-527-followup-tasks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Turns a call transcript's "## Action items" summary into a live, trackable checklist posted to the room. On the transcript page, once a summary with action items exists, a "Create follow-up tasks" button parses the bullet list and posts a follow-up card to the call's room. Each item is a checkbox anyone in the room can toggle done, plus a self-claim control so a member can take ownership of an item. Toggles and claims fan out over the WebSocket and re-render per viewer, exactly like poll votes.
The feature mirrors the LC-66 poll pattern end to end: a follow-up list is anchored to a
messagesrow (followups+followup_items, migration 0080), rendered beneath the body viapartials/followup_block.htmlinside an id-keyed#followup-{id}region, and updated live through a newFollowUpUpdatedChatEvent rendered per-recipient in ws.rs. Creation reusesfinalize_message_send; the action-item parser is pure text (no extra LLM call) and bounds item count + length.Scope note: self-claim only (a member can claim or release an item for themselves, never assign work to someone else), which keeps the moderation posture simple and sidesteps the "assigned work as social pressure" concern.
Also regenerates the LC-77 webhook/email render fixtures: they were left stale by LC-528's message.html change (CI runs only
cargo test --lib, so the integration-only fixture test did not catch it); this brings them current and adds the LC-527 checklist whitespace.Tests: db-layer CRUD/toggle/claim (db_followups.rs), action-item parser unit tests (inline, CI-covered via --lib), full
just test+just test-saas+just checkgreen.Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01NTRhc4n7A2uB2Y5PHV2ewL
Turns a call transcript's "## Action items" summary into a live, trackable checklist posted to the room. On the transcript page, once a summary with action items exists, a "Create follow-up tasks" button parses the bullet list and posts a follow-up card to the call's room. Each item is a checkbox anyone in the room can toggle done, plus a self-claim control so a member can take ownership of an item. Toggles and claims fan out over the WebSocket and re-render per viewer, exactly like poll votes. The feature mirrors the LC-66 poll pattern end to end: a follow-up list is anchored to a `messages` row (`followups` + `followup_items`, migration 0080), rendered beneath the body via `partials/followup_block.html` inside an id-keyed `#followup-{id}` region, and updated live through a new `FollowUpUpdated` ChatEvent rendered per-recipient in ws.rs. Creation reuses `finalize_message_send`; the action-item parser is pure text (no extra LLM call) and bounds item count + length. Scope note: self-claim only (a member can claim or release an item for themselves, never assign work to someone else), which keeps the moderation posture simple and sidesteps the "assigned work as social pressure" concern. Also regenerates the LC-77 webhook/email render fixtures: they were left stale by LC-528's message.html change (CI runs only `cargo test --lib`, so the integration-only fixture test did not catch it); this brings them current and adds the LC-527 checklist whitespace. Tests: db-layer CRUD/toggle/claim (db_followups.rs), action-item parser unit tests (inline, CI-covered via --lib), full `just test` + `just test-saas` + `just check` green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NTRhc4n7A2uB2Y5PHV2ewL