42 Commits

Author SHA1 Message Date
jared 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
jared 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
jared 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
jared 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
jared 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
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 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
jared 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
jared 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
jared 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
jared 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
jared 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 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
jared 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
jared 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
jared 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
jared 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
jared 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
jared 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
jared 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
jared 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
jared 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
jared 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 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
jared 0b7ace5dfa Add update-manifest job to generate release.json after both builds 2026-06-07 13:14:54 -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