Skip to content

Commit b945f3a

Browse files
committed
Comment out Stats page to reduce Convex reads, update README tagline
1 parent 351f702 commit b945f3a

7 files changed

Lines changed: 176 additions & 12 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# OpenSync
22

3-
Dashboards for OpenCode and Claude coding sessions.
3+
Dashboards for OpenCode, Claude Code, Codex, Factory Droid and more.
44

55
Cloud-synced dashboards that track session activity, tool usage, and token spend. Build eval datasets across projects.
66

changelog.md

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

99
### Changed
1010

11+
- Updated README tagline to "Dashboards for OpenCode, Claude Code, Codex, Factory Droid and more"
12+
- Commented out Stats page (/stats) to reduce Convex database reads
13+
- Route still exists but shows placeholder message
14+
- Original code preserved in block comment for future re-enabling
15+
- No longer reads from api.analytics.publicMessageCount or publicMessageGrowth
1116
- Simplified stats page UI
1217
- Removed Play/Reset animation controls from growth chart (static display only)
1318
- Removed milestone progress bar and "% to target" from message counter

docs/opensync-501k-announcement.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# OpenSync 501K messages announcement
2+
3+
Content for GitHub Discussion, X, and LinkedIn.
4+
5+
---
6+
7+
## GitHub Discussion Post
8+
9+
# Thanks for using OpenSync
10+
11+
![Messages synced stats showing 500,517 messages]
12+
13+
Six days in, developers have synced over 501,000 messages through OpenSync.
14+
15+
The numbers:
16+
17+
**Top models by tokens**
18+
19+
1. claude-opus-4-5: 4.36B tokens
20+
2. gpt-5-codex: 927.6M tokens
21+
3. gpt-5.2-codex: 629.4M tokens
22+
23+
**Top CLIs by sessions**
24+
25+
1. OpenCode: 15,432 sessions
26+
2. Claude Code: 2,952 sessions
27+
3. Codex CLI: 1,214 sessions
28+
29+
Devs are syncing from:
30+
31+
- OpenCode
32+
- Claude Code
33+
- Factory Droid (community plugin by @yemyat)
34+
- Codex CLI
35+
36+
OpenSync tracks session activity, tool usage, and token spend. You can tag sessions and export eval datasets.
37+
38+
**Plugin ecosystem**
39+
40+
| Plugin | Install |
41+
| -------------------- | ------------------------------------- |
42+
| opencode-sync-plugin | `npm install -g opencode-sync-plugin` |
43+
| claude-code-sync | `npm install -g claude-code-sync` |
44+
| droid-sync | `npm install -g droid-sync` |
45+
| codex-sync | `npm install -g codex-sync` |
46+
47+
OpenSync is open source. You can self-host it:
48+
49+
```bash
50+
git clone https://github.com/waynesutton/opensync.git
51+
cd opensync
52+
npm install
53+
npx convex dev
54+
```
55+
56+
Repo: https://github.com/waynesutton/opensync
57+
58+
Thanks for building with OpenSync.
59+
60+
---
61+
62+
## Tweet
63+
64+
Shipped opensync.dev 6 days ago.
65+
66+
501K messages synced. 15K+ OpenCode sessions. 4.3B tokens through claude-opus-4-5.
67+
68+
Devs syncing from OpenCode, Claude Code, Factory Droid, and Codex CLI.
69+
70+
Open source. Self-hostable.
71+
72+
github.com/waynesutton/opensync
73+
74+
---
75+
76+
## LinkedIn Post
77+
78+
Shipped opensync.dev six days ago.
79+
80+
The stats so far:
81+
82+
501,000+ messages synced
83+
15,432 OpenCode sessions
84+
4.36B tokens through claude-opus-4-5
85+
86+
Developers are syncing their AI coding sessions from OpenCode, Claude Code, Factory Droid, and Codex CLI.
87+
88+
OpenSync tracks session activity, tool usage, and token spend. You can export eval datasets from real coding sessions.
89+
90+
It's open source. You can self-host it.
91+
92+
https://github.com/waynesutton/opensync

