What's Changed
- chore: remove dead code by @garfiec in #444
- chore(detekt): gate every source set, tighten thresholds, restore the Exception catch rule by @garfiec in #448
- chore(ios): derive the bundle identifier from PRODUCT_BUNDLE_IDENTIFIER by @garfiec in #449
- fix: rethrow coroutine cancellation instead of reporting it as an error by @garfiec in #447
- refactor(ui): share one hold-or-drag gesture between menus and lists by @garfiec in #446
- chore(detekt): clear 26 suppressions by narrowing catches and sharing one API catch by @garfiec in #450
- chore(detekt): narrow catch suppressions and drop global-context access by @garfiec in #451
- fix(settings): keep the memories opt-out across restarts; remove the non-functional Personalization dialog by @hmv47 in #443
- refactor(chat): split StreamingManagerDelegate and drop its detekt suppressions by @garfiec in #452
- chore: target SDK 36 by @garfiec in #453
- refactor(chat): extract upload intake and routing into UploadIntakeDelegate by @garfiec in #454
- refactor(chat): move pause panel auto-advance into PendingActionDelegate by @garfiec in #455
- refactor(chat): extract config, flags and profile loads into ChatConfigDelegate by @garfiec in #456
- refactor(chat): extract conversation loading into ConversationLoadDelegate by @garfiec in #457
- feat(chat): context gauge on v0.8.8, web-parity breakdown and detail levels by @garfiec in #458
- refactor(chat): extract send readiness and dispatch into delegates by @garfiec in #459
- feat(settings): date & time format settings by @garfiec in #460
- fix(ui): fade menu rows in without the blur by @garfiec in #461
- feat(settings): sliding-pill selectors on the context usage page by @garfiec in #462
- feat(settings): appearance page with interface style and theme previews by @garfiec in #463
- feat(settings): background prefetch on its own page by @garfiec in #464
- refactor(settings): shared links get their own ViewModel by @garfiec in #466
- refactor(chat): extract queue orchestration into QueueOrchestrationDelegate by @garfiec in #465
- refactor(settings): General tab gets its own ViewModel by @garfiec in #467
- refactor(settings): Account tab gets its own ViewModel by @garfiec in #468
- refactor(settings): Data tab gets its own ViewModel by @garfiec in #469
- fix(settings): hide the balance section when the server has balances off by @garfiec in #471
- fix(settings): show the TTS rate and pitch values instead of format placeholders by @garfiec in #473
- fix(speech): decode TTS voice lists sent as plain names by @garfiec in #472
- refactor(settings): Chat tab owns what is left of SettingsViewModel by @garfiec in #470
- feat(settings): Memories and MCP servers open their own pages from the Data tab by @garfiec in #474
- feat(ui): grouped settings sections in Material too by @garfiec in #475
- feat(release): CI writes the F-Droid changelog on every release by @garfiec in #476
- fix(auth): give the SSO WebView explicit MATCH_PARENT layout params by @garfiec in #477
- refactor(chat): one shared ChatScreen for Android and iOS by @garfiec in #478
- feat(media): drag the viewer away in any direction to dismiss by @garfiec in #479
- fix(ui): draw the swollen glass segment thumb over neighbouring content by @garfiec in #480
- test(ui): cover menu motion, segmented control and media dismiss; run all module iOS tests in CI by @garfiec in #481
- refactor(ios): share one NSData.toByteArray; drop process notes from comments by @garfiec in #483
- feat(ui): let a tapped glass segment thumb linger, then pop flat by @garfiec in #482
- feat(settings): default to a starred group and steering while generating by @garfiec in #484
- feat(settings): chat layout page with a live preview by @garfiec in #485
- i18n: translate the interface-style strings and localize chat error messages by @garfiec in #486
New Contributors
Full Changelog: v2026.10.2...v2026.10.3