Skip to content

Releases

v0.5.0

Choose a tag to compare

@kstruempf kstruempf released this 10 Nov 22:02

0.5.0 (2026-11-10)

⚠ BREAKING CHANGES

  • speech: IndeRunApi gains a required close() member on TypeScript,
    Swift and Kotlin, so custom IndeRunApi implementations must add it.
    NeuralSpeechRuntime gains close() (optional on Web, defaulted on Swift; the
    Kotlin interface now extends AutoCloseable with a default no-op).
  • providers: on Kotlin, getModelPackageValidationIssues and
    ModelPackageValidationIssue moved from app.independo.inderun.providers.onnx
    (inderun-onnx-providers) to app.independo.inderun.core (inderun-core);
    update the import. Swift keeps compiling: IndeRunOnnxProviders re-exports
    IndeRunCore, where the validator now lives.
  • contracts: PlaybackOutput's flat 'durationMs', 'firstAudioMs' and 'firstChunkMs'
    moved into 'timing' (PlaybackTiming), on the wire and on SpokenSpeech in all three
    SDKs; the Swift PlaybackOutput(durationMs:) and (durationMs:firstAudioMs:)
    compatibility initializers and with(durationMs:) are gone, PlaybackOutput.CodingKeys
    is 'timing' only. firstAudioMs now counts from the provider receiving the request, not
    from the handoff to the platform. The generated Swift memberwise initializers of
    ModelPackage, Runtime and ProviderVoice gained parameters; labelled compatibility
    initializers keep the previous signatures. Format gained 'coreai', so exhaustive
    switch/when statements need a case. The Kotlin ProviderVoice constructor gained
    'locales' before 'name' (named arguments are unaffected). TypeScript SpeechVoiceInfo
    gained a required 'kind'.
  • speech: The generated Swift PlaybackOutput.CodingKeys gains a
    firstAudioMs case, so a switch over it that lists every case must add one.
    PlaybackOutput(durationMs:) and with(durationMs:) keep compiling.
  • sdk: A custom ONNX runtime (OnnxGenAiRuntime,
    AndroidOnnxGenAiRuntime, OnnxTextGenerationRuntime) must add availability(),
    and prepare() now loads the model, so a corrupt model is found at load, not at
    routing. AppleFoundationModelsAvailability gains notReady. ML Kit, Chrome and
    Foundation Models descriptors now carry taskCapabilities.
  • api: IndeRunApi gains readArtifact and disposeArtifact, which every implementer (including the Capacitor bridge and test fakes) must add. RunContext and ProviderStreamContext gain an artifacts sink.
  • engine: RunContext and ProviderStreamContext gain commit(), and ProviderStreamEvent gains a result case that exhaustive Swift switch / Kotlin when statements must handle. The Swift/Kotlin terminal-outcome factories take an optional partialText and output. A cancelled stream outcome may now carry neither partialText nor output.
  • contracts: the generated Output/OutputType types are renamed TaskOutput/TaskOutputType (Swift Kind is TaskKind), TaskResult.output.text and the terminal finalText/partialText are optional in the generated types, and TaskKind/TaskOutputType gain cases that exhaustive switch/when statements must handle. Text JSON payloads are unchanged, and generateText/streamText still return a non-optional string.
  • routing: the route-plan and provenance reason codes gain
    input_not_supported, output_delivery_not_supported,
    output_format_not_supported, locale_not_supported and
    voice_not_available; an exhaustive Swift switch over the generated Code
    must handle them. A provider whose descriptor lists a task other than
    text_to_text without declaring taskCapabilities is now rejected for it
    with task_not_supported. The generated Swift memberwise initializers of
    ProviderDescriptor, ProviderDynamicCapabilities, RoutePlannerInputTask and
    Candidate gain parameters. Text requests reach the planner with inputs
    ["text"]. The planner's JSON output omits absent optional fields
    instead of writing null. See docs/migration.md.
  • contracts: the provider capability types are generated contracts.
    Swift and Kotlin nested types move to top-level names:
    ProviderDescriptor.ProviderType -> ProviderType, TransportType ->
    ProviderTransport, StreamingStyle -> StreamingStyle, SupportsCapabilities
    -> ProviderSupports, CancelSemantics -> CancelSemantics, ResourceLimits ->
    ProviderLimits, PrivacyDescriptor -> ProviderPrivacy, and the request
    privacy enum PrivacyEnum -> Privacy. Kotlin enum entries are PascalCase
    with a rawValue (ProviderType.Local, CancelSemantics.None), ProviderLimits
    fields are Long?, and these types must be constructed with named
    arguments. Swift keeps the 0.4 initializer labels through convenience
    initializers. A route-planner input passed to planRouteJson must carry
    complete provider descriptors. See docs/migration.md.

