@@ -6,6 +6,8 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66
77## [ Unreleased]
88
9+ ## [ 1.0.0] - 2025-01-21
10+
911### Added
1012
1113- droid-sync community plugin to README Ecosystem (syncs Factory Droid sessions)
@@ -20,7 +22,6 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2022 - Dashboard and Evals pages filter dropdown options based on Settings preferences
2123 - Backward compatible: defaults to OpenCode and Claude Code for existing users
2224 - Disabling an agent hides it from dropdown but doesn't affect data
23-
2425- "Syncs with" section on Login page showing supported CLI tools (OpenCode, Claude Code, Droid, Cursor)
2526 - Theme-aware icons that switch between dark/light variants
2627 - Cursor shown with "coming soon" badge
@@ -36,116 +37,28 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
3637 - Matches dark mode (zinc-900/zinc-800) and tan mode (cream/tan) design system
3738 - Click outside to close, Escape key support, chevron rotation animation
3839 - Proper hover and active states for both themes
39-
40- ### Changed
41-
42- - Homepage (/) is now public: logged-in users see "Go to Dashboard" button instead of auto-redirect
43- - Logged-in users can visit homepage while staying authenticated
44- - OAuth callback now redirects to /dashboard instead of / after sign-in
45- - Removed auto-redirect from LoginPage when authenticated
46- - Settings back link now navigates to /dashboard instead of homepage
47-
48- ### Fixed
49-
50- - Fixed production logout on page refresh by setting AuthKit devMode to true (avoids third-party cookie blocking)
51- - Simplified ProtectedRoute to use Convex auth as single source of truth
52- - Added 500ms spinner delay to avoid loading flash on fast auth checks
53- - Added 5-second timeout to handle Safari infinite loading issue
54-
55- ### Added
56-
5740- Docs page search with instant typeahead results and keyboard navigation
5841- Search indexes all sections, subsections, and keywords for quick lookup
5942- Cmd/Ctrl+K keyboard shortcut to focus search on Docs page
6043- Search navigates directly to section via hash anchor
6144- Search available in header (desktop) and sidebar (mobile)
62-
63- ### Fixed
64-
65- - Fixed write conflicts in messages: upsert , sessions: upsert , and embeddings: store mutations
66- - Added 5-10 second dedup windows to prevent rapid updates causing OCC conflicts
67- - Refactored messages: upsert to combine session patches into single write operation
68- - Added Promise.all for parallel parts deletion/insertion to reduce conflict windows
69- - Created batch mutations (batchUpsert) for sessions and messages to reduce /sync/batch conflicts
70- - Updated embeddings: store to use replace pattern instead of delete+insert
71- - Added idempotency checks with early returns when no meaningful changes detected
72-
73- ### Added
74-
7545- Real-time Platform Stats leaderboard on Login/homepage with Top Models and Top CLI boxes
7646- Top CLI shows sources (OpenCode, Claude Code, Cursor, Droid, Codex, Amp) sorted by session count
7747- No loading spinner (Convex real-time updates appear instantly)
7848- Public platform stats API query (publicPlatformStats, no auth required) for aggregate platform metrics
7949- Discord community icon in Login page footer (links to convex.dev/community)
8050- Support icon in Login page footer (links to GitHub issues page)
8151- Discussions icon in Login page footer (links to GitHub Discussions)
82-
83- ### Fixed
84-
85- - Fixed provider display showing "unknown" for antigravity-oauth and anthropic-oauth sessions (fixes #2 )
86- - Added inferProvider helper to derive provider from model name when provider field is missing
87- - Applied provider inference consistently in providerStats, sessionsWithDetails query, and filter logic
88- - Fixed auth session persistence: users no longer need to sign in again on page refresh (fixes #1 )
89- - Added dedicated CallbackHandler component for OAuth callback processing with 10s timeout
90- - Added return-to URL preservation so users are redirected to their intended route after sign-in
91- - Added devMode config to AuthKitProvider for proper production session handling
92- - Improved callback flow: waits for both WorkOS and Convex auth to complete before redirecting
93- - Added /dashboard route as alias to root dashboard
94- - Added /profile route that shows Settings page with profile tab auto-selected and expanded
95-
96- ### Added
97-
9852- Slide-over panel for Context search results (click result to preview session without navigating away)
9953- Session details panel with full message thread, syntax highlighting, copy/download actions
10054- Message highlighting when clicking message search results (scrolls to and highlights the specific message)
10155- "Open in Dashboard" button in slide-over to navigate to full dashboard view with session pre-selected
10256- Deep linking support in Dashboard: reads ?session= URL param to auto-select session and switch to Sessions tab
10357- Cmd/Ctrl+K keyboard shortcut on Dashboard navigates to Context search page
104-
105- ### Fixed
106-
107- - Fixed tan mode text contrast in Context search slide-over panel (explicit dark text colors for readability)
108- - Escape key and backdrop click to close slide-over panel
109- - Watch the demo link on Login page CTA section (links to X demo video)
110- - 100% local deployment instructions in OPENSYNC-SETUP.md docs (Convex local backend with Docker)
111- - 100% local deployment section in Docs page (/docs#requirements-local) with step-by-step instructions
112- - Links to opencode.ai and claude.ai in Docs page hero and plugin sections
113- - Trust message on Login page now mentions cloud version and links to local docs (/docs#requirements)
114- - install.md file for AI agent installation following installmd.org spec (self-hosting setup instructions)
115- - Collapsible Profile section in Settings page (collapsed by default for privacy during demos/recordings)
116- - Theme toggle (dark/tan mode) on public session page (/s/: slug )
117- - Mobile-optimized Dashboard: responsive header, filter bars, session rows with stacked layout on small screens
118- - Mobile Context icon in header nav (visible only on mobile for quick access to search)
119-
120- ### Fixed
121-
122- - Fixed Getting Started section on Login page not showing on mobile (was hidden with dashboard preview)
123- - Fixed setup banner flash on dashboard refresh: banner now waits for data to load before showing
124- - Fixed delete account not removing Convex data: changed deletion order to delete Convex data first, then WorkOS
125- - Fixed delete account redirecting to WorkOS logout URL instead of homepage: replaced signOut() with direct redirect
126- - Fixed public sessions not showing all data: added content normalization helpers for multi-plugin support
127- - Fixed public sessions missing textContent fallback when parts array has no displayable content
128- - Added tool-result part type rendering to public sessions (was missing)
129-
130- ### Changed
131-
132- - Removed user email from dropdown menus across all pages (Dashboard, Context, Evals, Header) for cleaner UX
133- - Removed search bar from Dashboard header, added search icon to Context link for cleaner UX
134- - Search functionality consolidated into dedicated Context page (/context)
135- - Login page now supports tan mode theme with icon-only theme switcher in bottom right footer
136- - Login page mockup updated: view tabs (overview/sessions/evals/analytics), 4 stats (sessions/tokens/cost/duration), OC/CC source badges on sessions
137- - Login page tagline now mentions eval datasets: "Build eval datasets across projects"
138- - Login page feature list updated: added Tag feature for eval organization, improved keyword colors for better contrast in dark mode
139- - Trust message and plugin link text improved for readability in dark mode (zinc-400 to zinc-100)
140- - Docs page sidebar and main content now use hidden scrollbar for cleaner UI
141-
142- ### Added
143-
14458- Page-specific theme defaults configuration (PAGE_THEME_DEFAULTS) in theme.tsx
14559- usePageTheme hook to apply different default themes per page (login: dark, dashboard: tan)
14660- PageType type for type-safe page identifiers (login, dashboard, docs, settings, default)
14761- getPageDefaultTheme helper function for retrieving page-specific defaults
148-
14962- Comprehensive documentation page with Mintlify-style UI
15063- Left sidebar navigation with collapsible sections and anchor tags
15164- Right table of contents for on-page navigation
@@ -157,14 +70,11 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
15770- Documentation sections: Use Hosted Version, Requirements, Quick Start, Dashboard Features, OpenCode Plugin, Claude Code Plugin, API Reference, Search Types, Authentication, Hosting, Fork Guide, Troubleshooting, FAQ
15871- Mobile responsive design with slide-out sidebar
15972- Theme support for both dark and tan modes
160-
16173- GitHub icon link in Login page footer (bottom left, links to opensync repo)
162-
16374- Setup banner on Dashboard Overview for new users with no synced data
16475- Banner links to opencode-sync-plugin and claude-code-sync repos with npm install commands
16576- Dismissible banner with X button, state persists in localStorage
16677- Theme switcher on Login page footer (Sun/Moon icon, no text labels)
167-
16878- Delete synced data option in Settings (removes all sessions, messages, embeddings while keeping account)
16979- Delete account option in Settings (calls WorkOS API to delete user, removes all Convex data)
17080- Danger Zone section in Profile tab with confirmation modals for destructive actions
@@ -220,28 +130,22 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
220130- New stat cards with icons for token breakdown (prompt, completion, total, messages, duration)
221131- Projects Overview filtering (search, min sessions, min tokens) with sortable columns
222132
223- ### Fixed
224-
225- - Fixed Claude Code session content rendering with empty blocks
226- - Added content normalization helpers to handle different part formats (string vs ` { text: "..." } ` vs ` { content: "..." } ` )
227- - SessionViewer now properly extracts text content from all plugin formats
228- - Added fallback to ` message.textContent ` when parts have no displayable content
229- - Updated markdown export, API export, and context functions with same content normalization
230- - Fixed searchable text extraction in message upsert for better full-text search on Claude Code sessions
231- - Enhanced embedding generation to use parts content as fallback when textContent is empty
232- - Fixed session persistence on page refresh with improved token refresh logic and retry mechanism
233- - Auth sync now retries up to 3 times with proper state management to prevent infinite loops
234- - Added 5-second timeout on session sync in ProtectedRoute to prevent stuck loading states
235- - Removed devMode dependency for session persistence (works in both dev and production)
236- - Fixed Tokens/Cost/Duration table header alignment in sessions view
237- - Fixed markdown download with sanitized filenames and date timestamps
238- - Added loading state to download button when markdown is being fetched
239- - Fixed markdown export to include message content from parts and textContent fallback
240- - Fixed Consumption Breakdown filters to actually filter model/project stats
241- - Fixed StackedBarChart height rendering with proper flex layout and minHeight values
242-
243133### Changed
244134
135+ - Homepage (/) is now public: logged-in users see "Go to Dashboard" button instead of auto-redirect
136+ - Logged-in users can visit homepage while staying authenticated
137+ - OAuth callback now redirects to /dashboard instead of / after sign-in
138+ - Removed auto-redirect from LoginPage when authenticated
139+ - Settings back link now navigates to /dashboard instead of homepage
140+ - Removed user email from dropdown menus across all pages (Dashboard, Context, Evals, Header) for cleaner UX
141+ - Removed search bar from Dashboard header, added search icon to Context link for cleaner UX
142+ - Search functionality consolidated into dedicated Context page (/context)
143+ - Login page now supports tan mode theme with icon-only theme switcher in bottom right footer
144+ - Login page mockup updated: view tabs (overview/sessions/evals/analytics), 4 stats (sessions/tokens/cost/duration), OC/CC source badges on sessions
145+ - Login page tagline now mentions eval datasets: "Build eval datasets across projects"
146+ - Login page feature list updated: added Tag feature for eval organization, improved keyword colors for better contrast in dark mode
147+ - Trust message and plugin link text improved for readability in dark mode (zinc-400 to zinc-100)
148+ - Docs page sidebar and main content now use hidden scrollbar for cleaner UI
245149- Overview layout: Usage Overview section moved above Recent Sessions, Token Usage and Model Distribution moved to bottom
246150- Removed EnvStatus debug component from login page footer (cleaner production UI)
247151- Removed Daily Activity chart from Analytics view (replaced with more detailed metrics)
@@ -271,8 +175,65 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
271175- Plugins accept both ` .convex.cloud ` and ` .convex.site ` URL formats
272176- No browser authentication required for plugins
273177
274- ### Fixed (Build and Deployment)
178+ ### Fixed
275179
180+ - Fixed production logout on page refresh by setting AuthKit devMode to true (avoids third-party cookie blocking)
181+ - Simplified ProtectedRoute to use Convex auth as single source of truth
182+ - Added 500ms spinner delay to avoid loading flash on fast auth checks
183+ - Added 5-second timeout to handle Safari infinite loading issue
184+ - Fixed write conflicts in messages: upsert , sessions: upsert , and embeddings: store mutations
185+ - Added 5-10 second dedup windows to prevent rapid updates causing OCC conflicts
186+ - Refactored messages: upsert to combine session patches into single write operation
187+ - Added Promise.all for parallel parts deletion/insertion to reduce conflict windows
188+ - Created batch mutations (batchUpsert) for sessions and messages to reduce /sync/batch conflicts
189+ - Updated embeddings: store to use replace pattern instead of delete+insert
190+ - Added idempotency checks with early returns when no meaningful changes detected
191+ - Fixed provider display showing "unknown" for antigravity-oauth and anthropic-oauth sessions (fixes #2 )
192+ - Added inferProvider helper to derive provider from model name when provider field is missing
193+ - Applied provider inference consistently in providerStats, sessionsWithDetails query, and filter logic
194+ - Fixed auth session persistence: users no longer need to sign in again on page refresh (fixes #1 )
195+ - Added dedicated CallbackHandler component for OAuth callback processing with 10s timeout
196+ - Added return-to URL preservation so users are redirected to their intended route after sign-in
197+ - Added devMode config to AuthKitProvider for proper production session handling
198+ - Improved callback flow: waits for both WorkOS and Convex auth to complete before redirecting
199+ - Added /dashboard route as alias to root dashboard
200+ - Added /profile route that shows Settings page with profile tab auto-selected and expanded
201+ - Fixed tan mode text contrast in Context search slide-over panel (explicit dark text colors for readability)
202+ - Escape key and backdrop click to close slide-over panel
203+ - Watch the demo link on Login page CTA section (links to X demo video)
204+ - 100% local deployment instructions in OPENSYNC-SETUP.md docs (Convex local backend with Docker)
205+ - 100% local deployment section in Docs page (/docs#requirements-local) with step-by-step instructions
206+ - Links to opencode.ai and claude.ai in Docs page hero and plugin sections
207+ - Trust message on Login page now mentions cloud version and links to local docs (/docs#requirements)
208+ - install.md file for AI agent installation following installmd.org spec (self-hosting setup instructions)
209+ - Collapsible Profile section in Settings page (collapsed by default for privacy during demos/recordings)
210+ - Theme toggle (dark/tan mode) on public session page (/s/: slug )
211+ - Mobile-optimized Dashboard: responsive header, filter bars, session rows with stacked layout on small screens
212+ - Mobile Context icon in header nav (visible only on mobile for quick access to search)
213+ - Fixed Getting Started section on Login page not showing on mobile (was hidden with dashboard preview)
214+ - Fixed setup banner flash on dashboard refresh: banner now waits for data to load before showing
215+ - Fixed delete account not removing Convex data: changed deletion order to delete Convex data first, then WorkOS
216+ - Fixed delete account redirecting to WorkOS logout URL instead of homepage: replaced signOut() with direct redirect
217+ - Fixed public sessions not showing all data: added content normalization helpers for multi-plugin support
218+ - Fixed public sessions missing textContent fallback when parts array has no displayable content
219+ - Added tool-result part type rendering to public sessions (was missing)
220+ - Fixed Claude Code session content rendering with empty blocks
221+ - Added content normalization helpers to handle different part formats (string vs ` { text: "..." } ` vs ` { content: "..." } ` )
222+ - SessionViewer now properly extracts text content from all plugin formats
223+ - Added fallback to ` message.textContent ` when parts have no displayable content
224+ - Updated markdown export, API export, and context functions with same content normalization
225+ - Fixed searchable text extraction in message upsert for better full-text search on Claude Code sessions
226+ - Enhanced embedding generation to use parts content as fallback when textContent is empty
227+ - Fixed session persistence on page refresh with improved token refresh logic and retry mechanism
228+ - Auth sync now retries up to 3 times with proper state management to prevent infinite loops
229+ - Added 5-second timeout on session sync in ProtectedRoute to prevent stuck loading states
230+ - Removed devMode dependency for session persistence (works in both dev and production)
231+ - Fixed Tokens/Cost/Duration table header alignment in sessions view
232+ - Fixed markdown download with sanitized filenames and date timestamps
233+ - Added loading state to download button when markdown is being fetched
234+ - Fixed markdown export to include message content from parts and textContent fallback
235+ - Fixed Consumption Breakdown filters to actually filter model/project stats
236+ - Fixed StackedBarChart height rendering with proper flex layout and minHeight values
276237- Fixed "Session not found" error when messages sync before their sessions (auto-creates session)
277238- Fixed Netlify build errors for TypeScript compilation
278239- Added ` src/vite-env.d.ts ` for Vite client types (import.meta.env)
@@ -296,7 +257,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
296257- Updated CLAUDE-CODE-PLUGIN.md with API Key authentication and CLI commands
297258- Updated SETUP.md Step 9 and data flow diagram for API Key auth
298259
299- ## [ 0.1.0] - 2026 -01-17
260+ ## [ 0.1.0] - 2025 -01-17
300261
301262Initial release.
302263
0 commit comments