Skip to content

Release 1.1.46 (versionCode 49): core 2.76.0 - #132

Merged
adibhanna merged 8 commits into
mainfrom
release/1.1.46
Oct 23, 2026
Merged

adibhanna merged 8 commits into
mainfrom
release/1.1.46

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

Core core-2.76.0-core.h076cc71aa1ce0bbe from ZenNotes/zennotes 61628218 (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 (9cbe6a8: 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/system-bar-insets (a56be5f: sheets, palettes and Settings stay clear of the navigation bar on WebView 140+, Dave's report). Then 1.1.46, versionCode 49. npm run typecheck, 310 tests, build and sync pass; assembleDebug builds. Dave's exact screen (Review sync changes' confirm step, rendered from core 2.76.0's own dialog) measured on this build on an API 37 / WebView 145 emulator with 3-button navigation: Saving… and Go back end at 723 px, the bar starts at 752; both landscape rotations clear too.

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.
…on bar

Dave (Discord, 2026-10-23, 1.1.45 from Play, 3-button navigation) found
app buttons hard to tap under back/home/recents; his Review sync changes
sheet drew its last line, "Loading the versions kept for you...", under
the buttons.

Since WebView 140, Capacitor 8's SystemBars stops padding the WebView and
hands the insets to the page, so the page draws under the status and
navigation bars. The emulator images used for shell work ship WebView 133,
where the page still sits between the bars, so this never showed in
testing. Three things were wrong on newer WebViews:

- Dialog sheets kept the bar'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
  plus body plus inset exceed the cap, and overflow:hidden clips at the
  padding edge, so the body's bottom painted into the strip under the bar.
  Block panels now lay out as a column whose scroller shrinks to fit, and
  a panel that still overflows scrolls with the inset at the end.
- The palettes' results and Settings' footer ran to the screen bottom.
  Both now pad every inset; with the keyboard up the bottom inset reads 0,
  so the results still meet the keyboard.
- Nothing honored the side insets, where a landscape 3-button bar or the
  camera cutout sits ("Finish later" sat under Back). The app shell,
  sheets, dialog sheets, palettes, Settings, side panels, drawer, toasts
  and onboarding now clear them; side panels are inset rather than padded
  because core gives them their own side padding.

It deliberately does not go back to native padding on new WebViews,
which would paint both bar strips in the fixed dark window color under
every theme, and it changes nothing in app-core or Immersive Mode.

Verified on a throwaway Pixel 8 AVD with API 37 (WebView 145) over WebView
CDP, at 360x800 CSS px, in 3-button and gesture navigation, portrait and
both landscape rotations, with a stand-in for Review sync changes built
from core 2.75.0's exact Modal, Header and Body classes (no Cloud account
on the AVD): before, the last line sat at 757 to 841 px with the bar from
752; after, the body ends at 752 and scrolls its last line clear. Palette,
Settings, drawer, Outline, Trash confirm and Rename checked too, and a
WebView 133 AVD still reads every inset as 0 with its layout unchanged.
npm test (308, two new layout contracts that fail on the old CSS),
typecheck, build and assembleDebug pass. Not run: a real Cloud conflict on
a device, WebView 140 to 143. Notes in
docs/system-bar-insets-validation-2026-10-23.md.
…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 typecheck, 310 tests, build 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.
@adibhanna
adibhanna merged commit 3609c83 into main Oct 23, 2026
2 checks 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