v2.14.0 5e11a00

2026-02-06

cdca39ffix(secrets): recover orphaned pass keys for env injection GPG Verifiedbrice
0bd5d71fix(deploy): resolve live gordon PID across runtime paths GPG Verifiedbrice
a338153feat(cli): add custom Dockerfile flag to gordon push --build GPG Verifiedbrice
c00c10cfix(registry): make blob chunk upload limit configurable GPG Verifiedbrice
dca6537Merge pull request #58 from bnema/fix/cloudflare-chunked-push merge GPG Unverifiedtag v2.11.0bnema
fcdce6bfix(registry): address PR review feedback GPG Verifiedbrice
887cae1test(registry): add Content-Range validation test for PATCH uploads GPG Verifiedbrice
00586f3fix(push): split buildx --push into --load + docker push GPG Verifiedbrice
a26fdccfix(registry): reduce max chunk to 95MB and add Docker-Upload-UUID header GPG Verifiedbrice
4102fdfchore(plans): remove executed plan GPG Verifiedbrice
820201dMerge pull request #57 from bnema/feat/attachment-secrets-cli merge GPG Unverifiedbnema
71f5489fix(secrets): address all Copilot review comments GPG Verifiedbrice
bb9656bfix(secrets): address review feedback GPG Verifiedbrice
95aa1f7feat(secrets): add attachment secrets support GPG Verifiedbrice
c253a6dMerge pull request #55 from bnema/review-fixes merge GPG Unverifiedtag v2.10.4bnema
1bfe21efix(concurrency): pass context to EventHandler.Handle for cancellation GPG Verifiedbrice
285d237test(auth): add symmetric empty-username test for isInternalAuth GPG Verifiedbrice
cee9deffix(robustness): rollback partial attachments on deploy failure GPG Verifiedbrice
196ef1efix(concurrency): shadow loop variable in event handler goroutine GPG Verifiedbrice
e62cfa8fix(validation): enforce UUID v4 in regex pattern GPG Verifiedbrice
0f04747fix(concurrency): protect config reads with RLock, add handler timeouts GPG Verifiedbrice
acb0df2fix(logic): invalidate proxy cache on config reload, remove dead code GPG Verifiedbrice
4363057fix(concurrency): fix lock scoping in container service and event bus GPG Verifiedbrice
02b51bafix(security): use crypto-random UUIDs for blob uploads GPG Verifiedbrice
df25f46fix(security): harden auth validation, token store, and error messages GPG Verifiedbrice
ebd5aeafix(startup): start registry listener before auto-start GPG Verifiedbrice
67442d7fix(deploy): mark auto-start, reload, and config-reload as internal deploy GPG Verifiedbrice

2026-02-05

f7e7684Merge pull request #53 from bnema/fix/concurrent-deploy-race merge GPG Unverifiedtag v2.10.3bnema
afee8f4fix(container): check ctx.Err() before and after deploy lock acquisition GPG Verifiedbrice
056d50dfix(container): implement true context-aware deploy locking GPG Verifiedbrice
e0ee8dfrefactor(container): address PR review feedback GPG Verifiedbrice
6bc6fb8fix(container): serialize per-domain deploys to avoid races GPG Verifiedbrice

2026-02-03

705579aMerge pull request #52 from bnema/fix/security-audit-and-localhost-registry merge GPG Unverifiedtag v2.10.2bnema
2b4e30bfix(container): handle trailing slash and IPv6 registries GPG Verifiedbnema
855fc04fix(container): recognize localhost without port as explicit registry GPG Verifiedbnema
160b399test(container): add external registry test cases GPG Verifiedbnema
ee69b9efix(container): detect explicit registry in host:port format GPG Verifiedbnema
9e3958cMerge pull request #44 from bnema/dependabot/go_modules/github.com/golang-jwt/jwt/v5-5.3.1 merge GPG Unverifiedbnema
52a7ef7Merge pull request #51 from bnema/fix/rollback-tag-list merge GPG Unverifiedbnema
63aec82chore: address review comments GPG Verifiedbnema
6de718dfix(container): prevent double-prefixing images with localhost registry GPG Verifiedbnema
b90df44fix(auth): use UTC timestamps for token generation and validation GPG Verifiedbnema
ac3d4d7refactor(filesystem): extract digest filtering into helper function GPG Verifiedbrice
6f7f7c2refactor(filesystem): clean legacy digest entries on tag deletion GPG Verifiedbrice
72148dfrefactor(validation): add IsDigest helper and clean legacy digest entries GPG Verifiedbrice

2026-02-02

a0d4c75fix(registry): exclude digest references from tag list GPG Verifiedbnema
43db1bbMerge pull request #50 from bnema/feature/restore-admin-restart-tags merge GPG Unverifiedtag v2.10.1bnema
9cfe7dcfix(admin): handle tags not-found and extend restart tests GPG Verifiedbrice
776f5defix(security): validate inputs and stop leaking internal errors in admin API GPG Verifiedbrice
893d8faMerge pull request #49 from bnema/feature/cli-improvements merge GPG Unverifiedtag v2.10.0bnema

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 7

Tags 106

↑↓ moveenter openesc close