Skip to content

feat(web): add compatibility matrix heatmap view#3

Merged
Nether403 merged 1 commit into
mainfrom
feat/phase-4-compatibility-heatmap
May 12, 2026
Merged

feat(web): add compatibility matrix heatmap view#3
Nether403 merged 1 commit into
mainfrom
feat/phase-4-compatibility-heatmap

Conversation

@Nether403

@Nether403 Nether403 commented May 12, 2026

Copy link
Copy Markdown
Owner

Summary

Phase 4 gap #2. The Compatibility page was a single pairwise analyzer; this PR adds a Matrix tab that renders a category-by-category heatmap so users can survey how every tool in one category pairs with every tool in another.

Design

  • Two view modes on /compatibility: Pairwise (existing, unchanged) and Matrix (new)
  • The matrix fetches the full catalog once via a new useCatalog TanStack Query hook and evaluates every row × column pair client-side with the bundled packages/rules-engine — no new API route, no N² round-trips
  • Users pick row and column categories (defaults to frontend × hosting). Each cell shows the harmony score in a 5-bucket color scale (emerald / lime / amber / orange / red) plus side badges for hard conflicts (red dot) and synergies (green dot)
  • Horizontal scroll with a sticky row header for readability when a category has 10+ tools (ai-model, backend-framework)
  • Deprecated tools are filtered out

Why not a 97×97 grid

9409 cells is more data than a human can scan. The roadmap asks for a heatmap; the category-pair matrix conveys the same "which tools click together" story with much better ergonomics and no perf concerns. A full grid stays open as a follow-up if users actually want it.

Evidence

Full E2E suite output:

5 passed (1.7m)
 ok searches the tool catalog (2.8s)
 ok analyzes pairwise compatibility (3.5s)
 ok shows a compatibility matrix across two categories (3.8s)
 ok shows a basic migration path (1.1s)
 ok generates an idea-to-stack blueprint (35.0s)

Screenshot saved to test-results/compat-matrix.png.

Quality gate (local)

  • pnpm -r type-check — 0 errors
  • pnpm -r lint — 0 errors
  • pnpm -r build — web + api + packages
  • pnpm -r test — 60 unit/API tests pass
  • pnpm test:e2e — 5/5 passed

Notes

Next

Phase 4 gap #3 (TanStack Query sweep of remaining direct fetches) will ship as the third PR in this series.


Open in Devin Review

Summary by cubic

Adds a Matrix heatmap to the Compatibility page so you can compare all tools in one category against another at a glance. The Pairwise analyzer stays the same and scores are computed client-side without extra API calls.

  • New Features

    • New Matrix tab on /compatibility alongside Pairwise, with a simple mode toggle.
    • Pick row and column categories (defaults to frontend × hosting). Cells show harmony scores with a 5‑color scale and conflict/synergy dots; deprecated tools are hidden. Sticky row headers and horizontal scroll aid wide sets.
    • Loads the full catalog once via useCatalog (10‑min cache) and scores all pairs locally with the rules engine. No new API route or N² requests.
  • Refactors

    • Split the page into ModeTabs, PairwiseAnalyzer (unchanged), and MatrixAnalyzer + CompatibilityHeatmap.
    • Added E2E coverage for the Matrix flow and increased the blueprint test timeout for stability.

Written for commit 0eb540e. Summary will update on new commits.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 4 files

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional findings.

Open in Devin Review

Phase 4 gap #2. The Compatibility page was a single pairwise
analyzer. This PR adds a second "Matrix" tab that renders a
category-by-category heatmap so users can survey how every tool
in one category pairs with every tool in another at a glance.

Design
- Two view modes on the Compatibility page: Pairwise (existing)
  and Matrix (new). Tabs use a plain radiogroup-style toggle;
  the pairwise UI is unchanged.
- The matrix fetches the full catalog once via useCatalog (new
  TanStack Query hook) and evaluates every row × column pair
  synchronously using the bundled packages/rules-engine. No
  new API route and no N^2 round-trips.
- Users pick row and column categories (defaults to frontend ×
  hosting). Each cell shows the harmony score with color bucket
  (emerald / lime / amber / orange / red) plus side badges for
  hard conflicts (red dot) and synergies (green dot). Deprecated
  tools are filtered out.
- Horizontal scroll with a sticky row header for readability
  when many tools are in a category (category-heavy picks like
  "ai-model" or "backend-framework" can have 10+ columns).

Why not a 97x97 grid
- 9409 cells is more data than a human can scan. The roadmap
  text asks for a heatmap, not a specific layout; the category-
  pair matrix conveys the same "which tools click together"
  story with much better ergonomics and no perf concerns.

E2E coverage
- New Playwright test "shows a compatibility matrix across two
  categories" navigates to /compatibility, clicks the Matrix
  tab, picks frontend × hosting, and asserts the table renders
  with at least one score cell and contains Next.js and Vercel.
  Screenshot saved to test-results/compat-matrix.png.
- Existing pairwise E2E test continues to pass (pairwise is
  still the default mode).
- Bumped the blueprint E2E timeout to 120s/60s for the same
  reason PR #2 did: parallel AI fan-out can push past 30s.

Quality gate (local)
- pnpm -r type-check: 0 errors
- pnpm -r lint: 0 errors
- pnpm -r build: web + api + packages
- pnpm -r test: 60 unit/API tests pass
- pnpm test:e2e: 5 passed
@Nether403 Nether403 force-pushed the feat/phase-4-compatibility-heatmap branch from 86371b0 to 0eb540e Compare May 12, 2026 11:40
@Nether403 Nether403 merged commit 78aa541 into main May 12, 2026
1 check passed
@Nether403 Nether403 deleted the feat/phase-4-compatibility-heatmap branch May 12, 2026 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant