left4me/l4d2web/l4d2web
mwiegand 74fd906cf4
docs(modals): codify URL-addressable modal template convention
Architectural problem flagged after the pilot: "the template renders both
as a standalone page AND as a modal fragment" contract is non-obvious for
future template authors. Task 2 originally used <dialog>, Task 8.5 had to
undo that because nested <dialog> collapses to 2px. The convention is now
in two places:

1. AGENTS.md gains a "URL-addressable modal templates" section under
   Non-Negotiable Constraints listing: outer element must be <div>, close
   buttons use data-modal-dismiss, form actions need #modal-content-scoped
   document delegation, modal chrome CSS is owned by the outer slot.
2. _modal_partial.html (the file template authors will most likely open
   when wondering "what's this layout?") carries a Jinja comment header
   summarising the rule + linking to AGENTS.md for the full convention.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:09:05 +02:00
..
routes feat(modals): GET /overlays/<id>/files/edit route 2026-05-17 11:43:18 +02:00
services refactor(datetime): introduce UtcDateTime, remove naive-strip workarounds 2026-05-16 11:59:29 +02:00
static fix(modals): drop dangling aria-labelledby + rename inner id 2026-05-17 14:03:09 +02:00
templates docs(modals): codify URL-addressable modal template convention 2026-05-17 14:09:05 +02:00
__init__.py refactor(repo): uv workspace + hatchling + layout restructure 2026-05-15 22:04:29 +02:00
app.py feat(modals): layout context processor for HX-Modal header 2026-05-17 11:27:25 +02:00
auth.py refactor(datetime): introduce UtcDateTime, remove naive-strip workarounds 2026-05-16 11:59:29 +02:00
cli.py refactor(repo): uv workspace + hatchling + layout restructure 2026-05-15 22:04:29 +02:00
config.py refactor(repo): uv workspace + hatchling + layout restructure 2026-05-15 22:04:29 +02:00
db.py refactor(repo): uv workspace + hatchling + layout restructure 2026-05-15 22:04:29 +02:00
models.py refactor(datetime): introduce UtcDateTime, remove naive-strip workarounds 2026-05-16 11:59:29 +02:00