From 6f32a35688e39f53f56588805d15674e48334919 Mon Sep 17 00:00:00 2001 From: John Watson Date: Mon, 13 Apr 2026 22:51:39 +0100 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20swamp=20open=20=E2=80=94=20local=20?= =?UTF-8?q?web=20UI=20for=20extensions,=20workflows,=20vaults?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a new `swamp open` top-level command (also registered as `swamp serve open`) that starts a localhost web UI on port 9191 for browsing and operating a swamp repository from a browser. The command is a thin HTTP + SPA layer over libswamp — every operation goes through the same generators and deps the CLI uses. Everything renders in a themed dark UI inspired by the swamp-club /manual page (Orbitron + JetBrains Mono, neon green on black, cyber-border panels, scanline background). Extensions tab - Browse installed extensions and the swamp-club registry, with client-side filtering. Descriptions collapsed to latest version + relative publish date. - Clicking an uninstalled extension renders a rich detail panel (version, author, labels, platforms, models, methods, arguments, workflows, vaults, datastores, drivers, reports, skills, release notes) pulled from the swamp-club `/latest` endpoint when auth is available. - Install button calls `pullExtension` with force:true and hot-reloads `modelRegistry` / `vaultTypeRegistry` / `driverTypeRegistry` / `reportRegistry` so new types appear without restarting the server. - After install, a type picker handles extensions that register multiple model types (e.g. `@swamp/gcp/storage/*`). - Model instance management: create, edit (including rename, preserving ID + history), delete with inline error surface instead of alerts. Run method / run workflow - Unified SSE-based task follower ported from the swamp-club AdminMonitor: top meta strip, DAG job graph, per-job DAG of steps, expandable step rows with logs, errors, data artifacts, and reports. - Topological column-layering layout with rectilinear edges, cyan number + Orbitron label section headers, corner-bracket selection. - Historical runs (both method outputs and workflow runs) render in the exact same follower component via a run-state mapper. - Click-to-center and scroll-position preservation across live re-renders so SSE updates don't jerk the viewport. Vaults - Modal with custom combobox type selector (native