storebound/cli/shots
CRT 710c3a53d0 README, docs and site: one story (the whole job, no avoidable rejections, the desktop app, your AI, install)
README is a short front page (about 120 lines) with one real visual per section; every former section moved
unchanged into docs/*.md with a docs/README.md index (journey, rejections, getting-started, commands, growth,
studios, store-art, listing-languages, api, skills, mcp, safety, faq, project). The site tells the same story on one
page: the teaser in the hero, real CLI output as text, the desktop app as a section with light/dark captures of eight
screens and the per-system downloads (desktop/latest.json); /desktop/ redirects to /#download. New capture tools:
tools/site-desktop-shots.ts (fixture-mode desktop frames) and tools/site-term-shots.ts (real CLI output as text and
WebP). tests/docs-links.test.ts checks README, docs and site links resolve.
2026-10-13 03:29:59 +08:00
..
browser.ts shots / console: resolve playwright only from an installed node_modules copy; in a project without playwright Bun auto-installed the newest one into its global cache, whose browsers were never downloaded (capture-web on Linux CI: 'headless shell: not installed'; macOS hid it with Google Chrome) 2026-10-13 02:55:12 +08:00
caption.html shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
capture-web.ts shots capture / render: --concurrency, per-frame timing, per-language page reuse, input-hash cache 2026-10-12 03:49:53 +08:00
capture.ts ci speed: desktop boot check runs its cases in parallel (one browser, killed at the end; a page per case; condition waits instead of fixed sleeps: element, text or a quiet window of host calls and DOM); shots capture / render close the browser with a 3 s cap, then kill it; console engine waits injectable for tests (WAITS / engineWaits: poll rounds, a missing step ends once its loaded page stays quiet, team switch settle, field-miss grace), fillPage looks up each data type's dialog once per round and skips dialog sections when no dialog is open; browser tests run 4 at a time per file (testScope().concurrent with a scope per test, --max-concurrency in ci), 20 ms rounds; capture-web counts boots per test and runs its browser tests concurrently; console-session / -persist Chrome tests concurrent; recorded test timings smoothed (mergeTimings) so one loaded run does not skew the shard split 2026-10-13 02:22:25 +08:00
check.ts play images: tablet, TV and Wear sets are optional; play.tablets switch (default: tablet renders exist); a missing optional set never deletes Play's images without --prune 2026-10-12 08:21:03 +08:00
cmap.ts shots fonts: local font files (title / body / fallback) with cmap coverage, served in place, hash in fonts.json, license note 2026-10-12 04:15:19 +08:00
devices.ts shots capture / render: --concurrency, per-frame timing, per-language page reuse, input-hash cache 2026-10-12 03:49:53 +08:00
feature-app.html shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
feature.html shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
fonts.ts shots fonts: local font files (title / body / fallback) with cmap coverage, served in place, hash in fonts.json, license note 2026-10-12 04:15:19 +08:00
gallery.ts play images: tablet, TV and Wear sets are optional; play.tablets switch (default: tablet renders exist); a missing optional set never deletes Play's images without --prune 2026-10-12 08:21:03 +08:00
glyphs.ts README, docs and site: one story (the whole job, no avoidable rejections, the desktop app, your AI, install) 2026-10-13 03:29:59 +08:00
jpeg.ts --variant on play images, apple screenshots and shots jpeg; shared set up-to-date check 2026-10-10 22:16:38 +08:00
lib.ts play images: tablet, TV and Wear sets are optional; play.tablets switch (default: tablet renders exist); a missing optional set never deletes Play's images without --prune 2026-10-12 08:21:03 +08:00
local-fonts.ts shots fonts: local font files (title / body / fallback) with cmap coverage, served in place, hash in fonts.json, license note 2026-10-12 04:15:19 +08:00
record.ts App screenshot style (shots.style app): calm gradient, device frame, headline + subline; demo app Tidy Lists 2026-10-11 01:47:09 +08:00
render.ts ci speed: desktop boot check runs its cases in parallel (one browser, killed at the end; a page per case; condition waits instead of fixed sleeps: element, text or a quiet window of host calls and DOM); shots capture / render close the browser with a 3 s cap, then kill it; console engine waits injectable for tests (WAITS / engineWaits: poll rounds, a missing step ends once its loaded page stays quiet, team switch settle, field-miss grace), fillPage looks up each data type's dialog once per round and skips dialog sections when no dialog is open; browser tests run 4 at a time per file (testScope().concurrent with a scope per test, --max-concurrency in ci), 20 ms rounds; capture-web counts boots per test and runs its browser tests concurrently; console-session / -persist Chrome tests concurrent; recorded test timings smoothed (mergeTimings) so one loaded run does not skew the shard split 2026-10-13 02:22:25 +08:00
report.ts play images: tablet, TV and Wear sets are optional; play.tablets switch (default: tablet renders exist); a missing optional set never deletes Play's images without --prune 2026-10-12 08:21:03 +08:00
spec.ts shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
template-app.html shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
template.html shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs 2026-10-12 03:05:23 +08:00
video.ts shots fonts: local font files (title / body / fallback) with cmap coverage, served in place, hash in fonts.json, license note 2026-10-12 04:15:19 +08:00