Releases: davidtorcivia/floatview
Release list
FloatView v1.5.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 Nightly
Rolling nightly build from the latest commit on main. This pre-release is overwritten on every push.
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.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).
FloatView v1.4.6
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.5
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.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.