Commit Graph

76 Commits

Author SHA1 Message Date
saravanakumardb1
ac6edec73f fix(tokens): replace hardcoded personal category hex with CSS token var 2026-03-29 10:29:14 -07:00
saravanakumardb1
f5dc7332cb fix(tokens): import @bytelyst/design-tokens/css/chronomind — remove hand-written token block 2026-03-29 01:23:57 -07:00
saravanakumardb1
e60efddaab fix(web): remove dead responsive sidebar CSS — ChronoMind uses header layout, no sidebar 2026-03-29 00:06:48 -07:00
saravanakumardb1
72651ceff1 feat(web): add responsive sidebar CSS breakpoints for mobile 2026-03-28 23:30:01 -07:00
saravanakumardb1
947c93d10b feat(web): wire @bytelyst/ui ToastProvider into app providers 2026-03-28 23:25:41 -07:00
saravanakumardb1
075e1850e5 fix(web): add interactive hover/active states for buttons and links 2026-03-28 23:20:44 -07:00
saravanakumardb1
1191d9e00d chore(design-system): add responsive sidebar CSS breakpoints (768px collapse) 2026-03-28 00:51:28 -07:00
saravanakumardb1
c2db021568 fix(web): add skip-to-content link for WCAG keyboard accessibility 2026-03-28 00:47:03 -07:00
saravanakumardb1
2d0a47be92 fix(web): add prefers-reduced-motion media query for accessibility 2026-03-28 00:38:48 -07:00
saravanakumardb1
bc7430a436 chore(design-system): deploy canonical generated Swift theme tokens from @bytelyst/design-tokens 2026-03-28 00:26:05 -07:00
saravanakumardb1
487464bcaf fix(web): add sr-only utility + prefers-color-scheme light mode to globals.css 2026-03-28 00:25:20 -07:00
saravanakumardb1
3cf08d6cad feat(design-system): add loading.tsx route transition page 2026-03-27 16:34:27 -07:00
saravanakumardb1
7cca057831 fix(ci): fix ESLint errors + workflow for Gitea CI
- Move theme detection into useState initializer (fixes set-state-in-effect)
- Downgrade React 19 strict ESLint rules to warnings
- Skip pnpm install in common-plat build step, add HUSKY=0
2026-03-22 21:11:44 -07:00
saravanakumardb1
f6c85ede9e fix: align Fastify to 5.7.4 + add web product-config.ts 2026-03-21 20:31:26 -07:00
saravanakumardb1
a606617c1d feat(web): wire feature flag checks into Dashboard UI
Gate Focus Mode and Routines nav links behind focus_mode_enabled
and routines_enabled flags. Fix inverted routines_disabled check
to use the actual seeded flag key routines_enabled.
2026-03-21 20:30:49 -07:00
saravanakumardb1
09310b7eb8 feat(web): upgrade feature-flag-client to SSE streaming + getValue() 2026-03-21 17:40:43 -07:00
saravanakumardb1
f2450b6e2e refactor(web): migrate telemetry + diagnostics to createWebTelemetry/createWebDiagnostics
- telemetry.ts: 54 → 42 lines via createWebTelemetry() (keeps product-specific trackTimerEvent)
- diagnostics.ts: 53 → 22 lines via createWebDiagnostics()
- 394/394 web tests pass, typecheck clean
2026-03-20 18:54:11 -07:00
saravanakumardb1
c362fa61cf chore: update dependencies 2026-03-19 21:25:38 -07:00
saravanakumardb1
83e54c29be fix(web): append /api to baseUrl for shared clients
getBaseUrl() returns 'http://localhost:4003' without /api suffix.
Shared feature-flag-client and subscription-client expect the API
prefix in the URL. Without this fix, requests hit /flags/poll and
/subscriptions/me instead of /api/flags/poll and /api/subscriptions/me.
2026-03-19 17:08:44 -07:00
saravanakumardb1
6dd31490b2 fix(android): complete ChronoMind Android compile fixes — all tests pass
- Fix SyncRepository.timerToDTO: timer.pomodoro → timer.pomodoroConfig/pomodoroState
- Fix SyncRepository.dtoToEntity: add missing TimerEntity fields (dismissedAt, snoozedUntil,
  snoozeCount, elapsedBeforePause, category), fix non-nullable cascadePreset/cascadeIntervalsJson
