Files
ChatApp/apps/desktop
byGalax 6c6a23e672 fix(call): thumbnail fetch falls back to base64 if binary path returns nothing
Binary IPC (tauri::ipc::Response) came back as an unrecognised shape on
the user's runtime — the frontend couldn't extract an ArrayBuffer and
every thumbnail resolved to null, so every card rendered the placeholder
icon. Added:

- Widened the invoke typing to ArrayBuffer | Uint8Array | number[] so
  all three known Tauri/WebView2 deserialisation shapes parse.
- A one-time console.warn when the Response body lands as an unknown
  object shape, so the real wire format can be diagnosed if this ever
  trips again.
- An automatic tier-2 fallback: if the binary path produced 0 usable
  bytes, re-invoke the legacy base64 command and decode client-side.
  Slower on the JS thread than binary IPC but known to work across all
  Tauri 2.x runtimes.

Net behaviour: thumbnails render again. If the binary path works on a
given build, we get the fast path; otherwise the base64 fallback keeps
the picker usable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 22:24:02 +02:00
..
2026-04-18 23:11:35 +02:00
2026-04-22 19:24:14 +02:00
2026-04-18 23:11:35 +02:00
2026-04-18 23:11:35 +02:00
2026-04-18 23:11:35 +02:00

@chat-app/desktop

Tauri v2 + React + Vite + Tailwind desktop client (macOS / Windows / Linux).

Prerequisites

  • Node 22+, pnpm 9+
  • Rust + Cargo (install via https://rustup.rs)
  • Platform build deps:
    • macOS: Xcode Command Line Tools
    • Linux: libwebkit2gtk-4.1-dev, build-essential, libssl-dev (Debian/Ubuntu)
    • Windows: Microsoft C++ Build Tools + WebView2

Dev

# from repo root
pnpm install
pnpm desktop:dev      # tauri dev — launches Vite + native window
pnpm desktop:build    # production bundle per platform

Layout

  • src/ — React app (Vite bundles into dist/).
  • src-tauri/ — Rust backend. main.rs wires Tauri plugins.
  • vite.config.ts — port 1420, HMR on 1421, aliases to shared packages.

Secure Storage

Session tokens + user private keys live in Stronghold (tauri-plugin-stronghold). Local message history lives in SQLite (tauri-plugin-sql), DB file encrypted at rest.