Repository navigation
Release 1.32.0 (build 48): core 2.76.0 - #75
Merged
Merged
Conversation
Keeping the other device's version of a conflict publishes that file where the other device put it, and any file already there on this phone stopped the choice with "<path> already exists.", even one unrelated to the conflict. Dave's phone (2026-10-23) had trashed an Untitled.md of its own into the slot his computer's trashed Untitled.md went to, so keeping his phone's version was the only way out. That file now moves to the next free name beside it, "Untitled 2.md" and on, the way a second note moved into the folder is named, and moves back if publishing fails. Anything but a plain file still refuses. The name helper is core's cloudSyncFreePath, copied until the shell adopts a core that exports it (2.76.0); that core also settles the conflicts a stuck sync queued against files they only passed.
…icator and the notch The iPhone port of the Android shell's system bar fix (Dave, Discord, 2026-10-23: Review sync changes drew its last line under the Android navigation bar). Both shells carry the same mobile.css dialog-sheet and app-shell rules, and the iPhone had the same geometry problems; only the insets differ. This shell has always drawn edge to edge (viewport-fit=cover, contentInset never), so env(safe-area-inset-*) carries the real values and the CSS owns every inset: the Dynamic Island at the top, the home indicator at the bottom, and in landscape the sensor housing on one side with a matching inset on the other. Three things were wrong: - Dialog sheets kept the home indicator's height as padding inside their 86dvh cap. Core sizes some dialog bodies in vh for the desktop (Review sync changes has a 72vh scroller under its header); once the body fills up, header + body + inset overrun the cap, and overflow:hidden clips at the padding edge, so the body painted into the strip under the indicator: 8 px on a 17 Pro in portrait, 36 px in landscape, where the end of the body sat off the bottom of the screen. - Settings' footer note sat under the home indicator, and the search palette's results ran to the screen bottom, so a long list could never scroll its last rows clear of it. - Nothing honored the side insets. In landscape the editor's lines, the back button, the More and Create sheets, dialog sheets, the drawer, the search palette, Outline and Settings all ran under the sensor housing. Dialog sheets now lay block panels out as a column whose vh-capped scroller shrinks to fit, scroll instead of clipping, and pad the side insets; panels core already lays out as flex or grid keep their layout. Palettes and Settings pad all four insets and move their corner buttons in; the app shell, shell sheets and onboarding pad the sides; the drawer widens by the left inset; side panels are inset, and the toast host clears both sides. Selectors and values match the Android change one for one, so the two shells stay in step. No native, Capacitor config or app-core change; in landscape a dialog's tinted footer strip now stops at the safe area. Reproduced on a scratch iPhone 17 Pro simulator (iOS 26.5) with a stand-in for Review sync changes built from core 2.75.0's Modal, Header and Body classes, loading and loaded. After the fix a probe finds no button, input or text in any inset, portrait and both landscape rotations; the Trash confirm and Rename keep their stacking and Settings keeps its grid. The two new layout contracts fail on the old CSS; 285 tests, typecheck and build pass. Cause, measurements and how to test locally are in docs/safe-area-insets-validation-2026-10-23.md.
…lace in a conflict
…of the home indicator and the notch
…by priority Core core-2.76.0-core.h076cc71aa1ce0bbe, built by CI from ZenNotes/zennotes 61628218 (the v2.76.0 release commit); core:adopt checked SHA-256, SHA-512, packed versions and clean-source provenance. Core 2.76.0 adds Choose a date… to the task menu a long-press opens, with the month calendar a tap on a day sets (ZenNotes/zennotes#991), gives an undated task its own No due date group and Status board column instead of Today (ZenNotes/zennotes#990), and an Order menu that puts high priority first in the Tasks list (ZenNotes/zennotes#989). Its Cloud coordinator settles a conflict that met this device's file once Cloud has moved that note on, so the other device's version can no longer delete a note this device kept (Dave, Discord), and it names a note's folder the same way in note search, the buffer switcher and the [[ picker. This shell's staged resolve now asks core's cloudSyncFreePath for the next free name instead of the copy it carried until this core. No new bridge method or long-press entry; the bridge contract adds tasksListOrder to the portable preferences and otherwise changed only its version. npm run upstream (boundaries and typecheck), 287 tests and sync pass.
Core 2.76.0 puts an Order row (Note order / Priority, ZenNotes/zennotes#989) between the Tasks list's toolbar and the list. On a phone the row grew to split the screen with the list: a third of the screen of empty space with the select floating in the middle, found on the simulator while preparing this release. The shell thumb-sizes every select row with `div:has(> select) { flex: 1 }`, written when the only selects were the Kanban and database Board Group by rows, which share a toolbar line, where flex: 1 fills the line. The Order row is stacked in the Tasks view's column instead, so flex: 1 grew it vertically. A select row that is a direct child of a flex column now keeps its own height (`flex: none`); rows on a toolbar line are unchanged (measured: Kanban's Group by row still fills its line at 44 px). Measured in the release web build at 375x812: the Order row is 53 px and the list starts right under it (before: 311 px). A layout contract test pins both rules.
Core 2.76.0's task menu has Choose a date… (ZenNotes/zennotes#991), so a long-press on any task now leads to the month calendar that typing @Date opens in a note. Under the grid it said "Arrows move. PageUp/PageDown change the month, with Shift the year. Enter picks the day.", keyboard help a phone has no keys for; this shell already hides the other key-hint strips on touch for that reason. The help text goes on phones; the Today button beside it keeps its place on the right. Tablets keep both, as they keep the other hints. Seen and checked on the iPhone simulator with this release's build; a layout contract test pins the rule.
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.
Core
core-2.76.0-core.h076cc71aa1ce0bbefrom ZenNotes/zennotes61628218(the v2.76.0 release commit): Choose a date… in the task menu a long-press opens (ZenNotes/zennotes#991), No due date for undated tasks in the list and on the board (ZenNotes/zennotes#990), the Tasks list ordered by priority (ZenNotes/zennotes#989), and Cloud conflicts that settle without deleting a kept note. Merges fix/cloud-conflict-room (d725816: the other device's version takes its place, moving a file in its way to the next free name; now through core's cloudSyncFreePath) and fix/safe-area-insets (9c9c85b: sheets, palettes and Settings stay clear of the home indicator and, in landscape, the sensor housing). Then 1.32.0, build 48, which replaces 1.31.0 (build 47) while that is still Waiting for Review. npm run upstream (boundaries and typecheck), 287 tests and sync pass.