files.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ React frontend application.
5757
| File | Description |
5858
|------|-------------|
5959
| `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 (total messages synced), GrowthChart (static SVG chart showing cumulative message growth over 60 days, dynamic Y-axis scaling, X-axis date labels), plus a local error boundary and data guards so chart failures do not blank the app. Theme toggle, temp refresh button, back link to homepage. No auth required. |
60+
| `Stats.tsx` | Public stats page (/stats) COMMENTED OUT to reduce Convex reads. Route still exists but shows placeholder "Stats page is currently disabled" message. Original code preserved in block comment for future use. Previously included MessageMilestoneCounter, GrowthChart, error boundary. |
6161
| `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) |
6262
| `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 |
6363
| `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/pages/Login.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,8 @@ export function LoginPage() {
396396
<h2
397397
className={`mt-8 text-lg font-medium sm:text-xl ${isDark ? "text-zinc-200" : "text-[#1a1a1a]"}`}
398398
>
399-
Dashboards for OpenCode and Claude coding sessions
399+
Dashboards for OpenCode, Claude Code, Codex, Factory Droid, and
400+
more.
400401
</h2>
401402
<p
402403
className={`mt-3 text-sm sm:text-base leading-relaxed ${isDark ? "text-zinc-300" : "text-[#1a1a1a]"}`}

src/pages/Stats.tsx

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,67 @@
1+
// =============================================================================
2+
// STATS PAGE - COMMENTED OUT (preserved for future use)
3+
// This page previously displayed platform stats with message counts and growth charts.
4+
// Commented out to reduce Convex reads. Route still exists at /stats but is not linked.
5+
// To re-enable: uncomment the code below and remove the placeholder component.
6+
// =============================================================================
7+
8+
import { Link } from "react-router-dom";
9+
import { useTheme } from "../lib/theme";
10+
import { ArrowLeft } from "lucide-react";
11+
12+
// Placeholder component - no Convex reads
13+
export function StatsPage() {
14+
const { theme } = useTheme();
15+
const isDark = theme === "dark";
16+
17+
return (
18+
<div
19+
className={`min-h-screen ${
20+
isDark ? "bg-[#0a0a0a] text-zinc-100" : "bg-[#f8f6f3] text-[#1a1a1a]"
21+
}`}
22+
>
23+
<header
24+
className={`border-b ${
25+
isDark
26+
? "border-zinc-800 bg-[#0a0a0a]"
27+
: "border-[#e6e4e1] bg-[#f8f6f3]"
28+
}`}
29+
>
30+
<div className="max-w-4xl mx-auto px-4 py-4 flex items-center gap-4">
31+
<Link
32+
to="/"
33+
className={`flex items-center gap-2 text-sm ${
34+
isDark
35+
? "text-zinc-400 hover:text-zinc-200"
36+
: "text-[#8b7355] hover:text-[#1a1a1a]"
37+
}`}
38+
>
39+
<ArrowLeft className="h-4 w-4" />
40+
Back
41+
</Link>
42+
<h1
43+
className={`text-lg font-semibold ${
44+
isDark ? "text-zinc-100" : "text-[#1a1a1a]"
45+
}`}
46+
>
47+
Platform Stats
48+
</h1>
49+
</div>
50+
</header>
51+
52+
<main className="max-w-4xl mx-auto px-4 py-16 text-center">
53+
<p className={`text-sm ${isDark ? "text-zinc-500" : "text-[#8b7355]"}`}>
54+
Stats page is currently disabled.
55+
</p>
56+
</main>
57+
</div>
58+
);
59+
}
60+
61+
/* =============================================================================
62+
ORIGINAL CODE - PRESERVED FOR FUTURE USE
63+
=============================================================================
64+
165
import { useState, useEffect, Component, type ReactNode } from "react";
266
import { useConvex } from "convex/react";
367
import { api } from "../../convex/_generated/api";
@@ -183,7 +247,6 @@ function MessageMilestoneCounter({
183247
)}
184248
</h3>
185249
186-
{/* Count display */}
187250
<div>
188251
<span
189252
className={`text-3xl font-bold tabular-nums ${
@@ -545,7 +608,6 @@ function StatsPageContent({ theme, setTheme }: StatsPageContentProps) {
545608
isDark ? "bg-[#0a0a0a] text-zinc-100" : "bg-[#f8f6f3] text-[#1a1a1a]"
546609
}`}
547610
>
548-
{/* Header */}
549611
<header
550612
className={`border-b ${
551613
isDark
@@ -576,7 +638,6 @@ function StatsPageContent({ theme, setTheme }: StatsPageContentProps) {
576638
</div>
577639
578640
<div className="flex items-center gap-2">
579-
{/* TEMP: Manual refresh button - remove later */}
580641
<button
581642
onClick={handleManualRefresh}
582643
className={`p-2 rounded-md ${
@@ -589,7 +650,6 @@ function StatsPageContent({ theme, setTheme }: StatsPageContentProps) {
589650
<RefreshCw className="h-4 w-4" />
590651
</button>
591652
592-
{/* Theme toggle */}
593653
<button
594654
onClick={() => setTheme(isDark ? "tan" : "dark")}
595655
className={`p-2 rounded-md ${
@@ -608,17 +668,12 @@ function StatsPageContent({ theme, setTheme }: StatsPageContentProps) {
608668
</div>
609669
</header>
610670
611-
{/* Main content */}
612671
<main className="max-w-4xl mx-auto px-4 py-8">
613672
<div className="grid gap-6 md:grid-cols-2">
614-
{/* Message milestone counter */}
615673
<MessageMilestoneCounter isDark={isDark} refreshToken={refreshToken} />
616-
617-
{/* Growth chart */}
618674
<GrowthChart isDark={isDark} refreshToken={refreshToken} />
619675
</div>
620676
621-
{/* Info text */}
622677
<p
623678
className={`mt-8 text-center text-sm ${
624679
isDark ? "text-zinc-600" : "text-[#8b7355]"
@@ -641,3 +696,5 @@ export function StatsPage() {
641696
</StatsErrorBoundary>
642697
);
643698
}
699+
700+
============================================================================= */

task.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ OpenSync supports two AI coding tools: **OpenCode** and **Claude Code**.
88

99
- [ ] (add next task here)
1010

11+
## Recently Completed (Stats Page Disabled)
12+
13+
- [x] Commented out Stats page to reduce Convex reads
14+
- Route /stats still exists but shows placeholder
15+
- Original code preserved in block comment (700+ lines)
16+
- No longer queries api.analytics.publicMessageCount or publicMessageGrowth
17+
- Page not linked from anywhere (no navigation changes needed)
18+
- [x] Updated README tagline to include all supported tools (OpenCode, Claude Code, Codex, Factory Droid)
19+
1120
## Recently Completed (Mobile Scrolling Fixes)
1221

1322
- [x] Fixed mobile scrolling issues across Dashboard

0 commit comments

Comments
 (0)