GenericJam

GenericJam

Mob 0.9.22 has been released.

Added

  • Mob.Speech.voices/0: the text-to-speech voices installed on the
    device
    , as {:ok, [%{id, name, language, quality, network}]} sorted by
    language, then best quality, then name, on-device before network (iOS
    AVSpeechSynthesisVoice.speechVoices, Android TextToSpeech.getVoices,
    leaving out voices whose data isn’t downloaded). quality is
    :very_low | :low | :normal | :high | :very_high on both platforms. It
    blocks the caller (on Android until the engine starts, at most 5 s) and
    returns {:error, :unavailable} when the engine didn’t start or
    {:error, :unsupported} off device or on an older native build or bridge.
  • speak/3’s :voice takes a voice id from voices/0 as well as a
    BCP-47 language tag. An exact id match wins; otherwise it’s a language tag;
    a value that’s neither speaks with the system default voice.
  • End-of-speech events (part of MOB-453). The process that called
    speak/3 gets {:speech, :done} when its utterance finishes,
    {:speech, :cancelled} when stop_speaking/1 interrupts it, and on Android
    {:speech, :failed} when the engine can’t speak it.
  • Upgrading: the iOS half is in ios/mob_nif.m and the Android NIF in
    android/jni/mob_nif.zig, so rebuild natively (mix mob.deploy --native).
    Android also needs the MobBridge.kt text-to-speech block from mob_new
    0.6.14 (ttsSpeakFor, ttsVoices, the reworked ttsSpeak/ttsStop, and
    the ttsAppContext line in MobBridge.init; mob_new’s CHANGELOG has the
    steps) and
    an android.intent.action.TTS_SERVICE entry in the manifest’s <queries>;
    without that entry, API 30+ hides the TTS engine from the app. With an
    older bridge, voices/0 returns {:error, :unsupported} and speak/3
    still speaks, with :voice as a language tag only and no events.

Changed

  • Android: :rate, :pitch and :voice apply to one utterance, as on
    iOS (with mob_new 0.6.14’s bridge). TextToSpeech kept them between calls,
    so a speak/3 without :voice used whatever voice the previous call chose.
    Options left out now use the user’s text-to-speech settings.

Documentation

  • :scroll’s axis prop is in the components guide (#212). Horizontal
    scrolling worked on both platforms but the :scroll reference called it a
    vertical container and left axis (and show_indicator) out of its prop
    table. The table now lists them, with an example and which props are
    vertical-only; the guides use the string form "horizontal" throughout.

Link: Release 0.9.22 · GenericJam/mob · GitHub


Mob Info

Classification: Hybrid Mobile Framework
Description: BEAM-on-device mobile framework for Elixir. OTP runs inside your iOS and Android apps — embedded directly in the app bundle, no server required. Screens are GenServers; the UI is rendered by Compose and SwiftUI via a thin NIF.
Forum/tag: mob

Click here to view Mob’s main announcement thread.

Where Next? Top

Trending in News & Updates Top

woylie
Doggo 0.18.3 has been released. Added tabs: Add a disabled attribute to the :panel slot. A disabled tab can be focused with the arrow k...
New
bartblast
Hologram v0.12 is out! This one is for the big apps. Evo Store, Hologram’s Performance Sponsor, has an app with over 9,000 Elixir modules...
New
mikehostetler
ReqLLM v1.28.0 has been released. Features: add StepFun chat and audio providers (#1087) by mikehostetler openai: honour image deta...
New
GenericJam
Mob 0.9.18 has been released. Added anchor: "bottom" on :scroll, for chat logs (MOB-481). The scroll opens at the end of its content. ...
New
fhunleth
Nerves v2.0.0-pre.4 and v2.0.0-pre.3 has been released. Changes Fix typo preventing SOURCE_DATE_EPOCH from propogating through the fi...
New
GenericJam
Mob 0.9.17, 0.9.16 and 0.9.15 has been released. Added Async work in screens, the LiveView way. Mob.Socket.start_async/3 runs a functi...
New
mudasobwa
Finitomata v1.0.0-rc.0 and v0.43.0 has been released. Published to Hex.pm: finitomata | Hex Documentation: Finitomata v1.0.0-rc.0 — Doc...
New

Other Trending Topics Top

mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews