summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-30 18:17:45 +0200
committercashmere <cashmere@autistici.org>2026-07-30 18:18:15 +0200
commited02ba872c02eafed45f406c68d389d0a1112a4e (patch)
tree40530d77cfe306621915f067c66531cb9e783a4d /.github/workflows
parente837e7504379e100ff3b56282577ec67bb88bec9 (diff)
downloadopencut-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 '.github/workflows')
-rw-r--r--.github/workflows/bun-ci.yml11
-rw-r--r--.github/workflows/release.yml56
2 files changed, 56 insertions, 11 deletions
diff --git a/.github/workflows/bun-ci.yml b/.github/workflows/bun-ci.yml
index 8f702f72..ed79742f 100644
--- a/.github/workflows/bun-ci.yml
+++ b/.github/workflows/bun-ci.yml
@@ -21,17 +21,6 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
- env:
- DATABASE_URL: "postgresql://opencut:opencut@localhost:5432/opencut"
- BETTER_AUTH_SECRET: "supersecret"
- NEXT_PUBLIC_SITE_URL: "http://localhost:3000"
- UPSTASH_REDIS_REST_URL: "https://your-upstash-redis-url"
- UPSTASH_REDIS_REST_TOKEN: "your-upstash-redis-token"
- NEXT_PUBLIC_MARBLE_API_URL: "https://placeholder.example.com"
- MARBLE_WORKSPACE_KEY: "placeholder"
- FREESOUND_CLIENT_ID: "placeholder"
- FREESOUND_API_KEY: "placeholder"
-
steps:
- name: Checkout repository
uses: actions/checkout@v4
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..0469fc3a
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,56 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - "v*"
+
+permissions:
+ contents: write
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Install Bun
+ uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76
+ with:
+ bun-version: 1.2.18
+
+ - name: Cache Bun modules
+ uses: actions/cache@v4
+ with:
+ path: ~/.bun/install/cache
+ key: ${{ runner.os }}-bun-1.2.18-${{ hashFiles('bun.lock') }}
+
+ - name: Install dependencies
+ run: bun install --frozen-lockfile
+
+ - name: Build web app (static export)
+ run: bun build:web
+
+ - name: Package static web bundle
+ working-directory: apps/web
+ run: tar -czf ../../opencut-web-static.tar.gz -C out .
+
+ - name: Copy web bundle into desktop app
+ working-directory: apps/desktop
+ run: bun run copy:web
+
+ - name: Build desktop packages (AppImage, deb, rpm)
+ working-directory: apps/desktop
+ run: bun run dist
+
+ - name: Upload release assets
+ uses: softprops/action-gh-release@v2
+ with:
+ generate_release_notes: true
+ files: |
+ opencut-web-static.tar.gz
+ apps/desktop/release/OpenCut-*-linux-*.AppImage
+ apps/desktop/release/OpenCut-*-linux-*.deb
+ apps/desktop/release/OpenCut-*-linux-*.rpm