diff --git a/internal/tui/render.go b/internal/tui/render.go
index 635a8ca..d6baa99 100644
--- a/internal/tui/render.go
+++ b/internal/tui/render.go
@@ -108,8 +108,12 @@ func (m *model) viewVirtualsList() string {
}
for i, v := range m.virtuals {
- line := fmt.Sprintf(" %-25s %-12s %d members %s",
- v.Name, v.PackageType, len(v.Members), v.Description)
+ parallel := "-"
+ if v.ParallelFetch {
+ parallel = "parallel"
+ }
+ 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))
} else {
diff --git a/ui/src/api/types.ts b/ui/src/api/types.ts
index 5bc4257..4d00a82 100644
--- a/ui/src/api/types.ts
+++ b/ui/src/api/types.ts
@@ -31,6 +31,7 @@ export interface Virtual {
description: string;
members: string[];
managed_by: string;
+ parallel_fetch: boolean;
created_at: string;
updated_at: string;
}
diff --git a/ui/src/pages/Virtuals.tsx b/ui/src/pages/Virtuals.tsx
index 41dceb1..0920db8 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 ?