demobite 1.8.2 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/launcher/index.mjs +13 -0
- package/package.json +1 -1
- package/skill/SKILL.md +2 -1
package/launcher/index.mjs
CHANGED
|
@@ -141,6 +141,19 @@ if (needed.length) {
|
|
|
141
141
|
if (r.status === 0) ok("Playwright ready");
|
|
142
142
|
else warn(`Install failed — run: npm install --prefix ~/.claude/skills/agentic-recorder ${needed.join(" ")}`);
|
|
143
143
|
}
|
|
144
|
+
// Playwright's OWN ffmpeg: recordVideo needs it even when the real Chrome is
|
|
145
|
+
// the browser (founder's test 2026-10-14: the first take failed — the
|
|
146
|
+
// launcher had checked the system ffmpeg, not the one Playwright's capture
|
|
147
|
+
// uses, and with Chrome present `playwright install` never ran). Always.
|
|
148
|
+
{
|
|
149
|
+
const pw = path.join(dest, "node_modules", "playwright", "cli.js");
|
|
150
|
+
const marker = path.join(dest, ".pw-ffmpeg-ready");
|
|
151
|
+
if (!fs.existsSync(marker) && fs.existsSync(pw)) {
|
|
152
|
+
const r = spawnSync("node", [pw, "install", "ffmpeg"], { stdio: "inherit", cwd: dest });
|
|
153
|
+
if (r.status === 0) { fs.writeFileSync(marker, new Date().toISOString()); ok("Playwright's video encoder ready"); }
|
|
154
|
+
else warn(`Playwright's ffmpeg install failed — run: node ${pw} install ffmpeg`);
|
|
155
|
+
} else if (fs.existsSync(marker)) ok("Playwright's video encoder ready");
|
|
156
|
+
}
|
|
144
157
|
// No Chrome on this machine: fetch Playwright's Chromium once so the first
|
|
145
158
|
// take has a browser. Linux needs the shared libraries too (--with-deps).
|
|
146
159
|
if (!haveChrome) {
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -24,6 +24,7 @@ The plugin is a product. Every line you say is read by the person who asked for
|
|
|
24
24
|
- **Progress you can glance at.** While filming, relay record.mjs's `Filming ████░░ step n of N` line. While writing the storyboard, one dim line of what you are reading.
|
|
25
25
|
- **Plain words only.** Never on screen: dry run, control, selector, resolves, beat, surface, profile, headed, Playwright, vocab, obstacle, revert, JSON, storyboard.json, manifest, take. Use: step, demo, page, window, sign in, film, deliver, Demos grid.
|
|
26
26
|
- **Demo, never recording.** The thing the person gets is a demo; the act is filming.
|
|
27
|
+
- **Findings go to us, never to the person.** Anything you learned about the recorder, the installer, the camera or DemoBites itself (a title that got cut, a merge rule, a missing encoder) is written to `.recorder/notes.md` in the project — dated, one paragraph each — and never said in the chat. The person asked for a demo, not a report on our product. (Founder 2026-10-14: "all this nonsense and all this explanation is not relevant.")
|
|
27
28
|
|
|
28
29
|
## Phase 0: Auth gate, ALWAYS FIRST — announced, never silent
|
|
29
30
|
|
|
@@ -366,7 +367,7 @@ On the person's "1": say "Filming. About <m:ss>; I'll tell you when it lands." a
|
|
|
366
367
|
|
|
367
368
|
## Phase 6: Deliver into DemoBites
|
|
368
369
|
|
|
369
|
-
When `upload.mjs` prints its last line, say: "✓ Delivered. \"<title>\" (<m:ss>) is
|
|
370
|
+
When `upload.mjs` prints its last line, say ONE line: "✓ Delivered. \"<title>\" (<m:ss>) is being prepared — about two minutes; I'll give you the link when it's ready." Then run `node scripts/status.mjs <takeDir>` (it waits until the demo is completed and prints `Studio: <url>`). When it does, say exactly, and only: "✓ Ready — open it: <that url>". That is the LAST line of the whole run: no notes, no findings, no list of what happened (those go to `.recorder/notes.md`, How you talk). When minutes ran out, relay upload.mjs's "Kept…" line as it is, and stop.
|
|
370
371
|
|
|
371
372
|
|
|
372
373
|
Send the TRIMMED CLEAN take into DemoBites. The studio owns the look: NO backdrop, NO rounded corners, NO shadow on the uploaded file. Everything (voice, zooms, look, intro, outro) becomes editable there.
|