Compare commits

...

41 Commits

Author SHA1 Message Date
Lotus CI 475e353339 chore: bump cinny submodule to c0f98672
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m45s
Build Lotus Chat Desktop / build-windows (push) Successful in 37m28s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-23 10:33:29 +00:00
Lotus CI af6615ca98 chore: bump cinny submodule to 79f8fabb
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m15s
Build Lotus Chat Desktop / build-windows (push) Successful in 32m14s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-06-20 01:28:16 +00:00
Lotus CI bfd176e338 chore: bump cinny submodule to 5470e25b
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m23s
Build Lotus Chat Desktop / build-windows (push) Successful in 31m2s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-06-20 00:53:45 +00:00
Lotus CI 0800cf2327 chore: bump cinny submodule to e713d473
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m10s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m45s
Build Lotus Chat Desktop / update-manifest (push) Successful in 13s
2026-06-19 22:38:16 +00:00
Lotus CI 32dd6561ab chore: bump cinny submodule to 4a4dede1
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m7s
Build Lotus Chat Desktop / build-windows (push) Successful in 34m37s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-06-19 20:34:48 +00:00
Lotus CI 690be31a1d chore: bump cinny submodule to b818d3fc
Build Lotus Chat Desktop / prepare (push) Successful in 7s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m24s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m30s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-06-19 17:21:35 +00:00
Lotus CI 5cb6b44744 chore: bump cinny submodule to cf839e73
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m45s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m10s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-06-19 15:33:28 +00:00
Lotus CI 0c315e9250 chore: bump cinny submodule to c54cb126
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m5s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-19 04:29:27 +00:00
Lotus CI ff4a04265b chore: bump cinny submodule to 8dc4c4d0
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m31s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m28s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-19 02:57:38 +00:00
Lotus CI 040c8afef2 chore: bump cinny submodule to 9742eaea
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m57s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m28s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-06-19 01:05:02 +00:00
Lotus CI de00d087f6 chore: bump cinny submodule to fb66c0ed
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-linux (push) Successful in 26m47s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m24s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-06-19 00:02:13 +00:00
Lotus CI afffe6958b chore: bump cinny submodule to e2b957b6
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m57s
Build Lotus Chat Desktop / build-windows (push) Successful in 46m23s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-19 00:02:05 +00:00
Lotus CI 09e489a79b chore: bump cinny submodule to a77c4b6d
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m25s
Build Lotus Chat Desktop / build-windows (push) Successful in 38m2s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-18 23:15:48 +00:00
Lotus CI 3c7ea720f7 chore: bump cinny submodule to f054abfb
Build Lotus Chat Desktop / prepare (push) Successful in 12s
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
2026-06-18 23:15:38 +00:00
Lotus CI a52ee06d73 chore: bump cinny submodule to ffa490e7
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 21m15s
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
2026-06-18 22:32:59 +00:00
Lotus CI 744e608b1d chore: bump cinny submodule to 8c711f5f
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-linux (push) Successful in 21m23s
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
2026-06-18 19:29:32 +00:00
Lotus CI c1e46ddedf chore: bump cinny submodule to c395f7d1
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 20m39s
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
2026-06-18 17:46:37 +00:00
Lotus CI ca612b33bb chore: bump cinny submodule to 26f90087
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 21m27s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
2026-06-18 14:48:32 +00:00
Lotus CI 8ada70dcf7 chore: bump cinny submodule to bb99ad56
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m8s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m57s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-18 01:13:07 +00:00
Lotus CI d21553088e chore: bump cinny submodule to b24ab838
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m17s
Build Lotus Chat Desktop / build-windows (push) Successful in 26m16s
Build Lotus Chat Desktop / update-manifest (push) Successful in 5s
2026-06-18 00:37:57 +00:00
Lotus CI f37ef1df8f chore: bump cinny submodule to abb7f743
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m4s
Build Lotus Chat Desktop / build-windows (push) Successful in 27m28s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-06-17 22:00:00 +00:00
Lotus CI df9cc34c5d chore: bump cinny submodule to 14cfa021
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 23m14s
Build Lotus Chat Desktop / build-windows (push) Successful in 25m4s
Build Lotus Chat Desktop / update-manifest (push) Successful in 8s
2026-06-16 22:06:54 +00:00
Lotus CI d176ae396c chore: bump cinny submodule to 86272b6b
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 24m21s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
2026-06-16 21:25:02 +00:00
Lotus CI 66190fc7af chore: bump cinny submodule to 6634b2b8
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-linux (push) Successful in 22m24s
Build Lotus Chat Desktop / build-windows (push) Successful in 25m38s
Build Lotus Chat Desktop / update-manifest (push) Successful in 4s
2026-06-16 05:54:12 +00:00
Lotus CI c92b1f1e8b chore: bump cinny submodule to 5d5f5f45
Build Lotus Chat Desktop / prepare (push) Successful in 6s
Build Lotus Chat Desktop / build-windows (push) Failing after 37s
Build Lotus Chat Desktop / build-linux (push) Failing after 9m40s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-16 04:55:31 +00:00
Lotus CI d0700d0475 chore: bump cinny submodule to 938ead79
Build Lotus Chat Desktop / prepare (push) Successful in 5s
Build Lotus Chat Desktop / build-linux (push) Successful in 24m30s
Build Lotus Chat Desktop / build-windows (push) Successful in 25m51s
Build Lotus Chat Desktop / update-manifest (push) Successful in 7s
2026-06-16 03:01:14 +00:00
Lotus CI 095783baa9 chore: bump cinny submodule to 4a401cf8
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
2026-06-16 01:03:46 +00:00
Lotus CI de38fceff2 chore: bump cinny submodule to 5deed79b
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-windows (push) Has been cancelled
Build Lotus Chat Desktop / build-linux (push) Has been cancelled
Build Lotus Chat Desktop / update-manifest (push) Has been cancelled
2026-06-16 00:41:19 +00:00
jared 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
Lotus CI 150a1921f9 chore: bump cinny submodule to f9edd202
Build Lotus Chat Desktop / prepare (push) Successful in 11s
Build Lotus Chat Desktop / build-linux (push) Successful in 25m46s
Build Lotus Chat Desktop / build-windows (push) Successful in 29m18s
Build Lotus Chat Desktop / update-manifest (push) Successful in 3s
2026-06-15 05:27:19 +00:00
Lotus CI a7aad94755 chore: bump cinny submodule to 10f6544e
Build Lotus Chat Desktop / prepare (push) Successful in 4s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m14s
Build Lotus Chat Desktop / build-windows (push) Successful in 33m35s
Build Lotus Chat Desktop / update-manifest (push) Successful in 9s
2026-06-15 04:48:17 +00:00
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
Lotus CI a543c98ae1 chore: bump cinny submodule to 7f329e3b
Build Lotus Chat Desktop / prepare (push) Successful in 8s
Build Lotus Chat Desktop / build-windows (push) Failing after 20m35s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m43s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-14 23:07:37 +00:00
Lotus CI a386226073 chore: bump cinny submodule to 97d80858
Build Lotus Chat Desktop / prepare (push) Successful in 9s
Build Lotus Chat Desktop / build-windows (push) Failing after 20m1s
Build Lotus Chat Desktop / build-linux (push) Successful in 27m45s
Build Lotus Chat Desktop / update-manifest (push) Has been skipped
2026-06-14 22:56:53 +00:00
Lotus CI 6f9db2187f chore: bump cinny submodule to 4bb7c1ff
Build Lotus Chat Desktop / prepare (push) Successful in 3s
Build Lotus Chat Desktop / build-windows (push) Successful in 35m51s
Build Lotus Chat Desktop / build-linux (push) Successful in 28m28s
Build Lotus Chat Desktop / update-manifest (push) Successful in 19s
2026-06-14 21:49:34 +00:00
jared 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
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 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
3 changed files with 42 additions and 4 deletions
+21 -1
View File
@@ -63,6 +63,10 @@ jobs:
$ver = '${{ needs.prepare.outputs.version }}'
node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync('src-tauri/tauri.conf.json','utf8'));d.version='$ver';fs.writeFileSync('src-tauri/tauri.conf.json',JSON.stringify(d,null,2),'utf8');"
- uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install frontend deps
shell: powershell
run: cd cinny; npm ci
@@ -77,7 +81,23 @@ jobs:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ''
NODE_OPTIONS: '--max_old_space_size=4096'
run: npm run tauri -- build --bundles nsis
# Sparse registry avoids a full git clone of the crates.io index —
# eliminates the curl SSL handshake failures seen on Windows runners.
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
# Disable HTTP/2 multiplexing — ALPN negotiation can reset on Windows Schannel.
CARGO_HTTP_MULTIPLEXING: 'false'
# Retry transient network errors before failing.
CARGO_NET_RETRY: '5'
run: |
# USERPROFILE is set by Windows directly; more reliable than C:\Users\$USERNAME
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
# Also add the actual toolchain bin to bypass rustup shim execution issues
$toolchain = Get-ChildItem "$env:USERPROFILE\.rustup\toolchains" -Directory -ErrorAction SilentlyContinue |
Where-Object { $_.Name -match 'stable' } | Select-Object -First 1
if ($toolchain) { $env:PATH = "$($toolchain.FullName)\bin;$env:PATH" }
Write-Host "cargo: $((Get-Command cargo -ErrorAction SilentlyContinue).Source)"
cargo --version
npm run tauri -- build --bundles nsis
- name: Upload to release
shell: powershell
+1 -1
Submodule cinny updated: 388a934665...c0f9867218
+20 -2
View File
@@ -162,7 +162,7 @@ fn set_badge_count(count: u32, window: tauri::Window) -> Result<(), String> {
let mut label_wide: Vec<u16> = label.encode_utf16().chain(std::iter::once(0)).collect();
unsafe {
let size = 16i32;
let size = 20i32;
let hdc_screen = windows::Win32::Graphics::Gdi::GetDC(None);
let hdc = CreateCompatibleDC(Some(hdc_screen));
@@ -182,6 +182,11 @@ fn set_badge_count(count: u32, window: tauri::Window) -> Result<(), String> {
let hbm_color =
CreateDIBSection(Some(hdc), &bmi, DIB_RGB_COLORS, &mut bits, None, 0)
.map_err(|e| e.to_string())?;
// Zero-init so undrawn pixels are fully transparent (CreateDIBSection
// does not guarantee zeroed memory; garbage bytes cause a black square).
if !bits.is_null() {
std::ptr::write_bytes(bits as *mut u8, 0, (size * size * 4) as usize);
}
let old_bm = SelectObject(hdc, hbm_color.into());
let hbrush = CreateSolidBrush(COLORREF(0x003030DD));
@@ -191,7 +196,7 @@ fn set_badge_count(count: u32, window: tauri::Window) -> Result<(), String> {
let _ = Ellipse(hdc, 0, 0, size, size);
let hfont = CreateFontW(
11,
14,
0,
0,
0,
@@ -226,6 +231,19 @@ fn set_badge_count(count: u32, window: tauri::Window) -> Result<(), String> {
let _ = DeleteObject(hpen.into());
let _ = DeleteObject(hfont.into());
// GDI drawing leaves the alpha channel at 0 for all pixels.
// Set alpha=255 for every painted pixel so Windows uses per-pixel
// alpha compositing instead of falling back to the opaque mask,
// which would render unpainted corner pixels as a black square.
let pixel_count = (size * size) as usize;
let pixels =
std::slice::from_raw_parts_mut(bits as *mut u32, pixel_count);
for pixel in pixels.iter_mut() {
if *pixel != 0 {
*pixel |= 0xFF00_0000u32;
}
}
let hbm_mask = CreateBitmap(size, size, 1, 1, None);
if hbm_mask.0 as usize == 0 {
let _ = DeleteObject(hbm_color.into());