Releases: gabosarmiento/demotape
Release list
v7.6.0 — Caption fixes, source chaining, and easier web exports
DemoTape 7.6.0 improves caption corrections and makes the post-production flow continue naturally from the latest processed recording.
What changed
- Fixed stale word-by-word captions after editing subtitle text, while preserving existing word timings.
- Shortened caption edits now correctly discard leftover timed words.
- Voiceover, Tighten, Captions, and Web Export now default to the newest playable derivative instead of reopening the raw recording.
- Web Export now shows the generated bundle immediately and provides an Open Folder action.
Verification
- 435 Swift tests passed with zero failures.
- Universal macOS app:
arm64andx86_64. - Developer ID signed, Apple-notarized, stapled, and accepted by Gatekeeper.
- DMG SHA-256:
33aec9fe1939bc0c690cbe0213c12a3b7751b2d8dd942775d9e525da4db1cfdd
v7.5.1 — Post-production fixes
Post-production fixes found while producing a LinkedIn 4:5 cut.
Fixed
- Captions no longer clip in portrait/square exports. Font size was derived from video height
only, so a 4:5 / 9:16 reframe drew a larger font in a narrower frame and the centered text ran off
both edges (e.g. "RUNTIME CONNECTED"). Caption blocks now shrink to fit the frame width; landscape
is unaffected. --tightenno longer cuts your pauses when you only asked to speed up. New named form
--tighten <video> --speed 1.25changes only the speed; silence removal is opt-in via
--remove-silence. The old positional form is unchanged.- Narration is cached across every path. The record path and
revoiceused to discard
synthesized speech, so re-laying a demo's original narration paid for it again. All paths now share
one cache keyed by (voice, text), andrevoice/narrateaccept--video <path>to target a
specific cut (a reframe, a captioned file).
Notes
- The Windows port has the same caption-fit bug and is not addressed here.
Build from source (see AGENTS.md): ./build-app.sh release. swift test — 433 passing.
v7.5.0 — Web Export rebuild, menu cleanup, repositioned README
v7.5.0
Menu cleanup, a rebuilt Web Export window, and a repositioned README.
Web Export (was "Web Publish")
Rebuilt around two real complaints — the old export gave no feedback and finished videos were hard to find.
- Live per-tier progress. A bar per quality tier (and the GIF) fills as it encodes, instead of a dead "Exporting…".
- Non-blocking. The encode runs in the background and finishes writing every file even if you close the window — it never interrupts.
- A carousel of your recording folder's videos — thumbnail + name, newest first, click to reveal in Finder. New exports appear as they're made, so your outputs are easy to find.
Menu
- Removed Auto-Edit — it didn't deliver a result worth shipping.
- Renamed Auto-Cut to "Speed up / Auto-cut" and moved it directly above Add Captions.
README / positioning
Reframed around the real core: making a demo fast with your coding agent, for developers and vibecoders — not "a proof-of-work layer." Verified demos for agent PRs are now one use case, not the headline. Honest origin story, no pricing or waitlist — use it free, star the repo if you'd want it as a product, and reach out.
422 tests pass.
v7.4.0 — Vertical cuts, local AI with no keys, permission-free rendering
v7.4.0
Supersedes v7.3.0, which was tagged but never shipped a binary.
Vertical and social cuts — --reframe
Turn any landscape recording into a 9:16, 1:1 or 4:5 cut with a planned camera rather than a crop. It reads the recording's own interaction timeline and:
- fills the height and crops the sides — no blur bands, no letterbox
- holds on a shot instead of drifting; nearby interactions become one shot
- follows typed text like a text editor, so the sentence grows into frame
- routes long moves through an overview zoom-out instead of sliding across at full zoom
- returns to overview during idle stretches and fast scrolling
- clamps the sampled rect to the source every frame, so an element at the far right sits near the right of the frame and no frame ever samples outside the image
DemoTape --reframe <raw.mov> 9:16 [out.mp4] [--zoom N] [--debug]--debug draws the camera rect and its state on the landscape footage, so you can inspect the camera's decisions directly. Also available as recipe fields: reframeTarget, reframeZoom, reframeDebug.
Narration and captions with no API keys
One command sets up local speech models, so you can use the AI features without an account anywhere:
scripts/local-ai.shIt pulls Kokoro (narration) and Whisper (captions), runs them bound to 127.0.0.1, points DemoTape at them, and proves it works — synthesizes a clip through the local TTS, transcribes it back through the local STT, and prints what it heard. No key is written and the Keychain is untouched. --status, --stop, --uninstall, --tts-only, --stt-only.
A styled demo without Screen Recording permission
New --encode-frames turns a captured frame sequence into a raw .mov that the rest of the pipeline treats as an ordinary recording, so the styled render, auto-zoom, captions, voiceover and reframe all work on footage the screen recorder never touched.
DemoTape --encode-frames <manifest.json> [out.mov]This is the groundwork for a one-command agentic path: an agent can capture a browser over the DevTools protocol with no macOS permission at all, then render a finished demo from it.
Fixes
- Typing now stays in frame in chat composers. The auto-zoom follows the caret while typing, but the caret was measured from
el.value— which doesn't exist on acontenteditablediv, i.e. on most real chat inputs and rich editors. It reported the same position for every keystroke, so the camera held on the left edge of the field while the sentence grew away out of frame. Measured on a real page: 1 distinct caret position before, 61 after. - Capture mode buttons are legible. The three modes now show an icon above the label. A segmented control could only place the glyph beside the words, which truncated "Webcam Only" and made the row read as a heading rather than buttons.
- A blinking red tally light appears beside the timer while recording, so "am I rolling?" is answerable from the corner of your eye. Respects Reduce Motion.
install.sh --kirois idempotent. A second run used to nest a full second copy of every reference guide, which the agent then loaded twice.
Also
The README is repositioned around visual proof of work for coding agents, with capabilities split into what's available now, what's experimental, and what's planned — no roadmap feature is presented as shipped.
416 tests pass.
DemoTape 7.2.0
DemoTape 7.2.0
Signed + notarized universal build (Apple Silicon + Intel, macOS 12.3+). Download the DMG, drag DemoTape to Applications, and open — no Gatekeeper warning.
New — app-wide theme
DemoTape now has a warm, VHS-inspired look that follows your system Light/Dark setting:
- A "tape shell" palette with the logo's six-color stripe used sparingly as the brand signature, and a purple accent for interactive controls (red stays reserved for Record).
- Themed everywhere: the recording control bar and its ••• setup popover, the welcome screen, the first-run explainer cards, all action windows (Auto-Cut, Captions, Voiceover, Explain to AI), and the settings dialogs (AI Features, Web Publish, Choose Background, Create-a-Demo, Teleprompter, About).
- The control bar is now a solid themed card with readable icons in Light mode (the old translucent HUD washed out), plus restored tooltips and the correct clickable cursor.
No changes to recording, the demo driver, or the CLI — existing workflows and the record-verified-demo skill are unaffected.
DemoTape 7.1.0
DemoTape 7.1.0
Signed + notarized universal build (Apple Silicon + Intel, macOS 12.3+). Download the DMG, drag DemoTape to Applications, and open — no Gatekeeper warning.
New
- Finer speed controls in the Teleprompter and Auto-Cut: a slider that snaps to 0.1× over a tinted "recommended" band, with a live readout and −/+ steppers.
- Teleprompter: a "Copy AI script prompt" button, a taller reading window with soft fades, and a larger reserved (unrecorded) strip.
- Optimize for social media (opt-in, off by default): pick a platform and DemoTape exports your video in the right shape. In Select Area only matching platforms are offered; in Webcam-only and Full Screen the video is center-cropped to the ratio you pick. Lives in the menu ("Video Format") and the ellipsis card; the webcam preview reframes to the chosen shape.
- First-run explainer cards for Output formats, Teleprompter, Share Recording for AI, and the coding-agent composer — each with "Don't show again".
Fixed
- A recording crash on macOS 12 caused by the cursor-shape Accessibility probe hit-testing an open menu.
- Auto-Cut and Teleprompter windows sometimes failing to appear.
- Clicking the Dock icon now always brings back the recorder bar.
- Switching Select Area ↔ Webcam Only no longer needs a Full-Screen detour to re-show the area overlay; the framed area is remembered, with a "Reselect area…" action.
- Caption style previews adapt to the video's aspect.
DemoTape 7.0.0
DemoTape 7.0.0
The headline of 7.0 is a new Webcam Only capture mode — record a clean, framed talking‑head with none of the screen behind it — plus a round of recorder‑bar and region‑overlay polish.
Webcam Only recording
- A first‑class capture mode alongside Full Screen and Select Area: records just your camera at a manageable 1080p (never 4K), mic included, unstyled and ready for Web Publish and Captions.
- A large, near‑full‑screen live camera stage before you record, so it's obvious the camera is the whole video.
- Mirror camera toggle (live in the settings window, the ••• popover, and the setup card).
- Teleprompter works in this mode and honors the strip edge you pick (top/bottom/left/right) instead of filling the screen.
- Enhance audio and Noise suppression as direct toggles, applied to the finished file.
Recorder bar & setup popover
- Third Webcam Only segment in the ••• mode selector; the popover is mode‑aware and hides options that don't apply.
- Lock area position: accept a framed area and click/scroll/type in the app beneath it, then unlock to adjust again.
- Region overlay interior is click‑through with a Drag to move pill, so it no longer blocks the app you're recording.
- Inline Teleprompter settings… appear when the teleprompter is on.
- Enhance audio / Noise suppression available in every mode; the mic‑submenu row was removed from the bar.
Fixes
- Clicking the Dock icon reopens the recorder bar.
- AI Settings no longer triggers a password‑AutoFill overlay covering the Test button.
- Sweeps orphaned atomic‑write temp files (
*.sb-*) that could accumulate after an interrupted export. - Caption reliability: dropped‑word reconciliation, word‑timing normalization, and a fix for the caption‑burn memory spike.
Universal (Apple Silicon + Intel), signed and notarized. macOS 12.3+.
DemoTape 6.6.0
Two ways to make a demo, and a caption pipeline that stopped dropping words.
Let your coding agent record it. The agent path is now a co-equal primary action, not an "AI" toggle buried under the polish steps. It's the first thing in the menu — Let Your Coding Agent Record a Demo… — and the bundled skill carries everything an agent needs to read a codebase, script the scenes, drive the app, record with a synced voiceover, and verify each scene before handing back the video. Localization is built in: another narration language or subtitles from the same footage, no re-recording.
A settings popover on the recorder bar. The floating bar had no way into any setting; the new ••• opens capture mode, the agent path as its own card, and the choices you set before a take — background, branding, teleprompter, auto-zoom — routed through the same actions as the menu.
Agent marks, drawn natively. The composer shows Cursor, Claude Code, Copilot, Gemini and Codex as their own icons, parsed from vector paths (this app targets macOS 12, where the system can't load SVG, and ships no dependencies).
Captions, reworked. Word-by-word social styles (One Word, Word Pair) plus Mono for engineering demos. Design leads; the transcript state and language sit up front; Update reflects what you edited; a real progress percentage replaces the bare spinner; and the agent hand-off is one consistent "Copy prompt for your agent" everywhere.
Fixes that mattered:
- Words no longer drop from captions. Whisper emits zero-duration words and omits trailing words entirely ("boundary", "domain"); both are now reconciled and given readable, non-overlapping slots.
- The caption burn no longer exhausts memory — a long clip now renders in seconds at flat memory instead of minutes and a crash.
- Transcripts are cached per timeline, so a sped-up or re-voiced clip never shows the original's cue times, and a different file is transcribed rather than reused.
- Windows that could push their action button off screen now fit; a couple of crashes in the voiceover/captions windows are gone.
Add another language to a finished demo in Add Voiceover…, or hand it to a coding agent — with a fit report that flags any line running long, and a per-line cache so tightening a translation is cheap.
Free and open source (MIT). Build from source with ./build-app.sh release, or use the notarized DMG below. Runs on macOS 12.3+ including older Macs like Monterey 12.7.6.
DemoTape 6.5.0
Post-production, without re-recording.
Another language. A finished demo can gain a narration in another language as a new file, on the same timings, with the original left playable. Add Voiceover… now opens on what you already have, asks whether you're replacing the narrator or adding a language, and shows what the run will cost in credits before you spend them. Translated speech runs longer than English, so every line's fit is measured and the ones that overrun their scene are named — with a per-line cache so tightening them is cheap.
Captions. The Captions window says where the transcript stands and in what language, leads with Design, and its Update button reflects what you actually edited. Two new word-by-word styles — One Word and Word Pair — put one or two big words low in the frame, swapped as spoken. Plus Mono, for demos where the screen is already full of interface. --burn … --srt burns a specific subtitle file, so an edited or translated one is no longer silently ignored.
Agentic. Both windows can hand the job to a coding agent instead of doing it themselves, and the bundled skill now carries those instructions, so an agent working from it needs nothing pasted.
The pointer looks like a pointer. DemoTape records which cursor the system was showing and draws that shape — a hand over a link, a text bar over a field — and attention gestures aim at the words inside a target rather than the padding around them, so an emphasis click can't land on empty space.
Verification that reports instead of guessing. The vision gate paces itself against the token budget an image actually costs, keeps the spec beside the video so a rate-limited check can be re-run, and treats a refusal on screen as a legitimate result. --frame writes stills so a take can be looked at.
Also: driver scenes run their steps in order, so wait waits; the action button can no longer fall off the bottom of a window.
Free and open source (MIT). Build from source with ./build-app.sh release, or use the notarized DMG below.
DemoTape 6.4.0
DemoTape 6.4.0
Fixed
- Camera toggle is honest. Turning the webcam on now requests Camera access; if it's denied the toggle stays off and offers to open Settings, instead of showing a camera that can't record. It's also reconciled at launch. (Mirrors the earlier microphone fix.)
- One permission prompt, not three. The Welcome window polled the screen-capture status on a timer, and each check while the permission was still undecided queued another system lock alert — they then surfaced one after another as you clicked. Status is now checked on window activation only.
- Install instructions corrected. They still told people the app wasn't notarized and to right-click → Open or strip the quarantine attribute. The DMG is signed with a Developer ID and notarized, so it just opens.
Added
--publishruns the full Web Publish pipeline headlessly — the same code path the GUI window uses, so scripted output matches what you get by clicking Export. The pipeline was previously locked inside the GUI controller.- Coordinate-free UI targeting for scripted demos. DemoTape can resolve a control by label against the live UI (AppKit for its own windows, the Accessibility API for any other app) and click it:
demotape://ui/click?label=Export. Plusui/find,ui/dump(writes the on-screen element tree),ui/open, andcursor/glidefor eased, human-looking pointer movement. A lookup that misses reports a miss rather than clicking a guessed point. - A star ask in About, the Welcome screen, and the menu bar. DemoTape is free and MIT-licensed; that's the only thing we ask.
Install
Grab the notarized DMG below, or build from source — DemoTape is free and open source.