feat(web): add compatibility matrix heatmap view#3
Merged
Conversation
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
86371b0 to
0eb540e
Compare
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.
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
/compatibility: Pairwise (existing, unchanged) and Matrix (new)useCatalogTanStack Query hook and evaluates every row × column pair client-side with the bundledpackages/rules-engine— no new API route, no N² round-tripsai-model,backend-framework)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:
Screenshot saved to
test-results/compat-matrix.png.Quality gate (local)
pnpm -r type-check— 0 errorspnpm -r lint— 0 errorspnpm -r build— web + api + packagespnpm -r test— 60 unit/API tests passpnpm test:e2e— 5/5 passedNotes
Next
Phase 4 gap #3 (TanStack Query sweep of remaining direct fetches) will ship as the third PR in this series.
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
/compatibilityalongside Pairwise, with a simple mode toggle.useCatalog(10‑min cache) and scores all pairs locally with the rules engine. No new API route or N² requests.Refactors
ModeTabs,PairwiseAnalyzer(unchanged), andMatrixAnalyzer+CompatibilityHeatmap.Written for commit 0eb540e. Summary will update on new commits.