detached 802dc32

refactor(deps): drop puregotk-webkit and update purego stack

commit
802dc3211d82ba86e65b626c16009f94c436a445
author
brice · · 2026-04-16 03:18 UTC
parent
70e775c
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
28 files · +57 -57
M go.mod +6 -9
@@ -3,16 +3,15 @@ module github.com/bnema/dumber
33 go 1.26.1
44
55 require (
6- github.com/bnema/purego-cef v0.8.1
7- github.com/bnema/purego-ffmpeg v0.3.0
8- github.com/bnema/purego-pipewire v0.1.1
9- github.com/bnema/purego-sqlite v0.1.1
10- github.com/bnema/puregotk v0.4.0
11- github.com/bnema/puregotk-webkit v0.0.16
6+ github.com/bnema/purego v0.11.0-bnema.2
7+ github.com/bnema/purego-cef v0.8.2
8+ github.com/bnema/purego-ffmpeg v0.3.1
9+ github.com/bnema/purego-pipewire v0.1.2
10+ github.com/bnema/purego-sqlite v0.1.2
11+ github.com/bnema/puregotk v0.5.1
1212 github.com/charmbracelet/bubbles v1.0.0
1313 github.com/charmbracelet/bubbletea v1.3.10
1414 github.com/charmbracelet/lipgloss v1.1.0
15- github.com/ebitengine/purego v0.10.0
1615 github.com/fsnotify/fsnotify v1.9.0
1716 github.com/godbus/dbus/v5 v5.2.2
1817 github.com/google/uuid v1.6.0
@@ -70,5 +69,3 @@ require (
7069 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
7170 modernc.org/sqlite v1.47.0 // indirect
7271 )
73-
74-replace github.com/ebitengine/purego => github.com/bnema/purego v0.0.0-20260413043705-7850e384cde9
@@ -3,16 +3,15 @@ module github.com/bnema/dumber
3 go 1.26.13 go 1.26.1
4 4
5 require (5 require (
6- github.com/bnema/purego-cef v0.8.16+ github.com/bnema/purego v0.11.0-bnema.2
7- github.com/bnema/purego-ffmpeg v0.3.07+ github.com/bnema/purego-cef v0.8.2
8- github.com/bnema/purego-pipewire v0.1.18+ github.com/bnema/purego-ffmpeg v0.3.1
9- github.com/bnema/purego-sqlite v0.1.19+ github.com/bnema/purego-pipewire v0.1.2
10- github.com/bnema/puregotk v0.4.010+ github.com/bnema/purego-sqlite v0.1.2
11- github.com/bnema/puregotk-webkit v0.0.1611+ github.com/bnema/puregotk v0.5.1
12 github.com/charmbracelet/bubbles v1.0.012 github.com/charmbracelet/bubbles v1.0.0
13 github.com/charmbracelet/bubbletea v1.3.1013 github.com/charmbracelet/bubbletea v1.3.10
14 github.com/charmbracelet/lipgloss v1.1.014 github.com/charmbracelet/lipgloss v1.1.0
15- github.com/ebitengine/purego v0.10.0
16 github.com/fsnotify/fsnotify v1.9.015 github.com/fsnotify/fsnotify v1.9.0
17 github.com/godbus/dbus/v5 v5.2.216 github.com/godbus/dbus/v5 v5.2.2
18 github.com/google/uuid v1.6.017 github.com/google/uuid v1.6.0
@@ -70,5 +69,3 @@ require (
70 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect69 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
71 modernc.org/sqlite v1.47.0 // indirect70 modernc.org/sqlite v1.47.0 // indirect
72 )71 )
73-
74-replace github.com/ebitengine/purego => github.com/bnema/purego v0.0.0-20260413043705-7850e384cde9
M go.sum +14 -16 generated file: collapsed
M internal/infrastructure/cef/gl_loader.go +1 -1
@@ -4,7 +4,7 @@ import (
44 "fmt"
55 "unsafe"
66
7- "github.com/ebitengine/purego"
7+ "github.com/bnema/purego"
88 )
99
1010 // OpenGL constants for PBO-based texture rendering.
@@ -4,7 +4,7 @@ import (
4 "fmt"4 "fmt"
5 "unsafe"5 "unsafe"
6 6
7- "github.com/ebitengine/purego"7+ "github.com/bnema/purego"
8 )8 )
9 9
10 // OpenGL constants for PBO-based texture rendering.10 // OpenGL constants for PBO-based texture rendering.
M internal/infrastructure/cef/render_pipeline.go +3 -2
@@ -163,8 +163,9 @@ func newRenderPipeline(ctx context.Context, gl *glLoader, scale int32, webviewID
163163 rp.glArea.SetHasDepthBuffer(false)
164164 rp.glArea.SetHasStencilBuffer(false)
165165
166- // Wire signals. puregotk takes *func(...) for signal callbacks.
167- renderCb := func(_ gtk.GLArea, _ *gdk.GLContext) bool {
166+ // Wire signals. puregotk currently exposes the render context as a raw pointer.
167+ renderCb := func(_ gtk.GLArea, contextPtr uintptr) bool {
168+ _ = gdk.GLContextNewFromInternalPtr(contextPtr)
168169 return rp.onGLRender()
169170 }
170171 rp.glArea.ConnectRender(&renderCb)
@@ -163,8 +163,9 @@ func newRenderPipeline(ctx context.Context, gl *glLoader, scale int32, webviewID
163 rp.glArea.SetHasDepthBuffer(false)163 rp.glArea.SetHasDepthBuffer(false)
164 rp.glArea.SetHasStencilBuffer(false)164 rp.glArea.SetHasStencilBuffer(false)
165 165
166- // Wire signals. puregotk takes *func(...) for signal callbacks.166+ // Wire signals. puregotk currently exposes the render context as a raw pointer.
167- renderCb := func(_ gtk.GLArea, _ *gdk.GLContext) bool {167+ renderCb := func(_ gtk.GLArea, contextPtr uintptr) bool {
168+ _ = gdk.GLContextNewFromInternalPtr(contextPtr)
168 return rp.onGLRender()169 return rp.onGLRender()
169 }170 }
170 rp.glArea.ConnectRender(&renderCb)171 rp.glArea.ConnectRender(&renderCb)
M internal/infrastructure/filtering/interfaces.go +1 -1
@@ -4,7 +4,7 @@ import (
44 "context"
55 "time"
66
7- "github.com/bnema/puregotk-webkit/webkit"
7+ "github.com/bnema/puregotk/v4/webkit"
88 )
99
1010 // FilterStore abstracts the WebKit UserContentFilterStore operations.
@@ -4,7 +4,7 @@ import (
4 "context"4 "context"
5 "time"5 "time"
6 6
7- "github.com/bnema/puregotk-webkit/webkit"7+ "github.com/bnema/puregotk/v4/webkit"
8 )8 )
9 9
10 // FilterStore abstracts the WebKit UserContentFilterStore operations.10 // FilterStore abstracts the WebKit UserContentFilterStore operations.
M internal/infrastructure/filtering/manager.go +1 -1
@@ -14,7 +14,7 @@ import (
1414
1515 "github.com/bnema/dumber/internal/application/port"
1616 "github.com/bnema/dumber/internal/logging"
17- "github.com/bnema/puregotk-webkit/webkit"
17+ "github.com/bnema/puregotk/v4/webkit"
1818 )
1919
2020 // Compile-time check that Manager satisfies port.FilterManager.
@@ -14,7 +14,7 @@ import (
14 14
15 "github.com/bnema/dumber/internal/application/port"15 "github.com/bnema/dumber/internal/application/port"
16 "github.com/bnema/dumber/internal/logging"16 "github.com/bnema/dumber/internal/logging"
17- "github.com/bnema/puregotk-webkit/webkit"17+ "github.com/bnema/puregotk/v4/webkit"
18 )18 )
19 19
20 // Compile-time check that Manager satisfies port.FilterManager.20 // Compile-time check that Manager satisfies port.FilterManager.
M internal/infrastructure/filtering/manager_test.go +1 -1
@@ -13,7 +13,7 @@ import (
1313 "github.com/bnema/dumber/internal/infrastructure/filtering"
1414 "github.com/bnema/dumber/internal/infrastructure/filtering/mocks"
1515 "github.com/bnema/dumber/internal/logging"
16- "github.com/bnema/puregotk-webkit/webkit"
16+ "github.com/bnema/puregotk/v4/webkit"
1717 "github.com/stretchr/testify/assert"
1818 "github.com/stretchr/testify/mock"
1919 "github.com/stretchr/testify/require"
@@ -13,7 +13,7 @@ import (
13 "github.com/bnema/dumber/internal/infrastructure/filtering"13 "github.com/bnema/dumber/internal/infrastructure/filtering"
14 "github.com/bnema/dumber/internal/infrastructure/filtering/mocks"14 "github.com/bnema/dumber/internal/infrastructure/filtering/mocks"
15 "github.com/bnema/dumber/internal/logging"15 "github.com/bnema/dumber/internal/logging"
16- "github.com/bnema/puregotk-webkit/webkit"16+ "github.com/bnema/puregotk/v4/webkit"
17 "github.com/stretchr/testify/assert"17 "github.com/stretchr/testify/assert"
18 "github.com/stretchr/testify/mock"18 "github.com/stretchr/testify/mock"
19 "github.com/stretchr/testify/require"19 "github.com/stretchr/testify/require"
M internal/infrastructure/filtering/mocks/mocks.go +1 -1
@@ -9,7 +9,7 @@ import (
99 "time"
1010
1111 "github.com/bnema/dumber/internal/infrastructure/filtering"
12- "github.com/bnema/puregotk-webkit/webkit"
12+ "github.com/bnema/puregotk/v4/webkit"
1313 mock "github.com/stretchr/testify/mock"
1414 )
1515
@@ -9,7 +9,7 @@ import (
9 "time"9 "time"
10 10
11 "github.com/bnema/dumber/internal/infrastructure/filtering"11 "github.com/bnema/dumber/internal/infrastructure/filtering"
12- "github.com/bnema/puregotk-webkit/webkit"12+ "github.com/bnema/puregotk/v4/webkit"
13 mock "github.com/stretchr/testify/mock"13 mock "github.com/stretchr/testify/mock"
14 )14 )
15 15
M internal/infrastructure/filtering/store.go +1 -1
@@ -6,8 +6,8 @@ import (
66 "sync"
77
88 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"
109 "github.com/bnema/puregotk/v4/gio"
10+ "github.com/bnema/puregotk/v4/webkit"
1111 )
1212
1313 // Store wraps webkit.UserContentFilterStore with Go-friendly async operations.
@@ -6,8 +6,8 @@ import (
6 "sync"6 "sync"
7 7
8 "github.com/bnema/dumber/internal/logging"8 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"
10 "github.com/bnema/puregotk/v4/gio"9 "github.com/bnema/puregotk/v4/gio"
10+ "github.com/bnema/puregotk/v4/webkit"
11 )11 )
12 12
13 // Store wraps webkit.UserContentFilterStore with Go-friendly async operations.13 // Store wraps webkit.UserContentFilterStore with Go-friendly async operations.
M internal/infrastructure/textinput/webview_target.go +1 -1
@@ -6,7 +6,7 @@ import (
66
77 "github.com/bnema/dumber/internal/application/port"
88 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"
9+ "github.com/bnema/puregotk/v4/webkit"
1010 )
1111
1212 // deleteBeforeCursorJS is the JavaScript template to delete n characters before cursor.
@@ -6,7 +6,7 @@ import (
6 6
7 "github.com/bnema/dumber/internal/application/port"7 "github.com/bnema/dumber/internal/application/port"
8 "github.com/bnema/dumber/internal/logging"8 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"9+ "github.com/bnema/puregotk/v4/webkit"
10 )10 )
11 11
12 // deleteBeforeCursorJS is the JavaScript template to delete n characters before cursor.12 // deleteBeforeCursorJS is the JavaScript template to delete n characters before cursor.
M internal/infrastructure/transcoder/pipeline.go +1 -1
@@ -13,7 +13,7 @@ import (
1313 "net"
1414 "time"
1515
16- "github.com/ebitengine/purego"
16+ "github.com/bnema/purego"
1717 "github.com/rs/zerolog"
1818
1919 "github.com/bnema/purego-ffmpeg/ffmpeg"
@@ -13,7 +13,7 @@ import (
13 "net"13 "net"
14 "time"14 "time"
15 15
16- "github.com/ebitengine/purego"16+ "github.com/bnema/purego"
17 "github.com/rs/zerolog"17 "github.com/rs/zerolog"
18 18
19 "github.com/bnema/purego-ffmpeg/ffmpeg"19 "github.com/bnema/purego-ffmpeg/ffmpeg"
M internal/infrastructure/webkit/context.go +2 -2
@@ -7,12 +7,12 @@ import (
77 "sync"
88
99 "github.com/bnema/dumber/internal/logging"
10- "github.com/bnema/puregotk-webkit/webkit"
10+ "github.com/bnema/puregotk/v4/webkit"
1111 "github.com/rs/zerolog"
1212 )
1313
1414 // FaviconDatabase is a type alias for webkit.FaviconDatabase.
15-// Re-exported for use by UI layer without direct puregotk-webkit import.
15+// Re-exported for use by the UI layer without a direct WebKit binding import.
1616 type FaviconDatabase = webkit.FaviconDatabase
1717
1818 // WebKitContext manages the shared WebContext and persistent NetworkSession.
@@ -7,12 +7,12 @@ import (
7 "sync"7 "sync"
8 8
9 "github.com/bnema/dumber/internal/logging"9 "github.com/bnema/dumber/internal/logging"
10- "github.com/bnema/puregotk-webkit/webkit"10+ "github.com/bnema/puregotk/v4/webkit"
11 "github.com/rs/zerolog"11 "github.com/rs/zerolog"
12 )12 )
13 13
14 // FaviconDatabase is a type alias for webkit.FaviconDatabase.14 // FaviconDatabase is a type alias for webkit.FaviconDatabase.
15-// Re-exported for use by UI layer without direct puregotk-webkit import.15+// Re-exported for use by the UI layer without a direct WebKit binding import.
16 type FaviconDatabase = webkit.FaviconDatabase16 type FaviconDatabase = webkit.FaviconDatabase
17 17
18 // WebKitContext manages the shared WebContext and persistent NetworkSession.18 // WebKitContext manages the shared WebContext and persistent NetworkSession.
M internal/infrastructure/webkit/context_menu.go +1 -1
@@ -17,8 +17,8 @@ import (
1717 "github.com/bnema/dumber/internal/application/port"
1818 "github.com/bnema/dumber/internal/domain/entity"
1919 "github.com/bnema/dumber/internal/logging"
20- "github.com/bnema/puregotk-webkit/webkit"
2120 "github.com/bnema/puregotk/v4/gtk"
21+ "github.com/bnema/puregotk/v4/webkit"
2222 )
2323
2424 // contextMenuResolver implements port.ImageDataResolver by fetching image bytes
@@ -17,8 +17,8 @@ import (
17 "github.com/bnema/dumber/internal/application/port"17 "github.com/bnema/dumber/internal/application/port"
18 "github.com/bnema/dumber/internal/domain/entity"18 "github.com/bnema/dumber/internal/domain/entity"
19 "github.com/bnema/dumber/internal/logging"19 "github.com/bnema/dumber/internal/logging"
20- "github.com/bnema/puregotk-webkit/webkit"
21 "github.com/bnema/puregotk/v4/gtk"20 "github.com/bnema/puregotk/v4/gtk"
21+ "github.com/bnema/puregotk/v4/webkit"
22 )22 )
23 23
24 // contextMenuResolver implements port.ImageDataResolver by fetching image bytes24 // contextMenuResolver implements port.ImageDataResolver by fetching image bytes
M internal/infrastructure/webkit/download_handler.go +1 -1
@@ -9,8 +9,8 @@ import (
99 "github.com/bnema/dumber/internal/application/port"
1010 downloadutil "github.com/bnema/dumber/internal/domain/download"
1111 "github.com/bnema/dumber/internal/logging"
12- "github.com/bnema/puregotk-webkit/webkit"
1312 "github.com/bnema/puregotk/v4/glib"
13+ "github.com/bnema/puregotk/v4/webkit"
1414 )
1515
1616 const (
@@ -9,8 +9,8 @@ import (
9 "github.com/bnema/dumber/internal/application/port"9 "github.com/bnema/dumber/internal/application/port"
10 downloadutil "github.com/bnema/dumber/internal/domain/download"10 downloadutil "github.com/bnema/dumber/internal/domain/download"
11 "github.com/bnema/dumber/internal/logging"11 "github.com/bnema/dumber/internal/logging"
12- "github.com/bnema/puregotk-webkit/webkit"
13 "github.com/bnema/puregotk/v4/glib"12 "github.com/bnema/puregotk/v4/glib"
13+ "github.com/bnema/puregotk/v4/webkit"
14 )14 )
15 15
16 const (16 const (
M internal/infrastructure/webkit/gobject_type_helpers.go +1 -1
@@ -5,9 +5,9 @@ import (
55 "sync"
66
77 "github.com/bnema/dumber/internal/logging"
8+ "github.com/bnema/purego"
89 "github.com/bnema/puregotk/pkg/core"
910 gtypes "github.com/bnema/puregotk/v4/gobject/types"
10- "github.com/ebitengine/purego"
1111 )
1212
1313 var (
@@ -5,9 +5,9 @@ import (
5 "sync"5 "sync"
6 6
7 "github.com/bnema/dumber/internal/logging"7 "github.com/bnema/dumber/internal/logging"
8+ "github.com/bnema/purego"
8 "github.com/bnema/puregotk/pkg/core"9 "github.com/bnema/puregotk/pkg/core"
9 gtypes "github.com/bnema/puregotk/v4/gobject/types"10 gtypes "github.com/bnema/puregotk/v4/gobject/types"
10- "github.com/ebitengine/purego"
11 )11 )
12 12
13 var (13 var (
M internal/infrastructure/webkit/injector.go +1 -1
@@ -10,7 +10,7 @@ import (
1010 "github.com/bnema/dumber/internal/domain/entity"
1111 "github.com/bnema/dumber/internal/infrastructure/webutil"
1212 "github.com/bnema/dumber/internal/logging"
13- "github.com/bnema/puregotk-webkit/webkit"
13+ "github.com/bnema/puregotk/v4/webkit"
1414 )
1515
1616 const (
@@ -10,7 +10,7 @@ import (
10 "github.com/bnema/dumber/internal/domain/entity"10 "github.com/bnema/dumber/internal/domain/entity"
11 "github.com/bnema/dumber/internal/infrastructure/webutil"11 "github.com/bnema/dumber/internal/infrastructure/webutil"
12 "github.com/bnema/dumber/internal/logging"12 "github.com/bnema/dumber/internal/logging"
13- "github.com/bnema/puregotk-webkit/webkit"13+ "github.com/bnema/puregotk/v4/webkit"
14 )14 )
15 15
16 const (16 const (
M internal/infrastructure/webkit/injector_accent_test.go +1 -1
@@ -3,7 +3,7 @@ package webkit
33 import (
44 "testing"
55
6- "github.com/bnema/puregotk-webkit/webkit"
6+ "github.com/bnema/puregotk/v4/webkit"
77 "github.com/stretchr/testify/assert"
88 )
99
@@ -3,7 +3,7 @@ package webkit
3 import (3 import (
4 "testing"4 "testing"
5 5
6- "github.com/bnema/puregotk-webkit/webkit"6+ "github.com/bnema/puregotk/v4/webkit"
7 "github.com/stretchr/testify/assert"7 "github.com/stretchr/testify/assert"
8 )8 )
9 9
M internal/infrastructure/webkit/memory_pressure.go +1 -1
@@ -5,7 +5,7 @@ import (
55
66 "github.com/bnema/dumber/internal/application/port"
77 "github.com/bnema/dumber/internal/logging"
8- "github.com/bnema/puregotk-webkit/webkit"
8+ "github.com/bnema/puregotk/v4/webkit"
99 )
1010
1111 // MemoryPressureApplier implements port.MemoryPressureApplier for WebKitGTK.
@@ -5,7 +5,7 @@ import (
5 5
6 "github.com/bnema/dumber/internal/application/port"6 "github.com/bnema/dumber/internal/application/port"
7 "github.com/bnema/dumber/internal/logging"7 "github.com/bnema/dumber/internal/logging"
8- "github.com/bnema/puregotk-webkit/webkit"8+ "github.com/bnema/puregotk/v4/webkit"
9 )9 )
10 10
11 // MemoryPressureApplier implements port.MemoryPressureApplier for WebKitGTK.11 // MemoryPressureApplier implements port.MemoryPressureApplier for WebKitGTK.
M internal/infrastructure/webkit/messaging.go +2 -2
@@ -9,8 +9,8 @@ import (
99
1010 "github.com/bnema/dumber/internal/application/port"
1111 "github.com/bnema/dumber/internal/logging"
12- "github.com/bnema/puregotk-webkit/javascriptcore"
13- "github.com/bnema/puregotk-webkit/webkit"
12+ "github.com/bnema/puregotk/v4/javascriptcore"
13+ "github.com/bnema/puregotk/v4/webkit"
1414 )
1515
1616 // Message is the JS -> Go message envelope sent via postMessage.
@@ -9,8 +9,8 @@ import (
9 9
10 "github.com/bnema/dumber/internal/application/port"10 "github.com/bnema/dumber/internal/application/port"
11 "github.com/bnema/dumber/internal/logging"11 "github.com/bnema/dumber/internal/logging"
12- "github.com/bnema/puregotk-webkit/javascriptcore"12+ "github.com/bnema/puregotk/v4/javascriptcore"
13- "github.com/bnema/puregotk-webkit/webkit"13+ "github.com/bnema/puregotk/v4/webkit"
14 )14 )
15 15
16 // Message is the JS -> Go message envelope sent via postMessage.16 // Message is the JS -> Go message envelope sent via postMessage.
M internal/infrastructure/webkit/pool.go +1 -1
@@ -10,8 +10,8 @@ import (
1010 "time"
1111
1212 "github.com/bnema/dumber/internal/logging"
13- "github.com/bnema/puregotk-webkit/webkit"
1413 "github.com/bnema/puregotk/v4/glib"
14+ "github.com/bnema/puregotk/v4/webkit"
1515 )
1616
1717 // ErrPoolClosed is returned when operations are attempted on a closed pool.
@@ -10,8 +10,8 @@ import (
10 "time"10 "time"
11 11
12 "github.com/bnema/dumber/internal/logging"12 "github.com/bnema/dumber/internal/logging"
13- "github.com/bnema/puregotk-webkit/webkit"
14 "github.com/bnema/puregotk/v4/glib"13 "github.com/bnema/puregotk/v4/glib"
14+ "github.com/bnema/puregotk/v4/webkit"
15 )15 )
16 16
17 // ErrPoolClosed is returned when operations are attempted on a closed pool.17 // ErrPoolClosed is returned when operations are attempted on a closed pool.
M internal/infrastructure/webkit/scheme_handler.go +2 -2
@@ -17,9 +17,9 @@ import (
1717 "github.com/bnema/dumber/internal/infrastructure/env"
1818 "github.com/bnema/dumber/internal/infrastructure/webutil"
1919 "github.com/bnema/dumber/internal/logging"
20- "github.com/bnema/puregotk-webkit/soup"
21- "github.com/bnema/puregotk-webkit/webkit"
2220 "github.com/bnema/puregotk/v4/gio"
21+ "github.com/bnema/puregotk/v4/soup"
22+ "github.com/bnema/puregotk/v4/webkit"
2323 "github.com/rs/zerolog"
2424 )
2525
@@ -17,9 +17,9 @@ import (
17 "github.com/bnema/dumber/internal/infrastructure/env"17 "github.com/bnema/dumber/internal/infrastructure/env"
18 "github.com/bnema/dumber/internal/infrastructure/webutil"18 "github.com/bnema/dumber/internal/infrastructure/webutil"
19 "github.com/bnema/dumber/internal/logging"19 "github.com/bnema/dumber/internal/logging"
20- "github.com/bnema/puregotk-webkit/soup"
21- "github.com/bnema/puregotk-webkit/webkit"
22 "github.com/bnema/puregotk/v4/gio"20 "github.com/bnema/puregotk/v4/gio"
21+ "github.com/bnema/puregotk/v4/soup"
22+ "github.com/bnema/puregotk/v4/webkit"
23 "github.com/rs/zerolog"23 "github.com/rs/zerolog"
24 )24 )
25 25
M internal/infrastructure/webkit/settings.go +1 -1
@@ -6,7 +6,7 @@ import (
66
77 "github.com/bnema/dumber/internal/infrastructure/config"
88 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"
9+ "github.com/bnema/puregotk/v4/webkit"
1010 "github.com/rs/zerolog"
1111 )
1212
@@ -6,7 +6,7 @@ import (
6 6
7 "github.com/bnema/dumber/internal/infrastructure/config"7 "github.com/bnema/dumber/internal/infrastructure/config"
8 "github.com/bnema/dumber/internal/logging"8 "github.com/bnema/dumber/internal/logging"
9- "github.com/bnema/puregotk-webkit/webkit"9+ "github.com/bnema/puregotk/v4/webkit"
10 "github.com/rs/zerolog"10 "github.com/rs/zerolog"
11 )11 )
12 12
M internal/infrastructure/webkit/webview.go +1 -1
@@ -15,13 +15,13 @@ import (
1515 urlutil "github.com/bnema/dumber/internal/domain/url"
1616 "github.com/bnema/dumber/internal/infrastructure/desktop"
1717 "github.com/bnema/dumber/internal/logging"
18- "github.com/bnema/puregotk-webkit/webkit"
1918 "github.com/bnema/puregotk/v4/gdk"
2019 "github.com/bnema/puregotk/v4/gio"
2120 "github.com/bnema/puregotk/v4/glib"
2221 "github.com/bnema/puregotk/v4/gobject"
2322 gtypes "github.com/bnema/puregotk/v4/gobject/types"
2423 "github.com/bnema/puregotk/v4/gtk"
24+ "github.com/bnema/puregotk/v4/webkit"
2525 "github.com/rs/zerolog"
2626 )
2727
@@ -15,13 +15,13 @@ import (
15 urlutil "github.com/bnema/dumber/internal/domain/url"15 urlutil "github.com/bnema/dumber/internal/domain/url"
16 "github.com/bnema/dumber/internal/infrastructure/desktop"16 "github.com/bnema/dumber/internal/infrastructure/desktop"
17 "github.com/bnema/dumber/internal/logging"17 "github.com/bnema/dumber/internal/logging"
18- "github.com/bnema/puregotk-webkit/webkit"
19 "github.com/bnema/puregotk/v4/gdk"18 "github.com/bnema/puregotk/v4/gdk"
20 "github.com/bnema/puregotk/v4/gio"19 "github.com/bnema/puregotk/v4/gio"
21 "github.com/bnema/puregotk/v4/glib"20 "github.com/bnema/puregotk/v4/glib"
22 "github.com/bnema/puregotk/v4/gobject"21 "github.com/bnema/puregotk/v4/gobject"
23 gtypes "github.com/bnema/puregotk/v4/gobject/types"22 gtypes "github.com/bnema/puregotk/v4/gobject/types"
24 "github.com/bnema/puregotk/v4/gtk"23 "github.com/bnema/puregotk/v4/gtk"
24+ "github.com/bnema/puregotk/v4/webkit"
25 "github.com/rs/zerolog"25 "github.com/rs/zerolog"
26 )26 )
27 27
M internal/infrastructure/webkit/webview_termination_test.go +1 -1
@@ -3,7 +3,7 @@ package webkit
33 import (
44 "testing"
55
6- webkitlib "github.com/bnema/puregotk-webkit/webkit"
6+ webkitlib "github.com/bnema/puregotk/v4/webkit"
77 "github.com/stretchr/testify/assert"
88 )
99
@@ -3,7 +3,7 @@ package webkit
3 import (3 import (
4 "testing"4 "testing"
5 5
6- webkitlib "github.com/bnema/puregotk-webkit/webkit"6+ webkitlib "github.com/bnema/puregotk/v4/webkit"
7 "github.com/stretchr/testify/assert"7 "github.com/stretchr/testify/assert"
8 )8 )
9 9
M internal/ui/app.go +2 -2
@@ -2823,8 +2823,8 @@ func (a *App) installFloatingOverlayPositioning(tabID entity.TabID, workspaceOve
28232823 return
28242824 }
28252825
2826- cb := func(_ gtk.Overlay, widget *gtk.Widget, allocationPtr *uintptr) bool {
2827- var widgetPtr uintptr
2826+ cb := func(_ gtk.Overlay, widgetPtr uintptr, allocationPtr *uintptr) bool {
2827+ widget := gtk.WidgetNewFromInternalPtr(widgetPtr)
28282828 if widget != nil {
28292829 widgetPtr = widget.GoPointer()
28302830 }
@@ -2823,8 +2823,8 @@ func (a *App) installFloatingOverlayPositioning(tabID entity.TabID, workspaceOve
2823 return2823 return
2824 }2824 }
2825 2825
2826- cb := func(_ gtk.Overlay, widget *gtk.Widget, allocationPtr *uintptr) bool {2826+ cb := func(_ gtk.Overlay, widgetPtr uintptr, allocationPtr *uintptr) bool {
2827- var widgetPtr uintptr2827+ widget := gtk.WidgetNewFromInternalPtr(widgetPtr)
2828 if widget != nil {2828 if widget != nil {
2829 widgetPtr = widget.GoPointer()2829 widgetPtr = widget.GoPointer()
2830 }2830 }
M internal/ui/component/omnibox.go +4 -2
@@ -728,8 +728,9 @@ func (o *Omnibox) initList() error {
728728 o.listBox.AddCssClass("omnibox-listbox")
729729 o.listBox.SetSelectionMode(gtk.SelectionSingleValue)
730730
731- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {
731+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
732732 o.restoreEntryToRealInput()
733+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
733734 if row == nil {
734735 o.mu.Lock()
735736 o.selectedIndex = -1
@@ -745,7 +746,8 @@ func (o *Omnibox) initList() error {
745746 o.listBox.ConnectRowSelected(&rowSelectedCb)
746747
747748 // Handle row activation (click or Enter) - navigate directly to the URL
748- rowActivatedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {
749+ rowActivatedCb := func(_ gtk.ListBox, rowPtr uintptr) {
750+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
749751 if row == nil {
750752 return
751753 }
@@ -728,8 +728,9 @@ func (o *Omnibox) initList() error {
728 o.listBox.AddCssClass("omnibox-listbox")728 o.listBox.AddCssClass("omnibox-listbox")
729 o.listBox.SetSelectionMode(gtk.SelectionSingleValue)729 o.listBox.SetSelectionMode(gtk.SelectionSingleValue)
730 730
731- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {731+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
732 o.restoreEntryToRealInput()732 o.restoreEntryToRealInput()
733+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
733 if row == nil {734 if row == nil {
734 o.mu.Lock()735 o.mu.Lock()
735 o.selectedIndex = -1736 o.selectedIndex = -1
@@ -745,7 +746,8 @@ func (o *Omnibox) initList() error {
745 o.listBox.ConnectRowSelected(&rowSelectedCb)746 o.listBox.ConnectRowSelected(&rowSelectedCb)
746 747
747 // Handle row activation (click or Enter) - navigate directly to the URL748 // Handle row activation (click or Enter) - navigate directly to the URL
748- rowActivatedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {749+ rowActivatedCb := func(_ gtk.ListBox, rowPtr uintptr) {
750+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
749 if row == nil {751 if row == nil {
750 return752 return
751 }753 }
M internal/ui/component/session_manager.go +2 -1
@@ -314,7 +314,8 @@ func (sm *SessionManager) initList() error {
314314 sm.listBox.SetSelectionMode(gtk.SelectionSingleValue)
315315
316316 // Connect row selection - map list row index to session index
317- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {
317+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
318+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
318319 if row == nil {
319320 return
320321 }
@@ -314,7 +314,8 @@ func (sm *SessionManager) initList() error {
314 sm.listBox.SetSelectionMode(gtk.SelectionSingleValue)314 sm.listBox.SetSelectionMode(gtk.SelectionSingleValue)
315 315
316 // Connect row selection - map list row index to session index316 // Connect row selection - map list row index to session index
317- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {317+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
318+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
318 if row == nil {319 if row == nil {
319 return320 return
320 }321 }
M internal/ui/component/tab_picker.go +2 -1
@@ -232,7 +232,8 @@ func (tp *TabPicker) createList() error {
232232 tp.listBox.AddCssClass("tab-picker-list")
233233 tp.listBox.SetSelectionMode(gtk.SelectionSingleValue)
234234
235- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {
235+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
236+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
236237 if row == nil {
237238 return
238239 }
@@ -232,7 +232,8 @@ func (tp *TabPicker) createList() error {
232 tp.listBox.AddCssClass("tab-picker-list")232 tp.listBox.AddCssClass("tab-picker-list")
233 tp.listBox.SetSelectionMode(gtk.SelectionSingleValue)233 tp.listBox.SetSelectionMode(gtk.SelectionSingleValue)
234 234
235- rowSelectedCb := func(_ gtk.ListBox, row *gtk.ListBoxRow) {235+ rowSelectedCb := func(_ gtk.ListBox, rowPtr uintptr) {
236+ row := gtk.ListBoxRowNewFromInternalPtr(rowPtr)
236 if row == nil {237 if row == nil {
237 return238 return
238 }239 }

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