Skip to content

Release 1.9.7: phone editing, tuned by hand (app core 2.45) - #18

Merged
adibhanna merged 4 commits into
mainfrom
release/1.9.7
Sep 8, 2026
Merged

adibhanna merged 4 commits into
mainfrom
release/1.9.7

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

ZenNotes for iPhone and iPad 1.9.7 (build 18)

Pins the app core to upstream 2.45.0 (3301a29d, one commit past the v2.45.0 tag and on upstream main) and ships the phone-editing round found by using the app with one thumb on a real iPhone.

What ships

  • Type like a text field (2cc9b8f): CodeMirror's content defaults turned off autocorrect, the predictive bar, inline predictions and sentence capitalization in the note body; overridden per view through contentAttributes (editor-native-typing.ts). Bullet / Checkbox / Heading insert their marker on a blank line (app-core's setBlockType skips blank lines). Every editor view gets a scrollMargins source for the keyboard toolbar's height and the caret is re-revealed as the keyboard settles (editor-keyboard-scroll.ts), so the last lines of a long note no longer sit under the toolbar.
  • Note gestures everywhere (550e246): tap, long-press, swipe left (Archive / Delete; Restore / Delete on Archive and Trash rows) and swipe right (pin) on Home Recent, Quick Notes, Tags, Archive and Trash rows, layered onto app-core's DOM (note-row-gestures.ts). One options sheet (note-actions.tsx) lifted out of the drawer; it carries data-ctx-menu so app-core's focus heal never raises the keyboard under it. Quick Notes can finally be deleted.
  • Home survives rescans (550e246): installHomeGuard in nav.ts, installed from main.tsx, re-nulls the active tab that rewritePathsInTree restores on every refreshNotes, so Home no longer bounces back to Tasks.
  • Start screen setting (45a72f8): Settings → Appearance → Start screen, Where I left off (default) or Home, cold launches only. Requested by a user after 1.9.6.
  • App core 2.44 → 2.45: arrow keys in the @, / and [[ menus (Fix(editor): arrow keys navigate the @, / and [[ menus again zennotes#707), the [[ picker hint, the remote-vault polling fix (#734). The bridge contract bumps its version only; desktop vault.ts is untouched.

Verification (2026-09-08)

  • 33 node tests, clean typecheck, npm run sync (58 MB) with Podfile.lock unchanged; dist/index.html modulepreloads free of mermaid, vendor-markdown, vendor-highlight and Harper.
  • iPhone 17 Pro simulator, hardware keyboard disconnected: blank-line Bullet, predictive bar and autocorrect in the note body, caret above the toolbar at the end of a long note, Quick Notes swipe-to-delete, the long-press sheet on Home / Quick Notes / drawer rows without the keyboard, swipe-right pin, tap-to-close, Tasks → Home stays, the Start screen card and a cold launch landing on Home.
  • Installed on the iPhone over devicectl; predictive bar, autocorrect, blank-line markers and caret reveal confirmed on the device. Two captioned demo recordings in the local release pack.

Version

1.9.7 (18) in all four build configurations (in ae4746d with the pin, as in 1.9.6). Submitted to App Store Connect 2026-09-08. Same round ships on Android as 1.1.16.

The arrow keys work in the [[, @ and / menus again in app-core, which
the shell inherits; nothing else in the shell changes.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
- Bullet / Checkbox / Heading toolbar buttons work on a blank line:
  app-core's setBlockType converts existing text and skips blank lines,
  so the toolbar inserts the marker itself there (EditorToolbar).
- The caret stays above the keyboard's formatting toolbar: every editor
  view gets an EditorView.scrollMargins source for the toolbar's live
  height, and the caret is re-revealed once the WebView has resized for
  the keyboard — nothing did that before, so the last lines of a long
  note sat under the overlay while typing (editor-keyboard-scroll).
- iOS autocorrect, the predictive bar, inline predictions and sentence
  capitalization in the note body: CodeMirror's content defaults turn
  them all off; overridden per view via contentAttributes
  (editor-native-typing).
- Quick Notes rows swipe left to Delete, the drawer rows' gesture layered
  onto app-core's DOM, with the same confirm-then-trash flow
  (quick-note-swipe).
Every note row on the phone now answers the drawer rows' four gestures:
tap opens, long-press opens the note options sheet, swipe left reveals
Archive / Delete (Restore / Delete on Archive and Trash rows), swipe
right pins or unpins.

- note-actions.tsx: the one options sheet plus its action helpers,
  lifted out of the drawer so app-core's lists share it. It carries
  app-core's data-ctx-menu marker: a native long-press on selectable
  drawer text made the WebView first responder, and app-core's focus
  heal (App.tsx, on window focus) refocused the editor and raised the
  keyboard under the sheet. The drawer is non-selectable for the same
  reason.
- note-row-gestures.ts: the gestures layered onto app-core's DOM rows
  (Home Recent, Quick Notes, Tags, Archive, Trash), replacing the
  quick-note-only swipe. Home rows resolve by position against
  HomeView's recent ordering, ignoring the layers the engine appends;
  the content nudge is capped below the row's own padding.
- nav.ts installHomeGuard, installed first thing in main.tsx: app-core's
  rewritePathsInTree falls back to the leaf's first tab whenever the
  active tab is null, and refreshNotes runs it on every rescan, so Home
  flipped back to the first open tab (Tasks) within a second of arriving.
  The guard re-nulls it inside the same notification pass, ahead of the
  drawer's auto-close subscriber, which otherwise acted on the transient
  tab.
- editor-keyboard-scroll: the caret reveal re-runs over a short window;
  the predictive bar grows the keyboard after the keys, and a single
  early reveal left the caret under the toolbar once.
Settings › Appearance › Start screen (phones): "Where I left off" keeps
the cold-launch landing as it was; "Home" lands on Home on every cold
launch. Switching to another app and back is not a launch and never
moves the user. Stored like the gesture prefs; the default removes the
key. Requested by a user: "set the home screen as the start screen
instead of the last note when turning the app off and on again."
@adibhanna
adibhanna merged commit 8d99202 into main Sep 8, 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