zidane-gui
v0.0.1
Published
Zidane Desktop
Readme
zidane-gui
Standalone Electron app — a Claude Code-style chat shell using zidane.
Install
npm install -g zidane-guiA global install also registers a launcher app — ~/Applications/Zidane.app
on macOS (Spotlight, Raycast, Launchpad), a .desktop entry on Linux — via
postinstall. If you installed with --ignore-scripts or as root, run
zidane-gui install-app as your regular user. Plain zidane-gui launches
the GUI from a terminal.
Uninstalling: npm ≥ 7 does not run preuninstall scripts, so remove the
launcher app before removing the package — otherwise it lingers in your
launcher pointing at a deleted install:
zidane-gui uninstall-app
npm uninstall -g zidane-guiDev
bun install # from the monorepo root — gui is a workspace member
bun --cwd=gui run devRenderer runs on http://localhost:21200 (loaded into the Electron window automatically).
Scripts
Run from gui/ (or via bun --cwd=gui run <script> from the root).
bun run dev— electron-vite dev server with HMRbun run build— bundle main / preload / renderer intoout/bun run start— preview a built bundle (electron-vite preview)bun run typecheck—tsc --noEmiton both node and web projectsbun run test— vitest unit suite (pure logic — pairing, collapse, rehydrator, attachment ingest)bun run test:watch— vitest in watch modebun run test:e2e— Playwright end-to-end (runsbuildfirst)bun run test:visual— Playwright visual regression suite
Stack
- Electron 41 + electron-vite 5 (Vite 7 under the hood)
- React 19 renderer, UnoCSS for styling
- TipTap 3 for the chatbox editor
- Shiki 4 for syntax highlighting
react-markdown10 +remark-gfmfor transcript rendering- Radix
@radix-ui/react-tooltipfor tooltips - TypeScript 6
- SQLite via Electron's built-in
node:sqlite(no native modules) atapp.getPath('userData')/zidane-gui.db - Numbered SQL migrations in
migrations/applied at startup - Vitest 4 for unit tests on pure logic (no Electron / no React mount)
Notes
viteis held at v7 (latest v8 isn't yet supported byelectron-vite).@vitejs/plugin-reactis held at v5 for the same reason — v6 requires Vite 8.- This package lives in the
zidanemonorepo as thegui/bun workspace and consumes the in-repozidaneviafile:..(build it withbun run buildat the root first ifdist/is stale). - No native modules — SQLite is Electron's built-in
node:sqlite, so there is no ABI rebuild step.trustedDependencies(electron,esbuild) lets bun run their build scripts.
v1 scope
- Per-chat working folder (chosen before first send, remembered across launches)
- Flat sidebar of chats sorted by
updated_at DESC, rename + delete inline - Chatbox in the center; chat result rendering is intentionally deferred
