Commit Graph
9 Commits
Author SHA1 Message Date
harry dd016f7727 Merge feat/playback: session playback, synced audio and thumbnails
# Conflicts:
#	README.md
#	crates/clipbin-desktop/Cargo.toml
#	crates/clipbin-desktop/src/main.rs
#	crates/clipbin-media/src/lib.rs
#	docs/validation.md
2026-10-08 19:26:04 +02:00
harry 0a7d62a807 Add bounded session playback, synced audio and frame thumbnails 2026-10-08 19:20:44 +02:00
harry 7ac7e66ff1 feat: export clips, protect bookmarks and clean session storage 2026-10-08 18:56:51 +02:00
harry f6cdef5dd2 feat: add clipbin-media for reading segments with FFmpeg
Rust checks / windows-cross-check (push) Successful in 58s
Rust checks / linux (push) Failing after 10m50s
One shared FFmpeg binding (ffmpeg-next 9, dynamically linked: the system
FFmpeg on Linux, the OBS-bundled DLLs on Windows) for clip export and
playback, with a probe of segment duration, codec, size and audio tracks.
2026-10-08 17:55:34 +02:00
harry 435ddf2b17 feat: automatically record Steam game sessions
Detect games with native process exit watchers, own OBS on a background worker, and persist settings and recoverable session timelines. Place segments by split frame counts, recover capture with honest gaps, and finalise on game exit or explicit Quit.

Keep the current recording alive after GPUI closes its last window, then exit when the game ends. Add an end-to-end rig covering recording, recovery, exact packet-count offsets, disk library reload and clean Quit.
2026-10-08 17:30:40 +02:00
harry 98fe898efb feat: typed settings fields, timeline zoom, faster dev builds
Rust checks / windows-cross-check (push) Successful in 1m2s
Rust checks / linux (push) Failing after 5m49s
Footage budget, clip hotkey length and bookmark before/after are now typed
fields (m:ss or seconds), validated on Enter or blur and reverted when out of
range. Scrolling over the session timeline zooms around the pointer (down to
10 s) and scrolling sideways or with Shift pans, with a Fit button.

Settings felt slow because GPUI ran unoptimised: dev builds now optimise
dependencies, taking first frames from 200-300 ms to about 15 ms. Adds
rig-pointer, a virtual pointer for driving the interface in the headless
rig, which verified the fields, zoom and timeline dragging.
2026-10-08 16:19:14 +02:00
harry 263e7a964e feat: detect lost sources, stalled writes and low disk space
PipeWire capture keeps its size and last frame after its stream stops, so the
recorder follows the stream state OBS logs. Recording fails when the segment
on disk stops growing (OBS kept counting bytes into a dead muxer and missed a
full disk) and stops while enough space remains to finalise the last segment.
Failures stay visible after the output stops.

Adds a check command that verifies keyframe-aligned segments and a remux
across segment boundaries, and gives the rig desktop audio.
2026-10-08 14:19:57 +02:00
harry f2eb7139da feat: add OBS recording engine and validation probe
clipbin-obs starts the pinned libobs on a dedicated thread, opens exactly the
bundled plugin allowlist, and records official capture sources through one
hardware encoder into keyframe-aligned Matroska segments. Status reaches
Recording only once the source has a picture and the segment grows on disk.

clipbin-probe lists and verifies hardware encoders and records from a real
capture source, printing status, health and segment events for validation.
2026-10-08 14:12:06 +02:00
harry eb364d25e2 chore: scaffold Rust workspace and native GPUI shell
Rust checks / checks (push) Successful in 3m35s
2026-10-08 12:19:45 +02:00