ZenNotes 2.80.1 takes a white square out of every dark theme: where a view scrolls both ways, such as the Kanban board with lanes or a wide database grid, the corner between its two scrollbars was painted white. It is a same-day patch for 2.80.0, whose notes have everything 2.80 brings.
Released from 06ab9d60 through #1031 on 2026-10-30. All installers are verified.
Fixes
- No white square where a view's two scrollbars meet. Before: in a dark theme, a view that scrolls both across and down drew a solid white 10 px square in its bottom-right corner, the brightest thing on the screen. 2.80.0's swimlanes made it easy to see, since a board with lanes scrolls both ways, and wide database grids had it too. After: the corner shows the page behind it in every theme, dark or light. The phone walk for iPhone 1.35.0 and Android 1.1.51 found it first; both phone apps ship the same fix.
For contributors
packages/app-core/src/styles/index.css(eef398bd): the global stylesheet styled::-webkit-scrollbar, its track and its thumb, but never::-webkit-scrollbar-corner, and once a page styles the scrollbar, Chromium paints an unstyled corner white. The corner is now transparent beside the track.scrollbar-style.test.tspins it (red without the rule).- Checked over CDP on the built app with both stores isolated: a Kanban board with Lanes: Priority and a 24-column, 80-row CSV database, in Gruvbox dark and light. All 400 device pixels of the corner read the page colour after the fix and white before.
Verification
How to test locally:
- Build once with
npm run build --workspace @zennotes/desktopand launch with isolated stores:ZENNOTES_USER_DATA_PATH=$(mktemp -d) ZENNOTES_CONFIG_DIR=$(mktemp -d) npx electron apps/desktop/out/main/index.js. - Pick a dark theme (Settings, Appearance). Open Tasks, Kanban, View, Lanes: Priority, in a vault with enough tasks that the board scrolls both across and down, and make the window small.
- Look at the bottom-right corner where the two scrollbars meet. Before: a white square. After: nothing but the page background. A database with many columns and rows shows the same.
Distribution channels
- GitHub release: installers for macOS (Apple silicon and Intel DMG and zip), Windows (x64 and ARM64 installer and zip) and Linux (x64 and arm64 AppImage, deb, rpm, pacman, tar.gz), with five update manifests;
promote-latestmarked it latest once the last feed was up (release run 41139726187). - AUR:
zennotes-bin2.80.1-1 (AUR cloned0a34e2, repob912bf9b), pinned toZenNotes-2.80.1-linux-x64.tar.gzSHA-256584158d4…69e5. - Nix:
packaging/nix/release-data.jsonfrom the update workflow (run 41141341753, bot PR #1032 closed) as943ecded;nix-buildpassed on main (run 41141538972). - nixpkgs: NixOS/nixpkgs#579420 now proposes 2.74.0 -> 2.80.1 (
61cf25ec), the source hash from the v2.80.1 tag tarball. - Homebrew:
zennotes2.80.1 in the tap (9ae9dc7), mirrored in5f877f36; DMG SHA-256 arm6476e82975…, x6430868c96…. - Website: ZenNotes/website#101 merged at
dfde69cd(the 2.80.1 entry, server 2.80.1, the 2.80.1 share viewer with 2.80.0 retained); deployed by hand on Laravel Cloud and checked live. - Server: ZenNotes/znserver v2.80.1 pins
web-2.80.1-web.h16c9bfee43ba31d4and moves chi to 5.4.0 for an X-Forwarded-For advisory it never reached (#59, #60); Dockeradibhanna/zennotes:2.80.1,2.80,latestatsha256:4b40ce15…(amd64, arm64). - Boundary packages:
web-2.80.1-web.h16c9bfee43ba31d4andviewer-2.80.1-viewer.h7b2208158e1fb114(the share viewer uses the same stylesheet), published as pre-releases after their provenance checked out. The phones stay on core 2.80.0, whose shells carry the same fix.
Release validation
- Local gates on the release commit:
npm ci, typecheck, every test suite uncached (shared-domain 2298, app-core 4619 with the new corner test, desktop 1351, Quick Look 18),build:prod, the three smoke suites,npm run packand the packaged launch check (2.80.1), hazard scan and dash lint. - #1031: all ten checks green; CI on
mainpassed on the release commit before the tag (run 41137564663, CodeQL included). verify-installers.py: every file the five feeds name is present at its size; both DMGs are Notarized Developer ID and stapled, reporting 2.80.1;npm run verify:channels -- 2.80.1reported every channel serving 2.80.1.