Skip to content

Repository files navigation

clipcat

ShadowPlay-style replay recorder with an embedded OBS capture engine, a clip gallery, and configurable recording controls.

Screenshots

ClipCat gallery with game filters, clip previews, and replay controls

ClipCat built-in video player and clip actions ClipCat capture settings for replay length, quality, and desktop recording

ClipCat microphone, push-to-talk, and keyboard shortcuts ClipCat disk buffer settings for longer replays

Browse the full feature gallery →

Screenshots show the English UI with sample clips and simulated capture state. See the gallery for all 28 images and capture details.

Recording controls

Recording settings accept custom replay lengths (10–1200 seconds) and integer bitrates (5 Mbps up to the existing frame-rate limit), alongside the sliders.

Pause replay when AFK is off by default, including for existing installations. Choose 10 or 30 minutes, 1, 2, or 3 hours, or enter a custom timeout of 10–86400 seconds. When no keyboard or mouse input is detected for that long, ClipCat pauses replay. Manual recordings continue with video and audio unaffected. Input resumes replay only if it was enabled before the pause. Turning the AFK setting off also releases the pause. Replay saves already in progress finish before the replay buffer is paused. Idle detection uses Windows session input or the X11 ScreenSaver extension on Linux; Wayland idle detection is unavailable. Controller-only input does not reset the timeout.

Language and Info

The Capture mode dropdown offers Monitor capture and Automatic game capture. Monitor recording always captures the selected display, including games and other apps. Select the primary monitor automatically or choose a connected monitor; unavailable selections fall back to the primary display. Replay clips use the application active when Save is pressed for their filename and folder. Manual recordings use the application active when recording stops. Known games keep their friendly names; other apps use their executable names for stable groups. Changing the mode or monitor clears the replay buffer and is blocked during manual recording. On Wayland, the system screen-sharing portal controls display selection.

Automatic game capture preserves the previous game-detection behavior and saved desktop fallback preference. Existing installations keep this mode; new installations start in monitor mode.

The Language field in Settings switches between Hungarian and English US. On first launch, the Windows display language determines the default: Hungarian for Hungarian Windows, English US otherwise. A saved manual selection is retained for subsequent launches. After saving, the UI, tray menu, and notifications switch languages without restarting.

The Info section at the bottom of Settings contains the version, update check, license link, and GitHub icon. The repository is catninth/clipcat. The License button opens the specified MPL-2.0 license file.

Releases and updates

ClipCat uses the shared catninth-updater Rust library. It checks stable releases from catninth/clipcat after 20 seconds, then every six hours, and displays the GitHub release body as patch notes. Installation is user-triggered and uses the selected tag's signed latest.json: NSIS on Windows, AppImage replacement or .deb/.rpm installation through pkexec on Linux. Recording and clip-saving guards remain in ClipCat. See the updater integration guide for configuration and lifecycle details.

To publish a new version:

  1. Bump the version in src-tauri/Cargo.toml and the clipcat entry in src-tauri/Cargo.lock (tauri.conf.json uses the Cargo version), then update CHANGELOG.md.
  2. After committing and pushing, open Actions → release → Run workflow, enable publish, and provide English release notes following the format of previous releases. This creates a v<version> release with installers, signatures, and latest.json.

The release workflow also creates a nightly prerelease every night; the updater ignores these.

The updater verifies packages with a minisign key. The public key is in tauri.conf.json; the private key and its password are stored in the repository secrets TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD. If the private key is lost, existing installations can no longer receive updates.

Development

The UI uses React + Tailwind CSS (Vite), with source files in ui/; translations live in ui/locales/ and are also loaded by Rust.

npm install
npx tauri dev    # Vite dev server + application
npx tauri build  # installer package

Verification

npm ci
npm test
npm run build
# Windows: generate the configured resources for native tests as well.
powershell -NoProfile -ExecutionPolicy Bypass -File bundle-obs.ps1
cargo test --locked --manifest-path src-tauri/Cargo.toml -- --test-threads=1
powershell -NoProfile -ExecutionPolicy Bypass -File tests/bundle.test.ps1
node tests/recording-crash.mjs

npm run preview:ui starts a separate browser test UI at 127.0.0.1:5174. It uses the real React components with simulated native responses; it does not start recording, run an installer, or overwrite the application's saved settings.

For reproductions of the original audit findings, fixes, and test limitations, see audit-verification.md.

About

A vibe-coded ShadowPlay alternative

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages