Skip to content

Release 1.34.0 (build 50) - #79

Merged
adibhanna merged 10 commits into
mainfrom
release/1.34.0
Oct 27, 2026
Merged

adibhanna merged 10 commits into
mainfrom
release/1.34.0

Conversation

@adibhanna

@adibhanna adibhanna commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

ZenNotes for iPhone 1.34.0 (build 50), on core 2.78.0.

  • Calendar widget (Dave, Discord 2026-10-27; merge of feat/calendar-widget, 264aaa5): the month with writing dots, open-task marks, week numbers and the today ring, above the selected day's tasks with a box to tick on each. The large size pages by day; iOS 27's extra-large portrait size lists the week. A tick is logged in the App Group, drawn ticked at once and applied through core's setTaskChecked the next time the app runs; on iOS 15 and 16 every part is a link into the app.
  • Done and the back chevron close a PDF pinned as a reference (Dave; merge of fix/pdf-embed, cb378fe).
  • Periodic folders show once in the drawer (uNyanda; merge of fix/drawer-periodic-twice, 18da446).
  • Core 2.78.0 (16157cc, core-2.78.0-core.h0bc32cbd73a78fac from ZenNotes/zennotes 52ab86fd): note covers, $$ math in Mermaid labels and Pele 1.12.0, the PDF card at phone width, ticking tasks in CRLF notes, the Themes picker fix. No new bridge method; the contract adds the portable key noteCoverPlacement.
  • Version (5d3ed1c): 1.34.0, build 50 in all six build configurations.

Validation: boundaries:check, typecheck (npm run upstream), 318 tests and npm run sync on the adopted core. The widget was walked on an iOS 27 simulator when built.

uNyanda (Discord, 2026-10-27) saw every daily, weekly and monthly note
twice in the drawer, and deleting one copy took the other with it. The
drawer's top group has Daily, Weekly and Monthly Notes rows that open
those folders, and the Notes list below lists every folder core's
getBrowseDirectory hands it, those three included, marked only by a
calendar icon. One folder, two rows. The layout fix for
ZenNotes/zennotesandroid#17 dealt with a real second folder on disk and
never touched this.

The Notes list now leaves out the folders those rows open, which is how
the desktop sidebar has drawn them since 2.4.0 (periodic notes in Quick
Access, their folders pruned from the tree). A folder holding nothing
but periodic folders (Journal around Journal/Daily) goes too, so the
list never offers a folder that opens onto nothing; one holding a note,
a file, a database or a folder of its own keeps its row. A hidden folder
reached through a note's breadcrumb shows everything in it, or it would
read "No notes here yet". Nothing moves on disk, a note in a periodic
folder that is not periodic is still one tap away through its row, and
turning a kind off brings its folder back to the list.

Same change as the Android shell's fix/drawer-periodic-twice.

Tests: drawer-folders.test.ts (8 cases). typecheck, boundaries:check
and 313 tests pass. In this build at phone size the Notes list went
from Daily Notes, Monthly Notes, Projects, Weekly Notes to Projects
alone, the Daily row still opens its folder, and with the daily folder
at Journal/Daily the list hides Journal while its breadcrumb opens it
onto Daily. The Android build on an API 36 emulator shows the same.
…leave you on the note

The reference pane (a pinned note or PDF) is a full-screen sheet on
phones like the other right panels, but it lives outside EditorPane and
never hears zen:close-right-panel. Done sent that event and the sheet
stayed, while EditorPane took it as a cue to focus the note underneath,
so the keyboard came up behind the sheet. Its header got the injected
back chevron, which went Home; the pin stays with the note, so reopening
the note brought the sheet back. Only the x, which unpins, got out. Dave
reported it on Android (Discord, 2026-10-27); an iPhone 17 Pro simulator
showed the same.

closeRightPanel() hides the reference pane when it is showing, through
core's Hide Reference Pane (ref.toggle, the pane's own square button),
which keeps the pin; otherwise it sends the event as before. Done and the
reference sheet's chevron ("Back to the note") use it. The reference pane
renders after the editor panes, so it is the one on top. The same change
as zennotesandroid fix/pdf-embed.

ref.toggle sees a pin made for one note only with the core from
ZenNotes/zennotes fix/pdf-embed-phones; with core 2.77.0, Done over a
PDF pinned from its card still does nothing. This shell keeps showing a
PDF in the pane: the WebView draws it (navigator.pdfViewerEnabled).

