lazyflat/web/templates
EiSiMo a212dff4d9 bewerben UX: instant feedback; drop forensics detail; partner feature
1. Bewerben button: hx-disabled-elt + hx-on::before-request flips the
   text to "läuft…" and disables the button the moment the confirm is
   accepted. .btn[disabled] now renders at 55% opacity with
   not-allowed cursor. Existing 3s poll interval picks up the running
   state for the chip beside the address.

2. Bewerbungen tab: delete the /bewerbungen/<id> forensics detail page
   + template entirely. The list now shows a plain "Report (ZIP)"
   button for every row regardless of success — same download route
   (/bewerbungen/<id>/report.zip), same visual style. External link to
   the listing moved onto the address itself.

3. Verified retention: web/retention.py runs cleanup_retention() hourly,
   which DELETEs errors + audit_log rows older than RETENTION_DAYS (14)
   and nulls applications.forensics_json for older rows. No code change
   needed.

4. Partner feature. Migration v8 adds partnerships(from_user_id,
   to_user_id, status, created_at, accepted_at). Einstellungen →
   Partner lets users:
   - send a request by username
   - accept / decline incoming requests
   - withdraw outgoing requests
   - unlink the active partnership

   A user can only have one accepted partnership; accepting one wipes
   stale pending rows involving either side. On the Wohnungen list, if
   the partner has applied to a flat, a small primary-colored circle
   with the partner's first-name initial sits on the top-right of the
   Bewerben button; if they've rejected it, the badge sits on Ablehnen.
   Badge is hover-tooltipped with the partner's name + verb.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 18:18:24 +02:00
..
_admin_logs.html ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
_admin_secrets.html secrets tab, drop commute filter, favicon, robust error reports 2026-04-21 17:56:57 +02:00
_layout.html logo: gradient square back, dog on top; footer wording 2026-04-21 17:36:26 +02:00
_settings_account.html multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
_settings_filter.html secrets tab, drop commute filter, favicon, robust error reports 2026-04-21 17:56:57 +02:00
_settings_notifications.html guard double-apply, hide error msg, wohnungen polish, bitwarden block 2026-04-21 14:20:31 +02:00
_settings_partner.html bewerben UX: instant feedback; drop forensics detail; partner feature 2026-04-21 18:18:24 +02:00
_settings_profil.html ui batch: admin tab, time filter, count-up, chevron sync, tidy 2026-04-21 17:11:58 +02:00
_settings_users.html guard double-apply, hide error msg, wohnungen polish, bitwarden block 2026-04-21 14:20:31 +02:00
_wohnung_detail.html enrichment: drop LLM for structured info, dedup images by sha + phash 2026-04-21 15:29:55 +02:00
_wohnungen_body.html bewerben UX: instant feedback; drop forensics detail; partner feature 2026-04-21 18:18:24 +02:00
admin.html secrets tab, drop commute filter, favicon, robust error reports 2026-04-21 17:56:57 +02:00
base.html bewerben UX: instant feedback; drop forensics detail; partner feature 2026-04-21 18:18:24 +02:00
bewerbungen.html bewerben UX: instant feedback; drop forensics detail; partner feature 2026-04-21 18:18:24 +02:00
einstellungen.html bewerben UX: instant feedback; drop forensics detail; partner feature 2026-04-21 18:18:24 +02:00
login.html logo: gradient square back, dog on top; footer wording 2026-04-21 17:36:26 +02:00
wohnungen.html ui: slim 4-card strip, admin-only system log, HTMX apply, title cleanup 2026-04-21 11:25:59 +02:00