Skip to content

v0.18.0

Latest

Choose a tag to compare

@MotWakorb MotWakorb released this 27 Jul 02:11
ae25ad7

Release v0.18.0

Promotes dev @ 9b5b79a8 (v0.17.6-0174, merge of PR #747) to main as v0.18.0.

Headline: the v0.18.0 DBAS absorption epic (enhancedchannelmanager-0i2vt) — Dispatcharr Backup & Snapshot: full backup/restore round-trip across all 12 in-scope categories (plugins excluded per ADR-012 D10), saved-backup management, cloud backup targets (WebDAV enabled end-to-end, SSRF-hardened, encrypted credentials), scheduled backups, and DBAS restore reporting. Plus Event Sync review queue/exclusions/promotion, Channel Pipeline UX and integrity work, a large accessibility sweep (keyboard-operable selection, tri-state select-alls, labeled controls), journal noise purge, EPG/logo fixes, and dependency/security bumps.

CHANGELOG

The promoted [0.18.0] — 2026-07-26 block spans 199 bullets (Added 90, Fixed 69, Changed 30, Security 7, Deprecated 2, Removed 1) — at ~257 KB it exceeds GitHub's PR-body limit (65,536 chars), so it is not pasted here verbatim (same approach as PR #503). Read it in full on the release branch: CHANGELOG.md → [0.18.0]. Rollover only — no bullets were rewritten or curated. A fresh empty [Unreleased] section sits above it.

Version touchpoints (all three, lockstep — scripts/check_version_consistency.py green)

Touchpoint Before After
frontend/package.json "version" 0.17.6-0174 0.18.0
backend/main.py FastAPI(version=...) 0.17.6-0174 0.18.0
backend/routers/backup.py APP_VERSION 0.17.6-0174 0.18.0

Note: 0.18.0 was previously used for the June cut that was renumbered to 0.17.5 (PR #501 → PR #503); that tag/release were deleted and 0.18.0 reserved for the DBAS epic — this cut. No v0.18.0 tag, GitHub release, or branch collision exists.

Pre-Cut Gate Checklist

  • G1a: Zero open P0/P1 bugs at cut SHA (verified via bd list --status open --priority 0/1 — both empty)
  • G1b: Zero open HIGH/CRITICAL security findings not formally waived (code-scanning API query returned 0)
  • G2: Backend Tests green (CI will verify)
  • G3: Frontend Tests green (CI will verify)
  • G4: CodeQL delta-zero vs. main (CI will verify via Code Scanning merge protection rule)
  • G5: CHANGELOG [Unreleased] promoted to [0.18.0] — 2026-07-26 (today, UTC), fresh empty [Unreleased] above
  • G6: Version in frontend/package.json matches 0.18.0 (release branch name)
  • G7: No other release-cut or hotfix PR targeting main is open (gh pr list --base main — empty)

MCP Release Verification (docs/runbooks/mcp-release-verification.md)

This release touches mcp-server/ and MCPSettingsSection.tsx, so the checklist was walked:

  • Step 1: Static API key path — ?api_key= initialize returned 200 with a session, tools/list returned 200 listing 197 tools; Authorization: Bearer variant also authenticated (200 on initialize); wrong key returned 401 ([MCP] Connection rejected: invalid API key in logs)
  • Step 2: Tool call via Claude — list_channel_groups over the live Claude Code MCP connection returned real data (2,950 channel groups); container logs show CallToolRequest dispatch with auth_method=static_key and backend GET /api/channel-groups 200
  • Step 3: Settings panel smoke check — Settings → MCP Integration shows "MCP server online — 197 tools available", "API key is configured", both the mcp-remote bridge and Claude Code .mcp.json connection blocks, and enabled Regenerate/Revoke Key buttons. (Buttons verified present/enabled; not clicked — rotating or revoking the live key would sever active MCP consumers, including the verification session itself.)

Verified by: Project Engineer (Claude), 2026-07-26, on ECM v0.17.6-0169 dev deployment (ecm-ecm-1 + ecm-ecm-mcp-1, localhost:6100/6101).

Process notes

  • Merge with a merge commit (--merge), not squash/rebase, per ADR-004 (preserves per-commit bisection into main).
  • Post-merge steps (tag v0.18.0, GitHub release, back-sync dev + reopen counter via PR, branch cleanup) follow after PO-authorized merge per docs/shipping.md §Cut Mechanics steps 7–9.
  • Release-cut bead: creation was hook-blocked for the executing agent (board transitions are orchestrator territory); commit carries [no-bead] and cites epic enhancedchannelmanager-0i2vt for content traceability.

🤖 Generated with Claude Code