Checked on the simulator with that core: Done and the chevron each closed
the sheet onto the note, and the card showed the whole file name with its
badge under it, clear of Preview. typecheck and 305 tests pass.
…he Home Screen

The iPhone half of the Calendar widget Dave asked for (Discord,
2026-10-27): the Calendar sheet's month, with its writing dots,
open-task marks, week numbers and today ring, above the selected day's
tasks with a box to tick on each.

WidgetKit draws no scrolling list, so the list pages instead. The large
size lists the selected day and its arrows page by day; iOS 27's
extra-large portrait size (4x6) lists the week and pages by week. Past
what fits, "+N more" opens the Calendar. As in the app on a touch
screen, a tap selects a day and a tap on the selected day opens its
note; the arrows page months. Day, Week and "Add a task for ..." open
the Calendar in the app on that day, the last with the cursor in its
field. On iOS 15 and 16, which have no widget buttons, every part is a
link into the app.

A widget extension cannot reach the vault (Documents, the iCloud
container or a bookmarked folder), so a tick never writes the note
here. The tap is logged in the App Group (WidgetActionLog), drawn ticked
at once, and applied the next time the app runs, through core's
setTaskChecked, in order, retrying what cannot land yet. The next
snapshot's actionsAck tells the extension which taps it may forget.
The box is a Button(intent:) with the wanted state baked in. A widget
Toggle left a SetValueIntent's value unset, and on iOS 27 it kept its
in-between look over the reloaded row, so the tick never showed. Every
ISO date key goes through one Gregorian calendar: a Buddhist or Japanese
calendar setting made every key miss.

The intents and the log are compiled into the app as well (the plugin
reads and prunes the log); tooling/add-widget-extension.rb adds the new
files to both targets, and project.pbxproj is its output.

The shared JS is the same as the Android shell's: widget-calendar.ts,
the publisher and log in widgets.ts, the zennotes://calendar, day and
week links, calendar-request.ts and MobileShell's sheet.

Needs core with getCalendarWidgetData and setTaskChecked
(ZenNotes/zennotes 3fc40107). It was built and checked on a rehearsal
core adopted from that tree, whose vendor files are not part of this
commit; adopt the published core before release.

On a scratch iOS 27 simulator (iPhone 17 Pro):
- The widget shows in the gallery and on the Home Screen, matching the
  sheet.
- A tick is logged and shown ticked at once; opening the app, cold or
  warm, wrote it into the note, CRLF notes included, and emptied the log.
- Day select and week paging work.
- The large size and iOS 15/16 were not run.
typecheck, 310 tests and an App build pass.
…ne's viewer and note covers

Core core-2.78.0-core.h0bc32cbd73a78fac, built by CI from ZenNotes/zennotes
52ab86fd (the v2.78.0 release commit); core:adopt checked SHA-256,
SHA-512, packed versions and clean-source provenance.

Core 2.78.0 supplies what this shell's Calendar widget draws and takes
its ticks back (getCalendarWidgetData, setTaskChecked; the shell half
arrived with feat/calendar-widget), opens a PDF in the phone's own
viewer where the WebView has none and lets Done and Back close a PDF
pinned as a reference (the shell half arrived with fix/pdf-embed), and
keeps the PDF card's name clear of Preview at phone width. Notes show
their covers, Mermaid labels typeset $$ math and stay readable on any
fill (Pele 1.12.0), ticking a task in a note saved with Windows line
endings ticks the right one, and the Themes picker no longer previews a
theme nobody chose.

No new bridge method; the bridge contract adds the portable key
noteCoverPlacement. Desktop vault.ts is unchanged since 2.77.0.
@adibhanna
adibhanna marked this pull request as ready for review October 27, 2026 21:09
CI failed on release/1.34.0: "'systemExtraLargePortrait' is unavailable
in iOS" in CalendarWidget.swift. `#available(iOS 27.0, *)` guards the
run, not the build, and the extra-large portrait size exists only in the
iOS 27 SDK; CI builds with Xcode 26.6 (iOS 26.5 SDK), which cannot name
it. The release archive builds with Xcode 27.1, which is why it built
there.

The size is now behind `#if compiler(>=6.4)`, Swift 6.4 being Xcode
27.1's. A build from an older toolchain offers the large size alone; the
release build, from Xcode 27.1, keeps the week view on iOS 27 exactly as
before.
@adibhanna
adibhanna merged commit 51d1abc into main Oct 27, 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