Repository navigation
ZenNotes for Android 1.1.29: faster links in large vaults
ZenNotes for Android 1.1.29: faster links in large vaults
Version 1.1.29, versionCode 32, October 1, 2026, following 1.1.28 (31). PR #91 carries 79c37fb; the signed bundle zennotes-1.1.29-vc32.aab (31,542,341 bytes, SHA-256 26a13f62…6c17) was built from that commit.
What changes on the phone
- Faster links in large vaults (#880). Resolving a wikilink used to search every note, and counting a note's backlinks did that for every link in the vault. The shared core now builds its link index once per notes list, so opening notes and resolving their links in a vault with thousands of notes and links no longer stalls. Which note a link opens, and which notes count as backlinks, is exactly as before. On desktop the same change took a note switch in a 6,500-note vault from about 1 second to under 0.1 seconds; the phone was not measured.
Under the hood
The three archives come from core-2.60.0-core.hb0d0b54f320a8e3f (a draft until both apps ship), built from desktop release commit 158293947e451f2a88011ddf647517c847cc0a76 (ZenNotes 2.60.0) by workflow 36887215873; iPhone vendors the identical archives in zennotesios#37. core:adopt verified SHA-256, SHA-512, packed versions and clean-source provenance. App-core is 2.60.0-core.hb0d0b54f320a8e3f; bridge-contract and shared-domain are 2.60.0-boundaries.hbdc4a2a12368fec1. The bridge gained only optional, desktop-only methods (the desktop CLI updater), so the shell needs no port. Core 2.59.0, adopted first on this branch, changed nothing on the phone.
Source: branch chore/core-2.59.0 (PR #91): adoption 8600b9f (2.59.0), adoption d463bfc (2.60.0), version commit 79c37fb. Versions cover Gradle, the bridge fallback, package.json and the lockfile. No native implementation, permission or SDK changes.
Validation
- Boundaries, typecheck, 162 JavaScript tests, Vite build and Capacitor sync passed; production audit passes the high-severity gate (one existing low DOMPurify advisory).
- JDK 21:
testDebugUnitTest,lintDebugandassembleDebugpassed;bundleReleaseproduced the signed bundle. - PR CI on
79c37fb: build and emulator launch passed; merged as5e6f09ed(same tree), tagv1.1.29. - Play processed the bundle as 32 (1.1.29): API 24+, target SDK 36, same screen layouts, ABIs and required features as 1.1.28; no devices lost (12,320 phones, 6,749 tablets); 2.98 MB update; only the usual "no deobfuscation file" warning.
Play Console submission
Production, Create new release: release notes (the What's New text inside <en-US> tags) filled in the built-in browser; the AAB dropped in by Adib; release name 32 (1.1.29), rollout 100%, all targeted countries. Saved, then Publishing overview, "Submit 1 change for review", sent October 1, 2026 (state "Changes in review", quick checks first). Managed publishing is off, so approval publishes it. GitHub release v1.1.29 (latest) carries Play's signed universal APK from App bundle explorer as zennotes-1.1.29-universal.apk: 31,797,713 bytes, SHA-256 44725bfd…89763, md.zennotes 32 / 1.1.29, min SDK 24, target 36, signer 9f1af3a4… as since 1.1.22, no CHECK_LICENSE or pairip.
How to test locally
npm ci && npm run build && npx cap sync android, then openandroid/in Android Studio and run on a device or emulator (or install the universal APK from the GitHub release).- Open a vault with many notes and wikilinks, open several notes, and tap links.
- Before (1.1.28): with thousands of links, opening a note could pause. After: notes open promptly, with the same links and backlinks.