Repository navigation
Snitt 0.2.0
Snitt 0.2.0
v0.1.0 could record a window and trim it. 0.2.0 is where Snitt became an editor —
123 commits, 304 files, +28,013 lines — plus on-device transcription, a real agent
surface, and an open-source licence.
Universal (arm64 + x86_64), signed with Developer ID, notarized and stapled.
The editor
The timeline stopped being a scrub bar.
- Waveforms and a filmstrip in every track — log-scale, with clipping marks, one
band per audio source. Dark surface, orange waveform. - Per-track gain and mute, applied live in the preview and honoured by the export
mix. - Crop as a bounding box you drag and adjust before committing — nothing reaches
the edit until you press Apply. - Auto-deep-trim: cut the spans where nothing happens, with presets and the
criteria behind them stated. An automatic fold says what it removed. - Expanded folds insert space, so the playhead skips them instead of walking
through footage that isn't there. - A chapter panel for markers, with typed times and drag-to-move.
- Transport: rewind, scrub-stops-playback, zoom and snapping with on-screen
controls. - Opens centred at 75% of the screen.
Transcription — on device, and editable
Runs on your Mac with Apple's recognizer. The audio never leaves the machine.
- The transcript is an editing surface: click a word to jump there, select a phrase
and delete it to cut those seconds. - Correct a word in place — double-click, type, done.
- Tell it what to expect. A recording carries a vocabulary of the symbol names,
file names and product names a general speech model has never heard, and
re-transcribes against them. - The spoken word highlights as playback reaches it, and the transcript breaks into
lines at the speaker's own pauses. - Confidence is rendered, not hidden — a word the recognizer doubted looks doubted.
- Marker transcripts export as WebVTT subtitles.
Agents
snitt_auto_deep_trim,snitt crop, pause/resume, and screenshot-the-recording over
both MCP and the CLI.snitt setupregisters the MCP server with agent hosts.- Snitt starts on demand when a client finds it closed.
- A client can report input the OS never saw — an agent's synthetic keystrokes and
clicks land in the event log as content-free beats, and clicks can be drawn on the
exported video. - Agent-initiated recordings disclose themselves in the UI.
Capture and export
- Pause and resume a recording, from the menu bar or over the agent surface; a
paused recording looks distinctly paused. - Microphone recording from the GUI, with a warning when your speakers will bleed
into the mic. - A configurable save destination.
- Customizable hotkeys for record and marker.
- Export gained a resolution knob and a pre-flight menu that prices every option
before you commit to one. .snittbundles get a Finder icon drawn from the recording itself.
The project
- Licensed MPL-2.0, with a contributor agreement — file-level copyleft, so a
commercial competitor cannot take the code closed, and GPL-compatible. - A README, a spec conformance pass, and CI.
Notable fixes
- Clicking a transcript word highlighted the word before it — intermittently. The
seek target quantizes to 1/600s, landing up to 0.8ms before the word's start, so
the previous word won the lookup whenever a word's start time rounded down. - The Settings window was released out from under itself — a use-after-free that
crashed shipped v0.1.0 when you toggled "Log input events". - Timeline gestures were interpreted on the wrong axis after the view moved to
output time. - Transcription only covered the tail of a recording; it now runs per utterance.
- Silence detection measures against the 90th percentile, not the max, so one loud
moment no longer makes a quiet recording read as busy. snitt trimdiscarded existing cuts instead of preserving them.- Adjusting gain no longer resets the playhead to the start.
events.jsonnow guards itsschemaVersion, likeedit.json.
Upgrading
edit.json and events.json from v0.1.0 open unchanged — there is a pinned test
against a real captured v0.1.0 bundle, including the read-then-save path.
Existing installs with automatic checks enabled will be offered this build by Sparkle.
Updates are verified three ways before they install: TLS to github.com, the Developer ID
signature, and an EdDSA signature over the archive.