From e75feb0649a795402509925c75a4d6ec591af681 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Wed, 13 May 2026 11:36:08 +0200 Subject: [PATCH] docs: add rcon password display implementation plan --- .../2026-05-13-rcon-password-display-v1.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 docs/superpowers/plans/2026-05-13-rcon-password-display-v1.md diff --git a/docs/superpowers/plans/2026-05-13-rcon-password-display-v1.md b/docs/superpowers/plans/2026-05-13-rcon-password-display-v1.md new file mode 100644 index 0000000..dfaba4e --- /dev/null +++ b/docs/superpowers/plans/2026-05-13-rcon-password-display-v1.md @@ -0,0 +1,131 @@ +# RCON Password Display 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:** Show the RCON password on the server detail page with a show/hide toggle. + +**Architecture:** Three-file change. An external JS file (`password-reveal.js`) provides the reveal/hide interaction via event delegation on `[data-password-toggle]` attributes — no inline handlers or HTML event attributes. The template adds a row to the existing `.server-info` definition list with a masked span, value span, and toggle button. Base.html adds the script include alongside existing JS files. + +**Tech Stack:** Vanilla JS, Jinja2 templates, Flask + +--- + +## File Structure + +| File | Responsibility | +|------|---------------| +| `l4d2web/static/js/password-reveal.js` | New. Delegated click listener for show/hide toggle on `[data-password-toggle]` | +| `l4d2web/templates/server_detail.html` | Add one `
` row to `.server-info` DL | +| `l4d2web/templates/base.html` | Add ` +``` + +Expected result: `base.html` now has 5 script includes: htmx, csrf.js, sse.js, modal.js, file-tree.js, password-reveal.js. + +- [ ] **Step 2: Verify the app starts** + +Run: `cd l4d2web && python -c "from l4d2web.app import create_app; app=create_app(); print('app created ok')"` (or similar smoke test) + +Expected: App initializes without import/template errors. + +- [ ] **Step 3: Commit** + +```bash +git add l4d2web/templates/base.html +git commit -m "feat: include password-reveal.js in base template" +``` + +--- + +### Task 4: Run tests + +**Files:** None + +- [ ] **Step 1: Run existing test suite** + +Run: `pytest l4d2web/tests -q` +Expected: All tests pass (no regressions from this purely-presentational change) + +- [ ] **Step 2: If any tests fail, investigate and fix** + +Run: `pytest l4d2web/tests -q --tb=long` +Expected: Clear failure report to debug