diff --git a/docs/superpowers/plans/2026-05-17-server-detail-page-redesign.md b/docs/superpowers/plans/2026-05-17-server-detail-page-redesign.md new file mode 100644 index 0000000..1fac295 --- /dev/null +++ b/docs/superpowers/plans/2026-05-17-server-detail-page-redesign.md @@ -0,0 +1,1150 @@ +# Server detail page redesign — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Reshape `server_detail.html` into a top "state cluster" (lifecycle + live state + config) and a bottom tabbed inspection strip (Log / Console / Files) with expand-to-modal, removing inline page-shifting elements like the streaming job log. + +**Architecture:** Pure template + CSS + small JS refactor. Reuses existing partials (`_console_line.html`, `_overlay_file_tree.html`), the existing `` + `modals.js` infrastructure, and the existing SSE/HTMX endpoints. Two routes are touched only to add precomputed slice/count fields; no new endpoints. + +**Tech Stack:** Jinja2 templates, plain CSS (custom properties under `var(--space-*)` etc., no Tailwind), HTMX, vanilla JS, Playwright for e2e. + +**Reference spec:** `docs/superpowers/specs/2026-05-17-server-detail-page-redesign-design.md` + +--- + +## File map + +| Path | Action | Responsibility | +|------|--------|----------------| +| `l4d2web/l4d2web/templates/_macros.html` | **create** | `config_field(label, value, editable=False)` Jinja macro | +| `l4d2web/l4d2web/routes/server_routes.py` | modify (`live_state_fragment`, ~L262-274) | Slice `recent_rows` to 10 for overview, pass total count | +| `l4d2web/l4d2web/templates/_live_state.html` | rewrite | 4-col current grid (no header), 5-col recent chips, `N Recent` trigger header | +| `l4d2web/l4d2web/templates/_server_actions.html` | modify (remove L33-35; modify L26-32) | Delete inline `
`; convert latest_job link to `