teaser v8: a 58 s story instead of a feature list (the game is done; the stores pile up; one missing line; hand it to your AI; a montage of builds, screenshots, products, forms, consoles; the scan turns green; one button is yours; Waiting for review; the end card), one short line per scene, cuts on the 120 BPM beat; music rewritten for the arc (calm, tension, near silence, a driving build, a stop, a resolve), mastered with one gain instead of dynamic loudnorm; the pile shows real console plan, Data safety CSV and price sheet lines, the builds beat real apple / play build dry runs; desktop.ts captures submit-ready (Send for review before the press); tests check every line, the beat-aligned cuts and the caption times; two unused teaser icons dropped

This commit is contained in:
CRTkafa 2026-10-13 04:48:27 +08:00
parent d5ffc159c0
commit 0b6c8cd7a0
11 changed files with 1117 additions and 1041 deletions

View file

@ -4,7 +4,7 @@
// App Store / Google Play marks from simple-icons (CC0 data)
// apps/desktop/src/ui/store-marks the same two store marks for the desktop app (the other desktop icons come from
// @phosphor-icons/react)
// media/teaser/icons Phosphor icons for the teaser video (the mouse cursor, the inbox, finding and fix icons)
// media/teaser/icons Phosphor icons for the teaser video (the mouse cursor, the finding and fix icons, the terminal, send)
// templates/web the two store marks for the landing page `storebound web init --landing` writes
// Both show them as CSS masks (site/style.css .ic-*, desktop styles.css .store-mark), so they take the text colour in
// both themes and nothing is loaded from outside. The store marks only name the store next to its name; they are
@ -17,7 +17,7 @@ import { join } from 'node:path';
export const SITE_ICONS = ['caret-right', 'play', 'user', 'squares-four', 'briefcase'] as const;
export const STORE_MARKS = ['appstore', 'googleplay'] as const;
/** Teaser icons: [Phosphor weight, icon name], vendored as <name>-<weight>.svg (the package's own file name). */
export const TEASER_ICONS = [['fill', 'navigation-arrow'], ['bold', 'check'], ['fill', 'x-circle'], ['fill', 'check-circle'], ['bold', 'tray'],
export const TEASER_ICONS = [['fill', 'navigation-arrow'], ['bold', 'check'], ['fill', 'check-circle'],
['fill', 'warning-octagon'], ['fill', 'paper-plane-tilt'], ['bold', 'terminal-window']] as const;
const root = new URL('..', import.meta.url).pathname;