v0.3.0 d226234

CHANGELOG.md RawHistoryFolder

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_CACHE
      • DUMBER_ENABLE_MEMORY_MONITORING, DUMBER_MEMORY_LIMIT_MB, DUMBER_MEMORY_POLL_INTERVAL
      • DUMBER_MEMORY_CONSERVATIVE, DUMBER_MEMORY_STRICT, DUMBER_MEMORY_KILL
      • DUMBER_GC_INTERVAL, DUMBER_RECYCLE_THRESHOLD
    • Version‑guarded CGO wrappers for memory pressure and GC hooks; safe no‑ops on unsupported WebKitGTK builds.
  • 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() on WebView.

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/description with JSON tags.
    • Frontend normalizes field casing and extracts base URLs, handling %s and {query} templates.
    • Omnibox shortcut parsing now URL-encodes queries and supports %s placeholders.
  • 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 overriding GOMODCACHE, GOCACHE, GOTMPDIR for sandboxed builds.
  • 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.

[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 fresh WebKitUserContentManager.
    • WebKitNetworkSession with persistent cookies (SQLite) and cache directories.
  • Native UCM messaging restored via script-message-received::dumber (JSCValue*), removing the JS fallback bridge.
  • Rendering mode controls:
    • CLI flag --rendering-mode=auto|gpu|cpu and DUMBER_RENDERING_MODE env.
    • In‑app status endpoint dumb://homepage/api/rendering/status.
  • 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-theme and update page color‑scheme live.
  • Makefile target check-webkit to print pkg-config versions 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, and javascriptcoregtk-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_changed and 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 auto uses 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 /api endpoints: /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.
  • 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://homepage scheme.

Fixed

  • Eliminated duplicate accelerator triggers via debouncing.
  • Corrected asset resolution and URL normalization in scheme handler.
source
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5## [Unreleased]
6
7## [0.3.0] - 2025-01-11
8
9### Added
10- WebKit memory controls (opt‑in):
11  - Env vars to tune memory/perf trade‑offs without code changes:
12    - `DUMBER_CACHE_MODEL`, `DUMBER_ENABLE_PAGE_CACHE`
13    - `DUMBER_ENABLE_MEMORY_MONITORING`, `DUMBER_MEMORY_LIMIT_MB`, `DUMBER_MEMORY_POLL_INTERVAL`
14    - `DUMBER_MEMORY_CONSERVATIVE`, `DUMBER_MEMORY_STRICT`, `DUMBER_MEMORY_KILL`
15    - `DUMBER_GC_INTERVAL`, `DUMBER_RECYCLE_THRESHOLD`
16  - Version‑guarded CGO wrappers for memory pressure and GC hooks; safe no‑ops on unsupported WebKitGTK builds.
17 - Find in page (Ctrl/Cmd+F):
18   - Omnibox refactored into a reusable component with dedicated "find" mode.
19   - Highlighting: yellow for all matches; active match in orange for clarity.
20   - Match list with context (right side stops at nearest punctuation: . , ; : -).
21   - Navigation UX:
22     - ArrowUp/Down move selection and scroll the overlay list (page scroll disabled while open).
23     - Enter centers on the active match and closes; Shift+Enter goes to previous; Alt+Enter centers without closing.
24     - Hover focuses input and selects list items; click outside closes the overlay.
25     - Faded overlay with subtle blur when reviewing matches; opacity restores on input focus/typing.
26   - Programmatic API: `OpenFind(initial)`, `FindQuery(q)`, `CloseFind()` on `WebView`.
27
28### Changed
29- Performance‑first defaults retained:
30  - Cache model set to “WebBrowser”, page cache enabled, DevTools available.
31  - No implicit memory pressure or GC enabled by default; all memory tuning is opt‑in.
32
33### Removed
34- Deprecated offline app‑cache calls eliminated (no‑ops) to avoid warnings and brittle builds.
35
36### Fixed
37- Homepage Recent History layout:
38  - Show single-line entries as “{Title} – {Domain} – {URL}”.
39  - Truncate long URLs with a gradient fade; prevent horizontal overflow.
40  - Adjusted styling so URL is darker for readability.
41- Search shortcuts and config interop:
42  - Backend SearchShortcut now serializes `url`/`description` with JSON tags.
43  - Frontend normalizes field casing and extracts base URLs, handling `%s` and `{query}` templates.
44  - Omnibox shortcut parsing now URL-encodes queries and supports `%s` placeholders.
45- Input and navigation reliability (GTK4/WebKitGTK 6):
46  - Capture-phase key controller to ensure accelerators fire consistently.
47  - Do not consume normal left/right clicks; only mouse buttons 8/9 trigger back/forward.
48  - Added Alt+ArrowLeft/Right navigation and enabled two-finger swipe back/forward when supported.
49  - Added Ctrl+scroll zoom in/out; refined accelerator matching so Ctrl− works across layouts.
50  - Removed layout-specific hacks; added diagnostic logs for raw minus key events.
51- Zoom persistence:
52  - Added WebView zoom-changed hook; save per-domain zoom to SQLite on every change.
53  - Log on successful save: “saved X.XX for domain.tld” and on load: “loaded X.XX for domain.tld”.
54  - Load and log initial zoom level on startup and on every navigation.
55- Build/dev ergonomics:
56  - Makefile loads `.env.local`; supports overriding `GOMODCACHE`, `GOCACHE`, `GOTMPDIR` for sandboxed builds.
57 - WebKit CGO hardening and API compatibility:
58   - Apply memory pressure settings to `WebKitNetworkSession` (correct signature) when enabled.
59   - Guarded C wrappers remove deprecation warnings across header variants; builds succeed on WebKitGTK 6.
60
61## [0.2.0] - 2025-09-10
62
63### Added
64- WebKitGTK 6 (GTK4) migration for the built‑in browser window:
65  - WebView constructed via `g_object_new(WEBKIT_TYPE_WEB_VIEW, …)` with a fresh `WebKitUserContentManager`.
66  - `WebKitNetworkSession` with persistent cookies (SQLite) and cache directories.
67- Native UCM messaging restored via `script-message-received::dumber` (JSCValue*), removing the JS fallback bridge.
68- Rendering mode controls:
69  - CLI flag `--rendering-mode=auto|gpu|cpu` and `DUMBER_RENDERING_MODE` env.
70  - In‑app status endpoint `dumb://homepage/api/rendering/status`.
71- Native zoom shortcuts at the WebKit layer (Ctrl/Cmd+=, +, −, 0) and GTK4 input controllers for keyboard/mouse.
72- AZERTY keyboard fix: treat underscore as minus for zoom‑out.
73- Runtime theme synchronization: watch GTK `gtk-application-prefer-dark-theme` and update page color‑scheme live.
74- Makefile target `check-webkit` to print `pkg-config` versions of GTK4/WebKitGTK 6.0/JSC 6.0.
75- Documentation updates:
76  - README now targets WebKitGTK 6 (GTK4) and lists GStreamer package requirements for Arch and Debian/Ubuntu.
77  - CLAUDE notes updated with migration status, GPU/Vulkan path, runtime theme sync, and persistence.
78
79### Changed
80- Build flags and includes now target `webkitgtk-6.0`, `gtk4`, and `javascriptcoregtk-6.0`.
81- GTK4 APIs for windowing and event handling (GtkEventController, GtkGestureClick) replace GTK3/GdkEvent paths.
82
83### Removed
84- Legacy WebKit2GTK constructors and container APIs.
85- JavaScript fallback for UCM message bridging.
86
87### Fixed
88- Header/enum compatibility for hardware acceleration policy and cookie policy across WebKit header variants.
89- Linker error for `on_theme_changed` and gpointer usage in signal connections.
90- Crashy paths mitigated by default “media safe” startup (can be disabled via `DUMBER_MEDIA_SAFE=0`).
91
92### Notes
93- GPU rendering path leverages GTK4’s renderer (Vulkan/OpenGL). Mode `auto` uses GPU when available and falls back gracefully to CPU.
94- WebKitGTK relies on GStreamer; install recommended packages for audio/video (see README).
95
96## [0.1.0] - 2025-09-09
97
98### Added
99- Initial project scaffolding, build system, and dependencies.
100- Unified CLI + GUI architecture with search shortcuts and fuzzy parsing.
101- Wails v3‑alpha browser integration (early phase).
102- Global keyboard controls with script injection (zoom/devtools, etc.).
103- Native WebKit2GTK backend migration:
104  - Custom `dumb://` scheme and `/api` endpoints: `/config`, `/history/recent`, `/history/search`, `/history/stats`.
105  - UserContentManager omnibox injection and theme initialization.
106  - Persistent WebsiteDataManager with cookies.sqlite; per‑domain zoom and title persistence.
107  - Keyboard/mouse accelerators (including mouse back/forward); debounced triggers.
108  - Homepage switched to first‑party API fetches; removed @wailsio/runtime usage.
109- Documentation and licensing: README enhancements and LICENSE added.
110
111### Changed
112- Replaced Wails runtime with native WebKit2GTK CGO bindings and homepage API.
113- Improved asset resolution and logging for the `dumb://homepage` scheme.
114
115### Fixed
116- Eliminated duplicate accelerator triggers via debouncing.
117- Corrected asset resolution and URL normalization in scheme handler.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close