Skip to content

Harden deck runtime and authoring workflow - #1

Draft
socalindc wants to merge 2 commits into
mainfrom
agent/hardening-v1
Draft

socalindc wants to merge 2 commits into
mainfrom
agent/hardening-v1

Conversation

@socalindc

Copy link
Copy Markdown
Owner

What changed

  • retain visited slide state and isolate slide render failures
  • harden presenter synchronization with deck-scoped handshakes and build-state sync
  • persist and synchronize annotations, redraw anchors as layouts move, and namespace notes
  • remove hidden builds from focus and the accessibility tree; add control names and slide labels
  • include the existing mobile swipe/scroll work while keeping its upstream PR branch untouched
  • fix URL highlighting, dynamic count-up values, and empty/single-point charts
  • remove the concealed authoring trigger and reconcile the bundled authoring guidance
  • add Vitest regression coverage and CI execution
  • upgrade Vite to a patched release

Why

The original project is a strong authoring starter, but presenter startup, stateful slides, annotation persistence, accessibility, and runtime failure containment needed production hardening. This fork keeps the interaction model while making it safer to use for real decks.

Impact

  • visited interactive slides stay mounted by default; heavy decks can opt out with preserveSlideState={false}
  • presenter sync, notes, and annotations are scoped by <Deck id> or URL path
  • annotations now persist locally and sync between tabs
  • presentation chrome can be themed through --chrome-* tokens
  • existing mobile-swipe-and-scroll remains unchanged for upstream PR Harden Bolt Slides and add editorial Stick deck design #3

Verification

  • npx tsc --noEmit
  • npm test -- --reporter=dot — 9 tests passed
  • npm run build
  • npm audit --json — 0 vulnerabilities
  • git diff --check

Andrew Poncher and others added 2 commits July 16, 2026 19:50
On phones, a slide whose content runs taller than the viewport was
clipped at both ends (flex centering + overflow hidden), and the only
way to advance was the small dock arrows.

- Deck.tsx: quick horizontal swipes page the deck (build reveals
  included). Vertical drags are left free for slide scrolling; slow or
  diagonal drags don't page; touches on the dock, rail, grid, presenter,
  annotator, and form controls are ignored.
- base.css (≤640px): slides become scroll containers with
  `justify-content: safe center` — short slides stay centered, tall ones
  scroll, with bottom padding so the last content clears the dock. The
  atmosphere layer is pinned static (its -15% bleed + drift scale created
  ~140px of phantom scroll on every slide once slides could scroll).
  Split stacks by content height instead of crushing media into the
  leftover row. StatGrid compacts to 2-up cards so six stats fit one
  phone screen. Dock and annotator bar respect safe-area insets.
- index.html: viewport-fit=cover for notched phones.
- SKILL.md: document the phone behavior per CONTRIBUTING.

npx tsc --noEmit and npm run build both pass; desktop (>640px) rendering
is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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