lazyflat/web
EiSiMo da180bd7c7 ui batch: admin tab, time filter, count-up, chevron sync, tidy
1. New /admin route with sub-tabs (Protokoll, Benutzer) for admins.
   Top nav: "Protokoll" dropped, "Admin" added right of Einstellungen.
   /logs and /einstellungen/benutzer issue 301 redirects to the new paths.
   Benutzer is no longer part of Einstellungen sub-nav.
2. User_filters.max_age_hours (migration v6) — new dropdown (1–10 h /
   beliebig) under Einstellungen → Filter; Wohnungen list drops flats
   older than the cutoff by discovered_at.
3. Header shows "aktualisiert vor X s" instead of a countdown. Template
   emits data-counter-up-utc with last_alert_heartbeat; app.js ticks up
   each second. When a scrape runs, the heartbeat updates and the HTMX
   swap resets the counter naturally.
4. Chevron state synced after HTMX swaps: panes preserved via hx-preserve
   keep the user's open/closed state, and the sibling button's .open
   class is re-applied by syncFlatExpandState() on afterSwap — previously
   a scroll-triggered poll would flip the chevron back to closed while
   the pane stayed open.
5. "Final absenden" footer removed from the profile page (functionality
   is unchanged, the switch still sits atop Wohnungen).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 17:11:58 +02:00
..
static ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
templates ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
app.py ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
apply_client.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
auth.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
db.py ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
Dockerfile lazyflat: combined alert + apply behind authenticated web UI 2026-04-21 09:51:35 +02:00
enrichment.py enrichment: size floor + LLM fallback for opaque CDN URLs 2026-04-21 16:44:47 +02:00
llm.py enrichment: size floor + LLM fallback for opaque CDN URLs 2026-04-21 16:44:47 +02:00
matching.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
notifications.py map debug + coord backfill, remove email channel, countdown label 2026-04-21 13:42:21 +02:00
requirements.txt enrichment: drop LLM for structured info, dedup images by sha + phash 2026-04-21 15:29:55 +02:00
retention.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
settings.py enrichment: Haiku flat details + image gallery on expand 2026-04-21 14:46:12 +02:00