Skip to content

Release 1.9.6: Cloud conflicts become clear choices (app core 2.44) - #17

Merged
adibhanna merged 7 commits into
mainfrom
release/1.9.6
Sep 4, 2026
Merged

adibhanna merged 7 commits into
mainfrom
release/1.9.6

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

ZenNotes for iPhone and iPad 1.9.6 (build 17)

Pins the app core to upstream v2.44.0 (f156bb13, the tag's final commit and the head of upstream main) and wires the phone into its Cloud conflict resolution.

What ships

  • Cloud conflict resolution on iOS (#683): the bridge implements the five new operations (inspect, draft, resolve, and the bootstrap pair), so the phone uses the same durable queue as desktop and Android. Conflicts are resolved from Settings → Cloud or the command palette instead of numbered (cloud conflict) copies.
  • App core 2.38 → 2.44: no conflict copies after an offline catch-up, Sync incomplete names each file with a reason, editor fixes.
  • Harper stays off the phone: supportsHarper is deliberately absent, a Vite stub keeps the 15.6 MB engine out of the bundle, and the vault settings normalizer carries the harper field through so a phone-side save never erases the desktop's dictionary.
  • Toolchain: Vite 8, @vitejs/plugin-react 6.
  • Fix: the desktop status bar had reappeared on the phone because 2.44 changed its padding classes; the hide rule now matches its layout classes.

Verification (2026-09-04, at the final pin)

  • 30 node tests, clean typecheck, npm run sync with Podfile.lock unchanged.
  • dist/index.html modulepreloads free of mermaid, vendor-markdown, vendor-highlight, and Harper; no Harper asset in the bundle.
  • Xcode Debug build and launch on the iPhone 17 Pro simulator; Info.plist reports 1.9.6 (17); Settings shows no Harper entry; bottom edge clean.
  • A real three-way Cloud conflict resolved from the simulator against a local dev Cloud: phone and a second device changed the same line, the resolver rendered inline at phone width, a draft was saved and restored, and Save combined note left Cloud, disk, and local state at the same hash with no conflict copy.

Version

1.9.6 (17) in all four build configurations (in 007cd2f rather than a standalone version commit).

https://claude.ai/code/session_019ezmv7AL3iRNeRKU9ekk3C

ZenNotes 2.44.0 adds Harper, an offline grammar checker, on desktop and
web. Phones do not run it: the system keyboard already checks spelling,
and the mobile bridge never reports the new supportsHarper capability,
so app-core hides the setting, the commands and the editor extension
here. Two things still had to change with the source pin.

The vault settings normalizer now keeps the harper field (the vault
dictionary and ignored suggestions, written by desktop and web), cleaned
by the same shared normalizer the other runtimes use; before, a save
from this device would have erased what the user taught it. And a Vite
stub resolves harper.js and its wasm binary to an empty module, so the
bundle never carries Harper's 15.6 MB. harper.js is a dev dependency
only, for the types the shared editor code references.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
The 2.44.0 tag moved once after the release cut, to a commit that only
fixes the desktop repo's Docker build and its Windows test run; the pin
follows so the shell builds from exactly what the tag names.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
The tag moved a second time for a Windows-only test fix in the desktop
repo; nothing the shell bundles changed.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
The phone hides app-core's word-count status bar and folds its info into
the ••• sheet. The rule matched the bar by its padding class, and 2.44
changed that from `px-6` to `px-3 sm:px-6` for the conflict-resolution
work, so the bar came back along the bottom edge under the circle nav.
Match its layout classes instead (the only element in app-core with that
combination), which also covers the old markup. The Cloud conflict queue
stays reachable on the phone from Settings → Cloud and the palette's
Review Cloud Sync Conflicts.

Claude-Session: https://claude.ai/code/session_019ezmv7AL3iRNeRKU9ekk3C
The desktop tag moved once more for a release-workflow-only change (the
macOS signing keychain fix); the shell bundles nothing from it.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
@adibhanna
adibhanna merged commit edf2791 into main Sep 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant