Codifies the publish process this project follows so any AI agent
picks it up automatically: bump patch version every change, validate
before publishing, commit/tag/push to the Gitea remote, build the
self-contained win-x64 exe, and keep only the 3 most recent release
zips locally.
Naming-bot style releases like:
Family Guy (1999) - S22E15 - Faith No More [HULU WEBDL-1080p]
[EAC3 5.1][h264]-NTb
tack the group on with a dash right after the last metadata bracket,
rather than as a bare word ("x264-Group") or inside a trailing
parenthetical. FileSuffixTagRegex only matched the bare-word case, so
this pattern fell through untouched.
Added FileSuffixBracketDashTagRegex to catch "[bracket]-Group" at the
end of the stem, guarded by IsMetadataBracket on the bracket contents
so an ordinary hyphenated word after an unrelated bracket (e.g.
"[Interview]-Style") is never mistaken for a group suffix.
Opening the selected file's default player is now triggered by
double-clicking the file queue row or a track table row, instead of
pressing Space. The Delete key still removes selected queue items.
Double-clicks on the track table's Copy checkbox column are ignored
so rapidly toggling it doesn't also launch the player.
Fansub descriptor brackets like [Multiple Subtitle] or [Dual Audio]
were being misread as release group names because their individual
words didn't match any known metadata pattern. This caused a bogus
tag to be stacked in front of files that already carried their own
[Group] prefix (e.g. Erai-raws releases).
- Recognize common multi-word fansub descriptors (Multi(ple) Sub(s),
Dual/Multi Audio, Hard/Soft sub, Uncensored/Batch/Complete, etc.)
as metadata via whole-phrase matching in IsMetadataBracket.
- Never prepend a derived release tag when the file's own filename
already starts with a different bracket prefix, preventing any
tag from being stacked on top of an existing one.
Folders that carry their release tag as a bracket at the end
(rather than a -TAG suffix or [TAG] prefix), e.g.:
Gravity Falls 2012 Season 2 Complete + EXTRAS 720p BluRay x264 [i_c]
now have that tag ([i_c]) prepended to the episode filename.
Also fixes a real bug where a title's own hyphenated word (e.g.
"Scary-oke") could be mistaken for a "-GroupName" suffix; the word
before the dash must now itself look like quality/source/codec
metadata for that pattern to fire.
Every tag-extraction path (file dash-suffix, file trailing-parens
group, folder dash-suffix, folder bracket-suffix, folder bracket-
prefix) now also refuses to promote something that's obviously a
metadata token itself (e.g. WEB, 1080p, HDR, WEBRip) to a release
tag.
Amazon/streaming rips like:
Helluva Boss (2020) - S01E01 - Murder Family (1080p AMZN WEB-DL x265 Celdra)
tuck the release group in as the last word of the closing metadata
block instead of a "-Group" suffix or its own brackets. That trailing
word is now promoted to a [Group] prefix and stripped from the
parentheses, e.g.:
[Celdra] Helluva Boss (2020) - S01E01 - Murder Family (1080p AMZN WEB-DL x265)
Only fires when the rest of the block already looks like quality
metadata (resolution/source/codec/etc.), so unrelated parentheticals
like "(2020)" or "(Dual Audio)" are left untouched.
Auto-selection still prefers Japanese/Chinese/undefined audio, but
if a file has none of those (e.g. only English), the first audio
track is pre-checked instead of leaving no audio track selected.
Drag in subtitle files alongside .mkv files and they're matched to
the right video by episode code (S04E06, zero-padding and separator
insensitive, plus 4x06 as a fallback) and muxed in as extra subtitle
tracks. Any subtitle format mkvmerge accepts is recognized: SRT,
(S)SA, VobSub, WebVTT, PGS/SUP, USF, SAMI, TTML/DFXP, STL, Kate.
Matching works regardless of drop order — subtitles dropped before
their video are held pending until a matching video shows up, and
vice versa. Language, forced, and SDH flags are guessed from common
filename tokens (e.g. "eng", "forced", "sdh") to set the muxed
track's language/name/flags; unmatched subtitles are reported in the
status bar.
Handle [TAG] NN episode-only filenames: when a file already
carries a bracket tag prefix followed directly by an episode
number (e.g. [WBDP] 03 - Deus Vult), inject the show name
from the parent folder between the tag and the episode part.
Also update ExtractShowName to handle bracket-style folder
names (text before the first [ is the show name).
Extract in-filename suffix release tag (e.g. -DemiHuman) and
move it to a [DemiHuman] bracket prefix, stripping it from the
filename. File-level tag takes priority over folder-derived tag.
- Suffix release tag support: folder name ending in -TAG
prepends [TAG] to output filenames
- Show name injection from parent folder for episode-only
filenames (e.g. S01E01-Name.mkv)
- Queue and logs display predicted output filename
- Run button label reflects rename when applicable
- Gray out main UI while strip/rename is in progress