Dashboard: programs list deployments; Tools page; statics on Services; editable launcher

- Programs page: each card lists the program's deployments (name · kind) instead
  of a single kind badge; kind-filter chips removed (nav is the kind lens now).
  protonmail honestly shows tool + job.
- New Tools nav page (Wrench) — programs with a tool deployment (/programs?kind=tool).
- Services page now shows statics too: /services returns service + static, and a
  static renders as a caddy-served card (KindBadge, served URL, no start/stop).
- Program detail: DeploymentsSection + deleteConfirm rebuilt over program.deployments;
  header drops the (now nonexistent) program kind.
- ServiceFields / JobFields: launcher is now an editable select (python|command|
  container|compose|node), persisted into run.launcher via the normal save.

clean pnpm build + tsc --noEmit.
This commit is contained in:
2026-07-01 12:32:09 -07:00
parent 10a86d0b6f
commit 01505328ad
13 changed files with 199 additions and 148 deletions

View File

@@ -10,6 +10,7 @@ import {
Package,
Server,
Share2,
Wrench,
X,
} from "lucide-react"
import { cn } from "@/lib/utils"
@@ -20,6 +21,7 @@ const NAV = [
{ to: "/gateway", label: "Gateway", icon: Globe, end: false },
{ to: "/services", label: "Services", icon: Server, end: false },
{ to: "/scheduled", label: "Scheduled", icon: Clock, end: false },
{ to: "/tools", label: "Tools", icon: Wrench, end: false },
{ to: "/programs", label: "Programs", icon: Package, end: false },
{ to: "/mesh", label: "Mesh", icon: Share2, end: false },
]