Skip to content

fix: resolve iOS freezes and expand offline library - #67

Merged
infinityf4p merged 1 commit into
mainfrom
codex/issues-60-65-offline-library
Aug 23, 2026
Merged

infinityf4p merged 1 commit into
mainfrom
codex/issues-60-65-offline-library

Conversation

@infinityf4p

Copy link
Copy Markdown
Owner

Summary

  • fix iOS 16 nested search layout recursion and stop overriding native navigation gestures
  • move selectable thread/profile text onto the controlled TextKit renderer and add reliable home-tab reselect refresh
  • add built-in/custom reader fonts with validated private TTF/OTF storage
  • add transactional offline media saves, backup import/export, storage management, and saved-thread reply update tracking
  • move font, local media, voice, and storage file I/O away from the main actor

Root cause

On iOS 16, opening a Boolean navigation destination from a view that was already a NavigationStack destination could recurse through SwiftUI trait/layout updates. The app main thread stayed in CA transaction and AttributeGraph layout while memory continuously grew. Old systems now open these nested searches inside an isolated full-screen NavigationStack; iOS 17 and later keep the local push route. Similar navigation destinations and synchronous local-file paths were audited.

Verification

  • TiebaPureTests: 831 executed, 8 skipped, 0 failures on iOS 18.3
  • iOS 16.4 UI: forum search, repeated thread search, avatar/profile/thread navigation, local save/open, long-press copy
  • iPadOS 18.3 UI: repeated title/main-post/subpost selection and both home reselect refresh paths
  • prior targeted coverage also passed on iOS 18.3 and iOS 26.5

Fixes #60
Fixes #62
Fixes #63
Fixes #64
Fixes #65

@infinityf4p
infinityf4p merged commit beff0f6 into main Aug 23, 2026
1 check passed
@infinityf4p
infinityf4p deleted the codex/issues-60-65-offline-library branch August 23, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant