saravanakumardb1
e9e96ba18a
fix(e2e): upgrade shallow specs with page.route() API mocking and error state tests
2026-03-27 13:32:05 -07:00
saravanakumardb1
5453cb131a
chore(web): add Dockerfile, service worker, and e2e test scaffolds
2026-03-27 11:28:33 -07:00
saravanakumardb1
c6e83f991d
fix(docker): correct web Dockerfile EXPOSE/PORT to 3030 matching docker-compose
2026-03-24 11:45:29 -07:00
saravanakumardb1
5c67bed5a6
fix(docker): remove hardcoded corporate proxy and jfrog registry from Dockerfiles
2026-03-24 11:12:38 -07:00
saravanakumardb1
bfbca2b820
feat(docker): migrate to Gitea registry-backed Docker pattern
...
- Convert all @bytelyst/* file: refs to semver ^0.1.0
- Remove sibling common-plat workspace references
- Add .npmrc and .npmrc.docker for local Gitea registry
- Rewrite Dockerfiles: pnpm + BuildKit secret mount
- Verified: pnpm install + backend typecheck pass
2026-03-23 20:57:37 -07:00
saravanakumardb1
1168da3ce2
fix(ci): fix ESLint flat config plugin resolution
...
- Override react-hooks rules within the same config object that defines the plugin
- Avoids 'Cannot redefine plugin' error in ESLint 9 flat config
2026-03-22 21:20:23 -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
582936ad65
feat(repo): migrate chronomind workspace to pnpm
...
- Add pnpm-workspace.yaml (backend + web + common-plat packages)
- Add root package.json with workspace scripts and pnpm config
- Add packageManager: pnpm@10.6.5 to backend/web manifests
- Remove package-lock.json files, generate pnpm-lock.yaml
- Add root .gitignore (was missing)
- Update CI to use pnpm workspace commands
- Add transpilePackages + webpack symlinks to next.config.ts
- Update docker-prep.sh for backend + web consumers
- Rewrite backend/web Dockerfiles to .docker-deps consumer pattern
- Add .dockerignore
Verified: typecheck + 576 tests (182 backend + 394 web) + builds pass
Docker: backend + web smoke builds pass
2026-03-22 19:11:01 -07:00
saravanakumardb1
cb684fa086
chore(docker): add backend + web Dockerfiles, add standalone output to next.config.ts
2026-03-22 00:20:20 -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
403d35e016
chore(web): update lockfile + regenerate service worker
2026-03-12 17:25:20 -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
233fde8f99
docs(roadmap): mark completed items from web polish session
...
- Zod form validation (02ac682 )
- 3-step onboarding walkthrough + tooltip hints (4e1a22f )
- Ambient background sounds in focus mode (4e1a22f )
- Custom pre-warning messages per timer (d3b55a2 )
- Routine preview timeline in editor (c5c8000 )
- Chain badge on TimerCard (existing)
2026-02-28 13:46:15 -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
b124009053
chore: add docker-prep script + gitignore entries for portable builds
2026-02-28 12:32:28 -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
saravanakumardb1
375d3a7ec0
feat(web): wire useSync hook into Dashboard with cloud sync status indicator
2026-02-28 01:54:40 -08:00