Changelog
All notable changes to this project will be documented in this file.
[Unreleased]
[0.3.0] - 2025-01-11
Added
- WebKit memory controls (opt‑in):
- Env vars to tune memory/perf trade‑offs without code changes:
DUMBER_CACHE_MODEL,DUMBER_ENABLE_PAGE_CACHEDUMBER_ENABLE_MEMORY_MONITORING,DUMBER_MEMORY_LIMIT_MB,DUMBER_MEMORY_POLL_INTERVALDUMBER_MEMORY_CONSERVATIVE,DUMBER_MEMORY_STRICT,DUMBER_MEMORY_KILLDUMBER_GC_INTERVAL,DUMBER_RECYCLE_THRESHOLD
- Version‑guarded CGO wrappers for memory pressure and GC hooks; safe no‑ops on unsupported WebKitGTK builds.
- Env vars to tune memory/perf trade‑offs without code changes:
- Find in page (Ctrl/Cmd+F):
- Omnibox refactored into a reusable component with dedicated "find" mode.
- Highlighting: yellow for all matches; active match in orange for clarity.
- Match list with context (right side stops at nearest punctuation: . , ; : -).
- Navigation UX:
- ArrowUp/Down move selection and scroll the overlay list (page scroll disabled while open).
- Enter centers on the active match and closes; Shift+Enter goes to previous; Alt+Enter centers without closing.
- Hover focuses input and selects list items; click outside closes the overlay.
- Faded overlay with subtle blur when reviewing matches; opacity restores on input focus/typing.
- Programmatic API:
OpenFind(initial),FindQuery(q),CloseFind()onWebView.
Changed
- Performance‑first defaults retained:
- Cache model set to “WebBrowser”, page cache enabled, DevTools available.
- No implicit memory pressure or GC enabled by default; all memory tuning is opt‑in.
Removed
- Deprecated offline app‑cache calls eliminated (no‑ops) to avoid warnings and brittle builds.
Fixed
- Homepage Recent History layout:
- Show single-line entries as “{Title} – {Domain} – {URL}”.
- Truncate long URLs with a gradient fade; prevent horizontal overflow.
- Adjusted styling so URL is darker for readability.
- Search shortcuts and config interop:
- Backend SearchShortcut now serializes
url/descriptionwith JSON tags. - Frontend normalizes field casing and extracts base URLs, handling
%sand{query}templates. - Omnibox shortcut parsing now URL-encodes queries and supports
%splaceholders.
- Backend SearchShortcut now serializes
- Input and navigation reliability (GTK4/WebKitGTK 6):
- Capture-phase key controller to ensure accelerators fire consistently.
- Do not consume normal left/right clicks; only mouse buttons 8/9 trigger back/forward.
- Added Alt+ArrowLeft/Right navigation and enabled two-finger swipe back/forward when supported.
- Added Ctrl+scroll zoom in/out; refined accelerator matching so Ctrl− works across layouts.
- Removed layout-specific hacks; added diagnostic logs for raw minus key events.
- Zoom persistence:
- Added WebView zoom-changed hook; save per-domain zoom to SQLite on every change.
- Log on successful save: “saved X.XX for domain.tld” and on load: “loaded X.XX for domain.tld”.
- Load and log initial zoom level on startup and on every navigation.
- Build/dev ergonomics:
- Makefile loads
.env.local; supports overridingGOMODCACHE,GOCACHE,GOTMPDIRfor sandboxed builds.
- Makefile loads
- WebKit CGO hardening and API compatibility:
- Apply memory pressure settings to
WebKitNetworkSession(correct signature) when enabled. - Guarded C wrappers remove deprecation warnings across header variants; builds succeed on WebKitGTK 6.
- Apply memory pressure settings to
[0.2.0] - 2025-09-10
Added
- WebKitGTK 6 (GTK4) migration for the built‑in browser window:
- WebView constructed via
g_object_new(WEBKIT_TYPE_WEB_VIEW, …)with a freshWebKitUserContentManager. WebKitNetworkSessionwith persistent cookies (SQLite) and cache directories.
- WebView constructed via
- Native UCM messaging restored via
script-message-received::dumber(JSCValue*), removing the JS fallback bridge. - Rendering mode controls:
- CLI flag
--rendering-mode=auto|gpu|cpuandDUMBER_RENDERING_MODEenv. - In‑app status endpoint
dumb://homepage/api/rendering/status.
- CLI flag
- Native zoom shortcuts at the WebKit layer (Ctrl/Cmd+=, +, −, 0) and GTK4 input controllers for keyboard/mouse.
- AZERTY keyboard fix: treat underscore as minus for zoom‑out.
- Runtime theme synchronization: watch GTK
gtk-application-prefer-dark-themeand update page color‑scheme live. - Makefile target
check-webkitto printpkg-configversions of GTK4/WebKitGTK 6.0/JSC 6.0. - Documentation updates:
- README now targets WebKitGTK 6 (GTK4) and lists GStreamer package requirements for Arch and Debian/Ubuntu.
- CLAUDE notes updated with migration status, GPU/Vulkan path, runtime theme sync, and persistence.
Changed
- Build flags and includes now target
webkitgtk-6.0,gtk4, andjavascriptcoregtk-6.0. - GTK4 APIs for windowing and event handling (GtkEventController, GtkGestureClick) replace GTK3/GdkEvent paths.
Removed
- Legacy WebKit2GTK constructors and container APIs.
- JavaScript fallback for UCM message bridging.
Fixed
- Header/enum compatibility for hardware acceleration policy and cookie policy across WebKit header variants.
- Linker error for
on_theme_changedand gpointer usage in signal connections. - Crashy paths mitigated by default “media safe” startup (can be disabled via
DUMBER_MEDIA_SAFE=0).
Notes
- GPU rendering path leverages GTK4’s renderer (Vulkan/OpenGL). Mode
autouses GPU when available and falls back gracefully to CPU. - WebKitGTK relies on GStreamer; install recommended packages for audio/video (see README).
[0.1.0] - 2025-09-09
Added
- Initial project scaffolding, build system, and dependencies.
- Unified CLI + GUI architecture with search shortcuts and fuzzy parsing.
- Wails v3‑alpha browser integration (early phase).
- Global keyboard controls with script injection (zoom/devtools, etc.).
- Native WebKit2GTK backend migration:
- Custom
dumb://scheme and/apiendpoints:/config,/history/recent,/history/search,/history/stats. - UserContentManager omnibox injection and theme initialization.
- Persistent WebsiteDataManager with cookies.sqlite; per‑domain zoom and title persistence.
- Keyboard/mouse accelerators (including mouse back/forward); debounced triggers.
- Homepage switched to first‑party API fetches; removed @wailsio/runtime usage.
- Custom
- Documentation and licensing: README enhancements and LICENSE added.
Changed
- Replaced Wails runtime with native WebKit2GTK CGO bindings and homepage API.
- Improved asset resolution and logging for the
dumb://homepagescheme.
Fixed
- Eliminated duplicate accelerator triggers via debouncing.
- Corrected asset resolution and URL normalization in scheme handler.