Claude/review architecture alternatives 0nm lw#127
Merged
thumpersecure merged 5 commits intoFeb 19, 2026
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.