From 00c67879ce4ea2881a8aef7b3da92bfbdeaa0dbf Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Sun, 25 Oct 2026 19:19:20 +1100 Subject: [PATCH] Show parallel fetch as its own column in UI and TUI --- internal/tui/render.go | 6 ++--- ui/src/pages/Virtuals.tsx | 47 +++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/internal/tui/render.go b/internal/tui/render.go index a3cf3e4..d6baa99 100644 --- a/internal/tui/render.go +++ b/internal/tui/render.go @@ -108,11 +108,11 @@ func (m *model) viewVirtualsList() string { } for i, v := range m.virtuals { - parallel := "" + parallel := "-" if v.ParallelFetch { - parallel = "parallel " + parallel = "parallel" } - line := fmt.Sprintf(" %-25s %-12s %d members %s%s", + line := fmt.Sprintf(" %-25s %-12s %3d members %-8s %s", v.Name, v.PackageType, len(v.Members), parallel, v.Description) if i == m.cursor { sb.WriteString(selStyle.Render(line)) diff --git a/ui/src/pages/Virtuals.tsx b/ui/src/pages/Virtuals.tsx index 8136ef4..f0620c2 100644 --- a/ui/src/pages/Virtuals.tsx +++ b/ui/src/pages/Virtuals.tsx @@ -26,6 +26,8 @@ export function Virtuals() { .finally(() => setLoading(false)); }, []); + const selected = virtuals.find(x => x.name === expanded); + function memberLink(name: string) { const remote = remoteMap[name]; if (remote?.repo_type === 'local') { @@ -67,6 +69,13 @@ export function Virtuals() { header: 'Description', render: (v: Virtual) => v.description || —, }, + { + key: 'parallel', + header: 'Parallel', + render: (v: Virtual) => + v.parallel_fetch ? parallel : —, + width: '100px', + }, { key: 'managed', header: 'Managed', @@ -81,33 +90,23 @@ export function Virtuals() { /> )} - {expanded && ( + {selected && (
-

Members of {expanded}

-

- Parallel fetch: {virtuals.find(v => v.name === expanded)?.parallel_fetch ? 'enabled' : 'disabled'} -

+

Members of {selected.name}

- {(() => { - const v = virtuals.find(x => x.name === expanded); - return v ? ( - - ) : null; - })()} +
)}