186 Commits

Author SHA1 Message Date
46129d89ae fix: satisfy newer GitHub clippy lints nightly nightly-20260416-211311-46129d8 2026-04-16 17:13:02 -04:00
df771d3f7c fix: satisfy CI clippy lints 2026-04-16 17:10:14 -04:00
b0646e2629 chore: release v0.3.1-rc.5 v0.3.1-rc.5 2026-04-16 11:37:48 -04:00
c454de6116 chore: release v0.3.1-rc.4 nightly-20260416-110155-c454de6 v0.3.1-rc.4 2026-04-16 07:01:46 -04:00
c26c2d4420 style: format executor, pipeline, and notifications
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
nightly-20260413-202106-c26c2d4
2026-04-13 16:20:58 -04:00
f511f1c084 fix: remove old db.rs and format db/ submodules
The db.rs → db/ split left the old file tracked, causing
"module found at both db.rs and db/mod.rs" on CI. Also
fixes import ordering flagged by cargo fmt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 16:16:48 -04:00
e50ca64e80 Resolve audit findings + split db.rs into db/ module
- P1: Fix cancel race in pipeline, fix VideoToolbox quality mapping
- P2: SSRF protection, batch cancel N+1, archived filter fixes,
  metadata persistence, reverse proxy hardening, reprobe logging
- TD: Remove AlchemistEvent legacy bridge, fix silent .ok() on DB
  writes, optimize sort-by-size query, split db.rs (3400 LOC) into
  8 focused submodules under src/db/
