feat: phase 1f - Slack app, home dashboard, permissions, integrations, preferences #6

Merged
KofTwentyTwo merged 5 commits from feature/app-home into develop 2026-10-14 18:13:57 +00:00
KofTwentyTwo commented 2026-10-14 17:49:16 +00:00 (Migrated from github.com)

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

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)
KofTwentyTwo commented 2026-10-14 17:58:02 +00:00 (Migrated from github.com)

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

home-390-light

390 px dark

home-390-dark

1440 px light

home-1440-light

1440 px dark

home-1440-dark

message

390 px light

message-390-light

390 px dark

message-390-dark

1440 px light

message-1440-light

1440 px dark

message-1440-dark

connection

390 px light

connection-390-light

390 px dark

connection-390-dark

1440 px light

connection-1440-light

1440 px dark

connection-1440-dark

workspace

390 px light

workspace-390-light

390 px dark

workspace-390-dark

1440 px light

workspace-1440-light

1440 px dark

workspace-1440-dark

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** ![home-390-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-390-light.png) **390 px dark** ![home-390-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-390-dark.png) **1440 px light** ![home-1440-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-1440-light.png) **1440 px dark** ![home-1440-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-1440-dark.png) ### message **390 px light** ![message-390-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/message-390-light.png) **390 px dark** ![message-390-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/message-390-dark.png) **1440 px light** ![message-1440-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/message-1440-light.png) **1440 px dark** ![message-1440-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/message-1440-dark.png) ### connection **390 px light** ![connection-390-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/connection-390-light.png) **390 px dark** ![connection-390-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/connection-390-dark.png) **1440 px light** ![connection-1440-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/connection-1440-light.png) **1440 px dark** ![connection-1440-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/connection-1440-dark.png) ### workspace **390 px light** ![workspace-390-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/workspace-390-light.png) **390 px dark** ![workspace-390-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/workspace-390-dark.png) **1440 px light** ![workspace-1440-light](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/workspace-1440-light.png) **1440 px dark** ![workspace-1440-dark](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/workspace-1440-dark.png)
KofTwentyTwo commented 2026-10-14 18:12:30 +00:00 (Migrated from github.com)

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 | ![](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-1440-light-v2.png) | ![](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-1440-dark-v2.png) | | 390 px | ![](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-390-light-v2.png) | ![](https://gist.githubusercontent.com/KofTwentyTwo/c01b3251ed0e2b74791324d20035fe0d/raw/home-390-dark-v2.png) | The 390 px views have no page-level horizontal scroll; the tables collapse to cards.
Sign in to join this conversation.