chore(docs): remove old release notes
- commit
- 6a2f16c6225521660a7be41f9ce2af76bfd03a5a
- author
- bnema · · 2026-01-24 19:49 UTC
- parent
- 488d011
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
3 files · +0 -77
D docs/v0.14.0-release-notes.md +0 -33
| @@ -1,33 +0,0 @@ | |||
| 1 | - | ## [0.14.0] - 2025-11-18 | |
| 2 | - | ||
| 3 | - | ### Added | |
| 4 | - | - **Zellij-style tab system**: Each tab contains an independent workspace with panes, splits, and stacks. `Ctrl+T` enters tab mode with modal keyboard control (`n`=new, `x`=close, `l/h`=navigate). `Alt+1-9/0` for direct tab switching. `Ctrl+Tab`/`Ctrl+Shift+Tab` for next/previous tab. Tab bar auto-hides with single tab. Orange border indicator (distinct from blue pane mode). | |
| 5 | - | - **International keyboard layout support**: Hardware keycode-based shortcuts for `Alt+number` keys work across all keyboard layouts (QWERTY, AZERTY, QWERTZ, etc.). Physical key position used instead of character mapping. | |
| 6 | - | - **Click-to-activate stacked panes**: Click on any collapsed title bar to instantly activate that pane. Uses GTK4 gesture clicks for native interaction feel. | |
| 7 | - | - **Title bar visual separators**: Subtle 1px borders between stacked title bars. Theme-aware colors automatically adjust for light/dark mode. | |
| 8 | - | - **UI scaling for title bars**: New `workspace.styling.ui_scale` config option (default: 1.0). Scales font size, padding, height, and favicon size. Range: 0.5 to 3.0 (e.g., 1.2 = 120% size). | |
| 9 | - | - **Favorites system**: Full favorites management with keyboard controls and persistent storage. Press `Tab` to switch between History and Favorites views. Press `Space` to add/remove items. Yellow border indicates favorited items in History view. View mode persists across sessions. Database-backed with RAM-first caching for performance. | |
| 10 | - | - **Omnibox quick navigation**: Press `Ctrl+1` through `Ctrl+9` to instantly navigate to the first 9 results, or `Ctrl+0` for the 10th. Works in both History and Favorites views. Visual number hints appear on each item. Keyboard layout independent (works on QWERTY, AZERTY, QWERTZ, etc.). | |
| 11 | - | - **Middle-click and Ctrl+click link handling**: Links can now be opened in new workspace panes using standard browser gestures (middle-click or Ctrl+left-click). New panes split in the configured direction (default: right) and respect `workspace.popups.placement` configuration. Implemented via WebKit's `decide-policy` signal to intercept navigation actions before they occur. | |
| 12 | - | - **Configurable pane border styling**: Added `workspace.styling.inactive_border_width`, `workspace.styling.inactive_border_color`, and `workspace.styling.show_stacked_title_border` config options. Active and inactive borders default to 1px to prevent layout shift, with only color changing on focus. Borders use GTK theme variables by default and support smooth CSS transitions. | |
| 13 | - | - **Configurable default search engine**: Added `default_search_engine` config option with explicit URL template format. DuckDuckGo is now the default (was Google). Users can set any search engine with `%s` placeholder (e.g., `default_search_engine = "https://duckduckgo.com/?q=%s"`). | |
| 14 | - | ||
| 15 | - | ### Changed | |
| 16 | - | - **Target="_blank" and gesture link behavior**: Links with `target="_blank"`, Ctrl+click, and middle-click now open in stacked panes mode by default instead of split-right. New config option `workspace.popups.blank_target_behavior` (values: "split", "stacked", "tabbed") controls this behavior separately from JavaScript popups. Prevents browser exit when closing parent pane by marking _blank panes as popup-type. | |
| 17 | - | - **Config format**: TOML is now the default format (JSON/YAML still supported). Action bindings inverted to `action→keys` structure for maintainability with O(1) runtime lookup. Added comprehensive validation. | |
| 18 | - | - **Code cleanup**: Removed dead code files and emojis from GUI modules | |
| 19 | - | - **Bridge architecture**: Unified main-world to isolated-world bridge system with comprehensive documentation. Single dispatcher for all window function bridges (omnibox, favorites, toasts). Better separation between CustomEvents (shared between worlds) and window functions (require bridging). | |
| 20 | - | - **Omnibox spacing**: Increased vertical spacing between suggestion items from 0.65rem to 0.85rem for better readability | |
| 21 | - | - **Smart Escape key**: First press clears input text, second press closes omnibox. Empty input closes immediately. | |
| 22 | - | ||
| 23 | - | ### Fixed | |
| 24 | - | - **Ctrl+Tab shortcuts**: Fixed focus cycling behavior, now properly switches between tabs | |
| 25 | - | - **Active tab visibility**: Fixed identical styling - active tab now clearly visible with distinct gray shade | |
| 26 | - | - **AZERTY keyboard support**: Alt+number shortcuts now work on all keyboard layouts using hardware keycodes | |
| 27 | - | - **Keyboard layout detection**: Fixed always detecting "en" - now correctly detects fr/de/etc layouts | |
| 28 | - | - **Zoom visual glitch**: Fixed zoom level for next page being applied before navigation completed, causing visible zoom change on current page. Zoom now applies on load-committed event instead of URI change. | |
| 29 | - | - **Toast notifications**: Fixed toast notifications not appearing for copy URL (Ctrl+Shift+C) and clipboard operations. Event name was `dumber:showToast` but ToastContainer listens for `dumber:toast`. | |
| 30 | - | - **Page reload shortcuts**: Restored `Ctrl+R`, `Ctrl+Shift+R`, `F5`, and `Ctrl+F5` shortcuts. They were registered but not actually wired to the window-level handler. | |
| 31 | - | - **Bootstrap initialization**: Fixed omnibox component not mounting due to invalid toast function check in isolated world. Toast functions now bridge correctly via CustomEvents, allowing omnibox to initialize properly. | |
| 32 | - | - **Empty state display**: History view now hides empty state when input is empty, showing it only when user has typed and no results are found. Favorites view always shows empty state with helpful hints. | |
| 33 | - | ||
| @@ -1,33 +0,0 @@ | |||||
| 1 | - | ## [0.14.0] - 2025-11-18 | |||
| 2 | - | ||||
| 3 | - | ### Added | |||
| 4 | - | - **Zellij-style tab system**: Each tab contains an independent workspace with panes, splits, and stacks. `Ctrl+T` enters tab mode with modal keyboard control (`n`=new, `x`=close, `l/h`=navigate). `Alt+1-9/0` for direct tab switching. `Ctrl+Tab`/`Ctrl+Shift+Tab` for next/previous tab. Tab bar auto-hides with single tab. Orange border indicator (distinct from blue pane mode). | |||
| 5 | - | - **International keyboard layout support**: Hardware keycode-based shortcuts for `Alt+number` keys work across all keyboard layouts (QWERTY, AZERTY, QWERTZ, etc.). Physical key position used instead of character mapping. | |||
| 6 | - | - **Click-to-activate stacked panes**: Click on any collapsed title bar to instantly activate that pane. Uses GTK4 gesture clicks for native interaction feel. | |||
| 7 | - | - **Title bar visual separators**: Subtle 1px borders between stacked title bars. Theme-aware colors automatically adjust for light/dark mode. | |||
| 8 | - | - **UI scaling for title bars**: New `workspace.styling.ui_scale` config option (default: 1.0). Scales font size, padding, height, and favicon size. Range: 0.5 to 3.0 (e.g., 1.2 = 120% size). | |||
| 9 | - | - **Favorites system**: Full favorites management with keyboard controls and persistent storage. Press `Tab` to switch between History and Favorites views. Press `Space` to add/remove items. Yellow border indicates favorited items in History view. View mode persists across sessions. Database-backed with RAM-first caching for performance. | |||
| 10 | - | - **Omnibox quick navigation**: Press `Ctrl+1` through `Ctrl+9` to instantly navigate to the first 9 results, or `Ctrl+0` for the 10th. Works in both History and Favorites views. Visual number hints appear on each item. Keyboard layout independent (works on QWERTY, AZERTY, QWERTZ, etc.). | |||
| 11 | - | - **Middle-click and Ctrl+click link handling**: Links can now be opened in new workspace panes using standard browser gestures (middle-click or Ctrl+left-click). New panes split in the configured direction (default: right) and respect `workspace.popups.placement` configuration. Implemented via WebKit's `decide-policy` signal to intercept navigation actions before they occur. | |||
| 12 | - | - **Configurable pane border styling**: Added `workspace.styling.inactive_border_width`, `workspace.styling.inactive_border_color`, and `workspace.styling.show_stacked_title_border` config options. Active and inactive borders default to 1px to prevent layout shift, with only color changing on focus. Borders use GTK theme variables by default and support smooth CSS transitions. | |||
| 13 | - | - **Configurable default search engine**: Added `default_search_engine` config option with explicit URL template format. DuckDuckGo is now the default (was Google). Users can set any search engine with `%s` placeholder (e.g., `default_search_engine = "https://duckduckgo.com/?q=%s"`). | |||
| 14 | - | ||||
| 15 | - | ### Changed | |||
| 16 | - | - **Target="_blank" and gesture link behavior**: Links with `target="_blank"`, Ctrl+click, and middle-click now open in stacked panes mode by default instead of split-right. New config option `workspace.popups.blank_target_behavior` (values: "split", "stacked", "tabbed") controls this behavior separately from JavaScript popups. Prevents browser exit when closing parent pane by marking _blank panes as popup-type. | |||
| 17 | - | - **Config format**: TOML is now the default format (JSON/YAML still supported). Action bindings inverted to `action→keys` structure for maintainability with O(1) runtime lookup. Added comprehensive validation. | |||
| 18 | - | - **Code cleanup**: Removed dead code files and emojis from GUI modules | |||
| 19 | - | - **Bridge architecture**: Unified main-world to isolated-world bridge system with comprehensive documentation. Single dispatcher for all window function bridges (omnibox, favorites, toasts). Better separation between CustomEvents (shared between worlds) and window functions (require bridging). | |||
| 20 | - | - **Omnibox spacing**: Increased vertical spacing between suggestion items from 0.65rem to 0.85rem for better readability | |||
| 21 | - | - **Smart Escape key**: First press clears input text, second press closes omnibox. Empty input closes immediately. | |||
| 22 | - | ||||
| 23 | - | ### Fixed | |||
| 24 | - | - **Ctrl+Tab shortcuts**: Fixed focus cycling behavior, now properly switches between tabs | |||
| 25 | - | - **Active tab visibility**: Fixed identical styling - active tab now clearly visible with distinct gray shade | |||
| 26 | - | - **AZERTY keyboard support**: Alt+number shortcuts now work on all keyboard layouts using hardware keycodes | |||
| 27 | - | - **Keyboard layout detection**: Fixed always detecting "en" - now correctly detects fr/de/etc layouts | |||
| 28 | - | - **Zoom visual glitch**: Fixed zoom level for next page being applied before navigation completed, causing visible zoom change on current page. Zoom now applies on load-committed event instead of URI change. | |||
| 29 | - | - **Toast notifications**: Fixed toast notifications not appearing for copy URL (Ctrl+Shift+C) and clipboard operations. Event name was `dumber:showToast` but ToastContainer listens for `dumber:toast`. | |||
| 30 | - | - **Page reload shortcuts**: Restored `Ctrl+R`, `Ctrl+Shift+R`, `F5`, and `Ctrl+F5` shortcuts. They were registered but not actually wired to the window-level handler. | |||
| 31 | - | - **Bootstrap initialization**: Fixed omnibox component not mounting due to invalid toast function check in isolated world. Toast functions now bridge correctly via CustomEvents, allowing omnibox to initialize properly. | |||
| 32 | - | - **Empty state display**: History view now hides empty state when input is empty, showing it only when user has typed and no results are found. Favorites view always shows empty state with helpful hints. | |||
| 33 | - | ||||
D docs/v0.14.1-release-notes.md +0 -17
| @@ -1,17 +0,0 @@ | |||
| 1 | - | ## [0.14.1] - 2025-11-18 | |
| 2 | - | ||
| 3 | - | ### Added | |
| 4 | - | - **Inline tab rename**: Press `Alt+T` then `r` to rename tabs directly in the tab bar. Enter saves, Escape cancels. Tab buttons temporarily allow focus during rename, then restore original focus behavior to prevent interfering with WebView keyboard input. | |
| 5 | - | - **Cloudflare Turnstile CAPTCHA support**: Temporary CORS allowlist workaround for `challenges.cloudflare.com` to bypass WebKit's incomplete COEP credentialless implementation. Allows Turnstile-protected sites to function properly. Configurable via `enable_turnstile_workaround` (default: true). | |
| 6 | - | - **Global content filtering toggle**: New `content_filtering.enabled` config option to completely disable ad blocking when needed. Whitelist system remains available for granular control. Defaults to enabled for backward compatibility. | |
| 7 | - | ||
| 8 | - | ### Fixed | |
| 9 | - | - **Search shortcut placeholders**: Support both `{query}` and `%s` placeholder formats in search shortcuts, allowing users to use either style. Also fixed domain-only URLs (e.g., "github.com") being incorrectly treated as search queries. | |
| 10 | - | - **OAuth popup handling**: Fixed OAuth popups not functioning in stacked panes and split operations by ensuring `setupPopupHandling()` is called in all pane creation code paths (finalizeStackCreation, CloseStackedPane, splitNode). | |
| 11 | - | - **WebView ID message parsing**: Fixed JSON unmarshaling errors when frontend sends numeric webviewId values instead of strings. Message handler now gracefully normalizes both string and numeric webviewId formats with fallback parsing logic. | |
| 12 | - | - **Video codec fallback**: Unblocked VP8 codec to allow fallback for ad segments, preventing playback interruptions when ads use different codecs than main content. | |
| 13 | - | - **Video buffering**: Increased buffer sizes (64 MB, 20s) to handle bursty Twitch/AV1 segments and improve streaming reliability on variable bitrate platforms. | |
| 14 | - | ||
| 15 | - | ### Changed | |
| 16 | - | - **Console output cleanup**: Disabled WebKit console.log() messages to stdout to prevent page script spam. DevTools console (F12) still shows all messages. | |
| 17 | - | - **Content filtering configuration**: Refactored `content_filtering_whitelist` into structured `content_filtering` config with `enabled` boolean and `whitelist` array for better organization. | |
| @@ -1,17 +0,0 @@ | |||||
| 1 | - | ## [0.14.1] - 2025-11-18 | |||
| 2 | - | ||||
| 3 | - | ### Added | |||
| 4 | - | - **Inline tab rename**: Press `Alt+T` then `r` to rename tabs directly in the tab bar. Enter saves, Escape cancels. Tab buttons temporarily allow focus during rename, then restore original focus behavior to prevent interfering with WebView keyboard input. | |||
| 5 | - | - **Cloudflare Turnstile CAPTCHA support**: Temporary CORS allowlist workaround for `challenges.cloudflare.com` to bypass WebKit's incomplete COEP credentialless implementation. Allows Turnstile-protected sites to function properly. Configurable via `enable_turnstile_workaround` (default: true). | |||
| 6 | - | - **Global content filtering toggle**: New `content_filtering.enabled` config option to completely disable ad blocking when needed. Whitelist system remains available for granular control. Defaults to enabled for backward compatibility. | |||
| 7 | - | ||||
| 8 | - | ### Fixed | |||
| 9 | - | - **Search shortcut placeholders**: Support both `{query}` and `%s` placeholder formats in search shortcuts, allowing users to use either style. Also fixed domain-only URLs (e.g., "github.com") being incorrectly treated as search queries. | |||
| 10 | - | - **OAuth popup handling**: Fixed OAuth popups not functioning in stacked panes and split operations by ensuring `setupPopupHandling()` is called in all pane creation code paths (finalizeStackCreation, CloseStackedPane, splitNode). | |||
| 11 | - | - **WebView ID message parsing**: Fixed JSON unmarshaling errors when frontend sends numeric webviewId values instead of strings. Message handler now gracefully normalizes both string and numeric webviewId formats with fallback parsing logic. | |||
| 12 | - | - **Video codec fallback**: Unblocked VP8 codec to allow fallback for ad segments, preventing playback interruptions when ads use different codecs than main content. | |||
| 13 | - | - **Video buffering**: Increased buffer sizes (64 MB, 20s) to handle bursty Twitch/AV1 segments and improve streaming reliability on variable bitrate platforms. | |||
| 14 | - | ||||
| 15 | - | ### Changed | |||
| 16 | - | - **Console output cleanup**: Disabled WebKit console.log() messages to stdout to prevent page script spam. DevTools console (F12) still shows all messages. | |||
| 17 | - | - **Content filtering configuration**: Refactored `content_filtering_whitelist` into structured `content_filtering` config with `enabled` boolean and `whitelist` array for better organization. | |||
D docs/v0.15.0-release-notes.md +0 -27
| @@ -1,27 +0,0 @@ | |||
| 1 | - | ## [0.15.0] - 2025-11-29 | |
| 2 | - | ||
| 3 | - | ### Added | |
| 4 | - | - **Inline URL suggestions**: Fish/zsh-style ghost text completion in omnibox. As you type, shows grayed-out URL completion from history. Accept with Right Arrow (full) or Ctrl+Right (word). Ctrl+Y also accepts full suggestion. Uses trie-based prefix search with debounced queries for smooth typing. | |
| 5 | - | - **Filter list auto-update**: Async version checking using HTTP HEAD request with ETag. 2-minute startup delay, skips if checked within 24 hours. Stores version per filter list. | |
| 6 | - | - **Configurable filter lists**: New `content_filtering.filter_lists` config option. Defaults include EasyList, EasyPrivacy, and uBlock filters (annoyances, quick-fixes). | |
| 7 | - | - **Demo video**: Added feature showcase video to README (docs/media/dumber-demo.mp4). | |
| 8 | - | - **Page load progress bar**: Thin animated indicator at window bottom showing web page loading progress. Tracks WebView load events with gradient animation, auto-hides when complete. | |
| 9 | - | - **Omnibox initial history display**: Configurable behavior when opening empty omnibox via `omnibox.initial_behavior` ("recent", "most_visited", "none"). Shows initial history on open and when input is cleared. Default: recent visits. | |
| 10 | - | - **Omnibox keyboard blocking**: Prevent page scripts from stealing focus while omnibox is active. | |
| 11 | - | - **Configurable border widths**: Added `pane_mode_border_width` and `tab_mode_border_width` configuration options (default: 4px) for full border customization. | |
| 12 | - | - **Content filter caching**: Centralized content blocking service compiles filters once and caches them for instant reuse across all WebViews. | |
| 13 | - | - **CLI purge enhancements**: Separate `--cookies` and `--history` flags for granular data deletion. | |
| 14 | - | - **URL normalization**: Consistent URL storage across browser, CLI, and favicon services (strips trailing slashes, normalizes schemes). | |
| 15 | - | ||
| 16 | - | ### Fixed | |
| 17 | - | - **Filter compilation race condition**: Fixed concurrent map crash when multiple filter lists compile simultaneously by using local converter instead of shared state. | |
| 18 | - | - **Omnibox search performance**: Debounce search with 2-character minimum threshold to prevent UI freeze on first keystroke. Applies to both URL/history search and find-in-page modes. | |
| 19 | - | - **Omnibox flash on load**: Load the injected GUI bundle at document-start and initialize the omnibox as soon as DOM is ready, ensuring it is ready without briefly flashing during page startup or new pane creation. | |
| 20 | - | - **Zoom toast suppression**: Suppress zoom toast notifications during browser initialization to prevent UI flash. | |
| 21 | - | - **Cosmetic filter injection**: Inject rules immediately and fix selector normalization for better ad blocking. | |
| 22 | - | ||
| 23 | - | ### Changed | |
| 24 | - | - **Refactor keyboard blocking**: Move logic to main-world.ts, reduce handler.go verbosity. | |
| 25 | - | - **Border overlay architecture**: All borders (active pane, pane mode, tab mode) now use GTK overlay pattern preventing layout shifts when borders appear/disappear. Removed inactive border styling - only active panes show borders. | |
| 26 | - | - **Simplified border configuration**: Removed `inactive_border_width`, `inactive_border_color`, `show_stacked_title_border`, and `border_radius` config options. All borders are now overlay-based with no layout impact. | |
| 27 | - | - **Remove Turnstile workaround**: Removed temporary Cloudflare Turnstile CORS allowlist (no longer needed). | |
| @@ -1,27 +0,0 @@ | |||||
| 1 | - | ## [0.15.0] - 2025-11-29 | |||
| 2 | - | ||||
| 3 | - | ### Added | |||
| 4 | - | - **Inline URL suggestions**: Fish/zsh-style ghost text completion in omnibox. As you type, shows grayed-out URL completion from history. Accept with Right Arrow (full) or Ctrl+Right (word). Ctrl+Y also accepts full suggestion. Uses trie-based prefix search with debounced queries for smooth typing. | |||
| 5 | - | - **Filter list auto-update**: Async version checking using HTTP HEAD request with ETag. 2-minute startup delay, skips if checked within 24 hours. Stores version per filter list. | |||
| 6 | - | - **Configurable filter lists**: New `content_filtering.filter_lists` config option. Defaults include EasyList, EasyPrivacy, and uBlock filters (annoyances, quick-fixes). | |||
| 7 | - | - **Demo video**: Added feature showcase video to README (docs/media/dumber-demo.mp4). | |||
| 8 | - | - **Page load progress bar**: Thin animated indicator at window bottom showing web page loading progress. Tracks WebView load events with gradient animation, auto-hides when complete. | |||
| 9 | - | - **Omnibox initial history display**: Configurable behavior when opening empty omnibox via `omnibox.initial_behavior` ("recent", "most_visited", "none"). Shows initial history on open and when input is cleared. Default: recent visits. | |||
| 10 | - | - **Omnibox keyboard blocking**: Prevent page scripts from stealing focus while omnibox is active. | |||
| 11 | - | - **Configurable border widths**: Added `pane_mode_border_width` and `tab_mode_border_width` configuration options (default: 4px) for full border customization. | |||
| 12 | - | - **Content filter caching**: Centralized content blocking service compiles filters once and caches them for instant reuse across all WebViews. | |||
| 13 | - | - **CLI purge enhancements**: Separate `--cookies` and `--history` flags for granular data deletion. | |||
| 14 | - | - **URL normalization**: Consistent URL storage across browser, CLI, and favicon services (strips trailing slashes, normalizes schemes). | |||
| 15 | - | ||||
| 16 | - | ### Fixed | |||
| 17 | - | - **Filter compilation race condition**: Fixed concurrent map crash when multiple filter lists compile simultaneously by using local converter instead of shared state. | |||
| 18 | - | - **Omnibox search performance**: Debounce search with 2-character minimum threshold to prevent UI freeze on first keystroke. Applies to both URL/history search and find-in-page modes. | |||
| 19 | - | - **Omnibox flash on load**: Load the injected GUI bundle at document-start and initialize the omnibox as soon as DOM is ready, ensuring it is ready without briefly flashing during page startup or new pane creation. | |||
| 20 | - | - **Zoom toast suppression**: Suppress zoom toast notifications during browser initialization to prevent UI flash. | |||
| 21 | - | - **Cosmetic filter injection**: Inject rules immediately and fix selector normalization for better ad blocking. | |||
| 22 | - | ||||
| 23 | - | ### Changed | |||
| 24 | - | - **Refactor keyboard blocking**: Move logic to main-world.ts, reduce handler.go verbosity. | |||
| 25 | - | - **Border overlay architecture**: All borders (active pane, pane mode, tab mode) now use GTK overlay pattern preventing layout shifts when borders appear/disappear. Removed inactive border styling - only active panes show borders. | |||
| 26 | - | - **Simplified border configuration**: Removed `inactive_border_width`, `inactive_border_color`, `show_stacked_title_border`, and `border_radius` config options. All borders are now overlay-based with no layout impact. | |||
| 27 | - | - **Remove Turnstile workaround**: Removed temporary Cloudflare Turnstile CORS allowlist (no longer needed). | |||