mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-24 04:33:17 +00:00
5186d4c560
Follow-up to rcourtman/Pulse#2477. **Docker containers get the bulk editor** The strongest demand for saved links (#1556, #624) came from Docker users, but the editor only reached Proxmox and vSphere guests. The Docker containers table header now has the same **Edit links** panel, worded for containers. - Rows are keyed through `toDiscoveryConfig`, the container drawer's own metadata target, so bulk and drawer saves read and write the same `app-container:<host>:name:<name>` record. This includes Docker running inside Proxmox LXCs. - The editor now takes a source. Workload tables pass live guests, so the row model still loads only with the panel. Other tables pass ready-made rows. - The Docker table lazy-loads the trigger. Without that, Rollup merged it into the chunk the Docker and workloads pages share, renamed that chunk, and broke the `DrawerDiskListCard` bundle budget. **Read-only tokens no longer see edits that would fail** Metadata writes require `monitoring:write` for API-token sessions (the backend's `EnsureScope`). Browser sessions always pass, because metadata routes have no role check. A kiosk-style `monitoring:read` token saw edit controls that every save refused with 403. The session store now mirrors the gate from the security status `tokenScopes` (`sessionCanWriteMonitoringMetadata()`): - the bulk editor's **Edit links** button is hidden for such sessions; - the shared web-interface field shows the saved URL with open and copy, plus a one-line explanation, but no input, Save, Remove, or "Use this" suggestion. **Fewer refetches** Saves now dispatch their metadata-changed events together after the writes. `useUnifiedResources` coalesces onto one in-flight refetch, so a bulk save costs two resource refetches whether it changes 2 links or 4. Before this, it cost one per link. **Verification** - Private mock stack, Docker page and Proxmox page, at 1280 and 375px. - Real token sessions with the admin bypass off: a `monitoring:read` token sees no edit affordances, and a `monitoring:read+write` token saves a container link. - Receipt: `frontend-modern/browser-verification/e8946b639f30703c.json`. - Production build: `WorkloadsSurface` 69.08 kB, `Docker` 28.56 kB, `DrawerDiskListCard` unchanged; no violations. - Full frontend lint, plus 841 test files (15,618 tests) across features, hooks, components and stores.