v2.12.0 657aee7

2026-02-06

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
486766ffix(cli): remove duplicate error outputs and improve error handling GPG Verifiedbrice
89e85a9fix(cli): address code review feedback from Copilot and CodeRabbit GPG Verifiedbrice
4d75a1ffeat(cli): add no-confirm push flag and update docs GPG Verifiedbrice
72d9712fix(app): always resolve log file path and support http.Flusher in logging middleware GPG Verifiedbrice
66c4ceafeat(cli): register restart, push, and rollback commands with selector UI GPG Verifiedbrice
dc89b46feat(cli): add remote client methods for restart and tags API GPG Verifiedbrice
7fedf97chore: promote golang.org/x/mod to direct dependency via go mod tidy GPG Verifiedbrice
c6f58b4fix(cli): handle partial deploy failure and non-v-prefixed semver in rollback GPG Verifiedbrice

2026-02-01

62accd9Merge pull request #47 from bnema/fix/reverse-proxy-security merge GPG Unverifiedbnema
8dde40afix(docker): check actual auth fields for has_auth log instead of marshaled bytes GPG Verifiedbnema
5a0c51dfix(admin): normalize CRLF to LF before escaping in SSE log streams GPG Verifiedbnema
41b10a9feat(proxy): make max body size configurable with 512MB default and return 413 on overflow GPG Verifiedbnema
da5dc1adocs: update security documentation for hardened proxy and auth controls GPG Verifiedbnema
504de20style: remove extra blank line in logging middleware GPG Verifiedbnema
9aea98bchore: make install script executable GPG Verifiedbnema
372a0c5fix(security): use trusted-proxy-aware IP extraction in logging and remove CORS from proxy GPG Verifiedbnema
4d0f66ffix(security): add body size limit to proxy and prevent X-Forwarded-Proto spoofing GPG Verifiedbnema
5fa6d38fix(security): reject absolute file paths in SOPS provider to prevent arbitrary file access GPG Verifiedbnema
c17014ffix(security): bind container ports to localhost and remove credentials from debug logs GPG Verifiedbnema
795aa51fix(security): sanitize WWW-Authenticate realm URL and prevent header injection via X-Forwarded headers GPG Verifiedbnema
d044953fix(security): require Bearer prefix for admin API tokens and document auth-disabled behavior GPG Verifiedbnema
9da36c1fix(security): escape newlines in SSE log streaming to prevent event injection GPG Verifiedbnema
b7669fffix(install): resolve latest tag from GitHub API before downloading GPG Verifiedbrice

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