ECC/scripts/lib/control-pane
Affaan Mustafa a03d63cba0 fix(security): close XSS in control-pane board controls
The interactive claim/move buttons concatenated work-item ids into inline
onclick JS with only single-quote escaping — a crafted id (ids/titles come from
GitHub sync and manual upserts, not a strict allowlist) could break out and
inject script, even on the localhost-only server.

Fix: emit the id/lane in HTML-escaped data-* attributes (escapeHtml encodes
&<>"'), attach delegated click listeners that read them via getAttribute, and
pass the raw value as a JS string arg — never concatenated into code. Adds a
regression assertion that no inline onclick handlers with interpolated ids
remain. Flagged by automated security review.

Full suite 2845/2845; lint green.
2026-06-18 18:25:28 -04:00
..
actions.js feat: add ECC2 local control pane (#2131) 2026-06-03 21:54:30 +08:00
server.js feat(control-pane): interactive JIT board — claim/move cards from the webapp 2026-06-18 18:16:46 -04:00
state.js feat(control-pane): add agent+human JIT assignment view to the work-items board 2026-06-18 16:59:30 -04:00
ui.js fix(security): close XSS in control-pane board controls 2026-06-18 18:25:28 -04:00
work-item-mutations.js feat(control-pane): interactive JIT board — claim/move cards from the webapp 2026-06-18 18:16:46 -04:00