The previous commit wrote a literal carriage-return byte into a comment, where
the text was meant to show the two characters backslash-r. Git's content sniffing
treats a lone CR as a sign of binary data, so .gitattributes itself was classed
-text (git ls-files --eol reported i/-text): the one file in the repository
that the new LF policy could not normalise.
The rules themselves were never affected - the byte sat inside a comment, and
deploy.bat and the sources were already checking out with the intended endings.
The comment now says "a trailing CR byte" in words. .gitattributes reports
i/lf w/lf, and `git add --renormalize .` stages nothing else.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LU1NRL7fAaZTtFMTTPn2b1
The branding checker failed all 29 of its sites on Windows while passing on the
Linux CI runner. Nothing had drifted. Git for Windows installs with
core.autocrlf=true, which checked tools/branding-sites.tsv out as CRLF, and the
checker reads that table with `read` - so every row's last field, the pattern,
gained a trailing \r and matched nothing. Only *.sh was pinned to LF, which is
why the scripts were fine and their data was not.
Set the policy in the repository rather than trusting each machine:
* text=auto eol=lf LF in the repo and every working tree, every OS
*.sh text eol=lf kept explicit: a CRLF shebang is a hard failure
*.bat/*.cmd eol=crlf the one exception; cmd.exe misparses LF batch files
An attribute beats core.autocrlf, so a fresh clone gets LF however its machine
is configured. Verified in a throwaway repo: under autocrlf=true a text file
checks out LF and a .bat checks out CRLF.
No blob changes. Every committed blob was already LF (git ls-files --eol shows
i/lf throughout) and `git add --renormalize .` stages nothing but this file.
The working tree was re-checked-out to match: 25 files CRLF -> LF, deploy.bat
LF -> CRLF. Checker 40 passed / 0 failed, build clean, 20 tests pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LU1NRL7fAaZTtFMTTPn2b1
Branding is duplicated across Cargo.toml, bundler.toml, deploy.ps1 and
src/lib.rs with nothing keeping them in sync, so a rename drifts silently:
the bundle builds under one name while deploy.ps1 looks for another.
check-branding.sh declares the canonical identity once and asserts every
copy matches, including that VST3_CLASS_ID is exactly 16 bytes. A STALE
list catches leftovers of the old name after a rename. Portable POSIX sh
so it works on Windows (Git Bash) and Linux alike; .gitattributes pins
*.sh to LF so core.autocrlf=true cannot break the shebang.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LU1NRL7fAaZTtFMTTPn2b1