lazyflat/web
EiSiMo e7f5cb9bee fix(lightbox): keep arrow clicks from leaking to backdrop close, raise controls above image
Logs from the user's last session showed that after walking through
all images and trying to go back from the last one, a backdrop click
fired (target===overlay) and closed the modal — even though the user
believed they clicked the prev arrow. Two reinforcing causes:

1. The image (.lightbox-image) is a sibling AFTER the buttons in the
   DOM with no z-index, so paint order put the image on top of the
   absolute-positioned arrows. Where the image's max-width/height box
   overlapped the arrows, clicks landed on the image instead of the
   arrow, and clicks in the gap between image and arrow hit the
   overlay backdrop.
2. Even when an arrow handler did fire, the click bubbled up to the
   overlay's click handler. While target===overlay was false in that
   path, the next click sometimes did land on the backdrop, and the
   close button had the same exposure.

Fix:
- Stack the controls above the image: image gets z-index:1, every
  .lightbox button gets z-index:2.
- stopPropagation on prev/next/close button clicks AND on the image
  click — guarantees they can never bubble into the overlay's
  backdrop-close handler. Backdrop close still works on actual
  backdrop clicks.
- Bump button background to rgba(0,0,0,.55) (was .08 white on dark)
  so the arrows are clearly visible against the image.

Also strip the [lazyflat.lightbox] DEBUG(lightbox) tracer logs and
the window.error catch-all — original symptom is fixed and the
existing flow is confirmed working in user's logs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 13:17:04 +02:00
..
routes fix: round €/m² in Telegram, drop "Bilder nachladen" admin button, fix lightbox visibility 2026-04-23 12:48:14 +02:00
static fix(lightbox): keep arrow clicks from leaking to backdrop close, raise controls above image 2026-04-23 13:17:04 +02:00
templates chore(web): cache-bust own static assets with build SHA 2026-04-23 12:59:20 +02:00
app.py refactor: rename wohnungsdidi → lazyflat 2026-04-23 09:26:12 +02:00
apply_client.py perf + simpler: composite index, range-filtered protokoll, simpler profile 2026-04-21 19:16:45 +02:00
auth.py multi-user: users, per-user profiles/filters/notifications, tab UI, apply forensics 2026-04-21 10:52:41 +02:00
berlin_districts.py feat(filter): Berlin-Bezirk filter in Einstellungen 2026-04-23 10:05:55 +02:00
common.py feat(web): footer build SHA shows "(latest)" or "(N behind)" 2026-04-23 11:21:24 +02:00
db.py fix: round €/m² in Telegram, drop "Bilder nachladen" admin button, fix lightbox visibility 2026-04-23 12:48:14 +02:00
Dockerfile fix(web): take git SHA from Coolify's runtime SOURCE_COMMIT 2026-04-23 11:04:24 +02:00
enrichment.py fix: round €/m² in Telegram, drop "Bilder nachladen" admin button, fix lightbox visibility 2026-04-23 12:48:14 +02:00
llm.py secrets tab, drop commute filter, favicon, robust error reports 2026-04-21 17:56:57 +02:00
matching.py feat(wohnungen): "Rausgefilterte Wohnungen" section with reason chips 2026-04-23 11:27:49 +02:00
notifications.py fix: round €/m² in Telegram, drop "Bilder nachladen" admin button, fix lightbox visibility 2026-04-23 12:48:14 +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 fix(web): read SOURCE_COMMIT directly, don't reference it in compose 2026-04-23 11:16:19 +02:00
version.py feat(web): footer build SHA shows "(latest)" or "(N behind)" 2026-04-23 11:21:24 +02:00