The Android app translates copy by looking it up in a dictionary. 33
strings had no entry, so English, Japanese and Polish users saw them in
Chinese: the default dialog OK button, the Sign in button, the editor
save statuses (Saving, Local draft, Not saved), revision restore states,
search empty state, and delete, upload, load and connection errors.
Add English, Japanese and Polish entries for them and a test that keeps
them translated.
On iOS, the launch spinner showed "启动中…" for every language; it now
follows the app language.
Align iOS TipTap images with Android (width presets, ⋯ actions, WebP
compress, reliable preview). Persist contentJson so image width survives
detail/viewer; force shared WebView re-push and block late autosave so
new notes open empty. Long-press fullscreen image preview opens resource
actions on both iOS and Android.
Keep one long-lived viewer and editor WKWebView so switching notes only
rebinds setContent instead of reloading the EditorBundle. Warm both
runtimes after sign-in, restore Evernote-style focus-at-end on edit,
block empty autosave from clobbering notes, and stop showing flattened
contentText when the rich viewer is still booting.
Replace the abandoned RN iOS path with a SwiftUI app (iOS 17+) that reuses
the shared TipTap editor bundle, GRDB local mirror/outbox, and Android-aligned
shell chrome for list, create, detail, and Me. Package the editor HTML in the
app resources so Markdown renders, present edit from the workspace root with a
UIKit FAB, and keep caret stable while typing.