left4me/l4d2web/routes
mwiegand a4e9f6cd26
feat(l4d2-web): blueprint overlay picker — drag-list + add-dropdown
Replace the per-row checkbox + numeric Order table on the blueprint
detail page with a drag-to-reorder list of selected overlays plus a
native <select> for adding more. Removing uses an × button per row;
the option sorted-inserts back into the dropdown alphabetically.

Native HTML5 drag-and-drop, no library, no JS-disabled fallback.
Server contract is unchanged: each list row owns one hidden
<input name="overlay_ids">, DOM order = submission order, and the
existing fallback_position branch in ordered_overlay_ids_from_form
absorbs the now-omitted overlay_position_<id> fields.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 21:37:11 +02:00
..
__init__.py chore(l4d2): flatten component layout 2026-05-05 23:47:06 +02:00
auth_routes.py security: harden boundary inputs and production defaults 2026-05-07 00:53:33 +02:00
blueprint_routes.py feat(l4d2-web): managed global map overlays with daily refresh 2026-05-08 08:05:14 +02:00
files_routes.py feat(l4d2-web): overlay detail Files section with HTMX file tree + downloads 2026-05-08 20:16:25 +02:00
job_routes.py feat(l4d2-web): managed global map overlays with daily refresh 2026-05-08 08:05:14 +02:00
log_routes.py feat(l4d2-web): server identity by id, name as display label 2026-05-08 19:22:09 +02:00
overlay_routes.py feat(l4d2-web): per-overlay job list + redirect to job after build-triggering edits 2026-05-08 17:44:22 +02:00
page_routes.py feat(l4d2-web): blueprint overlay picker — drag-list + add-dropdown 2026-05-08 21:37:11 +02:00
server_routes.py feat(l4d2-web): server identity by id, name as display label 2026-05-08 19:22:09 +02:00
workshop_routes.py feat(l4d2-web): per-overlay job list + redirect to job after build-triggering edits 2026-05-08 17:44:22 +02:00