Release 1.9.7: phone editing, tuned by hand (app core 2.45) - #18
Merged
Merged
Conversation
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."
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ZenNotes for iPhone and iPad 1.9.7 (build 18)
Pins the app core to upstream 2.45.0 (
3301a29d, one commit past thev2.45.0tag and on upstreammain) and ships the phone-editing round found by using the app with one thumb on a real iPhone.What ships
contentAttributes(editor-native-typing.ts). Bullet / Checkbox / Heading insert their marker on a blank line (app-core'ssetBlockTypeskips blank lines). Every editor view gets ascrollMarginssource 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-row-gestures.ts). One options sheet (note-actions.tsx) lifted out of the drawer; it carriesdata-ctx-menuso app-core's focus heal never raises the keyboard under it. Quick Notes can finally be deleted.installHomeGuardinnav.ts, installed frommain.tsx, re-nulls the active tab thatrewritePathsInTreerestores on everyrefreshNotes, so Home no longer bounces back to Tasks.vault.tsis untouched.Verification (2026-09-08)
npm run sync(58 MB) withPodfile.lockunchanged;dist/index.htmlmodulepreloads free of mermaid, vendor-markdown, vendor-highlight and Harper.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.