Skip to content

Release 2.45.0: arrow keys in the completion menus, and remote vaults behind proxies without WebSockets - #742

Merged
adibhanna merged 10 commits into
mainfrom
v2.45.0
Sep 4, 2026
Merged

adibhanna merged 10 commits into
mainfrom
v2.45.0

Conversation

@adibhanna

Copy link
Copy Markdown
Contributor

Release branch for 2.45.0: two community fixes.

Verified in the built desktop app over CDP: picker navigation with Vim on and off, and the remote case behind a proxy that refuses WebSocket upgrades (stale-row trash, the 30-second pickup, and a clean trash afterwards).

https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS

ArditZubaku and others added 10 commits September 3, 2026 14:16
Follow-up to #707 for #739. A reader who searches the manual for "wikilink"
found nothing about the picker because both docs surfaces called it "the
[[ reference picker" and never said how to move through it; the picker's
own footer only mentioned the display-text and exact-path syntax. The
in-app manual and the website now call it the wikilink picker, the
authoring entry lists the movement keys (arrows, Ctrl+J/K, Ctrl+N/P,
Enter, Tab, Esc), and the footer hint leads with them, so the answer is on
the surface the moment the picker opens.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
… and a stale note says so (#734)

Move to Trash on a remote vault failed from the Linux desktop with
"Remote server request failed (404 Not Found) for /api/notes/trash: not
found", while the web and Android apps trashed fine against the same
server. The request is identical on every client, and the server's 404
here is its "no such file" answer, so the desktop was asking about a note
that no longer lived at the path it showed. Reproduced against the built
app: put a reverse proxy in front of the server that answers WebSocket
upgrades with a plain HTTP error (what a proxy without an Upgrade rule
does), rename a note from another client, and the desktop keeps the old
row forever, since /api/watch is the only way it hears about changes.
Trashing that row gives the reporter's exact toast, and the row survives
the failure, so it reads as "Trash is broken".

Two changes, mirrored in the desktop and web clients. While the change
feed cannot stay connected, the client re-pulls the vault every 30
seconds (the same resync a reconnect triggers) and warns once in the
console; the moment a socket opens, polling stops. And a 404 for a path
the app asked to change now names that path, says it was moved, renamed,
or deleted from another device, and refreshes the list, so the stale row
is gone by the time the toast is read. A 404 on a read keeps its plain
answer: that is how remote databases learn a file is absent (#556).

Docs in both surfaces say that live updates travel over a WebSocket and
what happens behind a proxy that does not pass it.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
The release PR's CI failed on two runners for reasons that never
reproduce on a fast machine. On Ubuntu, the arrow-key completion test
pressed ArrowDown a fixed 250 ms after startCompletion; the popup counts
its 75 ms interaction delay from the moment it opens, so a late open on a
slow runner put the first press inside the delay and the highlight stayed
put. The test now waits for the popup to open, then past the delay. On
Windows, the fenced-code detection test read syntaxTree() from a freshly
created state, whose parse runs only within a small time budget; the tree
stopped before the fence and isInMarkdownCode answered false. The test
now finishes the parse with ensureSyntaxTree and takes the state that
carries it, which a 1.3 MB document shows is the difference between a
tree that ends before the fence and one that reaches it.

Claude-Session: https://claude.ai/code/session_015HNdWonTE8g6dPY2SkdsRS
@adibhanna
adibhanna merged commit 3301a29 into main Sep 4, 2026
7 checks passed
@adibhanna
adibhanna deleted the v2.45.0 branch September 4, 2026 23:41
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.

Documentation - Clarify Wikilinks use of Autopicker "Move to trash" not working on Linux app

2 participants