Millian Lamiaux
79ead1404d
chore: update i18n translations
...
- Add new translation keys for de, en, es, fr locales
- Update screens.json files with new content
2026-03-14 20:44:25 +01:00
Millian Lamiaux
001b376fc0
feat: add shared card components
...
- Add CollectionCard component for collection displays
- Add WorkoutCard component for workout previews
- Reusable across mobile and admin-web
2026-03-14 20:44:19 +01:00
Millian Lamiaux
2ad7ae3a34
feat: Apple Watch app + Paywall + Privacy Policy + rebranding
...
## Major Features
- Apple Watch companion app (6 phases complete)
- WatchConnectivity iPhone ↔ Watch
- HealthKit integration (HR, calories)
- SwiftUI premium UI
- 9 complication types
- Always-On Display support
- Paywall screen with RevenueCat integration
- Privacy Policy screen
- App rebranding: tabatago → TabataFit
- Bundle ID: com.millianlmx.tabatafit
## Changes
- New: ios/TabataFit Watch App/ (complete Watch app)
- New: app/paywall.tsx (subscription UI)
- New: app/privacy.tsx (privacy policy)
- New: src/features/watch/ (Watch sync hooks)
- New: admin-web/ (admin dashboard)
- Updated: app.json, package.json (branding)
- Updated: profile.tsx (paywall + privacy links)
- Updated: i18n translations (EN/FR/DE/ES)
- New: app icon 1024x1024
## Watch App Files
- TabataFitWatchApp.swift (entry point)
- ContentView.swift (premium UI)
- HealthKitManager.swift (HR + calories)
- WatchSessionManager.swift (communication)
- Complications/ (WidgetKit)
- UserDefaults+Shared.swift (data sharing)
2026-03-11 09:43:53 +01:00
Millian Lamiaux
f80798069b
feat: integrate theme and i18n across all screens
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:05:14 +01:00
Millian Lamiaux
f17125e231
feat: system light/dark theme infrastructure
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:04:59 +01:00
Millian Lamiaux
b60083341e
feat: extend user profile with onboarding data model
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:04:53 +01:00
Millian Lamiaux
540bb015c7
feat: notification, purchase, and analytics services
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:04:47 +01:00
Millian Lamiaux
d6bc7f5a4c
feat: i18n infrastructure with 4-locale support (en, fr, es, de)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:04:40 +01:00
Millian Lamiaux
0bcd8185f0
chore: archive v1 docs and update project documentation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 00:04:22 +01:00
Millian Lamiaux
e59c87fd1b
feat: i18n locale files for all screens (en, fr, es, de)
...
Adds translated strings for tabs, home, workouts, activity, browse, profile,
player, complete, collection, category, workout detail, and onboarding screens.
Unused voiceCoaching/hapticCues keys removed from onboarding.wow section.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 18:52:11 +01:00
Millian Lamiaux
aa75afb1b7
feat: onboarding flow with staggered-reveal wow screen
...
6-screen conversion funnel: Problem → Empathy → Solution → Wow → Personalization → Paywall.
Screen 4 uses a staggered-reveal feature list where all 4 features animate in
sequentially (150ms apart), replacing a carousel pattern.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 18:52:05 +01:00
Millian Lamiaux
13faf21b8d
feat: shared components, hooks, and audio engine
...
Components:
- StyledText: unified text component replacing 5 local copies
- GlassCard: reusable glassmorphic card with blur background
- VideoPlayer: expo-video wrapper with preview/background modes
and gradient fallback when no video URL
Hooks:
- useTimer: extracted timer engine with phase transitions
(PREP → WORK → REST → repeat → COMPLETE), calorie tracking,
and actions (start, pause, resume, skip, stop)
- useHaptics: centralized haptic feedback respecting user settings
- useAudio: expo-av sound effects (countdown beep, phase ding,
completion chime) respecting soundEffects setting
Audio assets: 3 generated WAV files for timer events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 13:23:50 +01:00
Millian Lamiaux
5477ecb852
feat: data layer with types, 50 workouts, and Zustand stores
...
Types: Workout, Exercise, Trainer, UserProfile, UserSettings,
WorkoutResult, Achievement, Collection, Program.
Mock data: 50 workouts across 5 categories (full-body, core,
upper-body, lower-body, cardio), 4 durations (4/8/12/20 min),
3 levels, 5 trainers. Plus 6 collections, 3 programs, and
8 achievements.
Zustand stores with AsyncStorage persistence:
- userStore: profile, settings (haptics, sound, voice, reminders)
- activityStore: workout history, streak tracking
- playerStore: ephemeral timer state (not persisted)
Helper lookups: getWorkoutById, getWorkoutsByCategory,
getTrainerById, getPopularWorkouts, getCollectionWorkouts, etc.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 13:23:32 +01:00
Millian Lamiaux
511e207762
feat: design system v2 with liquid glass aesthetic
...
Overhaul design constants for OLED-first dark mode:
- Colors: brand palette, phase colors, glass/shadow tokens, gradients
- Typography: Inter font scale matching iOS type system
- Spacing: 4px base unit with layout constants
- Border radius: liquid glass card radii
- Animations: spring/timing presets for UI transitions
Add v2 product docs (PRD, PDD, BDSD) and update CLAUDE.md.
Install expo-video, expo-sharing, @expo-google-fonts/inter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 13:23:18 +01:00
Millian Lamiaux
54ac8326fa
chore: remove v1 features and old scaffolding
...
Remove onboarding flow (6 screens), timer engine, audio engine,
old components (themed-text/view, parallax-scroll, hello-wave),
old constants (theme, shadows, timer), and utility files that
were replaced by the v2 architecture.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 13:23:04 +01:00
Millian Lamiaux
fa189fe72e
feat: onboarding flow (6 screens) + audio engine + design system
...
Onboarding:
- 6-screen flow: Problem → Empathy → Solution → Wow → Personalization → Paywall
- useOnboarding hook with Zustand + AsyncStorage persistence
- MiniTimerDemo with live 20s timer + haptics
- Auto-redirect for first-time users
- Mock RevenueCat for dev testing
Audio:
- useAudioEngine hook with expo-av
- Phase sounds (count_3/2/1, beep, bell, fanfare)
- Placeholder music tracks
Design System:
- Typography component + constants
- GlassView component
- Spacing, shadows, animations, borderRadius constants
- Extended color palette (phase gradients, glass, surfaces)
Timer:
- Fix: handle 0-duration phases (immediate advance)
- Enhanced TimerDisplay with phase gradients
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 21:52:23 +01:00
Millian Lamiaux
31bdb1586f
feat: timer engine + full-screen timer UI
...
Implement the core timer feature following the src/features/ architecture:
- useTimerEngine hook: drift-free Date.now() delta countdown (100ms tick),
explicit state machine (IDLE → GET_READY → WORK → REST → COMPLETE),
event emitter for external consumers (PHASE_CHANGED, ROUND_COMPLETED,
COUNTDOWN_TICK, SESSION_COMPLETE), auto-pause on AppState interruption
(phone calls, background), expo-keep-awake during session
- TimerDisplay component: full-screen animated UI with 600ms color
transitions between phases, pulse animation on countdown, flash red
on last 3 seconds, round progress dots, IDLE/active/COMPLETE views
- TimerControls component: stop/pause-resume/skip buttons with Ionicons
- Timer route (app/timer.tsx): fullScreenModal wiring hook → display
- Home screen: dark theme with START button navigating to /timer
- Project docs: CLAUDE.md (constitution), PRD v1.1, skill files
- Shared constants: PHASE_COLORS, TIMER_DEFAULTS, formatTime utility
- Types: TimerPhase, TimerState, TimerConfig, TimerActions, TimerEvent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 19:05:25 +01:00