Back to Freedom.Tech Back
All Divine releasesAll versions
Release Mon, Aug 17, 2026 7 min read

Divine 1.0.20

Original release notes

Welcome home. We left the light on - or off. Your call.

Light mode has landed. Settings General Appearance, then pick System, Light or Dark. Dark's still home base.

Badges, made by you

Mint a Nostr badge and hand it to someone without ever leaving the app. See one on a profile? Tap it and we'll tell you what it took to earn.

The editor got hands

Crop, rotate and flip your stop-motion frames. Cropping moves like it should now, sound waveforms actually look like the sound, and when a render goes sideways we tell you why instead of shrugging.

Your library, your rules

Drafts are one tap from the recorder. Pinch to zoom the grid, long-press and drag to grab a fistful of clips, and file them wherever makes sense to you.

Captions that keep up

Time your captions against the video instead of counting seconds in your head. No captions? We'll say why, and help you write them.

A feed that knows what you've seen

Stuff you've already watched steps aside for stuff you haven't. And when a feed won't load, we'll tell you straight whether it's us or your signal.

You, in charge

Change your Divine email and password in Settings. Link and unlink accounts right here. Your followers sort newest-first, and profiles lead with something friendlier than a wall of characters.

Sounds that travel

Save a sound on one device, find it on the next.

Everyone gets in

Screen readers can now drive the editor, the recorder and your profile tabs. If you've asked your phone to ease up on motion, we listen.

Plus: every language we ship got its missing words filled in, uploads hold on tight when your connection doesn't, deleted videos actually leave, bookmarks stay put, notifications say what really happened, and we tightened up privacy and security throughout.

Go make something. We'll be here.

---

Full changelog - every pull request in this release

