Update the README walkthrough asset to match the current workspace-first flow instead of the older JSON-plus-parsing demo. The new tape now shows the recommended 4.x handoff path: workspace create with --id-only, model-native file read and patch apply, snapshot creation, drift and full reset, service start, host export, and cleanup. Re-render the README GIF from that tape so the embedded recording demonstrates the current product story directly. Validation: vhs validate docs/assets/workspace-first-run.tape; scripts/render_tape.sh docs/assets/workspace-first-run.tape (rendered outside the sandbox because vhs crashes on local-port allocation inside the sandbox).
104 lines
2.5 KiB
VHS
104 lines
2.5 KiB
VHS
Output docs/assets/workspace-first-run.gif
|
|
|
|
Require uv
|
|
Require python3
|
|
|
|
Set Shell "zsh"
|
|
Set FontSize 18
|
|
Set Width 1480
|
|
Set Height 900
|
|
Set Theme "Dracula"
|
|
Set TypingSpeed 34ms
|
|
Set Padding 24
|
|
Set WindowBar Colorful
|
|
|
|
Hide
|
|
Type "cd /home/thales/projects/personal/pyro"
|
|
Enter
|
|
Type "setopt interactivecomments"
|
|
Enter
|
|
Type "export UV_CACHE_DIR=.uv-cache"
|
|
Enter
|
|
Type "export PYRO_ENVIRONMENT_CACHE_DIR=$(mktemp -d)"
|
|
Enter
|
|
Type "alias pyro='uv run pyro'"
|
|
Enter
|
|
Type "SEED_DIR=$(mktemp -d)"
|
|
Enter
|
|
Type "EXPORT_DIR=$(mktemp -d)"
|
|
Enter
|
|
Type 'printf "%s\n" "hello from seed" > "$SEED_DIR/note.txt"'
|
|
Enter
|
|
Type 'printf "%s\n" "--- a/note.txt" "+++ b/note.txt" "@@ -1 +1 @@" "-hello from seed" "+hello from patch" > "$SEED_DIR/fix.patch"'
|
|
Enter
|
|
Type 'printf "%s\n" "temporary drift" > "$SEED_DIR/drift.txt"'
|
|
Enter
|
|
Type "pyro env pull debian:12 >/dev/null"
|
|
Enter
|
|
Show
|
|
|
|
Type "# Create a named workspace from host content"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'WORKSPACE_ID="$(pyro workspace create debian:12 --seed-path "$SEED_DIR" --name repro-fix --label issue=123 --id-only)"'
|
|
Enter
|
|
Sleep 500ms
|
|
Type 'echo "$WORKSPACE_ID"'
|
|
Enter
|
|
Sleep 1600ms
|
|
|
|
Type "# Inspect the seeded file, then patch it without shell quoting"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'pyro workspace file read "$WORKSPACE_ID" note.txt --content-only'
|
|
Enter
|
|
Sleep 1400ms
|
|
Type 'pyro workspace patch apply "$WORKSPACE_ID" --patch-file "$SEED_DIR/fix.patch"'
|
|
Enter
|
|
Sleep 1800ms
|
|
Type 'pyro workspace exec "$WORKSPACE_ID" -- cat note.txt'
|
|
Enter
|
|
Sleep 1800ms
|
|
|
|
Type "# Capture a checkpoint, then drift away from it"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'pyro workspace snapshot create "$WORKSPACE_ID" checkpoint'
|
|
Enter
|
|
Sleep 1600ms
|
|
Type 'pyro workspace file write "$WORKSPACE_ID" note.txt --text-file "$SEED_DIR/drift.txt"'
|
|
Enter
|
|
Sleep 1800ms
|
|
Type 'pyro workspace exec "$WORKSPACE_ID" -- cat note.txt'
|
|
Enter
|
|
Sleep 1800ms
|
|
|
|
Type "# Start one service, then reset the whole sandbox to the checkpoint"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'pyro workspace service start "$WORKSPACE_ID" web --ready-file .web-ready -- sh -lc "touch .web-ready && while true; do sleep 60; done"'
|
|
Enter
|
|
Sleep 2200ms
|
|
Type 'pyro workspace reset "$WORKSPACE_ID" --snapshot checkpoint'
|
|
Enter
|
|
Sleep 2200ms
|
|
Type 'pyro workspace exec "$WORKSPACE_ID" -- cat note.txt'
|
|
Enter
|
|
Sleep 1800ms
|
|
|
|
Type "# Export the recovered file back to the host"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'pyro workspace export "$WORKSPACE_ID" note.txt --output "$EXPORT_DIR/note.txt"'
|
|
Enter
|
|
Sleep 1800ms
|
|
Type 'cat "$EXPORT_DIR/note.txt"'
|
|
Enter
|
|
Sleep 1600ms
|
|
|
|
Type "# Remove the workspace when the loop is done"
|
|
Enter
|
|
Sleep 700ms
|
|
Type 'pyro workspace delete "$WORKSPACE_ID"'
|
|
Enter
|
|
Sleep 2000ms
|