Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
},
"metadata": {
"description": "Personal marketplace hosting the Showreel plugin",
"version": "1.4.0"
"version": "1.4.1"
},
"plugins": [
{
"name": "showreel",
"source": "./showreel",
"description": "Your UI, on its showreel \u2014 annotated screenshots, feature demos, flow walkthrough recordings (gif/mp4), terminal captures and before/after composites in one command each. Self-contained Chromium motor, deterministic placement, self-validated output; no MCP, cheap on tokens.",
"version": "1.4.0"
"version": "1.4.1"
}
]
}
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ jobs:
run: cd showreel/scripts && node ensure-deps.mjs
- name: ffmpeg for the end-to-end render
run: sudo apt-get update -q && sudo apt-get install -y -q ffmpeg
- name: audit the showcase roster (off-screen / broken-anchor gate)
- name: audit the showcase roster (off-screen / anchor / zoom-churn gate — strict)
run: |
node showreel/scripts/audit-roster.mjs \
"file://$PWD/assets-src/demo/index.html?gate=fail" \
assets-src/showcase-steps.json \
--width 1280 --height 676
--width 1280 --height 676 --strict
- name: end-to-end offline render (full pipeline, needs chromium + ffmpeg)
run: node --test showreel/scripts/__tests__/integration-render.test.mjs
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,32 @@ Showreel turns "show me" into a finished visual — annotated screenshots, isola
demos, flow GIFs, terminal recordings and before/after composites — driven entirely
by CSS selectors and JSON steps.

## [1.4.1] — 2026-07-06

### Fixed
- **Showcase re-rendered — zoom churn removed.** The v1.4.0 showcase re-zoomed the
deploy card three times (it framed `#deploy-panel`, pulled out, framed
`#rollback-countdown` — which lives *inside* the panel — pulled out, then framed
`#deploy-panel` again). Now one held camera on `#deploy-panel` carries the whole
deploy flow (block → auto-rollback → re-run → ship), swapping only the annotation
and the state colour. Authoring fix, not the motor. The committed source
(`assets-src/showcase-steps.json`) is replaced with this didactic flow too, so
the shipped mp4 and its source stay in sync — re-rendering reproduces the fixed
reel, not the old feature-cram roster.

### Changed
- **Zoom-churn audit now catches nested re-framing.** The audit only flagged
re-framing the *same selector* after a `camera:"out"`; it missed re-framing a
nested / containing element of the same card (the exact bug above). The live
audit (`auditRosterLive`) now runs the DOM `contains` check both ways, so
framing a child — or the parent — of a card framed a beat ago is flagged as
`zoom-churn`. Warning, never fatal — churn is a craft issue, not broken output,
and the `contains` heuristic can flag a motivated return, so blocking every
render would be wrong. CI now audits the committed showcase roster in
`--strict`, so any warning (churn included) fails the build: the project
enforces zero-churn on its own artifacts while everyone else keeps
warn-by-default plus opt-in `--strict`. +1 test (573 total).

## [1.4.0] — 2026-07-06

### Changed
Expand Down
Loading