Features Page
One page that outlines every user-facing surface in the app: each feature's name, a one-line description, its route, and a link to its long-form doc, grouped into seven categories and filtered by a search box.
- Route:
/practice/features - Panel:
apps/debate-ai.com/lib/ui/features/FeaturesPanel.tsx(catalog data lives indebate-webview'ssrc/lib/feature-catalog.ts)
Why this exists
Nothing in the app listed everything it does — the dock's Settings menu is
a flat list of forty-odd items, /research and /coaching each tab across
one package's panels, and the feature catalog deliberately omits core
workspaces and standings. This page is the map.
What it shows
The same banner and badge rows as the repository's root README.md, a
header count line, a strip of the five workspace screenshots from the README
(CARDS, FIAT, LEARN, STREAM, REASON) each linking to its route, the CARDS
overview and seven-point vision (anchored at #cards-vision), a Downloads
section under the badges (the Chrome extension install button, which used to
sit on the card search's empty state), a search box (matching title/description/route/hidden
tags), and a tab bar of the feature categories (Core Workspaces, Evidence &
Research, Team Collaboration, Flowing & Round Analysis, Pre-Round
Intelligence, Practice & Coaching, Recognition & Progress), each tab showing
its feature count. One category is shown at a time: the first tab is
selected on load, clicking a tab shows only that category's feature cards,
and a #<category> link (for example /features#practice) opens on that
tab. Searching narrows every tab's count, and if the selected tab has no
matches the first tab that does is shown. Each feature card links to its
route and docs page.
Pointing at a card lights it up — a gradient that follows the cursor, a glowing border and a coloured title — in a shade of its own, so neighbouring cards never come up the same colour.
How it works
debate-webview's src/lib/feature-catalog.ts holds the pure data
(APP_FEATURES, buildFeatureSections, searchFeatures); FeaturesPanel.tsx
renders it. Titles/descriptions are copied from each route's own metadata.
The README's banner, badges and imgur screenshots are mirrored in
features/readme-media.ts; a test compares it against README.md and fails
when the two drift, so edit the README first and then the mirror.
Known gaps
The catalog is a hand-maintained registry — a new route has to be added to it separately.