- Fix PomodoroDTO field mapping: focusMinutes→workMinutes, shortBreakMinutes→breakMinutes, etc.
- ChronoMind Android now compiles and all tests pass
2026-03-19 17:07:57 -07:00
saravanakumardb1
f49ef788a2 feat(web): migrate billing-client + feature-flags to shared packages
- billing-client.ts: hand-rolled fetch → @bytelyst/subscription-client
  wrapper with backwards-compatible Subscription type adapter
- feature-flags.ts: hand-rolled polling → @bytelyst/feature-flag-client
  (71→42 lines, same public API)
- providers.tsx: remove platform param (now configured at client level)
- ChronoMind-specific usage API stays as local fetch call
2026-03-19 16:52:47 -07:00
saravanakumardb1
909daf8853 fix(diagnostics): getAuthToken throws when no token (type-safe), void .start(), unsyncedCount replaces conflictCount 2026-03-05 11:18:27 -08:00
saravanakumardb1
cb79c9b3ad feat(diagnostics): wire @bytelyst/diagnostics-client init in ChronoMind web 2026-03-05 10:57:58 -08:00
saravanakumardb1
2e2f3c25ca ci: update CI/CD configuration 2026-03-04 20:01:34 -08:00
saravanakumardb1
e0c7f24954 fix(tests): stats.test.ts topCategory test broken on Sundays — wrong Monday calculation 2026-03-01 16:37:07 -08:00
saravanakumardb1
3596a8f350 feat(sync): wire platform sync into timer and routine stores, extend fullSync for routines, add error/not-found pages 2026-02-28 20:24:53 -08:00
saravanakumardb1
fe75bc30de test(web): add 21 tests for exportAll/importRoutines/parseImportData 2026-02-28 19:29:39 -08:00
saravanakumardb1
141fcc2a38 feat(web): wire routine export/import into history page UI 2026-02-28 19:28:37 -08:00
saravanakumardb1
e5d18b1c9c feat(web): gate routines nav behind feature flag 2026-02-28 19:14:01 -08:00
saravanakumardb1
ef27f9dcc6 fix(web): beacon transport, remove dead sync wrappers, add routine export/import 2026-02-28 19:07:14 -08:00
saravanakumardb1
a5aec74e4d feat(web): add billing/subscription client stub for Pro tier
- billing-client.ts: getMySubscription, cancelSubscription, getUsageSummary
- Calls platform-service /subscriptions + /usage endpoints
2026-02-28 14:24:55 -08:00
saravanakumardb1
95f71f4625 feat(web): add feature flag client with platform-service polling 2026-02-28 14:18:06 -08:00
saravanakumardb1
09ded150f4 feat(web): add routine sync operations to platform-sync client
- SyncRoutineDTO + SyncRoutineStepDTO types
- pullRoutineDelta, pushRoutine, updateRemoteRoutine, deleteRemoteRoutine, batchUpsertRoutines
- routineToDTO / dtoToRoutinePatch conversion functions
- OfflineQueueItem now supports entityType (timer|routine)
2026-02-28 13:54:43 -08:00
saravanakumardb1
6e339c6cf0 feat(web): accept snooze suggestion to auto-adjust timer timing
- Accept button on snooze suggestions shifts matching active timers
- Applies suggestedDelayMinutes to targetTime of pattern-matched timers
- Dismiss still available alongside Accept
2026-02-28 13:53:06 -08:00
saravanakumardb1
ad4bc946a8 feat(web): wire TimerChain[] into Zustand store with auto-start
- chains[] persisted alongside timers in localStorage
- addChain/removeChain with linkedTimerId bookkeeping
- removeTimer auto-cleans chain references
- complete() auto-starts next timer in chain via getNextInChain
- 373/373 tests pass
2026-02-28 13:52:20 -08:00
saravanakumardb1
c5c800077c feat(web): add routine preview timeline in editor
- Visual horizontal bar chart showing step durations proportionally
- Color-coded segments with golden-angle hue distribution
- Time markers (start/end) and step legend
- Updates live as steps are added, removed, or reordered
2026-02-28 13:38:48 -08:00
saravanakumardb1
d3b55a2135 feat(web): add custom pre-warning messages per timer
- Add customMessage field to Timer interface + all Create*Params
- Custom message input in CreateTimerModal (optional, non-pomodoro)
- TimerCard shows custom message, falls back to auto-generated prep tips
- 373/373 tests pass, 0 type errors
2026-02-28 13:37:42 -08:00
saravanakumardb1
4e1a22f869 feat(web): add onboarding walkthrough + ambient sounds for focus mode
- OnboardingOverlay: 3-step walkthrough for first-time users (localStorage flag)
- ambient-sounds.ts: Web Audio API noise generators (rain, white noise, brown noise, coffee shop)
- FocusView: ambient sound picker with volume slider, auto-stops on session end
2026-02-28 13:35:06 -08:00
saravanakumardb1
02ac682c52 feat(web): wire Zod form validation into CreateTimerModal + add event schema
- Import and validate against alarmSchema, countdownSchema, pomodoroSchema, eventSchema
- Show inline error messages below form fields (label, time, duration, event date)
- Error border color highlights invalid fields
- Errors clear on tab switch and successful creation
2026-02-28 13:30:56 -08:00
saravanakumardb1
8ef44788e1 refactor(web): deduplicate getBaseUrl() — export from auth-api.ts, import in auth-context.tsx 2026-02-28 12:11:26 -08:00
saravanakumardb1
f80602d2b1 refactor(web): DRY platform-sync.ts — remove 88 lines of hand-rolled auth, delegate to auth-client 2026-02-28 11:49:06 -08:00
saravanakumardb1
8a5a40676a refactor(web): wire @bytelyst/react-auth into auth-context, clean platform-sync auth plumbing 2026-02-28 11:28:14 -08:00
saravanakumardb1
bde5cb792d refactor(web): wire @bytelyst/auth-client + telemetry-client into ChronoMind
- auth-api.ts: lazy-init shared auth client singleton
- platform-sync.ts: delegate auth ops to @bytelyst/auth-client
- telemetry.ts: delegate to @bytelyst/telemetry-client
- All 373 tests pass
2026-02-28 04:50:00 -08:00
saravanakumardb1
e3add90f87 feat(auth): add forgot password, reset password, change password, delete account, email verify, token refresh
Web:
- platform-sync.ts: Added forgotPassword, resetPassword, changePassword, verifyEmail, resendVerification, deleteAccount API functions
- auth-context.tsx: Added forgotPassword, resetPassword, changePassword, deleteAccount actions + successMessage state + 45min auto-refresh timer
- settings/page.tsx: Added forgot password link, change password form, delete account form with confirmation
- reset-password/page.tsx: New page for password reset via email token
- verify-email/page.tsx: New page for email verification via token

iOS:
- AuthService.swift: Added forgotPassword, changePassword, deleteAccount methods
- SettingsView.swift: Added change password, delete account, forgot password UI sections

Android:
- AuthService.kt: Added forgotPassword, changePassword, deleteAccount methods
2026-02-28 04:08:58 -08:00
saravanakumardb1
5e8cbbf556 feat(auth): implement refresh token flow with 401 auto-retry and dedup 2026-02-28 02:44:56 -08:00
saravanakumardb1
8ad31af72a chore(telemetry): add tracing headers to flush + .env.example 2026-02-28 02:36:55 -08:00
saravanakumardb1
1f18c53b76 fix(auth): enable sync on login/logout + fix data copy + wire page-view tracking 2026-02-28 02:33:19 -08:00
saravanakumardb1
9d50a196bc feat(analytics): bridge analytics.ts to platform telemetry client 2026-02-28 02:15:45 -08:00
saravanakumardb1
1713ce058b feat(web): add platform-service telemetry client 2026-02-28 02:04:08 -08:00
saravanakumardb1
1fc1d6478a feat(web): add auth flow via platform-service + productId header 2026-02-28 02:01:27 -08:00