Skip to content

docs(cli): add VHS demo walkthrough for the Superset CLI#4461

Merged
Kitenite merged 12 commits into
mainfrom
vhs-demo-superset-cli
May 12, 2026
Merged

docs(cli): add VHS demo walkthrough for the Superset CLI#4461
Kitenite merged 12 commits into
mainfrom
vhs-demo-superset-cli

Conversation

@Kitenite
Copy link
Copy Markdown
Collaborator

@Kitenite Kitenite commented May 12, 2026

What

Adds a VHS demo of the Superset CLI under packages/cli/demo/:

  • superset-cli.tape — the VHS script (source of truth; re-render with vhs demo/superset-cli.tape from packages/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 clicks
  • music.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.py slices keyboard.mp3 into ~53 individual keystroke samples; gen_audio.py drops one random sample (with slight pitch/level jitter) on each key by replaying the .tape timeline (each Type char costs TypingSpeed, Enter is a keystroke, Sleep advances the clock, the Hide..Show setup block is skipped). Falls back to a numpy synth if keyboard.mp3 is absent.

The walkthrough

A friendly, comment-narrated tour of the end-to-end loop:

  1. superset status — this machine is a host, workspaces run right here
  2. superset tasks create --title "…" — file a bug; it's already live in your Superset app
  3. superset tasks list — see it at the top of the backlog
  4. superset tasks update ENG-204 --priority urgent — triage it
  5. superset agents list — which agent can fix it
  6. superset workspaces create --name dark-mode-fix --agent claude --prompt "…" — one command spins up a workspace + coding agent, streaming live to the app
  7. superset workspaces open dark-mode-fix — jump straight into it; same workspace the desktop app shows
  8. superset workspaces delete … + superset tasks delete … — cleans up after itself
  9. closing beat: any coding agent can run all of this — npx skills add https://superset.sh, or /plugin install superset@superset in Claude Code

Uses 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 superset as 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 create against 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

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.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 12, 2026

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds 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.

Changes

Superset CLI demo and audio tooling

Layer / File(s) Summary
Demo tape configuration and environment setup
packages/cli/demo/superset-cli.tape, packages/cli/demo/.gitignore
VHS tape header, output targets (GIF/MP4), terminal rendering (shell, font, geometry, Superset-themed palette), typing/playback speeds, hidden prelude unsetting env vars, prepending ./dist to PATH, customizing PS1, and clearing terminal. .gitignore ignores __pycache__/.
Visible walkthrough and cleanup
packages/cli/demo/superset-cli.tape
Scripted demo: superset auth whoami, superset status, superset --help, task creation with ID capture, list/update/detail of the task, workspace+agent flow shown as typed/commented input (not executed), then task deletion and closing tagline.
Audio synthesis engine
packages/cli/demo/gen_audio.py
parse_events() extracts keystroke and return timestamps from the .tape timeline (handles Hide/Show, Set TypingSpeed, Sleep, Type, Enter). build_track() places synthesized or pooled/jittered click samples into a duration buffer; CLI main() normalizes and writes a mono 16-bit PCM WAV.
Keystroke extraction tool
packages/cli/demo/extract_keys.py
Detects onsets in a mono typing recording, slices per-key segments with pre-roll and fades, normalizes, and writes keyNN.wav files for use as an optional sample pool.
Audio and video muxing script
packages/cli/demo/add-sound.sh
Validates inputs and extracts source MP4 duration via ffprobe, optionally extracts keystroke samples, invokes gen_audio.py to generate clicks WAV, trims/fades/filters the music bed and mixes it with clicks via ffmpeg, copies video, encodes AAC audio, writes final MP4, and cleans temporary files.

Sequence Diagram

sequenceDiagram
  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
Loading

🎯 3 (Moderate) | ⏱️ ~20 minutes

I tap the keys and time the beat,
a Superset demo, tidy and neat.
Clicks and music stitched to frame,
the rabbit hums and names the game.
🐰✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title concisely describes the main addition: a VHS demo walkthrough for the Superset CLI. It accurately reflects the primary change across all modified files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description is comprehensive, covering the what, how, and technical details of the VHS demo. It includes rationale for design choices and implementation approach.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch vhs-demo-superset-cli

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@capy-ai
Copy link
Copy Markdown

capy-ai Bot commented May 12, 2026

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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between eb61c9b and b6cdfd8.

⛔ Files ignored due to path filters (2)
  • packages/cli/demo/superset-cli.gif is excluded by !**/*.gif
  • packages/cli/demo/superset-cli.mp4 is excluded by !**/*.mp4
📒 Files selected for processing (1)
  • packages/cli/demo/superset-cli.tape

Comment thread packages/cli/demo/superset-cli.tape Outdated
@@ -0,0 +1,127 @@
# ─────────────────────────────────────────────────────────────
# Superset CLI — friendly end-to-end walkthrough (~55s)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

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.

Suggested change
# 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-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 12, 2026

Greptile Summary

This PR adds a VHS-rendered demo of the Superset CLI under packages/cli/demo/, providing a ~68s end-to-end walkthrough of the core task management workflow using a custom Superset-branded terminal theme.

  • superset-cli.tape is the source VHS script covering auth whoami, status, --help, task create/list/update/get/delete, and a commented-out workspaces create command (skipped due to a known host error).
  • superset-cli.gif and superset-cli.mp4 are the pre-rendered binary outputs (~875 KB and ~720 KB respectively).

Confidence Score: 4/5

Safe 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 superset tasks list | head -7 pipe, which could silently truncate if task output grows — a known limitation the author acknowledges but does not fully mitigate in the tape itself.

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.

Important Files Changed

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
Loading
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

Comment thread packages/cli/demo/superset-cli.tape Outdated
@@ -0,0 +1,127 @@
# ─────────────────────────────────────────────────────────────
# Superset CLI — friendly end-to-end walkthrough (~55s)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
# 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.

Comment thread packages/cli/demo/superset-cli.tape Outdated
Sleep 500ms
Enter
Sleep 300ms
Type "superset tasks list | head -7"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 3 files

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 12, 2026

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ✅ Neon database branch

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
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between b6cdfd8 and be88b42.

⛔ Files ignored due to path filters (3)
  • packages/cli/demo/superset-cli-music.mp4 is excluded by !**/*.mp4
  • packages/cli/demo/superset-cli.gif is excluded by !**/*.gif
  • packages/cli/demo/superset-cli.mp4 is excluded by !**/*.mp4
📒 Files selected for processing (2)
  • packages/cli/demo/add-music.sh
  • packages/cli/demo/superset-cli.tape
✅ Files skipped from review due to trivial changes (1)
  • packages/cli/demo/superset-cli.tape

Comment thread packages/cli/demo/add-music.sh Outdated
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.
Kitenite added 2 commits May 12, 2026 13:01
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.
@cubic-dev-ai
Copy link
Copy Markdown
Contributor

cubic-dev-ai Bot commented May 12, 2026

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 @cubic-dev-ai review.

@Kitenite Kitenite merged commit 48def78 into main May 12, 2026
16 checks passed
@saddlepaddle saddlepaddle mentioned this pull request May 13, 2026
3 tasks
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