Forensic Subtitle & Audio Track Intelligence
Production Release Changelog Manifest
| Ecosystem Version Bounds: | v1.01 — v1.09 |
| Authoritative Compiled Date: | October 26, 2026 at 02:32 UTC |
| Lineage: | Successor to Sublutions Multi-File Pro v5.02 |
| Classification Level: | Production Release Documentation Base |
Development progression and integration blueprints mapped across the v1.x Architecture Family lifecycle.
Large batch add — stable, fast, and usable
Adding dozens or hundreds of files no longer locks the app or spawns a pile of empty windows while the batch builds. Rows appear right away, the quick stream read fills in duration and codec in the background, and the window stays responsive.
blank pythonw / duplicate Sublutions+ windows — queue and Builder widgets stay parented, reads run without tearing the UI down, and the native Windows file picker is left alone.
file at add time (that could cost several seconds each). Captions are checked when you open a file or at Start, using a short ~5 second sample. HDR detection is unchanged.
first file stays selected and the Builder loads it; appending keeps your selection and scroll position instead of jumping to the last file.
active) no longer leaves the center pane on “Add video files to begin” while the batch already shows the file.
Batch responsiveness, on-demand re-analysis, clearer processing telemetry, and setup/output-folder polish.
Files land in the batch without freezing the window; you can re-run forensic subtitle analysis from the queue after Preferences change; the processing log stays readable through long runs; and Always detect / MKV header work is easier to follow in telemetry and Preferences.
to run forensic subtitle identification again without removing files — useful after changing Subtitle ordering in Preferences. Files are processed one at a time with the usual Analyzing subtitle N of M progress on each row.
Not Responding** while ffprobe ran on the UI thread.
details when the quick read finishes, then Checking in-video captions… when needed. Start Processing waits until both steps finish; unreadable files stay in the queue with an error until you remove them.
reflects real progress instead of a frozen window.
(including after MKV header expansion and when the results panel appears), so Session complete stays in view.
\[PROCESSOR] start and complete lines inthe telemetry pane, aligned with the progress step — not only on the file progress bar.
explains the step can take up to 90 seconds and how to turn it off in Preferences; a plain Language detected: line follows when it finishes.
processing-time language-detection notice (full timing and why in the User's Guide).
Audio language (forensic listen, CPU/Whisper, typical timing, why it helps the library).
path in the box immediately, not only after Start using Sublutions+.
last_movie_folder when setup is still verified but last_outdir was cleared (for example after a portable folder upgrade replaced src without your old settings.json).
Beta feedback fixes — External Subtitles, queue cards, per-file output, and Builder responsiveness
files.**
common case), the app treated that as “not scanned yet” and ran a heavy ffprobe pass over the start of the movie again whenever you changed Container, opened Compare, or pressed Start. The UI could freeze for several seconds on a fast PC and 10–15 seconds or more on older hardware or slow disks — even for a simple MKV→M4V remux with Same as Source.
found, the app remembers that and does not repeat the scan on every plan rebuild.
away; Compare and Start no longer stall on files without in-video captions. Files that do carry CEA-608 are detected the same way as before at add time.
Standard / SDH slots so the next job starts empty instead of leaving the previous paths in place.
did not add a Standard file, the Standard card readout shows Generated so you can see that dialogue will be created at run time.
· (Stereo)); runtime is on the line below in 2H 15M 54S (135M 54S) form (or 42M 10S** under one hour) so OpenSubtitles duration searches are easier to match at a glance.
the folder you pick (including UNC paths and the same folder as the source MP4) instead of reverting to the Preferences default; Browse always writes your choice, and turning the override on seeds the source file’s directory so MP4→MKV beside the original works as expected.
override and uses the planned container extension (e.g. .mkv when you convert from MP4), not the source file’s extension.
In-video closed captions (what track lists miss), a fast strip-only path, clearer subtitle labeling, and Metadata Only / UI polish.
Broadcast and DVR captures often carry US closed captions inside the H.264 picture — not as an MKV subtitle track. Plex and VLC can still offer English (Closed Captions) even when MediaInfo and mkvmerge list only video, audio, and your muxed SRT. Sublutions+ detects that ATSC data when you add the file, gives you the same Pass through / Discard choices you already use for image subs, and can remove only the embedded captions in seconds while stream-copying audio, muxed SRT/PGS tracks, and the rest of the file. Metadata Only layout polish and Builder card depth round out the release.
card in Image subtitles (format CEA-608 (ATSC A53)), with Pass through / Discard (default Discard) like PGS/VobSub.
bitstream filter (no picture re-encode). Discard on HDR schedules a video re-encode on the Preserve HDR path so HDR metadata is not damaged; the card notes when that applies.
off):
subtitle pipeline unless you built a minimal plan by hand.
skips subtitle scrub, hero remux, and processing-time audio detection. Every existing subtitle track is stream-copied unchanged; only in-video captions are removed. Preserve metadata still runs if checked — a typical TV capture can finish in under a minute with only those two options touched.
picture" no longer pay for forensic subtitle work you are not changing.
could stay undetected and Strip in-video captions only never became available for that file.
a one-off probe failure does not block stripping for the whole job. On SDR discard, Comprehensive telemetry names the stream-copy caption-removal step.
language tag (und); tagged languages stay English — PGS (etc.).
the batch column (under \+ Add files / Remove), visible only on Metadata Only — it is a view preference for every card and file. Toggling it no longer jumps scroll on the metadata cards. Default is on so encoder/statistics tags stay visible until you turn it off.
Preferences, and other card screens: fields on a slightly darker inset tray, recessed combos/readouts, subtle lit wells for stream icons, thin rule under section headings. Compare compact cards stay flat. Spacing unchanged on a typical Planned screen. Dark and light themes.
even when extra release text follows the year (e.g. AV1). Scene-style names without (year) still use the generic video icon.
(HTML/PDF rebuilt).
An HDR file can be re-encoded without losing HDR, Compare reads 10-bit AV1 correctly, and audio language is decided by consensus instead of one minute of dialogue.
Kill Bill proved the HDR path. An AV1 HDR10 source became HEVC Main 10 with the same PQ, BT.2020, and mastering display, and a Roku Direct Played it.
file that is HDR. It is checked as soon as that file loads. A file without HDR does not show it. Sync with Source still copies the video, which already keeps HDR.
which cannot keep HDR. The forced card showing Mux is the notice.
resolution, and the hardware encoder can. The first time one of those unsafe choices is picked while the box is checked, a popup offers Continue without HDR preservation (uncheck the box and keep the choice) or Change video settings (snap back to the closest HDR-safe choice and gray the unsafe ones until the box is unchecked). One line under the checkbox says that unchecking opens those choices again.
it again while the current selection cannot keep HDR asks the same question.
or HLG, primaries, matrix, and the mastering display and MaxCLL when the file has them. Dolby Vision and HDR10+ dynamic data stay on a copy and are not kept on a re-encode.
profile is Main still reads 10-bit when the picture is 10-bit, matching Current view.
while Preserve HDR is checked and the encode can keep it. When both sides say Yes the row is not highlighted, because nothing about HDR is changing.
existing 95% confidence rule) could mis-tag audio on some files — wrong language on the Planned card and in the output.
If both reach 95% confidence and agree on the language, that language is kept. If they disagree, or either scan never reaches 95%, a third full scan runs and the language with two votes wins.
is less likely to stamp the wrong language on the whole file. Re-detect uses the same rule; the log says whether two samples agreed or the third scan decided it.
Foreign text can fill the Forced / dialogue / SDH cards when Prioritize English has no English text, image subtitles get their own Pass through or Discard choice, and Generate dialogue-only from English SDH now owns the Standard slot the way you expect — including when a foreign dialogue track was sitting there.
Blu-ray rips often keep English as PGS and ship usable dialogue as Italian or French SRT. Those files no longer land on “Not kept” under Prioritize English. Image tracks are no longer invisible extras you can only lose. And when you bring in an English SDH to build clean English dialogue-only, you no longer have to Discard a foreign Standard track by hand first.
still owns Forced, dialogue, and SDH when it is present. If a role has no English text, the first foreign track of that role (stream order) fills the card — the three roles can be different languages. Discard non-English is unchanged: English text only.
SDH (for example “Italian — dialogue only”). Forced stays “Forced subtitle”.
not forensic text heroes and do not follow the English Preferences policy. Default is Discard. Pass through copies the stream on MKV; MP4 / M4V cannot carry them, so those containers offer Discard only. Cards match the text-card layout; titles such as "English — PGS" stay red so they still read as image tracks.
/ dialogue / SDH (or Other) card opens the extracted .srt in your default viewer; if the temp copy was gone, the app re-extracts it first.
SRT on the card — that would strip fonts, positions and effects. SubRip sources still offer SRT or ASS.
Generate is for English SDH only. The strip that removes "\[DOOR SLAMS]" and speaker labels is English-shaped; building a "dialogue-only" track from Arabic or Italian SDH produced a weak result, so the checkbox is hidden and generation never runs for a non-English hero SDH.
plan still treated a dialogue stream as present — so Generate never appeared, or a discarded track could reappear under Prioritize English.
English SDH builds dialogue-only and tags it with that SDH's language (not a hard-coded English tag).
English dialogue-from-SDH without fighting the planner.
competing for Standard/SDH or vanish from the plan you expected.
English SDH. Arabic and Italian move to Other (still Mux). Generate on → English dialogue-only, English SDH, then Other. Generate off → English SDH first, then Other (unticking Generate does not put Italian back ahead of English). Undo the external English SDH to restore displaced heroes. Other cards reach the encode plan and keep drag order.
in, without deleting foreign dialogue your household may still want in Other.
Forced ID, language-note scrub, and a batch list you can actually read — shaped by the Tenzing poster-child file and a season of scene-named Crystal Lake episodes.
TV files use three lines — series name, S01E07 · Episode Title, then the usual duration/codec line; Plex movies show Tenzing (2026). Hover for the full filename. The batch rail also grows a little in a wide or fullscreen window so the labels stay readable.
get a film-frame icon; other video keeps the camera.
app decided forced vs dialogue by this track's share of all same-language cues combined. A short forced track beside a large SDH could sit just above the cutoff — for example ~350 forced cues vs ~1,326 SDH (~21% of the total) — and was misread as a dialogue hero. Wrong burn/mux plan, wrong overlap-scrub partner, and viewers treated like they had a full dialogue track when they did not. Track titles could also influence solo-track cases.
sibling, not to the pooled cue total. Gap = (sibling cues − this track) ÷ sibling cues. A large enough gap vs SDH (50%) or vs dialogue (40%) marks Forced from counts alone. The container Forced flag is used only in a narrow borderline band (40–50% vs SDH, or 30–40% vs dialogue) when the track is still sparse (under ~4 lines per minute). Titles no longer drive identification.
+ SDH, no separate dialogue file — get the correct Forced hero instead of a fake "English" dialogue track, so planning, burn, and overlap scrub all target the right lines.
removed only when the language name was on a built-in list. Uncommon or invented names were often left on the dialogue or SDH track, so viewers could see the translation burned into the picture and the same foreign-language label in the soft subs.
(and sensible capitalization) even when the name is not catalogued — Sherpa, Nepalese, Klingon-style tags, and the like. Ordinary sound descriptions such as (in the distance) are still left alone. Remove-vs-shift timing for real dialogue (match forced text, trim, delay, or drop when there is no room) is unchanged from earlier releases.
without maintaining an endless language list — the case that showed up on real Tenzing-style releases.
Sublutions+ v1.02 is a library-owner's release: tagged files keep their tags and cover art through processing, the Planned view finally shows every track the finished file will have, and Preferences and the batch get out of your way.
Dan's first feedback and Steve's MetaX-tagged library shaped this one. Where the app cleared good tagging, it can now keep it; where Planned hid a track processing would create, that track now has a card.
each file's video card, off by default.
tags and cover art are carried into the processed file — MKV and MP4 alike.
"Chapter 1" spanning the movie is dropped; other chapters are kept.
equivalent; the rest are left out and named in the log.
quick method fails, the standard method rewrites the file once more; if even that fails, the processed file is delivered and the log says what wasn't kept.
Kept** on the Planned side.
Open with, the workspace switches to that file so you can check it without clicking the batch.
if it had replaced the video's own track in that role, the video's track comes back. Not offered on tracks that came with the video (use Discard for those).
Generate dialogue-only from SDH ticked, processing has always added the track, but Planned didn't show it and the summary line didn't count it — only Compare did. It now has its own card, marked NEW, just above the SDH card, with an editable title. Untick Generate to leave it out.
end of Preferences to disable every tooltip in the app. Requested by Dan, who found them distracting as the mouse moved.
until you click Options ▾, like Audio codec names, and the two columns are balanced so no card is stretched with empty space. The page still scrolls when a card is opened or the window is small.
every preference change briefly flashed a small blank "pythonw" window: the Builder's "Output:" line appeared as its own window for an instant while the page redrew.
Sublutions+ v1.01 is a refinement release shaped by real-world use. The blacklist scrub is smarter and safer, 10-bit video gets its own choice, the Builder no longer makes size promises it can't keep, and Metadata Only is calmer and harder to trip up.
Everything in this release came from processing real files from a real library. Where the app said something that wasn't true, it now says nothing; where it hid what it was doing, it now shows you.
"10-bit" or "8-bit", and the Current view has a Bit depth readout. It is read from the video itself, not guessed from the codec profile.
default on every file) or 8-bit for older TVs and devices.
nothing. With H.264 output the box reads "8-bit (H.264 is always 8-bit)".
are gone. A re-encode's size depends on the picture itself, and the estimate could be wildly wrong: 2.2 GB predicted for a file that came out at 445 MB.
sets a picture quality, so the saving depends on the file: the same choice can save 10% on one file and 80% on another. The User's Guide explains why.
legitimate dialogue (common words, or real words like "elite" in normal lines). You could not always see why a line was kept or dropped.
real words only remove a line when it also looks like spam; made-up release names still match exactly. The built-in list grew from 41 to 79 entries; spam is also caught by shape (URLs, credits, release tags, decoration). Hyphens, dots, and bracketed group names work. Every decision is shown in telemetry with a reason; # lines in the blacklist file are comments.
spam and site credits go, and you can audit the log instead of guessing.
bump had changed a required line in the temporary subtitle file used for burning; it is back to the standard value.
box, and the Browse and Clear buttons are gone once a file is loaded; Add files and Remove in the batch do that job.
the click until staging finishes, so an edit can't be quietly overwritten.
when processing finishes" is on. Metadata Only writes in place, so that is each file's own folder, not the output folder.
windows while the page refreshes, and an unexpected error ends with a note saying what went wrong instead of stopping silently.
longer pushes the log sideways or adds a left-right scroll bar.