Skip to content

fix(runtime): guard optional chrome and add 100dvh viewport fallback#1

Open
Reebz wants to merge 1 commit into
bluedusk:mainfrom
Reebz:fix/runtime-null-guard-100dvh
Open

fix(runtime): guard optional chrome and add 100dvh viewport fallback#1
Reebz wants to merge 1 commit into
bluedusk:mainfrom
Reebz:fix/runtime-null-guard-100dvh

Conversation

@Reebz

@Reebz Reebz commented Jun 9, 2026

Copy link
Copy Markdown

What

Two high-severity fixes found by building and deploying a real 16:9 deck with the skill.

  1. Null-guard the Pro runtime. assets/slides-runtime.js runs top to bottom in global scope and dereferences #particles, the nav-dot rail, #progress, and #counter with no guard. A deck that omits any of these decorative elements throws before a single handler attaches, so the whole deck goes non-interactive. The inline template runtime in references/html-template.md already guards these, and this brings the Pro runtime to parity.

  2. 100dvh fallback. assets/components.css drives .deck height from 100vh, so the bottom slide line clips under the iOS URL bar and home indicator. Declaring height: 100vh then height: 100dvh keeps the old value where dvh is unsupported and uses the dynamic viewport on modern mobile. The 100vh inside the floatP keyframes is an animation transform and is left untouched.

Test

  • testing/fixtures/deck-no-particles.html (added) omits #particles, #progress, and #counter and stays fully navigable by keyboard, dots, wheel, and touch. Before the fix this deck is dead.
  • A normally authored deck with all three elements behaves identically, with no regression.
  • At mobile widths the progress bar and counter stay visible above the home indicator.

Notes

This is the smallest and highest-value change in a set of eight independent PRs opened against this fork. The other seven build on this runtime and viewport baseline, so merging this one first is the cleanest order.

Co-Authored-By: Leslie Barbara Knope (Claude Opus 4.8 (1M context)) noreply@anthropic.com

A missing decorative element killed the whole deck: the particle, nav-dot, and progress code dereferenced optional nodes in global scope, so one absent element threw before any handler attached. Guard each optional node, matching the inline template runtime that already guards them. Separately, the Pro deck height keyed off 100vh, so the bottom slide line clipped under mobile browser chrome; add a 100dvh fallback that degrades to 100vh where dvh is unsupported.

Co-Authored-By: Leslie Barbara Knope (Claude Opus 4.8 (1M context)) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 9, 2026

Copy link
Copy Markdown

@Reebz is attempting to deploy a commit to the bluedusk's projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant