Skip to content

Release 1.33.0 (build 49): core 2.77.0 - #78

Merged
adibhanna merged 6 commits into
mainfrom
release/1.33.0
Oct 26, 2026
Merged

adibhanna merged 6 commits into
mainfrom
release/1.33.0

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

Core core-2.77.0-core.hfe38f5ee2a70bd64 from ZenNotes/zennotes 3f0356de (the v2.77.0 release commit): tagged blocks in the Tags view and under a #tag in search (ZenNotes/zennotes#837), the Calendar from Home with no note open, Home after the open note goes to the Trash, a 30-second bound with a retry for stalled Cloud requests, a conflict review that opens without waiting on a running sync, and links that keep their color in lists and tables. On top of main, which now has #76 (the CRLF code-block fix) and #77 (10 bridge calls per pulled file instead of 14), this merges feat/calendar-entry (2a87dd6: the circle's Calendar row and the Calendar sheet) and fix/cloud-stall-retry (8212e58: this shell's half of the stall bound). Then 1.33.0, build 49, which replaces 1.32.0 (build 48) while that is still Waiting for Review. npm run upstream (boundaries and typecheck), 305 tests and sync pass; the tag blocks, the Calendar from Home with New daily note, and Trash landing on Home were walked in this build at phone size, and link taps on the simulator follow links with no hover popover.

Dave (Discord, 2026-10-26) asked for a calendar on the phone like the
desktop sidebar: the month on top, tasks by date below, and a tap on a
date that opens or creates that day's note. The iPhone app has had it
since its first build, but only from a note's ••• sheet and only with
daily or weekly notes on, so he never found it.

The circle's menu gets a Calendar row between More and Browse, listed
always. It opens core's date calendar (ZenNotes/zennotes 95f48cde,
`@zennotes/app-core/calendar`) as a full-screen sheet that needs no open
note, with the Done pill every right-hand panel has. A tap selects a day
and the week of tasks below follows it; a tap on the selected day opens
its daily note, or offers to create it. Today is selected when it opens,
so today's note is one tap away. Once a day or a task opens the sheet
closes, so the note is what shows, even when it was the note already
open. The ••• row opens the same sheet now. An iPad keeps the panel
beside the note, the only place its ••• row offers it.

With daily and weekly notes both off there is nothing for the calendar
to open, so instead of disappearing the row explains that and offers
"Turn on daily notes…", which opens Settings on Vault, Periodic notes.

The Tasks calendar's Week mode now leaves the date calendar's grid
alone: opened over Tasks in Week mode, the sheet would have lost all but
one week of days.

This needs core 2.77.0 (the calendar subpath, DateCalendar's onOpen,
showSettingsPage) and does not build on the vendored 2.76.0; the core
adoption is a separate commit. Checked in the release web build at
375x812, dark and light, with touch presses, on a rehearsal core built
from 95f48cde: daily notes off, the switch, select, create, open an
existing day, the same note already open, the ••• row, and Done. The
Android shell carries the same change and was checked with real taps on
an emulator. A layout contract test pins the sheet's full-screen and
day-cell rules; 290 tests pass.
…ut again

yeminn (Discord, 2026-10-26) syncs a 28 MB vault behind a national
filter that can hold a connection open and pass nothing. The shell gave
every Cloud request 300 seconds, and a request that gave up failed the
whole sync, which then started over. A first sync with a few stalls took
twenty minutes on Android, and this shell had the same bounds.

- A request without a body gets 30 seconds of silence, the bound core's
  cloud-sync-stall sets. URLSession starts the timeout over whenever
  data arrives, so a big page on a slow link still takes as long as it
  needs (a 2 MiB download trickled at 64 KiB a second finished with a 5
  second timeout). CloudFilesPlugin's downloads get the same 30 seconds.
- Bytes going out never restart that timeout, and URLSession reports a
  body sent once it holds it, so nothing can see a stalled upload sooner.
  A request with a body, the CapacitorHttp object PUT and
  CloudFilesPlugin's PUT get cloudSendTimeoutMs: 30 seconds plus the
  body's time at 8 KiB a second.
- CapacitorHttp resolves every HTTP answer, so a rejection means none
  came. It becomes a CloudSyncTransportError, and the client opts into
  core's transport retries: a read, or a push with operation ids, goes
  out again after about 1, 4 and 15 seconds instead of failing the run.
- A native download that got no HTTP answer is downloaded again into a
  clean scratch file, and an object PUT the store never answered is sent
  again (the same bytes to the same object). An answer with a status is
  never retried.

This needs a core that exports @zennotes/shared-domain/cloud-sync-stall
(zennotes fix/phone-cloud-stalls). The commit does not adopt one, so
adopt that core's boundary release before building.

Tested on a rehearsal core of that branch: npm test 295 (6 new, each
failing on the old code), typecheck, boundaries:check and a Debug
simulator build. The stall and throttle runs were on the Android
emulator; this shell was not run end to end on a simulator.
…e and a steadier Cloud

Core core-2.77.0-core.hfe38f5ee2a70bd64, built by CI from ZenNotes/zennotes
3f0356de (the v2.77.0 release commit); core:adopt checked SHA-256,
SHA-512, packed versions and clean-source provenance.

Core 2.77.0 lists the tagged blocks inside each note in the Tags view and
under a #tag in search (ZenNotes/zennotes#837), gives this shell's
Calendar a surface that needs no open note (DateCalendar; on a touch
screen a second tap on the selected day opens it), lands on Home after
the open note goes to the Trash, bounds a stalled Cloud request at 30
seconds with a retry on phones (this shell's half arrived with
fix/cloud-stall-retry), opens a Cloud conflict without waiting on a
running sync, and keeps a pull's cost flat as the vault grows. It also
adds 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 (checked on
the simulator).

No new bridge method; the bridge contract adds the portable keys
searchTaggedBlocks and linkPopoverOnHover. Desktop vault.ts changed only
by the CRLF fence fix, which this shell already carries (#76).

npm run upstream (boundaries and typecheck), 305 tests and sync pass. In
this build at phone size: #idea in the Tags view lists 1 note, 2 blocks
(a list item with its sub-item, and a second item), and a tap opens the
note on that line; on Home the circle offers Calendar, daily notes off
shows the turn-on sheet, and a second tap on the selected day offers New
daily note and creates Daily Notes/2026-10-26; Move to Trash on the open
note lands on Home.
@adibhanna
adibhanna merged commit 3f39647 into main Oct 26, 2026
1 check passed
renovate Bot added a commit to scottames/copr that referenced this pull request Oct 27, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ZenNotes/zennotes](https://redirect.github.com/ZenNotes/zennotes) |
minor | `2.76.0` → `2.77.0` |

---

### Release Notes

<details>
<summary>ZenNotes/zennotes</summary>

###
[`v2.77.0`](https://redirect.github.com/ZenNotes/zennotes/releases/tag/v2.77.0):
ZenNotes v2.77.0

[Compare
Source](https://redirect.github.com/ZenNotes/zennotes/compare/v2.76.0...v2.77.0)

ZenNotes 2.77.0 is about links and ideas. Every `[[link]]` to a note you
have not written yet now waits in one Unresolved Links list, and a link
popover lets you read, edit or create the linked note without leaving
the one you are in. A tag now finds the idea itself: the Tags view and
Search notes list the tagged blocks inside each note, not just the note.
It also fixes three Vim mode annoyances, keeps links looking like links
in lists, headings and table cells, and makes ZenNotes Cloud far more
patient on slow or filtered networks.

Released from
[`3f0356de`](https://redirect.github.com/ZenNotes/zennotes/commit/3f0356de0d9351d9414ffd103cfd5d919c122cc3)
through
[#&#8203;996](https://redirect.github.com/ZenNotes/zennotes/pull/996) on
2026-10-26. All installers are verified.

#### Features

- **Every unresolved link in one list** (asked for by uNyanda). A
`[[link]]` you write before its note exists is easy to forget. The
Unresolved Links view lists every link in the vault that points at no
note, most linked first, with each note and line that links to it. Enter
on a line opens that note on the link, Enter on a name creates the note
where `gD` would, and `K` writes it in the link popover without leaving
the list. Open it with `Space u` or `:unresolved` in Vim mode, Open
Unresolved Links in the command palette, or the new row under the
Connections panel's missing links. Links inside code are text, and a
link to an existing note's heading, block or alias counts as resolved,
exactly as the editor draws it.
- **Edit or create a linked note without leaving yours** (asked for by
uNyanda). Rest the pointer on a `[[link]]` and the linked note opens in
a small floating editor over the note you are in. It is the real note:
what you type saves like any edit and shows in its tab if it is open.
`K` in Vim mode or `Shift+Cmd+K` (`Shift+Ctrl+K`) opens it from the
keyboard, Escape gives the cursor back where it was, and `Cmd+Enter`
opens the note in a tab. A link to a note that does not exist yet offers
Create note: Enter creates it and you are already typing in it. Hover
can be turned off under Settings, Writing, Link popover on hover
(`link_popover_on_hover` under `[editor]` in config.toml).
- **The Tags view lists the ideas, not just the notes**
([#&#8203;837](https://redirect.github.com/ZenNotes/zennotes/issues/837),
thanks to [@&#8203;uNyanda](https://redirect.github.com/uNyanda)).
Opening a tag, from the sidebar, a `#tag` in a note or `:tag`, now lists
each note with the blocks that carry the tag under its title: a list
item with its sub-items, a paragraph, a quote, a table row, or, for a
tag on a heading, that whole section. Enter opens the note on that line,
highlighted, and Ctrl+O comes back; `}` and `{` hop from note to note in
Vim mode, and the filter narrows to the blocks whose text matches. Tags
in frontmatter still tag the whole note.
- **Search notes shows tagged blocks too**
([#&#8203;837](https://redirect.github.com/ZenNotes/zennotes/issues/837)).
With a `#tag` in the query, each note lists up to two of its tagged
blocks, then a "+N more" row that opens the rest in the Tags view. Words
after the tag narrow the blocks and are marked in them, and Enter on a
block opens its line. Without a `#tag` the palette is exactly as before,
and "Show tagged blocks in note search" in Settings, Editor, Search
turns it off (`tagged_blocks` under `[search]`).

#### Fixes

- **Vim mode**
([#&#8203;993](https://redirect.github.com/ZenNotes/zennotes/issues/993),
thanks to [@&#8203;athu16](https://redirect.github.com/athu16)). On
Linux and Windows, Ctrl+A in Normal mode now increments the number under
the cursor, as Ctrl+X already decremented it, instead of selecting the
whole note; insert mode keeps Select All. Ctrl+J and Ctrl+K in Settings
walk the categories in the order the list shows them, where they used to
jump back and forth. And `l` on a collapsed folder in the sidebar keeps
the cursor on that folder; the first expand of a folder used to throw it
onto the note you had open.
- **The sidebar cursor stays on its row.** A note added or removed by
another app or a sync could slide the Vim cursor in the sidebar onto a
neighboring row, or onto the open note after a folder had been clicked.
It now stays on the row it was on.
- **Links keep looking like links.** A link inside a list item, a
heading or emphasis kept only its underline and took the text color
around it (since 2.50.3); it is the link color again, in every theme.
And a `[[link]]` to a missing note inside a table cell now looks
unresolved, grey and dashed like everywhere else, and turns into a link
the moment the note exists.
- **Code in Windows notes stops showing up as tags.** In a note saved
with Windows line endings, a `#include` inside a code block was counted
as a tag, because the code block was never recognized. It is now.
- **ZenNotes Cloud on slow or filtered networks** (thanks to yeminn and
Dave). The conflict review opened while a sync was still running waited
for that sync, up to five minutes on a stalled connection, with Finish
later greyed out; it now opens at once, shows Retry with the details
after 20 seconds, and Finish later always works. A phone now notices a
stalled request after 30 seconds of silence instead of 300 and retries
it, and catching up on many changes no longer slows down as the vault
grows.
- **On the phones** (thanks to Dave): moving the open note to the Trash
leaves you on Home instead of in an old note, and the calendar opens
from Home with no note open, where a second tap on a day opens or
creates its daily note. These ship in the next phone releases, built on
this core.

#### For contributors

- Unresolved Links and the link popover (`f69b5fa5`): `wikilinkReaches`
(`lib/unresolved-links.ts`) is now the one decision behind the editor's
broken-link style, table cells and the view; the occurrence scan is
`shared-domain/unresolved-links.ts` on `scanMarkdownLines`, which gained
`includeFrontmatter`. `LinkPopover.tsx` is a real editor on
`noteContents`, held through cache prunes by `linkPopoverHolds`;
`createNoteInPlace` writes a missing note without opening it. New keymap
ids `vim.linkPopover`, `editor.linkPopover`,
`vim.leaderUnresolvedLinks`; new portable pref `linkPopoverOnHover`.
- Tag blocks (`69f34c0f`, `878225d3`): `extractTagBlocks` and
`tagBlockJumpOffset` in `shared-domain/tag-blocks.ts`, read by the scan
rules of the note-level index; app-core's code mask moved to
`shared-domain/tag-scan.ts` (still five copies of `stripCodeContent`).
`lib/tag-block-index.ts` reads only the notes a view lists, through
`readNote`, cached by `updatedAt:size`. `openNoteAtOffset` gained
`highlightLine`. Keymap ids `tags.nextNote` / `tags.previousNote`;
portable pref `searchTaggedBlocks`.
- Vim fixes (`61eac765`): `vimAwareDefaultKeymap(vimMode, mac)` defers
`Mod-a` to Vim outside insert mode off macOS; `inNavigationOrder`
(`settings-search.ts`); the Sidebar's reveal effect follows only a
changed selection (`sidebarSelectionChanged`). The sidebar cursor keeps
its row by key in `lib/sidebar-cursor.ts` (`37a68a33`), and the reveal
remembers the open note while the sidebar is unfocused too (`3f0356de`).
- Editor (`03df3dde`, `fa200ea3`): `.cm-editor :where(.tok-link)
.tok-link-syntax` restores the pre-2.50.3 cascade; `renderInlineCell`
takes a resolver and a view plugin re-decides idle cells in place. CRLF
(`7afe7a3b`): `FENCE_OPEN_RE` / `FENCE_CLOSE_RE` and the
`stripCodeContent` copies accept a trailing `\r`.
- Cloud (`dc4210a6`, `4f50b8ca`, `0000cc4c`): a conflict opens outside
the sync queue and reads one file (`cloud-sync-coordinator.ts`,
`cloud-sync-portable-filesystem.ts`), with a 20 s bound in
`CloudPendingConflictResolver.tsx`; `cloud-sync-stall.ts` gives phones a
30 s idle bound and `retryCloudTransfer` (desktop does not opt in);
`reduceCloudSyncChangeInto` keeps one working copy per pull.
- Phones (`4050388f`, `95f48cde`): `rewritePathsInTree` marks
`activeTabWasPicked` and the phone-only `installHomeGuard` shows Home on
it; `@zennotes/app-core/calendar` exports `DateCalendar`, and a touch
tap on the selected day opens it.

#### Demos

Screenshots of this release on the release build, attached to this
release:

**Unresolved Links**: every link to a note that does not exist yet, most
linked first.

![The Unresolved Links
view](https://redirect.github.com/ZenNotes/zennotes/releases/download/v2.77.0/post-1-unresolved-links.png)

**The link popover**: rest the pointer on a link and the note opens over
yours.

![The link popover over a
note](https://redirect.github.com/ZenNotes/zennotes/releases/download/v2.77.0/post-2-link-popover.png)

**Tagged blocks in the Tags view**: each note with the ideas that carry
the tag.

![The Tags view listing tagged
blocks](https://redirect.github.com/ZenNotes/zennotes/releases/download/v2.77.0/post-3-tag-blocks.png)

**Tagged blocks in Search notes**: `#idea` plus a word narrows to the
matching ideas.

![Search notes listing tagged
blocks](https://redirect.github.com/ZenNotes/zennotes/releases/download/v2.77.0/post-4-palette-blocks.png)

#### Verification

How to test locally. Build once with `npm run build --workspace
@zennotes/desktop` and launch with isolated stores:
`ZENNOTES_USER_DATA_PATH=$(mktemp -d) ZENNOTES_CONFIG_DIR=$(mktemp -d)
npx electron apps/desktop/out/main/index.js`. Put these notes in the
vault:

```
Launch plan.md     Before we ship we need the [[Pricing page]]. The list is in [[Beta testers]].
Beta testers.md    - Priya
                   - Tom
Ideas.md           - Weekly digest email #idea
                     - start with the three most edited notes
                   - Offline mode for the mobile app #idea
                   ## Onboarding checklist #idea
                   Show five steps on first launch.
```

1. **Unresolved Links.** Open Launch plan: Pricing page is grey and
dashed. Press `Space u` (Vim mode) or pick Open Unresolved Links from
the command palette: Pricing page is listed with its line. Enter on the
line opens Launch plan on the link. Before: there was no such list.
2. **Link popover.** Rest the pointer on Beta testers: the note opens in
a popover; click in, add a line, Escape. The line is in Beta testers.md.
Put the cursor on Pricing page and press `K` (or Shift+Cmd+K): Create
note; Enter, type, Escape, and the link turns solid.
3. **Tagged blocks.** Click `#idea` in the sidebar (or `:tag idea`):
Ideas lists three blocks, the list item with its sub-item and the
heading with its section. Enter on Onboarding checklist opens that line
highlighted; Ctrl+O comes back. Cmd+P, `#idea mobile`: one block, with
"mobile" marked. Turn off "Show tagged blocks in note search" in
Settings and the palette lists notes only.
4. **Vim mode
([#&#8203;993](https://redirect.github.com/ZenNotes/zennotes/issues/993)).**
On Linux or Windows, Ctrl+A on `count 41` in Normal mode gives `count
42`. Open Settings and press Ctrl+J: Appearance, Typography, Editor,
Tasks, Keymap and on, in the list's order. In a folder of 30 or more
notes, `l` on it in the sidebar keeps the cursor there.
5. **Links and tables.** A `[[Beta testers]]` in a list item is the link
color, not the list's. In a table cell, `[[Pricing page]]` is grey and
dashed until the note exists.
6. **Cloud conflict review.** Needs two devices on one Cloud vault with
a conflict pending: while a sync is running, Review opens both versions
at once, and Finish later closes it. Before: it waited on the sync, up
to five minutes on a stalled connection, with Finish later greyed out.

#### Distribution channels

- **GitHub release:** installers for macOS (Apple silicon and Intel DMG
and zip), Windows (x64 and ARM64 installer) and Linux (x64 and arm64
AppImage, deb, rpm, pacman, tar.gz), with five update manifests; the
four screenshots in Demos are attached too.
- **AUR:** `zennotes-bin` 2.77.0-1 (AUR clone `794ebf5`, repo
`6c7a5272`), pinned to `ZenNotes-2.77.0-linux-x64.tar.gz` SHA-256
`84ab011c…3e6a`, after the tarball check confirmed the bundled CLI
folder is world-readable.
- **Nix:** `packaging/nix/release-data.json` lifted from the update
workflow ([run
40410308185](https://redirect.github.com/ZenNotes/zennotes/actions/runs/40410308185),
bot PR
[#&#8203;998](https://redirect.github.com/ZenNotes/zennotes/issues/998)
closed) as `4f4cda45`, and [nix-build on
main](https://redirect.github.com/ZenNotes/zennotes/actions/runs/40410920319)
passed.
- **nixpkgs:** another contributor's PR took the package to 2.74.0 (with
Electron 44) and closed ours in its favor, so
[NixOS/nixpkgs#579420](https://redirect.github.com/NixOS/nixpkgs/pull/579420)
now proposes 2.74.0 -> 2.77.0, changing only the version and two hashes;
the source hash comes from the tag tarball, and the same command
reproduces master's 2.74.0 hash.
- **Homebrew:** `zennotes` 2.77.0 in the tap (`ec8fccf`), mirrored in
`41c0c4c7`; both DMGs' SHA-256 match the cask and GitHub's digests;
`brew style` clean.
- **zn CLI:** the bundled zn is still 0.11.0, the latest ZenNotes/tui
release; no change.
- **Website:**
[ZenNotes/website#91](https://redirect.github.com/ZenNotes/website/pull/91)
merged with the 2.77.0 entry and five captioned clips (Unresolved Links,
the link popover, tagged blocks in the Tags view and in Search notes,
and the
[#&#8203;993](https://redirect.github.com/ZenNotes/zennotes/issues/993)
Vim keys), and the docs for Unresolved Links, the link popover and
tagged blocks. Laravel Cloud deployed it at `2a6152d8`, and the live
check passed: /releases leads with 2.77.0, every clip matches the local
file byte for byte, seeking works, and /docs has both new sections.
- **Server and Docker:** [ZenNotes/znserver
v2.77.0](https://redirect.github.com/ZenNotes/znserver/releases/tag/v2.77.0)
pins the browser app `web-2.77.0-web.h7401d7675ced65e4` (`ee4b839`,
[ZenNotes/znserver#45](https://redirect.github.com/ZenNotes/znserver/issues/45));
all five binaries match `SHA256SUMS`, and the released darwin-arm64
binary served the 2.77.0 app on a scratch vault and answered 401 without
its token. `adibhanna/zennotes:2.77.0`, `2.77` and `latest` are
published from the tag (one digest, amd64 and arm64). The server README
points at 2.77.0 since
[ZenNotes/znserver#46](https://redirect.github.com/ZenNotes/znserver/issues/46)
(`4a31df6`).
- **Boundary packages:** `core-2.77.0-core.hfe38f5ee2a70bd64` and
`web-2.77.0-web.h7401d7675ced65e4`, built by CI from `3f0356de` and
published as pre-releases (core once both phones were submitted on it).
No viewer this time: nothing in 2.77.0 changes how a published note
renders. "Latest" still names v2.77.0.
- **Phones:** iPhone 1.33.0 (build 49,
[ZenNotes/zennotesios#78](https://redirect.github.com/ZenNotes/zennotesios/pull/78),
on core 2.77.0) replaced 1.32.0, which was still waiting for review, and
is Waiting for Review in App Store Connect, set to release
automatically. Android 1.1.47 (versionCode 50,
[ZenNotes/zennotesandroid#135](https://redirect.github.com/ZenNotes/zennotesandroid/pull/135))
is in Google Play review at 100% rollout with no devices lost, and its
[GitHub
release](https://redirect.github.com/ZenNotes/zennotesandroid/releases/tag/v1.1.47)
carries Play's signed universal APK. Both carry the tagged blocks, the
Calendar from Home, Trash landing on Home, the 30-second stall bound and
retry for Cloud requests, fewer native calls per pulled file
([ZenNotes/zennotesios#77](https://redirect.github.com/ZenNotes/zennotesios/pull/77),
[ZenNotes/zennotesandroid#133](https://redirect.github.com/ZenNotes/zennotesandroid/pull/133)),
and the Windows line-endings fix for code blocks
([ZenNotes/zennotesios#76](https://redirect.github.com/ZenNotes/zennotesios/pull/76),
[ZenNotes/zennotesandroid#134](https://redirect.github.com/ZenNotes/zennotesandroid/pull/134)).

#### Release validation

Every CI failure since 2.76.0 was read before this release: `ci-sweep.py
v2.76.0` found one on main, the dependency audit on the 2.76.0 Homebrew
commit (a body-parser advisory published after that cut, fixed by
`2e87b125`), plus unmerged Dependabot branches and the Nix bot's usual
zero-job run. `hazard-scan.py --since v2.76.0` found no hazards and one
warning: the Windows line-endings fix changed four of the code-masking
copies. The Go server's copy was not affected (Go's `.` matches `\r`),
and the two phone copies got the same fix in this release.

Release-time gates, in a clean worktree with its own `npm ci` at
`3f0356de`: typecheck 8/8 with no turbo cache, test:run with no cache
(shared-domain 2,145, app-core 3,541, desktop 1,194, quicklook 15), a
fresh build, the production dependency audit, a Developer ID signed
pack, and the packaged launch check (page target and drawn app in 1.5 s,
version 2.77.0). Smoke suites vim-editor and sidebar-vim passed;
editor-improvements failed one check once and passed 19/19 after its
cause was found: What's New opens about a second after launch with focus
on its Close button, and on a machine busy with another build it opened
after the suite's 4-second wait, mid-run, so the suite's Space keystroke
closed it instead of reaching the editor. That is a gap in the test, not
in the app; skipping the dismissal reproduces it every time.

Two problems were caught and fixed before the release shipped: while
recording its clips, the sidebar Vim cursor still jumped to the open
note on the first outside write after a folder had been clicked
(`3f0356de`); and the hazard scan found that the phone shells' copy of
the code masking had the same Windows line-endings gap as the desktop
(fixed in both phone apps). Before the tag, a core packed from the
release commit was tried in the iPhone app on the simulator to confirm
the new link popover never opens from a tap on a phone.

Release PR
[#&#8203;996](https://redirect.github.com/ZenNotes/zennotes/issues/996):
all 10 checks passed on the first run. CI on `main` for `3f0356de` ([run
40404956103](https://redirect.github.com/ZenNotes/zennotes/actions/runs/40404956103)):
all six jobs green before the tag, and CodeQL too. Release [run
40407512757](https://redirect.github.com/ZenNotes/zennotes/actions/runs/40407512757):
all six jobs green (macOS 49 minutes, Windows ARM64 49);
`verify-installers.py` ALL GOOD by SHA-512 on the five manifests (14
files); the app in both DMGs is `Notarized Developer ID` with a valid
stapled ticket. `npm run verify:channels -- 2.77.0`: every channel
serves v2.77.0 (Homebrew, AUR, Nix and the website's eight download
buttons).

On the phones, the tagged blocks (one note, two blocks, a tap opening
the line), the Calendar from Home with no note open and its New daily
note offer, and Trash landing on Home were walked in the iPhone build at
phone size; the Android build launched on CI's emulator, and the
calendar entry was walked on an Android emulator when it was built.

After the tag, CI on `main` for the packaging commits: the AUR commit's
run (`6c7a5272`) was cancelled by the Nix push a minute later, and the
Nix commit's run (`4f4cda45`) passed all six jobs; the Homebrew commit's
run (`41c0c4c7`) failed once on macOS in a timing test from this
release's pull-cost change, which compared two measurements of a
microsecond or two against a 5x bound (25 µs against 2.7 µs). The re-run
passed all six jobs, and `8eac8604` on `main` makes that test bound the
large vault's cost per change in absolute time instead (250 µs, against
2 to 5 µs now and 3.6 ms before the fix).

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/Los_Angeles)

- Branch creation
  - Every minute (`* * * * *`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/scottames/copr).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE4NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant