Repository navigation
Release 1.1.52 (versionCode 55) - #145
Merged
Merged
Conversation
…colors and the folder picker Core 2.81.0 (core-2.81.0-core.h0aaaccaf974a3d72, from ZenNotes/zennotes bcce61e1) brings recurring tasks (@repeat, Repeat… and Skip this time), New Kanban, Kanban column colors, folder fields that list the vault's folders, tight list Enter, Back from a task's note returning to Tasks, and no keyboard cursor, key hints or reminder settings on a phone. Reminders fire from the desktop app; a phone writes @remind and shows the bell.
Core 2.81 gives every folder a Kanban board of its own (ZenNotes/zennotes #1038): New Kanban writes a database seeded with a To do, Doing and Done Status and opens it on its Board. On desktop it lives on a folder's right-click menu, in the palette and on Space k. The phone's palette already lists it, but the New… sheet is where a phone creates things, and it offered only New database, whose board needs its columns built by hand. The sheet now has a New Kanban row right after New database. It runs the same core command (database.new.kanban), so the board lands where new databases go (Settings, Vault, Notes), as on desktop with no sidebar folder under the cursor. The row reuses the shell's two-column tabs glyph rather than adding an icon. The iPhone shell gets the same row, worded the same. Tests: the row sits between New database and New folder and runs that command, and the adopted core registers it as New Kanban.
Walking core 2.81's database Board on the emulator: long-press a card, and its new card menu opens (Open page, Move to Doing, Move to Done, Delete card). Pick a move, or dismiss the menu, and the card stayed at half opacity, as if still being dragged, until another card was long-pressed. Chromium starts an HTML5 drag from a long-press on a draggable element. The shell has cancelled that drag on phones since cards and task rows became draggable (a phantom drop over the editor tripped its file-drop alert), but with preventDefault alone: the cancelled dragstart still reached app-core, and DatabaseBoardView marks the card it hears about as the one being dragged until a dragend that a cancelled drag never fires. Before 2.81 a long-press on a Board card did nothing else, so nobody looked; now it is the way to reach the card's menu. The capture listener now stops the event as well, on phones only, so app-core never hears of a drag that is not happening. Tablets keep native drag and drop. The Tasks board drags by pointer events, not dragstart, so its cards and move handles are untouched. Tests: the listener cancels and stops dragstart at phone width, and the core Board markup it guards (the dim on dragstart, the reset on dragend).
Walking the Tasks board on core 2.81: a card's move handle opened a Move to… sheet listing "undated" and "in-progress" between Today and Waiting. The sheet named columns from its own map of status ids, which knew Today, Upcoming, Waiting and Done but not the No due date and In progress columns core has since added, so those fell through to their raw ids. A column the user renamed showed its old name, and with lanes on every column was listed twice, once for its header and once per lane cell, since all of them carry the column's id. The sheet now takes each column's title from the column header core draws (its label, a rename included) and keeps the id map only for a header that shows no title, mid-rename. Each column is offered once. Tests: the sheet prefers the header's title, lists a column id once, and the core markup it reads (the header marker, its title, the lane cells).
Walking core 2.81 on the emulator: the Tasks calendar in Week mode showed the week of Oct 26, and a tap on the next arrow showed the week of Nov 30. The shell's Week scope hides all but one row of core's six-row month grid, but the arrows above it are core's month arrows, so each tap went a month on, landed on the same day of the next month, and the shell then showed that day's week. A month of tasks went by unseen between two taps. In Week mode the shell now takes the arrows' taps before core does and picks the day a week before or after the selected one, the way a tap on that day would: core selects it and, for a day of another month, turns the grid to that month. A week past either end of the grid (Sep 7 from Aug 31, Oct 25 from Nov 1) comes in with core's own month arrow first, then its day is picked. Month mode keeps core's month arrows untouched. In Week mode the arrows are labelled Previous week and Next week for a screen reader, since core titles them by the month. Nothing in core changes: the shell drives the grid through the day cells and the arrows core draws. Tests: days counted across months, years and daylight saving; a step inside the grid picks the day, one past either end brings in the month; the shell stops core's arrow click only in Week mode; and the core markup it drives (the toolbar, both arrows, a day cell's select and month follow).
…ove it Walking core 2.81 on the emulator: Settings > Tasks opens with the folder board's "Group by the folders inside" field at 559 px, and the keyboard's top lands at 578. A tap on the field left its lower half under the keyboard's suggestion strip, typing included, and its folder list flipped up over the section above. Phones resize the WebView for the keyboard, and Chromium then scrolls a focused field into view, but only one the keyboard covers completely (the Task folders field further down came up fine). A field it covers in part stays where it is. The iPhone walk found the same fields hidden there. Once the keyboard has landed (or the viewport shrinks), a focused field outside the note that does not show in full inside a box that scrolls it is now centred in what shows of that box, where Chromium puts the fields it does reveal. Core's folder list places itself from its field on scroll, so it comes along. A field tapped while the keyboard is already up needs nothing more: Chromium scrolls a field it focuses into view. The note's editor is left alone: its caret keeps its own reveal, which must never fight a reader's scroll (zennotes#891), and the editor's search panel sits inside .cm-editor too. This is installed on phones only: a tablet reveals a focused field on its own. Tests: the board root field ends centred above the keyboard; a field already in view, the keyboard leaving and a focused note scroll nothing; only fields the keyboard types into count; and the shell installs it on phones only, next to the editor's own reveal.
Core 2.81 gives a folder a Kanban board of its own (ZenNotes/zennotes #1038), and on desktop that lives on the folder's right-click menu: the board lands in that folder. The phone had only the New sheet's New Kanban, which puts a board where new databases go (Settings, Vault), so a board for Projects meant making one and moving it. A long-press on a folder in the drawer now offers New Kanban, after Open as Gallery. It runs core's new createBrowseKanban with that folder, on the workspace the sheet was opened in, so "Untitled Kanban.base" is written in the folder and opens on its Board with To do, Doing and Done. The row carries the New sheet's glyph and wording, and shows for folders only, not for a database's own sheet. Core refuses a folder inside a database, which the drawer never lists. Tests: the row sits between Open as Gallery and Rename for folders, with the New sheet's glyph; it creates through createBrowseKanban on the sheet's host and folder; and the adopted core exports that create, placing the board in the folder it is given and refusing one inside a database.
Walking core 2.81's long-press card menu on a database Board: Back did nothing, however many times it was pressed, and the menu stayed open over the board. The same held for the drawer's folder sheet and sort menu, the note sheet a long-press opens, and a prompt such as New folder, Rename or Move: Back hid the keyboard, then did nothing more. The Back cascade closed the layers above the page by sending Escape to the window. Nested editors, palettes and dialogs listen there, but core's context menu listens on itself, where it keeps the focus, and a prompt turns the dialog's window Escape off and cancels on one in its field. The shell's own sheets have no Escape at all. Nothing heard the press. Back's Escape for the top-most menu or modal now starts at the focused element inside it (else the layer itself) and bubbles out to the window, which still hears anything no layer handled, so palettes, nested editors and dialogs close as before. The note sheet, the drawer's folder sheet and its sort menu close through zn:android-back, before the drawer under them, like the FAB dial and the Move to... sheet already did. Tests: the Escape starts at the focus inside the layer, else at the layer, else at the window, and bubbles; the cascade sends it from the top-most menu and modal; the shell sheets close on zn:android-back; and where core listens (the menu on itself, dialogs at the window, a prompt in its field).
…above it Checking the Settings keyboard fix on the tablet layout (800 x 1280 CSS px, API 37): with the keyboard up, the editor's formatting toolbar floated in the middle of the screen, 328 px above the keyboard, with blank note between them. wireKeyboard asks tablets not to resize the WebView for the keyboard and lifts the toolbar by --zn-kb-height in CSS instead. Capacitor's Android Keyboard plugin never honours that request (setResizeMode is unimplemented on Android), and SystemBars shrinks the WebView for the keyboard on every device, so the toolbar rose twice: once with the viewport, once by the lift. The note's bottom padding grew by the same lift. The lift is now only the part of the keyboard the viewport has not already given up (keyboard-lift.ts): none where the WebView shrank for all of it, which is what the tablet does, and the whole keyboard where it kept its height. The keyboard-down height is remembered per viewport width, so a resize that lands before the keyboard's event, or a rotation under the keyboard, is not taken for it. Phones never read the lift and are unchanged: their toolbar still docks at the keyboard's top. The Settings field reveal (992accd) took the same claim on trust, that tablets keep the keyboard over an unshrunk WebView; its notes now say the WebView shrinks everywhere, and that it stays on phones because a tablet's Settings dialog brought a part-covered field above the keyboard on its own. Tests: the walk's tablet numbers give no lift, a WebView that keeps its height gets the whole keyboard, an early resize and rotations stay docked, main.tsx feeds the lift from every keyboard event and resize, only the two tablet rules read it, and the plugin's Android resize mode is a no-op.
… toast storm The release walk of 1.1.52: a Kanban board open in a tab, its folder then deleted outside the app (a file manager, sync from another device, another app on the vault), and the app relaunched. 1,089 "Database not found" toasts stacked over the screen, and the dead tab came back on every launch. The bridge contract answers null for a database that is not there, as desktop's main process does, and core then forgets the database and closes its tab. The shell passed the shared database ops' openDatabase straight through, and that throws "Database not found: <path>" instead. Core showed the error as a toast, and its grid, still without a database, asked again on its next render, so every pass added another toast. openDatabase now answers null for exactly that error (database-open.ts). Every other failure, a file that cannot be read or a schema that cannot be parsed, still throws and still reaches the toast, as it should. Verified on the release build: relaunching with the dead tab active shows no toast and lands on the next tab; a board deleted while the app was in the background is gone on return, with no toast. Tests: a missing database answers null, a found one passes through and any other error still throws; the bridge hands core the wrapped call; and the contract on both sides (the shared ops' throw, core forgetting on null and toasting a throw, the bridge type allowing null).
…uch screens lose the sticky tint Core core-2.81.0-core.h4e6a38a3361b4748, built from ZenNotes/zennotes bfab9fdc, the v2.81.0 tag. Since the candidate this branch adopted first: ending a list leaves a blank line, so the next text is a paragraph of its own; a database that cannot open says so once with Try again instead of asking again on every render; menus open with no row lit; and hover styles apply only where a pointer can hover, so a tap no longer leaves a tint, while the controls that appear on hover show all the time on a phone. The database-open contract test reads core's new failure path: the error still toasts once, and core now records it (databasesLoadError).
…oxes clear Core 2.81.0 shows hover-only controls on a screen that cannot hover. Two of them crowded the database Table on a phone (both phones' final checks of the 2.81.0 tag): the row's Open, a hover shortcut laid over the end of the name cell, hid the end of every long name, and the select column, its box now always shown, shrank to 18 px against the screen's edge once a long title widened the Table. The phone drops that Open (the page glyph left of the name opens the page) and keeps the select column at 40 px. Core takes the same Open away on its own in the next release; this holds the phones until then.
…board down The database Table's page glyph, left of a row's name, is the phone's way into a record page (the hover Open is hidden on phones). The page opened with the caret in its frontmatter, so the keyboard came up and its first Back only lowered it: leaving took two (the Android check of 2.81.0). A tap on that glyph now opens to read, as a note from a Kanban card does. read-open.ts stays byte-identical across the two shells.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ZenNotes for Android 1.1.52 (versionCode 55) on core 2.81.0. The AAB is built from the version commit
27a598c.014bbac, refreshed to the shipping build ind4c08f7):core-2.81.0-core.h4e6a38a3361b4748from ZenNotes/zennotesbfab9fdc(the v2.81.0 tag), provenance checked bycore:adopt. From core: recurring tasks (Repeat…, Skip this time) and Remind… (the desktop app delivers reminders, so Settings shows no reminder section on a phone), New Kanban, Kanban column colors, folder fields that list the vault's folders, tight list Enter that ends a list with a blank line, Back from a task's note returning to Tasks, no keyboard cursor, key hints or lit menu rows on a phone, hover styles only where a pointer can hover, and a database that cannot open saying so once.8eff8f1New Kanban in the New sheet;55bdcffNew Kanban in a folder's sheet in the drawer (core'screateBrowseKanban).0bbf53ea long-pressed Board card no longer stays dimmed.cbd0086the Tasks board's Move to… sheet names columns as their headers do, once each.c0fa8f3the calendar's arrows move a week in Week mode.8477af6a Settings field the keyboard covers in part comes up above it; the editor's own reveal is untouched (#891).666c55bsystem Back closes the menu, sheet or prompt on top.e6b2041a tablet's formatting toolbar sits on the keyboard, not above it.e0f09d5a database deleted outside the app closes its tab instead of stacking toasts.dca89c7the database Table keeps long names clear of the hover Open and its select column at 40 px.df1d830a record page opened from the Table's page glyph opens to read, keyboard down (read-open.ts, byte-identical with the iPhone shell's).27a598c): 1.1.52, versionCode 55.Validation:
npm ci,npm run upstream(boundaries, typecheck), 495 tests. Release builds were walked on an Android 17 emulator (dark mode, generic data) on the candidate cores and again on the shipping core, recording ten clips (docs/releases/v1.1.52/media/android-*.mp4, local): recurring tasks, Skip and Remind, New Kanban from the New sheet and a folder, column colors, the folder picker, lists, the Week arrows, system Back, and the deleted-database fix. The final check on the shipping core: lists end with a blank line and the next sentence is its own paragraph in Read mode; no tint stays under a finger; hover-only controls show; menus open with no row lit; a deleted database closes its tab without toasts; the Table keeps long titles and its select boxes clear, and its page glyph opens the record.