diff options
| author | cashmere <cashmere@autistici.org> | 2026-07-30 18:17:45 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-07-30 18:18:15 +0200 |
| commit | ed02ba872c02eafed45f406c68d389d0a1112a4e (patch) | |
| tree | 40530d77cfe306621915f067c66531cb9e783a4d /apps/web/src/changelog | |
| parent | e837e7504379e100ff3b56282577ec67bb88bec9 (diff) | |
| download | opencut-ed02ba872c02eafed45f406c68d389d0a1112a4e.tar.gz | |
feat: Electron desktop app, native ffmpeg export, fully static web
- apps/desktop: Electron shell serving the static web build over a
privileged opencut:// protocol; exports stream frames over IPC to a
bundled ffmpeg (libx264/libvpx-vp9, BT.709 tagged) with backpressure.
electron-builder packaging: AppImage, deb, rpm.
- apps/web: dead backend deleted (better-auth, drizzle/pg, upstash,
botid, freesound proxy, blog, rss, env validation); next build emits
a zero-env static export; /editor/[project_id] -> /editor?project=.
- Native exporter mirrors SceneExporter; activates when the preload
bridge is present; web keeps the mediabunny path.
- Docker self-hosting now builds and serves the static export via nginx.
- Release workflow: v* tags publish static web tarball + Linux packages.
- Changelog 0.4.0; README/AGENTS/CONTRIBUTING/roadmap updated.
- GPUI/Rust rewrite parked on branch rust-rewrite.
Diffstat (limited to 'apps/web/src/changelog')
| -rw-r--r-- | apps/web/src/changelog/entries/0.4.0.md | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/apps/web/src/changelog/entries/0.4.0.md b/apps/web/src/changelog/entries/0.4.0.md index 141df133..8d9e32da 100644 --- a/apps/web/src/changelog/entries/0.4.0.md +++ b/apps/web/src/changelog/entries/0.4.0.md @@ -1,19 +1,35 @@ --- -version: "0.3.0" -date: "2026-03-04" -published: false -title: "Title" -description: "Description" +version: "0.4.0" +date: "2026-07-30" +published: true +title: "Desktop app, native exports & fully static web" +description: "OpenCut is now a real desktop app for Linux with native ffmpeg-powered exports, and the web version runs anywhere as plain static files — no server, no account, no backend." +summary: "Linux desktop app (AppImage, deb, rpm), native x264/VP9 exports, static web build, project versioning, .ocp files, voice-over." changes: -- type: new - text: "Layout guides are back and expanded. TikTok was the only option before. Now includes a grid guide plus TikTok, Instagram Reels, YouTube Shorts, and Snapchat Spotlight." -- type: new - text: "Two new mask types: text and custom (draw any shape with the pen tool using bezier curves). Both support feather, invert, and stroke." -- type: fixed - text: "Preview panning now keeps working while the Masks tab is open." -- type: new - text: "Audio clips have a horizontal volume line you can drag up or down to change volume. The line position reflects the current volume setting and is consistent across clips: same dB always means the same position." -- type: improved - text: "Audio waveforms now show the actual shape of the audio. Quiet parts are visible, loud parts are tall, and any bar that peaks above 0 dBFS gets a colored tip at the top." -- type: fixed - text: "Trimming or cutting an audio clip no longer causes the waveform to compress or show the wrong section of audio."
\ No newline at end of file + - type: new + text: "Desktop app for Linux. The full editor as a self-contained native app, distributed as AppImage, .deb, and .rpm. Download, run, edit — no browser required." + - type: new + text: "Native export engine in the desktop app. Exports are encoded by a bundled ffmpeg with libx264 (H.264) and libvpx-vp9 (VP9) on a proper quality ladder, instead of the browser's built-in encoder. MP4 exports now actually hit the quality you picked." + - type: fixed + text: "Browser MP4 exports silently undershot the selected bitrate — 'high quality' came out at a fraction of the intended bitrate. The desktop app's native encoder honors it, and colors are now correctly tagged as BT.709." + - type: new + text: "The web version is now a fully static site. No server, no database, no signup — it can be hosted anywhere as plain files, and everything still lives locally in your browser." + - type: new + text: "Project versioning. Create named checkpoints of a project, and restore any of them later — restoring first creates a safety checkpoint of the current state. Media files are pinned per version." + - type: new + text: "Single-file projects. Export an entire project — timeline, settings, and all media — as one .ocp file, and import it back anywhere." + - type: new + text: "Voice-over recording. Record from your microphone straight onto the timeline at the playhead." + - type: new + text: "Freeze frame. One click captures the current frame at the playhead and inserts it as a still." + - type: improved + text: "Video clips in the timeline now render real per-position thumbnails that adapt their density to the zoom level." + - type: improved + text: "Ripple-extend: dragging the edge of a static element (image, text, freeze still) past its neighbor pushes the whole chain of clips after it, instead of stopping at the boundary." + - type: improved + text: "Export encoding is frame-rate aware when computing bitrate, and keyframes are placed every 2 seconds for smoother scrubbing in players." + - type: technical + text: "The backend is gone. Authentication, database, rate limiting, and the blog were dead weight — the editor was already fully client-side on IndexedDB, so the entire server surface was deleted. `next build` now emits a static export with zero environment variables." + - type: technical + text: "The desktop shell is Electron serving the static web build over a privileged `opencut://` protocol. Exports stream raw frames over IPC to a bundled ffmpeg with full backpressure, so memory stays flat regardless of project length." +--- |
