Stop falling back to Node builtin names (process/crypto/…) which
bare-module cannot resolve. Detect Bare via globalThis.Bare and drop
bare-process (use global pid instead).
Map Node builtins to bare-* via package.json imports and dual-load
with which-runtime so holesailBareControl runs on Bare without
MODULE_NOT_FOUND for crypto/fs/http/net.
pear-run worker RPC timed out from the Electron UI. Run real holesail
in Bare index.js (holesailBareControl) and have the UI call localhost
HTTP instead of loading bare-tcp in the renderer.
pear-electron cannot load bare-tcp (require.addon) in the renderer.
Use pear-run + workers/holesail-local.cjs so the actual holesail package
runs under Bare; Node still loads holesail in-process. Add connect
fallback modal with copy URL.
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.
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.
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.
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.
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.
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.
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.
Restructure the dashboard into a height-contained grid so stats, panels, and actions fill the content pane; only individual cards scroll when their content is long.
Contain dashboard layout so views scroll inside the content pane without horizontal bleed, wrap long system values, and keep the peers panel bottom-sticky growing up to four rows before scrolling.
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.
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.
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.
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.
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.
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.