87 Commits

Author SHA1 Message Date
b0646e2629 chore: release v0.3.1-rc.5 2026-04-16 11:37:48 -04:00
c454de6116 chore: release v0.3.1-rc.4 2026-04-16 07:01:46 -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 2026-04-12 10:25:12 -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 2026-04-07 22:13:43 -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.
2026-04-06 11:25:48 -04:00
ed71d771ea Stability changes have been updated. 2026-04-05 13:11:18 -04:00
b0a190f592 chore: release v0.3.0-rc.3 2026-04-04 14:29:32 -04:00
774d185bd0 Add structured decision and failure explanations 2026-04-04 13:35:57 -04:00
220296c3f7 Prepare 0.3.0-rc.2 with Windows support and regression tests 2026-04-04 12:35:36 -04:00
a00d68b725 Prepare 0.3.0-rc.1 release and harden release checks 2026-04-04 11:40:31 -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
e57c2b8a1f Fix shutdown exit and restore watch folder API sync 2026-04-02 23:27:47 -04:00
57b980e7d0 fix major security bugs. 2026-04-01 22:45:51 -04:00
d9160f414c Fix VideoToolbox fallback and encode error reporting 2026-04-01 21:00:48 -04:00
120392e11b updated UI to remove odd flashing 2026-03-31 23:01:09 -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>
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>
2026-03-31 10:43:56 -04:00
4fbfbacdf0 Keep the engine running and improve job status details 2026-03-30 22:23:27 -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 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>
2026-03-30 11:08:23 -04:00
d17c8dbe23 Fix engine controls and job detail rendering 2026-03-30 08:48:58 -04:00
98055c586f Implement engine auto-analysis and settings UI refinements 2026-03-29 20:32:32 -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 2026-03-29 09:37:31 -04:00
6abfe2ea2b Bump version to 0.3.0-dev.4 2026-03-29 08:35:22 -04:00
14da21ed89 Fix various security, concurrency, and UI issues 2026-03-29 08:34:39 -04:00
e33c1e3c4d Add library intelligence duplicate detection 2026-03-28 22:55:30 -04:00
327585777b fix: remove redundant state clear and purge remaining banned CSS tokens
Remove the duplicate setSaveError("") call in HardwareSettings that was
already cleared before the try block. Replace all remaining text-[10px]
and text-[11px] arbitrary Tailwind tokens with text-xs across 9 components.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 10:48:51 -04:00
12c4161a3e Fix banned CSS token patterns in frontend components 2026-03-28 10:17:00 -04:00
413f1e28e4 Expand Playwright reliability coverage and harden hardware saves 2026-03-28 09:40:54 -04:00
f31dd23230 feat: comprehensive codebase improvements from audit
Architecture:
- Split server.rs (4,727 LOC) into 11 focused modules
- Add typed EventChannels (jobs/config/system) with appropriate capacities
- Add database query timeouts (5s on critical queries)
- Add graceful shutdown with signal handling

API:
- Add API versioning (/api/v1/) with backwards-compatible aliases
- Add X-Request-Id header for request tracing
- Create OpenAPI spec (docs/openapi.yaml)

Security:
- Add security headers middleware (CSP, X-Frame-Options, etc.)
- Add HSTS header (config-gated via https_only setting)
- Add config file permission check on Unix
- Fix path traversal vulnerability in file browser
- Add symlink detection in file browser

Frontend:
- Handle SSE lagged events with toast notification
- Clean up banned CSS patterns in components
- Add warning toast variant

Testing & Docs:
- Add FFmpeg integration tests with fixtures
- Expand documentation site (9 new pages)
- Pin MSRV to 1.85 in Cargo.toml

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 07:52:28 -04:00
c2fe9714e7 chore: release v0.3.0-dev.3 2026-03-25 11:40:57 -04:00
33e0cae5b6 Overhaul CI, nightly, and Docker release workflows 2026-03-25 11:35:36 -04:00
0cd401e03c Add UI regression coverage for telemetry and hardware settings 2026-03-25 11:10:44 -04:00
d5df90db0f Refactor setup UX and async execution observer plumbing 2026-03-25 08:14:24 -04:00
835493f850 ui: rework setup wizard, job manager, system settings, and header actions
- Part 1-2: setup.astro app-shell layout + new SetupSidebar.astro
- Part 3: SetupFrame full-page layout, 2px progress bar, toast errors
- Part 4: LibraryStep single-column redesign with chips and browse
- Parts 5-7: Fix banned patterns in SetupControls, ScanStep, ProcessingStep
- Part 8: JobManager polish (inline summary, badge/header/radius fixes)
- Part 9: SystemSettings engine mode section with API integration
- Part 10: HeaderActions dead code removal (engine mode state/handlers)
2026-03-24 18:33:14 -04:00
9278387250 UI: Comprehensive UX rework — flatten header, remove page titles, compact dashboard, grouped log viewer 2026-03-24 16:58:05 -04:00
406c70dede chore: release v0.3.0-dev.1 2026-03-23 07:53:10 -04:00
1906653dd7 chore: release v0.3.0-rc.3 2026-03-22 21:37:28 -04:00
f8540b0f09 chore: checkpoint before release v0.3.0-rc.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 21:02:26 -04:00
5c1535217d chore: checkpoint before release v0.3.0-rc.1 2026-03-22 20:28:10 -04:00
4f6d2d29d6 chore: checkpoint before release v0.2.10-rc.7 2026-03-22 20:09:50 -04:00
6fcd656668 chore: checkpoint before release v0.2.10-rc.6 2026-03-22 19:23:43 -04:00
4df4361f89 chore: checkpoint before release v0.2.10-rc.5 2026-03-22 15:40:26 -04:00
6e19aaa9ae chore: checkpoint before release v0.2.10-rc.4 2026-03-22 15:34:02 -04:00
76345e7016 Add engine mode controls and draining state 2026-03-22 14:18:46 -04:00