Skip to content

release: streamnet-cli v1.0.0 — full stream pipeline, subtitles, download#10

Merged
aedneth merged 7 commits into
mainfrom
feat/streamnet-v1-pipeline
Jun 4, 2026
Merged

release: streamnet-cli v1.0.0 — full stream pipeline, subtitles, download#10
aedneth merged 7 commits into
mainfrom
feat/streamnet-v1-pipeline

Conversation

@aedneth
Copy link
Copy Markdown
Owner

@aedneth aedneth commented Jun 4, 2026

v1.0.0 — first stable release

Takes streamnet-cli from scaffolded v0.1.0 to a working, published v1.0.0: the terminal replacement for the broken Stremio → VLC → VLSub pipeline.

What's in this release

  • Subtitle pipeline — OpenSubtitles/VLSub moviehash (size + first/last 64 KiB), REST v1 client (hash + text search, ranked download), and a standalone subs <file> command writing <name>.<lang>.srt beside the video.
  • download <source> — full torrent download to the configured directory with progress + automatic subtitle fetch for non-MKV files.
  • stream/play — non-MKV streams best-effort fetch subtitles by title and pass --sub-file to VLC (never fails the stream on a subtitle error).
  • doctor — download-dir write check + advisory OpenSubtitles key check (warn-only, doesn't flip exit code).

Fixes

  • Flag arity — optional/default-wrapped flags (z.string().optional()) were misclassified as boolean, so --container/--quality/--indexer/--query/--out silently swallowed no value ("too many arguments"). Registry now unwraps Optional/Default/Nullable for both arity and numeric coercion. Regression guard added.
  • Agent-mode tests — two subprocess tests given an explicit 15s timeout (Node startup under parallel load was tripping the 5s default and failing the release gate).

Release mechanics

  • package.json bumped 0.1.01.0.0; CHANGELOG [Unreleased][1.0.0]; README roadmap reframed (1.0.0 shipped; MCP/resolvers/binaries → post-1.0).
  • Merging + tagging v1.0.0 triggers .github/workflows/release.yml (typecheck + test + build → GitHub Release → npm publish --provenance).

Gates (local)

  • npm run build ✅ · npx tsc --noEmit ✅ (0 errors) · npm test ✅ (49/49) · npm audit --audit-level=critical ✅ (0 critical) · npm publish --dry-run

🤖 Generated with Claude Code

aedneth and others added 7 commits June 3, 2026 00:43
Portable three-layer knowledge graph integration: SessionStart/PostToolUse/
UserPromptSubmit/Stop/PreToolUse hooks, graphify graph (auto-updates on commit),
decisions + bugs ADRs committed, runtime artifacts gitignored. No-ops gracefully
without local CKIS vault — external contributors unaffected.

Registered in Dev Brain (~/Documents/Dev Brain/); graph-report auto-synced to CKIS
02-projects/<slug>/graph-report.md on each commit.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- Add .npmrc: ignore-scripts=true, registry pin, save-exact=true
- Patch GHSA-5xrq-8626-4rwp: vitest → ^4.1.8 (critical — arbitrary file read/exec)
- Pin all GitHub Actions to commit SHAs (not mutable tags)
- Add --ignore-scripts to all npm ci / pnpm install steps in CI
- Add explicit native module whitelist with npm_config_ignore_scripts=false rebuild
- Add npm audit --audit-level=high gate to all CI and release workflows
- Add permissions: {} (deny-all default) with per-job minimum grants
- Add persist-credentials: false to all checkout steps
- Add weekly security-audit.yml workflow (runs every Monday 09:00 UTC)
- Add SECURITY.md with supply chain security policy and vulnerability disclosure

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…-credentials: false

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Implements the OpenSubtitles/VLSub subtitle pipeline and full-download mode
toward v1.0.0, and fixes a pre-existing flag-parsing bug surfaced during the audit.

Added
- core/subtitles/hash.ts: OpenSubtitles "moviehash" (size + first/last 64 KiB
  checksum), reading only the two windows (cheap on multi-GB files).
- core/subtitles/opensubtitles.ts: REST v1 client — hash + text search with
  ranked results (hash match > language preference > download count) and
  download-link resolution. Api-Key from config, never hardcoded.
- core/subtitles/fetch.ts: orchestrates hash -> search -> download -> write
  `<name>.<lang>.srt` beside the video, with a title-query fallback.
- commands/subs.ts: `streamnet subs <file>` (--lang, --query).
- commands/download.ts + engine.downloadTorrent(): full download to the
  configured dir with progress, auto subtitle fetch for non-MKV files.
- stream/play: non-MKV streams best-effort fetch subtitles by title and pass
  --sub-file to VLC; never fail the stream on a subtitle error.
- doctor: download-dir write check + warn-only OpenSubtitles key check
  (warnings don't flip allOk/exit code).

Fixed
- Flag arity (P0): optional/default-wrapped Zod flags were classified as
  boolean, so `--container`, `--quality`, `--indexer`, `--sub-lang`, `--query`,
  `--out` swallowed no value ("too many arguments") and numeric coercion was
  skipped on optional numbers. build.ts now unwraps Optional/Default/Nullable
  to the underlying type. Regression test in test/flag-arity.test.ts.

Tests: 49 passing (was 38). tsc/lint/build green. Subtitle and download paths
fully mocked — no live network or torrents in tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump package.json 0.1.0 -> 1.0.0 and align docs for the first stable
release: promote CHANGELOG [Unreleased] -> [1.0.0], reframe README roadmap
(1.0.0 shipped; MCP/resolvers/binaries moved to post-1.0). Harden the two
agent-mode subprocess tests with an explicit 15s timeout so Node startup
under parallel load no longer trips the 5s default (was failing the release
gate).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The "Rebuild native WebTorrent dependencies" step uses `2>/dev/null`, which
on windows-latest runs under pwsh and is parsed as Out-File to `D:\dev\null`,
failing the step (the `|| true` can't rescue a parse-time error). Pin the step
to `shell: bash` (Git Bash is preinstalled on Windows runners) in both ci.yml
and release.yml so it behaves identically across all three OSes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@aedneth aedneth merged commit 2a3f89a into main Jun 4, 2026
7 checks passed
@aedneth aedneth deleted the feat/streamnet-v1-pipeline branch June 4, 2026 09:30
aedneth added a commit that referenced this pull request Jun 4, 2026
release: streamnet-cli v1.0.0 — full stream pipeline, subtitles, download
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant