Skip to content

QVAC-17940 chore[skiplog]: backmerge release-sdk-0.11.0 — version bump, changelog, NOTICE, tooling#2091

Merged
NamelsKing merged 2 commits into
tetherto:mainfrom
NamelsKing:backmerge/release-sdk-0.11.0
May 17, 2026
Merged

QVAC-17940 chore[skiplog]: backmerge release-sdk-0.11.0 — version bump, changelog, NOTICE, tooling#2091
NamelsKing merged 2 commits into
tetherto:mainfrom
NamelsKing:backmerge/release-sdk-0.11.0

Conversation

@NamelsKing

Copy link
Copy Markdown
Contributor

Companion release PR

This PR lands the same release metadata on main per gitflow.md "Keep main aligned". Content is identical to PR #2090 (same single cherry-picked commit). Tagged [skiplog] so it does not appear in future changelogs.


🎯 What problem does this PR solve?

@qvac/sdk is ready to cut v0.11.0. 29 PRs have landed on main between the sdk-v0.10.0 tag and the current release-sdk-0.11.0 tip (e282e704), and the package version bump + changelog set need to land on the release branch so the publish workflow can ship to npm.

The release completes the request-lifecycle and cancellation overhaul that began in 0.10.0: every long-running SDK call now flows through a unified RequestRegistry, exposes its requestId synchronously on the returned promise, and can be cancelled individually with cancel({ requestId }). The cancel(...) wire envelope is consolidated to two shapes, two legacy call signatures are removed (cancel({operation:"downloadAsset", downloadKey}) and cancel({operation:"rag", workspace})), and the SDK gains typed instanceof for policy/cancel errors across the RPC boundary.

Alongside the lifecycle work the release adds: Harmony / Qwen3.5 / Gemma4 tool-call dialects, FLUX.2 multi-reference fusion + per-call LoRA on diffusion, ESRGAN upscaling (post-step + standalone upscale() API), Whisper VAD + end-of-turn events, multi-GPU split-mode / tensor-split / main-gpu on LLM and embed, a reasoning_budget knob for thinking models, and a Parakeet 0.4.0 GGUF backend with duplex streaming.

Full per-PR breakdown in changelog/0.11.0/CHANGELOG.md; human-readable narrative in CHANGELOG_LLM.md; breaking-change migration guides in breaking.md; API code samples in api.md.

📝 How does it solve it?

Release metadata:

Tooling improvements bundled with the release (surfaced during changelog generation, kept together for a single release-line touch — see "🧪 How was it tested?" for the specific failure modes that motivated each):

  • scripts/sdk/generate-changelog-sdk-pod.cjs:
    • Crash guardprocessSDKPRs no longer throws Cannot read properties of undefined (reading 'tags') when a PR title matches a validator exception (Merge / Revert / Squash / version-bump / release(...)). Previously fatal; now warned and skipped. Triggered in this release by PR Revert qvac 17869 parakeet ggml #2059 (Revert qvac 17869 parakeet ggml).
    • Per-package PR exclusion table (EXCLUDED_PRS) for already-merged cross-cutting chores that incidentally touch a package path. Seeded with sdk.1860 (monorepo-wide path simplification across 26+ packages — only incidentally touched packages/sdk via a test executor and a historical changelog doc).
    • Short announcement-post.txt formatgenerateAnnouncementPost rewritten to emit a Slack-ready post containing header + 3 links + optional breaking-changes block + thanks footer, matching the team's new convention (mirrors the 0.10.0 Slack post). Dropped ~180 lines of dead helpers (parseChangelogMarkdown, formatAnnouncementBullet, CHANGELOG_HEADING_TO_KEY, SLACK_SECTION_HEADINGS, MAX_ANNOUNCEMENT_BULLETS). Breaking-changes detection now keys on breaking.md file presence (structurally direct — if there's a migration guide, link to it) instead of re-parsing CHANGELOG.md.
  • .cursor/skills/sdk-changelog/SKILL.md — Step 5 updated to document the new short format and the file-presence detection contract.

🧪 How was it tested?

  • node scripts/sdk/generate-changelog-sdk-pod.cjs --package=sdk — exited cleanly after the bypass-validation crash guard + QVAC-16441 feat: simplify package folders, files and paths in the monorepo #1860 exclusion landed; fetched all 47 candidate PRs, filtered to 29 valid, generated CHANGELOG.md / breaking.md / api.md / models.md and rebuilt the root aggregate.
  • node scripts/sdk/generate-changelog-sdk-pod.cjs --package=sdk --update-root-changelog — picked up the hand-authored CHANGELOG_LLM.md and re-rendered the root aggregate (root prefers LLM file when present).
  • node scripts/sdk/generate-changelog-sdk-pod.cjs --package=sdk --generate-announcement-post — emits the new short format. Cross-validated against the v0.10.0 Slack post screenshot: header / 3 links / breaking-changes block (gated on breaking.md presence) / footer. Smoke-tested the no-breaking branch by re-generating against v0.9.1 (which has no breaking.md) — confirmed the breaking-changes block is correctly skipped.
  • node .cursor/skills/notice-generate/scripts/generate-notice.js sdk — license-checker against packages/sdk/node_modules (178 production JS deps) + model attributions from models.prod.json (209 models). Sorted deterministically; re-runs produce byte-identical output.
  • Two PRs hit format-validator warnings and were surfaced but not blocked (per skill: "warned, not silently dropped"): chore[mod]: update registry model constants #1948 ([mod] tag requires a Models section in the body — missing) and chore[notask] sdk: upgrade ocr-onnx and translation-nmtcpp #1999 (extra space before colon in title). Both excluded from the changelog with explicit warnings; will be flagged to PR authors for fix-and-backport if desired.
  • No source-code changes in packages/sdk/ itself — release content + tooling improvements only.

