Skip to content

feat: first-run demo mode (no OAuth required)#26

Closed
jdwit wants to merge 1 commit into
mainfrom
feat/demo-mode
Closed

feat: first-run demo mode (no OAuth required)#26
jdwit wants to merge 1 commit into
mainfrom
feat/demo-mode

Conversation

@jdwit

@jdwit jdwit commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • New ytstudio demo sub-app: videos, analytics, comments, tour, info run the real command code paths against a built-in fake channel with no network calls.
  • YTSTUDIO_DEMO=1 ytstudio <any-command> routes get_data_service and get_analytics_service to the fake services, so any existing command works in demo mode out of the box.
  • README and docs gain a "Try in 10 seconds" block (pipx install ytstudio-cli then ytstudio demo tour) that drops the OAuth gate from the first-run experience.
  • scripts/terminaltrove-demo.tape rewritten to record the demo tour, so the terminaltrove GIF no longer needs a sandbox channel.

Highlights

  • ytstudio demo tour [--no-pauses]: end-to-end run of videos -> analytics -> comments with deterministic pacing for VHS.
  • YTSTUDIO_DEMO=1 ytstudio videos list (and any other read command) works against bundled JSON fixtures shipped in ytstudio/fixtures/.
  • ytstudio status shows mode: demo and short-circuits the credentials check when the env var is set.
  • One-shot banner per process on stderr (demo mode: using built-in fake channel (no network)), suppressed for -o json so piped JSON stays clean.
  • Fake analytics report falls back to a stable, hash-seeded synthetic response for non-overview metric combinations.

Test plan

  • uv sync --group dev
  • uv run ruff check .
  • uv run ruff format --check .
  • uv run pytest -q (234 passed, including 19 new tests; demo + demo_service coverage >= 90%)
  • uv build confirms ytstudio/fixtures/*.json ships in the wheel
  • Smoke test: pipx install . && ytstudio demo tour --no-pauses
  • Re-record terminaltrove GIF with vhs scripts/terminaltrove-demo.tape

Out of scope

  • No record/replay against a real channel (fixtures are fully synthetic).
  • Tape file is updated but the GIF re-record itself is a manual step.

Adds `ytstudio demo tour` and `YTSTUDIO_DEMO=1` env override so users can
try the CLI against a baked fake channel in seconds, without an account
or API credentials. Unblocks the "try in 10 seconds" README block and
the terminaltrove demo recording.
@jdwit

jdwit commented Jun 9, 2026

Copy link
Copy Markdown
Owner Author

Closing per current direction; only the playlists PR (#25) is being shipped from this trio. Branch left in place in case we revisit.

@jdwit jdwit closed this Jun 9, 2026
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