8 Commits
Author SHA1 Message Date
harry f1c31d6c90 feat: keep Clipbin recording in the tray
Add native Linux SNI and Windows notification-area trays, single-instance reopening, background startup and login entries. Preserve recording and discovery after close, with clean Quit and reachable no-tray fallbacks.

Track capture-source audio delivery independently of silent output tracks and warn without stopping video. Give clip metadata its own row and shape labels at final bounds to avoid GPUI 0.2.2 truncation cache and text-run bugs.

Validated with strict workspace checks, 57 tests, Windows core/OBS/probe cross-clippy, all ten capture scenarios, tray/session/clips/playback rigs and narrow/wide screenshots. Document runtime validation gaps.
2026-10-13 18:29:37 +02:00
harry 7ac7e66ff1 feat: export clips, protect bookmarks and clean session storage 2026-10-08 18:56:51 +02:00
harry 36c13449dd feat: map session times to segment files
Rust checks / windows-cross-check (push) Successful in 1m0s
Rust checks / linux (push) Failing after 11m37s
Metadata::locate finds the segment and in-file offset for a session time
(none inside gaps or empty tails), Metadata::covering lists the segment
pieces in a range for export, and Store::metadata loads one session with
resolved paths. Shared groundwork for playback and clip export.
2026-10-08 17:54:07 +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 e20b2680cc feat: rebuild the desktop interface in clipbin's style
Rust checks / windows-cross-check (push) Successful in 38s
Rust checks / linux (push) Failing after 5m18s
Replaces the placeholder shell with a sidebar app in the web Clipbin's look:
a session library, a session timeline (footage, missing and cleaned-up spans,
bookmarks, a draggable clip selection exported on keyframes), clips and
settings. Geist Mono and Lucide icons are embedded. The core gains the
library model and formatting; sample data is opt-in for interface work, and
scripts/rig/screenshot-ui.sh captures each screen headlessly.
2026-10-08 15:45:10 +02:00
harry 795118c200 feat: record at the source's size, only once capture works
Rust checks / windows-cross-check (push) Successful in 41s
Rust checks / linux (push) Failing after 5m37s
Encoders and the segment output are created when the capture source first
has a picture, at its own size (portrait monitors record portrait) unless a
resolution is configured, so nothing is written while waiting for a source.
SPEC.md records both decisions; validation docs cover how sessions should end
when the game closes.
2026-10-08 15:34:42 +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