Releases: bnema/dumber
v0.28.0
This release brings a solid round of input, omnibox, and stability improvements, along with a new permission type and content blocker fixes.
What's new
Dead key and compose sequence support — keyboard routing has been fully rewritten with native dead key and compose sequence handling. Typing accented characters (é, ü, ñ…) via dead keys now works reliably in both the omnibox and page inputs, without double characters or lost focus.
Omnibox ghostwriter no longer eats letters — fast typing would sometimes cause the ghost suggestion to overwrite characters you had already typed. The ghostwriter has been rewritten from scratch: it now tracks whether a SetText call is programmatic or user-driven, so your keystrokes are always preserved.
Omnibox URL handling improvements — bare IPs (e.g. 192.168.1.1) are now navigated directly as HTTP, making local and Tailnet services easier to reach. Explicit row selections via keyboard or click always take priority over ghost suggestions.
Website data access permission — dumber now shows a permission prompt when a site requests access to another site's stored data (cookies, localStorage). You can grant or deny it per site, just like other permission types.
Content blocker handles large filter sets — WebKit has a hard 150k-rule limit per filter compilation unit. Filter files are now compiled individually rather than merged into one array, which was silently breaking ad blocking for users with large filter lists.
Favicon consistency fixes — stacked title bars now populate favicons from cache on creation, preventing blank icons when switching tabs or reattaching panes.
Crash and stability fixes — fixed a SIGABRT on permission-request signals during rapid tab teardown, hardened async callbacks against stale WebView references, and restored app shortcuts when a WebView has focus.
For the full list of changes including internal improvements, see the CHANGELOG.
Warning
Config migration: if you have a custom config.toml, run dumber config migrate once after upgrading — the engine settings have moved to a new [engine] section.
Installation
Linux (x86_64/amd64)
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/Dependencies
Arch Linux:
sudo pacman -S webkitgtk-6.0 gtk4
sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulseDebian/Ubuntu:
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire gstreamer1.0-vaapiFull Changelog: v0.27.2...v0.28.0
v0.27.2
v0.27.2 Release (amd64 Linux)
Fixed OAuth popup callback crashes and upgraded PureGoTK, which brings a solid overall stability boost !
Changelog
Bug Fixes
- 64a59d7: fix: avoid oauth auto-close on non-oauth popups (@bnema)
- dbb6e05: fix: disable oauth safety-timeout forced popup close (@bnema)
- 495353a: fix: dispatch oauth callback close to GTK main thread (@bnema)
- 89f346b: fix: dispatch oauth safety timeout close to GTK main thread (@bnema)
- 9244af4: fix: hide visible floating pane on Escape (@bnema)
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Dependencies
Arch Linux:
# Core WebKitGTK 6.0 and GTK4
sudo pacman -S webkitgtk-6.0 gtk4
# GStreamer for media playback
sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulse
# Hardware acceleration (choose based on your GPU)
# AMD: sudo pacman -S gstreamer-vaapi mesa
# NVIDIA: sudo pacman -S gstreamer-vaapi libva-nvidia-driver
# Intel: sudo pacman -S gstreamer-vaapi libva-intel-driver intel-media-driverDebian/Ubuntu:
# Core WebKitGTK and GTK4
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1
# GStreamer for media playback
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire
# Hardware acceleration
sudo apt install gstreamer1.0-vaapi va-driver-allFull Changelog: v0.27.1...v0.27.2
v0.27.1
CI Fix
This is a patch release to fix the Flatpak build workflow. No code changes.
For the full v0.27 release notes with all features and improvements, see v0.27.0
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Full Changelog: v0.27.0...v0.27.1
v0.27.0
Three big features this time: floating panes with profile shortcuts, a complete permissions system for media access, and automatic crash reporting. Plus 100+ stability improvements from a thorough cleanup pass.
Highlights
Floating Panes (Persistent Overlay)
The marquee feature of this release. A floating pane is an overlay workspace pane for quick-access pages like search, chat, email, or docs.
Alt+F- Toggle floating pane visibility (preserves state while hidden)- Configurable size - Default 82% width × 72% height
- Profile shortcuts - Define custom shortcuts to open specific URLs (e.g.,
Alt+Gfor Google,Alt+Mfor Gmail) - Independent sessions - Each profile maintains its own browser session
- Smart close behavior -
Ctrl+Wfully releases the floating pane; toggle just hides it
[workspace.floating_pane.profiles.gmail]
keys = ["alt+m"]
url = "https://mail.google.com"
desc = "Open Gmail in floating pane"See the Floating Pane Reference for complete documentation.
Website Permissions System
Full W3C-compliant permission management for media access:
- Custom permission dialog - Replace native GTK dialogs with a polished overlay UI
- Persistent decisions - "Always Allow" and "Always Deny" options saved per-origin
- WebRTC diagnostics - New diagnostic page for troubleshooting camera/mic issues
- Auto-allowed permissions - Screen sharing and device enumeration don't interrupt workflow
- Privacy-focused - All permissions stored locally in SQLite, nothing sent to servers
See Website Permissions for details.
Crash Reporting & Diagnostics
Automatic detection and reporting for unexpected browser exits:
- Auto-detection - Startup scans for abrupt session exits using marker files
- Rich crash reports - JSON + Markdown format with metadata, core-dump diagnostics, redacted logs
- CLI commands -
dumber crashes,dumber crashes show latest,dumber crashes issue latest - GitHub integration - One-command issue payload generation
- Smart pruning - Automatic cleanup keeps only 20 most recent reports
- Toast notifications - Visual alerts on startup when crashes are detected
Stability & Performance
Over 100 fixes from a dedicated multi-agent stability sweep (#162):
- WebView lifecycle hardening - Fixed pool shutdown races, termination consistency, signal cleanup
- Omnibox improvements - Stabilized ghost text, fixed async races, improved result ranking
- Session management - Better marker cleanup, accurate lock probing, robust exit classification
- Navigation robustness - Idempotent close operations, history cleanup hooks, safer back/forward
- Memory safety - Fixed atomic access to globals, eliminated GTK off-thread reads
- Retry logic - Broadened transient error detection for updater and network operations
Added
Features
- Floating pane - Persistent overlay with toggle (
Alt+F) and profile shortcuts - Floating pane profiles - Named URL profiles with custom shortcuts under
workspace.floating_pane.profiles - Permission system - WebRTC/media permission requests with custom popup overlay
- Permission storage - Origin-based SQLite persistence for "Always Allow/Deny" decisions
- WebRTC diagnostics - New diagnostic page for troubleshooting media device issues
- Crash reports - Automatic unexpected-close detection with JSON/Markdown reports
dumber crashesCLI - List, view, and generate GitHub issue payloads from crash reports- Crash UI notifications - Toast alerts on startup when crash reports exist
- Crash GitHub template - Structured issue template for crash submissions
- Session exit classification docs - Runbook for abrupt/clean exit classification and troubleshooting
- Installer prerelease support -
DUMBER_PRERELEASE=1andDUMBER_VERSION=<tag>env vars - Alt+hjkl navigation - Pane navigation works while omnibox is open
- Multiple GUI instances - Non-unique GTK app allows parallel launches
- Session/bootstrap tests - Coverage for startup markers, WebKit bootstrap, exit classification
- Omnibox async tests - Focused tests for ghost text safety and normalization
CLI
- Styled CLI commands - Aligned
config,crashes, andsessionssubcommands with TUI styles - Error output improvements - Prevent duplicate Cobra errors, better ANSI handling
- Sessions TUI height fix - Bounded list rendering for proper sizing
Changed
Core
- WebKit bindings - Updated to
puregotk-webkit v0.0.10with signal ID/type fixes - Lifecycle callbacks - Coalesced idle callbacks for better performance
- Dependencies - Bumped
go-sqlite3,bubbles, npm packages - Config validation - Added
workspace.floating_pane.*keys to schema - Config migration - Merges new action defaults without overwriting user-defined shortcuts
- Loading skeleton - Reduced logo size (512px → 256px), added version label, 32px spinner
- WebView reuse policy -
reusePolicyAggressivenow truly aggressive, relying onResetForPoolReuse
UX
- Omnibox behavior - Refined ghost ranking, dynamic result sizing based on pane height
- Omnibox keyboard UX - Chrome height scaling with GTK main thread debouncing
- Config normalization - Coerces invalid profile/appearance values to safe defaults
- Autocomplete architecture - Centralized completion flow and ghost positioning
Fixed
Critical
- Hover focus stealing - New panes lock focus until intentional mouse movement (fixes synthetic enter events)
- Stacked title desync - Titles sync immediately on
LoadCommittedand pane switch - Session marker accumulation - Proper cleanup of paired markers with
sweepPairedMarkers - WebView pool shutdown race - Re-check
closedflag after creation to prevent leaks - Updater transient errors - Broadened retryable error detection (ECONNRESET, ENETUNREACH, etc.)
- Session lock probe - Non-blocking flock correctly distinguishes active vs stale sessions
WebView & Navigation
- WebView termination - Consistent
DestroyWithPolicy(terminatePolicy)across pool operations - Pool metrics - Only incremented after successful
createWebView - Navigation safety - Added
CanGoBackguard, corrected back-forward-list signal disconnection - WebView lifecycle - Thorough reset of pooled WebView transient state
- Navigation idempotency -
NavigateUseCase.Close()now idempotent - Pane history cleanup - Proper cleanup hooks added
Omnibox
- Ghost suggestion stability - Reworked flow with stronger token guards, stale-callback protection
- GTK thread-safety - Removed unsafe off-thread widget reads
- Input correctness - Minimum typed input before ghost suggestions, leading space trimming
- Layout timing - Deferred auto-open until layout ready
- History edge-cases - Normalized FTS queries with slashes, capped
about:blankvisit inflation
Stability
- Retry delay clamping - Backoff never exceeds
retryMaxDelay - Crash page sanitization - Removed redundant double sanitization
- Skeleton version race - Atomic access via
atomic.Value - OAuth parent refresh - Marshalled reloads to GTK main loop
- Persistence safety - Positive visit-count delta enforcement, canceled snapshot timer on
SetReady - Logging dedup - Unified marker warnings, global cache-dir key
- History batching - Batched/capped visit increment fallback
- Filtering/snapshot races - Hardened error paths
- Crash page UX - "Stay on this page" button behavior fixed
Build & CI
- CI build - Added
-buildvcs=falseto CGO-disabled step - CI ownership - Avoid git in
verify_purego_only.shto fix dubious ownership - WebUI linting - Pinned eslint to v9 for peer compatibility
- Download MIME - Preferred extensions map for platform-stable lookups
Security
- External scheme guard - Restricted launches to user-gesture initiated navigations
Statistics
- 122 commits since v0.26.2
- 3 major features (floating panes, permissions, crash reporting)
- 100+ stability fixes from dedicated multi-agent sweep
- 10+ docs added/updated
Upgrade Notes
This is a standard minor version upgrade. No breaking changes or manual migration required.
New config keys for floating panes will be added on first launch. You'll see a notification if new settings are available—run dumber config migrate to add them (existing settings are never modified).
Documentation
Full Changelog: v0.26.2...v0.27.0
v0.26.2
v0.26.2 Release (amd64 Linux)
Released on 2026-01-26T06:04:55Z
Changelog
Bug Fixes
- c7a34e5: fix: cap about:blank visit count to 1 in history (@bnema)
- 3cd9d2e: fix: clear ghost text on position timeout instead of forcing bad placement (@bnema)
- 43b8409: fix: defer omnibox auto-open until GTK layout completes (@bnema)
- c7a2676: fix: improve omnibox width calculation for unallocated parents (@bnema)
- 37c9b58: fix: normalize FTS queries with slashes (@bnema)
- d8bf31c: fix: prevent pango layout memory leak in ghost text computation (@bnema)
- 9cc8eee: fix: stabilize omnibox ghost rendering (@bnema)
- dddc3da: fix: suppress hover focus when new pane is created (@bnema)
Refactoring
- 92a7937: refactor: centralize autocomplete completion (@bnema)
- 01028b0: refactor: split ghost positioning helpers (@bnema)
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Dependencies
Arch Linux:
# Core WebKitGTK 6.0 and GTK4
sudo pacman -S webkitgtk-6.0 gtk4
# GStreamer for media playback
sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulse
# Hardware acceleration (choose based on your GPU)
# AMD: sudo pacman -S gstreamer-vaapi mesa
# NVIDIA: sudo pacman -S gstreamer-vaapi libva-nvidia-driver
# Intel: sudo pacman -S gstreamer-vaapi libva-intel-driver intel-media-driverDebian/Ubuntu:
# Core WebKitGTK and GTK4
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1
# GStreamer for media playback
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire
# Hardware acceleration
sudo apt install gstreamer1.0-vaapi va-driver-allFull Changelog: v0.26.1...v0.26.2
v0.26.1
v0.26.1 Release (amd64 Linux)
Released on 2026-01-25T04:51:25Z
Changelog
Features
Bug Fixes
- e644af2: fix(docs): address review feedback from bots (@bnema)
- 75cd777: fix: popups not working in split panes, consolidate WebView callback setup (@bnema)
Documentation
Other Changes
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Dependencies
Arch Linux:
# Core WebKitGTK 6.0 and GTK4
sudo pacman -S webkitgtk-6.0 gtk4
# GStreamer for media playback
sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulse
# Hardware acceleration (choose based on your GPU)
# AMD: sudo pacman -S gstreamer-vaapi mesa
# NVIDIA: sudo pacman -S gstreamer-vaapi libva-nvidia-driver
# Intel: sudo pacman -S gstreamer-vaapi libva-intel-driver intel-media-driverDebian/Ubuntu:
# Core WebKitGTK and GTK4
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1
# GStreamer for media playback
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire
# Hardware acceleration
sudo apt install gstreamer1.0-vaapi va-driver-allFull Changelog: v0.26.0...v0.26.1
v0.26.0
This release focuses on improving omnibox UX with inline ghost text autocompletion and better search result ranking. I also rewrote the keybindings configuration system for easier remapping (especially for non-QWERTY keyboards) and added a visual editor in dumb://config to customize shortcuts live. Plus of course a bunch of bug fixes.
Upgrade Notes
Recommended: Delete your
config.tomland restart dumber to regenerate a fresh config with the new keybinding structure and alphabetically sorted sections. Your settings will reset to defaults, but you can reconfigure keybindings via the new visual editor atdumb://config→ Keybindings tab.
Added
- Visual keybindings editor: New Keybindings tab in
dumb://configallows editing all keyboard shortcuts via a visual UI. Supports key capture, reset to defaults, and per-binding reset. Fixes #123. - Keybindings hot reload: Changed keybindings take effect immediately without restarting the browser.
- Ordered config file: Config file sections are now written in alphabetical order for better readability and deterministic output.
- Inline ghost text autocompletion: Omnibox now shows inline ghost text suggestions from history as you type. Accept with Right Arrow (full) or Ctrl+Right (word). Properly aligned with entry text.
- Omnibox click-outside-to-close: Omnibox automatically closes when clicking outside its bounds.
- GTK/WebKit log capture: New
logging.capture_gtk_webkit_logsconfig option to capture GTK and WebKit logs for debugging. - Startup performance tracing: Added startup trace logging for cold start performance analysis and optimization.
Changed
- Simplified keybinding syntax: Keybindings now use symbol syntax (
[,],{,}) instead of verbose GTK names (bracketleft,braceleft). Fixes #122. - BREAKING: Global shortcuts config structure:
workspace.shortcutschanged from individual string fields to unifiedActionsmap withActionBinding(keys + description). Existing custom shortcuts in config.toml will be replaced with defaults. Use the new Keybindings UI to reconfigure. - Keybindings clean architecture: Refactored keybindings handler to follow ports/adapters pattern. Business logic moved from handler to use cases, config access via gateway adapter instead of global singleton.
- Deferred startup initialization: Non-critical initialization (WebView pool prewarm, etc.) now deferred until after first navigation starts for faster cold start.
- Omnibox search ranking: Improved domain matching boost and FTS5 period handling for better search result relevance.
Fixed
- Config save/read race condition: Fixed UI scale and other config values returning stale data after save. Implemented atomic file writes (temp file + rename) and
skipNextReloadflag to prevent fsnotify-triggered reload from overwriting correct in-memory config with stale viper cache. - WebUI lint warnings: Added ESLint Svelte plugin and resolved 33 lint errors and 14
anytype warnings across all components. Createddumber.d.tsfor proper TypeScript types for WebKit bridge communication. - Session snapshot FK constraint: Fixed SQLite foreign key constraint violation when snapshot service tried to save before session was persisted to database. Added ready flag and callback notification pattern.
- Stacked pane index out of bounds: Fixed crash when domain model and UI got out of sync during stacked pane operations. Added bounds checking and proper rollback when UI updates fail.
- Noisy gesture navigation logs: Mouse button back/forward navigation errors (expected when no history) now log at debug level instead of error level.
- Omnibox ghost text race conditions: Fixed stale ghost text appearing due to race conditions. Query now passed through the entire autocomplete chain.
- Omnibox ghost text clipping: Ghost text now properly clips to entry bounds and aligns vertically with input text.
- Ghost text on history scroll: Disabled ghost text suggestions when scrolling through history with arrow keys after user has typed.
- Popup WebView hierarchy: Fixed popup WebViews not being inserted into GTK hierarchy before create signal returns.
- OAuth popup timeout: Added 30-second safety timeout for OAuth popup handling to prevent stuck popups.
- External page background: Reset WebView background to white for external pages to prevent dark theme color bleeding into light-themed sites.
- Localhost URL normalization: Fixed localhost URL handling and improved download handler architecture for cleaner code.
- Svelte 5 Proxy serialization: Fixed keybinding bridge serialization to handle Svelte 5 Proxies and added conflict detection.
Full Changelog: v0.25.0...v0.26.0
v0.25.0
v0.25.0 Release
This release adds file download handling with toast notifications, new keyboard shortcuts, and numerous fixes for Flatpak/AUR installs and SPA navigation.
What's New
Added
- File download handling: Downloads from websites now save to the user's download directory with toast notifications for start/complete/failed states. Configurable via
downloads.path(defaults to$XDG_DOWNLOAD_DIRor~/Downloads). - Print shortcut:
Ctrl+Shift+Popens the print dialog for the current page. Fixes #99.
Changed
- Flatpak files location: Moved flatpak-related files to
flatpak/directory. Fixes #101. - Navigation shortcuts:
Ctrl+Left/Rightnow triggers back/forward navigation,Alt+Left/Rightmoves focus between panes. Fixes #98. - Update notification: Simplified update toaster message for AUR/Flatpak users - no longer shows "manual install required". Fixes #109.
Fixed
- SPA mouse navigation: Fixed unreliable back/forward mouse button navigation in Single Page Applications. WebKit's
BackForwardListdoesn't track JavaScript History API (pushState/replaceState) navigation. Now uses JavaScripthistory.back()/history.forward()as fallback when WebKit native navigation is unavailable. - Accent picker freeze: Fixed UI freeze when selecting an accent by pressing Enter or Escape. The deadlock was caused by the callback (which calls
Hide()) being invoked while holding the mutex thatHide()also needs to acquire. - Stacked pane title mismatch: Fixed title bar showing wrong page title after closing panes in a stack. Refactored stacked pane management to use proper use cases, ensuring domain model stays in sync with UI.
- Flatpak favicons: Fixed favicons not displaying in omnibox for Flatpak installs by ensuring cache directory exists before saving. Fixes #105.
- Flatpak desktop launcher: Fixed .desktop file not launching application from app launchers by adding locale environment variables. Fixes #104.
- Flatpak update notifications: Skip GitHub update checks for Flatpak and AUR installs (use package manager instead). Fixes #107.
- Active border with stacked panes: Hide active pane border when only one pane area is visible (stacked panes count as one). Fixes #108.
- Setup command for AUR:
dumber setupnow detects AUR and Flatpak installations and locates the correct .desktop file. Fixes #102.
Removed
- dev/ directory: Removed development scripts directory. Fixes #103.
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Arch Linux (AUR)
yay -S dumber-browser-bin # Pre-built binary (recommended)
yay -S dumber-browser-git # Build from sourceFlatpak
wget https://github.com/bnema/dumber/releases/latest/download/dumber.flatpak
flatpak install --user dumber.flatpakDependencies
Arch Linux:
sudo pacman -S webkitgtk-6.0 gtk4 gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulseDebian/Ubuntu:
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1 gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewireFull Changelog: v0.24.0...v0.25.0
v0.24.0
v0.24.0 Release
This release focuses on UX polish and stacked pane improvements, including auto-copy on selection (zellij/tmux-style), smarter font detection, and multiple fixes for stacked pane behavior and focus navigation.
What's New
Added
- Auto-copy on selection: Text selected in web pages is automatically copied to the clipboard (like zellij/tmux). Shows brief "Copied to clipboard" toast notification. Configurable via
clipboard.auto_copy_on_selection(default: true). Fixes #83. - Font availability detection: On first run, detects available system fonts using fontconfig (
fc-list) and selects the best font from a fallback chain instead of hardcodingFira Sans/Fira Code. Fallback chains: sans-serif (Fira Sans, Noto Sans, DejaVu Sans, Liberation Sans, FreeSans), serif (Noto Serif, DejaVu Serif, Liberation Serif, FreeSerif), monospace (Fira Code, JetBrains Mono, Noto Sans Mono, DejaVu Sans Mono, Liberation Mono, FreeMono). Falls back to generic CSS fonts if none available. Fixes #85. - Stacked pane close buttons: Close buttons in stacked pane title bars allow closing individual panes directly. Includes proper signal cleanup on removal.
- AUR git package CI: Automated CI workflow to publish
dumber-browser-gitAUR package on push to main branch.
Changed
- Flatpak runtime: Bumped to GNOME 49 runtime.
- Focus method refactored:
Focus()now delegates toApplyFocusChange()to ensure stack index is updated when focusing stacked panes.
Fixed
- Flatpak locale crash: Attempted fix for crash on systems with certain locale configurations by adding proper locale data to the Flatpak bundle.
- Stacked pane vertical splits: Vertical splits from stacked panes now correctly split around the entire stack instead of just the active pane.
- Pane border focus: Fixed stale border remaining on previously hovered pane when using keyboard navigation to switch focus. Fixes #89.
- Geometric focus navigation: Fixed focus jumping to wrong pane when navigating left/right in complex layouts. Navigation now prioritizes panes at the same vertical level (for left/right) or horizontal level (for up/down).
- Link status overlay auto-hide: Link URL overlay now automatically hides after 10 seconds of inactivity instead of staying visible indefinitely. Timer resets when hovering new links. Fixes #82.
- Omnibox multi-word search: History search now matches all words in query (AND logic) and searches both URL and title fields. Prefix matching enabled (e.g., "git iss" matches "github.com/issues"). FTS5 special characters are now sanitized to prevent syntax errors. Results interleave URL and title matches for better balance. Fixes #87.
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Arch Linux (AUR)
yay -S dumber-browser-bin # Pre-built binary (recommended)
yay -S dumber-browser-git # Build from sourceFlatpak
wget https://github.com/bnema/dumber/releases/latest/download/dumber.flatpak
flatpak install --user dumber.flatpakDependencies
Arch Linux:
sudo pacman -S webkitgtk-6.0 gtk4 gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulseDebian/Ubuntu:
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1 gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewireFull Changelog: v0.23.3...v0.24.0
v0.23.3
v0.23.3 Release (amd64 Linux)
Released on 2025-12-31T05:34:59Z
Changelog
Bug Fixes
- 40489cc: fix(aur): update package path for new tarball structure (@bnema)
- e605331: fix(ci): add concurrency to AUR workflow to prevent duplicate runs (@bnema)
- 90f0770: fix(ci): use tag-specific concurrency group for AUR workflow (@bnema)
Installation
Linux (x86_64/amd64)
# Download latest release
wget https://github.com/bnema/dumber/releases/latest/download/dumber_linux_x86_64.tar.gz
# Extract and install to ~/.local/bin (enables auto-updates)
tar -xzf dumber_linux_x86_64.tar.gz
mkdir -p ~/.local/bin
install -m 755 dumber_*/dumber ~/.local/bin/
# Ensure ~/.local/bin is in your PATH (add to ~/.bashrc or ~/.zshrc if needed)
# export PATH="$HOME/.local/bin:$PATH"Dependencies
Arch Linux:
# Core WebKitGTK 6.0 and GTK4
sudo pacman -S webkitgtk-6.0 gtk4
# GStreamer for media playback
sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-plugin-pipewire pipewire pipewire-pulse
# Hardware acceleration (choose based on your GPU)
# AMD: sudo pacman -S gstreamer-vaapi mesa
# NVIDIA: sudo pacman -S gstreamer-vaapi libva-nvidia-driver
# Intel: sudo pacman -S gstreamer-vaapi libva-intel-driver intel-media-driverDebian/Ubuntu:
# Core WebKitGTK and GTK4
sudo apt install libwebkitgtk-6.0-4 libgtk-4-1
# GStreamer for media playback
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire
# Hardware acceleration
sudo apt install gstreamer1.0-vaapi va-driver-allFull Changelog: v0.23.2...v0.23.3