docs: design spec + implementation plan for the Integrations Hub redesign - #254
Open
oxedom wants to merge 1 commit into
Open
docs: design spec + implementation plan for the Integrations Hub redesign#254oxedom wants to merge 1 commit into
oxedom wants to merge 1 commit into
Conversation
…sign Frontend-only redesign of the Integrations tab's browse surface: a two-pane category rail + card grid replacing the logo wall, a read-only Details modal over the catalog's static actions, and a Connect modal that re-houses the existing full-page detail view. The plan is 9 TDD tasks. Derivation rules move to a React-free hub-view-model.ts with node:test coverage; the rendered surface is covered by a new Playwright spec, since the repo has no component-test harness and this doesn't add one. No new API, no new dependencies, no backend change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Docs only — no code changes. This lands the approved design spec and a task-by-task implementation plan for a frontend-only redesign of the Integrations tab's browse surface.
What's being proposed
The Integrations tab today is a "logo wall": compact tiles (logo + name + status badge) under stacked category headers, where clicking a tile opens a full-page detail view. The redesign:
N available/N connected, plus a per-categoryAVAILABLE n.Details+Connectpair, carrying the Connected / Manage / Soon / Request states.actions[]. No tabs; Cabinet has no "triggers" concept.SetupGuide, trust note, liveConnectPanel) rather than rebuilding it.Layout and wireframes are borrowed from a reference integrations product; all styling stays on Cabinet's own design tokens.
Constraints held
preview-catalog.tsplus the existing/api/agents/config/mcp-catalogfetch.#/integrations/{id}opens the Connect modal, close/back clears the slug.connectTargetFor,coveredBy,integrationVia,workAccountOnly) is preserved verbatim.Plan shape (9 TDD tasks)
The derivation rules currently inline in the gallery (card state, filtering, counts, suite-slug routing) move to a React-free
hub-view-model.tswith 16node:testunit tests.IntegrationDetailPagesplits into a container-agnosticIntegrationDetailBodyso the same body serves the modal;LayoutGallery→LayoutGrid; both old files are deleted.On testing: this repo has no component-test harness — no
@testing-library, no vitest/jest, zero.test.tsx. Rather than add one unasked, the plan pushes the logic worth testing into a pure module (unit-tested) and covers the rendered surface with the Playwright harness that already exists (newe2e/integrations-hub.spec.ts).Two deviations from the reference, recorded in the plan
Both are cases where the borrowed pattern didn't survive contact with our model:
N connectedpill counts connected cards, not the raw connected-id set. That set holds MCP ids that may have no card, and one Google Workspace OAuth lights three cards (Workspace, Gmail, Calendar) — so its size would disagree with the green cards on screen.Connecting…button is clickable and reopens the modal, where the reference's is a disabled spinner. Because setup now happens inside the modal, a disabled spinner would strand a user mid-OAuth with no way back in. Reopening is also what letsConnectPanelclear a stale flag, so no timer is needed.Review focus
The plan is meant to be executable by someone with no context on this codebase, so the useful review question is whether any task is under-specified — particularly Task 2 (the detail-body extraction, which must not change
ConnectPanelruntime behavior) and Task 7 (the wiring + deletions).🤖 Generated with Claude Code