fix: improve demo recording pipeline and regenerate GIFs#9
Conversation
- Add periodic hidden nudges in tape files to keep copilot TUI scrolled to the input area during streaming responses - Add multi-line prompt splitting for VHS Type command compatibility - Tune responseWait values so demos complete before recording ends - Add framerate setting to demos.json (was causing VHS parse errors) - Remove full-review-demo (too complex to reliably reproduce) - Remove scan:demos from generate:demos pipeline to preserve curated config - Add preview-gifs.js utility for quick visual validation of recordings - Regenerate all 17 demo GIFs with improved settings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR improves the demo recording pipeline for a GitHub Copilot CLI course by addressing TUI scrolling issues in VHS tape recordings, fixing multi-line prompt handling, tuning response wait times, removing an unreliable long-running demo, and adding a utility for quick visual validation of generated GIFs.
Changes:
- Replaced single
Sleepwait blocks in tape files with periodic hidden space+backspace nudges (every 3s) to keep the copilot TUI scrolled to the input area during streaming responses, and bumpedresponseWaitvalues so recordings complete fully - Removed the
full-review-demo(9 prompts, ~10min) fromdemos.jsonand cleaned up its tape file, GIF, and README reference; also removedscan:demosfrom thegenerate:demospipeline - Added
preview-gifs.jsutility for extracting preview frames from GIFs, fixed multi-line prompt splitting increate-tapes.js, and added missingframeratesetting toscan-demos.js
Reviewed changes
Copilot reviewed 24 out of 43 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.github/scripts/create-tapes.js |
Added nudge generation logic, multi-line prompt splitting, and final nudge before exit |
.github/scripts/demos.json |
Bumped default responseWait to 40, per-demo waits up to 120, removed full-review-demo |
.github/scripts/scan-demos.js |
Added framerate: 15 to default settings |
.github/scripts/preview-gifs.js |
New utility to extract preview frames from demo GIFs |
package.json |
Removed scan:demos from generate:demos pipeline |
07-putting-it-together/README.md |
Removed full-review-demo details/GIF reference |
07-putting-it-together/images/full-review-demo.tape |
Deleted |
07-putting-it-together/images/full-review-demo.gif |
Deleted |
.gitignore |
Added demo-previews directory |
**/images/*.tape (16 files) |
Regenerated with nudge pattern and updated wait times |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| framerate: 15, | ||
| startupWait: 5, | ||
| responseWait: 25, | ||
| exitWait: 2 |
There was a problem hiding this comment.
The framerate: 15 default added here diverges from the framerate: 10 used in demos.json (line 8). Similarly, responseWait: 25 and exitWait: 2 here don't match the updated demos.json values of responseWait: 40 and exitWait: 3. While scan:demos was removed from the generate:demos pipeline, it's still available as a standalone script (npm run scan:demos). Running it would overwrite demos.json with these stale defaults, undoing the curated settings. Consider updating the defaults here to match demos.json, or adding a comment noting these are intentionally different.
| framerate: 15, | |
| startupWait: 5, | |
| responseWait: 25, | |
| exitWait: 2 | |
| framerate: 10, | |
| startupWait: 5, | |
| responseWait: 40, | |
| exitWait: 3 |
Summary
frameratesetting that was causing parse errorsresponseWaitvalues across demos so recordings complete before cutoff (default 40s, per-demo up to 120s)scan:demosfrom pipeline to preserve curated config, removed unreliable full-review-demo (9 prompts, ~10min), addedpreview-gifs.jsfor quick visual validationTest plan
node .github/scripts/preview-gifs.jsto extract preview frames and visually verifynpm run create:tapesto verify tape generation still works🤖 Generated with Claude Code