v2.10.0 893d8fa

2026-01-28

39076abcli(routes): allow image as positional argument instead of --image flag GPG Verifiedbnema
339400cMerge pull request #39 from bnema/fix/validate-image-exists-on-route-add merge GPG Unverifiedbnema
5d5d9c2fix(admin): add image validation to PUT endpoint and improve error handling GPG Verifiedbnema
0df4d83feat(admin): validate image exists in registry before adding route GPG Verifiedbnema

2026-01-21

43f3ec2Merge pull request #38 from bnema/docs/wiki-cleanup-and-guides merge GPG Unverifiedbnema
a7709dcfix(wiki): remove broken development.md link GPG Verifiedbnema
db23f3adocs(wiki): cleanup broken links and add secure-vps-setup guide GPG Verifiedbnema

2026-01-18

63c01baMerge pull request #37 from bnema/chore/update-module-path-and-deps merge GPG Unverifiedbnema
fb423a0chore: update module path to github.com/bnema/gordon and bump dependencies GPG Verifiedbrice
b3a38c8Merge pull request #36 from bnema/fix/registry-auth-scope-and-cache merge GPG Unverifiedtag v2.7.1bnema
c57e4befix(tokenstore): fix race condition and cache sync in revocation GPG Verifiedbrice
21240d8fix(auth): add token cache and fix scope validation GPG Verifiedbrice
f514a0afix(auth): add token cache and fix scope validation GPG Verifiedbrice
b310320docs: fix outdated references and broken links GPG Verifiedbrice
0a90c36docs: add upgrading guide for v2.7.0 breaking changes GPG Verifiedbrice
fac7705Merge pull request #35 from bnema/fix/minor-qa-issues merge GPG Unverifiedtag v2.7.0bnema
bb7bc50test: address Copilot review feedback GPG Verifiedbrice
07eb07dfix(proxy): remove duplicate security headers on registry proxy GPG Verifiedbrice
7a52171feat(secrets): auto-discover and display attachment secrets GPG Verifiedbrice
37c310dfix(admin): return 404 for route not found on delete GPG Verifiedbrice
11f41defix(config): add Reload method to properly re-read config from disk GPG Verifiedbrice
edb08f9fix(config): remove default auth.type that broke type inference GPG Verifiedbrice
6247cf8Merge pull request #34 from bnema/refactor/ratelimit-clean-architecture merge GPG Unverifiedbnema
9f5497edocs: update auth config to use inferred type and new CLI commands GPG Verifiedbnema
3819799feat(cli): add remotes set-token command GPG Verifiedbnema
db5f449feat(cli): add auth login command for remote password authentication GPG Verifiedbnema
4a71618refactor(config): infer auth type from config instead of explicit type field GPG Verifiedbnema
3dc5982refactor(auth): support both password and token auth in password mode GPG Verifiedbnema
f3f65barefactor(registry): use shared IP extraction from middleware GPG Verifiedbnema
ec87863fix(admin): use per-IP rate limiting with RateLimiter interface GPG Verifiedbnema
b1d08adfeat(auth): add unified /auth endpoints for password and token auth GPG Verifiedbnema
0c68ab9feat(middleware): extract shared IP extraction logic GPG Verifiedbnema
4117ca5refactor(proxy): remove unused ExposeContainerID config field GPG Verifiedbnema
c37592dfix(security): wire SecurityHeaders middleware and add tests GPG Verifiedbnema
7797eccMerge pull request #33 from bnema/security/audit-2026-01 merge GPG Unverifiedbnema
65d96d2refactor(registry): use RateLimiter interface in middleware GPG Verifiedbnema
c6cd9f4feat(ratelimit): add memory store implementation with factory GPG Verifiedbnema
101f297feat(boundaries): add RateLimiter output port interface GPG Verifiedbnema
2f7df3bdocs: add rate limiting configuration guide and wiki deployment guides GPG Verifiedbnema
912a154fix(security): add trusted proxy support and rate limit token endpoint GPG Verifiedbnema

2026-01-17

bfdb3cffeat(config): add unified API rate limit configuration GPG Verifiedbnema
da336c9docs: update auth config and add security env vars documentation GPG Verifiedbnema
c97c91efix(security): redact usernames in debug logs GPG Verifiedbnema
643740bfix(security): add security headers middleware GPG Verifiedbnema
6f1f4f3fix(security): add JWT nbf claim and env var for token secret GPG Verifiedbnema
12ad37bfix(security): add rate limiting to registry API GPG Verifiedbnema
0726e4cfix(security): prevent path traversal in domain secrets store GPG Verifiedbnema
55bbfadfix(security): add SSRF protection for external routes GPG Verifiedbnema
b77f360fix(security): require explicit opt-in for unsafe token store GPG Verifiedbnema
9cc9012fix(security): prevent command injection in pass provider GPG Verifiedbnema

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