Commit Graph
100 Commits
Author SHA1 Message Date
Lotus CIandClaude Opus 5.5 fbb24dfce7 ci(windows-smoke): shell-only commands are n/a without a desktop
Without Explorer the tray icon, taskbar overlay badge and thumbnail toolbar
can't exist (E_FAIL / E_NOTIMPL). On a runner without an interactive
desktop only those calls may fail, and the app must still respond.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 21:56:26 -04:00
Lotus CIandClaude Opus 5.5 31363e601c ci(windows-smoke): tray, badge, taskbar, thumbbar and media-control commands (#4, #7)
Call each with what cinny sends (badge, unread, call state, thumbbar,
SMTC, taskbar progress, jump list, update-ready, flash), then reset;
every call must succeed and the app must still respond.

Refs #4, #7, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 21:21:47 -04:00
Lotus CIandClaude Opus 5.5 f10a69ad19 ci(windows-smoke): visibility and hotkey checks need an interactive desktop
The windows runner can't show a hidden window or inject keys (no
interactive desktop: even a direct show() leaves it hidden). Check that
first; the deep link must still reach the page and un-minimise, but window
visibility and the global-hotkey round trip are n/a on such a runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 21:15:10 -04:00
Lotus CIandClaude Opus 5.5 043a44665f ci(windows-smoke): control check that a hidden window can be shown (#8)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 21:07:55 -04:00
Lotus CIandClaude Opus 5.5 0a887c29c4 ci(windows-smoke): system-wide voice hotkeys round trip (#2)
Register PTT on F9 through set_global_hotkeys, press and release F9 via
keybd_event, expect pressed and released lotus-global-hotkey events, and
none after clearing the bindings.

Refs #2, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 20:37:44 -04:00
Lotus CIandClaude Opus 5.5 2d3c54490f ci(windows-smoke): a matrix: link while hidden or minimised (#8)
Hide the window (then minimise it), open matrix:r/lotus-smoke-*:example.org
through Windows (protocol handler -> second cinny.exe -> single-instance),
and require the window to come back and the URL to reach the page as
lotus-deeplink.

Refs #8, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-22 20:36:47 -04:00
Lotus CI eec6a7f2e9 chore: bump cinny submodule to 4120ccdb
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 34m25s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / checksums (push) Successful in 17s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m7s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-10-21 04:57:37 +00:00
Lotus CIandClaude Opus 5.5 852c67cc12 ci(windows-smoke): update over the running app, as the auto-updater does (#1)
After the smoke test, start the installed app, run the installer in
passive update mode (/P /UPDATE) while it runs, and only stop the app 3 s
later. Passes when the installer finishes by itself (no "Error opening
file for writing" dialog), exits 0, and has rewritten cinny.exe.

Refs #1, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-20 23:27:29 -04:00
Lotus CI 21406dd24f chore: bump cinny submodule to 878a3471
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 38m27s
Build Lotus Chat Desktop / build-windows (push) Successful in 39m9s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / update-manifest (push) Successful in 6s
Build Lotus Chat Desktop / checksums (push) Canceled after 0s
2026-10-21 02:49:21 +00:00
Lotus CI 573ca6323d chore: bump cinny submodule to 8784a815
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m36s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m32s
Build Lotus Chat Desktop / build-arch (push) Successful in 30s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Build Lotus Chat Desktop / checksums (push) Successful in 27s
2026-10-21 00:47:03 +00:00
Lotus CI fb29e7fedc chore: bump cinny submodule to ccbafdb1 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m40s
Build Lotus Chat Desktop / build-linux (push) Successful in 34m42s
Build Lotus Chat Desktop / build-arch (push) Successful in 18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
Build Lotus Chat Desktop / checksums (push) Successful in 22s
2026-10-20 04:05:14 +00:00
Lotus CI 6a5f9778dd chore: bump cinny submodule to 18732853
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m39s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / checksums (push) Successful in 21s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m52s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-10-19 22:13:31 +00:00
Lotus CI bd16e9b62c chore: bump cinny submodule to 5d2d7ca6
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m0s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m47s
Build Lotus Chat Desktop / checksums (push) Successful in 14s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-19 21:09:34 +00:00
Lotus CI 2b2ce5f8e3 chore: bump cinny submodule to aaf75fe7
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m57s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m26s
Build Lotus Chat Desktop / build-arch (push) Successful in 29s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
Build Lotus Chat Desktop / checksums (push) Successful in 20s
2026-10-19 16:52:28 +00:00
Lotus CI a3eef4d82d chore: bump cinny submodule to 8459427c
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m59s
Build Lotus Chat Desktop / build-arch (push) Successful in 16s
Build Lotus Chat Desktop / checksums (push) Successful in 18s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m4s
Build Lotus Chat Desktop / update-manifest (push) Successful in 34s
2026-10-19 08:42:05 +00:00
Lotus CI 93ae79fcb7 chore: bump cinny submodule to ef3849eb
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m23s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / checksums (push) Successful in 16s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m25s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-19 07:40:27 +00:00
Lotus CI efa9c01cb2 chore: bump cinny submodule to a937831e (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m36s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m26s
Build Lotus Chat Desktop / build-arch (push) Successful in 11s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
Build Lotus Chat Desktop / checksums (push) Canceled after 0s
2026-10-19 05:33:12 +00:00
Lotus CIandClaude Opus 5.5 4b9f3c092d feat(release): signed SHA256SUMS.txt for the Linux downloads (#36)
The .deb and .pkg.tar.zst are not signed packages, and the in-app
update prompt has users install them by hand, so nothing checked them.
A new checksums job hashes the Linux downloads into SHA256SUMS.txt,
signs it with the updater's minisign key (tauri signer) and uploads
SHA256SUMS.txt + SHA256SUMS.txt.minisig. The README shows the
verify-then-install command.

Refs #36

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-19 00:35:30 -04:00
Lotus CI 4019cbaef1 chore: bump cinny submodule to 04605f26
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m6s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m43s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-10-19 03:32:37 +00:00
Lotus CI 89765d2265 chore: bump cinny submodule to d7bc6d94
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 32m27s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / build-windows (push) Successful in 36m50s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-18 15:31:29 +00:00
Lotus CI f94ee09c5f chore: bump cinny submodule to a20e6859 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Successful in 47m9s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m37s
Build Lotus Chat Desktop / build-arch (push) Successful in 33s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-10-18 07:59:56 +00:00
Lotus CIandClaude Opus 5.5 e78b5b911d feat(tray): has_tray_host command so the first-close dialog can tell when there is no tray (#37)
On stock GNOME there is no StatusNotifier host, so choosing "Keep
running in the tray" hid the window with no icon to bring it back.
Expose whether org.kde.StatusNotifierWatcher has an owner on the
session bus (always true off Linux); cinny's dialog then defaults to
Quit and words the other option as "running in the background".

Refs #37

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-18 02:41:03 -04:00
Lotus CIandClaude Opus 5.5 bf14f72db2 docs: README for Lotus Chat desktop, not upstream Cinny (#35)
The README was upstream's: its download buttons and minisign key pointed
at cinnyapp releases, so following it installed upstream Cinny and
verified it against the wrong key. Point downloads at this repo's
releases (NSIS exe, .deb, pacman package, AppImage), publish Lotus'
updater key, and list the desktop features.

Fixes #35

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-18 02:36:39 -04:00
Lotus CIandClaude Opus 5.5 5208d3ca33 fix(csp): allow https: frames so room widgets load on desktop (#33)
The desktop CSP listed only known embed hosts in frame-src, so every
room widget that is not one of them (Jitsi, Etherpad, Grafana, bots)
showed a blank frame; the web deploy allows https: frames (#205).
Match it. Widget frames are sandboxed by cinny and same-origin widget
URLs are refused (isWidgetUrlSafe), so this does not widen what a
widget can do to the app.

Fixes #33

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-18 02:35:39 -04:00
Lotus CI f5fc18e571 chore: bump cinny submodule to 3878a853
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-windows (push) Successful in 40m27s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m31s
Build Lotus Chat Desktop / build-arch (push) Successful in 33s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-10-17 22:06:46 +00:00
Lotus CI 8700cff292 chore: bump cinny submodule to 0c5cf410
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m44s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m53s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-17 05:09:23 +00:00
Lotus CI 6f49d8574f chore: bump cinny submodule to 47c1e435
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m24s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m50s
Build Lotus Chat Desktop / build-arch (push) Successful in 24s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-10-17 01:06:56 +00:00
Lotus CI 4883945d31 chore: bump cinny submodule to b0eb3da8
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m30s
Build Lotus Chat Desktop / build-arch (push) Successful in 49s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m39s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-16 23:37:19 +00:00
Lotus CI c85b7044f8 chore: bump cinny submodule to 508a1231 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m15s
Build Lotus Chat Desktop / build-arch (push) Successful in 22s
Build Lotus Chat Desktop / build-windows (push) Successful in 39m18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-10-13 04:01:01 +00:00
Lotus CI 3686325032 chore: bump cinny submodule to 0bec28b6
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m13s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m8s
Build Lotus Chat Desktop / build-arch (push) Successful in 18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 9s
2026-10-12 20:43:52 +00:00
Lotus CI 308542ae96 chore: bump cinny submodule to 1f10866b
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m19s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m8s
Build Lotus Chat Desktop / build-arch (push) Successful in 54s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-10-12 17:12:37 +00:00
Lotus CI 4cec057e24 chore: bump cinny submodule to 1618d71e
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m41s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m59s
Build Lotus Chat Desktop / build-arch (push) Successful in 31s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-12 03:39:54 +00:00
Lotus CI c9c330ab1e chore: bump cinny submodule to 022e5e69
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 29m34s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m40s
Build Lotus Chat Desktop / build-arch (push) Successful in 34s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-10-11 04:56:54 +00:00
Lotus CI 8f67ec7c0f chore: bump cinny submodule to 30e2dbcd
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m44s
Build Lotus Chat Desktop / build-windows (push) Successful in 36m28s
Build Lotus Chat Desktop / build-arch (push) Successful in 34s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-10-03 04:55:22 +00:00
Lotus CI 151199459f chore: bump cinny submodule to d1993f20 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m39s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 25m41s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-10-01 04:01:02 +00:00
Lotus CI 28dee7bea0 Merge remote-tracking branch 'origin/main' into desktop-keychain
# Conflicts:
#	src-tauri/src/lib.rs
2026-09-30 20:18:53 -04:00
Lotus CI 86947dba50 chore: bump cinny submodule to 8e30c73e
Build Lotus Chat Desktop / prepare (push) Canceled after 0s
Build Lotus Chat Desktop / build-windows (push) Canceled after 0s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-10-01 00:11:54 +00:00
Lotus CIandClaude Opus 5.5 261d7852cb fix(updater): package installs update through their package manager
On CachyOS the in-app update failed with "Permission denied (os error 13)
at path /usr/bin/tauri_current_app…": the app was installed from the
Arch package, and Tauri's Linux updater can only replace an AppImage — for
anything else it tries to write next to the binary in /usr/bin.

- update_install_kind command: "in-app" on Windows and for an AppImage
  ($APPIMAGE set); on Linux package installs "pacman" (ID/ID_LIKE arch:
  Arch, CachyOS, Manjaro, EndeavourOS…), "deb" (debian/ubuntu and
  derivatives) or "manual". The web UI shows the matching update command.
- install_update refuses up front on a package install
  ("install: package-managed (…)") instead of downloading the whole
  update and failing at the last step.

Tests: CachyOS/Arch → pacman; Ubuntu/Debian/Mint → deb; Fedora/unknown →
manual; AppImage and Windows → in-app.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-30 18:46:11 -04:00
Lotus CIandClaude Opus 5.5 bcbc5ecdfb windows smoke: foreign-page mic check on a local origin, navigation verified
The example.com check could pass vacuously if the runner can't reach the
internet (goto failed silently, the mic request then came from the app's
own page). Serve a page on http://localhost:9333 instead, confirm the
navigation happened, and fail on builds that should refuse it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-30 12:46:30 -04:00
Lotus CI bd32048461 Merge remote-tracking branch 'origin/main' into desktop-keychain 2026-09-30 11:00:19 -04:00
Lotus CI 63a8ebe103 Merge remote-tracking branch 'origin/webview-permission-origin' into desktop-call-origin
# Conflicts:
#	config.json
2026-09-30 11:00:17 -04:00
Lotus CI eeb838c00c Merge remote-tracking branch 'origin/main' into webview-permission-origin 2026-09-30 10:59:51 -04:00
Lotus CIandClaude Opus 5.5 12ad4bf681 windows smoke: fake capture devices in the opt-in test mode
The CI VM has no microphone (getUserMedia → NotFoundError). With
LOTUS_WEBVIEW2_DEBUG_PORT set the app also passes
--use-fake-device-for-media-stream; permission requests still go through
the real PermissionRequested handler.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-30 10:32:45 -04:00
Lotus CIandClaude Opus 5.5 e2e43aa08c ci(windows-smoke): fetch the branch to build into a worktree
A second actions/checkout in the same job fails on the Windows host runner
(Access is denied on the cached action's pack file).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-30 10:07:39 -04:00
Lotus CI 2be36d14a9 chore: bump cinny submodule to 747400ea (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m13s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 24m37s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-09-30 04:01:05 +00:00
Lotus CIandClaude Opus 5.5 9f0f782bbb windows smoke: opt-in WebView2 DevTools port via LOTUS_WEBVIEW2_DEBUG_PORT (#19)
WebView2's WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS is ignored because the app
sets its browser arguments explicitly (seen on the runner: the WebView2
command line had only the app's arguments). The app now appends
--remote-debugging-port only when LOTUS_WEBVIEW2_DEBUG_PORT holds a valid
port (>= 1024); otherwise the arguments are exactly as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 13:19:21 -04:00
Lotus CIandClaude Opus 5.5 90c007a95e ci(windows-smoke): log WebView2 args, netstat and port probes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 13:14:13 -04:00
Lotus CIandClaude Opus 5.5 a754bb0a93 ci(windows-smoke): start the app in the test step; log processes/ports
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 13:09:26 -04:00
Lotus CIandClaude Opus 5.5 0d86f19935 ci: Windows smoke test on the windows runner (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 13:04:41 -04:00
Lotus CIandClaude Opus 5.5 3cd429d45c config: homeserver status banner from Kuma (cinny #124)
Adds the same `statusPages` entry the web app uses, so the desktop app
shows the status banner for matrix.lotusguild.org too (Kuma status page
https://isitup.lotusguild.org/status/matrix). The desktop CSP already
allows https: connections; no other change is needed. Inert until the
bundled cinny includes the banner (cinny PR #255).

Tested on a Linux release build: with a local fake Kuma reporting calls
down, the desktop app shows "Voice calls are down right now. Messages
still work." and polls both endpoints; from inside the desktop app the
real Kuma page answers 200 on both (CSP and CORS allow it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 12:27:46 -04:00
Lotus CI 32a71ebb73 chore: bump cinny submodule to d6548c56
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m12s
Build Lotus Chat Desktop / build-linux (push) Successful in 32m3s
Build Lotus Chat Desktop / build-arch (push) Successful in 31s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-29 13:38:27 +00:00
Lotus CIandClaude Opus 5.5 032b6e04e7 feat: secure_session commands, login tokens in the OS keychain (cinny #105, step 1)
Commands for the web client to keep a copy of the login tokens in the OS
keychain: secure_session_supported / _set / _get / _clear.

- Windows: Credential Manager via the keyring crate (3.6, windows-native),
  entry "session" in service "Lotus Chat". Only the secrets are stored
  (userId, deviceId, accessToken, refreshToken); the serialized value is
  capped at 1200 chars (Windows' limit is 2560 bytes).
- Other platforms: supported = false and the other commands answer "not
  supported on this platform" (Linux Secret Service can prompt to unlock a
  wallet at startup; that needs its own testing). No new Linux dependency:
  without a platform feature the crate only has its mock store.
- Keychain calls run on the blocking pool, off the main thread.

Step 1 is a mirror only (the web client still reads its session from
localStorage); see the cinny PR.

Tests: round trip + clear, clearing an empty keychain, incomplete and
oversized sessions rejected with nothing written, the JSON shape the web
client sends, a realistic OIDC session fits (keyring's mock store). Linux
release build: commands answer as designed and login is unaffected.
Windows: type-checked only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 00:25:01 -04:00
Lotus CIandClaude Opus 5.5 5c3ac68328 feat: call page on its own origin, http://127.0.0.1:44548 (cinny #43)
The bundled Element Call page ran on the app's own origin
(http://localhost:44548), so the call frame could read the app's storage
(login token) and DOM. Serve it from http://127.0.0.1:44548 instead: the
same local server and bundle, a different origin.

- The local server binds 127.0.0.1 explicitly. The app is still loaded as
  http://localhost:44548 (its storage stays where it is; the engines try
  127.0.0.1 for `localhost`). Binding the name `localhost` could pick ::1
  only (Windows lists it first), and then 127.0.0.1 wouldn't answer.
- config.json: desktopCallOrigin = http://127.0.0.1:44548. cinny loads the
  call page from there only when this is set (cinny #43 PR).
- CSP frame-src allows http://127.0.0.1:44548.
- Permissions (on top of #22): the call page's origin gets microphone/
  camera/screen only; nothing else.
- The call page gets no IPC: the capability only matches
  http://localhost:44548.

Tested (Linux release build): the server listens on 127.0.0.1:44548 and
the app loads as http://localhost:44548; the call page loads from
127.0.0.1 inside the app under its CSP; from that frame parent.localStorage
and parent.document are SecurityError, while a same-origin frame (the old
setup) reads the app's storage. The call itself was tested in a simulated
desktop (Chromium, the WebView2 engine) against a local Synapse + LiveKit;
see the cinny PR. Rust tests 17 passed; Windows code type-checked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-29 00:09:41 -04:00
Lotus CI 884877a55b chore: bump cinny submodule to 91f82d60 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 10s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m49s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 36m5s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-09-29 04:01:40 +00:00
Lotus CI bf5b6d7b45 chore: bump cinny submodule to 899e160a
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m52s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m30s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / update-manifest (push) Successful in 9s
2026-09-29 02:18:04 +00:00
Lotus CIandClaude Opus 5.5 3e136d3729 fix: WebView permissions only for the app's own origin (#22)
Linux (WebKitGTK) allowed every permission request of every kind; Windows
(WebView2) auto-allowed mic/camera/notifications without checking who asked.

Now (src-tauri/src/webview_permissions.rs, unit-tested):
- Linux: microphone/camera/screen, device labels, notifications and location
  are granted when the page in the window is the app
  (http://localhost:44548; debug builds also the bundled/dev page).
  Everything else is denied (WebKitGTK has no prompt of its own). WebKitGTK
  doesn't say which frame asked; frames are gated earlier by the Permissions
  Policy (cinny gives microphone/camera only to the same-origin call frame).
- Windows: the same grants (minus location, which keeps WebView2's prompt),
  checked against the origin of the frame that asked (args.Uri()). Other
  origins are denied mic/camera/notifications/location; other kinds keep
  WebView2's default handling.
- Denials are logged ("webview: denied …").

Tested on Linux with a release build under Xvfb + PulseAudio (no WebDriver:
WebKit's automation mode bypasses the handler), before/after:
- app page: mic, device labels, location allowed (unchanged)
- same-origin call frame: mic allowed (unchanged)
- cross-origin frame without allow=: blocked before the handler (unchanged)
- foreign top-level page: mic, device labels, location now denied (were
  allowed)
Real cinny build: boots, logs in, no denials. Windows code type-checked
(x86_64-pc-windows-gnu).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-28 20:03:11 -04:00
Lotus CI 29f83df53c chore: bump cinny submodule to c0c93213
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m6s
Build Lotus Chat Desktop / build-arch (push) Successful in 44s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m4s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-09-28 23:55:43 +00:00
Lotus CI 11e102f7da chore: bump cinny submodule to be8e49a2
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m9s
Build Lotus Chat Desktop / build-arch (push) Successful in 12s
Build Lotus Chat Desktop / build-windows (push) Successful in 26m53s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-28 03:30:38 +00:00
Lotus CIandClaude Opus 5.5 bb5364b53c fix(linux): NVIDIA + Wayland keeps the GPU renderer (explicit-sync fix)
The 4.12.343 workaround (WEBKIT_DISABLE_DMABUF_RENDERER=1 + GDK_BACKEND=x11)
made the app launch but pushed every frame through shared memory under
XWayland: noticeably laggy at 3840x2058. The reporter's WAYLAND_DEBUG trace
showed the real cause on native Wayland:

  wl_display#1.error(wp_linux_drm_syncobj_surface_v1#51, 4,
    "explicit sync is used, but no acquire point is set")
  Gdk-Message: Error 71 (Protocol error) dispatching to Wayland display.

An explicit-sync bug, not a GBM format/modifier one. Their test matrix
(RTX 3070, driver 615.71.09, webkit2gtk 2.52.6, KDE Wayland):
- __NV_DISABLE_EXPLICIT_SYNC=1 alone: clean, GPU (DMA-BUF) renderer, smooth;
- WEBKIT_DISABLE_DMABUF_RENDERER=1 alone on Wayland: clean (no X11 needed);
- WEBKIT_DMABUF_RENDERER_DISABLE_GBM=1: same explicit-sync error on Wayland,
  "Failed to import DMABuf" under XWayland;
- X11/XWayland with the DMA-BUF renderer: "Failed to create GBM buffer".

New defaults when the NVIDIA driver is loaded:
- native Wayland: __NV_DISABLE_EXPLICIT_SYNC=1, GPU renderer kept;
- X11 session or user-forced GDK_BACKEND=x11: WEBKIT_DISABLE_DMABUF_RENDERER=1;
- never force X11 any more;
- LOTUS_GPU_SAFE_MODE=1: opt-in shared-memory rendering on Wayland too;
- LOTUS_NO_GPU_WORKAROUNDS=1 / user-set values: untouched.
One stderr line says what was set. 9 unit tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-27 22:22:00 -04:00
Lotus CIandClaude Opus 5.5 df760abdc7 fix(linux): launch on NVIDIA + Wayland; config webAppUrl for "call in browser"
NVIDIA + Wayland (reported on CachyOS/KDE, driver 615.71, webkit2gtk
2.52.6): no window. GDK dies with "Error 71 (Protocol error) dispatching to
Wayland display"; forced onto XWayland, WebKit's DMA-BUF renderer then fails
with "Failed to create GBM buffer … Invalid argument". The reporter's
workaround, WEBKIT_DISABLE_DMABUF_RENDERER=1 GDK_BACKEND=x11, runs fine.

gpu_workarounds::apply(), first thing in main() (before GTK/WebKit init):
when the NVIDIA driver is loaded (/proc/driver/nvidia/version or
/sys/module/nvidia), set WEBKIT_DISABLE_DMABUF_RENDERER=1, and on a Wayland
session that has XWayland (DISPLAY set) also GDK_BACKEND=x11. Values the user
already set win; LOTUS_NO_GPU_WORKAROUNDS=1 turns it all off. Logs what it
set to stderr. Non-NVIDIA systems are untouched. Unit tests for the decision.

config.json: webAppUrl = https://chat.lotusguild.org, used by the web client
(cinny `calls-open-in-browser`) to send calls this WebKitGTK build can't make
to the web app in the browser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-27 16:56:36 -04:00
Lotus CI a4dd23dc4a chore: bump cinny submodule to e2b23397
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 35m52s
Build Lotus Chat Desktop / build-windows (push) Successful in 36m2s
Build Lotus Chat Desktop / build-arch (push) Successful in 50s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-09-27 17:58:49 +00:00
Lotus CI e296b41928 chore: bump cinny submodule to 773e4131
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 36m49s
Build Lotus Chat Desktop / build-arch (push) Successful in 23s
Build Lotus Chat Desktop / build-windows (push) Successful in 44m32s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-09-27 06:29:58 +00:00
Lotus CI 7fd9ea8919 chore: bump cinny submodule to df395776 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m13s
Build Lotus Chat Desktop / build-linux (push) Successful in 34m44s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-27 04:04:20 +00:00
Lotus CI b70c4cb174 chore: bump cinny submodule to 49dec686
Build Lotus Chat Desktop / prepare (push) Successful in 12s
Build Lotus Chat Desktop / build-linux (push) Failing after 14s
Build Lotus Chat Desktop / build-arch (push) Skipped
Build Lotus Chat Desktop / build-windows (push) Successful in 32m22s
Build Lotus Chat Desktop / update-manifest (push) Skipped
2026-09-27 02:10:02 +00:00
Lotus CI a55d686b51 chore: bump cinny submodule to f5d3c43b
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m13s
Build Lotus Chat Desktop / build-linux (push) Successful in 34m20s
Build Lotus Chat Desktop / build-arch (push) Successful in 29s
Build Lotus Chat Desktop / update-manifest (push) Successful in 9s
2026-09-26 23:20:30 +00:00
Lotus CI e98c93ca61 chore: bump cinny submodule to 502b9dfd
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m39s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m7s
Build Lotus Chat Desktop / update-manifest (push) Successful in 6s
2026-09-26 18:39:17 +00:00
Lotus CI 8ef2d41781 chore: bump cinny submodule to 024edbf5
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m59s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m38s
Build Lotus Chat Desktop / build-arch (push) Successful in 20s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-09-26 17:31:03 +00:00
Lotus CI 6a4d04ea03 chore: bump cinny submodule to ba5b1ffe
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m33s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m55s
Build Lotus Chat Desktop / build-arch (push) Successful in 1m18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-09-26 16:02:18 +00:00
Lotus CI ccf2d5c7c8 chore: bump cinny submodule to 78b1a2ff
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m1s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m26s
Build Lotus Chat Desktop / build-arch (push) Successful in 23s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-09-26 03:54:22 +00:00
Lotus CI f6e54ba996 chore: bump cinny submodule to 4c9af57a
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-windows (push) Successful in 27m31s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m20s
Build Lotus Chat Desktop / build-arch (push) Successful in 10s
Build Lotus Chat Desktop / update-manifest (push) Successful in 6s
2026-09-25 22:10:44 +00:00
Lotus CIandClaude Opus 5.5 1e71940789 fix(build): bundle the web app's Giphy key so the desktop GIF picker works
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-linux (push) Successful in 30m37s
Build Lotus Chat Desktop / build-arch (push) Successful in 11s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m6s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
The web deploy serves a config.json kept on the server (not in git), which
is where the Giphy key lives. The desktop app bundles the repo's
config.json, whose gifApiKey is empty, so on desktop the GIF button never
appeared even with Settings → GIF Picker switched on.

scripts/sync-web-config.mjs copies an allow-list of deployment-only keys
(just gifApiKey) from https://chat.lotusguild.org/config.json into
cinny/config.json before the Windows and Linux builds. The key is public
already (served to every web visitor; Giphy keys are client keys). A fetch
failure is a warning, not a build failure.

Tested locally: sets the key, is a no-op on a second run, and skips cleanly
on a 404.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-25 15:50:35 -04:00
Lotus CI 3bf1b16280 chore: bump cinny submodule to 7c26268e
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-windows (push) Canceled after 2m52s
Build Lotus Chat Desktop / build-linux (push) Canceled after 13s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-25 19:37:55 +00:00
Lotus CI 2f2d060caf chore: bump cinny submodule to 27c6dacc
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m17s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m37s
Build Lotus Chat Desktop / build-arch (push) Successful in 8s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-09-25 18:31:08 +00:00
Lotus CI e7c1252b52 chore: bump cinny submodule to 06bb896a
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m28s
Build Lotus Chat Desktop / build-arch (push) Successful in 10s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m54s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-09-25 16:16:23 +00:00
Lotus CI dc0d8a72e2 chore: bump cinny submodule to e91b5fe1
Build Lotus Chat Desktop / prepare (push) Successful in 12s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m45s
Build Lotus Chat Desktop / build-arch (push) Successful in 36s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m29s
Build Lotus Chat Desktop / update-manifest (push) Successful in 11s
2026-09-25 14:11:11 +00:00
Lotus CI 0aa51d4ea2 chore: bump cinny submodule to 1ab75147
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m13s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m11s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-25 03:42:12 +00:00
Lotus CI 22a6f7dc4c chore: bump cinny submodule to c0e8334f
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m47s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m36s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-09-25 02:26:09 +00:00
Lotus CI b1194b1212 chore: bump cinny submodule to c96c47dd
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m9s
Build Lotus Chat Desktop / build-arch (push) Successful in 11s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m27s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-09-25 01:10:36 +00:00
Lotus CI 93bccdc83c chore: bump cinny submodule to 103c6f46
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m19s
Build Lotus Chat Desktop / build-arch (push) Successful in 19s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m29s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-24 17:56:14 +00:00
Lotus CIandClaude Opus 5.5 71ab1afdaf feat(close): first-close choice — tray or quit — and a call guard (#5)
Build Lotus Chat Desktop / prepare (push) Successful in 10s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m46s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m32s
Build Lotus Chat Desktop / update-manifest (push) Successful in 9s
Closing the window (OS close button or the custom title bar's ×) now
goes through one handler:
- in a call → always hide to the tray (a close must never drop a call);
- saved "tray" → hide; "quit" → exit the app;
- "ask" (the default until chosen) → emit `lotus-close-requested` so the
  web client shows the one-time dialog; if the page isn't listening yet,
  fall back to the tray.
The choice lives in `close-behavior` in the app config dir;
get_close_behavior / set_close_behavior / resolve_close_request back the
dialog and the Settings select.

Verified on Linux under Xvfb + openbox with real WM close requests
(wmctrl -c): tray → hidden, still running; quit → exits; unset with no
page listening → hidden; ask with the page listening → window stays,
page receives the event; quit during a call → hidden, still running.

Bump cinny (the dialog + Settings control).

Closes #5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-24 12:51:28 -04:00
Lotus CI d6a64695bf chore: bump cinny submodule to d5aa18e3
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-windows (push) Canceled after 32m4s
Build Lotus Chat Desktop / build-linux (push) Canceled after 29m39s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-24 16:18:35 +00:00
Lotus CI 1425803c80 chore: bump cinny submodule to e06600af
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m4s
Build Lotus Chat Desktop / build-arch (push) Successful in 42s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m58s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-09-24 15:09:35 +00:00
Lotus CIandClaude Opus 5.5 67253d02f8 feat(autostart): start minimized to the tray on login (#3)
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m32s
Build Lotus Chat Desktop / build-linux (push) Successful in 36m5s
Build Lotus Chat Desktop / build-arch (push) Successful in 19s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
- Launch-on-login now starts the app with `--autostart`. With "Start
  minimized" on (the default), that launch begins "settled", so neither
  the page-load reveal nor the 8 s failsafe shows the window: it stays in
  the tray with sync and notifications running. The tray, a second launch
  or a deep link reveals it.
- The choice is a file in the app config dir (`start-minimized`), read
  before the web client loads; `get_start_minimized` / `set_start_minimized`
  back the new Settings switch.
- Existing registrations made without args are rewritten at startup
  (re-enable), so current launch-on-login users get `--autostart` too.
- window-state no longer restores VISIBLE: it show()ed the window at
  creation whenever it was last closed visible (or on first run), before
  the page painted and even on a login start. Visibility is owned by the
  page-load reveal + failsafe.

Verified on Linux under Xvfb with the debug build:
  normal launch → shown; --autostart → hidden (past the failsafe) and still
  running; --autostart with the setting off → shown; --autostart after
  quitting visible → hidden; normal launch after quitting visible → shown;
  a second launch reveals the hidden instance; an existing autostart entry
  gets `--autostart` added.

Bump cinny (the Settings switch and the SW protocol guard).

Closes #3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 22:46:24 -04:00
Lotus CIandClaude Opus 5.5 9e320fa326 feat(native): taskbar progress bar during uploads (#10)
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Canceled after 4m46s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
`set_taskbar_progress(status, progress)` drives Tauri's window progress
bar (Windows taskbar button; launcher/dock elsewhere where supported):
none / normal (0-100) / indeterminate / error. Uses Tauri's built-in
ITaskbarList3 wrapper rather than more hand-written COM.

Bump cinny (the aggregation, throttling and error hold).

Closes #10

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 22:04:54 -04:00
Lotus CIandClaude Opus 5.5 33d8871ac8 feat(tray): show call state on the tray icon (#4)
`set_tray_call_state({active, muted, deafened})` adds a small ringed dot
to the tray icon's bottom-left: green in a call, amber muted, red
deafened (deafened implies muted). The unread dot stays bottom-right.
The tooltip spells it out ("Lotus Chat — in call, muted · update ready").

Unread, call state and the pending update (#6) now live in one
`TrayIndicators` and re-render together, so none of them overwrites
another. The unread painter is generalised to `draw_dot(left, color)`.
Unit tests cover the tooltip text and dot placement.

Bump cinny to 25fa0f6e (the web half, plus the stale-state fix that
removed a "muted + deafened" flash at every join).

Closes #4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 21:54:04 -04:00
Lotus CIandClaude Opus 5.5 687642a096 feat(tray): "Restart to update" item and tooltip (#6)
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m18s
Build Lotus Chat Desktop / build-linux (push) Successful in 39m16s
Build Lotus Chat Desktop / build-arch (push) Successful in 17s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
`set_tray_update_ready(version | null)` inserts a "Restart to update
(vX)" item at the top of the tray menu and sets the tooltip to "Lotus
Chat — update ready"; null removes both. The item only exists while an
update is pending. Clicking it reveals the window and emits
`lotus-tray-install-update`, and cinny runs its normal install flow
(progress, retries, failure toast). No icon dot: the unread dot already
uses that corner.

Bump cinny to 6edfe700 (the web half).

Closes #6

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 21:32:39 -04:00
Lotus CIandClaude Opus 5.5 96cdbcd512 chore: bump cinny submodule to d9e7f774
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-windows (push) Canceled after 7m7s
Build Lotus Chat Desktop / build-linux (push) Canceled after 1m15s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
Brings the Element Call 0.25.0-lotus.13 voice-error dialog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 21:11:15 -04:00
Lotus CIandClaude Opus 5.5 8f98a82562 fix(updater): retry the check and download, report progress
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-windows (push) Canceled after 4m13s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
A friend's in-app update failed ten times ("error sending request for
url (…nsis.zip)") against a busy Gitea before the 11th worked.

- check_for_update / install_update retry transport errors (Reqwest,
  Network, ReleaseNotFound) with 3 s / 8 s / 15 s backoff — four tries
  per click. Signature or install errors fail at once, never masked.
- Every request gets a 600 s timeout; reqwest has none by default, so a
  stalled connection could leave the UI on "installing" forever.
- Download and install are separate steps so a retry never re-installs.
- `lotus-update-progress` events (downloading %, retrying + wait,
  installing) drive the new progress text in Settings.
- Errors are prefixed `check:` / `download:` / `install:` so the UI says
  which step failed (it used to call a failed download "Update check
  failed").
- Adds tokio (time feature only; already in the tree via tauri).
- Bump cinny to 568f218f (the matching UI).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 20:54:19 -04:00
Lotus CIandClaude Opus 5.5 5a9bfa8fe4 feat(native): "Mark as read" button on rich toasts (#9)
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-windows (push) Canceled after 32m48s
Build Lotus Chat Desktop / build-linux (push) Canceled after 32m25s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
Toasts with a room id get a Mark as read action next to Send; it emits
`lotus-notification-mark-read {roomId}` without raising the window, and
cinny marks the room read through its existing markAsRead path. Invite
toasts (no room id) get neither button.

Bump cinny to 23649f12.

Closes #9

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 19:49:54 -04:00
Lotus CIandClaude Opus 5.5 4648c8ccc7 fix(updater): installer waits for the old cinny.exe to release (#1)
Build Lotus Chat Desktop / prepare (push) Canceled after 0s
Build Lotus Chat Desktop / build-windows (push) Canceled after 0s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
The updater launches the NSIS installer with /UPDATE and then exits the
app, but a WebView2 app takes a moment to die and the template only
sleeps 500 ms after its own kill before copying — so the copy raced the
old process ("Error opening file for writing: cinny.exe"), and Ignore
left the old exe in place.

A NSIS_HOOK_PREINSTALL now, on /UPDATE only, polls until cinny.exe can
really be opened for writing (every 250 ms, up to 15 s), then lets the
template carry on. Checked under Wine with a real running exe: without
the hook the copy fails; with it the installer waits out the remaining
~2.8 s and copies; a manual install (no /UPDATE) doesn't wait; a stuck
process hits the 15 s cap and falls through to the template's own
running-app handling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 19:39:00 -04:00
Lotus CIandClaude Opus 5.5 c1ae01bf41 fix(native): toast coalescing, real reply target, Focus Assist mount query
Build Lotus Chat Desktop / prepare (push) Canceled after 0s
Build Lotus Chat Desktop / build-windows (push) Canceled after 0s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
- Rich toasts set a WinRT Tag (hash of the web notification tag, since
  room:thread tags exceed the 64-char limit) in a fixed Group, so a newer
  toast for the same room/thread replaces the older one instead of
  stacking; the replaced toast's keep-alive entry is dropped (#16).
- The bridge passes tag, roomId and threadId separately. The reply target
  is the real room id (+ thread), never the coalescing tag, which was
  `room:thread` for threads and `lotus-invites` for invites, so those
  replies failed silently. Toasts with no room id (invites) get no reply
  box (#17).
- New `get_focus_assist` command serves the latest Focus Assist poll so
  the web hook can hydrate on mount; the setup-time first emit was lost
  before the page listened (#15).
- Bump cinny to 3b6de2fd (the matching web-side hooks).

Closes #15, #16, #17

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-23 19:33:30 -04:00
Lotus CI 7716307e54 chore: bump cinny submodule to 738067cf
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-windows (push) Successful in 26m36s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m28s
Build Lotus Chat Desktop / build-arch (push) Successful in 32s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-09-23 19:18:31 +00:00
Lotus CI 88cea626cc chore: bump cinny submodule to 2bed70d3 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m10s
Build Lotus Chat Desktop / build-arch (push) Successful in 10s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m41s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-09-21 04:00:36 +00:00
Lotus CI 69531ba70f chore: bump cinny submodule to e3883e0f
Build Lotus Chat Desktop / prepare (push) Canceled after 0s
Build Lotus Chat Desktop / build-windows (push) Canceled after 0s
Build Lotus Chat Desktop / build-linux (push) Canceled after 0s
Build Lotus Chat Desktop / build-arch (push) Canceled after 0s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-20 19:38:06 +00:00
Lotus CI f75fd08622 chore: bump cinny submodule to 22d46a79
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m38s
Build Lotus Chat Desktop / build-arch (push) Successful in 11s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m55s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-09-20 18:41:37 +00:00
Lotus CI ae7cab4c93 chore: bump cinny submodule to 6aa77552
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m47s
Build Lotus Chat Desktop / build-arch (push) Successful in 9s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m54s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-20 18:01:51 +00:00
Lotus CI 3e67f1a081 chore: bump cinny submodule to 52e0cfaa
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m58s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m47s
Build Lotus Chat Desktop / build-arch (push) Successful in 29s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-20 17:15:39 +00:00
Lotus CI c8335b8949 chore: bump cinny submodule to bd8c79e0
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m32s
Build Lotus Chat Desktop / build-arch (push) Successful in 14s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m44s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-09-20 04:59:25 +00:00
Lotus CI 49a0a243f0 chore: bump cinny submodule to 8d11a62e
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m26s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m51s
Build Lotus Chat Desktop / build-arch (push) Successful in 9s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-09-20 04:24:18 +00:00
Lotus CI c9a7971670 chore: bump cinny submodule to 2bdb2eb4
Build Lotus Chat Desktop / prepare (push) Successful in 2s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m11s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m0s
Build Lotus Chat Desktop / build-arch (push) Successful in 8s
Build Lotus Chat Desktop / update-manifest (push) Canceled after 0s
2026-09-20 03:53:16 +00:00