detached a315432

refactor(adapters): group backend-shared output helpers under outputkit and guard adapter imports

commit
a315432ec7df6b048b5de3887fa3df0ecdbaa17a
author
brice · · 2026-10-08 05:40 UTC
parent
32310af
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
36 files · +31 -22
M Makefile +11 -2
@@ -1,4 +1,4 @@
1-.PHONY: build test vet race mocks mocks-check spv-check fakes-check log-check arch check perf-check color-check bin tty logs pkg install
1+.PHONY: build test vet race mocks mocks-check spv-check fakes-check log-check arch adapter-imports check perf-check color-check bin tty logs pkg install
22
33 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.
44 TTY_TIMEOUT ?= 0
@@ -56,8 +56,17 @@ LOGCOMPONENT := "component"|FieldComponent
5656 log-check:
5757 @rc=0; grep -rnE '$(LOGCOMPONENT)' --include='*.go' --exclude='*_test.go' --exclude-dir=logging internal cmd || rc=$$?; \
5858 [ $$rc -eq 1 ] || { [ $$rc -eq 0 ] && echo 'component log field: derive a logger with logging.For instead (see AGENTS.md)' >&2; exit 1; }
59-arch:
59+arch: adapter-imports
6060 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...
61+# Adapters stay independent: production code may import only the shared
62+# adapter libraries below. outputkit holds what both output backends (drm,
63+# headless) run; the others are leaf helpers.
64+ADAPTER_LIBS := outputkit/capture|outputkit/presented|outputkit/surfaces|captureallow|clock|logging|sessionsecurity|syncfile|workspaceid|xkb
65+adapter-imports:
66+ @edges=$$(CGO_ENABLED=0 go list -f '{{$$p := .ImportPath}}{{range .Imports}}{{$$p}} {{.}}{{"\n"}}{{end}}' ./internal/adapters/...) || exit 1; \
67+ bad=$$(echo "$$edges" | grep -E ' \S+/internal/adapters/' | grep -vE '/internal/adapters/($(ADAPTER_LIBS))$$' \
68+ | while read -r from to; do case $$to in $$from/*) ;; *) echo "$$from -> $$to";; esac; done); \
69+ [ -z "$$bad" ] || { echo "$$bad"; echo 'adapter imports another adapter: use ports or a shared library (Makefile ADAPTER_LIBS)' >&2; exit 1; }
6170 # Fast, mandatory guards for tiled content publications and SHM copies.
6271 perf-check:
6372 CGO_ENABLED=0 go test ./internal/core ./internal/app ./internal/adapters/drm ./internal/adapters/vulkan ./internal/adapters/wayland -run '^(TestAnimateAllocations|TestPublishAllocations|TestPublishStashSlideAllocations|TestPublishOverviewAllocations|TestPublishLeavingAllocations|TestOutputRoutingAllocations|TestReportSeenAllocations|TestFrameLifecycleTransitionsAllocations|TestFullscreenShownAllocations|TestFrameDecisionAllocations|TestCommitFrameAllocations|TestColorPipelineAllocations|TestShownBySnapshotAllocations|TestDueFramesAllocations|TestRenderSteadyStateAllocations|TestSceneOpaqueRegionAllocations|TestSceneDeltaAllocations|TestAccountFlipAllocations|TestFlipDoneAllocations|TestSceneWalkUnchangedTiledSHM|TestTiledCommitPublishAllocations|TestCapturedCommitApplyAllocations|TestCapturedViewportApplyAllocations|TestEffectiveInputEmptyTreeAllocations|TestHeadlessTiledSHMCallbackAndCopyBudget)$$' -count=1
@@ -1,4 +1,4 @@
1-.PHONY: build test vet race mocks mocks-check spv-check fakes-check log-check arch check perf-check color-check bin tty logs pkg install1+.PHONY: build test vet race mocks mocks-check spv-check fakes-check log-check arch adapter-imports check perf-check color-check bin tty logs pkg install
2 2
3 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.3 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.
4 TTY_TIMEOUT ?= 04 TTY_TIMEOUT ?= 0
@@ -56,8 +56,17 @@ LOGCOMPONENT := "component"|FieldComponent
56 log-check:56 log-check:
57 @rc=0; grep -rnE '$(LOGCOMPONENT)' --include='*.go' --exclude='*_test.go' --exclude-dir=logging internal cmd || rc=$$?; \57 @rc=0; grep -rnE '$(LOGCOMPONENT)' --include='*.go' --exclude='*_test.go' --exclude-dir=logging internal cmd || rc=$$?; \
58 [ $$rc -eq 1 ] || { [ $$rc -eq 0 ] && echo 'component log field: derive a logger with logging.For instead (see AGENTS.md)' >&2; exit 1; }58 [ $$rc -eq 1 ] || { [ $$rc -eq 0 ] && echo 'component log field: derive a logger with logging.For instead (see AGENTS.md)' >&2; exit 1; }
59-arch:59+arch: adapter-imports
60 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...60 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...
61+# Adapters stay independent: production code may import only the shared
62+# adapter libraries below. outputkit holds what both output backends (drm,
63+# headless) run; the others are leaf helpers.
64+ADAPTER_LIBS := outputkit/capture|outputkit/presented|outputkit/surfaces|captureallow|clock|logging|sessionsecurity|syncfile|workspaceid|xkb
65+adapter-imports:
66+ @edges=$$(CGO_ENABLED=0 go list -f '{{$$p := .ImportPath}}{{range .Imports}}{{$$p}} {{.}}{{"\n"}}{{end}}' ./internal/adapters/...) || exit 1; \
67+ bad=$$(echo "$$edges" | grep -E ' \S+/internal/adapters/' | grep -vE '/internal/adapters/($(ADAPTER_LIBS))$$' \
68+ | while read -r from to; do case $$to in $$from/*) ;; *) echo "$$from -> $$to";; esac; done); \
69+ [ -z "$$bad" ] || { echo "$$bad"; echo 'adapter imports another adapter: use ports or a shared library (Makefile ADAPTER_LIBS)' >&2; exit 1; }
61 # Fast, mandatory guards for tiled content publications and SHM copies.70 # Fast, mandatory guards for tiled content publications and SHM copies.
62 perf-check:71 perf-check:
63 CGO_ENABLED=0 go test ./internal/core ./internal/app ./internal/adapters/drm ./internal/adapters/vulkan ./internal/adapters/wayland -run '^(TestAnimateAllocations|TestPublishAllocations|TestPublishStashSlideAllocations|TestPublishOverviewAllocations|TestPublishLeavingAllocations|TestOutputRoutingAllocations|TestReportSeenAllocations|TestFrameLifecycleTransitionsAllocations|TestFullscreenShownAllocations|TestFrameDecisionAllocations|TestCommitFrameAllocations|TestColorPipelineAllocations|TestShownBySnapshotAllocations|TestDueFramesAllocations|TestRenderSteadyStateAllocations|TestSceneOpaqueRegionAllocations|TestSceneDeltaAllocations|TestAccountFlipAllocations|TestFlipDoneAllocations|TestSceneWalkUnchangedTiledSHM|TestTiledCommitPublishAllocations|TestCapturedCommitApplyAllocations|TestCapturedViewportApplyAllocations|TestEffectiveInputEmptyTreeAllocations|TestHeadlessTiledSHMCallbackAndCopyBudget)$$' -count=172 CGO_ENABLED=0 go test ./internal/core ./internal/app ./internal/adapters/drm ./internal/adapters/vulkan ./internal/adapters/wayland -run '^(TestAnimateAllocations|TestPublishAllocations|TestPublishStashSlideAllocations|TestPublishOverviewAllocations|TestPublishLeavingAllocations|TestOutputRoutingAllocations|TestReportSeenAllocations|TestFrameLifecycleTransitionsAllocations|TestFullscreenShownAllocations|TestFrameDecisionAllocations|TestCommitFrameAllocations|TestColorPipelineAllocations|TestShownBySnapshotAllocations|TestDueFramesAllocations|TestRenderSteadyStateAllocations|TestSceneOpaqueRegionAllocations|TestSceneDeltaAllocations|TestAccountFlipAllocations|TestFlipDoneAllocations|TestSceneWalkUnchangedTiledSHM|TestTiledCommitPublishAllocations|TestCapturedCommitApplyAllocations|TestCapturedViewportApplyAllocations|TestEffectiveInputEmptyTreeAllocations|TestHeadlessTiledSHMCallbackAndCopyBudget)$$' -count=1
M internal/adapters/drm/capture_ownership_test.go +1 -1
@@ -6,7 +6,7 @@ import (
66 "os"
77 "testing"
88
9- "github.com/bnema/neferwl/internal/adapters/capture"
9+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1010 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1111 "github.com/bnema/neferwl/internal/ports"
1212 "github.com/stretchr/testify/mock"
@@ -6,7 +6,7 @@ import (
6 "os"6 "os"
7 "testing"7 "testing"
8 8
9- "github.com/bnema/neferwl/internal/adapters/capture"9+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
10 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"10 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
11 "github.com/bnema/neferwl/internal/ports"11 "github.com/bnema/neferwl/internal/ports"
12 "github.com/stretchr/testify/mock"12 "github.com/stretchr/testify/mock"
M internal/adapters/drm/capture_test.go +1 -1
@@ -11,7 +11,7 @@ import (
1111 "testing/synctest"
1212 "time"
1313
14- "github.com/bnema/neferwl/internal/adapters/capture"
14+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1515 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1616 "github.com/bnema/neferwl/internal/ports"
1717 "github.com/stretchr/testify/mock"
@@ -11,7 +11,7 @@ import (
11 "testing/synctest"11 "testing/synctest"
12 "time"12 "time"
13 13
14- "github.com/bnema/neferwl/internal/adapters/capture"14+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
15 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"15 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
16 "github.com/bnema/neferwl/internal/ports"16 "github.com/bnema/neferwl/internal/ports"
17 "github.com/stretchr/testify/mock"17 "github.com/stretchr/testify/mock"
M internal/adapters/drm/frame_submit.go +1 -1
@@ -5,7 +5,7 @@ import (
55 "errors"
66 "time"
77
8- "github.com/bnema/neferwl/internal/adapters/capture"
8+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
99 "github.com/bnema/neferwl/internal/ports"
1010 )
1111
@@ -5,7 +5,7 @@ import (
5 "errors"5 "errors"
6 "time"6 "time"
7 7
8- "github.com/bnema/neferwl/internal/adapters/capture"8+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
9 "github.com/bnema/neferwl/internal/ports"9 "github.com/bnema/neferwl/internal/ports"
10 )10 )
11 11
M internal/adapters/drm/leaving_test.go +1 -1
@@ -3,7 +3,7 @@ package drm
33 import (
44 "testing"
55
6- "github.com/bnema/neferwl/internal/adapters/surfaces"
6+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
77 "github.com/bnema/neferwl/internal/ports"
88 )
99
@@ -3,7 +3,7 @@ package drm
3 import (3 import (
4 "testing"4 "testing"
5 5
6- "github.com/bnema/neferwl/internal/adapters/surfaces"6+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
7 "github.com/bnema/neferwl/internal/ports"7 "github.com/bnema/neferwl/internal/ports"
8 )8 )
9 9
M internal/adapters/drm/output.go +3 -3
@@ -9,10 +9,10 @@ import (
99 "time"
1010 "unsafe"
1111
12- "github.com/bnema/neferwl/internal/adapters/capture"
1312 "github.com/bnema/neferwl/internal/adapters/clock"
14- "github.com/bnema/neferwl/internal/adapters/presented"
15- "github.com/bnema/neferwl/internal/adapters/surfaces"
13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
14+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
15+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
1616
1717 "github.com/bnema/neferwl/internal/ports"
1818 "github.com/bnema/zerowrap"
@@ -9,10 +9,10 @@ import (
9 "time"9 "time"
10 "unsafe"10 "unsafe"
11 11
12- "github.com/bnema/neferwl/internal/adapters/capture"
13 "github.com/bnema/neferwl/internal/adapters/clock"12 "github.com/bnema/neferwl/internal/adapters/clock"
14- "github.com/bnema/neferwl/internal/adapters/presented"13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
15- "github.com/bnema/neferwl/internal/adapters/surfaces"14+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
15+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
16 16
17 "github.com/bnema/neferwl/internal/ports"17 "github.com/bnema/neferwl/internal/ports"
18 "github.com/bnema/zerowrap"18 "github.com/bnema/zerowrap"
M internal/adapters/drm/output_test.go +1 -1
@@ -14,7 +14,7 @@ import (
1414 "testing/synctest"
1515 "time"
1616
17- "github.com/bnema/neferwl/internal/adapters/presented"
17+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
1818 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1919 "github.com/bnema/neferwl/internal/ports"
2020 "github.com/bnema/zerowrap"
@@ -14,7 +14,7 @@ import (
14 "testing/synctest"14 "testing/synctest"
15 "time"15 "time"
16 16
17- "github.com/bnema/neferwl/internal/adapters/presented"17+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
18 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"18 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
19 "github.com/bnema/neferwl/internal/ports"19 "github.com/bnema/neferwl/internal/ports"
20 "github.com/bnema/zerowrap"20 "github.com/bnema/zerowrap"
M internal/adapters/drm/security_capture_test.go +1 -1
@@ -7,7 +7,7 @@ import (
77 "sync/atomic"
88 "testing"
99
10- "github.com/bnema/neferwl/internal/adapters/capture"
10+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1111 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1212 "github.com/bnema/neferwl/internal/ports"
1313 "github.com/stretchr/testify/mock"
@@ -7,7 +7,7 @@ import (
7 "sync/atomic"7 "sync/atomic"
8 "testing"8 "testing"
9 9
10- "github.com/bnema/neferwl/internal/adapters/capture"10+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
11 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"11 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
12 "github.com/bnema/neferwl/internal/ports"12 "github.com/bnema/neferwl/internal/ports"
13 "github.com/stretchr/testify/mock"13 "github.com/stretchr/testify/mock"
M internal/adapters/headless/capture_bounds_test.go +1 -1
@@ -7,7 +7,7 @@ import (
77 "testing"
88 "time"
99
10- "github.com/bnema/neferwl/internal/adapters/capture"
10+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1111 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1212 "github.com/bnema/neferwl/internal/ports"
1313 "github.com/stretchr/testify/mock"
@@ -7,7 +7,7 @@ import (
7 "testing"7 "testing"
8 "time"8 "time"
9 9
10- "github.com/bnema/neferwl/internal/adapters/capture"10+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
11 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"11 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
12 "github.com/bnema/neferwl/internal/ports"12 "github.com/bnema/neferwl/internal/ports"
13 "github.com/stretchr/testify/mock"13 "github.com/stretchr/testify/mock"
M internal/adapters/headless/capture_test.go +1 -1
@@ -10,7 +10,7 @@ import (
1010 "testing"
1111 "time"
1212
13- "github.com/bnema/neferwl/internal/adapters/capture"
13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1414 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1515 "github.com/bnema/neferwl/internal/ports"
1616 "github.com/stretchr/testify/mock"
@@ -10,7 +10,7 @@ import (
10 "testing"10 "testing"
11 "time"11 "time"
12 12
13- "github.com/bnema/neferwl/internal/adapters/capture"13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
15 "github.com/bnema/neferwl/internal/ports"15 "github.com/bnema/neferwl/internal/ports"
16 "github.com/stretchr/testify/mock"16 "github.com/stretchr/testify/mock"
M internal/adapters/headless/leaving_test.go +1 -1
@@ -3,7 +3,7 @@ package headless
33 import (
44 "testing"
55
6- "github.com/bnema/neferwl/internal/adapters/surfaces"
6+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
77 "github.com/bnema/neferwl/internal/ports"
88 )
99
@@ -3,7 +3,7 @@ package headless
3 import (3 import (
4 "testing"4 "testing"
5 5
6- "github.com/bnema/neferwl/internal/adapters/surfaces"6+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
7 "github.com/bnema/neferwl/internal/ports"7 "github.com/bnema/neferwl/internal/ports"
8 )8 )
9 9
M internal/adapters/headless/output.go +3 -3
@@ -12,10 +12,10 @@ import (
1212
1313 "golang.org/x/sys/unix"
1414
15- "github.com/bnema/neferwl/internal/adapters/capture"
1615 "github.com/bnema/neferwl/internal/adapters/clock"
17- "github.com/bnema/neferwl/internal/adapters/presented"
18- "github.com/bnema/neferwl/internal/adapters/surfaces"
16+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
17+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
18+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
1919 "github.com/bnema/neferwl/internal/adapters/syncfile"
2020 "github.com/bnema/neferwl/internal/ports"
2121 "github.com/bnema/zerowrap"
@@ -12,10 +12,10 @@ import (
12 12
13 "golang.org/x/sys/unix"13 "golang.org/x/sys/unix"
14 14
15- "github.com/bnema/neferwl/internal/adapters/capture"
16 "github.com/bnema/neferwl/internal/adapters/clock"15 "github.com/bnema/neferwl/internal/adapters/clock"
17- "github.com/bnema/neferwl/internal/adapters/presented"16+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
18- "github.com/bnema/neferwl/internal/adapters/surfaces"17+ "github.com/bnema/neferwl/internal/adapters/outputkit/presented"
18+ "github.com/bnema/neferwl/internal/adapters/outputkit/surfaces"
19 "github.com/bnema/neferwl/internal/adapters/syncfile"19 "github.com/bnema/neferwl/internal/adapters/syncfile"
20 "github.com/bnema/neferwl/internal/ports"20 "github.com/bnema/neferwl/internal/ports"
21 "github.com/bnema/zerowrap"21 "github.com/bnema/zerowrap"
M internal/adapters/headless/security_capture_test.go +1 -1
@@ -8,7 +8,7 @@ import (
88 "sync/atomic"
99 "testing"
1010
11- "github.com/bnema/neferwl/internal/adapters/capture"
11+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1212 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1313 "github.com/bnema/neferwl/internal/ports"
1414 "github.com/stretchr/testify/mock"
@@ -8,7 +8,7 @@ import (
8 "sync/atomic"8 "sync/atomic"
9 "testing"9 "testing"
10 10
11- "github.com/bnema/neferwl/internal/adapters/capture"11+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
12 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"12 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
13 "github.com/bnema/neferwl/internal/ports"13 "github.com/bnema/neferwl/internal/ports"
14 "github.com/stretchr/testify/mock"14 "github.com/stretchr/testify/mock"
R internal/adapters/capture/capture.go → internal/adapters/outputkit/capture/capture.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/capture_test.go → internal/adapters/outputkit/capture/capture_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/excluded.go → internal/adapters/outputkit/capture/excluded.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/excluded_test.go → internal/adapters/outputkit/capture/excluded_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/fence.go → internal/adapters/outputkit/capture/fence.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/fence_test.go → internal/adapters/outputkit/capture/fence_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/indicator_test.go → internal/adapters/outputkit/capture/indicator_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/offscreen.go → internal/adapters/outputkit/capture/offscreen.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/offscreen_fence_test.go → internal/adapters/outputkit/capture/offscreen_fence_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/offscreen_test.go → internal/adapters/outputkit/capture/offscreen_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/pipeline.go → internal/adapters/outputkit/capture/pipeline.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/pipeline_fence_test.go → internal/adapters/outputkit/capture/pipeline_fence_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/pipeline_test.go → internal/adapters/outputkit/capture/pipeline_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/security_test.go → internal/adapters/outputkit/capture/security_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/shows_test.go → internal/adapters/outputkit/capture/shows_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/capture/write_test.go → internal/adapters/outputkit/capture/write_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/presented/queue.go → internal/adapters/outputkit/presented/queue.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/presented/queue_test.go → internal/adapters/outputkit/presented/queue_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

R internal/adapters/surfaces/surfaces.go → internal/adapters/outputkit/surfaces/surfaces.go +1 -1 renamed, 98% similar
@@ -4,7 +4,7 @@
44 package surfaces
55
66 import (
7- "github.com/bnema/neferwl/internal/adapters/capture"
7+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
88 "github.com/bnema/neferwl/internal/ports"
99 )
1010
@@ -4,7 +4,7 @@
4 package surfaces4 package surfaces
5 5
6 import (6 import (
7- "github.com/bnema/neferwl/internal/adapters/capture"7+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
8 "github.com/bnema/neferwl/internal/ports"8 "github.com/bnema/neferwl/internal/ports"
9 )9 )
10 10
R internal/adapters/surfaces/surfaces_test.go → internal/adapters/outputkit/surfaces/surfaces_test.go +0 -0 renamed, 100% similar

renamed, 100% similar

M internal/adapters/wayland/release_test.go +1 -1
@@ -10,7 +10,7 @@ import (
1010
1111 "github.com/bnema/go-wayland-bindings/server/fifo"
1212 "github.com/bnema/go-wayland-bindings/server/wayland"
13- "github.com/bnema/neferwl/internal/adapters/capture"
13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1414 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1515 "github.com/bnema/neferwl/internal/ports"
1616 "github.com/stretchr/testify/mock"
@@ -10,7 +10,7 @@ import (
10 10
11 "github.com/bnema/go-wayland-bindings/server/fifo"11 "github.com/bnema/go-wayland-bindings/server/fifo"
12 "github.com/bnema/go-wayland-bindings/server/wayland"12 "github.com/bnema/go-wayland-bindings/server/wayland"
13- "github.com/bnema/neferwl/internal/adapters/capture"13+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
15 "github.com/bnema/neferwl/internal/ports"15 "github.com/bnema/neferwl/internal/ports"
16 "github.com/stretchr/testify/mock"16 "github.com/stretchr/testify/mock"
M internal/adapters/wayland/session_lock_barrier_test.go +1 -1
@@ -8,8 +8,8 @@ import (
88 "testing"
99 "time"
1010
11- "github.com/bnema/neferwl/internal/adapters/capture"
1211 "github.com/bnema/neferwl/internal/adapters/logging"
12+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1313 "github.com/bnema/neferwl/internal/adapters/sessionsecurity"
1414 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
1515 "github.com/bnema/neferwl/internal/ports"
@@ -8,8 +8,8 @@ import (
8 "testing"8 "testing"
9 "time"9 "time"
10 10
11- "github.com/bnema/neferwl/internal/adapters/capture"
12 "github.com/bnema/neferwl/internal/adapters/logging"11 "github.com/bnema/neferwl/internal/adapters/logging"
12+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
13 "github.com/bnema/neferwl/internal/adapters/sessionsecurity"13 "github.com/bnema/neferwl/internal/adapters/sessionsecurity"
14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"14 portsmocks "github.com/bnema/neferwl/internal/mocks/ports"
15 "github.com/bnema/neferwl/internal/ports"15 "github.com/bnema/neferwl/internal/ports"
M internal/app/outputs.go +1 -1
@@ -6,7 +6,7 @@ import (
66 "sync"
77 "time"
88
9- "github.com/bnema/neferwl/internal/adapters/capture"
9+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
1010
1111 "github.com/bnema/neferwl/internal/ports"
1212 )
@@ -6,7 +6,7 @@ import (
6 "sync"6 "sync"
7 "time"7 "time"
8 8
9- "github.com/bnema/neferwl/internal/adapters/capture"9+ "github.com/bnema/neferwl/internal/adapters/outputkit/capture"
10 10
11 "github.com/bnema/neferwl/internal/ports"11 "github.com/bnema/neferwl/internal/ports"
12 )12 )

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 25

Tags 10

↑↓ moveenter openesc close