Skip to content

Feat/in app updates sidebar menus 20260930 - #4

Merged
cachewraith merged 4 commits into
mainfrom
feat/in-app-updates-sidebar-menus-20260930
Sep 30, 2026
Merged

cachewraith merged 4 commits into
mainfrom
feat/in-app-updates-sidebar-menus-20260930

Conversation

@cachewraith

Copy link
Copy Markdown
Owner

No description provided.

"Update & restart" replaces the old Download button, which opened the
release page and left picking the right package to the user. It now
downloads the release, installs it over the running version and
relaunches: pacman/deb/rpm through a pkexec password prompt, AppImage
by swapping the file, Windows as a silent NSIS install. The new-release
notification opens Settings > Updates instead of the browser.

This reverses the earlier "update check reports only" decision.
electron-updater already handles every package type we ship, so
UpdateInstaller is a small facade over it (check, download with
progress, install) instead of per-package installers of our own.
Where files come from stays fixed at build time (app-update.yml points
at this repo), and each download is checked against the sha512 in the
release's latest*.yml before it runs. A failed download or a cancelled
password prompt installs nothing and returns to idle.

Downloads start only from the button, and nothing installs on a plain
quit: on Linux that would raise a password prompt out of nowhere.

Releases now ship latest.yml / latest-linux.yml (+ the exe blockmap);
the dist scripts pass --publish never so the build itself never
uploads. v1.2.0 lacks these files and the updater code, so 1.2.0 must
be updated to 1.3.0 by hand once; in-app updates work from there on.
Shift+Enter in a claude pane is meant to insert a new line by sending
ESC CR, which claude reads as "new line"; plain Enter must stay a bare
CR that submits. Nothing tested that end to end, and a user reported
that Shift+Enter does not give a new line.

The new e2e test runs a claude pane on raw-keys.sh, a stand-in that
puts its TTY in raw mode and prints every input byte as hex, then
types a, Shift+Enter, b, Enter and expects 61 1b 0d 62 0d.

The same bytes were confirmed manually through the real Wayland input
path (wtype on Hyprland), and claude 2.1.285 inserts a new line for
ESC CR in a PTY. So the report is not reproduced yet; this test keeps
the Wraithgrid half from regressing while a repro is pending.
Collapsing or expanding the sidebar used to jump between widths and
swap its content in one frame. The width now transitions over 220 ms.
While it moves (.moving) the content keeps a fixed width, so it is
revealed or clipped instead of reflowing, and newly shown content
fades in. The fixed width applies only during the move: at rest the
content must still fit beside a vertical scrollbar. Terminal refits
are already debounced (50 ms), so panes resize once, after the move.
All of it is off under prefers-reduced-motion.

Right-clicking a folder offers rename, collapse/expand, new folder and
delete (its accounts stay). Right-clicking a workspace offers rename,
change icon and delete. Delete is two-step inside the menu because it
closes the workspace's panes, and it is disabled for the last
workspace. ContextMenu is a plain, data-driven component: arrow keys
move, Escape/Tab/outside click close, Shift+F10 or the Menu key opens
it at the row.

The icon grid is split out of IconPicker as IconPopover so the menu
can open it without a badge. Both portal to <body>: the fade makes each
sidebar section its own stacking context, and without the portal the
workspace menu rendered behind the Accounts section.
@cachewraith
cachewraith merged commit 8b4a708 into main Sep 30, 2026
2 checks passed
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