Promote stable workspace product for 3.0.0
Freeze the current workspace-first surface as the stable 3.0 contract and reposition the landing docs, CLI help, and public contract around the stable workspace path after the one-shot proof. Bump the package and catalog compatibility to 3.0.0, add a dedicated workspace walkthrough tape/GIF, and mark the 3.0.0 roadmap milestone done while keeping runtime capability unchanged in this release. Validation: uv lock; UV_CACHE_DIR=.uv-cache make check; UV_CACHE_DIR=.uv-cache make dist-check; UV_CACHE_DIR=.uv-cache uv build; UV_CACHE_DIR=.uv-cache uvx --from twine twine check dist/*; built-wheel CLI smoke for pyro --help and pyro workspace --help; vhs validate plus rendered workspace-first-run.gif outside the sandbox because vhs crashes when sandboxed.
This commit is contained in:
parent
c82f4629b2
commit
f2d20ef30a
15 changed files with 255 additions and 42 deletions
BIN
docs/assets/workspace-first-run.gif
Normal file
BIN
docs/assets/workspace-first-run.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
98
docs/assets/workspace-first-run.tape
Normal file
98
docs/assets/workspace-first-run.tape
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
Output docs/assets/workspace-first-run.gif
|
||||
|
||||
Require uv
|
||||
Require python3
|
||||
|
||||
Set Shell "zsh"
|
||||
Set FontSize 18
|
||||
Set Width 1400
|
||||
Set Height 860
|
||||
Set Theme "Dracula"
|
||||
Set TypingSpeed 35ms
|
||||
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 "SYNC_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" "hello from sync" > "$SYNC_DIR/note.txt"'
|
||||
Enter
|
||||
Type "pyro env pull debian:12 >/dev/null"
|
||||
Enter
|
||||
Show
|
||||
|
||||
Type "# Create a stable workspace from host content and capture its id"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace create debian:12 --seed-path "$SEED_DIR" --json | tee /tmp/pyro-workspace.json'
|
||||
Enter
|
||||
Sleep 2200ms
|
||||
|
||||
Hide
|
||||
Type 'export WORKSPACE_ID=$(python3 -c "import json; print(json.load(open(\"/tmp/pyro-workspace.json\", encoding=\"utf-8\"))[\"workspace_id\"])")'
|
||||
Enter
|
||||
Show
|
||||
|
||||
Type "# Push a later host-side change into the same workspace"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace sync push "$WORKSPACE_ID" "$SYNC_DIR"'
|
||||
Enter
|
||||
Sleep 1800ms
|
||||
|
||||
Type "# Run inside the live workspace"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace exec "$WORKSPACE_ID" -- cat note.txt'
|
||||
Enter
|
||||
Sleep 2000ms
|
||||
|
||||
Type "# Capture a checkpoint, then start one long-running service"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace snapshot create "$WORKSPACE_ID" checkpoint'
|
||||
Enter
|
||||
Sleep 1800ms
|
||||
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 "# Reset the full sandbox back to that checkpoint"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace reset "$WORKSPACE_ID" --snapshot checkpoint'
|
||||
Enter
|
||||
Sleep 2200ms
|
||||
|
||||
Type "# Export one file back to the host and inspect it locally"
|
||||
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 1800ms
|
||||
|
||||
Type "# Remove the workspace when the loop is done"
|
||||
Enter
|
||||
Sleep 700ms
|
||||
Type 'pyro workspace delete "$WORKSPACE_ID"'
|
||||
Enter
|
||||
Sleep 2000ms
|
||||
Loading…
Add table
Add a link
Reference in a new issue