Skip to content

ZenNotes for Android 1.1.47: tagged blocks, the Calendar from Home, steadier Cloud

Latest

Choose a tag to compare

@adibhanna adibhanna released this 26 Oct 22:48
e1348fe

Version 1.1.47, versionCode 50, October 26, 2026, following 1.1.46 (49). PR #135 carries c1945c9; the signed bundle zennotes-1.1.47-vc50.aab (38,024,903 bytes, SHA-256 deb567c8051a14e4d9b15dd2d9d621e74ee7a0971df66e044dc6cc112eec4fe8) was built from that commit, whose tree 3ee688c equals that of tag v1.1.47 (e1348fe, the merge of #135).

What changes on the phone

  • Tags find the idea, not just the note (ZenNotes/zennotes#837). Open a tag (Browse, then Tags) and each note lists the blocks inside it that carry the tag: a list item with its sub-items, a paragraph, a quote, a table row, or a tagged heading's whole section. A tap opens the note on that line. A #tag in search shows up to two of them under each note.
  • The Calendar is one tap from Home. The circle offers Calendar even with no note open, as a sheet of its own; a second tap on the selected day opens that day's note, or offers to create it. With daily notes off, the sheet says so and opens the setting. Asked for on Discord by Dave.
  • Trash leaves you on Home. Moving the open note to the Trash lands on Home instead of in an older note.
  • ZenNotes Cloud copes with slow and filtered networks. A request that stops moving for 30 seconds is abandoned and sent again, where it used to wait five minutes and fail the sync; uploads get a watchdog of their own, since Android's connection has no write timeout. The conflict review opens at once, even while a sync is running. Reported on Discord by yeminn and Dave.
  • Faster Cloud pulls (#133). Each pulled file now takes 10 bridge calls instead of 16.
  • Code in Windows notes stops showing up as tags (#134). A #include inside a code block of a note saved with Windows line endings was read as a tag.
  • Links keep looking like links in list items, headings and table cells, and a link to a missing note in a table cell looks unresolved.

Under the hood

Core core-2.77.0-core.hfe38f5ee2a70bd64 was built by CI from ZenNotes/zennotes 3f0356de (the v2.77.0 release commit, run 40407556591); core:adopt checked SHA-256, SHA-512, packed versions and clean-source provenance. No new bridge method; the bridge contract adds searchTaggedBlocks and linkPopoverOnHover to the portable preferences. Core 2.77.0 also brings the Unresolved Links view and the link popover; on a phone a tap on a link still follows it, and the hover popover never opens.

Source: branch release/1.1.47 from main 9bd1f41 (which already has #134 and #133): merges of feat/calendar-entry (eb49303, as 4177c16) and fix/cloud-stall-retry (6c4377d, as b716779), then d5493e7 (core 2.77.0) and c1945c9 (1.1.47, versionCode 50).

Validation

  • boundaries:check, npm run typecheck, 332 JavaScript tests, npm run build and npx cap sync android passed; bundleRelease was signed with the upload key on JDK 21, and the bundle reads md.zennotes 50 / 1.1.47, min 24, target 36, with the same three permissions as 1.1.46.
  • CI on #135 (run 40410138868): the build job and the emulator launch job passed on c1945c9.
  • The stall bound was measured on an emulator against a test server that stalls mid-body: a 2,000-note, 29 MB first sync with four stalls took 21 min 23 s on 1.1.46 (four failed runs of about 300 s) and 3 min 10 s with this release's code (one run, each stall resent after about 30.7 s); clean syncs were unchanged.
  • The tagged blocks, the Calendar from Home and Trash landing on Home were walked in a build of the same core at phone size; the Calendar entry was walked on an emulator when it was built.

Play Console submission

1.1.46 (49) was live. Production, Create new release: the AAB was dropped in by Adib and processed as 50 (1.1.47): API 24+, target SDK 36; no devices lost or added (12,480 phones, 6,823 tablets); 4.14 MB update; only the usual "no deobfuscation file" warning. Release notes inside <en-US> tags, rollout 100%, saved, and sent for review on October 26 (CDT). Managed publishing is off, so Google publishes it on approval.

PR #135 merged as e1348fe (merge tree equals 3ee688c, the tree of c1945c9); lightweight tag v1.1.47. This release carries Play's signed universal APK from App bundle explorer as zennotes-1.1.47-universal.apk: 38,267,676 bytes, SHA-256 2adbc896bd9d48f6756a42e1d71de46e6449c4ef59ea9b9b6ce0a316922be37c, md.zennotes 50 / 1.1.47, min 24 / target 36, signer 9f1af3a4… as since 1.1.22, the same three permissions as 1.1.46, no CHECK_LICENSE or pairip.

How to test locally

  1. npm ci && npm run build && npx cap sync android, then open android/ in Android Studio and run on a device or emulator.
  2. Write a note with two lines ending in #idea. Tap the circle, then Browse, then Tags, and pick idea: the note is listed with both lines under it, and a tap opens the note on that line. Before: only the note.
  3. Go back to Home, tap the circle, then Calendar: it opens with no note open. Tap today, then tap it again and choose Create: today's daily note opens. Before: the Calendar needed an open note.
  4. Open a note, move it to the Trash from its ••• menu: you land on Home. Before: an older note opened.