- UX: Add queue position display for queued jobs
- Docs: Update API docs, engine modes, library doctor, config ref
- Plans: Add plans.md for remaining open items (UX-2/3, FG-4, RG-2)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 16:02:11 -04:00
5ca33835f1 chore: release v0.3.1-rc.3 nightly-20260412-142522-5ca3383 2026-04-12 10:25:12 -04:00
3e9b0f0290 fix bug with set up causing unreachable set up page, fix bug not allowing shutdown to occur. 2026-04-09 14:58:52 -04:00
f47e90c658 fix bug with set up causing unreachable set up page 2026-04-08 11:39:36 -04:00
4000640f85 chore: release v0.3.1-rc.1 v0.3.1-rc.1 nightly-20260408-021422-4000640 2026-04-07 22:13:43 -04:00
09cf230820 Document backlog priorities and add security audit report nightly-20260407-021729-09cf230 2026-04-06 22:17:19 -04:00
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.
v0.3.0 nightly-20260406-152607-9fb6b48
2026-04-06 11:25:48 -04:00
ed71d771ea Stability changes have been updated. nightly-20260405-171136-ed71d77 2026-04-05 13:11:18 -04:00
b0a190f592 chore: release v0.3.0-rc.3 v0.3.0-rc.3 nightly-20260404-182951-b0a190f 2026-04-04 14:29:32 -04:00
774d185bd0 Add structured decision and failure explanations nightly-20260404-173607-774d185 2026-04-04 13:35:57 -04:00
220296c3f7 Prepare 0.3.0-rc.2 with Windows support and regression tests nightly-20260404-163545-220296c 2026-04-04 12:35:36 -04:00
a00d68b725 Prepare 0.3.0-rc.1 release and harden release checks nightly-20260404-154043-a00d68b 2026-04-04 11:40:31 -04:00
cd9db604ec refactor: apply consistent code formatting across notification, server, database, and pipeline modules nightly-20260404-120851-cd9db60 2026-04-04 08:08:42 -04:00
ca18be7272 feat: add job stall detection, database connection limits, configurable local notifications, and secure proxy header handling with entrypoint support. 2026-04-04 00:30:41 -04:00
0ec29e4e15 Fix savings overview Playwright test hydration nightly-20260404-034739-0ec29e4 2026-04-03 23:47:32 -04:00
e06192d1ea Refresh changelog and align Playwright tests nightly-20260404-034249-e06192d 2026-04-03 23:42:39 -04:00
e683703387 Format server tests for rustfmt compliance nightly-20260403-034845-e683703 2026-04-02 23:48:37 -04:00
e57c2b8a1f Fix shutdown exit and restore watch folder API sync 2026-04-02 23:27:47 -04:00
003dac15df Fix audio planning and stop infinite analysis loops nightly-20260402-151540-003dac1 2026-04-02 11:15:31 -04:00
57b980e7d0 fix major security bugs. nightly-20260402-024602-57b980e 2026-04-01 22:45:51 -04:00
d9160f414c Fix VideoToolbox fallback and encode error reporting nightly-20260402-010056-d9160f4 2026-04-01 21:00:48 -04:00
b35a130c3a fix compiler error nightly-20260401-031814-b35a130 2026-03-31 23:17:56 -04:00
120392e11b updated UI to remove odd flashing 2026-03-31 23:01:09 -04:00
1d6edaa1de Fix docs.yml for docs/ subdirectory move
- Install dependencies: add `cd docs &&`
- Build docs site: add `cd docs &&`
- Artifact paths: build → docs/build (both upload steps)
- Cache path: node_modules → docs/node_modules
- Trigger paths: remove stale root-level paths (docusaurus.config.ts,
  sidebars.ts, package.json, bun.lock, tsconfig.json, src/css/**,
  static/**) — all now covered by docs/**

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nightly-20260331-211835-1d6edaa
2026-03-31 17:18:25 -04:00
c5d8835022 Fix docs.yml YAML syntax error on line 102
Remove stray duplicate fragment left by the previous edit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nightly-20260331-211243-c5d8835
2026-03-31 17:12:19 -04:00
a262d6092e Move Docusaurus docs site into docs/ subdirectory
Relocates the entire Docusaurus site from the repo root into a
dedicated docs/ directory to keep docs tooling separate from the
Rust/frontend workspace. Updates CI workflows (build.yml, docs.yml),
justfile (adds `just docs` task), and GEMINI.md to reflect the new
paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nightly-20260331-210831-a262d60
2026-03-31 17:08:03 -04:00
1ece505bad Fix browse panel height and replace custom bar charts with recharts
LibraryStep: replace viewport-relative h-[min(28rem,calc(100dvh-20rem))]
with a fixed h-[420px] so the file browser panel renders correctly inside
nested overflow-y-auto scroll containers in the setup wizard.

SavingsOverview: replace percentage-height CSS bar divs with proper
recharts AreaChart (savings over time) and BarChart (savings by codec),
using CSS variable tokens for all colors. Removes the now-unused
formatCompactStorage helper.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nightly-20260331-205716-1ece505
2026-03-31 16:57:04 -04:00
f689453261 Fix React errors, add retry countdowns, stats depth, mobile layout, ARM64 nightly CI
- Fix React #418/#423: remove activeIndex effect from SettingsPanel, defer
  applyRootTheme via requestAnimationFrame in AppearanceSettings
- Add retry countdown on failed job rows with 30s refresh tick
- Add attempt_count to Job interface; add job_count to CodecSavings (Rust + frontend)
- Stats page: Total Library Reduction headline, job counts per codec, recharts BarChart
  for jobs-per-day histogram
- Mobile layout: hamburger overlay sidebar with backdrop, hide Updated/priority
  columns on small screens in jobs table
- CI: check-web now runs e2e tests; docker workflow adds nightly schedule
  building linux/amd64,linux/arm64 and tagging :nightly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nightly-20260331-144410-f689453
2026-03-31 10:43:56 -04:00
3518dccac3 Remove ReDoc docs and tighten scan analysis handling nightly-20260331-050642-3518dcc 2026-03-31 01:06:32 -04:00
87d5f879bf Format hardware device path vendor resolution nightly-20260331-022621-87d5f87 2026-03-30 22:26:14 -04:00
4fbfbacdf0 Keep the engine running and improve job status details 2026-03-30 22:23:27 -04:00
dcdb48deeb Fix setup recovery tests and format hardware detection nightly-20260331-011750-dcdb48d 2026-03-30 21:17:42 -04:00
ffb5562f95 Implemented the setup wizard welcome step as requested. Added `web/src/c 2026-03-30 21:00:11 -04:00
cfe85f0820 Remove Gemini workflows and command definitions nightly-20260330-183043-cfe85f0 2026-03-30 14:30:34 -04:00
13f744bd30 Apply 5 missed fixes
- LibraryStep.tsx: Add optional chaining for browse.entries
- Dashboard.tsx: Replace status-success with helios-solar color
- ResourceMonitor.tsx: Replace status-success with helios-solar color
- processor.rs: Add auto-pause on empty queue with SSE notification
- wizard.rs: Wait for scan completion before analyzing pending jobs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 13:32:16 -04:00
69902b8517 Fix audit findings and CI test failures
Backend fixes:
- auth.rs: Replace .unwrap() with pattern matching and .expect()
- middleware.rs: Replace .unwrap() with .expect() for static headers
- pipeline.rs: Add error logging for analysis/planning failures
- pipeline.rs: Log profile fetch errors instead of swallowing silently
- wizard.rs: Set setup_required=false after setup completes (fixes CI)
- tests.rs: Use tx_capacity for jobs channel to test lag behavior (fixes CI)

Frontend fixes:
- JobManager.tsx: Add exponential backoff for SSE reconnect (1s-30s + jitter)
- SettingsPanel.tsx: Fix React hydration by moving URL parsing to useEffect
- api.ts: Increase timeout from 15s to 30s for hardware detection

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
nightly-20260330-150840-69902b8
2026-03-30 11:08:23 -04:00
d17c8dbe23 Fix engine controls and job detail rendering nightly-20260330-124907-d17c8db 2026-03-30 08:48:58 -04:00
f47a61a9ea Make just dev build Astro before starting the backend nightly-20260330-014205-f47a61a 2026-03-29 21:41:55 -04:00
98055c586f Implement engine auto-analysis and settings UI refinements nightly-20260330-003241-98055c5 2026-03-29 20:32:32 -04:00
57e4a22be2 Audit drain, analysis, and settings regressions nightly-20260330-002416-57e4a22 2026-03-29 20:24:08 -04:00
3f28728b3e Fix engine analysis, drain flow, and settings UI regressions 2026-03-29 19:56:21 -04:00
3c7bd73bed Improve skip explanations and restore sidecar rollback nightly-20260329-133739-3c7bd73 2026-03-29 09:37:31 -04:00
8961d4c8e9 Create unique nightly releases and drop sha256 uploads nightly-20260329-130941-8961d4c 2026-03-29 09:09:33 -04:00
7e534ea814 Fix timing-sensitive file watcher test on Darwin 2026-03-29 08:45:51 -04:00