Skip to content

Latest commit

 

History

History
132 lines (94 loc) · 6.13 KB

File metadata and controls

132 lines (94 loc) · 6.13 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.


[Unreleased] — Repository Archived

This repository is preserved for historical reference. The C++ implementation has been superseded by decibri v3 (Rust rewrite) at github.com/decibri/decibri.

  • Repository transferred from github.com/analyticsinmotion/decibri to github.com/decibri/decibri.cpp (April 2026)
  • Automated workflows disabled
  • No further releases will be published under this package name from this repository
  • See github.com/decibri/decibri or decibri.com for current development

[1.0.0] - 2026-03-29

Changed

  • BREAKING: Renamed package from @analyticsinmotion/micstream to decibri.
  • BREAKING: Renamed JavaScript class from MicStream to Decibri.
  • BREAKING: Renamed TypeScript interface from MicStreamOptions to DecibriOptions.
  • BREAKING: version() return key changed from micstream to decibri.
  • BREAKING: Compiled binary renamed from micstream.node to decibri.node.
  • Renamed C++ source file from src/micstream.cc to src/decibri.cc.
  • Renamed C++ class from MicStream to Decibri.
  • Updated all documentation, examples, tests, and types for new naming.
  • Homepage moved from micstream.dev to decibri.dev.
  • Repository moved from analyticsinmotion/micstream to analyticsinmotion/decibri.

Migration

// Before (v0.4.0)
const MicStream = require('@analyticsinmotion/micstream');
const mic = new MicStream({ sampleRate: 16000, channels: 1 });

// After (v1.0.0)
const Decibri = require('decibri');
const mic = new Decibri({ sampleRate: 16000, channels: 1 });

[0.4.0] - 2026-03-10

Added

  • Voice activity detection (VAD) — energy-threshold speech/silence detection in the JS layer. Enable with vad: true; tune sensitivity with vadThreshold (RMS 0–1, default 0.01) and vadHoldoff (ms before 'silence' fires, default 300). Emits 'speech' and 'silence' events. No native rebuild required.
  • Device selection by name — device option now accepts a case-insensitive substring string in addition to a numeric index. Throws a descriptive TypeError if the substring matches zero or multiple devices.
  • Worked examples in examples/:
    • wav-capture.js — capture to a valid WAV file (no extra dependencies)
    • websocket-stream.js — stream raw PCM to a WebSocket server
    • websocket-server.js — minimal test receiver (requires ws)

[0.3.0] - 2026-03-10

Changed

  • Pre-built binaries now bundle inside the npm package (prebuilds/) and are loaded directly by node-gyp-build at require() time — no install-time network call to GitHub Releases. Eliminates prebuild-install as a runtime dependency.
  • Removed deprecated prebuild (build/upload) and prebuild-install (download) toolchain. CI now builds with node-gyp rebuild, stages artifacts, and publishes to npm via a dedicated publish job.

Security

  • Upgraded node-gyp to ^12.0.0 to resolve four high-severity vulnerabilities in the transitive tar dependency (GHSA-r6q2-hw4h-h46w, GHSA-34x7-hfp2-rc4v, GHSA-8qq5-rm4j-mr97, GHSA-83g3-92jg-28cx).

[0.2.0] - 2026-03-09

Added

  • TypeScript declarations (types/index.d.ts) — full type coverage for Decibri, DecibriOptions, DeviceInfo, and VersionInfo with typed event overloads for all Readable events plus backpressure. No @types/ install required.
  • macOS microphone permission helper — checks AVCaptureDevice authorization status before opening the PortAudio stream. When access is denied or restricted, emits a clear, actionable error (Microphone access denied. Enable access in System Settings → Privacy & Security → Microphone.) instead of silently delivering zero-amplitude audio.
  • format option ('int16' | 'float32') — opt in to 32-bit float PCM output. Default is 'int16'; existing code requires no changes. Zero-copy view: new Float32Array(chunk.buffer, chunk.byteOffset, chunk.length / 4).

Changed

Fixed

Removed


[0.1.0] - 2026-03-09

Added

  • Initial release (as @analyticsinmotion/micstream).
  • Cross-platform microphone audio capture via PortAudio, statically compiled — no system audio library required at runtime on Windows or macOS.
  • Node.js Readable stream interface emitting raw PCM Buffer chunks (16-bit signed integer, little-endian).
  • Default audio format: 16 000 Hz, mono, 100 ms chunks (1 600 frames per callback) — optimised for speech and wake-word workloads.
  • Configurable sampleRate (1 000–384 000 Hz), channels (1–32), framesPerBuffer (64–65 536), and device index options.
  • stop() method for clean stream termination and EOF signalling.
  • isOpen property indicating whether the microphone is actively capturing.
  • backpressure event emitted when the internal buffer is full and the consumer is reading too slowly.
  • Decibri.devices() static method listing all available audio input devices with index, name, channel count, sample rate, and default flag.
  • Decibri.version() static method returning decibri and bundled PortAudio version strings.
  • Windows x64 support via WASAPI with automatic format conversion, allowing any requested sample rate regardless of the device's native mix format.
  • macOS ARM64 (Apple Silicon) support via CoreAudio.
  • Linux x64 and Linux ARM64 support via ALSA.
  • Pre-built binaries for all four supported platform/architecture combinations, distributed via GitHub Releases.
  • prebuild-install integration for automatic binary download at npm install time.
  • node-gyp rebuild source-build fallback for unsupported platforms or environments without pre-built binaries.
  • GitHub Actions CI workflow building and uploading prebuilds to GitHub Releases on version tags.