Commit Graph
74 Commits
Author SHA1 Message Date
jaredandClaude Opus 4.8 64569f4736 fix(native): windows 0.61 API paths — repair the CI Windows compile
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-windows (push) Failing after 18m50s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m40s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Four unresolved-import/type errors from the release build (first real compile):
- toast.rs: generic IMap moved to the windows-collections crate; read the reply
  from the ValueSet returned by UserInput() directly (HasKey/Lookup are exposed
  on the class).
- jumplist.rs: PROPVARIANT lives in Win32::System::Com::StructuredStorage (not
  windows::core); IObjectArray/IObjectCollection in Win32::System::Com (not
  UI::Shell); PKEY_Title in Win32::Storage::EnhancedStorage (feature added);
  build the title PROPVARIANT via From<&str> (VT_LPWSTR).
- smtc.rs: event registrations return a plain i64 token in windows 0.61 (the
  EventRegistrationToken newtype is gone).
- thumbbar.rs: HICON was imported inside the fn body but used in its signature —
  fully qualify the return type.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 21:18:25 -04:00
jaredandClaude Opus 4.8 89b82f441d chore: bump cinny submodule to c1efa7b9
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-windows (push) Failing after 17m56s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m9s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Brings in the TitleBar drag fix (explicit window_start_drag) and the expanded
custom accent coverage (links, ::selection, focus rings).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:47:55 -04:00
jaredandClaude Opus 4.8 e8fba393f0 fix(chrome): P5-47 — Mica vs frameless conflict broke custom window chrome
Root cause: lib.rs applies a Mica backdrop to the main window at startup;
set_custom_chrome then stripped the frame with set_decorations(false), and
Mica + frameless is a broken combination on Windows (DWM backdrop glitches
the whole surface).

- set_custom_chrome: clear_mica() before undecorating, re-apply_mica() when
  restoring the native frame; set_shadow(true) so the frameless window keeps
  its drop shadow + resize borders.
- window-state plugin: exclude StateFlags::DECORATIONS — the chrome toggle
  owns the decorated flag; restoring a saved decorated=false at startup would
  recreate the Mica-on-frameless glitch before the web side loads.

