detached 5c62115

Merge pull request #362 from bnema/feat/osr-reliability-integration

chore(cef): adopt reliable OSR input stack
commit
5c62115e918e08363b1fcf35851de4728de9bfea
author
bnema · · 2026-07-26 16:28 UTC
committer
GitHub · · 2026-07-26 16:28 UTC
merge of
a405b8e + 1721466 · diff against the first parent
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
3 files · +12 -8
M go.mod +2 -2
@@ -6,8 +6,8 @@ require (
66 github.com/a-h/templ v0.3.1020
77 github.com/andybalholm/brotli v1.2.2
88 github.com/bnema/purego v0.11.0-bnema.4
9- github.com/bnema/purego-cef v0.14.1
10- github.com/bnema/purego-cef2gtk v0.8.5
9+ github.com/bnema/purego-cef v0.14.2
10+ github.com/bnema/purego-cef2gtk v0.9.0
1111 github.com/bnema/purego-pipewire v0.1.5
1212 github.com/bnema/purego-sqlite v0.1.4
1313 github.com/bnema/purego-webp v0.2.1
@@ -6,8 +6,8 @@ require (
6 github.com/a-h/templ v0.3.10206 github.com/a-h/templ v0.3.1020
7 github.com/andybalholm/brotli v1.2.27 github.com/andybalholm/brotli v1.2.2
8 github.com/bnema/purego v0.11.0-bnema.48 github.com/bnema/purego v0.11.0-bnema.4
9- github.com/bnema/purego-cef v0.14.19+ github.com/bnema/purego-cef v0.14.2
10- github.com/bnema/purego-cef2gtk v0.8.510+ github.com/bnema/purego-cef2gtk v0.9.0
11 github.com/bnema/purego-pipewire v0.1.511 github.com/bnema/purego-pipewire v0.1.5
12 github.com/bnema/purego-sqlite v0.1.412 github.com/bnema/purego-sqlite v0.1.4
13 github.com/bnema/purego-webp v0.2.113 github.com/bnema/purego-webp v0.2.1
M go.sum +4 -4
@@ -12,10 +12,10 @@ github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ
1212 github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=
1313 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=
1414 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=
15-github.com/bnema/purego-cef v0.14.1 h1:ZAlrGfFyk3Eel0Gct+ipzJnnNfpXfDX8NuoZfRKAKco=
16-github.com/bnema/purego-cef v0.14.1/go.mod h1:r+qCMwzuI+wq3xo189x3NAWWpALWoWwjtk+8wVCK1Eg=
17-github.com/bnema/purego-cef2gtk v0.8.5 h1:Qwt9DkvCVBNN52dp1jikFU5B2Sg3dB16ayi/T4+2Bhg=
18-github.com/bnema/purego-cef2gtk v0.8.5/go.mod h1:w/5Bjkm+ZaZbDIDS+ysC5qTBcpb8/WOeGDva8i39ocM=
15+github.com/bnema/purego-cef v0.14.2 h1:0tKXT00gFvWUsL3A4sX4kzD+3XRmPOif0ccwO9iokqU=
16+github.com/bnema/purego-cef v0.14.2/go.mod h1:r+qCMwzuI+wq3xo189x3NAWWpALWoWwjtk+8wVCK1Eg=
17+github.com/bnema/purego-cef2gtk v0.9.0 h1:i1jdYIHFO6y6eAhzQ4Djy1t9z1GyH5ZrgR18f6C92Gc=
18+github.com/bnema/purego-cef2gtk v0.9.0/go.mod h1:EqgpNih2djBXD9j7R5gs+gZcdQxzSgkYF3rf7eC+5zo=
1919 github.com/bnema/purego-pipewire v0.1.5 h1:wQQF2uHt/kVV3qOkdSE1CV0noQYkHS2+v9MXkgdjxEw=
2020 github.com/bnema/purego-pipewire v0.1.5/go.mod h1:dn9RGRtNteqIarb8gTv97VD/FQgur7ZJ1BE/Ub9NYSk=
2121 github.com/bnema/purego-sqlite v0.1.4 h1:h2DCsYT1/Ps13Ua4knUNQmT5Xgj6eRx+DrywNcnFNEU=
@@ -12,10 +12,10 @@ github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ
12 github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=12 github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=
13 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=13 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=
14 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=14 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=
15-github.com/bnema/purego-cef v0.14.1 h1:ZAlrGfFyk3Eel0Gct+ipzJnnNfpXfDX8NuoZfRKAKco=15+github.com/bnema/purego-cef v0.14.2 h1:0tKXT00gFvWUsL3A4sX4kzD+3XRmPOif0ccwO9iokqU=
16-github.com/bnema/purego-cef v0.14.1/go.mod h1:r+qCMwzuI+wq3xo189x3NAWWpALWoWwjtk+8wVCK1Eg=16+github.com/bnema/purego-cef v0.14.2/go.mod h1:r+qCMwzuI+wq3xo189x3NAWWpALWoWwjtk+8wVCK1Eg=
17-github.com/bnema/purego-cef2gtk v0.8.5 h1:Qwt9DkvCVBNN52dp1jikFU5B2Sg3dB16ayi/T4+2Bhg=17+github.com/bnema/purego-cef2gtk v0.9.0 h1:i1jdYIHFO6y6eAhzQ4Djy1t9z1GyH5ZrgR18f6C92Gc=
18-github.com/bnema/purego-cef2gtk v0.8.5/go.mod h1:w/5Bjkm+ZaZbDIDS+ysC5qTBcpb8/WOeGDva8i39ocM=18+github.com/bnema/purego-cef2gtk v0.9.0/go.mod h1:EqgpNih2djBXD9j7R5gs+gZcdQxzSgkYF3rf7eC+5zo=
19 github.com/bnema/purego-pipewire v0.1.5 h1:wQQF2uHt/kVV3qOkdSE1CV0noQYkHS2+v9MXkgdjxEw=19 github.com/bnema/purego-pipewire v0.1.5 h1:wQQF2uHt/kVV3qOkdSE1CV0noQYkHS2+v9MXkgdjxEw=
20 github.com/bnema/purego-pipewire v0.1.5/go.mod h1:dn9RGRtNteqIarb8gTv97VD/FQgur7ZJ1BE/Ub9NYSk=20 github.com/bnema/purego-pipewire v0.1.5/go.mod h1:dn9RGRtNteqIarb8gTv97VD/FQgur7ZJ1BE/Ub9NYSk=
21 github.com/bnema/purego-sqlite v0.1.4 h1:h2DCsYT1/Ps13Ua4knUNQmT5Xgj6eRx+DrywNcnFNEU=21 github.com/bnema/purego-sqlite v0.1.4 h1:h2DCsYT1/Ps13Ua4knUNQmT5Xgj6eRx+DrywNcnFNEU=
M internal/infrastructure/cef/first_presentation_collector_test.go +6 -2
@@ -118,6 +118,9 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
118118 binary := filepath.Join(temp, "dumber")
119119 require.NoError(t, os.WriteFile(binary, collectorTestBinary(validFirstPresentationLog), 0o755))
120120
121+ const upstreamVersion = "v0.8.5-0.20300102030405-bbd397409ebe"
122+ const upstreamRevision = "bbd397409ebed75a5979c1e4566a2ef319f6a484"
123+ goBin := collectorProvenanceGo(t, temp, upstreamVersion, upstreamRevision, "")
121124 output := filepath.Join(temp, "artifacts")
122125 cmd := exec.Command(filepath.Join(repoRoot, "scripts", "collect_first_presentation.sh"))
123126 cmd.Dir = repoRoot
@@ -129,6 +132,7 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
129132 "DUMBER_FIRST_PRESENTATION_OUTPUT="+output,
130133 "DUMBER_FIRST_PRESENTATION_TIMEOUT_SECONDS=1",
131134 "DUMBER_MACHINE_GPU_PROFILE=integrated-gpu",
135+ "PATH="+filepath.Dir(goBin)+":"+os.Getenv("PATH"),
132136 )
133137 result, err := cmd.CombinedOutput()
134138 require.NoErrorf(t, err, "collector failed: %s", result)
@@ -144,9 +148,9 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
144148 }
145149 for _, required := range []string{
146150 `"measured_source_revision"`,
147- `"version": "v0.8.5"`,
151+ `"version": "` + upstreamVersion + `"`,
148152 `"tag": "v0.8.5"`,
149- `"revision": "b9fb46ef5c04ca0993943c5ca4b6f0fe83583304"`,
153+ `"revision": "` + upstreamRevision + `"`,
150154 } {
151155 require.Contains(t, artifacts.String(), required)
152156 }
@@ -118,6 +118,9 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
118 binary := filepath.Join(temp, "dumber")118 binary := filepath.Join(temp, "dumber")
119 require.NoError(t, os.WriteFile(binary, collectorTestBinary(validFirstPresentationLog), 0o755))119 require.NoError(t, os.WriteFile(binary, collectorTestBinary(validFirstPresentationLog), 0o755))
120 120
121+ const upstreamVersion = "v0.8.5-0.20300102030405-bbd397409ebe"
122+ const upstreamRevision = "bbd397409ebed75a5979c1e4566a2ef319f6a484"
123+ goBin := collectorProvenanceGo(t, temp, upstreamVersion, upstreamRevision, "")
121 output := filepath.Join(temp, "artifacts")124 output := filepath.Join(temp, "artifacts")
122 cmd := exec.Command(filepath.Join(repoRoot, "scripts", "collect_first_presentation.sh"))125 cmd := exec.Command(filepath.Join(repoRoot, "scripts", "collect_first_presentation.sh"))
123 cmd.Dir = repoRoot126 cmd.Dir = repoRoot
@@ -129,6 +132,7 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
129 "DUMBER_FIRST_PRESENTATION_OUTPUT="+output,132 "DUMBER_FIRST_PRESENTATION_OUTPUT="+output,
130 "DUMBER_FIRST_PRESENTATION_TIMEOUT_SECONDS=1",133 "DUMBER_FIRST_PRESENTATION_TIMEOUT_SECONDS=1",
131 "DUMBER_MACHINE_GPU_PROFILE=integrated-gpu",134 "DUMBER_MACHINE_GPU_PROFILE=integrated-gpu",
135+ "PATH="+filepath.Dir(goBin)+":"+os.Getenv("PATH"),
132 )136 )
133 result, err := cmd.CombinedOutput()137 result, err := cmd.CombinedOutput()
134 require.NoErrorf(t, err, "collector failed: %s", result)138 require.NoErrorf(t, err, "collector failed: %s", result)
@@ -144,9 +148,9 @@ func TestFirstPresentationCollectorSanitizesMachineLocalValues(t *testing.T) {
144 }148 }
145 for _, required := range []string{149 for _, required := range []string{
146 `"measured_source_revision"`,150 `"measured_source_revision"`,
147- `"version": "v0.8.5"`,151+ `"version": "` + upstreamVersion + `"`,
148 `"tag": "v0.8.5"`,152 `"tag": "v0.8.5"`,
149- `"revision": "b9fb46ef5c04ca0993943c5ca4b6f0fe83583304"`,153+ `"revision": "` + upstreamRevision + `"`,
150 } {154 } {
151 require.Contains(t, artifacts.String(), required)155 require.Contains(t, artifacts.String(), required)
152 }156 }

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