Commit Graph
4 Commits
Author SHA1 Message Date
tiennm99 e33d082ee2 chore: check out LF line endings everywhere
The repository normalises to LF in the index either way; the working tree was
being converted to CRLF on checkout, which is wrong for a repo worked on from
Linux. It also silently breaks the newsletter parity suite, which compares
committed golden files byte for byte against engine stdout — the reason
scripts/newsletter needed an explicit LF override until now. That override and
the *.sh one are both redundant against an LF default.
2026-09-18 16:33:41 +07:00
tiennm99 682d5239b8 test(newsletter): add a golden-output parity suite
Captures the Go engine's stdout for 26 deterministic cases, commits those
outputs as fixtures, and asserts the JavaScript engine reproduces them through
the real CLI surface, exit codes included. This is both the migration's proof of
correctness and the regression net the engine never had.

Every fixture was generated from the Go engine rather than written by hand, and
reviewed before commit so no existing bug became a permanent contract. Each
behaviour that a JavaScript-idiomatic rewrite would silently break has a case
that goes red when the naive implementation is reintroduced; verified by
mutating the engine and re-running.

Content-scanning commands are pointed at a fixture tree through the subprocess
working directory. Both engines already resolve content/post from the process
CWD, so neither needed a test-only configuration knob, and the suite is proven
isolated from the real content by renaming it away and re-running.

Cases that depend on live upstreams are opt-in behind NEWSLETTER_NET=1: a
publication's feed window moves, and a suite that goes red on someone else's
outage teaches people to ignore red. The deterministic tier reaches the network
only through .invalid hosts, which never resolve, so it runs offline in about
two seconds.

The golden files are compared byte for byte, so scripts/newsletter is pinned to
LF; the repository otherwise checks out CRLF, which would break every comparison
on a fresh clone.
2026-09-18 16:24:16 +07:00
tiennm99 bd132d0195 fix: use text=auto to prevent binary file corruption in CI 2026-03-12 08:46:18 +07:00
tiennm99 d8bcde325d chore: consolidate settings, enhance skill scripts, and reformat content
- Migrate settings from settings.local.json to settings.json with expanded permissions
- Add helper scripts (find_newsletter_number.sh, prepare_url.sh) to mt-add-post skill
- Update skill documentation and configuration
- Apply consistent formatting across config, content, and layout files
- Update workflow, gitignore, and netlify configuration
2026-03-11 18:29:56 +07:00