What's Changed

  • fix(library): move clip selection into a sheet footer by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6836
  • fix(a11y): make icons and tight layouts survive system font scaling by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6844
  • fix(drafts): stop the library from restamping and hiding drafts by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6832
  • fix(video-editor): stop speed-render thrash stalling the encoder by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6817
  • test(personal-event-cache): bound provider waits on wall-clock time by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6849
  • fix(notifications): stop labelling video likes "liked your comment" by @rabble in https://github.com/divinevideo/divine-mobile/pull/6805
  • fix(publish): only self-label content language when the user declared one by @rabble in https://github.com/divinevideo/divine-mobile/pull/6804
  • fix(nostr): bound and validate relay-list admission by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6746
  • fix(engagement): resolve the author key before querying likes, votes and reposts by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6819
  • feat(video-recorder): show the remaining shot budget in stop-motion by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6842
  • fix(video-metadata): keep the preview rounded and make the audio credit form readable by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6829
  • test(flake): stop two suites failing on what ran before them by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6874
  • fix(video-metadata): stop painting the clip cover's edits twice by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6893
  • fix(video-metadata): make the post-details flow readable to screen readers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6887
  • fix(a11y): honour reduced motion in tab transitions and the recorder mode wheel by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6883
  • fix(nostr): keep the relay count when a publish reaches nothing by @rabble in https://github.com/divinevideo/divine-mobile/pull/6681
  • fix(sounds): let a failed audio extraction publish the video anyway by @rabble in https://github.com/divinevideo/divine-mobile/pull/6659
  • fix(local-stack): resolve the local host per platform by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6840
  • fix(feed): make the first tap on a stopped video play it by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6892
  • build(mobile): upgrade patrol to 4.8.0 and pin patrol_cli 4.6.1 by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6925
  • fix(a11y): make library and clip controls readable to screen readers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6881
  • chore(dependencies): remove cryptography_flutter override by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6923
  • fix(editor): stop the publish OOM on stop-motion clips by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6947
  • fix(a11y): make video editor controls readable to screen readers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6885
  • fix(feed): page the New feed on the repository's hasMore flag by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6945
  • refactor(video-editor): split the canvas into focused files by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6890
  • fix(feed): clear a stranded page overlay when the shell is uncovered by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6889
  • fix(ios): derive extension versions from Flutter by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6929
  • fix(video): restore deletion copy across surfaces by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6914
  • fix(a11y): announce the branded loading indicator as busy by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6956
  • fix(support): preserve portrait clip imports by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6939
  • fix(support): preserve text edits on imported vines by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6938
  • test(flake): wait for the encoder to actually start, not for a pumped queue by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6895
  • fix(video-recorder): make recorder controls readable to screen readers by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6876
  • fix(comments): show an in-flight video reply on its destination sheet by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6960
  • fix(profile): remove deleted videos from profile tabs by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6942
  • fix(e2e): make the Maestro smoke suite runnable again by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6948
  • fix(imeta): parse positional comment and NIP-94 metadata by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6962
  • fix(collabs): render only confirmed collaborators to third-party viewers by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6970
  • fix(dm): label retired moderation threads and close their dead composer by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6963
  • test(analytics): assert the home feed actually publishes its source detail by @rabble in https://github.com/divinevideo/divine-mobile/pull/6870
  • fix(lists): dismiss editor before relay acknowledgement by @rabble in https://github.com/divinevideo/divine-mobile/pull/6861
  • fix(repositories): stop an unreadable local cache from blocking relay publishes by @rabble in https://github.com/divinevideo/divine-mobile/pull/6867
  • feat(analytics): instrument creator campaign funnel by @rabble in https://github.com/divinevideo/divine-mobile/pull/6871
  • feat(sounds): sync saved sound library across devices by @rabble in https://github.com/divinevideo/divine-mobile/pull/6856
  • feat(seen): client-side seen-video filtering across feeds by @rabble in https://github.com/divinevideo/divine-mobile/pull/6869
  • docs(testing): add 4337 test debt plan by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6915
  • fix(invites): drive invite status from the nostr session readiness contract by @dcadenas in https://github.com/divinevideo/divine-mobile/pull/6981
  • fix(account): clear dm_message_reactions on sign-out and Delete Account by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6991
  • ci(deps): monitor dependency freshness and freeze dependency provenance by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6990
  • docs(maintainability): refresh oversized-file inventory by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6936
  • fix(ios): align firebase_remote_config with the firebase_core 4.4.0 release by @rabble in https://github.com/divinevideo/divine-mobile/pull/7016
  • fix(profile): drop the extra vertical gap around the follower search field by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7011
  • test(relay-discovery): stop the invalid-signature test degenerating by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6995
  • feat(profile): sort the follower and following lists, newest first by default by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6964
  • fix(for-you): rebuild the algorithm header and explainer on the design system by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6851
  • test(recorder): cover capture mode with Maestro E2E by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7018
  • docs(data-foundation): define storage and cache policy by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6972
  • fix(likes): retract a like unliked while its publish is in flight by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7004
  • fix(subtitles): report why captions are missing and let creators write them by @hm21 in https://github.com/divinevideo/divine-mobile/pull/6943
  • ci(deps): stop assigning every dependabot pr to one person by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7033
  • fix(profile): explain profile badges by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6993
  • fix(db-client): move schema repair into drift migration by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/6976
  • fix(likes): chunk the reaction REQ filters like the deletion probe by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/6997
  • fix(a11y): give the profile tabs and grids real accessible names by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7009
  • test(recorder): cover lip-sync mode with Maestro E2E by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7043
  • feat(badges): make and hand out Nostr badges without leaving the app by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7014
  • fix(badges): translate the profile badge sheet into every locale by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7023
  • ci(deps): bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in https://github.com/divinevideo/divine-mobile/pull/7006
  • ci(deps): bump actions/setup-java from 4 to 5 by @dependabot[bot] in https://github.com/divinevideo/divine-mobile/pull/7008
  • ci(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in https://github.com/divinevideo/divine-mobile/pull/7007
  • fix(feed): stop the fullscreen feed hanging on a loading placeholder when its source empties by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7034
  • fix(safety): let a blocked conversation stay readable without unblocking by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7026
  • test(explore): keep the popular-tab suite off the real image cache by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7054
  • test(e2e): repair the search and comment smoke flows by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7039
  • ci(e2e): make the service workflow run, and fix the e2e suites it covers by @realmeylisdev in https://github.com/divinevideo/divine-mobile/pull/7005
  • build(ios): refresh the SPM lockfiles for patrol's Swift Package by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7065
  • test(recorder): cover stop-motion mode with Maestro E2E by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7036
  • feat(library): reach drafts from the recorder library by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7031
  • test(notifications): unpin the row layout test from font load order by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7052
  • fix(video-editor): stop the clip picker closing on a short drag by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7056
  • fix(video-editor): make the crop editor feel smooth and on-brand by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7062
  • feat(subtitles): time captions against the video instead of typed seconds by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7060
  • feat(verify): link and unlink accounts without leaving the app by @hm21 in https://github.com/divinevideo/divine-mobile/pull/7028
  • fix(upload): keep the resumable session alive on a chunk 408 by @rabble in https://github.com/divinevideo/divine-mobile/pull/7050
  • test(helpers): give each test process its own path_provider directories by @rabble in https://github.com/divinevideo/divine-mobile/pull/6878
  • feat(trust-safety): block badge claimants by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/7082
  • fix(support): vary classics feed sessions by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/7083
  • fix(lists): refresh discover list subscriptions by @NotThatKindOfDrLiz in https://github.com/divinevideo/divine-mobile/pull/7097