Phase 1f of docs/DESIGN.md (sections 10 and 13). It's stacked on #5.
What's in it
The slack app.
The nav lists only the six main tables: Messages, Connections, Workspaces, Registered Channels, User Groups and Templates. No processes appear in the nav.
The home page is the only dashboard.
Every user sees their own connections and recent deliveries.
slack.admin also sees workspace readiness with fix hints, outbox counts (queued, retrying, sent, dead letters, auth failures) and recent failures.
Everything is scoped to the viewer through the owner and tenant locks.
Permissions. These are slack.view, .connect, .workspace.install, .admin, .send, .send.blocks and .message.body. Without slack.message.body, the text, blocks and variables are masked.
SlackIntegrations.
API and ESB events cover the main tables, and Quick Search covers Messages and Connections.
Token fields are explicitly excluded from these lists, and a test checks it.
Preferences.
A "Slack" section adapter registers only when core user preferences exist: STAND-IN(core=QRun-IO/qqq#1162, removeBy=4.1.0-RC.8).
The same actions also work today as record actions on Connections: Connect Slack, Disconnect, Send me a test message, and Install for my organization.
Demo server (test scope). It runs with the fake Slack server and seeded data, for screenshots. Screenshots will be posted as a follow-up comment.
verify is green locally with 140 tests. Codex implemented it, and I reviewed it.
Phase 1f of `docs/DESIGN.md` (sections 10 and 13). It's stacked on #5.
## What's in it
- **The `slack` app.**
- The nav lists only the six main tables: Messages, Connections, Workspaces, Registered Channels, User Groups and Templates. No processes appear in the nav.
- **The home page is the only dashboard.**
- Every user sees their own connections and recent deliveries.
- `slack.admin` also sees workspace readiness with fix hints, outbox counts (queued, retrying, sent, dead letters, auth failures) and recent failures.
- Everything is scoped to the viewer through the owner and tenant locks.
- **Permissions.** These are `slack.view`, `.connect`, `.workspace.install`, `.admin`, `.send`, `.send.blocks` and `.message.body`. Without `slack.message.body`, the text, blocks and variables are masked.
- **`SlackIntegrations`.**
- API and ESB events cover the main tables, and Quick Search covers Messages and Connections.
- Token fields are explicitly excluded from these lists, and a test checks it.
- **Preferences.**
- A "Slack" section adapter registers only when core user preferences exist: `STAND-IN(core=QRun-IO/qqq#1162, removeBy=4.1.0-RC.8)`.
- The same actions also work today as record actions on Connections: Connect Slack, Disconnect, Send me a test message, and Install for my organization.
- **Demo server** (test scope). It runs with the fake Slack server and seeded data, for screenshots. Screenshots will be posted as a follow-up comment.
`verify` is green locally with 140 tests. Codex implemented it, and I reviewed it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Updated home dashboard after review (typed tables and statistic tiles, local dates, readable statuses, fix hints only when not ready):
Light
Dark
1440 px
390 px
The 390 px views have no page-level horizontal scroll; the tables collapse to cards.
Updated home dashboard after review (typed tables and statistic tiles, local dates, readable statuses, fix hints only when not ready):
| | Light | Dark |
|---|---|---|
| 1440 px |  |  |
| 390 px |  |  |
The 390 px views have no page-level horizontal scroll; the tables collapse to cards.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase 1f of
docs/DESIGN.md(sections 10 and 13). It's stacked on #5.What's in it
slackapp.slack.adminalso sees workspace readiness with fix hints, outbox counts (queued, retrying, sent, dead letters, auth failures) and recent failures.slack.view,.connect,.workspace.install,.admin,.send,.send.blocksand.message.body. Withoutslack.message.body, the text, blocks and variables are masked.SlackIntegrations.STAND-IN(core=QRun-IO/qqq#1162, removeBy=4.1.0-RC.8).verifyis green locally with 140 tests. Codex implemented it, and I reviewed it.🤖 Generated with Claude Code
Slack demo app screenshots (seeded demo server, anonymous admin user alex). Full-page, light and dark, 390 px and 1440 px.
home
390 px light
390 px dark
1440 px light
1440 px dark
message
390 px light
390 px dark
1440 px light
1440 px dark
connection
390 px light
390 px dark
1440 px light
1440 px dark
workspace
390 px light
390 px dark
1440 px light
1440 px dark
Updated home dashboard after review (typed tables and statistic tiles, local dates, readable statuses, fix hints only when not ready):
The 390 px views have no page-level horizontal scroll; the tables collapse to cards.