Skip to content

Commit b3b0483

Browse files
committed
Move stats components to dedicated /stats page to isolate from homepage
1 parent 2abe331 commit b3b0483

6 files changed

Lines changed: 501 additions & 431 deletions

File tree

changelog.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,25 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2121

2222
### Added
2323

24-
- Temporary message milestone counter on Login page (real-time document count from messages table)
24+
- New public /stats page with platform statistics (isolated from homepage)
25+
- Message milestone counter with real-time document count
2526
- Dynamic milestone targets (500k, 600k, etc.) that auto-update as counts grow
2627
- Progress bar showing percentage towards next milestone
27-
- Raw number display with comma formatting for exact count
28-
- Abbreviated format for milestone target (e.g., 500k)
29-
- Marked with TODO comments for future removal
30-
- Temporary animated growth chart on Login page
31-
- SVG-based line chart showing cumulative message growth over days
28+
- Animated growth chart with SVG line showing cumulative message growth
3229
- Play/Reset animation controls (no auto-play)
3330
- Dynamic Y-axis scaling based on actual data
3431
- X-axis date labels (first, middle, last dates)
35-
- Gradient fill under line for visual appeal
36-
- Marked with TODO comments for future removal
32+
- Dark/tan theme support with theme toggle
33+
- Back link to homepage
3734
- New Convex queries in analytics.ts:
3835
- publicMessageCount: total message documents count (no auth required)
3936
- publicMessageGrowth: daily message counts with cumulative totals (no auth required)
37+
38+
### Changed
39+
40+
- Moved stats components from Login page to dedicated /stats page
41+
- Prevents potential rendering issues from impacting homepage
42+
- Stats accessible via /stats route (public, no auth required)
4043
- codex-sync plugin integration: sync OpenAI Codex CLI sessions to OpenSync
4144
- Added codex-sync to README Ecosystem table and Quick Start section
4245
- Added Codex CLI to AI Coding Agents in Settings (status: supported)

files.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Backend functions and schema.
2929
| `users.ts` | User queries/mutations: getOrCreate, me (returns enabledAgents), stats, API key management, updateEnabledAgents, deleteAllData (parallel deletes for all 7 tables: parts, messages, sessions, sessionEmbeddings, messageEmbeddings, dailyWrapped, apiLogs), deleteAccount (deletes Convex first, then WorkOS to prevent partial deletion) |
3030
| `sessions.ts` | Session CRUD: list, get, getPublic, setVisibility, remove, getMarkdown, upsert (with 10s dedup window, idempotency), batchUpsert, listExternalIds, exportAllDataCSV |
3131
| `messages.ts` | Message mutations: upsert (with 5s dedup, combined session patch, parallel parts ops), batchUpsert for bulk sync |
32-
| `analytics.ts` | Analytics queries with source filtering: dailyStats, modelStats, projectStats, providerStats, summaryStats, sessionsWithDetails, sourceStats, publicPlatformStats (no auth, for homepage leaderboard), publicMessageCount (no auth, total message docs), publicMessageGrowth (no auth, daily growth with cumulative). Includes inferProvider helper with OAuth provider normalization (antigravity-oauth to google, anthropic-oauth to anthropic) and model-based provider detection (including Codex models mapped to openai) |
32+
| `analytics.ts` | Analytics queries with source filtering: dailyStats, modelStats, projectStats, providerStats, summaryStats, sessionsWithDetails, sourceStats, publicPlatformStats (no auth, for homepage leaderboard), publicMessageCount (no auth, total message docs for /stats page), publicMessageGrowth (no auth, daily growth with cumulative totals for /stats page, includes safety checks for invalid dates). Includes inferProvider helper with OAuth provider normalization (antigravity-oauth to google, anthropic-oauth to anthropic) and model-based provider detection (including Codex models mapped to openai) |
3333
| `search.ts` | Full-text and semantic search: searchSessions, searchSessionsPaginated, searchMessages, searchMessagesPaginated, semanticSearch, hybridSearch, semanticSearchMessages, hybridSearchMessages |
3434
| `embeddings.ts` | Vector embedding generation with idempotency checks and replace pattern for session-level and message-level semantic search |
3535
| `evals.ts` | Eval management: setEvalReady, listEvalSessions (with factoryDroid stats), getEvalTags, generateEvalExport (DeepEval JSON, OpenAI JSONL, Filesystem formats) |
@@ -48,15 +48,16 @@ React frontend application.
4848
| File | Description |
4949
|------|-------------|
5050
| `main.tsx` | App entry point with providers (Convex, AuthKit, Router), devMode=true for localStorage tokens (avoids third-party cookie blocking in production) |
51-
| `App.tsx` | Route definitions: public routes (/, /login, /docs, /s/:slug), protected routes (/dashboard, /profile, /settings, /evals, /context). ProtectedRoute with delayed spinner (500ms) and Safari timeout (5s), CallbackHandler for OAuth code exchange, return-to URL preservation |
51+
| `App.tsx` | Route definitions: public routes (/, /login, /docs, /stats, /s/:slug), protected routes (/dashboard, /profile, /settings, /evals, /context). ProtectedRoute with delayed spinner (500ms) and Safari timeout (5s), CallbackHandler for OAuth code exchange, return-to URL preservation |
5252
| `index.css` | Global styles, Tailwind imports, dark theme tokens, chart utilities, scrollbar-hide utility, mobile touch scrolling improvements (dvh, touch-action, webkit-overflow-scrolling) |
5353
| `vite-env.d.ts` | Vite client type declarations for import.meta.env |
5454

