diff --git a/CHANGELOG.md b/CHANGELOG.md index b4f8fcf..460d72d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,30 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- +## [0.11.0] — 2026-04-20 + +### Added + +**`circuitforge_core.audio`** — shared PCM and audio signal utilities (MIT, numpy-only, closes #50) + +Pure signal processing module. No model weights, no HuggingFace, no torch dependency. + +- `convert.py` — `pcm_to_float32`, `float32_to_pcm`, `bytes_to_float32` (int16 ↔ float32 with correct int16 asymmetry handling) +- `gate.py` — `is_silent`, `rms` (RMS energy gate; default 0.005 threshold extracted from cf-voice) +- `resample.py` — `resample` (scipy `resample_poly` when available; numpy linear interpolation fallback) +- `buffer.py` — `ChunkAccumulator` (window-based chunk collector with `flush`, `reset`, bounds enforcement) +- Replaces hand-rolled equivalents in cf-voice `stt.py` + `context.py`. Also consumed by Sparrow and Linnet. + +**`circuitforge_core.musicgen` tests** — 21 tests covering mock backend, factory, and FastAPI app endpoints (closes #49). Module was already implemented; tests were the missing deliverable. + +### Fixed + +**SQLCipher PRAGMA injection** (closes #45) — `db/base.py` now uses `PRAGMA key=?` parameterized form instead of f-string interpolation. Regression tests added (skipped gracefully when `pysqlcipher3` is not installed). + +**`circuitforge_core.text.app`** — early validation on empty `--model` argument: raises `ValueError` with a clear message before reaching the HuggingFace loader. Prevents the cryptic `HFValidationError` surfaced by cf-orch #46 when no model candidates were provided. + +--- + ## [0.10.0] — 2026-04-12 ### Added diff --git a/pyproject.toml b/pyproject.toml index 6b2682d..8320001 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "circuitforge-core" -version = "0.10.0" +version = "0.11.0" description = "Shared scaffold for CircuitForge products (MIT)" requires-python = ">=3.11" dependencies = [ @@ -52,6 +52,20 @@ tts-service = [ "uvicorn[standard]>=0.29", "python-multipart>=0.0.9", ] +musicgen-audiocraft = [ + "audiocraft>=1.3.0", + "torch>=2.0", + "torchaudio>=2.0", + "einops>=0.7", + "flashy>=0.0.1", + "num2words>=0.5", +] +musicgen-service = [ + "circuitforge-core[musicgen-audiocraft]", + "fastapi>=0.110", + "uvicorn[standard]>=0.29", + "python-multipart>=0.0.9", +] vision-siglip = [ "torch>=2.0", "transformers>=4.40",