From e00f2e032e1a8a2e7555181ed4fd9bdf65e6ec95 Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Thu, 9 Apr 2026 00:47:37 -0700 Subject: [PATCH] feat(demo): add VHS demo tape and generated GIF Create docs/demo.tape scripting a ~15s pivot axis reassignment demo. Hide shell startup and quit so the GIF opens directly on the TUI. Set up git-lfs for docs/*.gif. Merge LFS hooks with existing beads hooks. Co-Authored-By: Claude Opus 4.6 (1M context) --- .beads/hooks/post-checkout | 5 ++++ .beads/hooks/post-commit | 5 ++++ .beads/hooks/post-merge | 5 ++++ .beads/hooks/pre-push | 5 ++++ .gitattributes | 1 + docs/demo.gif | 3 +++ docs/demo.tape | 53 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 77 insertions(+) create mode 100755 .beads/hooks/post-commit create mode 100644 .gitattributes create mode 100644 docs/demo.gif create mode 100644 docs/demo.tape diff --git a/.beads/hooks/post-checkout b/.beads/hooks/post-checkout index 67ad327..2917977 100755 --- a/.beads/hooks/post-checkout +++ b/.beads/hooks/post-checkout @@ -22,3 +22,8 @@ if command -v bd >/dev/null 2>&1; then if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi # --- END BEADS INTEGRATION v1.0.0 --- + +# --- BEGIN GIT LFS --- +command -v git-lfs >/dev/null 2>&1 || { printf >&2 "\n%s\n\n" "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-checkout' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks')."; exit 2; } +git lfs post-checkout "$@" +# --- END GIT LFS --- diff --git a/.beads/hooks/post-commit b/.beads/hooks/post-commit new file mode 100755 index 0000000..c512578 --- /dev/null +++ b/.beads/hooks/post-commit @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +# --- BEGIN GIT LFS --- +command -v git-lfs >/dev/null 2>&1 || { printf >&2 "\n%s\n\n" "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks')."; exit 2; } +git lfs post-commit "$@" +# --- END GIT LFS --- diff --git a/.beads/hooks/post-merge b/.beads/hooks/post-merge index a731aec..d3f010e 100755 --- a/.beads/hooks/post-merge +++ b/.beads/hooks/post-merge @@ -22,3 +22,8 @@ if command -v bd >/dev/null 2>&1; then if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi # --- END BEADS INTEGRATION v1.0.0 --- + +# --- BEGIN GIT LFS --- +command -v git-lfs >/dev/null 2>&1 || { printf >&2 "\n%s\n\n" "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-merge' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks')."; exit 2; } +git lfs post-merge "$@" +# --- END GIT LFS --- diff --git a/.beads/hooks/pre-push b/.beads/hooks/pre-push index 7918492..1ef122d 100755 --- a/.beads/hooks/pre-push +++ b/.beads/hooks/pre-push @@ -22,3 +22,8 @@ if command -v bd >/dev/null 2>&1; then if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi # --- END BEADS INTEGRATION v1.0.0 --- + +# --- BEGIN GIT LFS --- +command -v git-lfs >/dev/null 2>&1 || { printf >&2 "\n%s\n\n" "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'pre-push' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks')."; exit 2; } +git lfs pre-push "$@" +# --- END GIT LFS --- diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..75a37a1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +docs/*.gif filter=lfs diff=lfs merge=lfs -text diff --git a/docs/demo.gif b/docs/demo.gif new file mode 100644 index 0000000..7eaf1b5 --- /dev/null +++ b/docs/demo.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c498e3c82201c36fcf45dfeffe9a36843c7b92eb816fe72fcf8a592c6171e981 +size 305310 diff --git a/docs/demo.tape b/docs/demo.tape new file mode 100644 index 0000000..208aea8 --- /dev/null +++ b/docs/demo.tape @@ -0,0 +1,53 @@ +# improvise demo — pivot axis reassignment +# Run: nix develop --command vhs docs/demo.tape + +Output docs/demo.gif + +Set FontSize 14 +Set Width 1200 +Set Height 650 +Set Theme "Dracula" + +# Hide the shell prompt and startup +Hide +Type "./result/bin/improvise examples/demo.improv" +Enter +Sleep 2s +Show + +# Show the initial pivot: Product×Region on rows, Date_Month×Measure on columns +Sleep 2s + +# Enter tile mode +Type "T" +Sleep 1s + +# Navigate to Region tile (index 5: _Index, _Dim, Customer, Date, Product, Region) +Type "lllll" +Sleep 800ms + +# Move Region from Row to Column axis +Type "c" +Sleep 2s + +# Navigate back to Customer tile (index 2) +Type "hhh" +Sleep 600ms + +# Move Customer from Page to Row axis +Type "r" +Sleep 2s + +# Exit tile mode +Escape +Sleep 1500ms + +# Transpose to show another arrangement +Type "t" +Sleep 2s + +# Quit without recording the exit +Hide +Type ":q" +Enter +Sleep 500ms