docs(cli): add VHS demo walkthrough for the Superset CLI#4461
Conversation
Adds packages/cli/demo/ with: - superset-cli.tape — VHS script (charmbracelet/vhs) - superset-cli.gif / superset-cli.mp4 — rendered ~68s walkthrough The demo narrates an end-to-end loop (auth/status → file a task → list/update/get → workspace+agent one-liner → cleanup) using a Superset-branded terminal theme.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds a VHS-scripted terminal recording demo showcasing Superset CLI commands and task workflows, plus tools to extract keystroke samples, synthesize click audio from the tape timeline, and mux that audio with a music bed into a final MP4. ChangesSuperset CLI demo and audio tooling
Sequence DiagramsequenceDiagram
participant User as Render script (add-sound.sh)
participant Tape as superset-cli.tape
participant Extract as extract_keys.py
participant Gen as gen_audio.py
participant FF as ffmpeg (via add-sound.sh)
User->>Tape: provide tape & video inputs
User->>Extract: (optional) send keyboard recording -> extract key samples
Extract->>Gen: key pool path (optional)
Tape->>Gen: parse timeline -> timestamps
Gen->>Gen: synth/jitter clicks -> write clicks.wav
User->>FF: provide source video, clicks.wav, music bed
FF->>FF: trim/fade/mix music + clicks, copy video, encode AAC -> output MP4
🎯 3 (Moderate) | ⏱️ ~20 minutes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Capy auto-review is paused for this organization because the monthly auto-review limit has been reached. Increase the limit or turn it off in billing settings to resume automatic reviews. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/cli/demo/superset-cli.tape`:
- Line 2: Update the demo header runtime string from "(~55s)" to the current
rendered value "(~68s)" in the superset-cli.tape file; locate the header line
containing the text "# Superset CLI — friendly end-to-end walkthrough (~55s)"
and replace the "(~55s)" portion with "(~68s)" so the displayed runtime matches
the actual demo output.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 94005a21-3154-4c0a-96e8-3f219548a3f0
⛔ Files ignored due to path filters (2)
packages/cli/demo/superset-cli.gifis excluded by!**/*.gifpackages/cli/demo/superset-cli.mp4is excluded by!**/*.mp4
📒 Files selected for processing (1)
packages/cli/demo/superset-cli.tape
| @@ -0,0 +1,127 @@ | |||
| # ───────────────────────────────────────────────────────────── | |||
| # Superset CLI — friendly end-to-end walkthrough (~55s) | |||
There was a problem hiding this comment.
Update the stated runtime to match current render output.
Line 2 says (~55s), but this demo is currently described/rendered as ~68s. Keeping this header accurate avoids confusion when re-recording or reviewing diffs.
Suggested patch
-# Superset CLI — friendly end-to-end walkthrough (~55s)
+# Superset CLI — friendly end-to-end walkthrough (~68s)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Superset CLI — friendly end-to-end walkthrough (~55s) | |
| # Superset CLI — friendly end-to-end walkthrough (~68s) |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/cli/demo/superset-cli.tape` at line 2, Update the demo header
runtime string from "(~55s)" to the current rendered value "(~68s)" in the
superset-cli.tape file; locate the header line containing the text "# Superset
CLI — friendly end-to-end walkthrough (~55s)" and replace the "(~55s)" portion
with "(~68s)" so the displayed runtime matches the actual demo output.
Greptile SummaryThis PR adds a VHS-rendered demo of the Superset CLI under
Confidence Score: 4/5Safe to merge — changes are purely additive demo assets with no impact on production code paths. The tape script is well-structured and the hidden setup correctly isolates the recording environment. The only concerns are a stale duration comment in the header and the packages/cli/demo/superset-cli.tape — the pipe on the tasks list step and the mismatched duration comment are worth a quick look before the demo is shared publicly.
|
| Filename | Overview |
|---|---|
| packages/cli/demo/superset-cli.tape | New VHS script defining the CLI walkthrough; contains a minor duration discrepancy (~55s in header vs ~68s in PR description) and uses `superset tasks list |
| packages/cli/demo/superset-cli.gif | Binary GIF rendered from the tape; ~875 KB, no issues. |
| packages/cli/demo/superset-cli.mp4 | Binary MP4 rendered from the tape; ~720 KB, no issues. |
Sequence Diagram
sequenceDiagram
participant Shell
participant SupersetCLI as superset CLI
participant HostService as Host Service
Note over Shell: Hidden setup: unset agent env vars, prepend dist/ to PATH
Shell->>SupersetCLI: superset auth whoami
SupersetCLI-->>Shell: current user identity
Shell->>SupersetCLI: superset status
SupersetCLI->>HostService: health check
HostService-->>SupersetCLI: healthy
SupersetCLI-->>Shell: status output
Shell->>SupersetCLI: superset --help
SupersetCLI-->>Shell: command listing
Shell->>SupersetCLI: superset tasks create --title "..." --priority high --quiet
SupersetCLI->>HostService: create task
HostService-->>SupersetCLI: task ID
SupersetCLI-->>Shell: $TASK stored in env
Shell->>SupersetCLI: "superset tasks list | head -7"
SupersetCLI->>HostService: list tasks
HostService-->>SupersetCLI: task list
SupersetCLI-->>Shell: top 7 lines
Shell->>SupersetCLI: superset tasks update $TASK --priority urgent
SupersetCLI->>HostService: update task priority
HostService-->>SupersetCLI: ok
SupersetCLI-->>Shell: confirmation
Shell->>SupersetCLI: superset tasks get $TASK
SupersetCLI->>HostService: get task details
HostService-->>SupersetCLI: task object
SupersetCLI-->>Shell: task details
Note over Shell: workspaces create shown as comment only (known host error)
Shell->>SupersetCLI: superset tasks delete $TASK
SupersetCLI->>HostService: delete task
HostService-->>SupersetCLI: ok
SupersetCLI-->>Shell: deletion confirmed
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 2
packages/cli/demo/superset-cli.tape:2
The header comment says the walkthrough is `~55s`, but the PR description describes it as a `~68s walkthrough`. The two should agree — update the header to match the actual rendered length.
```suggestion
# Superset CLI — friendly end-to-end walkthrough (~68s)
```
### Issue 2 of 2
packages/cli/demo/superset-cli.tape:81
The PR description notes that stdout isn't drained before exit, causing pipe-buffer truncation. While the tape intentionally avoids `--json` here, `superset tasks list` still pipes through `head -7`. If the task list grows large enough (or the default text output is verbose), this path can trigger the same SIGPIPE/truncation behaviour and cause the demo step to display incomplete or no output. Consider using `superset tasks list --limit 7` (or an equivalent flag) if the CLI supports it, so the output stays self-contained without relying on a pipe.
Reviews (1): Last reviewed commit: "docs(cli): add VHS demo walkthrough for ..." | Re-trigger Greptile
| @@ -0,0 +1,127 @@ | |||
| # ───────────────────────────────────────────────────────────── | |||
| # Superset CLI — friendly end-to-end walkthrough (~55s) | |||
There was a problem hiding this comment.
The header comment says the walkthrough is
~55s, but the PR description describes it as a ~68s walkthrough. The two should agree — update the header to match the actual rendered length.
| # Superset CLI — friendly end-to-end walkthrough (~55s) | |
| # Superset CLI — friendly end-to-end walkthrough (~68s) |
Prompt To Fix With AI
This is a comment left during a code review.
Path: packages/cli/demo/superset-cli.tape
Line: 2
Comment:
The header comment says the walkthrough is `~55s`, but the PR description describes it as a `~68s walkthrough`. The two should agree — update the header to match the actual rendered length.
```suggestion
# Superset CLI — friendly end-to-end walkthrough (~68s)
```
How can I resolve this? If you propose a fix, please make it concise.| Sleep 500ms | ||
| Enter | ||
| Sleep 300ms | ||
| Type "superset tasks list | head -7" |
There was a problem hiding this comment.
The PR description notes that stdout isn't drained before exit, causing pipe-buffer truncation. While the tape intentionally avoids
--json here, superset tasks list still pipes through head -7. If the task list grows large enough (or the default text output is verbose), this path can trigger the same SIGPIPE/truncation behaviour and cause the demo step to display incomplete or no output. Consider using superset tasks list --limit 7 (or an equivalent flag) if the CLI supports it, so the output stays self-contained without relying on a pipe.
Prompt To Fix With AI
This is a comment left during a code review.
Path: packages/cli/demo/superset-cli.tape
Line: 81
Comment:
The PR description notes that stdout isn't drained before exit, causing pipe-buffer truncation. While the tape intentionally avoids `--json` here, `superset tasks list` still pipes through `head -7`. If the task list grows large enough (or the default text output is verbose), this path can trigger the same SIGPIPE/truncation behaviour and cause the demo step to display incomplete or no output. Consider using `superset tasks list --limit 7` (or an equivalent flag) if the CLI supports it, so the output stays self-contained without relying on a pipe.
How can I resolve this? If you propose a fix, please make it concise.
🧹 Preview Cleanup CompleteThe following preview resources have been cleaned up:
Thank you for your contribution! 🎉 |
- Larger font (27pt) for readability; tightened narration so lines fit - Adds a beat about the CLI being the same data/hosts/workspaces as the desktop app and driving it (workspaces open) from the shell - Adds demo/add-music.sh — muxes a soft synthesized ambient pad onto the render, producing demo/superset-cli-music.mp4
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/cli/demo/add-music.sh`:
- Line 16: The FADE_AT calculation can go negative for very short inputs; change
the computation that sets FADE_AT (currently via awk BEGIN{print $DUR-3}) to
clamp to a non-negative value (e.g., max(0, DUR-3)) so the afade filter start
never receives a negative time; update the same logic used before invoking the
afade stage to ensure FADE_AT is always >= 0 and used consistently wherever
FADE_AT is referenced.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: efc8a91a-ede8-4417-b63b-05d34b9bf842
⛔ Files ignored due to path filters (3)
packages/cli/demo/superset-cli-music.mp4is excluded by!**/*.mp4packages/cli/demo/superset-cli.gifis excluded by!**/*.gifpackages/cli/demo/superset-cli.mp4is excluded by!**/*.mp4
📒 Files selected for processing (2)
packages/cli/demo/add-music.shpackages/cli/demo/superset-cli.tape
✅ Files skipped from review due to trivial changes (1)
- packages/cli/demo/superset-cli.tape
cb62ff2 to
6eb5213
Compare
Replaces add-music.sh with add-sound.sh + gen_audio.py: synthesizes a soft ambient pad AND keyboard clicks placed by replaying the .tape timeline (TypingSpeed per char, Enter as a keystroke, Sleep advances the clock, Hide..Show skipped). Output: demo/superset-cli-sound.mp4.
6eb5213 to
455d31e
Compare
…all, shimmed workspace cmds
Scales the terminal up — FontSize 27->33, Width 1640->1980, Height 880->900 — keeping the same content layout. Re-renders the walkthrough and rebuilds the soundtrack.
Rewrite the VHS tape so the on-screen commands stay short and readable: superset is shimmed in the hidden setup block to print canned, friendly output, so nothing real runs (no auth/host/network needed to render). Walkthrough now covers status, tasks create/list/update, agents list, workspaces create/open, cleanup, and an install beat (npx skills add / Claude Code /plugin). Offscreen actions read as already-synced to the Superset app. Regenerate gif/mp4 and the sound mix.
|
You're iterating quickly on this pull request. To help protect your rate limits, cubic has paused automatic reviews on new pushes for now—when you're ready for another review, comment |
What
Adds a VHS demo of the Superset CLI under
packages/cli/demo/:superset-cli.tape— the VHS script (source of truth; re-render withvhs demo/superset-cli.tapefrompackages/cli/)superset-cli.gif/superset-cli.mp4— the rendered ~70s walkthrough (silent)superset-cli-sound.mp4— same render with a soundtrack: a lo-fi music bed + real mechanical-keyboard clicksmusic.mp3/keyboard.mp3— the source audio (Pixabay royalty-free: "Lofi Production" by Pulsebox; "Mechanical Keyboard Typing HD" by VirtualZero)add-sound.sh,extract_keys.py,gen_audio.py— regenerate the soundtrack.extract_keys.pysliceskeyboard.mp3into ~53 individual keystroke samples;gen_audio.pydrops one random sample (with slight pitch/level jitter) on each key by replaying the.tapetimeline (eachTypechar costsTypingSpeed,Enteris a keystroke,Sleepadvances the clock, theHide..Showsetup block is skipped). Falls back to a numpy synth ifkeyboard.mp3is absent.The walkthrough
A friendly, comment-narrated tour of the end-to-end loop:
superset status— this machine is a host, workspaces run right heresuperset tasks create --title "…"— file a bug; it's already live in your Superset appsuperset tasks list— see it at the top of the backlogsuperset tasks update ENG-204 --priority urgent— triage itsuperset agents list— which agent can fix itsuperset workspaces create --name dark-mode-fix --agent claude --prompt "…"— one command spins up a workspace + coding agent, streaming live to the appsuperset workspaces open dark-mode-fix— jump straight into it; same workspace the desktop app showssuperset workspaces delete …+superset tasks delete …— cleans up after itselfnpx skills add https://superset.sh, or/plugin install superset@supersetin Claude CodeUses a Superset-branded terminal theme (burnt-orange accent on near-black, matching superset.sh), large type for readability.
How it's recorded
This is a demo, not a live capture: the hidden setup block in the tape redefines
supersetas a small shell function that prints canned, friendly output for each subcommand. Nothing real runs — no auth, host, or network needed to render — which keeps the on-screen commands short and readable and the recording deterministic. (Earlier attempts ran the real CLI;workspaces createagainst a real host takes ~15s and spawns a real worktree + agent, and there's no clean way to capture the new workspace id mid-script, so the shimmed approach won out.)🤖 Generated with Claude Code