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.
This commit is contained in:
2026-10-08 15:45:10 +02:00
parent 795118c200
commit e20b2680cc
49 changed files with 3161 additions and 131 deletions
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Screenshots each Clipbin screen in the headless rig, for reviewing the
# interface on machines without a display.
#
# scripts/rig/screenshot-ui.sh [output-dir] [screen...]
#
# Screens: sessions, session, clips, settings, failed, empty. Uses the sample
# library (CLIPBIN_SAMPLE_LIBRARY) except for "empty".
set -euo pipefail
repo="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
out="${1:-${TMPDIR:-/tmp}/clipbin-screens}"
shift || true
screens=("$@")
[[ ${#screens[@]} -eq 0 ]] && screens=(sessions session clips settings failed empty)
mkdir -p "${out}"
cargo build --locked -p clipbin-desktop --manifest-path "${repo}/Cargo.toml"
app="${repo}/target/debug/clipbin-desktop"
for screen in "${screens[@]}"; do
env=(CLIPBIN_SAMPLE_LIBRARY=1)
case "${screen}" in
sessions) ;;
session) env+=(CLIPBIN_ROUTE=session:2) ;;
clips) env+=(CLIPBIN_ROUTE=clips) ;;
settings) env+=(CLIPBIN_ROUTE=settings) ;;
failed) env+=(CLIPBIN_SAMPLE_STATUS=failed) ;;
empty) env=() ;;
*) echo "unknown screen ${screen}" >&2; exit 2 ;;
esac
CLIPBIN_RIG_WIDTH="${CLIPBIN_RIG_WIDTH:-1600}" CLIPBIN_RIG_HEIGHT="${CLIPBIN_RIG_HEIGHT:-1000}" \
"${repo}/scripts/rig/headless.sh" bash -c "
kill \$(cat \"\${CLIPBIN_RIG_DIR}/game.pid\")
env ${env[*]} '${app}' > '${out}/${screen}.log' 2>&1 &
sleep 3
grim '${out}/${screen}.png'
kill %1" 2> /dev/null
echo "${out}/${screen}.png"
done