Move Peers into Settings and add a full Registry browser tab.
Release rolling / release (push) Successful in 9m39s

Peers live under Settings; Images is local-only. Registry is a top-level view with vault credentials, Hub search, and Registry API V2 catalog/tags/manifest/delete over the wire.
This commit is contained in:
Raven Scott
2026-07-15 16:04:27 -04:00
parent ab99136cb6
commit 9775fe5305
13 changed files with 1699 additions and 155 deletions
+24 -6
View File
@@ -11,6 +11,7 @@ const GO_MAP = {
d: 'dashboard',
c: 'containers',
i: 'images',
r: 'registry',
n: 'networks',
v: 'volumes',
s: 'stacks',
@@ -18,7 +19,8 @@ const GO_MAP = {
e: 'events',
h: 'host',
t: 'tunnels',
p: 'peers',
/** Peers moved under Settings — handled specially in go-chord */
p: 'settings:peers',
f: 'fleet',
a: 'access',
',': 'settings',
@@ -111,7 +113,8 @@ export function openShortcutsModal() {
['g s / g w', 'Stacks / Swarm'],
['g o', 'Deploy'],
['g e / g h', 'Events / Host'],
['g t / g p / g f', 'Tunnels / Peers / Fleet'],
['g t / g p / g f', 'Tunnels / Peers (Settings) / Fleet'],
['g r', 'Registry'],
['g a / g ,', 'Access / Settings'],
],
},
@@ -312,11 +315,26 @@ export function initTrackGUx(ctx = {}) {
window.addEventListener('scroll', onScroll, { passive: true })
updateScrollTopVisibility()
const go = (view) => {
navigateToView?.(view)
const go = (dest) => {
if (!dest) return
// Compound targets: "settings:peers" → settings view + peers subtab
if (String(dest).includes(':')) {
const [view, tab] = String(dest).split(':')
navigateToView?.(view, tab ? { settingsTab: tab } : {})
if (tab && typeof window.peardockOps?.showSettingsTab === 'function') {
// ensure subtab after view paints
requestAnimationFrame(() => window.peardockOps.showSettingsTab(tab))
}
requestAnimationFrame(() => {
animateViewEnter(view)
markListRefreshed(view)
})
return
}
navigateToView?.(dest)
requestAnimationFrame(() => {
animateViewEnter(view)
markListRefreshed(view)
animateViewEnter(dest)
markListRefreshed(dest)
})
}