Files
alchemist/RELEASING.md
bybrooklyn 9fb6b480eb chore: release v0.3.0
Since v0.2.9, Alchemist gains the first stable 0.3.0 release with:

Security:
- Fixed a critical bug where a config parse failure on a configured instance could re-enable unauthenticated setup endpoints.
- Session cookies are no longer marked Secure by default, restoring plain HTTP and LAN login flows unless ALCHEMIST_COOKIE_SECURE=true is set.
- Restricted /api/fs/* filesystem browsing to loopback clients during initial setup.
- Hardened proxy header handling with explicit trust configuration.

Library and encoding:
- Added per-library transcoding profiles with built-in presets.
- Added lossless MP4/MOV to MKV remuxing when a file is already in the target codec.
- Added subtitle sidecar extraction for text subtitle tracks.
- Added stream rules for commentary stripping, language filtering, and default-track retention.
- Added optional VMAF quality gating.
- Added duplicate detection in Library Intelligence.
- Added Library Doctor health scanning.
- Added mirrored output roots.

Job management:
- Added Skipped and Archived tabs.
- Added sort controls for jobs.
- Added per-job priority promotion.
- Added live retry countdowns.
- Added structured skip explanations.
- Added structured failure explanations.

Engine control:
- Added Background, Balanced, and Throughput runtime modes with manual overrides.
- Added drain mode.
- Added boot-time auto-analysis of queued jobs.

UI redesign:
- Replaced page h1 blocks with a compact engine control strip.
- Restructured the dashboard around compact stats, savings, and recent activity.
- Grouped log viewer entries by job.
- Rebuilt the setup wizard inside the main shell.
- Redesigned library selection around recommendations and chips.
- Replaced custom stats bars with Recharts area and bar charts.
- Merged hardware into Transcoding settings.
- Merged notifications and automation into one tab.
- Improved mobile navigation and jobs layout.
- Tightened typography and token usage across the design system.
- Added analyzing shimmer states and protected terminal job states from poll overwrites.

Reliability and stability:
- Added exponential retry backoff.
- Cleaned orphaned temp outputs and subtitle sidecar temp files on startup.
- Fixed infinite analysis loops and boot-analysis pagination.
- Kept the engine running when the queue drains so new watcher jobs are picked up.
- Serialized analysis passes and dropped overlapping watcher-triggered passes.
- Added job stall detection.
- Fixed graceful shutdown on Ctrl+C and SIGTERM.
- Added log retention pruning.
- Added auth session cleanup.
- Cached /api/system/resources for 500ms.
- Added a Drop guard for in_flight_jobs.
- Stopped re-probing completed job detail source files when encode_stats already exist.

Hardware and encoding:
- Fixed Apple VideoToolbox encodes with -allow_sw 1, yuv420p conversion, and hvc1 tagging.
- Switched Intel Arc selection to VAAPI-first with QSV as last resort.
- Improved audio planning so lossless codecs transcode while common Atmos/EAC3 tracks can copy.
- Added libopus runtime fallback to AAC when libopus is unavailable.
- Surfaced fuller FFmpeg failure logs and VideoToolbox-specific failure explanations.

Backend architecture:
- Upgraded to Rust 2024 and MSRV 1.85.
- Upgraded sqlx to 0.8 and rand to 0.9.
- Removed async-trait in favor of native async fn traits with trait-variant where needed.
- Split server.rs into focused submodules.
- Moved ffprobe execution to tokio::process::Command with a timeout.
- Split high-volume and low-volume broadcast channels.
- Hardened cancellation-lock recovery and stderr truncation.
- Added warnings for invalid notification and schedule JSON plus safer analysis pagination limits.

Database:
- Extended decisions with structured reason codes and payload JSON.
- Added job_failure_explanations with legacy fallback support.
- Added indexes for structured explanation filtering.
- Preserved automatic upgrades from 0.2.5 onward.

CI/CD and tooling:
- Added nightly workflows using the shared build pipeline.
- Added actionlint to release checks.
- Added the Playwright reliability suite to CI.
- Documented and validated the Windows contributor workflow.
- Expanded just release-check to cover fmt, clippy, tests, actionlint, web verify, docs build, E2E, and backend build.
- Standardized release binaries and checksums.
- Published multi-arch Docker images for linux/amd64 and linux/arm64.

Release metadata and docs cleanup:
- Bumped Cargo, VERSION, web, web-e2e, and docs manifests to 0.3.0.
- Updated stable changelog dates and nightly image references.
- Removed stale RC-era Windows wording from the README and docs.
- Clarified that the Windows core contributor path is supported while broader utility and release recipes remain Unix-first.
- Clarified that AMD AV1 remains outside the validated 0.3.0 support matrix.
- Aligned Docker Compose, Helm, and release-facing docs on ghcr.io/bybrooklyn/alchemist.
2026-04-06 11:25:48 -04:00

1.8 KiB

Releasing Alchemist

RC cut

Use the repo bump script for version changes:

just bump <next-rc-version>

Then complete the release-candidate preflight:

  1. Update CHANGELOG.md and docs/docs/changelog.md.
  2. Run just release-check.
  3. Verify the repo version surfaces all read <next-rc-version>.
  4. Complete the manual smoke checklist:
    • Docker fresh install over plain HTTP, including login and first dashboard load
    • One packaged binary install and first-run setup
    • Upgrade from an existing 0.2.x instance with data preserved
    • One successful encode, one skip, one intentional failure, and one notification test send
  5. Complete the Windows contributor follow-up on a real Windows machine:
    • just install-w
    • just dev
    • just check
    • Note that broader utility and release recipes remain Unix-first unless documented otherwise.
  6. Commit the release-prep changes and merge them to main.
  7. Create the annotated tag v<next-rc-version> on the exact merged commit.

Stable promotion

Promote to stable only after the RC burn-in is complete and the same automated preflight is still green.

  1. Run just bump 0.3.0.
  2. Update CHANGELOG.md and docs/docs/changelog.md for the stable cut.
  3. Run just release-check.
  4. Re-run the manual smoke checklist against the final release artifacts:
    • Docker fresh install
    • Packaged binary first-run
    • Upgrade from the most recent 0.2.x or 0.3.0-rc.x
    • Encode, skip, failure, and notification verification
  5. Re-run the Windows contributor verification checklist if Windows parity changed after the last RC.
  6. Confirm release notes, docs, and hardware-support wording match the tested release state.
  7. Merge the stable release commit to main.
  8. Create the annotated tag v0.3.0 on the exact merged commit.