Skip to content

Claude/review architecture alternatives 0nm lw#127

Merged
thumpersecure merged 5 commits into
mainfrom
claude/review-architecture-alternatives-0nmLW
Feb 19, 2026
Merged

Claude/review architecture alternatives 0nm lw#127
thumpersecure merged 5 commits into
mainfrom
claude/review-architecture-alternatives-0nmLW

Conversation

@thumpersecure
Copy link
Copy Markdown
Owner

No description provided.

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.

https://claude.ai/code/session_015EF4PRbxogid2koYhyGP1Y
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
…ile 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
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

https://claude.ai/code/session_015EF4PRbxogid2koYhyGP1Y
Resolves "added in both" conflicts across all 6 view files in favor of
our branch, which contains the correct fixes:
- EntityType::Coordinate (not Coordinates)
- Removed EntityType::SocialHandle (non-existent variant)
- move closure for type_color borrow
- Row::with_children() instead of Wrapping::push()
- Removed unused imports (Length, keyboard, ghost_btn_style)
- Removed dead RowWrap trait

https://claude.ai/code/session_015EF4PRbxogid2koYhyGP1Y
@thumpersecure thumpersecure merged commit 9206fcd into main Feb 19, 2026
@thumpersecure thumpersecure deleted the claude/review-architecture-alternatives-0nmLW branch February 19, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants