2026.06.23
[2026.06.23]
Added
- S3-compatible HTTP API — new
crates/s3actix-web server listens ons3_port(default9000) and exposesmusic_diras a single fixed bucket (music, regionus-east-1); supportsPutObject,DeleteObject,GetObject,HeadObject,ListObjectsV2, andListBucketswith AWS Signature V4 header-form authentication; the news3_enabled,s3_host,s3_port,s3_access_key,s3_secret_keykeys insettings.tomlgate startup (server stays off when disabled or credentials are empty); per-PUT cap 2 GiB, uploads restricted to the same audio-extension allowlist as the library scanner;STREAMING-AWS4-HMAC-SHA256-PAYLOADis not supported (clients should useUNSIGNED-PAYLOADor sign the full body — awscli v2.23+ needsAWS_REQUEST_CHECKSUM_CALCULATION=when_requiredto opt out of the new default-on chunked signing); README, CLAUDE.md and the mintlify reference document client recipes for awscli, rclone, and MinIO Client library: filesystem watcher (crates/library/src/watcher.rs) — recursivenotify-based watch onmusic_dirkeeps the SQLite tag database in sync with on-disk changes;Createand data-modify events callsave_audio_metadata,Removeevents call the newrepo::track::delete_by_path(cascades throughalbum_tracks,artist_tracks,playlist_tracks,favourites), and rename events split into add/remove pairs; non-audio files are ignored via the same 18-extension allowlist the scanner uses; the watcher boots after the initial scan incrates/cli/src/lib.rs::run_indexing()and is also the sync engine behind the new S3 API — no separate DB code path
Fixed
build: linkCoreServices.frameworkon macOS so thenotifycrate's FSEvents backend resolves at link time — macOS-Intel CI was failing the Zig link step with undefined symbols_FSEventStream{Create,Invalidate,Release,ScheduleWithRunLoop,Start,Stop}; added to both therockboxdexecutable and the embeddablelibrockboxd.alink blocks inzig/build.zig, and to the embedder-facing framework list in CLAUDE.md
Full Changelog: 2026.06.18...2026.06.23