detached 62dc92c

chore(build): require go 1.27 (#427)

* chore(build): require go 1.27

* build(systemviews): drop the pinned artifact toolchain
commit
62dc92cb036ac90b3ff2a184ac78f7c1f6f28e0c
author
bnema · · 2026-09-11 04:52 UTC
committer
GitHub · · 2026-09-11 04:52 UTC
parent
e04d7eb
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
8 files · +13 -22
M .github/workflows/aur.yml +1 -1
@@ -51,7 +51,7 @@ jobs:
5151 "arch=('x86_64')" \
5252 'url="https://github.com/bnema/dumber"' \
5353 "license=('MIT')" \
54- "makedepends=('go>=1.26' 'git' 'brotli')" \
54+ "makedepends=('go>=1.27' 'git' 'brotli')" \
5555 "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \
5656 'optdepends=(' \
5757 " 'gst-plugins-base: Base media codecs'" \
@@ -51,7 +51,7 @@ jobs:
51 "arch=('x86_64')" \51 "arch=('x86_64')" \
52 'url="https://github.com/bnema/dumber"' \52 'url="https://github.com/bnema/dumber"' \
53 "license=('MIT')" \53 "license=('MIT')" \
54- "makedepends=('go>=1.26' 'git' 'brotli')" \54+ "makedepends=('go>=1.27' 'git' 'brotli')" \
55 "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \55 "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \
56 'optdepends=(' \56 'optdepends=(' \
57 " 'gst-plugins-base: Base media codecs'" \57 " 'gst-plugins-base: Base media codecs'" \
M Makefile +7 -10
@@ -34,13 +34,10 @@ WASM_GOFLAGS?=$(GOFLAGS)
3434 # Linker flags
3535 LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)"
3636
37-# Blessed toolchain for systemview artifacts, read from go.mod so there is
38-# exactly one version to bump. The verify-generated CI gate rebuilds these
39-# artifacts with setup-go's pinned toolchain: recipe-level GOTOOLCHAIN
40-# (not ambient environment) plus GOENV=off (ignore the developer's go env
41-# file — e.g. a local GOEXPERIMENT changes runtime codegen) is what makes
42-# local builds byte-identical to CI's.
43-SYSTEMVIEWS_GOTOOLCHAIN?=$(shell grep '^toolchain ' go.mod | awk '{print $$2}')
37+# Systemview artifacts are built with the toolchain that satisfies go.mod's
38+# go directive: setup-go's toolchain in CI, the local Go elsewhere. GOENV=off
39+# keeps the developer's go env file out of the build (e.g. a local GOEXPERIMENT
40+# changes runtime codegen), so one toolchain always yields the same WASM bytes.
4441
4542 # Disable optimizations and inlining for ALL packages. purego callbacks
4643 # create mixed Go/C stack frames; the Go runtime (stack growth, GC,
@@ -70,15 +67,15 @@ build: build-systemviews verify-systemviews-assets ## Build the application (pur
7067
7168 generate-systemviews: ## Generate Go code from systemviews templ components
7269 @echo "Generating systemviews templ components..."
73- GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false
70+ GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false
7471 @echo "Systemviews templ generation complete"
7572
7673 build-systemviews: generate-systemviews ## Build the WASM systemviews runtime
7774 @echo "Building systemviews wasm assets..."
7875 @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; }
7976 @mkdir -p assets/systemviews
80- @cp -f "$$(GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js
81- GOFLAGS="$(WASM_GOFLAGS)" GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews
77+ @cp -f "$$(go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js
78+ GOFLAGS="$(WASM_GOFLAGS)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews
8279 brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm
8380 go run ./cmd/systemviews-assets -dir assets/systemviews
8481 @echo "Systemviews build complete"
@@ -34,13 +34,10 @@ WASM_GOFLAGS?=$(GOFLAGS)
34 # Linker flags34 # Linker flags
35 LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)"35 LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)"
36 36
37-# Blessed toolchain for systemview artifacts, read from go.mod so there is37+# Systemview artifacts are built with the toolchain that satisfies go.mod's
38-# exactly one version to bump. The verify-generated CI gate rebuilds these38+# go directive: setup-go's toolchain in CI, the local Go elsewhere. GOENV=off
39-# artifacts with setup-go's pinned toolchain: recipe-level GOTOOLCHAIN39+# keeps the developer's go env file out of the build (e.g. a local GOEXPERIMENT
40-# (not ambient environment) plus GOENV=off (ignore the developer's go env40+# changes runtime codegen), so one toolchain always yields the same WASM bytes.
41-# file — e.g. a local GOEXPERIMENT changes runtime codegen) is what makes
42-# local builds byte-identical to CI's.
43-SYSTEMVIEWS_GOTOOLCHAIN?=$(shell grep '^toolchain ' go.mod | awk '{print $$2}')
44 41
45 # Disable optimizations and inlining for ALL packages. purego callbacks42 # Disable optimizations and inlining for ALL packages. purego callbacks
46 # create mixed Go/C stack frames; the Go runtime (stack growth, GC,43 # create mixed Go/C stack frames; the Go runtime (stack growth, GC,
@@ -70,15 +67,15 @@ build: build-systemviews verify-systemviews-assets ## Build the application (pur
70 67
71 generate-systemviews: ## Generate Go code from systemviews templ components68 generate-systemviews: ## Generate Go code from systemviews templ components
72 @echo "Generating systemviews templ components..."69 @echo "Generating systemviews templ components..."
73- GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false70+ GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false
74 @echo "Systemviews templ generation complete"71 @echo "Systemviews templ generation complete"
75 72
76 build-systemviews: generate-systemviews ## Build the WASM systemviews runtime73 build-systemviews: generate-systemviews ## Build the WASM systemviews runtime
77 @echo "Building systemviews wasm assets..."74 @echo "Building systemviews wasm assets..."
78 @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; }75 @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; }
79 @mkdir -p assets/systemviews76 @mkdir -p assets/systemviews
80- @cp -f "$$(GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js77+ @cp -f "$$(go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js
81- GOFLAGS="$(WASM_GOFLAGS)" GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews78+ GOFLAGS="$(WASM_GOFLAGS)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews
82 brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm79 brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm
83 go run ./cmd/systemviews-assets -dir assets/systemviews80 go run ./cmd/systemviews-assets -dir assets/systemviews
84 @echo "Systemviews build complete"81 @echo "Systemviews build complete"
M README.md +1 -1
@@ -206,7 +206,7 @@ Set `ENV=dev` to isolate the development process under `.dev/dumber/`. Dumber se
206206
207207 **Prerequisites:**
208208
209-- Go 1.26+
209+- Go 1.27+
210210 - GTK4 development packages
211211 - CEF runtime (default backend)
212212 - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks)
@@ -206,7 +206,7 @@ Set `ENV=dev` to isolate the development process under `.dev/dumber/`. Dumber se
206 206
207 **Prerequisites:**207 **Prerequisites:**
208 208
209-- Go 1.26+209+- Go 1.27+
210 - GTK4 development packages210 - GTK4 development packages
211 - CEF runtime (default backend)211 - CEF runtime (default backend)
212 - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks)212 - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks)
M aur/dumber-browser-git/.SRCINFO +1 -1
@@ -5,7 +5,7 @@ pkgbase = dumber-browser-git
55 url = https://github.com/bnema/dumber
66 arch = x86_64
77 license = MIT
8- makedepends = go>=1.26
8+ makedepends = go>=1.27
99 makedepends = git
1010 makedepends = brotli
1111 depends = gtk4
@@ -5,7 +5,7 @@ pkgbase = dumber-browser-git
5 url = https://github.com/bnema/dumber5 url = https://github.com/bnema/dumber
6 arch = x86_646 arch = x86_64
7 license = MIT7 license = MIT
8- makedepends = go>=1.268+ makedepends = go>=1.27
9 makedepends = git9 makedepends = git
10 makedepends = brotli10 makedepends = brotli
11 depends = gtk411 depends = gtk4
M aur/dumber-browser-git/PKGBUILD +1 -1
@@ -6,7 +6,7 @@ pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"
66 arch=('x86_64')
77 url="https://github.com/bnema/dumber"
88 license=('MIT')
9-makedepends=('go>=1.26' 'git' 'brotli')
9+makedepends=('go>=1.27' 'git' 'brotli')
1010 depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp')
1111 optdepends=(
1212 'gst-plugins-base: Base media codecs'
@@ -6,7 +6,7 @@ pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"
6 arch=('x86_64')6 arch=('x86_64')
7 url="https://github.com/bnema/dumber"7 url="https://github.com/bnema/dumber"
8 license=('MIT')8 license=('MIT')
9-makedepends=('go>=1.26' 'git' 'brotli')9+makedepends=('go>=1.27' 'git' 'brotli')
10 depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp')10 depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp')
11 optdepends=(11 optdepends=(
12 'gst-plugins-base: Base media codecs'12 'gst-plugins-base: Base media codecs'
M docs/installation.md +1 -1
@@ -49,7 +49,7 @@ make build
4949
5050 ### Build Dependencies
5151
52-- Go 1.26+
52+- Go 1.27+
5353 - GTK4 development libraries
5454 - CEF runtime for the default backend
5555 - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks
@@ -49,7 +49,7 @@ make build
49 49
50 ### Build Dependencies50 ### Build Dependencies
51 51
52-- Go 1.26+52+- Go 1.27+
53 - GTK4 development libraries53 - GTK4 development libraries
54 - CEF runtime for the default backend54 - CEF runtime for the default backend
55 - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks55 - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks
M go.mod +1 -3
@@ -1,8 +1,6 @@
11 module github.com/bnema/dumber
22
3-go 1.26.0
4-
5-toolchain go1.26.7
3+go 1.27
64
75 require (
86 github.com/a-h/templ v0.3.1020
@@ -1,8 +1,6 @@
1 module github.com/bnema/dumber1 module github.com/bnema/dumber
2 2
3-go 1.26.03+go 1.27
4-
5-toolchain go1.26.7
6 4
7 require (5 require (
8 github.com/a-h/templ v0.3.10206 github.com/a-h/templ v0.3.1020
M go.sum +0 -4 generated file: collapsed

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