5555
### src/pages/
5656

5757
| File | Description |
5858
|------|-------------|
59-
| `Login.tsx` | Public homepage with WorkOS AuthKit integration. Shows "Go to Dashboard" button when logged in (no auto-redirect), "Sign in" when logged out. Includes privacy messaging, "Syncs with" section showing supported CLI tools (OpenCode, Claude Code, Droid, Codex CLI, Cursor with coming soon badge), getting started section with plugin links including codex-sync (mobile-visible), tan mode theme support with footer (theme switcher, Terms/Privacy links), footer icons (GitHub, Discord, Support, Discussions), updated mockup with view tabs and OC/CC source badges (desktop-only), feature list with Sync/Search/Private/Tag/Export/Delete keywords and eval datasets tagline, Watch the demo link, trust message with cloud/local deployment info, real-time Platform Stats leaderboard (Top Models, Top CLI) above Open Source footer link, TEMP: MessageMilestoneCounter (real-time message count with dynamic milestones), TEMP: AnimatedGrowthChart (SVG chart with play/reset animation showing message growth over days) |
59+
| `Login.tsx` | Public homepage with WorkOS AuthKit integration. Shows "Go to Dashboard" button when logged in (no auto-redirect), "Sign in" when logged out. Includes privacy messaging, "Syncs with" section showing supported CLI tools (OpenCode, Claude Code, Droid, Codex CLI, Cursor with coming soon badge), getting started section with plugin links including codex-sync (mobile-visible), tan mode theme support with footer (theme switcher, Terms/Privacy links), footer icons (GitHub, Discord, Support, Discussions), updated mockup with view tabs and OC/CC source badges (desktop-only), feature list with Sync/Search/Private/Tag/Export/Delete keywords and eval datasets tagline, Watch the demo link, trust message with cloud/local deployment info, real-time Platform Stats leaderboard (Top Models, Top CLI) above Open Source footer link |
60+
| `Stats.tsx` | Public stats page (/stats) with platform statistics isolated from homepage. Includes MessageMilestoneCounter (real-time message count with dynamic milestones, progress bar), AnimatedGrowthChart (SVG chart with play/reset animation showing cumulative message growth over days, dynamic Y-axis scaling, X-axis date labels). Theme toggle, back link to homepage. No auth required. |
6061
| `Dashboard.tsx` | Main dashboard with custom themed source filter dropdown (filters by user's enabled agents from Settings, dark/tan mode support, click-outside close, escape key close), source badges (CC/OC/FD), eval toggle button, Context link with search icon, setup banner for new users with 3-column plugin cards (OpenCode, Claude Code, Factory Droid), mobile-optimized header/filters/session rows, URL param support for deep linking from Context search (?session=id), Cmd/Ctrl+K shortcut to open Context search, MessageBubble with content normalization helpers (getPartTextContent, getToolName) for multi-plugin format support, flash-free session transitions using lastValidSessionRef cache (shows cached content until new data loads, subtle corner spinner), and five views: Overview (responsive stat grids), Sessions (mobile-friendly list with stacked layout), Evals (eval-ready sessions with export modal), Analytics (responsive breakdowns with collapsible filters), Wrapped (Daily Sync Wrapped visualization) |
6162
| `Settings.tsx` | Tabbed settings: API Access (two-column layout with Plugin Setup and AI Coding Agents sections, keys, endpoints with plugin links including codex-sync), Profile (collapsible section for privacy, account info, Legal section with Terms/Privacy links, Danger Zone with delete data/account options). AI Coding Agents section lets users enable/disable CLI tools for the source filter dropdown (OpenCode, Claude Code, Factory Droid, Codex CLI with supported status, Cursor, Continue, Amp, Aider, Goose, Mentat, Cline, Kilo Code). Back link navigates to /dashboard |
6263
| `Docs.tsx` | Comprehensive documentation page with instant typeahead search (Cmd/Ctrl+K shortcut), left sidebar navigation (hidden scrollbar) with npm links (opencode-sync-plugin, claude-code-sync, codex-sync), right table of contents, anchor tags, copy/view as markdown buttons, mobile responsive, works with both dark/tan themes. Search indexes all sections with keywords for quick navigation to any topic via hash anchor. Covers use hosted version (with features, 3-plugin install cards with OC/CC/CX badges, login/sync for all three plugins), self-hosting requirements with cloud and 100% local deployment options, quick start (3-plugin cards), dashboard features, OpenCode plugin, Claude Code plugin, Codex CLI plugin with full documentation sections, API reference, search types, authentication, hosting, fork guide, troubleshooting, and FAQ. Links to opencode.ai, claude.ai, and openai.com/codex in hero and plugin sections. |

src/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { PublicSessionPage } from "./pages/PublicSession";
1111
import { SettingsPage } from "./pages/Settings";
1212
import { EvalsPage } from "./pages/Evals";
1313
import { ContextPage } from "./pages/Context";
14+
import { StatsPage } from "./pages/Stats";
1415
import { Loader2, ArrowLeft } from "lucide-react";
1516

1617
// Storage key for preserving intended route across auth flow
@@ -167,6 +168,7 @@ export default function App() {
167168
<Route path="/callback" element={<CallbackHandler />} />
168169
<Route path="/s/:slug" element={<PublicSessionPage />} />
169170
<Route path="/docs" element={<DocsPage />} />
171+
<Route path="/stats" element={<StatsPage />} />
170172
<Route
171173
path="/settings"
172174
element={

0 commit comments

Comments
 (0)