# yttranscript — Changelog

## v1.0.1 — 2026-06-22

- Add `--full` extended-help flag per SUITE_STANDARDS.md §3.

## v1.0.0 — 2026-06-14

Initial release.

- Single Rust binary; no async runtime; blocking reqwest only.
- Accepts standard watch URLs, `youtu.be/` short links, `/shorts/`,
  `/embed/` URLs, and bare 11-character video IDs.
- Scrapes `ytInitialPlayerResponse` from the watch page HTML, walks down
  to `captionTracks`, then fetches the timedtext payload in JSON3
  format (one query string appendage; no XML parsing).
- Language selection priority: manual match → auto-generated match →
  first manual track (with `[WARN]`) → first auto-generated track
  (with `[WARN]`).
- Output: UTF-8 `.txt` file with `YouTube Transcript` / `Video ID` /
  `Language` header, a U+2500 separator line (60 chars wide), then one
  segment per line.
- `--timestamped` flag prefixes each line with `[HH:MM:SS]`.
- `--list-langs` prints a CODE/TYPE/LANGUAGE table and exits.
- `--output` overrides the default `<video_id>.txt` path.
- Mandatory tagline footer on every `--help` and successful run:
  `[ yttranscript ] ─ an independent project by johlem.net`.
- 17 unit tests green; zero compiler warnings.

Out of scope for v1.0 (planned for v1.1+): cookie/session injection for
bot-detection bypass, proxy support, multiple URLs per invocation,
SRT / VTT output formats, translation via the YouTube translate
endpoint.
