Skip to content

ZenNotes for Android 1.1.51: lanes, subtasks and WIP limits on the board, and a template folder

Choose a tag to compare

@adibhanna adibhanna released this 30 Oct 22:39
· 15 commits to main since this release
da8df9e

Version 1.1.51, versionCode 54, October 30, 2026, following 1.1.50 (53). PR #144 carries 8ac8917; the signed bundle zennotes-1.1.51-vc54.aab (40,069,180 bytes, SHA-256 3edce3cb7fa7cbf93ccafbcc7de46746e631d7f1a0d78f3298fcaeaae7f64b0a) was built from that commit, whose tree 0b1beec equals that of tag v1.1.51 (da8df9e, the merge of #144).

What changes on the phone

  • Lanes on the Kanban board (ZenNotes/zennotes#1027, asked for by williamcheuk03). Tasks, Kanban, View, Lanes: Priority, Folder or Tag splits the board into rows across the same columns, each with its own count. Tap a lane's name to fold it.
  • Subtasks fold into their card (ZenNotes/zennotes#1028). A task's indented subtasks sit inside its card with a progress bar such as 1/3 · 33%, counted like the chip in the note. Tap the bar to show them and tick one from the card; the tick is written into the note.
  • WIP limits (ZenNotes/zennotes#1025). Long-press a column's header, Set WIP limit…: the header reads 17 / 10 and past the limit the column turns red, across every lane. Empty the limit to clear it.
  • Empty tasks stay out of the way (ZenNotes/zennotes#1026). Blank - [ ] placeholders, like the ones daily-note templates leave, stay out of the Tasks list, calendar and board, the Calendar sheet and the Today and Calendar widgets, so yesterday's placeholder no longer turns up overdue. In Tasks a quiet "3 hidden" shows them; View, Hide empty tasks puts them away again.
  • A template folder (ZenNotes/zennotes#1024). Settings, Templates, Template folder: every note in that folder becomes a template in New, New from template, marked with its folder. Its checkboxes stay out of Tasks, its tags out of the tag list and its notes out of search. A template folder you picked on the desktop carries over, and saving settings on the phone keeps it.
  • A folder's menu opens its Gallery. Long-press a folder in Browse, Open as Gallery: its notes as cards, with the keyboard down.
  • One file Cloud won't take no longer stops the sync (ZenNotes/zennotes#1004). It stays on this phone while the rest syncs, and Settings, Cloud says what to do with it.
  • Opening a note from a Kanban card keeps the keyboard down, from the card, its title, its arrow or a subtask line; tap the text when you want to type.
  • The board fits the phone. A card's 1/3 · 33% no longer sits under its move button, and the lanes board lost a white square in its bottom-right corner. The Keys button stays off phones, like the key hints it replaced.

Under the hood

Core core-2.80.0-core.hc5a4589d040cd0da was built by CI from ZenNotes/zennotes 31520814, the desktop v2.80.0 tag; core:adopt checked SHA-256, SHA-512, packed versions and clean-source provenance. The bridge contract adds no method: vault.json's templates, a task's parentId, the folder template source, the portable keys hideEmptyTasks, kanbanWipLimits and kanbanLanes, and Cloud's refused_paths.

The phone's own vault code mirrors desktop's template folder rules: a settings save keeps templates.folder, normalized by shared-domain's normalizeTemplateFolderSettings; a folder rename or move carries it along; the task scan and a single note's rescan go through tasksFolderListsForSettings; text search never walks the folder. Subtasks come from the shared task parser the scan already calls; a test runs the scan over the core's task-subtasks.json fixture, fresh and from its in-memory cache. Cloud's transport keeps a 422's field errors under details.errors, and a batch sent as several requests (inline posts and direct uploads) names a refused path by its place in the batch, with what the earlier requests applied: a port of the desktop client. A Kanban card opens to read through read-open.ts (the same file as the iPhone's), and three mobile.css rules cover the subtask bar beside the move button, the Keys button and sheet, and the scrollbar corner.

Source: branch release/1.1.51 from main 96d967a: 8bb4b93 (core 2.80.0, the template folder, Open as Gallery), b545653 (Kanban cards open to read), d5d9038 (Cloud refused paths), 45aa4ee (the board at phone width) and 8ac8917 (1.1.51, versionCode 54).

Validation

  • boundaries:check, npm run typecheck, 456 JavaScript tests, npm run build and npx cap sync android passed on core 2.80.0; bundleRelease was signed with the upload key on JDK 21, and the bundle reads md.zennotes 54 / 1.1.51, min 24, target 36, with the same three permissions as 1.1.50.
  • CI on #144: the build job (TypeScript, package boundary, Android build with lint) and the emulator launch job passed on 8ac8917 (run 41132220382), first attempt.
  • The release build was walked on an Android 17 emulator (WebView 145) with generic sample data before anything went to Play, recording these clips: lanes by priority, swiped across and folded; a card's subtasks ticked from the card, then its note opened with the keyboard down; a WIP limit set to 10 and cleared; empty tasks hidden, shown and hidden again in Tasks, then the Calendar sheet and the Today widget without them; the template folder picked in Settings, Tasks going from 23 to 18, a note made from the folder's Meeting template and Tasks at 21; Open as Gallery from a folder's sheet. Search found a template's text only in the note made from it. The walk found the card's keyboard, the bar under the move button, the Keys sheet squeezing its key chips and the white scrollbar corner; each was fixed with a test and walked again on the final build.

Play Console submission

1.1.50 (53) is live (Production, Active). Production, Create new release: the AAB, processed as 54 (1.1.51), API 24+, target SDK 36, no devices lost (12,510 phones, 6,823 tablets), 39.2 MB for new installs and 2.83 MB as an update; the only warning was the usual missing deobfuscation file. Release notes inside <en-US> tags, rollout 100%, saved, and sent for review on October 30, 2026; Publishing overview reads Changes in review.

This release carries Play's signed universal APK from App bundle explorer as zennotes-1.1.51-universal.apk: 40,334,551 bytes, SHA-256 9fbce9d9ecfcc0fcc9a7e66cd1754b446fedf7132efa45528a155a59e73c88c9, md.zennotes 54 / 1.1.51, min 24 / target 36, signer 9f1af3a4… as since 1.1.22, permissions INTERNET, VIBRATE and DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION, 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 - [ ] Launch !high, three indented - [ ] lines under it (one checked), and a few more tasks with !med and !low.
  3. The circle, Browse, Tasks, Kanban, View, Lanes: Priority: rows for High, Medium, Low and No priority. Tap Medium: it folds.
  4. Find the Launch card: it reads 1/3 · 33%, clear of the card's move button. Tap the bar and tick a subtask: 2/3 · 66%, and the note's line reads - [x]. Tap the card's arrow: the note opens with the keyboard down. Before: the keyboard came up.
  5. Long-press a column's header, Set WIP limit…, type a number below its count, Set: the header reads count / limit in red.
  6. Add a blank - [ ] line to a note: Tasks shows "1 hidden" and no empty row; the Calendar sheet (the circle, Calendar) lists no empty task either.
  7. Make a folder Templates with a note holding a - [ ] line. Settings, Templates, Template folder: pick it. Tasks no longer lists that line. New, New from template: the note is there, marked with its folder; make a note from it, and only the new note's checkbox shows in Tasks.
  8. Long-press a folder in Browse, Open as Gallery: its notes as cards.