Skip to content

Releases: davidtorcivia/floatview

FloatView v1.5.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 23:42

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

FloatView Nightly Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jun 23:39

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

Choose a tag to compare

@github-actions github-actions released this 10 Jun 16:15

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

Choose a tag to compare

@github-actions github-actions released this 29 May 04:53

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

Choose a tag to compare

@github-actions github-actions released this 28 May 23:08

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

Choose a tag to compare

@github-actions github-actions released this 24 Apr 03:51

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

Choose a tag to compare

@github-actions github-actions released this 24 Apr 02:28

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

Choose a tag to compare

@github-actions github-actions released this 24 Apr 02:04

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

Choose a tag to compare

@github-actions github-actions released this 22 Apr 18:57

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

Choose a tag to compare

@github-actions github-actions released this 15 Apr 02:46

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::Exit before 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.__floatViewLastMedia now tracks the most recently interacted <video> / <audio> across the page, and the media tracker correctly waits for document.body instead 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_crop commands. Clamped to [0, 1] with a 1% minimum and guarded against NaN/Inf (which would have panicked in f64::clamp).
  • Opacity startup race fixed. The deferred set_window_opacity now 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 if set_ignore_cursor_events fails — 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.rs to 14 focused modules. Largest file is now commands.rs at ~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 match into a static OnceLock<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 a Box<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/escape aliasing), and window-geometry clamping.
  • cargo clippy -- -D warnings clean.
  • injection.js got a 20-item table of contents and section banners throughout — the 2,400-line file is now navigable.
  • AGENTS.md updated 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.