feat(home): workspace-wide "Catch me up" AI summary on the dashboard (LC-705) #671
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/LC-705-workspace-catch-up"
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?
What
Adds a one-click "Catch me up" AI recap of everything the viewer missed across their whole workspace, rendered into a card at the top of the Home dashboard. Unlike the existing per-room "Catch me up" (
routes::summary), this reads across every accessible room and DM in a single pass.Why
The Home dashboard (LC-703) shows what you missed as a card grid, but scanning six cards is still work. This turns "what happened while I was away?" into one button: the AI reads recent unread across every channel and DM and returns a short summary + action items.
How
ai_gate:allowed_workspace/require_llm_workspace/llm_catch_up_available, reusing the LC-702 flag + audience."everyone"(default) admits any logged-in user;"staff"narrows to the site-admin role. A cross-room surface has no enclave or per-room override to consult, so "privileged" here reduces to site admin, the same floorprivileged_in_roomlands on for an enclave-less room.db::inbox::list_unread, which returns only accessible rooms, so membership is enforced by the query itself (opening the audience never exposes a non-member's messages). It scans the newest 200 unread, groups per channel, and builds one prompt bounded byMAX_PROMPT_CHARS.SummaryFragment, so the returned Regenerate button re-runs in place.Resolved open questions (from the ticket)
MAX_PROMPT_CHARS(48k) at prompt-build time.UI
home-catchup-ai-heading/-scope/-caught-up(en + es). Reuses the existingsummary-*/ai-*strings for the Generate/Regenerate buttons, disclaimer, and the staged "reading..." pending affordance (driven by the globallive.jshandler, so it works on the dashboard).Testing
just test: 197 binaries ok, 0 failed, 1664 tests passed.everyone-> a plain member is summarized (200);staff-> member 403 while admin passes; empty workspace -> caught-up fragment (200).cargo clippyclean understandaloneandsaas;cargo fmt --checkclean; i18n en/es parity test passes.Follow-on to
LC-704 (per-type preview icons) and LC-703 (Home dashboard redesign). This was split out of LC-704 because it is a new cross-room feature rather than a preview tweak.
🤖 Generated with Claude Code
https://claude.ai/code/session_016ufqbuN7mjyt4ms5NEygMy