SwitchHosts! is an App for managing hosts file, it is based on Electron, React, Ant Design, CodeMirror, etc.
Features:
Switch hosts quickly
Syntax highlight
Remote hosts
Switch from system tray
macOS only: Alfred workflow support
What's new in version 5.0.0
Core Architecture Migrated to Tauri 2: Migrated from an Electron main process to a Rust/Tauri backend, added the complete src-tauri implementation, and removed the old Electron main process code, packaging scripts, and electron-builder workflow.
New v5 Data Structure: Data is now stored in separate layers: manifest.json, entries/, trashcan.json, internal/config.json, and internal/histories/. README backup instructions were updated accordingly.
Compatible Migration, Import, and Export: Supports first-run migration from legacy PotDb data; manual import now supports v3, v4, and v5 backups; exports now use the v5 backup JSON format with timestamped filenames.
System Hosts Writing Reworked: Switched to native system privilege flows: Security.framework on macOS, pkexec on Linux, and UAC self-elevation on Windows. The in-app sudo password input was removed.
New/Reworked Auto Update System: Integrated Tauri updater, with background update checks, manual download/install, proxy support for update requests, and generated/published latest.json.
Rebuilt CI and Release Pipeline: Added GitHub Actions CI and Release workflows. Releases now run the full test suite before publishing and support signed/validated builds for macOS universal/arm64/x64, Windows x64/x86/arm64, and Linux x64/arm64.
Editor Upgraded to CodeMirror 6: Improved large-file performance, syntax highlighting, line numbers, read-only mode, history snapshot rendering, and cursor/display stability.
Improved System Tray Behavior: Fixed macOS focus handling, multi-monitor positioning, rounded corners, and interaction issues.
Major Main UI Redesign: Added a left activity bar, Hosts/Trashcan view switching, resizable left and right panels, a right-side details panel, centered title bar, frameless window, and cross-platform window controls.
Right Details Panel: Shows the current hosts type, rule count, remote URL, refresh interval, last refresh time, group contents, and folder selection mode; trashcan items can be restored or permanently deleted from the panel.
Unified Trashcan Experience: Moved the trashcan entry to the left sidebar, with item count display, restore, permanent delete, clear, and details panel operations.
Preferences Reworked: Split preferences into General, Commands, Proxy, and Advanced tabs. General and Advanced settings auto-save, while Commands and Proxy keep manual save status feedback.
New Preference Options: Added system theme by default, launch at login, and refresh remote hosts on startup.
Enhanced Proxy Support: Added socks5 proxy protocol support, and both remote hosts refresh and app updates can now use proxy settings.
Local HTTP API Preserved and Migrated: Reimplemented the 50761 API with Rust/Axum, supporting /api/list and /api/toggle; when port binding fails, the setting is rolled back and the user is notified.
Localization and Copy Updates: Organized and sorted locale keys, fixed language preference fallback display, localized menus and find window text, and updated multilingual README screenshots and v5 documentation.
Stability Fixes: Fixed concurrent config writes, HTTP API startup failure state, invisible window after hiding the Dock icon, stuck hover state after drag, titlebar/tray switch synchronization, long title truncation, loading screen lockups, and more.
Expanded Test Coverage: Added Playwright e2e tests, Rust tests, and frontend component/model unit tests covering preferences, import/export, remote hosts, local hosts, trashcan, title bar, tree operations, find/replace, and more.
Toolchain Upgrades: Upgraded to Vite 8, TypeScript 6, Mantine 9, Vitest 4, and Tauri 2.11, and introduced ESLint 10 with naming convention rules.
Development and Build Command Changes: Development now uses npm run tauri:dev; production builds use npm run tauri:build; build artifacts are now located under src-tauri/target/release/bundle/.
Removed Legacy Electron Content: Removed src/main/*, the Electron updater, old upload/packaging scripts, old main-process tests, and vite.main.config.mts.