Pairs with the web-side TitleBar drag fix (explicit window_start_drag on
mousedown instead of data-tauri-drag-region) in the cinny repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:42:17 -04:00
jaredandClaude Opus 4.8 e9132b4489 feat(native): P5-42 keep webview unthrottled in tray (instant background sync)
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 22m17s
Build Lotus Chat Desktop / build-windows (push) Failing after 17m9s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Add WebView2 additional_browser_args to disable Chromium background throttling
(--disable-background-timer-throttling / -renderer-backgrounding /
-backgrounding-occluded-windows) so the existing JS Matrix /sync loop and
notifications keep running full-speed when the app is closed to the tray, instead
of standing up a second headless Rust sync client. Tauri's default WebView2 args
are preserved (setting this overrides them). Windows/WebView2 only; does not block
system sleep (that's P5-46, calls-only). CI Windows compile pending.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 11:04:24 -04:00
jaredandClaude Opus 4.8 a923650d02 feat(native): Tier B — WinRT rich toasts (P5-41/35) + Focus Assist sync (P5-56)
- toast.rs: Windows.UI.Notifications rich toast (reply input + Send action);
  in-process Activated event → emit lotus-notification-activate {path} (click) /
  lotus-notification-reply {roomId,text}. Falls back to tauri-plugin-notification
  (WinRT error / non-Windows). The NOTIFICATION_BRIDGE now routes notifications
  carrying a roomId (tag) to show_rich_toast. Features: UI_Notifications,
  Data_Xml_Dom, Foundation_Collections.
- focus_assist.rs: SHQueryUserNotificationState poll thread → emit
  focus-assist-changed {active} on QUNS_QUIET_TIME/PRESENTATION/D3D_FULLSCREEN/BUSY.
  No new Cargo features.

CI Windows compile pending (no local Rust toolchain). Runtime caveat: WinRT toasts
need a Start-menu shortcut + matching AppUserModelID (org.lotusguild.lotus-chat);
without it CreateToastNotifier errors and the code falls back to the plugin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 11:04:24 -04:00
jaredandClaude Opus 4.8 73d15b13d2 feat(native): Tier A desktop features (P5-46/36/44/43/49) + window chrome (P5-47)
Adds a `native/` module system (each feature = its own module exposing
`#[tauri::command]`s + optional `setup`; `emit_to_web` pushes DOM CustomEvents to
the web like `forward_deeplink`). Wired into generate_handler! + native::setup;
windows-crate feature union added to Cargo.toml.

- power.rs (P5-46): SetThreadExecutionState held on the main thread while a call
  is active; released on end. Cross-platform (no-op off Windows).
- jumplist.rs (P5-36): ICustomDestinationList "Recent Rooms" of IShellLink tasks
  launching the exe with a matrix: arg (existing deep-link handler opens the room).
- thumbbar.rs (P5-44): ITaskbarList3 ThumbBar Mute/Deafen/End (GDI HICONs) + a
  window subclass catching THBN_CLICKED → emit thumbbar-action.
- smtc.rs (P5-43): WinRT SystemMediaTransportControls via GetForWindow; ButtonPressed
  → smtc-action; call-state command. (Experimental for a non-media app.)
- network.rs (P5-49): INetworkListManager poll thread → emit network-changed.
- chrome.rs (P5-47): cross-platform window-control commands + set_custom_chrome
  (set_decorations) for the opt-in TDS titlebar.

NOT compile-verified locally (no Rust/Windows toolchain on the dev box) — this is
for the CI Windows compile pass (GitHub test.yml / Gitea windows runner). Expect a
possible fixup round (windows-crate feature/namespace paths, e.g. subclass APIs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 11:04:24 -04:00
jaredandClaude Opus 4.8 324a27577c fix(notify): make TauriNotification.permission assignable (no-op setter)
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m55s
Build Lotus Chat Desktop / build-windows (push) Successful in 40m21s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
The injected notification bridge defined `permission` as a getter-only property.
When the notification plugin / a polyfill assigned `Notification.permission`, it
threw "Cannot set property permission of function TauriNotification ... which has
only a getter" at page load. Add a no-op setter so it still reads 'granted' but
assignment can't crash.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 22:35:21 -04:00
jaredandClaude Sonnet 4.6 5cc84991f2 fix(badge): zero-init DIB bits buffer to eliminate black square
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
CreateDIBSection does not guarantee zeroed memory. Uninitialized bytes
with non-zero RGB but zero alpha were getting alpha=255 set by the
existing pixel loop, causing a black square around the badge circle.
Zeroing with write_bytes before GDI drawing ensures only explicitly
painted pixels are opaque.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 20:35:31 -04:00
jaredandClaude Sonnet 4.6 ff3d4b4a18 fix(ci): use USERPROFILE and add rustup toolchain bin to PATH
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m56s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m50s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
The rustup shim at .cargo\bin\cargo.exe was failing with
"No application is associated with the specified file for
this operation" — a Windows error indicating the shim proxy
could not resolve the toolchain. Fix by also adding the
actual stable toolchain bin dir to PATH, bypassing the shim.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 23:54:01 -04:00
jaredandClaude Sonnet 4.6 f70f749216 fix(ci): set cargo PATH inline in Build step
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Failing after 14m12s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m37s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
GITHUB_PATH written by a prior step is not reliably picked up by act
(the local runner). Set PATH directly in the Build step's PowerShell
session so cargo.exe is visible to tauri build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 23:33:37 -04:00
jaredandClaude Sonnet 4.6 fd565e1edc fix(ci): fix PowerShell parse error in Add Rust to PATH step
Build Lotus Chat Desktop / prepare (push) Successful in 25s
Build Lotus Chat Desktop / build-windows (push) Failing after 16m57s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m50s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Em dash in Write-Error string broke PowerShell string termination.
Also try C:\Users\%USERNAME%\.cargo\bin as fallback since act may
override USERPROFILE to a temp directory.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 21:37:25 -04:00
jaredandClaude Sonnet 4.6 83725e1a2a fix(ci): add Rust to PATH on Windows runner before cargo steps
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Failing after 1m18s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m31s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
cargo.exe lives in %USERPROFILE%\.cargo\bin but act does not
automatically export it into the CI subprocess PATH. Added an explicit
step to append that directory to GITHUB_PATH, matching what the Linux
job already does for $HOME/.cargo/bin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 20:51:04 -04:00
jaredandClaude Sonnet 4.6 1662fbab2b chore: bump cinny submodule (poll TDS fix + avatar decoration in profile modal)
Build Lotus Chat Desktop / prepare (push) Successful in 16s
Build Lotus Chat Desktop / build-windows (push) Failing after 14m37s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m15s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
- Polls now use TDS accent-cyan tokens instead of hardcoded Cinny blue
- Avatar decorations now visible in user profile modal (UserHero)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 17:40:32 -04:00
jaredandClaude Sonnet 4.6 0eb0b223a2 fix(ci): resolve Windows Cargo SSL handshake failures on crates.io
Three changes to the build-windows job:

1. CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse — uses lightweight HTTPS
   per-crate fetching instead of a full git clone of the crates.io index.
   The git clone path triggers an SSL connection reset ([curl 35]) on
   Windows Schannel in this runner environment.

2. CARGO_HTTP_MULTIPLEXING=false — disables HTTP/2 ALPN negotiation which
   is another common source of Schannel SSL resets on Windows.

3. CARGO_NET_RETRY=5 — retry transient network errors up to 5 times before
   failing the build.

4. Add Swatinem/rust-cache for Windows (mirrors the Linux job) — after a
   successful build, compiled crates are cached so subsequent runs skip the
   crates.io download entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 17:39:50 -04:00
jaredandClaude Sonnet 4.6 524fa61c01 fix(desktop): taskbar badge transparent circle + larger size
The Windows overlay badge rendered as a black square because GDI drawing
functions do not write the alpha channel — all pixels stay at A=0, causing
Windows to fall back to the opaque monochrome mask and draw corner pixels
as solid black.

Fix: after all GDI calls, iterate the pixel buffer and set alpha=0xFF for
every non-zero pixel; corner pixels (zero) retain A=0 and composite as
transparent, giving a proper circular badge.

Also increased bitmap size 16→20 and font height 11→14 for better
legibility, especially for two-digit mention counts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 17:39:50 -04:00
jaredandClaude Fable 5 b8f0d7d498 feat(desktop): tray unread overlay + taskbar flash
Build Lotus Chat Desktop / prepare (push) Successful in 16s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m14s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m15s
Build Lotus Chat Desktop / update-manifest (push) Successful in 10s
- set_tray_unread command re-renders the tray icon with a red unread dot
  composited onto the base icon (handle + base pixels kept in managed state).
- flash_window command flashes the taskbar via request_user_attention.
- Register both commands; bump cinny submodule to 107921e0 (web wiring).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 23:53:52 -04:00
jaredandClaude Fable 5 a0707e6113 fix(desktop): enable tauri tray-icon feature
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m1s
Build Lotus Chat Desktop / build-windows (push) Successful in 27m10s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
tauri::tray is gated behind the 'tray-icon' Cargo feature; the tray code
failed to compile without it (E0432). Also enable image-png for tray icon
decoding.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 19:59:05 -04:00
jaredandClaude Fable 5 5da2069eba feat: Windows-native desktop polish (tray, single-instance, deep links, Mica, installer)
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Failing after 14m12s
Build Lotus Chat Desktop / build-windows (push) Failing after 22m14s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
- System tray with Open/Quit menu + left-click toggle; closing the window now
  minimizes to tray instead of quitting, so notifications keep arriving.
- Single-instance: a second launch focuses the running window (and forwards a
  matrix: link) instead of colliding on the localhost port.
- Window: 1100x720 default, 480x600 min, centered first run; starts hidden and
  shows on page-load to kill the white launch flash (8s failsafe).
- matrix: deep links via tauri-plugin-deep-link -> dispatched to the web client
  (useDeepLinkNavigate) for both cold-start and already-running cases.
- Windows 11 Mica backdrop (subtle; app paints opaque TDS bg).
- NSIS installer: per-user install (no UAC), downloadBootstrapper.
- Remove dead/broken src/menu.rs.
- Bump cinny submodule to 053b364a (deep-link web handler).

Note: Rust not compiled locally (no toolchain / Windows-only paths); verified by
careful API review against tauri 2.10 — needs a real 'tauri build' to confirm.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 18:52:37 -04:00
jaredandClaude Fable 5 368953c0d6 feat: transparent Lotus app icons (no more black/checkerboard square)
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m36s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m0s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Regenerated all desktop icons (32/128/128@2x PNG, multi-res icon.ico [16-256],
icon.icns, Windows Store Square*/StoreLogo) from a genuinely transparent
1024x1024 Lotus source via 'tauri icon'. The old icons had a black square
background that looked wrong on the Windows taskbar; these have an alpha
background so only the lotus + dove show.

Also bumps the cinny submodule to 3282832a (corrected transparent source asset).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 14:57:11 -04:00
jaredandClaude Fable 5 3a5269acfc chore: bump cinny submodule to 00524beb
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 22m21s
Build Lotus Chat Desktop / build-windows (push) Successful in 25m10s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
Corrects the voice-limit setting description to reflect server-side enforcement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 13:41:45 -04:00
jaredandClaude Fable 5 5b891074da chore: bump cinny submodule to 9df4d2d7
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 21m48s
Build Lotus Chat Desktop / build-windows (push) Successful in 22m9s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
Element Call copy fix — restores voice/video calls in the desktop build
(/public/element-call/index.html was 404ing). Includes this session's
voice-channel limit + join/leave sound work.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 12:29:15 -04:00
jared 352d9085c3 fix: pre-stage linuxdeploy plugins; add wrapper diagnostic log
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m47s
Build Lotus Chat Desktop / build-windows (push) Successful in 26m13s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-12 04:12:06 -04:00
jared f6a6849a9e ci: retry build after transient prepare failure
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-linux (push) Failing after 19m48s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m27s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-11 20:39:13 -04:00
jared f8f6564d55 fix: strip --appimage-extract-and-run from linuxdeploy args in wrapper
Build Lotus Chat Desktop / prepare (push) Failing after 14m11s
Build Lotus Chat Desktop / build-windows (push) Has been skipped
Build Lotus Chat Desktop / build-linux (push) Has been skipped
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-11 20:16:21 -04:00
jared 18d53ad054 fix: extract linuxdeploy to /root (persists), add wrapper diagnostics
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m59s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
2026-06-11 19:47:22 -04:00
jared 087e3cf92f fix: ensure icons are RGBA PNG before build using imagemagick
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m39s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m33s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-11 19:19:10 -04:00
jaredandClaude Sonnet 4.6 9cc58c8772 fix: use --appimage-extract instead of unsquashfs to unpack linuxdeploy
Build Lotus Chat Desktop / prepare (push) Successful in 10s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m15s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m46s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
The squashfs magic was not found at any 512-byte boundary because
Tauri's linuxdeploy build uses a non-standard layout. Using the
AppImage's own --appimage-extract flag extracts squashfs internally
without FUSE or needing to locate the offset manually.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 17:20:35 -04:00
jaredandClaude Sonnet 4.6 8335a68b0f debug: add set -ex and verbose wget to diagnose Stage step failure
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Failing after 12m47s
Build Lotus Chat Desktop / build-windows (push) Successful in 22m8s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
The step exits in 1s with no output — need to see which command fails
and whether github.com is reachable from the runner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 16:51:49 -04:00
jaredandClaude Sonnet 4.6 07d6b18ccf fix: search all 512-byte boundaries for squashfs offset in linuxdeploy AppImage
Build Lotus Chat Desktop / prepare (push) Successful in 10s
Build Lotus Chat Desktop / build-linux (push) Failing after 14m50s
Build Lotus Chat Desktop / build-windows (push) Successful in 22m38s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
The 4096-byte-aligned scan raised StopIteration when linuxdeploy's squashfs
starts at a non-page-aligned boundary. Scan every 512 bytes instead and
exit cleanly with error code 1 if nothing is found.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:32:12 -04:00
jaredandClaude Sonnet 4.6 08926e76e4 fix: use pre-installed Rust to avoid static.rust-lang.org connection failures
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Failing after 12m13s
Build Lotus Chat Desktop / build-windows (push) Successful in 23m20s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
The Linux runner cannot reach static.rust-lang.org, so dtolnay/rust-toolchain
times out every build. The runner host has Rust installed and bind-mounts
~/.cargo into the container — use that directly and skip the download.
Also bump cinny submodule to 2178295e.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 14:56:33 -04:00
jaredandClaude Sonnet 4.6 2de368847c fix: resolve YAML parse error in release.yml CI workflow
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m39s
Build Lotus Chat Desktop / build-windows (push) Failing after 46m47s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Column-0 lines inside run: | blocks (Python -c script and C heredoc)
caused Gitea's YAML parser to terminate the literal block early, resulting
in a 500 error on every workflow_dispatch call. Fix by collapsing the
Python to a single line and moving the C source into tools/ld_wrapper.c
so CI can compile it directly without any heredoc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 13:19:06 -04:00
jared a306fdf3bd ci: trigger build 2026-06-11 11:42:37 -04:00
jaredandClaude Sonnet 4.6 a7e0d7bef9 Fix FONT_PITCH_AND_FAMILY, CreateBitmap, and linuxdeploy ELF wrapper
Windows (windows-rs 0.61):
- FONT_PITCH_AND_FAMILY does not exist; ipitchandfamily is u32 - revert
  to (DEFAULT_PITCH.0 | FF_DONTCARE.0) as u32
- CreateBitmap returns HBITMAP directly (not Result<HBITMAP>); replace
  .map_err()? with explicit null pointer check on hbm_mask.0

Linux AppImage:
- Shell script wrapper is destroyed by Tauri's `dd if=/dev/zero bs=1
  count=3 seek=8` which zeroes the shebang at bytes 8-10
- Compile a tiny C ELF forwarder instead: ELF bytes 8-10 are
  EI_OSABI/EI_ABIVERSION padding (already zero), dd is a no-op
- Use page-aligned squashfs offset search for more reliable extraction
- Add set -e to Stage step and explicit gcc install

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 11:27:06 -04:00
jaredandClaude Sonnet 4.6 6028a41d65 Replace APPIMAGE_EXTRACT_AND_RUN with pre-extracted linuxdeploy wrapper
Docker CI containers lack FUSE kernel module, and the env var approach
was unreliable when Tauri spawns linuxdeploy as a subprocess.

Instead: download linuxdeploy-x86_64.AppImage, extract its squashfs
content using squashfs-tools (no FUSE needed), then place a shell
wrapper at ~/.cache/tauri/linuxdeploy-x86_64.AppImage so Tauri uses
the extracted binary directly without AppImage runtime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 10:40:01 -04:00
jaredandClaude Sonnet 4.6 768c286d4a Fix Windows badge API for windows-rs 0.61 + add libfuse2 for Linux AppImage
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Failing after 14m42s
Build Lotus Chat Desktop / build-windows (push) Failing after 16m14s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
- Move BOOL import to windows::core (removed from Win32::Foundation in 0.61)
- Move CreateBitmap import from WindowsAndMessaging to Win32::Graphics::Gdi
- Wrap nullable handles in Some() for GetDC, CreateCompatibleDC,
  CreateDIBSection, ReleaseDC (new Option<T> API in 0.61)
- Add .into() for all SelectObject/DeleteObject GDI handle args (now HGDIOBJ)
- Use FONT_PITCH_AND_FAMILY type directly in CreateFontW instead of u32 cast
- Make DrawTextW slice mutable (&mut [u16] required in 0.61)
- Use hicon.unwrap_or_default() for SetOverlayIcon (takes HICON not Option<HICON>)
- Add libfuse2 to apt-get for Linux AppImage bundler (FUSE mount fallback)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 10:20:34 -04:00
jaredandClaude Sonnet 4.6 3be18b8e5d fix: Windows JSON patch via node, Linux AppImage via APPIMAGE_EXTRACT_AND_RUN
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m17s
Build Lotus Chat Desktop / build-windows (push) Failing after 20m37s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Windows: ConvertTo-Json outputs True/False (invalid JSON) and UTF-16
BOM, corrupting tauri.conf.json. Switch to `node -e` which round-trips
JSON correctly.

Linux: linuxdeploy is itself an AppImage and cannot execute inside
Docker without FUSE. APPIMAGE_EXTRACT_AND_RUN=1 makes it self-extract
and run as a plain binary instead.

Also fix unreachable_code warning in check_for_update.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 22:52:54 -04:00
jaredandClaude Sonnet 4.6 0bdaa66d24 fix: convert all PNG icons from RGB to RGBA
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m9s
Build Lotus Chat Desktop / build-windows (push) Failing after 22m23s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Tauri's generate_context! macro requires RGBA PNG icons. All 14 files
were RGB (source logo is RGB); converted with Pillow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 20:38:18 -04:00
jaredandClaude Sonnet 4.6 32286d03de feat: native notifications + in-app update checker
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-linux (push) Failing after 18m6s
Build Lotus Chat Desktop / build-windows (push) Failing after 23m47s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
- Register tauri-plugin-notification; inject initialization script that
  patches window.Notification to route through the native plugin and
  always report permission as granted — bypasses WebView2's default deny
- Also grant COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS via existing
  PermissionRequestedEventHandler
- Register tauri-plugin-updater; add check_for_update and install_update
  commands using the pubkey/endpoint already in tauri.conf.json

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 20:31:25 -04:00
jaredandClaude Sonnet 4.6 72a03dac33 fix: patch version with PowerShell instead of python3 on Windows runner
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Failing after 27m38s
Build Lotus Chat Desktop / build-windows (push) Failing after 27m45s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 18:56:23 -04:00
jaredandClaude Sonnet 4.6 b4812e6659 feat: Windows taskbar overlay badge via ITaskbarList3
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-windows (push) Failing after 1m31s
Build Lotus Chat Desktop / build-linux (push) Failing after 15m17s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Adds set_badge_count Tauri command (Windows only). Uses CoCreateInstance
to get ITaskbarList3 and SetOverlayIcon to display a dynamically drawn
badge on the taskbar button. The badge is a 16x16 GDI bitmap: red circle,
white bold Segoe UI text, capped at "99+". Passing count=0 clears the
overlay. Uses windows = 0.61 (already a transitive dep via webview2-com).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 17:32:53 -04:00
jaredandClaude Sonnet 4.6 f0100c0c0c feat: replace all desktop icons with custom Lotus Chat logo
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Failing after 3m9s
Build Lotus Chat Desktop / build-linux (push) Failing after 15m22s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
Updates all Tauri icon targets: 32x32, 128x128, 128x128@2x, icon.png,
icon.ico (multi-size), icon.icns (16/32/128/256/512), and all Windows
NSIS Square*Logo and StoreLogo sizes. Generated from lotus_chat.png
(1254x1254 source in the cinny repo).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 17:02:01 -04:00
jaredandClaude Sonnet 4.6 ed718704ee fix(ci): add prepare job, auto-version, fix Windows build issues
- Add prepare job: computes version (4.12.{run_number}), creates/updates
  the Gitea release once — eliminates the race condition where build-windows
  and build-linux both tried to create the same release simultaneously.
- Auto-increment version: both build jobs patch tauri.conf.json with
  4.12.{run_number} before building, so every CI run produces a strictly
  increasing semver and the Tauri updater fires correctly.
- Fix double -- in Windows build command: was 'build -- --bundles nsis'
  which passed --bundles as cargo args (silently ignored), causing all
  bundle targets to build. Now 'build --bundles nsis' (single --).
- Add setup-node to Windows build: pins Node.js to .node-version like
  the Linux job already does.
- update-manifest: uses version/release_id from prepare outputs instead
  of re-fetching and parsing the release name.
- Fix window title: was "Cinny", now "Lotus Chat".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 17:02:01 -04:00
jaredandClaude Sonnet 4.6 2f55bb3f6d fix(ci): single-line python3 in update-manifest to avoid YAML block scalar truncation
Build Lotus Chat Desktop / build-linux (push) Successful in 23m56s
Build Lotus Chat Desktop / build-windows (push) Successful in 28m35s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
Zero-indented lines inside run: | terminate the block early.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 11:58:40 -04:00
jaredandClaude Sonnet 4.6 7c77c8e850 fix(ci): replace jq with python3 in update-manifest (jq not in node:20-bookworm)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 11:17:52 -04:00
jaredandClaude Sonnet 4.6 4b71e80636 fix(windows): call with_webview on built window, import COREWEBVIEW2_PERMISSION_KIND type
Build Lotus Chat Desktop / build-windows (push) Successful in 27m6s
Build Lotus Chat Desktop / build-linux (push) Successful in 20m21s
Build Lotus Chat Desktop / update-manifest (push) Failing after 3s
with_webview is on WebviewWindow (the built window), not WebviewWindowBuilder.
Also import COREWEBVIEW2_PERMISSION_KIND as a type for the out-param zero-init.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 10:05:49 -04:00
jaredandClaude Sonnet 4.6 d043f9c416 fix(windows): fix PermissionKind out-param and add AppImage support
Build Lotus Chat Desktop / build-windows (push) Failing after 23m52s
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
- Fix COREWEBVIEW2_PERMISSION_KIND out-param pattern in PermissionRequestedEventHandler
- Add "wry" feature to tauri dep so with_webview compiles on Windows
- Build both appimage and deb on Linux for auto-update compatibility
- Commit AppRun-x86_64 binary to avoid GitHub download timeout in CI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 00:06:12 -04:00
jaredandClaude Sonnet 4.6 eadd3bfc48 fix(windows): use webview2_com built-in handler instead of #[implement]
Build Lotus Chat Desktop / build-linux (push) Failing after 17m40s
Build Lotus Chat Desktop / build-windows (push) Failing after 22m16s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
The previous approach used windows::core::implement to manually implement
ICoreWebView2PermissionRequestedEventHandler_Impl, but the sealed
IUnknownImpl constraint in webview2-com prevents external #[implement]
usage — you must use the crate's own pre-built handler types.

Replace with PermissionRequestedEventHandler::create() which wraps the
closure and handles COM ref-counting internally. Also removes the now-
unused windows = "0.61" direct dependency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 23:32:02 -04:00
jaredandClaude Sonnet 4.6 443c85c9b5 fix(windows): gate with_webview call to Windows only
Build Lotus Chat Desktop / build-linux (push) Failing after 13m50s
Build Lotus Chat Desktop / build-windows (push) Failing after 23m55s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
with_webview is not available on Linux; break the builder chain and apply
it conditionally so the Linux build compiles without the wry feature flag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 21:52:09 -04:00
jaredandClaude Sonnet 4.6 4288eb2c02 fix(ci): drop extra -- that forwarded --bundles to cargo instead of tauri
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 21:11:37 -04:00
jaredandClaude Sonnet 4.6 e009af0575 fix(ci): fix YAML parse error in update-manifest step
Build Lotus Chat Desktop / build-linux (push) Failing after 17m21s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Multi-line python3 -c "..." with zero-indented Python code caused Gitea
to fail parsing the workflow YAML (line 188: could not find expected ':').
Replace with jq which handles variable interpolation in a single line.

This was silently breaking every push-triggered workflow run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 20:43:05 -04:00
jared c466d93519 chore: trigger desktop build for cinny 81e1a25d 2026-06-09 19:44:09 -04:00
jaredandClaude Sonnet 4.6 a6aae9d6f2 fix(ci): correct artifact filenames and drop AppImage build
Two build failures after rename to "Lotus Chat":
- Windows upload was globbing for Cinny_*_x64-setup.exe; Tauri now
  outputs "Lotus Chat_4.12.2_x64-setup.exe" to match productName
- Linux upload was globbing for Cinny_*_amd64.deb; same issue

Also switch version source from filename parsing to tauri.conf.json
directly — more robust, no regex.

Linux: drop AppImage bundle (--bundles deb only). AppImage requires
downloading AppRun from github.com/tauri-apps/binary-releases during
the build step; the CI runner times out on that download. The deb
builds cleanly. Re-enable AppImage once GitHub connectivity is fixed.

Update manifest now covers Windows only (Linux AppImage not available).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:57:31 -04:00
jaredandClaude Sonnet 4.6 838c69f46e fix(windows): grant microphone and camera permissions in WebView2
WebView2 silently denies getUserMedia() unless a PermissionRequested
handler explicitly allows it. macOS was already covered by Info.plist;
Windows had nothing. Adds a COM event handler via with_webview that
auto-approves mic and camera requests so Element Call voice/video
works in the desktop app.

Also includes previously uncommitted changes:
- tauri.conf.json: add media-src / mediastream: to CSP
- Info.plist: macOS NSMicrophoneUsageDescription / NSCameraUsageDescription

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:27:12 -04:00
jared 0b7ace5dfa Add update-manifest job to generate release.json after both builds 2026-06-07 13:14:54 -04:00
jared 8f0f8db201 Rename to Lotus Chat, point updater at our release manifest
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
2026-06-07 13:13:32 -04:00
jared ceda17edc4 Set matrix.lotusguild.org as default homeserver
Build Lotus Chat Desktop / build-windows (push) Successful in 26m54s
Build Lotus Chat Desktop / build-linux (push) Successful in 21m54s
2026-06-07 13:12:27 -04:00
jared 12c860de0c Deduplicate assets on upload, fix release accumulation
Build Lotus Chat Desktop / build-linux (push) Successful in 22m54s
Build Lotus Chat Desktop / build-windows (push) Successful in 24m4s
2026-06-07 12:29:56 -04:00
jared 12a559dc6d Remove rust-cache from Windows job (stale paths break cargo)
Build Lotus Chat Desktop / build-windows (push) Failing after 15m25s
Build Lotus Chat Desktop / build-linux (push) Successful in 22m19s
2026-06-07 11:27:42 -04:00
jared 938fa0953b Fix upload: extract version from artifact, fix bash token syntax
Build Lotus Chat Desktop / build-windows (push) Failing after 15m46s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m8s
2026-06-07 01:40:31 -04:00
jared 5f678ff088 Fix PowerShell env var: TOKEN -> env:TOKEN
Build Lotus Chat Desktop / build-linux (push) Failing after 17m12s
Build Lotus Chat Desktop / build-windows (push) Successful in 30m8s
2026-06-07 00:46:28 -04:00
jared df39489916 Use scoped RELEASE_TOKEN instead of GITHUB_TOKEN
Build Lotus Chat Desktop / build-linux (push) Successful in 23m13s
Build Lotus Chat Desktop / build-windows (push) Failing after 30m28s
2026-06-06 22:53:16 -04:00
jared b2288bc9b2 Read version directly in upload step, not from step outputs
Build Lotus Chat Desktop / build-linux (push) Successful in 22m9s
Build Lotus Chat Desktop / build-windows (push) Failing after 31m5s
2026-06-06 22:15:23 -04:00
jared 0923312111 Drop prepare-release job, each build gets-or-creates the release
Build Lotus Chat Desktop / build-linux (push) Successful in 26m14s
Build Lotus Chat Desktop / build-windows (push) Failing after 36m56s
2026-06-06 19:35:56 -04:00
jared 279117ecf2 Switch Windows bundler from WiX/MSI to NSIS/EXE
Build Lotus Chat Desktop / prepare-release (push) Failing after 18m5s
Build Lotus Chat Desktop / build-windows (push) Has been skipped
Build Lotus Chat Desktop / build-linux (push) Has been skipped
2026-06-06 19:03:33 -04:00
jared adb017804d Shallow submodule clone on Windows to fix checkout timeout
Build Lotus Chat Desktop / prepare-release (push) Successful in 8s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m26s
Build Lotus Chat Desktop / build-windows (push) Failing after 32m33s
2026-06-06 17:26:03 -04:00
jared 0e700b335a Restructure: publish direct to release, no artifact storage
Build Lotus Chat Desktop / prepare-release (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Failing after 17m29s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m46s
2026-06-06 16:49:49 -04:00
jared a7b93deb98 Add xdg-utils for AppImage bundler
Build Lotus Chat Desktop / build-linux (push) Failing after 16m51s
Build Lotus Chat Desktop / build-windows (push) Failing after 30m24s
Build Lotus Chat Desktop / publish (push) Has been skipped
2026-06-06 16:13:59 -04:00
jared 99fb77b867 Fix shell: use powershell not pwsh on Windows
Build Lotus Chat Desktop / build-windows (push) Failing after 41s
Build Lotus Chat Desktop / build-linux (push) Failing after 15m5s
Build Lotus Chat Desktop / publish (push) Has been skipped
2026-06-06 14:12:57 -04:00
jared 6f543f8bef Install full Tauri 2 Linux deps (webkit4.1 + soup3 + xdo)
Build Lotus Chat Desktop / build-windows (push) Failing after 27s
Build Lotus Chat Desktop / publish (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
2026-06-06 13:59:42 -04:00
jared 473028491c Use pre-installed Node on Windows runner
Build Lotus Chat Desktop / build-windows (push) Failing after 35s
Build Lotus Chat Desktop / build-linux (push) Failing after 10m23s
Build Lotus Chat Desktop / publish (push) Has been skipped
2026-06-06 13:58:19 -04:00
jared a598ba6049 Fix webkit package for Bullseye
Build Lotus Chat Desktop / build-windows (push) Failing after 5s
Build Lotus Chat Desktop / build-linux (push) Failing after 9m18s
Build Lotus Chat Desktop / publish (push) Has been skipped
2026-06-06 13:21:46 -04:00
jared a7ced9d477 Add Lotus Chat desktop build workflow
Build Lotus Chat Desktop / build-linux (push) Failing after 36s
Build Lotus Chat Desktop / build-windows (push) Failing after 2m12s
Build Lotus Chat Desktop / publish (push) Has been skipped
2026-06-06 13:03:30 -04:00
jared 646da8276a Update cinny submodule to lotus branch tip 2026-06-06 12:56:03 -04:00
jared af9ad2eb6f Point cinny submodule at LotusGuild/cinny lotus branch 2026-06-06 12:55:13 -04:00