Commit Graph
100 Commits
Author SHA1 Message Date
Lotus CIandClaude Opus 5.5 76c08a3b76 ci(smoke): wait for the keychain strip before judging #105 step 2
Step 2 mirrors the tokens, reads them back, then strips them from
localStorage in the same boot. The check stopped at the first "mirrored"
sighting, so a step-2 build could be reported as "before step 2" (n/a).
Wait up to 30 s for tokensIn === keychain; only call it n/a if it is still
mirrored-only after that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-26 02:32:26 -04:00
Lotus CIandClaude Opus 5.5 7fecf72107 fix(ipc): declare the app commands and grant them to the app origin (Tauri 2.11+ ACL)
With Tauri 2.12 every app command was refused ("Command … not allowed by
ACL"): the app is served from http://localhost:44548 (tauri-plugin-
localhost), which Tauri treats as a remote origin, and since the
GHSA-7gmj-67g7-phm9 fix app commands need an explicit capability. The
Windows smoke test caught it (keychain, hotkeys, tray/taskbar/thumbbar,
token migration all failed).

build.rs now declares the 35 commands as an app manifest, and
capabilities/migrated.json (scoped to http://localhost:44548 only) grants
allow-<command> for each. The call page (http://127.0.0.1:44548) and any
remote frame still get no IPC. gen/schemas regenerated by tauri-build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-26 01:59:33 -04:00
Lotus CIandClaude Opus 5.5 e3bc4e128f fix(deps): move webview2-com to 0.39 and windows to 0.62 to match wry 0.57
The Tauri update brought wry 0.57, which uses webview2-com 0.39 / windows
0.62. Our Windows-only permission handler (lib.rs) still used webview2-com
0.38, so its handler type did not satisfy wry's ICoreWebView2 bound (E0277
on the Windows build).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-26 00:34:36 -04:00
Lotus CI c0ea1fcd0c chore: bump cinny submodule to 71b76190 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-linux (push) Successful in 20m59s
Build Lotus Chat Desktop / build-arch (push) Successful in 27s
Build Lotus Chat Desktop / checksums (push) Successful in 16s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m2s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
2026-10-26 04:04:56 +00:00
Lotus CIandClaude Opus 5.5 3f7d00a965 chore(deps): Tauri 2.12.5, rustls 0.23.46, rustls-webpki 0.103.16 and other Rust security fixes
OSV flagged the desktop crates; the ones that ship in the app:
- tauri 2.10.3: origin confusion lets remote pages invoke local-only IPC
  commands (GHSA-7gmj-67g7-phm9, fixed in 2.11.1). The whole Tauri family
  moves together (2.12.5 / runtime 2.12.2 / macros 2.7.4 / utils 2.10.2).
- rustls 0.23.37: TLS 1.3 handshake messages across encryption levels,
  ServerHello downgrade, secrets in Debug, Brotli cert allocation.
- rustls-webpki 0.103.10: name constraints, distrusted intermediates, CRL
  panic. webpki-root-certs 1.0.11 drops the distrusted emSign roots.
- tar 0.4.46 (PAX desync), tokio 1.54.1, anyhow, event-listener, serde_with.

Left: zip 4 (build-time only), quick-xml (via plist in tauri-utils, already
latest), glib 0.18 (GTK3 bindings Tauri uses), rand (custom-logger only),
unmaintained notices. cargo check --locked passes on Linux.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-25 23:46:01 -04:00
Lotus CI 25f852fc34 chore: bump cinny submodule to e4591f66
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 41m37s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m13s
Build Lotus Chat Desktop / build-arch (push) Successful in 25s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Build Lotus Chat Desktop / checksums (push) Successful in 16s
2026-10-26 02:12:25 +00:00
Lotus CI 2b5c1ae0dd chore: bump cinny submodule to 222927b5
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 36m54s
Build Lotus Chat Desktop / build-windows (push) Successful in 50m45s
Build Lotus Chat Desktop / build-arch (push) Successful in 59s
Build Lotus Chat Desktop / update-manifest (push) Successful in 23s
Build Lotus Chat Desktop / checksums (push) Successful in 2m23s
2026-10-25 23:47:28 +00:00
Lotus CI c56953ba27 chore: bump cinny submodule to 3b3bf8ab
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m1s
Build Lotus Chat Desktop / build-linux (push) Successful in 37m12s
Build Lotus Chat Desktop / build-arch (push) Successful in 54s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Build Lotus Chat Desktop / checksums (push) Successful in 23s
2026-10-25 17:16:47 +00:00
Lotus CI e9bacfa7ee chore: bump cinny submodule to 299da879
Build Lotus Chat Desktop / prepare (push) Successful in 13s
Build Lotus Chat Desktop / build-linux (push) Successful in 40m35s
Build Lotus Chat Desktop / build-arch (push) Successful in 12s
Build Lotus Chat Desktop / checksums (push) Successful in 22s
Build Lotus Chat Desktop / build-windows (push) Successful in 42m41s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-10-25 06:54:14 +00:00
Lotus CI e09356c018 chore: bump cinny submodule to 0d4f2e4a
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-windows (push) Successful in 39m42s
Build Lotus Chat Desktop / build-linux (push) Successful in 37m44s
Build Lotus Chat Desktop / build-arch (push) Successful in 12s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
Build Lotus Chat Desktop / checksums (push) Successful in 28s
2026-10-25 04:48:14 +00:00
Lotus CI 89fc57c198 chore: bump cinny submodule to 02c852e1
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 35m55s
Build Lotus Chat Desktop / build-windows (push) Successful in 39m58s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / update-manifest (push) Successful in 6s
Build Lotus Chat Desktop / checksums (push) Successful in 21s
2026-10-25 03:17:16 +00:00
Lotus CI dc6038ad19 chore: bump cinny submodule to 5379eb04
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m47s
Build Lotus Chat Desktop / build-arch (push) Successful in 20s
Build Lotus Chat Desktop / checksums (push) Successful in 15s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m8s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-10-25 01:34:13 +00:00
Lotus CI d47e54dad1 chore: bump cinny submodule to a5868495
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m56s
Build Lotus Chat Desktop / build-linux (push) Successful in 33m40s
Build Lotus Chat Desktop / build-arch (push) Successful in 1m5s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Build Lotus Chat Desktop / checksums (push) Successful in 30s
2026-10-24 20:40:05 +00:00
Lotus CI 0bd0231ea4 chore: bump cinny submodule to 88446e89
Build Lotus Chat Desktop / prepare (push) Successful in 11s
Build Lotus Chat Desktop / build-linux (push) Successful in 39m30s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / checksums (push) Successful in 22s
Build Lotus Chat Desktop / build-windows (push) Successful in 48m7s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-10-24 07:06:12 +00:00
Lotus CI 36818ae7ff chore: bump cinny submodule to 43e166b8
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 36m2s
Build Lotus Chat Desktop / build-windows (push) Successful in 36m49s
Build Lotus Chat Desktop / build-arch (push) Successful in 13s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
Build Lotus Chat Desktop / checksums (push) Successful in 14s
2026-10-24 05:42:29 +00:00
Lotus CI cb5f0fcffa chore: bump cinny submodule to bfed37bf
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m41s
Build Lotus Chat Desktop / build-linux (push) Successful in 34m11s
Build Lotus Chat Desktop / build-arch (push) Successful in 15s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Build Lotus Chat Desktop / checksums (push) Successful in 14s
2026-10-24 04:15:18 +00:00
Lotus CI f01798799c chore: bump cinny submodule to 45c3b166 (nightly catch-up)
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m18s
Build Lotus Chat Desktop / build-linux (push) Successful in 31m13s
Build Lotus Chat Desktop / build-arch (push) Successful in 10s
Build Lotus Chat Desktop / update-manifest (push) Successful in 2s
Build Lotus Chat Desktop / checksums (push) Successful in 13s
2026-10-24 01:51:10 +00:00
Lotus CIandClaude Opus 5.5 ad8c362854 ci(windows-smoke): login tokens move to the keychain and stay signed in (cinny #105)
A full session in localStorage (pointed at an unreachable server) must
move to Credential Manager on boot, leaving a token-less shell, and the
app must still be signed in after a restart. Builds without cinny #105
step 2 report n/a. Cleans up the fake session and keychain entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-23 20:34:15 -04:00
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