Releases: davidtorcivia/floatview
FloatView v1.4.2
Download the installer for your platform below.
Windows: .msi installer or portable .exe. Requires Windows 10 or 11. WebView2 Runtime is installed automatically if missing.
macOS: .dmg universal binary (Apple Silicon + Intel).
FloatView v1.4.1
Download the installer for your platform below.
Windows: .msi installer or portable .exe. Requires Windows 10 or 11. WebView2 Runtime is installed automatically if missing.
macOS: .dmg universal binary (Apple Silicon + Intel).
FloatView v1.4.0
Download the installer for your platform below.
Windows: .msi installer or portable .exe. Requires Windows 10 or 11. WebView2 Runtime is installed automatically if missing.
macOS: .dmg universal binary (Apple Silicon + Intel).
FloatView v1.3.0
Download the installer for your platform below.
Windows: .msi installer or portable .exe. Requires Windows 10 or 11. WebView2 Runtime is installed automatically if missing.
macOS: .dmg universal binary (Apple Silicon + Intel).
FloatView v1.2.0
FloatView v1.2.0
Big under-the-hood cleanup: the Rust crate was split from a single 1,900-line main.rs into 14 focused modules, the config save pipeline learned how to shut down cleanly, and a round of review-driven fixes landed along the way.
Fixes
- Config save survives shutdown. The background saver thread is now joined via
RunEvent::Exitbefore the process exits, so bookmarks and window geometry always reach disk. The previous "fix" queued writes into a channel that got killed mid-flight. - Startup safety. Click-through mode is force-cleared on launch and written to disk synchronously so a user can never be trapped behind an invisible window after a crash-restart loop.
- Tray quit persists geometry. Quit from the tray now saves the current position/size before exiting.
- Media hotkeys target the right element.
window.__floatViewLastMedianow tracks the most recently interacted<video>/<audio>across the page, and the media tracker correctly waits fordocument.bodyinstead of silently no-opping on early-injected pages. - Bookmark add fixed. Dedup check runs before the 50-item limit, so re-bookmarking an existing URL at capacity no longer errors. Uses origin + path + query fuzzy matching server-side.
- Crop region persists across restarts via new
set_crop/clear_cropcommands. Clamped to[0, 1]with a 1% minimum and guarded against NaN/Inf (which would have panicked inf64::clamp). - Opacity startup race fixed. The deferred
set_window_opacitynow reads the current value from state at apply time rather than capturing it at spawn time, so adjustments made during the 300 ms boot window aren't overwritten. - Error-page detection no longer false-positives on blog posts titled "Error…". Title regex narrowed to specific Chrome/Edge failure states.
- Tray "Exit Click-Through Mode" menu item starts disabled and tracks lock state reliably via direct
MenuItem<Wry>storage. - Click-through exit from the global hotkey now logs at
error!level ifset_ignore_cursor_eventsfails — this is the safety-critical path that rescues a stuck user. - Clear-site-data is now a real WebView2 native call instead of best-effort JS cookie clearing.
New
- Crop / zoom region with persistence and resize-aware re-application.
- Expanded hotkey parser. Full alphabet (a–z), digits (0–9), F1–F12, arrow/nav keys, punctuation (
[ ] ; ' , . / \ \- =`), space/enter/tab/escape/backspace/delete, home/end/pageup/pagedown.
Internal
- Module split. Rust crate went from one 1,899-line
main.rsto 14 focused modules. Largest file is nowcommands.rsat ~460 lines. Main orchestrator is 246 lines.state.rs,config_io.rs,urls.rs,logging.rs,injection.rs,window_state.rs,actions.rs,hotkeys.rs,tray.rs,commands.rs
- Hotkey parser rewritten from an 80-line
matchinto a staticOnceLock<HashMap<&str, Code>>— faster to scan, easier to extend, testable in isolation. - Cooperative shutdown for the geometry auto-save thread via
AtomicBool: wakes every 1 s to check, saves every 30 s (unchanged disk cadence). - Dropped
<R: Runtime>generics throughout. The app is Wry-only and the generics were pure ceremony. - Tray exit-lock stores
MenuItem<Wry>directly instead of aBox<dyn Fn(bool) + Send + Sync>closure indirection. - Selective error logging in direct-action helpers —
warn!/error!on failed native calls so a stuck session has a diagnostic trail. - Test suite: 17 tests (up from 5). Covers URL normalization (including rejection of
file://,javascript:, empty, overlong), URL matching equivalence, config sanitize (clamps, dedup, bookmark limit, crop clamping, NaN-drop, minimized-geometry recovery), hotkey parsing (alphabet, digits, F-keys, punctuation, case-insensitive modifiers, unknown-key rejection,esc/escapealiasing), and window-geometry clamping. cargo clippy -- -D warningsclean.injection.jsgot a 20-item table of contents and section banners throughout — the 2,400-line file is now navigable.AGENTS.mdupdated to document the new module layout.
Windows: .msi installer or NSIS .exe. Requires Windows 10 or 11. WebView2 Runtime installs automatically if missing.
macOS: universal .dmg (Apple Silicon + Intel), notarized.
v1.1.0
What's New in v1.1.0
Search
Type anything in the URL bar that isn't a URL and it searches DuckDuckGo automatically.
Navigation Controls
Back, Forward, and Refresh buttons added to the control strip.
Bookmarks
Star icon bookmarks the current page. Right-click the star for your bookmarks list. Supports up to 50 bookmarks with deduplication.
Window Title
Title bar now shows the current page title, updating in real-time.
Crash Recovery
- Window position is auto-saved every 30 seconds
- Config file backed up (
.bak) before each write
Clear Site Data
New button in Settings to clear cookies, localStorage, and sessionStorage for the current site.
Bug Fixes
- URL tracking on navigation (popstate + polling)
- Dropdown interaction fixes (mutual dismissal between recent/bookmarks/snap)
- Error page detection improved for smart quotes
- Home button uses IPC with fallback
Cleanup
- Removed unused dependencies (
directories,webview2-com) - Removed dead config fields (
audio_device_id,launch_at_startup) - Migrated to structured logging (
tracing)
Full Changelog: v1.0.0...v1.1.0
FloatView v1.0.0
FloatView 1.0.0
New Features
- Snap to Corners — Quickly position the window at any screen corner or center via toolbar popup or context menu
- Auto-Refresh — Configurable page reload interval (1 min to 1 hour) in Settings
- Crop/Zoom Mode — Click-and-drag to select a page region, then zoom in to fill the viewport. Press Escape to exit
- Animated UI — All dropdowns, modals, and overlays now fade+scale in/out with spring curves
- Floating Close Button — Settings panel has a circular close button beside the panel
- Perceptual Opacity Slider — More control in the 60-100% range where users spend most time
UI Improvements
- Floating pill toolbar with rounded corners, inset from window edges
- macOS-style glassmorphism (neutral gray tint, soft shadows, no borders)
- Copper accent color for active states, macOS system green for toggles
- Thumbtack pin icon for always-on-top
- Wider opacity slider, properly centered URL bar text
- Borderless glass surfaces with diffused shadows
Bug Fixes
- Fixed error page recovery — URL bar, home button, and recent URLs now work on broken pages
- Fixed opacity slider dead zone and inverted perceptual curve
- Fixed WS_EX_LAYERED flag not removed at 100% opacity causing residual transparency on Windows
- Fixed tutorial modal event listener accumulation (memory leak)
- Throttled opacity slider IPC calls to ~30/sec
- Coalesced MutationObserver via microtask to reduce reflow spam
- Recent dropdown moved outside toolbar for proper backdrop-filter blur
v0.6.0
UI Redesign: Implemented a modern glassmorphism aesthetic across the entire application, including the main landing page and the floating control strip. The update includes new animated backgrounds, frosted glass panels, refined typography, and visually centered icons.
FloatView v0.5.0
FloatView v0.5.0
Highlights
- Fixed a startup geometry issue where the window could sometimes reopen tiny in the center of the main monitor.
- Added safer window-geometry persistence by skipping minimized/maximized states and unexpectedly small dimensions.
- Added startup-size normalization to restore the default 1280x720 window when bad minimized geometry was previously saved.
- Applied persisted click-through (locked) state at startup and synchronized injected UI visibility accordingly.
- Kept command token validation and URL sanitization paths in place for injected-page IPC safety.
Versioning
- Bumped app/project version metadata to 0.5.0 across Tauri, Cargo, and npm manifests.
FloatView v0.4.7
Download the installer for your platform below.
Windows: .msi installer or portable .exe. Requires Windows 10 or 11. WebView2 Runtime is installed automatically if missing.
macOS: .dmg universal binary (Apple Silicon + Intel).