Commit 9206fcd
Claude/review architecture alternatives 0nm lw (#127)
* feat: replace React/Tauri/NPM frontend with pure Rust iced 0.13 GUI
Eliminates all NPM/JavaScript dependencies by migrating the Spin v12
frontend from React + Tauri to a native Rust GUI using iced 0.13 and
wry 0.44 for the embedded browser WebView.
Changes:
- Cargo.toml: remove tauri/tauri-build, add iced 0.13 + wry 0.44 + dirs 5
- build.rs: replace tauri_build::build() with empty stub
- storage/mod.rs: init(&Path) + get_store() without AppHandle
- cef/mod.rs: init(&Path) instead of &AppHandle
- hivemind, mcp, session, investigation: init() with no params
- All 9 command modules: strip #[tauri::command] macros, remove AppHandle
- commands/identity.rs: use core::identity::ProxyConfig (no local dup)
- lib.rs: rewrite as iced::application() runner using dirs crate
- main.rs: fn main() -> iced::Result
- New ui/ module: app.rs (SpinApp), state.rs, messages.rs, theme.rs
- New ui/views/: layout, title_bar, tab_bar, nav_bar, browser_view,
side_panel, identity, hivemind, mcp, osint, privacy, investigation,
settings — replacing all React .tsx components
- Delete: app/src/ (React frontend), package.json, vite, tsconfig, etc.
Result: zero NPM packages, pure Rust, single Cargo build.
* fix(install): remove all NPM/Node/Tauri-CLI references from installer
The installer was still written for the old React/Tauri/NPM stack.
Updated for the pure Rust iced 0.13 migration:
- Remove Node.js version check and install_node_* functions
- Remove Tauri CLI check/install (no longer needed — plain cargo)
- Remove MIN_NODE_VERSION variable
- Add CARGO_DIR ($APP_DIR/src-tauri) and BIN_PATH variables
- Step 4: cargo fetch instead of npm install
- Step 5: cargo check instead of tsc + npm run build
- Step 6 (shortcut): builds release binary, Exec points to binary
- verify_install: checks Cargo.toml, Cargo.lock, release binary
(no more package.json / node_modules / dist checks)
- check_for_updates: reads version from Cargo.toml, not package.json
runs cargo fetch after git pull instead of npm install
- Menu option 2 (update): cargo fetch, no npm
- Menu option 6: replaced "frontend-only fallback" with build binary
- Desktop shortcut icon: assets/icon.png (repo root)
- macOS hint: sudo cp binary to /usr/local/bin
- Banner updated with "Zero NPM · Pure Rust · iced 0.13 · wry"
https://claude.ai/code/session_015EF4PRbxogid2koYhyGP1Y
* fix: update READMEs for pure Rust stack and fix entity_extractor compile error
- Rewrite root README.md: replace Tauri/React/NPM badges and docs with
iced 0.13 + wry 0.44; fix stale anchor links; remove broken web app link;
update Quick Start, Prerequisites, Installation, Tech Stack, and
Security Model sections; update Acknowledgments
- Rewrite app/README.md: replace npm Quick Start and Tauri/React/Redux
tech stack with cargo-based commands and iced 0.13 architecture diagram
- Fix entity_extractor.rs: change URL_REGEX raw string from r"..." to
r#"..."# so the \" inside the character class does not prematurely
terminate the raw string, eliminating 25 cascade compile errors
https://claude.ai/code/session_015EF4PRbxogid2koYhyGP1Y
* fix(ui): fix 7 compile errors and clean up 33 unused-import warnings
hivemind.rs:
- EntityType::Coordinates → EntityType::Coordinate (correct variant name)
- Remove EntityType::SocialHandle arm (variant does not exist)
- Add move to container style closure to satisfy borrow checker
(iced::Color is Copy so move is safe)
- Remove unused Length import
mcp.rs:
- Replace row![].spacing(4).wrap() + btns.push() pattern with
Row::with_children(Vec<Element>) — iced 0.13 Row::wrap() returns
row::Wrapping which has no push() method
- Remove dead RowWrap trait and impl
- Remove unused Length and ghost_btn_style imports
layout.rs, nav_bar.rs, osint.rs, privacy.rs:
- Remove unused Length import from each
- Remove unused keyboard import from nav_bar.rs
- Remove unused ghost_btn_style import from osint.rs
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 714942d commit 9206fcd
6 files changed
Lines changed: 20 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
125 | | - | |
| 125 | + | |
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
129 | | - | |
130 | 129 | | |
131 | 130 | | |
132 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| |||
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
53 | 55 | | |
54 | 56 | | |
55 | 57 | | |
| |||
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
7 | 6 | | |
8 | | - | |
| 7 | + | |
9 | 8 | | |
10 | 9 | | |
11 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
0 commit comments