Releases: highercomve/GhostReel
Release list
GhostReel v0.6.0
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- B-roll only script chats: a composer switch that cuts a montage on a theme with no interviews
and no voice-over. Each chat keeps its choice, and chooses between the clips' natural sound or
silence (for music). The model gets its own editing instructions (theme, shot-size progression,
visual continuity), the footage digest marks interview tapes, and any clip over someone speaking
on the microphone is dropped. - Full model log: a "Full log" button in the script chat shows every prompt, the model's
thinking, its answers with token counts and timing, and the local helper's output, live while a
turn runs. llama.cpp debug noise is filtered out.
Fixed
- Claude CLI backend: the prompt is sent on stdin as a plain brief. Pointed at a prompt file,
Claude described the file instead of answering ("no JSON object in CLI output"). - Claude CLI sessions: turns resume their own pinned session instead of
--continue, which
could pick up whatever Claude session last ran in the folder.
GhostReel v0.5.0
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- Built-in Web Server (Remote Access): GhostReel can now serve its full React desktop UI over HTTP,
allowing users to view projects, monitor tasks, and drive editing from a phone, tablet, or another
computer on the local network. - Embedded Axum web server (
webui.rs): Reads the embedded frontend bundle from Tauri's assets,
serves media clips and keyframe thumbnails, and proxies desktop invocations viaPOST /api/call. - Real-time Server-Sent Events (
/api/events): Streams live queue events, background task updates,
and chat generation progress to all connected web clients viaonEvent(). - Optional HTTP Basic Authentication: Protect web access with configurable username and password credentials.
- Web Access Settings: Dedicated configuration section in Settings to toggle the server, customize bind
address/port, set credentials, and view active LAN URLs.
GhostReel v0.4.5
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- Configurable pipeline stages per project: Projects now store pipeline stage configuration
(probe,transcribe,frames,describe,embed) persisted in SQLite (projects.pipeline_json,
migration 11). - Index without transcription (b-roll / dialogue-free footage): Speech transcription can now be
disabled during project creation or dynamically toggled later. Disabled stages are skipped entirely
during index runs and excluded from progress estimation. - Smart pipeline job synchronization: When a stage is disabled across all projects watching a video,
pending and queued jobs are markedskipped. Re-enabling a stage automatically restores them topending
for the next index run (while respecting zero-audio videos). - CLI pipeline management:
ghostreel project create <name> --no-transcribeor--stages <list>ghostreel project config -p <project> [--enable|--disable|--no-transcribe|--transcribe]ghostreel project show -p <project>displays active and disabled stagesghostreel index -p <project> [--stages|--skip|--no-transcribe]
- Desktop UI pipeline controls: Added a checkbox in the project creation modal to toggle
transcription, and a dedicated Pipeline Stages section inside the[ ⚙ Project ▾ ]header dropdown
to toggle stages interactively with clean vertical alignment.
GhostReel v0.4.4
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- Concurrent multi-sequence batching in
ghostreel-llm: Added--concurrency <N>to the
standalone llama.cpp helper, evaluating visual prompts and autoregressively decoding tokens for
multiple keyframes concurrently in continuous forward passes. Automatically computes optimal
concurrency based on free GPU VRAM and model weights (e.g. 4 concurrent sequences on 12 GB VRAM),
increasing describe throughput by up to ~6× (~0.75s/frame vs ~4.5s/frame). - Configurable keyframe vision sampling resolution: Default sampling resolution resized from
1280px to 768px (configurable down to 512px / 640px or up to 1024px / 1280px). Cuts visual token
counts and prompt evaluation time by ~2–4× while preserving sharp scene understanding. Available
in AI Models settings and directly in the project view. - Lazy camera steadiness analysis: Decoupled ffmpeg shake and jerk measurement from synchronous
keyframe extraction so initial indexing completes much faster. Steadiness runs as a dedicated
background job post-indexing or on-demand, with support for re-analyzing existing projects. - Streamlined Project Header & Actions Menu: Replaced crowded horizontal header buttons with a
clean right-aligned[ ⚙ Project ▾ ]actions menu beside[ Index now ]. Consolidates sampling
resolution, keyframe rebuilds, camera shake analysis, project renaming, and instant access to
"Delete project…" without scrolling down the video table.
GhostReel v0.4.3
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Fixed
- Jev is reachable from any chat. The Model / Jev / Jev → model selector disappeared as
soon as a chat was selected, so building with Jev was only possible from a fresh chat. It is
always shown now, and the chosen mode no longer resets when switching or starting chats. - A build continues the chat it was asked in. Building with Jev inside an open chat adds the
brief, the cut and its editorial notes to that session instead of opening a new one, so the
model's next turn still has the whole conversation. - Chats and timelines stay in step. A new chat starts with an empty timeline instead of showing
the last script of another chat; opening a script selects the chat it belongs to; the chat link
to the version on screen is marked; and saving an edited script keeps it in its session. - Existing preview renders are found. The preview panel picks up an MP4 already rendered for
the script, and the preview/export task still running or finished for it, after navigating away
and back.
GhostReel v0.4.2
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- Switch chat brain directly in the composer. A dedicated brain bar in the script chat composer
allows switching between Auto, Local (this computer), Server, and CLI without
navigating to Settings or Models. Depending on the selected backend, it exposes the local model
picker and think toggle, CLI tool and model selector with availability check, or server endpoint
configuration directly within the chat workflow. - Image and screenshot attachments in script chat. Paste screenshots directly from the clipboard,
drag and drop images, or pick files into the composer. Thumbnails can be previewed in a lightbox modal
and removed before drafting.
Fixed
- Chat progress and tool execution chips are preserved across navigation. Navigating away from
the chat panel (e.g. to Activity, Models, or Settings) during a live turn no longer loses the
running state or tool chips. The session cache and task queue synchronize live progress, keep the
composer locked during execution, and automatically reload messages and scripts upon completion. - Immediate session update on turn start. Chat sessions update their timestamp and order
immediately when a new prompt is sent, ensuring active sessions remain prioritized in the sidebar. - File export save dialog allowed by ACL. Added missing
dialog:allow-savepermission to Tauri
capabilities, resolvingCommand plugin:dialog|save not allowed by ACLwhen exporting MP4,
Premiere (FCP XML), or OpenTimelineIO (.otio).
GhostReel v0.4.1
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Changed
- The script composer is one decision. The chat box used to share a row with a Send button, a
"Jev drafts first" checkbox and a "Build with Jev" button, which left the input about 130 px wide
in the narrow chat column with its placeholder clipped mid-word. The textarea now takes the full
width; beneath it a three-way control — Model, Jev, Jev → model — picks how the brief
becomes a cut, with one action button whose label follows it and a one-line hint saying what each
costs. The Jev modes are disabled with a reason when no key is set, instead of failing after
being chosen.
Added
- The editorial judge can be switched off on its own (
jev.judge, and a pill in the composer).
jev.enabledis still the master switch — off means nothing leaves the machine — but it also
gates building with Jev, so turning the judge off used to take the Jev modes with it. Defaults
on; existing config files are unaffected.
GhostReel v0.4.0
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Added
- Refining, as something that repeats and keeps the best.
ghostreel script refine -p P --session N --rounds 3asks the chat brain to improve a cut several times and keeps the best
round the judge saw, never the last — a round can make a cut worse, and one did. On the Greet
Mag brief: Jev's build at 61, then 66 / 67 / 63 across three rounds, with flow going 0.57 → 0.93
and the ending 0.49 → 0.84. With Jev off there is no fitness to climb, so it degrades to plain
repeated turns. - "Jev drafts first" in the app. A toggle beside the chat box turns Send into the whole chain:
Jev chooses a cut out of the index, the judge reads it, and whichever brain Settings names
refines it from there. This is what makes the chain worth having for a local model — writing
from scratch the local Qwen scored 38 mechanically and 56 editorially; handed a built cut it
scored 98 and 64, the same structural lift agy gives, because it is no longer doing the research
it is bad at. - The cut closes on a picture rather than a talking head.
hold_the_last_pictureused to
extend whatever clip was last, which on a speaker gave two seconds of somebody moving their
hands with the sound already finished. It now cuts away to a described shot with nobody talking
in it, chosen by what it shares with the closing line. Only under a bed: without one the closing
voice is that picture's own audio.
Fixed
- The interviewer pass was asking Jev the wrong way, twice. Accuracy falls off with the length
of the state rather than the number of questions — an unmistakable interviewer line reads 0.56
against 63 lines and 0.96 against 20 — andserde_json::Mapis aBTreeMap, so the framing key
what_this_issorted afterlinesand twenty lines of dialogue arrived before the sentence
explaining what they were. That cost four of fourteen subject lines to false positives on a
labelled set: the speaker's own words scoring 0.89 as the interviewer, 0.46 with the framing
first. Windows are 20 lines now and the key is named to sort first, with a test that says so.
GHOSTREEL_DEBUG_JEVdumps each request. - A beat ran on into the reply over the top. One ended three segments past the speaker's last
line, through "Yeah." "Yeah." into the interviewer starting a story of his own — ten words of
ordinary English that no word count reaches and Jev scores 0.20.end_on_turnsreads a run of
two acknowledgements as a handover and keeps the longer side, so a pause inside somebody's own
answer is left alone. - Refining barely changed anything, because it was barely told anything.
judge::notesonly
spoke below 0.4, so a cut scoring ending 0.49, opening 0.56 and brief 0.68 heard about none of
them and changed only the one beat it was told about. The judge now always names the two
dimensions losing the most points, ranked by points lost rather than by score. - Every refine turn was judged against the wrong text. The turn passed its own message as the
brief, so "says what was asked" scored the cut against "Improve this cut…" rather than against
what was asked for. The same script read 67 in the turn and 76 against the real brief, four
times running. It reads the session's first message now. - "Build with Jev" in the app was a dead end. It saved the cut with no session and never
judged it, sosave_as_sessionhad one caller in the repo — the CLI — and the built script was
filed under the panel's orphans rather than under the conversation about to refine it. script importhad drifted from the repair sequence it is meant to mirror, missing
clamp_beds_to_beatsentirely.
GhostReel v0.3.2
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Fixed
- A clip could play five seconds of "Thank you." A cut came back at 39.9 s against a 40 s
target — a perfect duration score — with three of its eight clips being acknowledgements, a
third of the piece. Every existing check passed it: the clips were long enough, they ended on
sentences, the footage was real. Nothing asked whether the words were worth hearing.
empty_speech_issuesnow reports a source-audio clip whose speech is under four words, and the
prompt's checklist says it before the model drafts. Reported rather than dropped, because
somebody thanking a neighbour may be the moment and only the model knows; clips under a bed are
exempt, since nobody hears them. - A CLI brain was killed mid-script after 180 seconds. One
CliAgentConfigserves two jobs
with very different clocks — describing a frame takes seconds, writing a script takes minutes,
and agy needs about nine of them on a 96-video project. The chat now takes the larger of the
agent's own timeout andscript.server_timeout_s, which exists on the server path for exactly
this reason. A longer setting is the operator's and is kept.
GhostReel v0.3.1
Windows: GhostReel_*_x64-setup.exe · Linux: .AppImage or .deb · CLI only: ghostreel-cli-*.
GPU acceleration needs an NVIDIA driver 570+ (CUDA 12.8 runtime is bundled). On first start open Models and download the models.
Fixed
- A CLI agent could not run at all on Windows.
CreateProcesscaps a command line at 32767
characters and fails with os error 206, "The filename or extension is too long" — a message that
names the binary rather than the argument that is actually too big. The script chat passes the
whole project's speech in its prompt, 75 KB on a 96-video project, so every turn failed before
the agent started. A prompt past the platform's limit is now written to a file and the agent is
pointed at it;claudeis grantedReadandagythe directory. Unix allows megabytes, so the
threshold is set high enough there that nothing spills and the path behaves exactly as it did.