diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 2b9e21b2..922e6c5d 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -48,3 +48,6 @@ jobs: - name: Detect unused files and dependencies run: npm run knip + + - name: Test + run: npm test diff --git a/docs/package.json b/docs/package.json index 95d1dc8b..a46e7095 100644 --- a/docs/package.json +++ b/docs/package.json @@ -6,6 +6,7 @@ "dev": "astro dev --port 4322 --open", "build": "astro build", "preview": "astro preview", + "test": "node --test \"tests/**/*.test.js\"", "astro": "astro", "typecheck": "astro check", "format:check": "prettier --check src", diff --git a/docs/public/features/posters/agentic-demo.jpg b/docs/public/features/posters/agentic-demo.jpg deleted file mode 100644 index 901b5ee9..00000000 Binary files a/docs/public/features/posters/agentic-demo.jpg and /dev/null differ diff --git a/docs/public/features/posters/agentic-demo.webp b/docs/public/features/posters/agentic-demo.webp new file mode 100644 index 00000000..2a381d91 Binary files /dev/null and b/docs/public/features/posters/agentic-demo.webp differ diff --git a/docs/public/features/posters/asc-drag-drop-demo.jpg b/docs/public/features/posters/asc-drag-drop-demo.jpg deleted file mode 100644 index afdb831d..00000000 Binary files a/docs/public/features/posters/asc-drag-drop-demo.jpg and /dev/null differ diff --git a/docs/public/features/posters/asc-drag-drop-demo.webp b/docs/public/features/posters/asc-drag-drop-demo.webp new file mode 100644 index 00000000..1e9c77fd Binary files /dev/null and b/docs/public/features/posters/asc-drag-drop-demo.webp differ diff --git a/docs/public/features/posters/magnifier-color-picker.jpg b/docs/public/features/posters/magnifier-color-picker.jpg deleted file mode 100644 index 7f77e18b..00000000 Binary files a/docs/public/features/posters/magnifier-color-picker.jpg and /dev/null differ diff --git a/docs/public/features/posters/magnifier-color-picker.webp b/docs/public/features/posters/magnifier-color-picker.webp new file mode 100644 index 00000000..aa112c17 Binary files /dev/null and b/docs/public/features/posters/magnifier-color-picker.webp differ diff --git a/docs/public/features/posters/network-monitoring-demo.jpg b/docs/public/features/posters/network-monitoring-demo.jpg deleted file mode 100644 index c985cc25..00000000 Binary files a/docs/public/features/posters/network-monitoring-demo.jpg and /dev/null differ diff --git a/docs/public/features/posters/network-monitoring-demo.webp b/docs/public/features/posters/network-monitoring-demo.webp new file mode 100644 index 00000000..802ebaae Binary files /dev/null and b/docs/public/features/posters/network-monitoring-demo.webp differ diff --git a/docs/public/features/posters/onboarding-compare.jpg b/docs/public/features/posters/onboarding-compare.jpg deleted file mode 100644 index 01097e29..00000000 Binary files a/docs/public/features/posters/onboarding-compare.jpg and /dev/null differ diff --git a/docs/public/features/posters/onboarding-compare.webp b/docs/public/features/posters/onboarding-compare.webp new file mode 100644 index 00000000..de3ff9e7 Binary files /dev/null and b/docs/public/features/posters/onboarding-compare.webp differ diff --git a/docs/public/features/posters/physical-device-testing.jpg b/docs/public/features/posters/physical-device-testing.jpg deleted file mode 100644 index 1806699d..00000000 Binary files a/docs/public/features/posters/physical-device-testing.jpg and /dev/null differ diff --git a/docs/public/features/posters/physical-device-testing.webp b/docs/public/features/posters/physical-device-testing.webp new file mode 100644 index 00000000..8a40102c Binary files /dev/null and b/docs/public/features/posters/physical-device-testing.webp differ diff --git a/docs/public/features/posters/quick-actions.jpg b/docs/public/features/posters/quick-actions.jpg deleted file mode 100644 index 6b9bcfe8..00000000 Binary files a/docs/public/features/posters/quick-actions.jpg and /dev/null differ diff --git a/docs/public/features/posters/quick-actions.webp b/docs/public/features/posters/quick-actions.webp new file mode 100644 index 00000000..1ab1f61a Binary files /dev/null and b/docs/public/features/posters/quick-actions.webp differ diff --git a/docs/public/features/posters/recording-example.jpg b/docs/public/features/posters/recording-example.jpg deleted file mode 100644 index 6ea9e7f3..00000000 Binary files a/docs/public/features/posters/recording-example.jpg and /dev/null differ diff --git a/docs/public/features/posters/recording-example.webp b/docs/public/features/posters/recording-example.webp new file mode 100644 index 00000000..13599da0 Binary files /dev/null and b/docs/public/features/posters/recording-example.webp differ diff --git a/docs/public/features/posters/simulator-airplane-mode.jpg b/docs/public/features/posters/simulator-airplane-mode.jpg deleted file mode 100644 index b428e21b..00000000 Binary files a/docs/public/features/posters/simulator-airplane-mode.jpg and /dev/null differ diff --git a/docs/public/features/posters/simulator-airplane-mode.webp b/docs/public/features/posters/simulator-airplane-mode.webp new file mode 100644 index 00000000..c67f2a05 Binary files /dev/null and b/docs/public/features/posters/simulator-airplane-mode.webp differ diff --git a/docs/public/features/posters/simulator-camera.jpg b/docs/public/features/posters/simulator-camera.jpg deleted file mode 100644 index ec2ed128..00000000 Binary files a/docs/public/features/posters/simulator-camera.jpg and /dev/null differ diff --git a/docs/public/features/posters/simulator-camera.webp b/docs/public/features/posters/simulator-camera.webp new file mode 100644 index 00000000..ca88bf01 Binary files /dev/null and b/docs/public/features/posters/simulator-camera.webp differ diff --git a/docs/public/features/posters/slow-animations.jpg b/docs/public/features/posters/slow-animations.jpg deleted file mode 100644 index 0d1ec061..00000000 Binary files a/docs/public/features/posters/slow-animations.jpg and /dev/null differ diff --git a/docs/public/features/posters/slow-animations.webp b/docs/public/features/posters/slow-animations.webp new file mode 100644 index 00000000..de39250d Binary files /dev/null and b/docs/public/features/posters/slow-animations.webp differ diff --git a/docs/public/features/posters/team-insights-dashboard.jpg b/docs/public/features/posters/team-insights-dashboard.jpg deleted file mode 100644 index dd3be95d..00000000 Binary files a/docs/public/features/posters/team-insights-dashboard.jpg and /dev/null differ diff --git a/docs/public/features/posters/team-insights-dashboard.webp b/docs/public/features/posters/team-insights-dashboard.webp new file mode 100644 index 00000000..aa22cef6 Binary files /dev/null and b/docs/public/features/posters/team-insights-dashboard.webp differ diff --git a/docs/public/features/posters/user-defaults-editor.jpg b/docs/public/features/posters/user-defaults-editor.jpg deleted file mode 100644 index 38dd6061..00000000 Binary files a/docs/public/features/posters/user-defaults-editor.jpg and /dev/null differ diff --git a/docs/public/features/posters/user-defaults-editor.webp b/docs/public/features/posters/user-defaults-editor.webp new file mode 100644 index 00000000..15b6658f Binary files /dev/null and b/docs/public/features/posters/user-defaults-editor.webp differ diff --git a/docs/public/features/reencode-all.sh b/docs/public/features/reencode-all.sh index edb4d869..5d9ed3f4 100755 --- a/docs/public/features/reencode-all.sh +++ b/docs/public/features/reencode-all.sh @@ -9,13 +9,16 @@ # - encodes H.264 (high profile, yuv420p) at CRF 28 # - drops the audio track (feature videos play muted) # - moves the moov atom to the front (+faststart) for progressive streaming -# - exports the first frame to ./posters/.jpg as a lightweight poster +# - exports the first frame to ./posters/.webp as a lightweight poster # # .mov sources are converted to .mp4 and the original .mov is removed. # Re-encoding is idempotent enough to re-run; outputs replace the originals. set -euo pipefail +# Requires ffmpeg (video encode) and cwebp (poster encode: brew install webp). +command -v cwebp >/dev/null || { echo "cwebp not found — brew install webp"; exit 1; } + INPUT_DIR="$(cd "$(dirname "$0")" && pwd)" POSTER_DIR="${INPUT_DIR}/posters" MAX_LONG_EDGE=1440 @@ -34,7 +37,7 @@ for file in "$INPUT_DIR"/*.mp4 "$INPUT_DIR"/*.mov; do name="${filename%.*}" tmp="${INPUT_DIR}/${name}.tmp.mp4" output="${INPUT_DIR}/${name}.mp4" - poster="${POSTER_DIR}/${name}.jpg" + poster="${POSTER_DIR}/${name}.webp" echo "Optimizing $filename → $(basename "$output")" @@ -54,7 +57,9 @@ for file in "$INPUT_DIR"/*.mp4 "$INPUT_DIR"/*.mov; do echo " Poster → posters/$(basename "$poster")" ffmpeg -y -i "$output" -vf "$SCALE_FILTER" \ - -frames:v 1 -update 1 -q:v 4 "$poster" + -frames:v 1 -update 1 -f image2 -c:v png "${POSTER_DIR}/${name}.tmp.png" + cwebp -quiet -q 78 "${POSTER_DIR}/${name}.tmp.png" -o "$poster" + rm -f "${POSTER_DIR}/${name}.tmp.png" done echo "Done. Remember to update any .md asset paths if a .mov became .mp4." diff --git a/docs/src/content/blog/ai-agents-ios-simulator/index.mdx b/docs/src/content/blog/ai-agents-ios-simulator/index.mdx index c82ada8a..4e8ef617 100644 --- a/docs/src/content/blog/ai-agents-ios-simulator/index.mdx +++ b/docs/src/content/blog/ai-agents-ios-simulator/index.mdx @@ -28,7 +28,7 @@ I do not want an agent to guess whether those changes worked. I want it to open