Probe bash/sh/ash and related shells until a container terminal works, enable Swarm APIs by default, add keyboard go-chords and appearance prefs, and point install docs at https://install.peardock.boats.
6.0 KiB
peardock Roadmap
Goal: A production-grade, peer-to-peer Docker operations console—full Engine coverage on the server, and a desktop UI that feels as complete, guided, and trustworthy as the best commercial Docker management tools, without copying any product’s branding or layout.
Status (2026-07-11):
| Track | Status |
|---|---|
| A — Platform / Engine / security | ✅ Complete |
| B — Product UI & operator experience | ✅ Complete |
| C — UX polish & full-app experience | ✅ Complete |
| D — Holesail tunnels | ✅ Complete |
| E — Docker ops / Portainer-parity (core) | ✅ Complete |
| F — Optional Docker ops enhancements | ✅ Complete |
| G — UI/UX design system & power-user chrome | 🔄 In progress |
npm test
npm run server
npm run dev
Implementation map
| Concern | Location |
|---|---|
| Host snapshot / IPAM / suggestions | server/utils/suggestions.js |
| Multi template lists | client/templateLists.js, Settings |
| Peer disk cache | client/peerCache.js |
| Jobs + feedback | client/jobs.js, libs/uiUtils.js |
| Settings subtabs | ui/ops-app.js, index.html |
| Holesail | server/services/holesail-tunnels.js, client/holesailBareControl.cjs |
| GitOps | server/utils/gitops.js |
| Recreate / system prune | recreateContainer, systemPrune |
| Track F extras UI | ui/track-f-extras.js |
| Track G UX chrome | ui/track-g-ux.js, ui/modern.css, Settings → Appearance |
| Volume browser | browseVolume RPC |
| Schedules | server/services/schedules.js |
| Fleet environments | peer env tags + filter |
Tracks A–F — ✅ Complete
See git history. Core Engine coverage, product UI, Holesail, recreate, system prune, Hub search, secrets/configs lists, settings subtabs, volume browse, schedules, fleet envs.
Track F — Optional Docker ops — ✅ Complete
| Item | Delivery |
|---|---|
| Volume file browser | RPC browseVolume + Volumes 📂 action + modal |
| Stack env file + re-deploy | Env file textarea on deploy stack → envFileContent |
| Service scale UI | Scale button on Swarm services table → scaleService |
| Create secret / config | Forms on Swarm Secrets/Configs tabs |
| Disconnect network | Unlink on container networking cards → disconnectNetwork |
| Registry browser | Access view Hub search + pull (vault for private creds) |
| Scheduled maintenance | Server schedules (prune/ping) + Host panel UI |
| Container resource editor | Resources… menu → live updateContainer |
| Log download / export | logs-download-btn + getContainerLogs |
| Multi-host environments | Fleet env tags (prod/staging/dev/lab) + filter |
Track G — UI/UX design system & power-user chrome — 🔄
Elevate the desktop console: denser/spacier layouts, accessible motion, keyboard-first navigation, and subtle chrome that makes long operating sessions less fatiguing.
Delivered (this pass)
| Item | Delivery |
|---|---|
| Keyboard shortcuts modal | ? opens a designed cheatsheet (openShortcutsModal); Settings → About link |
| Quick filter focus | / focuses the active view’s search/filter |
| Go-chords | g then letter jumps views (g c containers, g i images, …); titlebar g… hint |
| Command palette extras | Shortcuts, focus filter, toggle sidebar, cycle density, refresh view |
| Density: spacious | Settings + body[data-density=spacious|compact|comfortable] |
| Accent themes | Teal / cyan / violet (body[data-accent]) |
| Reduce motion | Preference + OS prefers-reduced-motion |
| List refresh stamp | “Updated HH:MM:SS” on headers after poll / navigation |
| Sticky table headers | Resource tables keep thead visible while scrolling |
| Scroll-to-top | Floating control after scrolling long content |
| View enter motion | Subtle fade/slide (disabled when reduce-motion) |
| Swarm auto-refresh | Included in list poll when Swarm view is active |
| ENABLE_SWARM default on | Opt out with ENABLE_SWARM=0 (same pattern as Holesail) |
Track G checklist
- Shortcuts modal + About entry
/filter focus +gchords- Palette power actions
- Density spacious + accent + reduce motion
- Refresh stamp + sticky headers + scroll-top
- Dashboard density cards — sparkline polish, empty-state CTAs per role
- Column visibility prefs per table (containers/images)
- Saved filters (status + search presets)
- Bulk action bar sticky + keyboard multi-select (
x/ shift) - Notification grouping by peer + severity collapse
- Onboarding checklist progress persisted across peers
- High-contrast mode for projector / outdoor ops
- Font scale preference (sm / md / lg)
- Mobile breakpoints for ops on tablet (read-mostly)
Proposed Track H (later)
| Theme | Ideas |
|---|---|
| Observability | Per-container sparkline history UI, export CSV, host heat map |
| Fleet | Cross-peer bulk restart, tag-based deploy targets |
| Extensibility | Plugin UI surface when ENABLE_PLUGINS=1 |
| Accessibility audit | axe / keyboard trap pass, ARIA live regions review |
Cross-cutting NFR ✅
Destructive confirms · job tray · roles · smart defaults · Holesail · GitOps · prune/recreate · notification badge policy · schedules · keyboard-first chrome (Track G)
Definition of done
- ✅ Full container/image/network/volume/stack RPC + UI
- ✅ Swarm services/nodes/tasks/secrets/configs (+ create/scale); Swarm on by default
- ✅ Holesail, GitOps, recreate, system prune, Hub search
- ✅ Volume browse, resource edit, disconnect network, schedules, fleet envs
- ✅ Settings subtabs · Access vault · multi-peer fleet
- 🔄 Track G UX chrome (first ship); remaining items open
- ✅
npm testgreen
Next: finish remaining Track G checklist (column prefs, saved filters, bulk keyboard, a11y), then open Track H as needed.