Features 🚀

  • api: add the engine-owned artifact store with bounded reads and disposal (3a64f29), closes #247
  • contracts: admit text-to-speech requests and non-text outputs in the 1.0 contracts (b5e4bf2)
  • contracts: describe speech models, multilingual voices and playback timing (#260) (3dca2e0)
  • contracts: generate the provider capability snapshot from a schema (c83bd81), closes #210
  • core: add the optional audio output host service (#260) (575836f)
  • demo: publish the reference speech experience and release checks (7b5aa81), closes #250 #252
  • demos: add the opt-in Voices lab and the neural model catalog (#260) (b448f66)
  • engine: commit non-text outputs explicitly and carry them in terminal outcomes (f3d7216)
  • engine: write artifacts to app-provided destinations (967e8fe)
  • providers: add the Android system speech provider (32e1930), closes #248
  • providers: add the Apple Core AI neural speech runtime (#260) (b2e4edb), closes #function #if
  • providers: add the Apple system speech provider (263fce4), closes #244 #247
  • providers: add the browser speechSynthesis provider (292c7fd), closes #249
  • providers: add the neural speech provider family (#260) (2e8b208)
  • providers: normalize German text before neural speech (#260) (a43d049)
  • providers: run neural speech through ONNX Runtime with the Articulino pipeline (#260) (270fbf2)
  • routing: match providers on per-task capabilities (59c503d), closes #243
  • routing: project speech requests onto the planner and re-check the bound voice before each attempt (902ae8b)
  • sdk: add speak, generateSpeech, listVoices and prepare (65766e2), closes #246
  • speech-text: normalize English text for speech (6c27eac)
  • speech: add neural speech benchmark reports and verification records (#276) (ec7fde4)
  • speech: bound audio output waits, add close(), deflake tests, ship WASM release builds (#280) (ba275b5)
  • speech: normalize English text before neural synthesis (17f9178)
  • speech: run the export...
Read more

v0.5.0-rc.21

v0.5.0-rc.21 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 10 Nov 21:02
10f01e2

0.5.0-rc.21 (2026-11-10)

Bug Fixes 🛠️

  • onnx: keep a session loaded during cancellation from leaking on Kotlin (ac12c31)
  • onnx: release the default text runtime with the provider's close() on Swift and Kotlin (5a1614e)
  • speech: let the Core AI factory's provider release the runtime it built (ee73062)
  • web: declare the package side-effect free so the facade bundles alone (6eaa3c7)

v0.5.0-rc.20

v0.5.0-rc.20 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 10 Nov 18:31
40aa748

0.5.0-rc.20 (2026-11-10)

Miscellaneous Chores 🛠️

  • deps: bump com.diffplug.spotless (0df5af6)

v0.5.0-rc.19

v0.5.0-rc.19 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 10 Nov 18:21
976027b

0.5.0-rc.19 (2026-11-10)

Miscellaneous Chores 🛠️

v0.5.0-rc.18

v0.5.0-rc.18 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 10 Nov 16:37
c093dbc

0.5.0-rc.18 (2026-11-10)

Features 🚀

  • speech-text: normalize English text for speech (6c27eac)
  • speech: normalize English text before neural synthesis (17f9178)
  • web: select provider runtimes with JSON descriptors (#213) (62a7838)

Bug Fixes 🛠️

  • android: declare ACCESS_NETWORK_STATE in the system speech providers manifest (e3532df)
  • android: drop core-ktx and document consumer host requirements (#214) (fcbac10)
  • speech-text: read German money with a decimal point, a dash or cents only (033c23b)

Documentation 📚

  • plans: add v0.5.0 readiness plan (deb992a)

Miscellaneous Chores 🛠️

  • get dev ready for v0.5.0 (#213, #214, English speech text, #276) (#296) (c093dbc)
  • website: launch inderun.dev with a single-source documentation architecture (#292) (b4fbc88)

Tests 🛠️

  • android: record Pixel 9 Pro speech benchmarks and fix the package loader's variant (#276) (e9e57ae)

CI/CD 👷

  • swift: run the Swift checks as parallel jobs (1f13b70)

v0.5.0-rc.17

v0.5.0-rc.17 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 09 Nov 21:54
475015f

0.5.0-rc.17 (2026-11-09)

⚠ BREAKING CHANGES

  • speech: IndeRunApi gains a required close() member on TypeScript,
    Swift and Kotlin, so custom IndeRunApi implementations must add it.
    NeuralSpeechRuntime gains close() (optional on Web, defaulted on Swift; the
    Kotlin interface now extends AutoCloseable with a default no-op).

Features 🚀

  • speech: add neural speech benchmark reports and verification records (#276) (ec7fde4)
  • speech: bound audio output waits, add close(), deflake tests, ship WASM release builds (#280) (ba275b5)
  • speech: run the exported Articulino Core AI asset and record the conversion (#279) (ddf2671)

Documentation 📚

  • speech: record that Supertonic 3 is not integrated (#277) (0e1461e), closes #289

v0.5.0-rc.16

v0.5.0-rc.16 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 09 Nov 13:22
30763e9

0.5.0-rc.16 (2026-11-09)

Bug Fixes 🛠️

  • web: split neural speech sentences without a backtracking regex (3c7e47c), closes #12

Miscellaneous Chores 🛠️

  • deps: bump com.google.mlkit:genai-common in /android (4aa35ed)
  • deps: bump com.google.mlkit:genai-prompt in /android (62e90f5)
  • deps: bump the gradle-routine group across 1 directory with 4 updates (7ba1270)
  • deps: bump the npm-routine group across 1 directory with 5 updates (5618437)
  • deps: bump wasm-bindgen (8a2d0ba)

Tests 🛠️

  • web: freeze the clock in the system speech engine test (fa228d8)

v0.5.0-rc.15

v0.5.0-rc.15 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 09 Nov 11:38
b448f66

0.5.0-rc.15 (2026-11-09)

Features 🚀

  • demos: add the opt-in Voices lab and the neural model catalog (#260) (b448f66)

v0.5.0-rc.14

v0.5.0-rc.14 Pre-release
Pre-release

Choose a tag to compare

@kstruempf kstruempf released this 09 Nov 11:25
a43d049

0.5.0-rc.14 (2026-11-09)

Features 🚀

  • providers: normalize German text before neural speech (#260) (a43d049)

Neural speech demo assets 2

Choose a tag to compare

@kstruempf kstruempf released this 09 Nov 20:04
30763e9

Derived Core AI asset for the IndeRun Voices lab and the Apple Core AI runtime (#279): articulino.aimodel, published as its three files main.mlirb, main.hash and metadata.json (place them in a directory named articulino.aimodel). Modification: the PyTorch stages of eigenhand/articulino (commit 66f79f60, weights revision 38ad5471) were re-traced with torch.export and converted with Apple coreai-torch 0.4.3; the time-embedding frequencies are a constant and the iSTFT is rewritten as a matmul. See MODIFICATIONS.md. Apache-2.0, LICENSE and NOTICE included. Requires iOS/macOS 27. The asset is not byte-reproducible; SHA256SUMS lists the validated bytes.