Platforms
- Linux and macOS support. Phase 0 made all non-UI code build on both; the UI followed. Previously Windows-only.
- Headless build (--no-default-features) — no window, driven entirely through the web interface.
UI — replaced Win32 with Slint
The whole front end was rebuilt on Slint (https://slint.dev): one window on all three platforms. Preceded by a throwaway spike (spike/slint-list, docs/slint-spike/) to prove the torrent list before committing.
- Torrent list: 16 columns, rendered progress bar, click-to-sort, multi-select
- Custom-drawn context menu (the native one wouldn't size correctly)
- Details tabs: Overview + piece-availability bar, Files with per-file toggles, Peers with GeoIP flags, Trackers grouped by announce tier
- Preferences, About, Add torrent/magnet, Create torrent, close prompt, tray icon
- Live language switching — no restart
- src/ui/torrentfile.rs — new .torrent parser so the Add dialog shows the real file list before anything is added
Web interface (new)
- Actix server, HTTPS with self-signed-by-default TLS, Argon2id + HTTP Basic; refuses to listen off-loopback in plaintext
- Read + write endpoints: session, torrents, add/pause/resume/recheck/remove/move/label, filesystem browser
- Single-file embedded web remote (src/webui/index.html), dark/light/mobile
- CLI: --webui, --set-web-password, --webui-status, --webui-set
- Migration 20260821000000_web_api_settings.sql
Notifications
- Toasts themselves predate 0.1.2 — new is the Preferences toggle (20260822000000_notification_settings.sql), on by default so existing users don't lose them silently
Packaging & CI (this session)
- .github/workflows/release.yml — manual; builds NanoTorrent--Setup.exe (NSIS + UPX), .deb, .rpm, .dmg, drafts a GitHub release with all four attached, then deletes the duplicate artifacts
- .github/workflows/ci.yml — 6-way build/test matrix (3 platforms × GUI/headless), now manual-only
- packaging/linux/ — desktop entry + icon installer (Wayland needs it for the window icon)
- docs/BUILDING.md
Removed
- src/ui_native/ — the entire Win32 UI (7,345 lines), plus the ui-native feature, native-windows-gui, and 6 unneeded winapi modules
- src/bittorrent/transform.rs — superseded by mse.rs
- Dead code: Database::execute, get_dht_bootstrap_nodes, PeerEntry::fetched_chunks, 11 stale #[allow(dead_code)] masks
- Fixed a real break this uncovered: AppContext.web had left the ui-native config non-compiling
Docs
- 108 doc blocks added; all 28 dangling ui_native references rewritten
- Baseline screenshot sets: docs/ui-baseline/, docs/slint-ui/, docs/web-remote/
- Tooling: tools/screenshot.ps1, tools/api/