← Commit history
Cargo.lock+1−1
@@ -4,7 +4,7 @@ version = 4  [[package]] name = "adom-aiflow-video"-version = "0.2.7"+version = "0.2.8" dependencies = [  "clap",  "serde",
Cargo.toml+1−1
@@ -2,7 +2,7 @@ # Copied from adom/adom-aiflow template/flow-app. This copy is yours: change anything, never depend on aiflow. [package] name = "adom-aiflow-video"-version = "0.2.7"+version = "0.2.8" edition = "2021" license = "MIT" 
README.md+1−1
@@ -58,4 +58,4 @@ Your film is yours: it carries no Adom logo. The Adom logo sting is only for off  ## Status -0.2.7. It grew out of the two Ghost Hand films ([john/ghost-hand](https://wiki.adom.inc/john/ghost-hand)). Working today: the flow and its hints, clip recording, the disk estimate, script feedback, the text privacy scan, file tracking and cleanup, the walkthrough director, and the narration page for recording your own voice. Still done by the AI by hand, with the skill as the guide: the cut itself, the frame-by-frame privacy look, the wiki publish and the YouTube upload. AI Flow does not suggest this app at intake yet.+0.2.8. It grew out of the two Ghost Hand films ([john/ghost-hand](https://wiki.adom.inc/john/ghost-hand)). Working today: the flow and its hints, clip recording, the disk estimate, script feedback, the text privacy scan, file tracking and cleanup, the walkthrough director, and the narration page for recording your own voice. Still done by the AI by hand, with the skill as the guide: the cut itself, the frame-by-frame privacy look, the wiki publish and the YouTube upload. AI Flow does not suggest this app at intake yet.
assets/narrate.css+6
@@ -148,3 +148,9 @@ kbd { font: 500 11px var(--font-mono); border: 1px solid var(--border); border-r .pipbar button:hover { background: var(--accent); color: #04211f; } .piptoggle { width: 100%; margin: 0 0 6px; text-align: left; } .piptoggle b { float: right; color: var(--muted); } .piptoggle.is-on { border-color: var(--accent); background: rgba(0,184,177,.12); } .piptoggle.is-on b { color: var(--accent); }+/* the picture's own buttons sit outside it, so a small picture never clips them */+.pipbox { overflow: visible; } .pipbox.circle { overflow: visible; }+.pipclip { position: absolute; inset: 0; overflow: hidden; border-radius: 10px; } .pipbox.circle .pipclip { border-radius: 50%; }+.pipbar { top: auto; bottom: 100%; padding-bottom: 8px; }+.pipbox.barlow .pipbar { bottom: auto; top: 100%; padding: 8px 0 0; }+.piph { margin: -3px; }
assets/narrate.html+1−1
@@ -38,7 +38,7 @@     <adom-video id="player" video="video" chapters="chapters.json" captions="captions.vtt" muted></adom-video>     <div class="overlay" id="preroll"><div class="pre-num" id="pre-num">5</div><div class="pre-text" id="pre-text">Get ready</div></div>     <div class="wrapup" id="wrapup"><b id="wrap-num">10</b><span id="wrap-text">seconds left: wrap up</span></div>-    <div class="pipbox" id="pipbox" data-tooltip="You, as you will appear in the film. Drag to move it, drag a corner to resize it, or scroll over it."><video class="campip" id="campip" muted playsinline></video><div class="pipbar" id="pipbar"><button id="pipb-shape" data-tooltip="Change the shape: landscape, portrait, square, circle">Shape</button><button id="pipb-off" data-tooltip="Turn your picture off. Your voice is still recorded. Turn it back on under Camera.">Hide me</button></div><i class="piph tl" data-c="tl"></i><i class="piph tr" data-c="tr"></i><i class="piph bl" data-c="bl"></i><i class="piph br" data-c="br"></i></div>+    <div class="pipbox" id="pipbox" data-tooltip="You, as you will appear in the film. Drag to move it, drag a corner to resize it, or scroll over it."><div class="pipclip"><video class="campip" id="campip" muted playsinline></video></div><div class="pipbar" id="pipbar"><button id="pipb-shape" data-tooltip="Change the shape: landscape, portrait, square, circle">Shape</button><button id="pipb-off" data-tooltip="Turn your picture off. Your voice is still recorded. Turn it back on under Camera.">Hide me</button></div><i class="piph tl" data-c="tl"></i><i class="piph tr" data-c="tr"></i><i class="piph bl" data-c="bl"></i><i class="piph br" data-c="br"></i></div>     <div class="recbadge" id="recbadge"><i></i><span id="recbadge-text">Recording</span></div>   </section> 
assets/narrate.js+1
@@ -257,6 +257,7 @@     box.style.width = w * r.width + 'px'; box.style.height = h * r.height + 'px';     box.style.left = (r.left - s.left + (PIP.x - w / 2) * r.width) + 'px'; box.style.top = (r.top - s.top + (PIP.y - h / 2) * r.height) + 'px';     box.classList.toggle('circle', PIP.shape === 'circle');+    box.classList.toggle('barlow', (PIP.y - h / 2) * r.height < 44);          // no room above: put its buttons underneath     const live = !pip.classList.contains('playback');                     // the live preview is mirrored, like a mirror; the film is not     pip.style.objectPosition = `${50 + PIP.ox * 50}% ${50 + PIP.oy * 50}%`; pip.style.transform = `${live ? 'scaleX(-1) ' : ''}scale(${PIP.zoom})`;     $('pip-shape').value = PIP.shape; $('pip-size').value = PIP.size; $('pip-zoom').value = PIP.zoom; $('pip-ox').value = PIP.ox; $('pip-oy').value = PIP.oy;
bin/adom-aiflow-video
⋯ 1 unchanged line ⋯
package.json+1−1
@@ -1,7 +1,7 @@ {   "slug": "adom-aiflow-video",   "type": "app",-  "version": "0.2.7",+  "version": "0.2.8",   "title": "AI Flow: Video",   "description": "Make a narrated walkthrough video of a board built in Adom Hydrogen, put it on the project's wiki page and help the human upload it to YouTube. A dynamic skill: a small Rust binary that suggests each step, records clips, ships a ready-made 3D walkthrough director and gives gentle feedback; the AI does the work. Open source (MIT): the full Rust source ships on this page; build it yourself with ./build.sh.",   "category": "Developer Tools",
page.json+1−1
@@ -1,7 +1,7 @@ {   "slug": "adom-aiflow-video",   "type": "app",-  "version": "0.2.7",+  "version": "0.2.8",   "title": "AI Flow: Video",   "description": "Make a narrated walkthrough video of a board built in Adom Hydrogen, put it on the project's wiki page and help the human upload it to YouTube. A dynamic skill: a small Rust binary that suggests each step, records clips, ships a ready-made 3D walkthrough director and gives gentle feedback; the AI does the work. Open source (MIT): the full Rust source ships on this page; build it yourself with ./build.sh.",   "category": "Developer Tools",