Changelog
0.4.1#
The first release of these changes: 0.4.0 was reserved by an interrupted publish and never reached npm.
- Long audio: speech over 30 seconds is cut at its pauses into windows of up to 28 seconds (silent edges trimmed, silent windows skipped) and transcribed window by window. Moonshine used to take the whole file in one pass and lost text past about 30 seconds; Whisper now gets the same windows instead of its fixed strided chunks. Timestamps stay absolute.
generate({ onSegment })reports each finished window's segments and{ done, total }for progress bars; streamed runs get asegmentevent, and aborting stops between windows.whisper-base(aliasstt:multilingual, preview) andwhisper-small(preview): multilingual transcription with timestamps at 73 MB and 237 MB on CPU.splitOnSilence()inedgewise/helpers.- The playground keeps the open tab and example in the URL (
#try-embed/galaxy), so a shared link opens the same one.
0.3.1#
- The playground headline spells out the registry's model count at build time (now thirty-two), and wraps on phones.
- A raven brand: a faceted raven mark as the favicon and logo, slate and amber colours across the docs and the playground, the raven on both heroes, the README and the 404 page, and a social preview card.
bun docs/brand.tsrebuilds the images fromdocs/brand/.
0.3.0#
d1-omni-600m(aliasjudge:omni): LiquidAI's open decision model. It answerschoice(),score()andboolean()questions over text, images or speech in one forward pass, with calibrated probabilities. Exported to ONNX by Edgewise (8-bit, checked against the PyTorch original). Stable: real-model tests pass on Bun, Node and Chromium.d1-3b(aliasjudge:large, preview): LiquidAI's 3B d1, the most accurate decision model under 10B on its Decision Index, over text and images. About 4.6 GB, for Bun and Node. Exported to ONNX by Edgewise in four parts (embedding, two decoder halves, vision): 8-bit weights, full-precision embedding, within 0.005 of PyTorch.requires: { server: true }marks models that run on Bun and Node only; browsers get anUnsupportedDeviceErrorbefore anything downloads.evaluate({ images, audio, sampleRate })judges images or an audio clip.stateis optional when the media are the whole state.evaluate({ items })asks the same questions about many states and returns{ results }; d1 models batch them into as few passes as fit.- Answers carry
truncated: truewhen a d1 model saw only part of the input. useEvaluatetakesimagesandaudio.- Worker mode:
evaluate()with anAudioBuffernow works (it was sent in a formevaluate()could not read). - Mock evaluate models receive the images and audio passed with the state.
- A live demo judges a photo or a voice clip with d1-omni.
0.2.0#
- Less memory in WebAssembly browsers:
lfm2.5-350m,lfm2.5-230mandgemma-3-270mrun 4-bit there from re-exports in the Edgewise bucket (checked by SHA-256).lfm2.5-350mdrops from about 3.2 GB to 0.7 GB, andgemma-3-270mnow runs 4-bit on WebAssembly. - Memory budget:
configure({ memoryBudget })(default'auto') unloads least recently used models before loading a new one, and on phones throwsOutOfMemoryErrorfor a model that cannot fit instead of crashing the tab. configure({ preferLowMemory })(default'auto', on for phones) picks a variant on another device when it needs half the memory or less.memoryUsage()reports loaded models, their estimated memory and the budget;estimateMemory()estimates a variant. Also on the worker API.capabilities()reportsmobile(iPads included) andmemory.- Voice cloning:
speak({ voice: { reference, consent } }),cloneVoice()and saved voices, with Chatterbox Turbo (voice:clone). Consent is required. - Worker mode:
edgewise/workerruns every verb in a Web Worker with the same API, including streams, tools, schemas and microphone input. - Models Edgewise exports are all served from the
kucukkanat/edgewise-modelsHugging Face bucket. - Browser network failures are reported as
DownloadError. score()answers are 0 to 1 as documented (they were the expected level index, 0 to n−1), so score thresholds behave as expected.- Transcribing less than 0.1 s of audio returns empty text instead of an ONNX Runtime error.
- Barge-in: VAD callbacks
onSpeechStart,onSpeechEnd,onMisfireandonFrame, plusmic.speakingandmic.speechProbability. mic({ echoCancellation, noiseSuppression, autoGainControl })(all default to true).speak().play()shares one AudioContext and stops at once when the run is cancelled, rejecting withAbortError.- Cancelling is consistent:
cancel(), an abortedsignal, and leaving afor awaitloop early all reject the Run withAbortError. - Server downloads: concurrent callers share one download, one caller's abort no longer fails the others, and disk errors reject instead of crashing the process.
cache.delete()matches model repos and never removes saved voices or vector indexes.onnxruntime-webandonnxruntime-nodeare declared dependencies, pinned to the versions Transformers.js uses.
0.1.0#
The first release.
- Six verbs:
generate,evaluate,embed,speak,paint,forecast, plusmic()andaudioSource()for live audio. - One isomorphic package for browsers, Bun and Node. WebGPU in browsers, and vgpu for GPU detection and vector maths on servers.
- 34 models across the verbs, pinned to exact revisions. Chronos-Bolt and the LiquidAI LFM2.5 encoders exported to ONNX by Edgewise, served from a Hugging Face bucket and verified with SHA-256.
- Helpers, React hooks, a Vercel AI SDK provider and mock models for tests.
- Real-model tests on Bun, Node and Chromium.