Skip to content

1.0.19

Pre-release
Pre-release

Choose a tag to compare

@rabble rabble released this 08 Aug 06:11
· 11 commits to main since this release
d31fd9d

What's Changed

  • fix(video-metadata): relabel C2PA "Post anyway" to "Skip" by @hm21 in #6303
  • fix(router): skip router refresh on routing-identical review-status refetch by @hm21 in #6301
  • docs(content-warnings): document and guard the age-gate by @mbradley in #6237
  • feat(captions): add caption_generator package for on-device CC generation by @hm21 in #6307
  • fix(support): unblock self-custody DMs by @NotThatKindOfDrLiz in #6319
  • fix(splash): bound launch wordmark size by @realmeylisdev in #6316
  • fix(support): clarify restricted video errors by @NotThatKindOfDrLiz in #6324
  • fix(video-feed): show blurhash behind dead-media error card by @hm21 in #6254
  • fix(branding): finish the Divine icon set — web icons, brand colours, app naming by @realmeylisdev in #6309
  • fix(branding): guard the sign-in Divine wordmark against brand-mark drift by @realmeylisdev in #6306
  • test(branding): pin the loading spinner to the current Divine brand mark by @realmeylisdev in #6310
  • feat(clip-reuse): preserve imported clip provenance by @NotThatKindOfDrLiz in #6321
  • fix(clips): render a placeholder when a clip thumbnail file is missing by @rabble in #6295
  • fix(dm): route fully-followed group chats to the inbox, not message requests by @rabble in #6294
  • test(auth): settle the wordmark SVG before asserting image semantics by @hm21 in #6333
  • fix(audio): gate original-sound reuse on the creator's sharing preference by @hm21 in #6330
  • feat(profile): long-press own video tile for edit/delete actions by @rabble in #6325
  • docs: update divine-context template to include PR review rules by @dcadenas in #6338
  • fix(feed): guard tuning-undo against unmounted context by @hm21 in #6353
  • fix(support): clarify account deletion copy by @NotThatKindOfDrLiz in #6363
  • feat(dm): messages UX revision — unread emphasis, filters, search, error state by @rabble in #6286
  • feat(auth): in-app PIN entry fallback for email verification by @dcadenas in #5694
  • fix(nostr): auth awaited relay publishes by @NotThatKindOfDrLiz in #6362
  • feat(profile): link creator sites from profiles by @realmeylisdev in #6329
  • perf(test): stop upload-draft failure tests sleeping 62s of real backoff by @rabble in #6371
  • chore(git): ignore zcode session files by @rabble in #6339
  • ci(mobile): consolidate generated-file ratchet fetches by @rabble in #6352
  • fix(notifications): keep bech32 npub tokens intact in reply/comment previews by @rabble in #6345
  • feat(ios): automated App Store screenshot pipeline by @rabble in #6355
  • chore(deps): bump pro_image_editor to 13.2.3 for layer-align fix by @hm21 in #6382
  • feat(account): rebuild multi-account switching on an account-scoped container by @rabble in #6342
  • fix(video-editor): recover from export encoder-init failures by @hm21 in #6384
  • fix(support): resolve root-anchored comment notifications by @NotThatKindOfDrLiz in #6393
  • fix(lists): preserve addressable video tags by @NotThatKindOfDrLiz in #6394
  • fix(news-feed): ignore iOS back swipe for tuning by @NotThatKindOfDrLiz in #6395
  • perf(ci): shard the Mobile CI test job across four runners by @rabble in #6375
  • feat(review): prompt engaged store-installed creators to rate the app by @rabble in #6399
  • fix(bluesky): stop repeated username setup prompt by @NotThatKindOfDrLiz in #6402
  • fix(support): consume observed video deletions by @NotThatKindOfDrLiz in #6364
  • perf(dev): add mise run test so local runs match CI by @rabble in #6376
  • feat(mobile): add manual video crossposting by @rabble in #6347
  • fix(video-editor): preserve draft metadata mode by @hm21 in #6396
  • fix(dm): harden NIP-17 against unauthenticated rumor fields and unsigned seals by @realmeylisdev in #6368
  • perf(ci): add a wall-clock budget guard so the CI wins can't erode by @rabble in #6380
  • perf(ci): cut 23s of full-history clone and 42s of apt off Mobile CI by @rabble in #6372
  • feat(notifications): render video-sourced mentions by @NotThatKindOfDrLiz in #6299
  • fix(video): refresh profile grid after delete by @NotThatKindOfDrLiz in #6407
  • fix(follow): self-heal invalid cached pubkeys by @NotThatKindOfDrLiz in #6408
  • fix(support): gate internal feature flags by @NotThatKindOfDrLiz in #6409
  • chore(deps): upgrade pro_video_editor to 2.9.0 by @hm21 in #6419
  • fix(dm): resolve four cases where DMs go missing with no loader by @realmeylisdev in #6431
  • revert(profile): remove the divine.space creator-site CTA by @hm21 in #6440
  • fix(blocklist): deliver a lifted block to the person who was blocked by @realmeylisdev in #6434
  • chore(release): bump app version to 1.0.18 by @NotThatKindOfDrLiz in #6444
  • feat(dm): pin a Divine Moderation support row at the top of the inbox by @realmeylisdev in #6388
  • fix(account): refuse to start account deletion that cannot finish by @realmeylisdev in #6417
  • fix(sound-publishing): keep sound attribution on published posts by @realmeylisdev in #6422
  • feat(settings): surface account deletion from the Support Center by @realmeylisdev in #6449
  • chore(deps): correct the c2pa_flutter pin's removal condition by @realmeylisdev in #6451
  • fix(comments): keep composer buttons visible above the keyboard by @rabble in #6454
  • fix(support): count live creator analytics engagement by @NotThatKindOfDrLiz in #6448
  • fix(video-editor): keep stop-motion audio covering the composition by @hm21 in #6415
  • fix(view-events): publish self-view events by @NotThatKindOfDrLiz in #6406
  • fix(profile): avoid disposed refs in profile streams by @NotThatKindOfDrLiz in #6405
  • fix(l10n): use root context for publish snackbar by @NotThatKindOfDrLiz in #6403
  • docs: record CI timing budget shard coverage design by @rabble in #6425
  • fix(video-player): seek fresh Darwin players to start time too by @rabble in #6461
  • fix(models): map top-level proof fields on REST video stats rows by @rabble in #6457
  • feat(supporter): enforce server-verified subscriptions by @rabble in #6413
  • fix(feed): cap playback length with native clipping by @hm21 in #6429
  • fix(video-player): loop where both tracks still have content by @hm21 in #6430
  • chore(release): bump app version to 1.0.19 by @rabble in #6462
  • fix(stop-motion): steady the first editor open after a capture by @hm21 in #6465
  • fix(video-editor): give a recorded clip its media's length by @hm21 in #6439
  • feat(video-editor): captions with burn-in presets and CC overlay publish by @hm21 in #6313
  • fix(notifications): fetch category tabs independently by @NotThatKindOfDrLiz in #6446
  • fix(nostr): let a relay CLOSED frame terminate its pending query by @realmeylisdev in #6452
  • fix(profile): stop rendering accounts that requested deletion by @realmeylisdev in #6464
  • fix(attestation): run iOS App Attest off the main thread by @hm21 in #6487
  • fix(people-lists): keep the app-shell bloc on a live repository by @realmeylisdev in #6482
  • chore(infinite-video-feed): delete the loop seek nothing calls by @hm21 in #6489
  • fix(profile): close vanished account leaks by @NotThatKindOfDrLiz in #6488
  • fix(feature-flags): stop the curated-lists toggle from popping the screen by @hm21 in #6476
  • fix(publish): stop a video from publishing under the wrong account by @hm21 in #6478
  • fix(video-player): stop the loop restart being audible or visible by @hm21 in #6469
  • feat(video-editor): add a per-clip chroma key (green screen) by @hm21 in #6483
  • fix(profile): stop the publish seed from erasing Kind 0 fields by @realmeylisdev in #6500
  • fix(comments): make flag-content report sheet scrollable so Submit is reachable by @mbradley in #6312
  • fix(people-lists): stop background sync when curated lists turns off by @hm21 in #6502
  • chore(deps): upgrade pro_video_editor to 2.11.1 by @hm21 in #6505
  • refactor(theme): migrate UI to semantic color tokens for light mode by @hm21 in #6467
  • fix(profile): sanitize display text against malformed UTF-16 by @hm21 in #6515
  • feat(settings): add crossposting connections and modes by @rabble in #6350
  • fix(settings): restore crossposting tile after the token rename by @hm21 in #6534
  • chore(feed): delete the dead _LoadingIndicator by @hm21 in #6559
  • fix(feed): randomize the home Classics feed like Discover by @hm21 in #6537
  • fix(lists): stop the delete-list dialog reporting a fatal on a dead route by @realmeylisdev in #6513
  • fix(snackbar): stop actions that outlive their screen reading a dead context by @realmeylisdev in #6521
  • fix(theme): finish the light-mode contrast pass #6467 left open by @realmeylisdev in #6530
  • perf(upload): ~32% faster publishing by taking the thumbnail off the critical path by @hm21 in #6554
  • fix(test): wait for the save result before asserting the stop-motion cleanup by @hm21 in #6558
  • fix(library): render draft overlays instead of hiding the post action by @hm21 in #6549
  • fix(media-cache): suspend downloads on a background launch by @hm21 in #6543
  • feat(l10n): add Vietnamese, Urdu, Chinese, and Malay language support by @rabble in #6495
  • chore(release): sync build number with TestFlight build 819 by @rabble in #6470
  • fix(upload): cap ProofMode headers so publishes stop dying at the edge by @hm21 in #6507
  • fix(l10n): defer untranslated ms/ur/vi/zh keys to unblock main by @rabble in #6566
  • feat(auth): copy the Keycast-held nsec from Key Management, without a web redirect by @realmeylisdev in #6501
  • perf(publish): reclaim published drafts off the publish critical path by @hm21 in #6561
  • fix(account): prove key control when deleting the server account by @realmeylisdev in #6563
  • chore(local_stack): actionable diagnostics for port conflicts and partial stacks by @dcadenas in #6576
  • fix(ios): add NSSpeechRecognitionUsageDescription to Info.plist by @rabble in #6589
  • fix(ci): derive the iOS build number from App Store Connect by @rabble in #6588
  • fix(invites): show granted invites and keep the generate action honest by @dcadenas in #6574
  • fix(local-stack): harden diagnostic preflight checks by @NotThatKindOfDrLiz in #6609
  • feat(db): name the bootstrap failure and offer a guarded local reset by @hm21 in #6569
  • fix(nostr): make publishEventAwaitOk success semantics explicit by @realmeylisdev in #6583
  • feat(notifications): notify me when a creator I follow posts by @rabble in #6517
  • fix(drafts): keep library clips in the ghost-frame scan by @hm21 in #6582
  • fix(auth): stop anonymous signup emitting after close by @dcadenas in #6575
  • feat(screenshots): OG-Viner fixtures and refreshed App Store capture pipeline by @rabble in #6459
  • feat(l10n): translate remaining deferred keys in all 17 locales by @rabble in #6497
  • fix(settings): hide Experimental Features behind developer mode by @rabble in #6532
  • fix(crash): downgrade hero flight layout failures to non-fatal by @realmeylisdev in #6620
  • refactor(ui): move the settings surface onto divine_ui and fix what it exposed by @hm21 in #6599
  • fix(profile): stop ID-list grids locking into a sub-page window by @hm21 in #6621
  • test(services): pin the 401 age gate out of the dead-media prune by @realmeylisdev in #6614
  • fix(report): pin the report sheet's submit action and finish the profile snackbar sweep by @hm21 in #6618
  • fix(support): replace alert dialogs with full-screen support flows by @hm21 in #6628
  • fix(video): purge NIP-09 deleted videos from the local event store by @hm21 in #6623
  • docs(agents): forbid sensitive external identities in public artifacts by @NotThatKindOfDrLiz in #6636
  • fix(profile): flag revalidation on empty tabs so refresh can settle by @hm21 in #6642
  • feat(profile): add search to the follower and following lists by @hm21 in #6639
  • fix(nostr): stop offline relays from making every publish look partial by @rabble in #6613
  • docs: track the crash-triage runbook and the codebase audit by @rabble in #6612
  • feat(sounds): make saved sounds recognizable by @rabble in #6524
  • fix(recorder): flush autosave on background by @NotThatKindOfDrLiz in #6650
  • fix(support): hide feed tuning until backend ships by @NotThatKindOfDrLiz in #6647
  • fix(dm): improve inbound duplicate handling by @NotThatKindOfDrLiz in #6523
  • fix(support): preserve relay deletion intent by @NotThatKindOfDrLiz in #6475
  • fix(badges): await profile badge relay acceptance by @NotThatKindOfDrLiz in #6424
  • fix(explore): persist selected tab by name by @NotThatKindOfDrLiz in #6641
  • fix(profile): clarify staged banner uploads by @NotThatKindOfDrLiz in #6653
  • fix(library): show in-progress autosave draft by @NotThatKindOfDrLiz in #6654
  • fix(support): persist edited captions by @NotThatKindOfDrLiz in #6651
  • fix(profile): persist staged media and guard edits by @NotThatKindOfDrLiz in #6657
  • fix(report): stop telling users a report was received when it wasn't by @realmeylisdev in #6591
  • feat(profile): rebuild the edit-profile screen on the new design by @hm21 in #6630
  • fix(settings): rebuild the account danger-zone gates on Divine sheet components by @hm21 in #6632
  • fix(profile): hand pull-to-refresh a completer instead of a settled state by @hm21 in #6668
  • fix(nostr): stop a stalled relay from taxing every query with its timeout by @hm21 in #6673
  • fix(account): keep a switched-away account's session alive by @hm21 in #6676
  • fix(profile): repair the edit-profile clear and unsaved-edit paths by @realmeylisdev in #6680
  • fix(profile): use the alert sticker on the unsaved-changes prompt by @hm21 in #6663
  • fix(account): retarget profile after account switch by @rabble in #6655
  • fix(nostr): drop the per-gift-wrap debug logging from the relay pool by @hm21 in #6684
  • fix(people-lists): stop a mutation rollback from resurrecting torn-down state by @hm21 in #6667
  • fix(profile): prefetch profile tab pages before the spinner is reachable by @hm21 in #6671
  • feat(divine-ui): add bug icon by @NotThatKindOfDrLiz in #6701
  • fix(sounds): stop claiming "Credit only" before consent is known by @rabble in #6697
  • fix(profile): grow late-arriving header blocks in instead of snapping by @hm21 in #6686
  • fix(profile): stop the avatar placeholder shimmering through the skeleton by @hm21 in #6669
  • fix(proofmode): scope App Attest to the publishing account by @hm21 in #6490
  • fix(bloc): guard add after close by @NotThatKindOfDrLiz in #6709
  • fix(deep-links): route claimed list links by @NotThatKindOfDrLiz in #6707
  • fix(upload): recover stale resumable auth sessions by @NotThatKindOfDrLiz in #6704
  • fix(profile): filter invalid identity claims before verify by @NotThatKindOfDrLiz in #6708
  • fix(profile): stop showing the signed-in user a generated name at cold start by @realmeylisdev in #6699
  • fix(feed): narrow dead-media prune by @NotThatKindOfDrLiz in #6723
  • fix(categories): give the category gallery a Material ancestor by @hm21 in #6688
  • fix(router): defer redirect refresh notifications by @NotThatKindOfDrLiz in #6703
  • fix(video-player): distinguish exhausted auth retries by @NotThatKindOfDrLiz in #6728
  • fix(relays): publish settings edits as kind 10002 by @NotThatKindOfDrLiz in #6721
  • fix(metadata): stop the late sheet sections jumping, and cap the reposter chips by @hm21 in #6690
  • fix(audio): credit sound creators on detail page by @NotThatKindOfDrLiz in #6727
  • fix(support): apply square-only filter in video service by @NotThatKindOfDrLiz in #6714
  • fix(comments): vote on addressable comment targets with their own coordinate by @realmeylisdev in #6738
  • fix(lists): make owned lists visible and shareable by @rabble in #6617
  • fix(avatar): validate remote svg payloads by @NotThatKindOfDrLiz in #6706
  • fix(bluesky): complete provisioning lifecycle by @NotThatKindOfDrLiz in #6705
  • fix(classics): hide unknown archive import dates by @NotThatKindOfDrLiz in #6718
  • feat(upload): report publish phase timings to Firebase Performance by @hm21 in #6666
  • fix(explore): fall back for unknown tab slugs by @NotThatKindOfDrLiz in #6717
  • feat(clip-reuse): credit reused clip sources by @NotThatKindOfDrLiz in #6725
  • test(bluesky): document crosspost generation equality by @NotThatKindOfDrLiz in #6756
  • test(deep-links): guard AASA claim coverage by @NotThatKindOfDrLiz in #6710
  • fix(models): preserve addressable d-tag state by @NotThatKindOfDrLiz in #6722
  • fix(ui): keep sheet header titles centered by @hm21 in #6736
  • feat(lists): notify when videos are added to public lists by @NotThatKindOfDrLiz in #6729
  • fix(l10n): select the list-add plural in ICU, not in Dart by @rabble in #6765
  • fix(video-actions): show nip05 handles instead of npubs in find people by @hm21 in #6740
  • fix(comments): pad the video reply icon inside its button by @hm21 in #6734
  • refactor(auth): reuse the QR layout as the nostr-connect loading state by @hm21 in #6777
  • fix(feed): record skipped videos as seen impressions by @NotThatKindOfDrLiz in #6755
  • fix(lists): show creator on subscribed curated lists by @NotThatKindOfDrLiz in #6760
  • fix(explore): drop the status-bar gap above Lists and Apps tabs by @hm21 in #6796
  • feat(feed): add immersive video viewing mode by @hm21 in #6779
  • chore(push): remove push-control relay diagnostics by @NotThatKindOfDrLiz in #6731
  • fix(account): purge Hive pending uploads on destructive cleanup by @NotThatKindOfDrLiz in #6732
  • fix(profile): reject empty image-picker files before opening the crop editor by @hm21 in #6768
  • fix(video-editor): shoot green-screen backgrounds with the camera only by @hm21 in #6774
  • fix(feed): offer a Content Filters jump when adult content is off by @hm21 in #6780
  • fix(feed): hide the paused affordance during a temporary pause by @hm21 in #6784
  • feat(metadata): explain the four verification checks by @hm21 in #6792
  • fix(feed): pause playback for the mode and classify sheets by @hm21 in #6788
  • fix(video-metadata): frame the post preview like the feed by @hm21 in #6782
  • fix(library): animate the clip preview hero back on dismiss by @hm21 in #6800
  • fix(build): drop references to the deleted publish diagnostics by @rabble in #6807
  • fix(metadata): hold user chip rows open with placeholders by @hm21 in #6790
  • feat(feed): confirm playback toggles with a snackbar by @hm21 in #6794
  • fix(video-detail): give the dead-end states the TV-static look by @hm21 in #6786
  • chore: add repository Codex configuration by @hm21 in #6815
  • docs(agents): gate PR takeovers on authorship and green CI by @NotThatKindOfDrLiz in #6811
  • perf(collabs): render mutual follows as each follower source answers by @hm21 in #6834
  • feat(support): disclose public GitHub submissions by @hm21 in #6820
  • fix(notifications): protect every UI-decodable reference in previews by @realmeylisdev in #6839
  • fix(audio): unblock publishing for sounds whose creator allows reuse by @hm21 in #6803
  • fix(video-metadata): settle the cover picker's entrance by @hm21 in #6827
  • fix(notifications): tighten preview tokenizer cleanup by @NotThatKindOfDrLiz in #6846
  • fix(startup): gate playback during inactive launch by @NotThatKindOfDrLiz in #6810
  • fix(local-stack): make a current funnelcake stack obtainable and staleness visible by @realmeylisdev in #6823
  • fix(c2pa): validate signing endpoint and stop blaming the user's connection by @rabble in #6773
  • build(macos): allow opt-in team signing for debug builds by @hm21 in #6853
  • fix(explore): cross-fade the popular feed on variant switch by @hm21 in #6798
  • fix(lists): handle addressable list-add notifications by @NotThatKindOfDrLiz in #6766
  • docs(runbooks): correct the Crashlytics tool surface by @rabble in #6682
  • fix(sounds): unblock legacy sound reuse and stop the blocked-tap toast queue by @rabble in #6772
  • feat(profile): point badge detail sheet at badges.divine.video by @rabble in #6498
  • feat(analytics): attribute home-feed views to the feed mode that served them by @rabble in #6865

Full Changelog: 1.0.17...1.0.19