detached 1a3e1ca

fix: truncate image reference from end to maintain valid format

Fixes truncation to produce "name@sha256:dig..." instead of
"name...@sha256:digest" which was an invalid reference format.
commit
1a3e1cae49b07c120d0040dfb5d2d7294cf20599
author
brice · · 2026-01-17 11:57 UTC
parent
6c2bf1e
signature
unsigned
1 file · +4 -8
M internal/adapters/in/cli/routes.go +4 -8
@@ -31,15 +31,11 @@ func truncateImage(image string, maxLen int) string {
3131 }
3232 short := fmt.Sprintf("%s@sha256:%s", name, digest)
3333 if len(short) > maxLen {
34- // Truncate name if still too long
35- available := maxLen - len("@sha256:") - len(digest) - 3 // 3 for ellipsis
36- if available > 0 {
37- if len(name) > available {
38- name = name[:available]
39- }
40- name = name + "..."
41- short = fmt.Sprintf("%s@sha256:%s", name, digest)
34+ // Truncate from the end to maintain valid reference format
35+ if maxLen <= 3 {
36+ return short[:maxLen]
4237 }
38+ return short[:maxLen-3] + "..."
4339 }
4440 return short
4541 }
@@ -31,15 +31,11 @@ func truncateImage(image string, maxLen int) string {
31 }31 }
32 short := fmt.Sprintf("%s@sha256:%s", name, digest)32 short := fmt.Sprintf("%s@sha256:%s", name, digest)
33 if len(short) > maxLen {33 if len(short) > maxLen {
34- // Truncate name if still too long34+ // Truncate from the end to maintain valid reference format
35- available := maxLen - len("@sha256:") - len(digest) - 3 // 3 for ellipsis35+ if maxLen <= 3 {
36- if available > 0 {36+ return short[:maxLen]
37- if len(name) > available {
38- name = name[:available]
39- }
40- name = name + "..."
41- short = fmt.Sprintf("%s@sha256:%s", name, digest)
42 }37 }
38+ return short[:maxLen-3] + "..."
43 }39 }
44 return short40 return short
45 }41 }

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