Repository navigation
Now that the audio is more settled, this is the first version with an iOS app! Submitted for App Store Review, pending approval.
What's Changed
- Create installable Capacitor iOS foundation by @avoidthekitchen in #35
- Deliver the iOS learning loop, native hardening, and reliable audio by @avoidthekitchen in #36
- Center the unlock dialog and layer it above the tab bar by @avoidthekitchen in #38
- Recover audio from an interrupted AudioContext by @avoidthekitchen in #39
- Invalidate audio loads when the context is interrupted by @avoidthekitchen in #40
- Stop a clip when the AudioButton that started it unmounts by @avoidthekitchen in #43
- Use FSRS-6 default weights and time recall from the end of the clip by @avoidthekitchen in #45
- Make choice and lesson-card photos decorative so names are not doubled by @avoidthekitchen in #46
- Hyphenate long bird names in lesson cards instead of splitting them by @avoidthekitchen in #47
- Report the final intro-quiz answer when it auto-advances by @avoidthekitchen in #50
- Build lesson quiz items once per phase instead of on every render by @avoidthekitchen in #52
- Tidy quiz and progress UI: dead prop, stable clip arrays, landmarks by @avoidthekitchen in #53
- Cancel a pending auto-advance when a quiz question unmounts by @avoidthekitchen in #51
- Add a browser-pane launch config for the Vite dev server by @avoidthekitchen in #49
- Add manifest, native-config, and audio e2e tests from the audit by @avoidthekitchen in #42
- Align the iOS marketing version with the app and declare exempt encryption by @avoidthekitchen in #48
- Show when a bird is next due relative to now on the Progress page by @avoidthekitchen in #55
- Measure recall after the first successful autoplay retry by @avoidthekitchen in #56
- Use one native scene window and strengthen installed-app smoke evidence by @avoidthekitchen in #58
- Match launch screen and native chrome to BeakSpeak’s light palette by @avoidthekitchen in #60
- Record which bird the learner confused the target with by @avoidthekitchen in #54
- Use sized bird photos with precise credits and reliable fallbacks by @avoidthekitchen in #57
- Pick the Same/Different second clip by role, not by type label by @avoidthekitchen in #44
- Complete issue 41 storage, accessibility, performance and dependency remediation by @avoidthekitchen in #59
- Bound audio and spectrogram retention and isolate playback renders by @avoidthekitchen in #61
- Honor iOS Dynamic Type and keep enlarged learner controls reachable by @avoidthekitchen in #62
- Patch dependency advisories and align native Capacitor pins by @avoidthekitchen in #63
- Require explicit session exit before switching tabs by @avoidthekitchen in #64
- Use native SQLite for iOS progress by @avoidthekitchen in #65
- Prepare internal TestFlight beta distribution (#31) by @avoidthekitchen in #66
- Replace learner emojis with custom bird artwork and icons by @avoidthekitchen in #67
- Confirm before leaving a session instead of disabling tabs by @avoidthekitchen in #71
- Record TestFlight build 3 and prepare build 4 by @avoidthekitchen in #69
- Bundle bird photos instead of loading them from Wikimedia by @avoidthekitchen in #72
- Move legacy research photos out of beakspeak/public by @avoidthekitchen in #73
Full Changelog: v2.0.0...v3.0.0