chore: add v0.28.0 changelog entry
- commit
- 3cb37708b6e0ec93fef599c66defb225d40aa631
- author
- bnema · · 2026-03-27 21:12 UTC
- parent
- e2241c5
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email - refs
- tag: v0.28.0
1 file · +29 -0
M CHANGELOG.md +29 -0
| @@ -4,6 +4,35 @@ All notable changes to this project will be documented in this file. | |||
| 4 | 4 | ||
| 5 | 5 | ## [Unreleased] | |
| 6 | 6 | ||
| 7 | + | ## [0.28.0] - 2026-03-27 | |
| 8 | + | ||
| 9 | + | ### Added | |
| 10 | + | ||
| 11 | + | - **Engine abstraction layer**: Introduced a major architectural refactor that decouples the browser engine layer from the UI. The new `Engine` interface and supporting infrastructure make it possible to support alternative rendering engines beyond WebKit in the future. Users with custom configurations should run `dumber config migrate` to transition to the new engine configuration format (`[engine]/[engine.webkit]` structure). The migration is automatic and backwards-compatible. | |
| 12 | + | - **Website data access permission**: New permission dialog and system for controlling access to website persistent data. Users can now grant or deny individual websites access to cookies, localStorage, and other persistent storage. | |
| 13 | + | - **Content blocker large filter set support**: Filter sets exceeding WebKit's 150k rule limit are now properly handled by compiling each part file as a separate WebKit filter, enabling support for comprehensive filter lists. Filter file discovery is now dynamic via manifest instead of a hardcoded list. | |
| 14 | + | - **Content blocker debug logging**: Added load-failed signal logging to help diagnose content blocker and filter compilation issues. | |
| 15 | + | ||
| 16 | + | ### Changed | |
| 17 | + | ||
| 18 | + | - **Database backend modernization**: Replaced the WASM-based `ncruces/go-sqlite3` with native `purego-sqlite` via pure FFI (no WASM runtime, no CGO required). This simplifies the build process and improves startup performance by removing the SQLite WASM initialization precompile step. | |
| 19 | + | - **Keyboard and input system overhaul**: Complete rewrite of keyboard routing with native dead key and compose sequence support. The new unified key routing system properly handles accent input with bubble-phase handling and input method fallback, restricted to editable targets with accessibility fallback. | |
| 20 | + | - **Omnibox ghostwriter reliability**: Reimplemented the ghost text system to eliminate letter-eating on fast typing. Replaced the goroutine/token/coalescer machinery with synchronous ghost computation, a guard flag for programmatic `SetText`, debounced echo detection, and stale input checks. | |
| 21 | + | - **Omnibox URL intent matching**: Improved URL detection to prioritize URL-like input on Enter, normalize bare IPs to HTTP for local/tailnet services, and handle leading whitespace correctly. Explicit omnibox selections are now always honored over ghost input. | |
| 22 | + | - **Permission system hardening**: Strengthened permission origin handling to use the live page URI from the signal's WebView for all permission lookups. Exported metadata key constants replace raw string literals. Cookie policy default now correctly aligns with Epiphany ITP model. | |
| 23 | + | - **GTK binding upgrades**: Migrated from `jwijenbergh/puregotk` to `bnema/puregotk` with `ebitengine/purego`. Signal callbacks now receive `*glib.Error` instead of raw `uintptr`, providing actual error messages in load-failed and download-failed logs. Fixes `g_object_new_with_properties` use-after-free via `[]string` keepalive. | |
| 24 | + | ||
| 25 | + | ### Fixed | |
| 26 | + | ||
| 27 | + | - **WebView accent picker**: Fixed double-character input and focus loss in the WebView accent picker during rapid typing. | |
| 28 | + | - **Async callback safety**: Hardened async callbacks with URI validation and timer generation counters to prevent stale callbacks from executing on the wrong WebView. | |
| 29 | + | - **Modal phase synchronization**: Made `setControllerPhase` synchronous and dispatched modal timeouts via the GTK main thread to prevent race conditions. | |
| 30 | + | - **Keyboard routing thread-safety**: Resolved thread-safety issues and nil-guard checks in keyboard routing. | |
| 31 | + | - **Application shortcuts restoration**: App shortcuts are now restored when WebView has focus. | |
| 32 | + | - **Favicon caching**: Fixed stacked title bar favicons to populate from cache on stack creation, guarded against nil texture overwriting a good favicon, and prevented swap on pool reuse. | |
| 33 | + | - **SIGABRT crash on permission requests**: Fixed a crash that occurred when the permission-request signal was emitted during rapid pane teardown. | |
| 34 | + | - **Panic logging in safeGLibType**: Recovered panics are now logged instead of silently swallowed. | |
| 35 | + | ||
| 7 | 36 | ## [0.27.2] - 2026-02-17 | |
| 8 | 37 | ||
| 9 | 38 | ### Changed | |
| @@ -4,6 +4,35 @@ All notable changes to this project will be documented in this file. | |||||
| 4 | 4 | ||||
| 5 | ## [Unreleased] | 5 | ## [Unreleased] | ||
| 6 | 6 | ||||
| 7 | + | ## [0.28.0] - 2026-03-27 | |||
| 8 | + | ||||
| 9 | + | ### Added | |||
| 10 | + | ||||
| 11 | + | - **Engine abstraction layer**: Introduced a major architectural refactor that decouples the browser engine layer from the UI. The new `Engine` interface and supporting infrastructure make it possible to support alternative rendering engines beyond WebKit in the future. Users with custom configurations should run `dumber config migrate` to transition to the new engine configuration format (`[engine]/[engine.webkit]` structure). The migration is automatic and backwards-compatible. | |||
| 12 | + | - **Website data access permission**: New permission dialog and system for controlling access to website persistent data. Users can now grant or deny individual websites access to cookies, localStorage, and other persistent storage. | |||
| 13 | + | - **Content blocker large filter set support**: Filter sets exceeding WebKit's 150k rule limit are now properly handled by compiling each part file as a separate WebKit filter, enabling support for comprehensive filter lists. Filter file discovery is now dynamic via manifest instead of a hardcoded list. | |||
| 14 | + | - **Content blocker debug logging**: Added load-failed signal logging to help diagnose content blocker and filter compilation issues. | |||
| 15 | + | ||||
| 16 | + | ### Changed | |||
| 17 | + | ||||
| 18 | + | - **Database backend modernization**: Replaced the WASM-based `ncruces/go-sqlite3` with native `purego-sqlite` via pure FFI (no WASM runtime, no CGO required). This simplifies the build process and improves startup performance by removing the SQLite WASM initialization precompile step. | |||
| 19 | + | - **Keyboard and input system overhaul**: Complete rewrite of keyboard routing with native dead key and compose sequence support. The new unified key routing system properly handles accent input with bubble-phase handling and input method fallback, restricted to editable targets with accessibility fallback. | |||
| 20 | + | - **Omnibox ghostwriter reliability**: Reimplemented the ghost text system to eliminate letter-eating on fast typing. Replaced the goroutine/token/coalescer machinery with synchronous ghost computation, a guard flag for programmatic `SetText`, debounced echo detection, and stale input checks. | |||
| 21 | + | - **Omnibox URL intent matching**: Improved URL detection to prioritize URL-like input on Enter, normalize bare IPs to HTTP for local/tailnet services, and handle leading whitespace correctly. Explicit omnibox selections are now always honored over ghost input. | |||
| 22 | + | - **Permission system hardening**: Strengthened permission origin handling to use the live page URI from the signal's WebView for all permission lookups. Exported metadata key constants replace raw string literals. Cookie policy default now correctly aligns with Epiphany ITP model. | |||
| 23 | + | - **GTK binding upgrades**: Migrated from `jwijenbergh/puregotk` to `bnema/puregotk` with `ebitengine/purego`. Signal callbacks now receive `*glib.Error` instead of raw `uintptr`, providing actual error messages in load-failed and download-failed logs. Fixes `g_object_new_with_properties` use-after-free via `[]string` keepalive. | |||
| 24 | + | ||||
| 25 | + | ### Fixed | |||
| 26 | + | ||||
| 27 | + | - **WebView accent picker**: Fixed double-character input and focus loss in the WebView accent picker during rapid typing. | |||
| 28 | + | - **Async callback safety**: Hardened async callbacks with URI validation and timer generation counters to prevent stale callbacks from executing on the wrong WebView. | |||
| 29 | + | - **Modal phase synchronization**: Made `setControllerPhase` synchronous and dispatched modal timeouts via the GTK main thread to prevent race conditions. | |||
| 30 | + | - **Keyboard routing thread-safety**: Resolved thread-safety issues and nil-guard checks in keyboard routing. | |||
| 31 | + | - **Application shortcuts restoration**: App shortcuts are now restored when WebView has focus. | |||
| 32 | + | - **Favicon caching**: Fixed stacked title bar favicons to populate from cache on stack creation, guarded against nil texture overwriting a good favicon, and prevented swap on pool reuse. | |||
| 33 | + | - **SIGABRT crash on permission requests**: Fixed a crash that occurred when the permission-request signal was emitted during rapid pane teardown. | |||
| 34 | + | - **Panic logging in safeGLibType**: Recovered panics are now logged instead of silently swallowed. | |||
| 35 | + | ||||
| 7 | ## [0.27.2] - 2026-02-17 | 36 | ## [0.27.2] - 2026-02-17 | ||
| 8 | 37 | ||||
| 9 | ### Changed | 38 | ### Changed | ||