Fix zoomed photo preview overflowing its box; cache-bust crop assets

Reported: on the session edit page, the photo preview rendered larger
than the rest of the form and overlapped the upload button below it.

Cause: transform:scale(zoom) only affects paint, not layout — the
preview's wrapper (.photo-preview-wrap, .novena-hero-photo-wrap) never
had overflow:hidden, so a zoomed-in crop visually spilled outside its
intended max-height/max-width box instead of being clipped to it. Cards
elsewhere were already fine (.rosary-card already has overflow:hidden).

Also: photo-crop.js/css had no cache-busting query string on any of their
three <script>/<link> tags, so a browser that loaded a page before this
feature's most recent update could easily keep serving a stale cached
copy indefinitely — added ?v=2 to force a refetch of this round's fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-16 11:03:54 -07:00
parent d1615a9e01
commit c20078890e
5 changed files with 10 additions and 6 deletions
+2 -2
View File
@@ -74,7 +74,7 @@ $page_title = $session ? 'Edit: ' . htmlspecialchars($session['name']) : 'Rosary
<title><?= $page_title ?> — <?= htmlspecialchars($site_name) ?></title>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/setup.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/builder.css?v=1">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/photo-crop.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/photo-crop.css?v=2">
<meta name="csrf-token" content="<?= htmlspecialchars(csrf_token()) ?>">
</head>
<body>
@@ -308,7 +308,7 @@ var EXISTING_STEPS = <?= json_encode(array_map(fn($s) => [
'attribution' => $s['attribution'] ?? 'leader_all',
], $edit_steps)) ?>;
</script>
<script src="<?= BASE_URL ?>/assets/js/photo-crop.js"></script>
<script src="<?= BASE_URL ?>/assets/js/photo-crop.js?v=2"></script>
<script src="<?= BASE_URL ?>/assets/js/builder.js?v=1"></script>
</body>
</html>