Commit Graph
127 Commits
Author SHA1 Message Date
Raven Scott cb0b59f5c3 Updates 2026-07-14 20:25:17 -04:00
Raven Scott ecafa4f22a updates 2026-07-14 20:04:49 -04:00
Raven Scott c818edac9d Secure connections with AutoPass invites, HMAC capabilities, and viewer default.
Default peers are read-only; admin requires seed proof and operators redeem AutoPass packages with signed grants. ACL UI and docs match the new trust model.
2026-07-14 19:38:53 -04:00
Raven Scott b8bd4eb902 Strip ANSI sequences from container logs for clean display.
PM2 and similar tools emit VT100 color codes that browsers hide only
partially, leaving artifacts like [32m between table columns. Strip CSI/OSC
escapes when formatting log lines, and harden Docker multiplex demux on the
server so frames are not mis-parsed as text.
2026-07-13 18:53:17 -04:00
Raven Scott f9aa8d3c7e Add container details action bar for lifecycle operations.
Show start, stop, kill, restart, pause, resume, recreate, duplicate/edit,
and remove in the container details header, enabled by runtime state, using
typed RPC for lifecycle operations.
2026-07-13 18:37:49 -04:00
Raven Scott 5c16254ff4 Add Portainer-style container bulk actions and network manager.
Always show a containers action bar (start/stop/restart/pause/resume/kill/
recreate/remove/prune) driven by row selection via typed bulk RPC. Rebuild
the container Networking tab into a join/leave network manager with aliases
and optional static IPs, plus a clearer ports table.
2026-07-13 18:22:19 -04:00
Raven Scott 4879b7ca18 Fix container duplication end-to-end (inspect, form, deploy).
Replace the broken fire-and-forget submit path with deployDockerContainer
(including replace prompts), suggest a free name-copy by default, correctly
map custom networks/mounts/ports from inspect, and load config via typed RPC.
2026-07-13 18:18:48 -04:00
Raven Scott 245d532efd Add Portainer-style container name replace on deploy.
When deploying a container whose name already exists, prompt to Replace
(stop and remove the old container) or Cancel. Server accepts replace:true
to perform the swap; clients pre-check names and retry on conflict races.
2026-07-13 18:16:54 -04:00
Raven Scott b2e04caabc Add advanced container stats tab with timeframes and I/O charts.
Expand server history samples with network/block rates and longer
retention, and rebuild the details Stats tab with live KPIs, 1m–30m
windows, auto-scale, pause, CSV export, and CPU/memory/net/disk charts.
2026-07-13 18:13:27 -04:00
Raven Scott 270b38af15 Fix terminal output on connection 2026-07-13 17:56:20 -04:00
Raven Scott ac754d6f5a Polish container overview layout for filled height without empty voids.
Split overview into a stretching Identity/Runtime/Network band and a
content-height Ports/Mounts/Timeline strip with timeline, mount rows,
and clearer empty states so vertical space is used without sparse panels.
2026-07-13 17:41:19 -04:00
Raven Scott 9680437fab Improve container details UX, dashboard shortcuts, and RPC rate limits.
Tighten container detail tabs into a fit-to-viewport layout with a richer
overview, debounced process filters, and a readable process table. Make
dashboard KPI cards navigate to resource views (with status filters that
reset on leave), and raise per-peer RPC limits so normal UI polling no
longer trips rate limiting.
2026-07-13 17:25:14 -04:00
Raven Scott f943ea92c2 Fixed. Tab panes were stacking because navigation was fighting Bootstrap’s tab state.
Cause
navigateToView was running document.querySelectorAll('.nav-link') and clearing active on every nav link — including container detail tabs (Logs, Terminal, etc.).

That left the previous pane with .show.active while its tab button no longer had .active. Bootstrap’s Tab.show() then couldn’t find/hide the previous pane, so opening Overview (or another tab) stacked both.

Fix
1. Sidebar-only nav updates — only #sidebar .nav-link[data-view] get active-state changes; detail/swarm/settings tabs are left alone.
2. Explicit tab reset — activateContainerDetailsTab() forces a single visible pane when opening a container (defaults to Overview).
3. Safer click wiring — sidebar navigation listeners are scoped the same way so they don’t attach to tab buttons.

Result
• Overview → Logs → other container → Overview shows only Overview
• Same for any other tab when switching containers
• Manual tab clicks continue to show only that tab’s content
2026-07-13 16:54:57 -04:00
snxraven 441781f9d6 Replace container ⋮ menu with a designed actions modal
Row more-button opens containerActionsModal with lifecycle, manage, and
danger-zone actions instead of a fragile context/dropdown menu.
2026-07-11 22:23:58 -04:00
snxraven 41d71b57a3 Portal container ⋮ menu to body to stop row steal and scrollbars
Replace Bootstrap table dropdowns with a fixed body-portaled menu so
hovering other rows no longer opens their menus and the open menu no
longer expands table overflow.
2026-07-11 22:00:07 -04:00
snxraven 57c87259ad Fix container row actions menu overlapping following rows
Raise stacking for the open row, use Bootstrap Popper fixed strategy so
menus escape table paint order, and pause virtualization repaint while
a dropdown is open.
2026-07-11 21:48:19 -04:00
Raven Scott 6c70b6c144 Fix container actions menu stacking above toolbar
Use Bootstrap Popper fixed strategy and a high z-index so the containers ⋮ menu is no longer covered by search, headers, or the titlebar.
2026-07-11 21:27:46 -04:00
Raven Scott 42a69c6dc7 Ship Track G UX, multi-shell terminals, Swarm default-on, install.peardock.boats
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.
2026-07-11 18:06:46 -04:00
Raven Scott ac8419029d Fix CPU and memory usage display in containers table
Parse Docker stats streams as NDJSON so samples actually land, ship
memory limit for accurate bars, keep CPU/Memory columns visible with a
compact stacked meter, and match stats updates to table rows reliably.
2026-07-11 17:26:49 -04:00
Raven Scott 54c09b5eab Retry peer reconnect every 5s until back online
Replace exponential backoff and the 12-attempt cap with a fixed 5s
retry loop that keeps dialing after unexpected disconnects. Throttle
toasts so the UI is not spammed while the offline banner stays up.
2026-07-11 17:19:09 -04:00
Raven Scott c49d7301d0 Stabilize multi-peer UI and fix container start API body
Keep the containers table scoped to the active peer with a merge store,
restore the last active server on boot with a restoring screen, start
containers without a Docker API body (v1.24+), and stop ⋮ menus from
sticking to the viewport bottom after refreshes.
2026-07-11 16:52:57 -04:00
Raven Scott 79f57d556b Keep containers table stable across refreshes
Ignore transient empty list payloads so rows never vanish, and reconcile
in place with insertBefore instead of replaceChildren (which flashed a
blank tbody). Stats and existing rows stay put until data actually changes.
2026-07-11 16:34:41 -04:00
Raven Scott 7ca939f7a9 Reduce list flicker across images, networks, volumes, stacks, tunnels, swarm
Skip skeleton wipes when data already exists, fingerprint list content so
auto-refresh does not rebuild unchanged DOM, and short-circuit container
structure updates when only live stats change.
2026-07-11 16:23:27 -04:00
Raven Scott 3f2e456b37 Smooth containers table: diff rows instead of full redraw
List refreshes no longer wipe the tbody (which reset CPU/memory to
zeros). Rows are patched in place, stats paint via rAF only when values
change, and known samples are re-seeded when a row is (re)created.
2026-07-11 16:21:58 -04:00
Raven Scott f3ebcf2894 Fix containers ⋮ menu overlapping table rows
Use Popper fixed strategy for the actions dropdown so it escapes
table-responsive overflow, and raise z-index / open-row stacking so
the menu paints above neighboring rows.
2026-07-11 16:16:40 -04:00
snxraven d87e6fe486 Remove redundant Peers shortcut from sidebar footer
Keep only the Add peer quick action; the Peers nav item is enough.
2026-07-10 23:56:47 -04:00
snxraven 3edf61bd9c Move peer list into dedicated Peers sidebar tab
Keep quick Add peer (and Peers shortcut) in the sidebar footer; full
saved-peer list, counts, and actions live on a new Peers view that is
reachable offline for managing keys.
2026-07-10 23:55:36 -04:00
snxraven 2b6cfc644f Complete Track F optional Docker/Portainer ops items
Implement volume browse, stack env file, service scale, create
secret/config, disconnect network, registry Hub search, server
schedules, resource editor, and fleet environment tags. Mark roadmap
Tracks A–F complete.
2026-07-10 23:52:26 -04:00
snxraven b62bcd697e Track E: recreate, system prune, Hub search, swarm secrets/configs
Investigate Docker/Portainer gaps and ship high-value ops: recreate
container, system prune + builder prune UI, Docker Hub search in
pull modal, Swarm secrets/configs tables. Update roadmap Track E/F.
2026-07-10 23:48:30 -04:00
snxraven 869ba6a932 Expand Settings into categorized subtabs with full client prefs
Add Appearance, Behavior, Notifications, Tunnels, Templates,
Connections, Terminal, and About panels. Wire density, sidebar,
confirmations, refresh, badge mode, toasts, tunnel defaults,
template lists, peer reset, terminal themes, and read-only server
feature flags into peardock.settings.v1.
2026-07-10 23:45:11 -04:00
snxraven 182fe1e675 Only badge the bell for high-signal notifications
Danger/warning (or explicit badge:true) increment the tray badge;
success/info stay in the notification center as history without a badge.
2026-07-10 23:42:35 -04:00
snxraven 74cd2f4a2e Idempotent tunnel create: reuse existing, block UI double-submit
Return the active tunnel for the same host:port:protocol instead of
starting a second Holesail instance; coalesce concurrent creates.
UI disables the create button and shows “already exists” feedback.
2026-07-10 23:28:07 -04:00
snxraven 9e39c27b88 Fix Pear Holesail client createRequire crash; polish confirm modals
Load holesail via dynamic ESM import (no createRequire) so Pear can connect local tunnels. Route confirmations through a designed modal with icons and animations instead of native dialogs.
2026-07-10 23:03:21 -04:00
snxraven 02f25e0981 Complete roadmap optionals: Holesail, Swarm UI, GitOps, virtualization.
Add tunnel persistence and container one-click tunnels with local
Holesail client bind, Swarm services/nodes/tasks view, GitOps stack
sync from git, deploy wizard step chrome, virtualized container lists,
and structure regression tests. Mark Tracks A–D and optional future done.
2026-07-10 22:53:30 -04:00
snxraven 573298b836 Fix peer cache wipe on quit and polish collapsed sidebar rail.
Close sockets on unload without forgetting saved peers, merge roster
writes so empty in-memory state cannot erase peers.json, and restyle the
minimized sidebar as a clean icon-only rail with compact peer dots.
2026-07-10 22:43:33 -04:00
snxraven 1b99224f16 Improve deploy errors and use bottom job tray as sole feedback.
Map Docker deploy failures to actionable how-to-fix messages, keep full
detail through RPC sanitization, and stop top-center toasts from doubling
the live job tray so operators only see one notification per action.
2026-07-10 22:40:13 -04:00
snxraven a42f5e4dcf Complete Track C roadmap: dashboard, job follow, actions, activity, roles
Ship the modern dashboard, job tray log follow, container overflow actions, stacks search, activity history, role-gated controls, invite form with copy token, first-connect checklist, and mark Track C done on the roadmap.
2026-07-10 22:31:16 -04:00
snxraven 2d8b24ec0e Support multiple deploy template list URLs with cross-list dedupe
Add Settings UI to configure many Portainer-format template catalogs (not just one), merge them on fetch, drop duplicates by image/stack/title, and show source counts on the Deploy view.
2026-07-10 22:19:46 -04:00
snxraven 60816ed78b Persist peers to disk cache and stop Request failed spam
Save configured connections to ~/.config/peardock/cache/peers.json (with localStorage migration), unwrap protomux REQUEST_ERROR causes for real messages, and quiet/dedupe background RPC failures so the notification tray is not flooded.
2026-07-10 22:16:28 -04:00
snxraven 4063c83597 Ship Track C UX polish: toasts, settings, lists, navigation
Add a visible toast stack, fix presentError double-notify, wire density and auto-refresh settings, gate destructive confirms, improve empty/skeleton/search on resource lists, and enable browser history plus keyboard palette navigation.
2026-07-10 22:10:40 -04:00
snxraven 606e5443ce Fix peer row layout and volumes RPC handler crash
Keep peer action buttons from overflowing with stable truncation and short labels, move reset peers into Settings with an infinitely scrollable peer list, and harden waitForPeerResponse so success replies without a message (listVolumes) no longer throw.
2026-07-10 21:58:37 -04:00
snxraven 5d3342fe4f Persist peers across restarts; move connect form to modal
Always store configured connections in localStorage (with invite/alias), restore and re-dial on boot, and free the sidebar so every nav item stays reachable via a scrollable nav plus an Add peer modal.
2026-07-10 21:53:28 -04:00
snxraven 2cccb8a04e Fix titlebar pear-ctrl overlap; route status into job tray
Reserve space for window controls and split the titlebar clusters so brand and chrome no longer collide. Replace the full-screen status spinner with lightweight activity jobs in the event tray.
2026-07-10 21:48:11 -04:00
snxraven 25ba70cce8 Optimize terminal input: coalesce keystrokes and hot-path RPC
Batch typing into short frames, send UTF-8 instead of base64 for text,
exempt stream methods from the general rate limit, and skip heavy
middleware on terminalInput/resize for lower latency.
2026-07-10 21:39:55 -04:00
snxraven 77f49beda3 Harden terminals and logs; polish deploy job drawer
Production-grade xterm FitAddon resize, binary-safe I/O, TTY-safe
server streams, demuxed log viewer with line buffering, and auto-dismiss
deploy job panel without the full-screen spinner.
2026-07-10 21:34:51 -04:00
snxraven db5d411089 Improve deploy UX and dark-theme text contrast
Debounce template search, harden deploy/duplicate/template flows with
reliable RPC and better form controls (switches/sliders). Raise muted
and secondary text contrast across styles so copy stays readable.
2026-07-10 21:28:01 -04:00
snxraven 53c8040020 Ship Track B UI: smart defaults, ops shell, deploy stepper
Add host snapshot and network IPAM suggestions, image-driven form
hydration, command palette, Host/Events/Settings views, offline banner,
job drawer for deploy steps, and typed RPC errors. Mark roadmap complete.
2026-07-10 21:17:04 -04:00
snxraven 0ee9b67834 Complete production roadmap: vault, peers, swarm, streams, ops
Ship remaining roadmap items: encrypted registry vault, peer invite/revoke,
Swarm/plugins behind flags, binary streams, engine create validation, deploy
rollback, schema validation, fleet/access UI, metrics, fuzz/load/soak tests,
systemd packaging, and release tooling. Mark ROADMAP fully complete.
2026-07-10 20:50:55 -04:00
Raven Scott 0bb6ba1692 breaking 2026-07-10 20:36:11 -04:00
Raven Scott d6ce72af66 Updates 2026-07-10 20:04:47 -04:00