# Tauri wrapper for XMPP client

npm run tauri icon путь/к/картинке.png

Native desktop wrapper around the $mol XMPP client, packaged via [Tauri 2](https://tauri.app/).

## Prerequisites

1. **Rust toolchain** — install via [rustup](https://rustup.rs/).
2. **Node.js** — for the Tauri CLI.
3. **WebView2 runtime** (Windows 10+ has it built-in).
4. **mam** dev tool (already used for the $mol build).

```powershell
# from c:\dev\mam\xmpp
npm install
```

This pulls `@tauri-apps/cli` from package.json.

## Dev (live reload)

In **terminal 1** — start the $mol dev server at the repo root:

```powershell
cd c:\dev\mam
mam
```

This serves the app at `http://localhost:9080/xmpp/`.

In **terminal 2** — start Tauri pointing at that URL:

```powershell
cd c:\dev\mam\xmpp
npm run tauri:dev
```

A native window opens loading the XMPP client. Edits to `xmpp.view.ts` / `.view.tree` / `.view.css` rebuild the bundle (via `mam`) and the WebView reloads.

## Production build

```powershell
cd c:\dev\mam\xmpp
npm run tauri:build
```

The static frontend (`xmpp/index.html` + `xmpp/-/web.js` + locale json) is packed into the executable. Output in `src-tauri/target/release/bundle/`.

### Icons

`tauri build` needs PNG/ICO icons in `src-tauri/icons/`. Generate them once from any source PNG:

```powershell
npm run tauri icon path/to/source.png
```

This populates `src-tauri/icons/` with all the sizes referenced in `tauri.conf.json`.

## Notes

- `index.html` references `-/web.js` (the bundled file). Same path works in both `mam`'s dev server and the static Tauri bundle.
- CSP is disabled (`security.csp: null`) so the WebView can connect to arbitrary `wss://` XMPP servers.
- IndexedDB / Web Audio / clipboard paste / file picker — all standard WebView features, work out of the box.
