tiennm99 d07f48d69e 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
2026-01-18 12:24:36 +07:00
2024-12-21 14:32:57 +07:00
2023-09-17 10:26:32 +07:00
2026-01-18 12:28:13 +07:00

blog

Source of miti99.com — personal blog (VN/EN) built with Hugo and the Stack theme.

Quick start

git submodule update --init --recursive
hugo server -D

Site available at http://localhost:1313.

Content structure

Posts live under content/post/YYYY/MM/DD/index.md. Each post is a Hugo leaf bundle — images and assets sit next to index.md in the same directory.

content/
  post/
    2024/
      03/
        15/
          index.md     ← post content (Vietnamese / English)
          cover.jpg    ← optional cover image
  page/                ← standalone pages (about, projects, …)

Theme customization

Theme config lives in config/ (Hugo config directory split). Key overrides:

  • config/_default/params.toml — sidebar, avatar, footer, color scheme
  • config/_default/menu.toml — navigation links
  • assets/ — custom CSS/JS overrides loaded on top of the Stack theme
  • layouts/ — template overrides (add a file here to override any Stack partial)

The Stack theme is pulled in as a git submodule under themes/hugo-theme-stack/.

Working with AI tools

This repo runs from Claude Code, OpenCode, or Codex off one shared engine (scripts/newsletter/, Go via go run) and one instruction file (AGENTS.md). Repository-scoped Codex skills use the official .agents/skills/ format; no installer is required. Setup, invocation per tool, and how to pick one and remove the rest: see docs/multi-tool-usage.md.

License

Apache-2.0 — see LICENSE.

S
Description
Source of miti99.com — personal blog (VN/EN) built with Hugo + Stack theme.
Readme Apache-2.0
145 MiB
Languages
JavaScript 98.1%
HTML 1.9%