Work recap: scopes & troubleshooting
Work recap gathers your Slack messages (and optionally Linear updates) into markdown for a time range you choose. You must be signed in to applib. Tokens used for each generate request are not logged; you can optionally save them encrypted on your account (same vault as Dev Inbox) so they reload when you return—see below.
Saving Slack & Linear tokens
In the app, use Save tokens now to store your Slack token, optional Linear API key, and Slack user id field in an AES-256-GCM encrypted row keyed to your user id (server secret CREDENTIALS_ENCRYPTION_SECRET, same as Dev Inbox credentials). Or enable after a successful generate to refresh that vault automatically. Clear saved removes them from the server; your browser fields clear too.
What it includes
- Slack: search (with optional query override), automatic fallback to crawl when search is not allowed for your token, or crawl-only; optional channel filter; messages grouped by channel with timestamps and links when search provides them.
- Linear: issues assigned to you with updates in the range; issue history lines list substantive changes (state, assignee, labels, priority, etc.), not only workflow moves.
- Output: a reference weekly-email template, totals, and a suggested prompt for an AI pass; optional structure instructions (textarea in the app) tailor the header and that suggestion.
Saved recaps
When “Save recap to my account” is enabled (default), each run stores the Slack-only markdown, optional Linear-only markdown, and the full combined file as plain text in your applib account so you can download or revisit older exports. No API tokens are persisted—only generated markdown.
Slack token
Best option is a Slack user token (xoxp-…) for your own account. Add these OAuth scopes to your Slack app and reinstall the app to the workspace:
- Required (search):
search:read.public - Usually needed:
search:read.im,search:read.mpim - Private channels:
search:read.private - Optional:
search:read.files
Bot token (xoxb-…)
Some workspaces return not_allowed_token_type for search.messages with a bot token. Prefer a user token, or set mode to crawl and provide your Slack user id (U…). Crawl mode typically needs: public channels channels:read, channels:history; private groups:read, groups:history (and the app in the channel); DMs im:read, im:history; group DMs mpim:read, mpim:history.
Linear
Optional: a Linear personal API key (lin_api_…). The recap lists issues assigned to you that were updated in the time window, with issue history in that window summarized as human-readable lines (including state changes plus assignee, labels, priority, and similar fields when present).
Troubleshooting
missing_scope/ incomplete results: add the missingsearch:read.*scopes and reinstall the Slack app.- Search can cap results (often around 1k). Narrow the window, add a channel filter, or split by date in the override query.
from:meworks best with a user token. With a bot token, set your Slack user id so the query can usefrom:<@U…>.