💥 Breaking Changes

Three [bc] PRs are folded into this release (full BEFORE/AFTER in changelog/0.11.0/breaking.md):

  1. unloadModel no longer auto-closes the Bare worker (QVAC-18827 feat[bc|api]: add unloadModel autoClose option, default-off on Bare #2024). Default autoClose flips by runtime: true on Node/Electron (unchanged behaviour), false on Bare. Pass autoClose: true | false to override explicitly.
  2. Parakeet plugin moves to the 0.4.0 single-file GGUF API (QVAC-17869 feat[bc]: migrate SDK parakeet plugin to 0.4.0 GGML + duplex streaming #2018). Multi-file parakeet*Src config fields removed; the addon auto-detects TDT / CTC / EOU / Sortformer from GGUF metadata. Legacy multi-file constants (PARAKEET_TDT_ENCODER_INT8, PARAKEET_TDT_DECODER_INT8, etc.) replaced by single GGUF constants (PARAKEET_TDT_0_6B_V3_Q8_0, PARAKEET_CTC_0_6B_Q8_0, PARAKEET_SORTFORMER_4SPK_V1_Q8_0, PARAKEET_EOU_120M_V1_Q8_0).
  3. Two legacy cancel(...) call shapes removed (QVAC-18183 feat[bc]: CLI cancel bridge + cancelHandler retirement #2074). cancel({operation:"downloadAsset", downloadKey, clearCache}) and cancel({operation:"rag", workspace}) removed because neither carried a requestId. Migrate to cancel({requestId: op.requestId}) via the decorated promise (primary path) or cancel({modelId, kind: "rag"}) broad-cancel (escape hatch). Every other cancel(...) shape is preserved by client-side normalization.

🔌 API Changes

13 [api] PRs land on the public SDK surface — full per-PR code samples in changelog/0.11.0/api.md. Highlights:

Release metadata for @qvac/sdk v0.11.0:
- packages/sdk/package.json: 0.10.2 → 0.11.0
- packages/sdk/changelog/0.11.0/: CHANGELOG.md, CHANGELOG_LLM.md, breaking.md, api.md, models.md
- packages/sdk/CHANGELOG.md: rebuilt aggregate (15 versions, 0.11.0 first, prefers per-version CHANGELOG_LLM.md)
- packages/sdk/NOTICE: regenerated against 178 production JS deps + 209 models

Tooling improvements bundled with the release (`infra`-scope work surfaced
during changelog generation, kept together for a single release-line touch):
- scripts/sdk/generate-changelog-sdk-pod.cjs:
  - Guard against PR titles that bypass format validation (Revert / Merge /
    version bumps) — previously crashed processSDKPRs with
    "Cannot read properties of undefined (reading 'tags')". Now warned and
    skipped (e.g. PR #2059 "Revert qvac 17869 parakeet ggml").
  - Add per-package EXCLUDED_PRS table for already-merged cross-cutting
    chores that incidentally touch a package path. Seeded with #1860
    (monorepo-wide path simplification across 26+ packages).
  - Rewrite generateAnnouncementPost to emit short Slack-ready format
    (header + 3 links + optional breaking block + footer); drop ~180 lines
    of now-dead parsing/bullet-rendering helpers.
- .cursor/skills/sdk-changelog/SKILL.md: document the new short
  announcement-post format and breaking-changes file-presence detection.

(cherry picked from commit 74edae7)
@NamelsKing NamelsKing requested review from a team as code owners May 16, 2026 09:56
@NamelsKing NamelsKing added the verified Authorize secrets / label-gate in PR workflows label May 17, 2026
@NamelsKing

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

github-actions Bot commented May 17, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (1/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

@NamelsKing

Copy link
Copy Markdown
Contributor Author

/review

@NamelsKing NamelsKing merged commit 9435feb into tetherto:main May 17, 2026
18 checks passed
Proletter pushed a commit that referenced this pull request May 24, 2026
Release metadata for @qvac/sdk v0.11.0:
- packages/sdk/package.json: 0.10.2 → 0.11.0
- packages/sdk/changelog/0.11.0/: CHANGELOG.md, CHANGELOG_LLM.md, breaking.md, api.md, models.md
- packages/sdk/CHANGELOG.md: rebuilt aggregate (15 versions, 0.11.0 first, prefers per-version CHANGELOG_LLM.md)
- packages/sdk/NOTICE: regenerated against 178 production JS deps + 209 models

Tooling improvements bundled with the release (`infra`-scope work surfaced
during changelog generation, kept together for a single release-line touch):
- scripts/sdk/generate-changelog-sdk-pod.cjs:
  - Guard against PR titles that bypass format validation (Revert / Merge /
    version bumps) — previously crashed processSDKPRs with
    "Cannot read properties of undefined (reading 'tags')". Now warned and
    skipped (e.g. PR #2059 "Revert qvac 17869 parakeet ggml").
  - Add per-package EXCLUDED_PRS table for already-merged cross-cutting
    chores that incidentally touch a package path. Seeded with #1860
    (monorepo-wide path simplification across 26+ packages).
  - Rewrite generateAnnouncementPost to emit short Slack-ready format
    (header + 3 links + optional breaking block + footer); drop ~180 lines
    of now-dead parsing/bullet-rendering helpers.
- .cursor/skills/sdk-changelog/SKILL.md: document the new short
  announcement-post format and breaking-changes file-presence detection.

(cherry picked from commit 74edae7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

verified Authorize secrets / label-gate in PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants