Commit Graph
20 Commits
Author SHA1 Message Date
kcarandClaude Sonnet 4.6 d789586fca fix: nginx serves index.html with no-cache headers
Vite hashes all JS/CSS assets, so those can be cached for 30 days.
But index.html must never be cached — it references the current hashes.
Caching index.html meant users ran old JS after deploys.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-21 17:54:49 +00:00
kcarandClaude Sonnet 4.6 3c0fd4f647 fix: FullContextRoutes no longer blocks on Neo4j contexts
Removed NeoUserContext and NeoInstituteContext from the gateway
spinner. They were blocking ALL authenticated routes until Neo4j
graph data was loaded, which took 1-8 seconds and caused persistent
spinners. Now only UserContext (Supabase profile, ~200ms) must be
ready before routes render. Each page handles its own graph data
loading state independently.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-21 17:52:31 +00:00
kcarandClaude Sonnet 4.6 679653c118 fix: workspace spinner — use profile (not null user) and add 8s context timeouts
singlePlayerPage was using useUser().user which is always null (no setter
in UserContext). This caused the redirect effect to always fire, making
the workspace completely inaccessible. Fixed by destructuring profile as
user, which IS properly set from the Supabase profiles query.

Also added 8s timeout to NeoUserContext.switchContext call to match the
NeoInstituteContext timeout fix, preventing infinite spinner if the
navigation API call hangs.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-21 17:43:38 +00:00
kcarandClaude Sonnet 4.6 ab1f8111f6 fix: add 8s timeout to NeoInstituteContext school node fetch
Races the SchoolNeoDBService.getSchoolNode() call against an 8-second
timeout. If Neo4j is slow or unavailable the workspace now loads within
seconds rather than waiting for the full axios 120s timeout. The context
degrades gracefully — workspace opens without institute data, error is
logged as a warning not an exception.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-21 17:28:57 +00:00
kcarandClaude Sonnet 4.6 d3c2a9bdff security: pass TLSYNC_SECRET token in sync WebSocket URI
Reads VITE_TLSYNC_SECRET from env and appends ?token=... to the
/connect/:roomId WebSocket URI so tlsync server can authenticate connections.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-21 17:09:39 +00:00
kcar 06f761e750 feat(cis): add Keywords tab — watches, real-time detection, match log (Phase 3C)
- KeywordWatch and KeywordMatch interfaces in transcriptionStore
- loadKeywordWatches, addKeywordWatch, deleteKeywordWatch actions via API with JWT auth
- checkSegmentForKeywords: client-side detection on each final segment, logs events to backend
- clearKeywordMatches: resets session-scoped match list
- Keywords tab in CCTranscriptionPanel: add/delete watches, match log with timestamp
- Match count badge on Keywords tab when hits exist during recording
- Also fixes missing Close import that was present in summary modal
2026-05-21 12:21:17 +00:00
kcar 4d10d75003 fix(cis): fix JSX syntax errors and import paths for Phase 3 build
- Fix broken template literal in transcriptionStore.ts export function
- Fix broken regex in Content-Disposition parser
- Fix broken character class in filename sanitization
- Fix LLMConfigModal import path (5 levels up, not 6)
- Export button JSX properly nested in CCTranscriptionPanel
- Build now passes cleanly
2026-05-21 06:35:09 +00:00
kcar cb8c2dab74 feat(cis): add LLM config modal, summary generation, keywords tab, and export button (Phase 3)
- LLMConfigModal: provider dropdown, model field, API key input (localStorage only)
- Summary generation: modal with 5 summary types, calls API, displays result
- Keywords tab: add/delete watches, real-time detection, event logging
- Export button: SRT/TXT/JSON download via API endpoint
- All Phase 3 frontend tasks complete
2026-05-20 22:57:06 +00:00
kcar 6bbed42f55 feat(cis): add Supabase integration, canvas event logger, and sessions tab (Phase 2)
- Connect transcriptionStore to Supabase (start/stop session, save segments)
- Add CanvasEventLogger for silent TLDraw activity tracking
- Add Sessions tab to CCTranscriptionPanel with past sessions list
- Auto-detect timetable context on panel mount
- Flush canvas events to API every 5 seconds during recording
2026-05-20 22:06:31 +00:00
kcar 2ee4e4afe7 feat(cis): add CCTranscriptionPanel Live tab to sidebar (Phase 1)
- Add CCTranscriptionPanel component with Live tab
- Add Zustand transcriptionStore for session state management
- Wire panel into BasePanel sidebar system
- Fix merged switch cases in getIconForPanel, getDescriptionForPanel, renderCurrentPanel
- Add VITE_WHISPERLIVE_URL to .env
2026-05-20 21:34:21 +00:00
kcar f8160834fb Allow larger chunks when building 2026-02-23 20:57:08 +00:00
kcar 53e298bbe2 chore: update env config with production Supabase credentials 2026-02-22 00:31:07 +00:00
kcar 5c100a015d feat: update source files, Dockerfile, vite config and service worker 2026-02-21 16:25:42 +00:00
kcar 5e5aad54cb chore: remove dist artifacts, untrack .env, add vite-env types, ignore package-lock 2026-02-21 16:24:29 +00:00
kcar 3472f203b9 update api base 2025-11-20 11:01:55 +00:00
kcar d1efe09236 env prod updates 2025-11-19 20:07:43 +00:00
kcar 3b4876793e latest 2025-11-14 14:47:26 +00:00
kcar 69ecf2c7c1 test clear 2025-07-11 13:38:36 +00:00
kcar 6790efd8bd test 2025-07-11 13:37:47 +00:00
kcar 8a7ab3ac24 Initial commit 2025-07-11 13:21:49 +00:00