Releases: Aseiel/VideoHighlighter
Release list
VideoHighlighter 0.12.0
Download
Install VideoHighlighter for Windows
One file. Run it, click through, done — it fetches and unpacks
everything else itself. Installs per user, no admin rights needed.
| Installer | Portable | |
|---|---|---|
| Windows (desktop app) | Setup .exe | .7z part 1 + part 2 |
| Windows (web UI) | — | .7z part 1 + part 2 |
| macOS | — | .dmg |
The installer is not signed yet, so Windows SmartScreen shows
"Windows protected your PC" on first run — More info → Run anyway.
The portable downloads are split archives: every .7z.0NN part
listed under Assets must sit in the same folder, then extract the
.001 with 7-Zip. Downloading one part alone fails. The installer
above exists so you never have to do that.
The web UI is the Tauri shell around the React frontend with the
Python engine bundled; it has no installer because no installer can
hold a 1.7 GB sidecar.
00-VideoHighlighter-Windows-Setup.zip is the older script-based
installer, kept as a fallback.
VideoHighlighter 0.11.3
Download
Install VideoHighlighter for Windows
One file. Run it, click through, done — it fetches and unpacks
everything else itself. Installs per user, no admin rights needed.
| Installer | Portable | |
|---|---|---|
| Windows (desktop app) | Setup .exe | .7z part 1 + part 2 |
| Windows (web UI) | — | .7z part 1 + part 2 |
| macOS | — | .dmg |
The installer is not signed yet, so Windows SmartScreen shows
"Windows protected your PC" on first run — More info → Run anyway.
The portable downloads are split archives: every .7z.0NN part
listed under Assets must sit in the same folder, then extract the
.001 with 7-Zip. Downloading one part alone fails. The installer
above exists so you never have to do that.
The web UI is the Tauri shell around the React frontend with the
Python engine bundled; it has no installer because no installer can
hold a 1.7 GB sidecar.
00-VideoHighlighter-Windows-Setup.zip is the older script-based
installer, kept as a fallback.
VideoHighlighter 0.11.2
Download
Install VideoHighlighter for Windows
One file. Run it, click through, done — it fetches and unpacks
everything else itself. Installs per user, no admin rights needed.
| Installer | Portable | |
|---|---|---|
| Windows (desktop app) | Setup .exe | .7z part 1 + part 2 |
| Windows (web UI) | — | .7z part 1 + part 2 |
| macOS | — | .dmg |
The installer is not signed yet, so Windows SmartScreen shows
"Windows protected your PC" on first run — More info → Run anyway.
The portable downloads are split archives: every .7z.0NN part
listed under Assets must sit in the same folder, then extract the
.001 with 7-Zip. Downloading one part alone fails. The installer
above exists so you never have to do that.
The web UI is the Tauri shell around the React frontend with the
Python engine bundled; it has no installer because no installer can
hold a 1.7 GB sidecar.
00-VideoHighlighter-Windows-Setup.zip is the older script-based
installer, kept as a fallback.
VideoHighlighter 0.11.1
Download
One file. Extract it anywhere and double-click
Install-VideoHighlighter.bat — it fetches and unpacks the rest.
Install VideoHighlighter for Windows
| Installer | Portable | |
|---|---|---|
| Windows (desktop app) | Setup .zip | .7z part 1 + part 2 |
| Windows (web UI) | — | .7z part 1 + part 2 |
| macOS | — | .dmg |
The portable downloads are split archives: every .7z.0NN part listed under
Assets must sit in the same folder, then extract the .001 with 7-Zip.
Downloading one part alone fails. The installer above exists so you never have
to do that.
The web UI is the Tauri shell around the React frontend with the Python engine
bundled; it has no installer because no installer can hold a 1.7 GB sidecar.
VideoHighlighter 0.11.0
VideoHighlighter 0.11.0
The theme of this release is running on the machine you actually have. 0.10 explained its choices; 0.11 is about where the work runs. AMD and other DirectX 12 cards get a real GPU path, RTX 50-series cards stop failing on their first operation, the compute backend can be picked from the settings screen, and the language model can live on another machine. Around that: a second, web-based front end with a short-form reel pipeline, contributed from a fork; the report's clip and chapter narration, now in this edition; and many fixes for how the app behaves once it is installed.
44 commits on main since 0.10.0, plus 82 from the fork merged in #15.
Known issue: DirectML in the packaged Windows build
The downloaded 0.11.0 exe cannot build the ONNX models DirectML needs: the export fails with DLL load failed while importing _ml_dtypes_ext, and detection and action recognition run on the processor. 0.11.1 and 0.11.2 have the same bug. It is fixed in 0.11.3. Installs from source are not affected once onnxscript is installed.
GPU and compute
- AMD and any DirectX 12 card. Object detection and R3D action recognition run through ONNX Runtime with DirectML. This path needs no separate torch, so it can ship inside the same build as the NVIDIA one. The model is exported once on your machine, cached, and exported again when you import newer custom weights.
- R3D is tested with a real forward pass when it loads, so an operation DirectML cannot run fails at startup, not an hour into a job. If ONNX Runtime quietly hands back a CPU session, that session is declined.
- From source, experimental
torch-directmlsupport also covers the CLIP visual-search filter and AMD's AMF video encoders. Microsoft's software renderer is no longer chosen by mistake when it is listed as the first adapter. - Choose the backend by name under Advanced → Compute → Prefer: automatic, NVIDIA (CUDA), Intel (OpenVINO), AMD or any DX12 card (DirectML), or processor only. This is a preference, not a command: if the machine lacks that backend, the app logs why and falls back to the automatic order.
- RTX 50-series. The Windows build now ships torch 2.7.1+cu128, which adds Blackwell kernels and drops no older generation (GTX 10-series included). Blackwell needs an NVIDIA driver from the R570 series or later.
- If the bundled torch cannot run on a GPU, the app now skips it and says why. Before, it picked the GPU and failed on the first operation, and motion detection quietly dropped out of the run.
- New guides:
docs/AMD-GPU.mdanddocs/INTEL-GPU.md, with the first measured numbers.
Language models
- Point the whole app at any Ollama server, not just localhost. The LLM panel has an Ollama host field that accepts a bare IP, host:port or a full URL. When the connection fails, the message now says whether it was a remote failure (bind address, firewall) or a local one.
docs/OLLAMA-REMOTE.mdcovers the server side. - Reasoning models no longer come back blank. A model that thinks before answering, such as
qwen3-vl:8b, used to run out of its token budget while still thinking and write nothing.
The highlight report
- Clip and chapter narration, ported from Pro: a paragraph per kept clip, based on the clip's frames, and a telling of each chapter. Both are switched on from the report settings.
- The report has its own group on the Advanced tab. It used to sit inside Bounding Box Visualization, presented as a debugging switch.
- The README now links a whole, unedited report from a real run, rather than describing one.
Web UI and short-form reels
New in this release, from @thewbuk's fork. It ships as a separate portable download.
- A Tauri + React front end with the Python engine bundled behind it.
- A reel pipeline: a story planner with pacing and on-screen text, vertical crop-to-fill output, clip choice that takes framing into account, 57 transitions with easing, cutting on the beat, and a music bed that replaces, mixes or ducks the original audio.
- Folder input, a rotation probe, and a sharpness gate that skips blurred clips.
Export and editing
- Export separate clips. Each highlight is also written as its own file, in
<video>_clips/next to the combined reel. - A counter of analysed videos, for the session and in total.
Timeline
- Navigation is deliberate. Right- and middle-drag panning works (it never did here). Clicking a spot already on screen no longer scrolls the view. Drawing a selection scrolls at the edges instead of jumping. Shift+wheel scrolls sideways.
- The filmstrip notices side-by-side VR footage and shows one eye, instead of the seam between the two.
- Filmstrip thumbnails load about twice as fast: 7.6 → 16.7 per second, and a hover preview dropped from 300 ms to 105 ms.
- Fixed: the window could stop repainting after the track-label column threw an error.
- Fixed: a crash on timeline rebuild.
- Fixed: rows squashed under a large empty band.
- Fixed: the viewer failing to open from a read-only working directory.
Application and interface
- Administrator mode is no longer needed. If the install folder refuses writes, the cache, logs and settings go to the per-user location. A portable install is unchanged.
- The interface can be scaled on top of the system's own scaling, with
ui_scaleinconfig.yamlorVH_UI_SCALE. Useful on a 4K TV or other large display, where system scaling is set for viewing from across the room. - The edit toolbar scrolls instead of cutting off its last controls on scaled displays.
- The About tab's Updates panel is back. It had been invisible since the last large merge.
- The splash screen closes when the app is ready, instead of staying on top until exit.
Fixes
- Audio: peak detection stopped discarding the loudest samples in clipped audio, and the peak search is about 32× faster.
- FFmpeg no longer needs a separate install; the app runs on the copy its Python packages already carry. A transcript that fails is logged and the run continues, instead of looking like a cancel.
- The debug log no longer fills with progress-bar redraws (a five-hour video produced over a megabyte of them). It now captures Qt's own warnings and records whether the app was closed or killed.
- macOS:
- The app writes to
~/Library/Application Supportinstead of/. - HTTPS certificates are verified, so the update check no longer reports "no manifest".
- The bundle stops deleting the library OpenVINO needs, which had made every analysis run fail at import.
- These build fixes were checked on CI, not yet on a Mac.
- The app writes to
Documentation
- A worked composition rule, "the ball in the net", with a screenshot of the rules editor. The detection guide explains what testing how far inside a region would take.
- The README says which edition is which, and how to run the macOS build.
- A
COPYRIGHTfile names both copyright holders alongside the unchanged AGPL text.
Also in Pro
Everything above is in both editions. Pro additionally gains:
- Training an object detector of your own, from inside the app.
The project
VideoHighlighter is owned and maintained jointly by Przemysław Kreft (@Aseiel) and Meric Donmezer (@mericdonmezer-ops), its two copyright holders. The separate clip export and the issue templates in this release are Meric's work.
Thanks
- Wojciech Bandzerewicz (@thewbuk), for the web UI, the reel pipeline and the engine fixes offered whole in #15.
Full Changelog: 0.10.0...0.11.0
| Platform | File | Notes |
|---|---|---|
| Windows | VideoHighlighter-Windows-Setup.zip |
Recommended. Extract, then run Install-VideoHighlighter.bat |
| Windows | VideoHighlighter-Windows-0.11.0.7z.001 + .002 |
Portable. Both parts in one folder, extract .001 with 7-Zip |
| Windows (web UI) | VideoHighlighter-Web-Windows-0.11.0.7z.001 + .002 |
Portable only; no installer can hold the 1.7 GB engine |
| macOS | VideoHighlighter-0.11.0.dmg |
Standalone |
VideoHighlighter 0.10.0
VideoHighlighter 0.10.0
The theme of this release is explanation. Earlier versions gave you a cut and a score; 0.10 gives you a report that says what each moment was, how it compared with the rest of the video, and what to change if the answer was wrong. Around that sit a new facial-expression signal, a rebuilt timeline, a composition-rule engine that can test per-second measurements, and a Windows installer.
144 commits since 0.9.0.
The highlight report
- A "Why These Moments" report is written by every run and opens from a button in the app. It explains, clip by clip, why that stretch was chosen.
- Each clip is measured, not just scored. The report states the share of the video it outscored, and compares it against the rest of its own file rather than an absolute scale.
- Clips say what a moment was — the detections behind it, with their confidence — not only what it measured.
- The video is divided into named chapters, with a paragraph on how each one differs from the others. Where a transcript exists, it names and tells them.
- A local model can read the finished report and summarise it. The model is picked per run from the ones already on the machine; several can be kept.
- The report answers claims. Type an assertion about the footage and it either answers from a measurement the run already has, or names the check that would settle it. The questions and their answers stay in the report.
- The run closes with three lists: what was observed, what was asserted, and what is neither.
- Loud moments are scored, with the reason the cut came out the shape it did.
- Findings are grouped by the signal that produced them, and each signal gets its own box on the Basic tab.
The advisor
- Says why a highlight came out the way it did, in plain language.
- Names the detector worth trying next, and asks what went wrong when the result was not what you wanted.
- Names what the run could not check, and drafts the composition rule that would check it.
- Offers only the routes the build actually ships, so no suggestion is a dead end.
Facial expressions
- A facial-expression model now ships with the app and runs as a scoring signal alongside motion, audio, objects and actions.
- Built-in expression classes work out of the box; expressions can also be asked about on their own, as a question rather than a weight.
- Scan and search expressions directly from the Search panel.
- Face search can now start from a frame where a person's face is visible.
- Faces can be taught as a category from example crops.
Timeline
- Composed events are their own filterable group, with per-event checkboxes nested under the layer.
- The objects layer gets the same per-class rows the events layer has.
- A filmstrip of the whole video runs as the bottom lane.
- A chosen clip can be swapped for the next best moment without re-running.
- The per-track counter shows which event you are looking at, follows the playhead, and accepts a typed number to jump.
- Track labels are no longer cut off, and the time ruler keeps its labels inside itself at any window size.
Highlights and composition rules
- Choose between the best moments and the whole story when building a cut.
- Score and report without rendering a video, when you only want the analysis.
- Composition rules can test per-second measurements, bound an event's length from above as well as below, and run on their own without a previous analysis.
- A composed event is rated by its weakest detection, not its strongest.
- Composition rules are applied on a cached pass too, so a re-run agrees with a fresh one.
Transcript and subtitles
- The progress bar moves while a chunk is being transcribed, and shows the translation pass rather than hiding it in the log.
- Subtitles can be written straight from the transcript the video already has.
- The spoken language is asked for once, not twice.
- Cancel stops the transcription instead of queueing behind it.
Application and interface
- The app has an icon, and a splash screen that shows the logo and says what is being loaded.
- New releases are announced in the window and installed on request.
- The main window can be made smaller, with the freed space going to the tabs.
- The mouse wheel scrolls the panel instead of changing the value under the cursor.
- Preview follows the system's default audio output when it changes, and seeks to where you let go even if that is where you already were.
- Hover previews deliver the frame being waited for, and stop showing "loading" for a frame that is already decoded.
Fixes
- Three concurrent writers could throw away a finished analysis; the cache is now written atomically.
- A cached run recomputes what it skipped instead of reusing nothing, and writes re-derived events back where the timeline reads them.
- A fixed scene-cut threshold could report a whole film as a single scene.
- Downloads capture streams whose URL looks like nothing.
- The overlay filter menu stays open while classes are toggled, and volume and mute reach the live overlay's player.
- The timeline lets go of a playhead its own rebuild deleted.
- Search says which stage the progress bar is counting.
Packaging, install and documentation
- A Windows bootstrap installer is built in CI and attached to releases.
- The installer's version is derived from
version.py, and a tag that disagrees withversion.pynow fails the release. cryptographyis declared as a dependency, which the updater needs to verify a release.- A guide to choosing between the detection engines.
- READMEs in Simplified Chinese, Japanese and Spanish, with a sync that keeps them current without manual maintenance.
- The README leads with the narrated demo and refreshed screenshots.
mainis documented as append-only, so a contributor cannot be erased by a history rewrite.
Also in Pro
Everything above is in both editions. Pro additionally gains:
- A chat panel that reads the run's data by default: it answers questions about the footage, says what to run next, and can run it for you.
- A reading mode that commits to one line per moment, and a mode that says what is unusual for this file rather than merely what happened.
- Narration: a running note on one person at the level of detail you ask for, rewritten as a single commentary in one of two voices, driven from the GUI.
- A track log that records a timestamped observation for every measured change, with the evidence behind it.
- Delivery analysis: how hard a voice is working, not only how loud it is, plus vocal brightness, onset, and waveform peak density and concentration.
- Rhythmic reaction bursts found from the audio alone.
- A region colour index, with the gates that decide when it is valid.
- Detection of where a video changed recording session.
- Clips and chapters read off the frames themselves, not only off the figures.
- Open-vocabulary detection wired into the pipeline and the UI, and an offline "find more like this" region search from an example box.
The project
VideoHighlighter is owned and maintained jointly by Przemysław Kreft (@Aseiel) and Meric Donmezer (@mericdonmezer-ops), its two copyright holders. The Windows bootstrap installer and its CI job in this release are Meric's work.
Thanks
- 吴天昊 (@SkyWuZJU), for the multilingual READMEs and the maintenance-free translation sync.
- Szymon, Przemek's son, whose idea the splash screen was.
Full Changelog: 0.9.0...0.10.0
| Platform | File | Notes |
|---|---|---|
| Windows | VideoHighlighter-Windows-Setup.zip |
Recommended — one-click install |
| macOS | VideoHighlighter-0.10.0.dmg |
Standalone |
VideoHighlighter 0.9.0
A big release focused on the signal timeline, on-demand analysis, and a unified new look.
Reworked signal timeline
- Modernized timeline window with a cleaner layout that fits properly on screen.
- Run analysis on demand — trigger action, object, and transcript analysis right from the timeline instead of committing to everything up front. Per-signal Run buttons replace the old "Skip highlights" toggle.
- Action filter, transcript keyword marking, and a ghost transcript track for context.
- Peak-jump arrows on the audio waveform row to hop between loud moments.
- Zoom-adaptive time ruler that no longer squishes as you zoom.
- Timeline now shows the real match score from search, not a flat 1.0.
Transcription
- Language picker for on-demand transcription, defaulting to English.
- Transcript search keywords moved to Basic Settings; keyword controls now grey out when transcript is off.
Visual & CLIP search
- Per-object show/hide for visual search with a foldable list, plus show all / none and per-object remove.
- CLIP search now runs on NVIDIA (torch/CUDA), not just Intel/OpenVINO.
- Reused frame embeddings so re-wording a query doesn't rescan the whole video.
- "Stop on find" now defaults off.
Object detection & custom action models (Advanced tab)
- Object model selector and a new Mixed detector mode.
- Import custom action models — OpenVINO decoders and R3D (.pth) models — with automatic, GPU-first backend selection and correct training normalization.
Scoring
- Intro/outro highlight points and configurable boost-window durations are now exposed in the Basic tab, combined into tidy single rows.
Rendering & VR
- Choose CPU (VR-safe libx265) or GPU encoding for highlight rendering.
- Real left-eye crop for both plain and live-overlay VR preview.
- Faster live-face decoding via raw P010/NV12 planes.
Look & feel
- New central theme — a neutral graphite base with one crisp blue accent — applied across the timelines, download tab, and controls.
- Batch progress row, painted download icons, and a quieter tab bar.
Packaged-build fixes
- Face search now works in the packaged .exe (face models are bundled).
- Preview correctly shows video with the overlay off in packaged builds.
Downloads
Windows — recommended
Download VideoHighlighter-Windows-Setup.zip (first asset below), extract it
anywhere, and double-click Install-VideoHighlighter.bat. The script
downloads both archive parts and unpacks them automatically.
Manual: grab both VideoHighlighter-Windows-0.9.0.7z.001 and
VideoHighlighter-Windows-0.9.0.7z.002, put them in the same folder, and extract
the .001 — 7-Zip joins the parts automatically. Downloading only one part will
fail to extract.
macOS: you only need the .dmg.
| Platform | File | Notes |
|---|---|---|
| Windows | VideoHighlighter-Windows-Setup.zip |
Recommended — one-click install |
| Windows | VideoHighlighter-Windows-0.9.0.7z.001 |
Manual — extract this one |
| Windows | VideoHighlighter-Windows-0.9.0.7z.002 |
Manual — must be in the same folder |
| macOS | VideoHighlighter-0.9.0.dmg |
Standalone |
VideoHighlighter 0.8.2
Windows download: grab both
VideoHighlighter-Windows-0.8.2.7z.001and
VideoHighlighter-Windows-0.8.2.7z.002, put them in the same folder, and extract
the.001— 7-Zip joins the parts automatically. Downloading only one part will
fail to extract. macOS users need only the.dmg.
⚠️ Upgrade note — saved faces must be re-enrolled
Face recognition moved to a new engine (see below). Embeddings changed from 512-d
to 128-d, so entries in an existing face_db.json are cleared on first load and any
person you had enrolled for "avoid" must be re-added once. One-time only.
New Features
Hardware-accelerated highlight export, with live progress
Rendering was CPU-only (libx264), gave no feedback, and failed outright on VR
sources. Export now probes ffmpeg -encoders and uses your machine's hardware
encoder — a large speedup at VR resolutions — with progress reported as it runs.
Encoder choice is device-aware (NVIDIA → NVENC, Intel → QSV), and picks HEVC for
high-resolution/VR footage above 4096px where H.264 hardware can't reach. libx264
remains the final fallback, so it always works. The same selection now drives the
pipeline's cut/concat, not just the editor — both share one module
(modules/encoder_select.py), with probes cached instead of re-run.
Edit timeline: build a cut without dragging every clip
- Right-click any signal bar → "Add this clip to edit timeline", or
"Add all query clips (N)" to append every bar in that row at once. Clips are
deduped and sorted by start time. Complements the existing drag-and-drop and
Ctrl+click. - Multi-select clips with Ctrl / Shift / Ctrl+A and remove them in bulk.
- Auto-save on close — manual edits used to be discarded unless you pressed
"Save to Cache". Closing the window now saves them if you actually changed
anything, and they're restored when you reopen. - The timeline starts empty instead of fabricating sample clips.
- Play Edit scrolls the timeline to follow the playhead.
Custom object detectors in the Advanced tab
The pipeline could always run a custom-trained model, but there was no way to pick
one. Choose "Custom (my trained model)" and point it at a .pt or .onnx file;
the choice persists to config.yaml. A trained model is finally usable end to end.
Live BBox Overlay: real gating and per-item filters
The checkbox now gates the real-time worker itself rather than just hiding cached
boxes — unticking it actually pauses inference instead of leaving it running. It
also stays usable in real-time mode with an empty cache. The Filter menu is
regrouped by source — Object / Action / Facial recognition — with every detected
item individually show/hide-able, and the facial group rebuilt live from the face
bank.
Downloader: automatic link detection
You no longer type a per-site link pattern by hand — the field is gone. The
downloader inspects the page's links against known video-path tokens (/video/,
/watch, /embed/, /scene/, …), picks the best-supported one, and logs its
choice. An explicit pattern still overrides it.
About & Contact tab
Shows version and edition, a link to the Pro edition, support links (email,
Discord, website, source), and AGPLv3/CLA notices.
Improvements
- Faster thumbnails: on-screen frames are prioritised, 8K sources decode
keyframes only, and the edit timeline pulls thumbnails via ffmpeg — a large
speedup on VR footage. - Smoother timeline during visual search: rebuilds are debounced, so hundreds
of streaming hits repaint once after the burst instead of once each. - Motion detection reports progress in the GUI instead of appearing frozen.
- Permissive face recognition: InsightFace's
buffalo_lweights are licensed
for non-commercial/research use only, which conflicts with this AGPL freeware.
Face detection/recognition now uses OpenCV Zoo YuNet (MIT) and SFace,
both bundled. Theinsightfacedependency is gone. See the upgrade note above.
Fixes
- "Follow Playhead" could not be re-enabled on PySide6 6.10.
- Visual Search no longer crashes on a second run when the worker thread had
been torn down. - Download cancel actually stops the download and frees the UI.
- Logs stay selectable and copyable while streaming, and assistant messages
render on separate lines instead of running together. - Play Edit resumes where edit playback stopped, not at the main playhead.
- Clicking mid-edit hands control back to the video timeline.
- A stuck hover preview after deleting a clip by keyboard or button.
- Visual-search findings persist even when the cache has no
video_hashor
the file is missing. - A fresh clone was missing modules and wouldn't start.
- The Windows release archive name is quoted correctly in the build workflow.
Developer / CI
- Static local-import completeness check (thanks @pixelfreaki, #6) — catches
imports of modules that aren't committed, the failure that breaks a fresh clone
or a packaged build. Runs in the test suite with no heavy dependencies. - CONTRIBUTING.md and a Contributor License Agreement for dual-licensing.
insightfacedropped;opencv-python>=4.7pinned (needsFaceDetectorYN/
FaceRecognizerSF).
VideoHighlighter 0.8.1
New Features
Visual Search engine selector (CLIP / LLM / CLIP + LLM)
Visual Search can now run three ways, selectable per search:
- CLIP — a fast, GPU-accelerated similarity scan of the whole video (seconds, not hours). Best for broad concepts. Runs on Intel Arc via OpenVINO; no model connection required.
- LLM — the vision model inspects each frame (slower, but reasons and is open-ended).
- CLIP + LLM — CLIP ranks every frame on the GPU and the LLM only confirms the top-K candidates, combining CLIP's speed with the model's judgment.
The chosen engine and Top-K are remembered between sessions, and ◀ / ▶ arrows let you step through matches.
Browse & Select downloads
A new * Browse & Select…** button on the Download tab opens a thumbnail grid of a site's videos with checkboxes — pick exactly which ones to download instead of grabbing everything. Auto-detects static vs. JavaScript-rendered listings.
Live download speed & ETA
Downloads now show real-time speed, ETA, and size as they run.
Manual avoid ranges
Drag-select a region on the Signal Timeline and right-click → "Avoid this range in highlights" (or use the Avoid button). Marked ranges are excluded from highlight selection on the next run. Right-click a range to remove it, or clear all.
Improvements
- Timeline navigation: prev/next ◀ ▶ arrows now work on the Visual Search and Highlights tracks (Highlights arrows were reading the wrong data and are fixed).
- Cleaner timeline: signal types with no detections start unchecked and hidden, and track arrows only appear for tracks that actually have events.
- Faster Visual Search scans: one-word YES/NO presence check and content-aware frame skipping reduce redundant model calls (full-resolution frames preserved for accuracy).
- Compact LLM panel: the LLM settings group was tightened so the chat box and input no longer get pushed below the screen in the timeline dock.
Fixes
- Window maximize works again — the main window and the Signal Timeline Viewer could not be maximized; the size cap that disabled the maximize button was removed.
- Basic Settings tab no longer overflows the window — its two tall groups are now laid out side by side.
- Progress bar no longer pushes the Run/Cancel buttons and log off-screen when a pipeline starts.
Developer / CI
- Added a unit test suite (pure pipeline logic — forbidden ranges, segmentation, SRT, region geometry) that runs in seconds with no GPU/heavy deps, plus a GitHub Actions workflow that runs it on every push and PR.
- OpenVINO bumped to 2026.2.1 (replaces the discontinued
openvino-dev). - New optional dependencies for the CLIP engine:
transformers,optimum-intel.
VideoHighlighter 0.8.0
New features:
- Composition Engine
- Labeler
Composition Engine
Detect higher-level actions from spatial relationships between objects (e.g. "object A inside region B N times")
Configurable via composition_rules.yaml with AND logic, majority-vote smoothing, and ghost tracking through brief occlusion
Custom Keypoint Model
Train and run your own YOLO pose model directly in the app
Select and switch custom models from the UI; model is picked up automatically after training
Labeler
Optical-flow assisted tracking between labeled frames
Custom keypoint names defined by the user
Multi-instance support — place the same keypoint multiple times per frame
Occlusion handled correctly in interpolation and optical-flow tracking
Auto-export to dataset/train/labels/ — no save dialog needed
Timeline
Waveform colored by RMS energy (percentile-normalized)
Show all detected actions by default; toggle to highlight-only view
Per-class show/hide filter for bbox overlay
Filter state (confidence thresholds, action/object visibility) persisted across sessions
◀ ▶ navigation arrows on each track row — jump to previous/next event instantly (respects active filters)
Overlay
Readable, abbreviated, non-overlapping bbox labels
Per-class show/hide filter
Bbox colors match the timeline
Training
YOLO training auto-resumes from last.pt on startup (--fresh to override)
Checkpoints, warm-start, and correct best.pt path resolution
UI
Advanced tab laid out in a 2-column grid (groups use horizontal space when maximized instead of one tall column)
Action recognition progress bar shows a single clear backend label (CUDA / OpenVINO-GPU / OpenVINO-CPU) instead of a confusing per-model device list
Bug Fixes
Intel Arc GPU now detected via OpenVINO in packaged builds (the frozen exe's CPU-only torch previously reported "No GPU found", forcing everything onto the CPU)
Auto action backend now picks the right hardware — uses OpenVINO on the Intel GPU instead of forcing R3D onto the CPU when no CUDA is present
Fixed Advanced tab overflow that pushed the Run button off-screen and blocked maximizing (notably in the frozen exe)
Reduced action timestamp / waveform bin desync from ~2s to ~0.5s
Fixed ffmpeg resolution in frozen exe for time-range processing
Fixed config.yaml resolution and save persistence in PyInstaller exe
Fixed custom action model not resolving next to the exe
Performance
Lazy loading for realtime overlay bboxes
Waveform resolution scales with video duration