Original release notes
What's Changed
- fix(feed): reuse username badges in author overlay by @rabble in https://github.com/divinevideo/divine-mobile/pull/4700
- fix(feed): preserve payload engagement counts by @rabble in https://github.com/divinevideo/divine-mobile/pull/4703
- feat(dm): multi-line message composer (auto-grow up to 5 lines) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4709
- fix(comments): restore rounded corners on inline video player by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4706
- refactor(providers): break remaining transitive app_providers dependency cycle by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4720
- feat(dm): wire full emoji picker for custom reactions by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4711
- fix(dm): add accessible label to composer send button by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/4722
- refactor(comments): move inline video corner radius into player by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/4725
- test(notifications): stabilize flaky large-text overflow tests on CI (#4719) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4721
- fix(notifications): unify push, local, and in-app tap routing (#4727) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4736
- fix(auth): stabilize reset-password e2e flow by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/4769
- fix(e2e): move emulator launch and stack setup into scripts by @dcadenas in https://github.com/divinevideo/divine-mobile/pull/4761
- refactor(state): migrate NotificationSettingsScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4749
- fix(auth): keep publish flow alive during expired-session recovery by @untreu2 in https://github.com/divinevideo/divine-mobile/pull/4714
- refactor(notifications): remove legacy bare-string payload fallback by @untreu2 in https://github.com/divinevideo/divine-mobile/pull/4718
- fix(notifications): preserve normalized payload on foreground local notification taps (#4728) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4757
- fix(notifications): gate owned-video addressable on authoritative ownership (#4730) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4759
- refactor(state): migrate AccountContentLabelsTile to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4751
- fix(crashlytics): guard OtherProfileBloc emits/adds after close by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4752
- refactor(state): migrate ContentFiltersScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4750
- ci(architecture): ratchet UI imports of the service layer by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4737
- refactor(models): extract URL resolution out of VideoEvent by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4748
- fix(layer): improve exported layer resolution to avoid blurry output by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4783
- refactor(ui): extract NotificationSettingsScreen widgets and drop dead toggles by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4780
- fix(notifications): suppress duplicate local push render on iOS alert pushes (#4731) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4760
- fix(notifications): remove mark-all-read-on-leave, restore unread badge correctness (#4729) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4758
- fix(video-editor): split functionality with robust state management by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4809
- refactor(state): add VideoRecorderBloc with sequential() on start/stop by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4805
- fix(video-recorder): prevent clearing video publish state when returning from editor by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4829
- chore(tests): fix analyzer print statement issues with debugPrint by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4821
- fix(stats): prevent bulk stats parser from leaking engagement counts into new videos by @untreu2 in https://github.com/divinevideo/divine-mobile/pull/4859
- fix(video-editor): preserve split playback position by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4825
- fix(video-editor): bump pro_video_editor to 1.17.2 for Android render fix by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4814
- feat(video-editor): add timeline markers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4862
- feat(camera): add hold-to-record functionality for video recording by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4848
- fix(video-recorder): countdown timer is not usable in Classic and Upload mode by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4831
- fix(timeline): add clipSourcePositionToTimelinePosition helper by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4823
- fix(timeline): add gap-aware positioning for overlay items and geometry helpers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4819
- fix(home-feed): add missing new videos feed mode by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4817
- feat(router): unified async VideoEvent resolver and :videoId path for /video-edit (#4390) by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4786
- test(services): cover VideoCircuitBreaker state machine + mixin (#4337) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4844
- test(services): cover effective_content_labels resolution + normalization (#4337) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4843
- ci(test): test-debt ratchet batch - freeze skips, Future.delayed & untested services (#4337) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4835
- test(notifications): cover realtime owned-video routing edges (#4768) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4804
- style(design-system): migrate raw Icons.* to DivineIcon across settings by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4802
- docs(state): brainstorm WS-2 VideoRecorderBloc design decisions by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4799
- chore(release): bump app version to 1.0.15 by @rabble in https://github.com/divinevideo/divine-mobile/pull/4863
- style(design-system): migrate raw Icons.* to DivineIcon across sounds (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4868
- style(design-system): migrate raw Icons.* to DivineIcon across video feed (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4867
- style(design-system): migrate raw Icons.* to DivineIcon across auth (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4870
- style(design-system): migrate raw Icons.* to DivineIcon across small feature areas (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4871
- style(design-system): migrate raw Icons.* to DivineIcon across profile (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4869
- style(design-system): migrate raw Icons.* to DivineIcon across misc screens & settings (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4872
- refactor: replace mediakit with the new native-video-player by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4682
- ci(test): shrink untested-services baseline (fix red main floor ratchet) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4865
- ci: reduce GitHub Actions runner size by @rabble in https://github.com/divinevideo/divine-mobile/pull/4698
- feat(video-editor): long-press volume button to mute/unmute all timeline tracks by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4773
- fix(engagement): pre-fetch profiles on who-liked/reposted list load by @untreu2 in https://github.com/divinevideo/divine-mobile/pull/4717
- feat(clips): allow saving own videos to clip library by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4776
- fix(audio): allow choosing audio start time for community sounds by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4775
- refactor(videos_repository): relocate merge helpers from app layer by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4790
- refactor(state): migrate SafetySettingsScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4791
- refactor(state): migrate BlossomSettingsScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4792
- refactor(state): migrate RelaySettingsScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4795
- refactor(state): migrate ContentPreferences sub-widgets to 3 Cubits by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4793
- refactor(state): migrate SoundsScreen to a Cubit by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4794
- refactor(state): migrate 3 progress sheets to Cubits by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4798
- refactor(state): migrate BugReport + FeatureRequest dialogs to Cubits by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4797
- style(design-system): migrate raw Icons.* to DivineIcon across upload, badges & content-warning (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4874
- style(design-system): migrate raw Icons.* to DivineIcon across video tiles & overlays (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4873
- style(design-system): migrate raw Icons.* to DivineIcon across menus, dialogs & search (#4803) by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/4876
- fix(feed): restore paused playback controls by @rabble-claw in https://github.com/divinevideo/divine-mobile/pull/4882
- fix(auth): preserve owner-scoped drafts, clips, and uploads on identity change by @untreu2 in https://github.com/divinevideo/divine-mobile/pull/4858
- feat(quick-actions): add home screen quick actions for camera and notifications by @hm21 in https://github.com/divinevideo/divine-mobile/pull/4878
Full Changelog: https://github.com/divinevideo/divine-mobile/compare/1.0.14...1.0.15

