DevEmperor Release Notes
21 release notes curated from 1 source by the Releasebot Team. Last updated: Sep 26, 2026
DevEmperor Products
- Sep 25, 2026
- Date parsed from source:Sep 25, 2026
- First seen by Releasebot:Sep 26, 2026
Translation models v1
DictateKeyboard adds Mozilla Firefox Translations models for its on-device Smartbar translator, bringing 49 languages in both directions and keeping translation fully on the phone. The release includes hashed, gzip-compressed model files mirrored from Mozilla’s registry.
Mozilla's Firefox Translations models for the keyboard's on-device translator (issue #424)
the translate bar in the Smartbar translates what you type into the text field, entirely on the phone.
49 languages, both directions each. Mozilla trains every model to or from English, so a language here is two models — xx→en and en→xx — and a pair of two other languages is translated through English. Only models Mozilla has released in both directions are included: for each direction the "Release Android" model where Mozilla ships one to Firefox for Android (a smaller one than the desktop build), otherwise "Release". Languages released one way only (Croatian, Serbian, Albanian, Azerbaijani, Bosnian, …) are left out, and Norwegian is here once: Mozilla's no model is byte for byte its nb (Bokmål) one.
Files
Three per direction — the model (model.xxen.intgemm.alphas.bin), the lexical shortlist (lex.50.50.xxen.s2t.bin) and the SentencePiece vocabulary (vocab.xxen.spm, or a srcvocab/trgvocab pair) — gzip-compressed exactly as Mozilla serves them. The app checks every file against the size and SHA-256 in TranslationModels.kt before unpacking it. A language costs 30–75 MB to download and 43–106 MB on the device; the base models are ~31 MB unpacked per direction, the "tiny" ones ~17 MB.
Why a copy here
Every download in the app is a release asset of this repository, pinned by hash. Mozilla's own paths name the training run, which a newer model replaces. Mirrored and listed by tools/bergamot/prepare_models.py from Mozilla's registry of 2026-09-25; a newer set will be a new release, never a change to this one.
Source and licence
Mozilla Firefox Translations models, © Mozilla, Mozilla Public License 2.0 — unchanged. Training pipeline and model source: https://github.com/mozilla/translations. Run by the Bergamot engine (MPL-2.0) and Marian NMT (MIT), built from the same repository by tools/bergamot/build-android.sh.
Original source - Sep 21, 2026
- Date parsed from source:Sep 21, 2026
- First seen by Releasebot:Sep 22, 2026
Dictate 6.3.0
DictateKeyboard releases 6.3.0 with on-device photo text scanning, a new editing panel, customizable Smartbar long-press actions, improved floating button controls, smaller offline dictation models, more Eastern languages, data residency, and dictation fixes.
Dictate 6.3.0
Dictate 6.3.0 is a release about reaching more of the keyboard without leaving it. It can read printed text off a photo — an IBAN, a serial number, the Wi-Fi password on the back of a router — and it does that without ever asking for the camera permission. The cursor, the selection and the clipboard finally share one editing panel instead of eleven keys you had to know about, the number pad can be asked for by name, and any Smartbar button can carry a second action under a long press, paired by you rather than by us. The floating button gets a hold menu and a list of the apps it is welcome in. Offline dictation gets models that actually fit on a phone, forty more Eastern languages, and a picker that is ten rows instead of twenty-four. Updating shows a new What's-new tour for 6.3, eight pages with live artwork; every tour stays re-viewable under Settings › About.
📷 Scan text (#390)
Point the camera at printed text and it lands in the field you were typing in. An IBAN off a letter, a serial number off a box, an address off a parcel — the cases where retyping is the whole cost. Every recognised line comes back as a tappable region: take the ones you want, approve, done.
No new permission, and that is the design rather than a happy accident. An app that does not declare CAMERA may still fire ACTION_IMAGE_CAPTURE — the system camera takes the picture and hands back the file. Declaring the permission would have broken that route, not enabled it.
Recognition happens on the device. Nothing is uploaded, no provider is involved, and the photo is deleted as soon as it has been read.
✍️ The editing panel and the number pad (#386, #388)
Every piece of this already existed and none of it was together: the arrows and the clipboard actions as Smartbar slots you had to spend, the precise selection and the cursor walks as gestures you had to bind and then remember. The audit in #382 checked eleven keyboards; this was the one feature all of them had and we did not — not because the work was missing, but because there was no surface.
So this adds a surface and nothing else. Every key on the panel sends a key code the keyboard has handled for years, which is what buys hold-to-repeat for free instead of asking for eleven taps.
The number pad has been finished for a long time and had no way to ask for it. A numeric field decided for you, the keyboard-mode cycle had to be bound to a gesture by hand, and the one real key was a 2×2 digit block on the symbol layer that only people who already knew it was there ever found.
👆 A second action under a long press (#385)
Pair a second action to a Smartbar button yourself, and holding it runs that one. Only about five buttons are visible before the overflow, so this is the difference between having a feature and having room for it.
The pairing is yours, not a table we ship. #382 proposed a fixed list of obvious pairs; that works for a keyboard whose toolbar is fixed, and ours is arranged by the user — a curated pair would be a guess about ten of thirty-odd actions, and would serve someone who has cut visible and copy hidden exactly not at all. A pairing you set yourself also needs no explaining.
A small badge marks the buttons that carry one, sized against the icon it sits on.
🫧 The floating button (#408, #392, #399)
Hold it for a short menu, starting with transcribing an audio file — the thing that already happens when a voice note is shared to Dictate. No gesture is remapped: the button is draggable, so hold-and-drag already means two things, and a double tap cannot exist on a control where a quick start-then-stop is one.
Tell it which apps it is welcome in. It used to appear over anything with a text field, which is two problems in one: banking and payment apps object to anything drawn on top of them, and apps with a microphone of their own were handed a second one for nothing. Three modes over one shared list — everywhere, only these, everywhere except these.
Stop stays exactly where start was (#399). The tap target never actually moved — the pill toggles and the edge it grew from stays under the finger — but the glyph walked off with the pill, so the hand and the eye had to meet somewhere else. Now the glyph is read from the side the button is on.
The pill opens smoothly on either wall. A frame-by-frame recording showed the window manager moving the window every frame while the app's buffer for that width arrived only every 7–13 frames; on a stale buffer the whole pill slid inwards and then jumped back out. Two windows now, one of which never changes size.
🔌 Offline dictation (#406)
English, German and Russian in sizes that fit a phone, instead of only the 670 MB ones. The catalog had a shape problem rather than a gap — English existed only through Whisper, German only as a 670 MB fine-tune, Russian only without punctuation — so every language with a specialised model had to pay for it in storage, and the wizard kept recommending the general one.
Dolphin closes everything east of Europe, about forty languages the catalog could previously only reach through Whisper. The measurement was not close: given natural Hindi, the Whisper Base most people install answers in Urdu script and stops halfway, while Dolphin returns correct Devanagari with the punctuation in place.
Fun-ASR-Nano was measured against it and rejected, and Snapdragon NPU support was closed as wontfix (#404) — QNN would mean going back to older models and a fixed input window, which is a step backwards wearing the word "faster".
The picker is ten rows instead of twenty-four. Sixteen of the twenty-four models were not twenty-four decisions; they were Whisper in six sizes and Kroko in ten languages, and listing them flat made the provider editor four screens of scrolling. The order is by what most people will actually download, not by architecture, and the details sit behind an ⓘ.
Each model is cut at the length it actually handles, not at Whisper's. Everything was segmented at 28 seconds because that is Whisper's ceiling; it was wrong in both directions for everyone else.
🎨 High contrast that is a number, not a name (#387)
Two themes carried "(High Contrast)" in their label for a year without anyone measuring them. They were the E-Ink ones, monochrome because an e-ink panel smears when it redraws colour — a display problem, not a vision one. Someone who needs a readable keyboard had no reason to open an entry that says E-Ink.
dictate_contrast and dictate_contrast_night are new, and the numbers are the feature: every label is measured against its own background rather than named after an intention.
🗂️ Your own vocabulary as a file (#389, #129)
Custom words had exactly one way in: typing them one at a time into a dialog. Anyone with a real vocabulary — patient names, part numbers, a team's jargon — was stuck, and this is the list every dictation rides on, since it is appended to the transcription prompt on every single request.
There is now an importer (merge, never replace) and an exporter, and the same pair for the find-and-replace rules. Importing and exporting live inside the word list, where the list is.
What the list costs is said out loud, in one line, where the list is — because that prompt has a hard ceiling and a vocabulary that overruns it silently stops working.
🌍 Data residency (#403)
A provider account can choose the region its data stays in, and the streaming host moves with it. Soniox sets residency per project and a regional project mints its own key, valid inside that region only — so a perfectly good EU key entered against a hard-pinned api.soniox.com came back as an invalid key, with no way around it.
🎙️ Dictation and providers
The recording bar can draw a waveform (#371), so it answers the question people hold a thumb over the stop button for: has it gone quiet yet. The dot only ever showed the current instant; a scrolling history is the only shape that shows silence, which is why silence is drawn as flat dots rather than as a gap — a gap reads as a broken indicator.
The provider's own key page is one tap from the field where the key goes (#410). Someone picked OpenAI, left the field empty, tapped Test connection, got OpenAI's verbatim "Missing bearer authentication in header", read it as a broken app and asked for a refund. Nothing was broken — the dialog simply never said a key has to be fetched first.
Test connection can fail again (#384). It called listModels() and treated any number it got back as a pass — but for Azure, ElevenLabs and AssemblyAI that list is compiled into the app, so the test could not fail: not with a wrong key, not with a hostname that does not resolve, not in airplane mode. It now makes an authenticated request per provider.
OpenRouter's transcribeStyle: "clean" was built and then taken back out (#400). Building it was easy; measuring it ended the feature. On the same recording the option changed nothing on either route, and shipping a switch that does nothing is worse than not having it.
🧭 Finding things
A fresh install opens on what this keyboard is for (#402). The default Smartbar arrangement had grown by appending each action as it shipped, so it read as a changelog: text editing, select all, undo, redo, cut and copy were what a new user met, and the transcription history — the second half of what this keyboard does — sat at position 32 of 34.
The classic layout's action buttons wrap onto a second row (#226) instead of making people give up features to fit. Ten buttons against twenty available actions meant choosing which ones to do without, and that ceiling had already been raised once.
Providers and transcription languages sit above the dictation layout in the settings hub. Provider and language are what you set once and return to when something is wrong; the layout is a matter of taste most people never open, and it had top billing only for having arrived as its own category.
🔧 Fixed
A dictation survives the microphone it was recording from going away (#411). The microphone was asked for exactly once, and the audio service hands it over rather than sharing it — so for a few hundred milliseconds after anything else let go, the recorder came back uninitialised as a red "recording failed". A route that dies mid-dictation is now handled too; both were found by reading the code, and both were measured on an A55 before and after.
Keyboard actions no longer die silently on a dead surface (#409). The output target was latched by every start and never reset, so after a single floating-button or system-voice-input dictation, every later keyboard action aimed at a surface that was already gone. Every action now names the field it writes to, and the voice-input view has a way out of a failure.
The space a picked suggestion promises is written straight away (#393). Nothing about the resulting text was ever wrong, but the decision was invisible: pick a word off the strip and the cursor sat against its last letter, while every mainstream keyboard shows it one space further on.
A silent recording no longer comes back as invented Croatian (#407), and a red error is told apart from a white one.
The floating button's × has a round shadow instead of a square of one.
Distribution: Dictate ships through Google Play. This release has no APK attached on purpose — see the README for why, and for how to build it yourself from source.
Original source All of your release notes in one feed
Join Releasebot and get updates from DevEmperor and hundreds of other software products.
- Sep 15, 2026
- Date parsed from source:Sep 15, 2026
- First seen by Releasebot:Sep 15, 2026
Dictate 6.2
DictateKeyboard releases Dictate 6.2.0 with learned personal words, fresh translucent and split keyboard designs, smarter emoji and suggestions, and practical tools like incognito mode, link cleanup, inline calculator, searchable clipboard, and dictation export to folders.
Dictate 6.2.0 is a release about the keyboard knowing you. It learns the words you type — the names and terms no dictionary has ever heard of — and keeps them on your device, in a list you can read and prune. It comes with five new designs, two of which let the app behind show through the gaps between the keys. It can be split in two so both thumbs reach it, it finds the emoji for the word you just typed in about fifty languages, and it brings a handful of small tools you will end up using daily: incognito mode, links without their tracking tails, an inline calculator, a selection counter and a searchable clipboard. Updating shows a new What's-new tour for 6.2, twelve pages with live artwork; every tour stays re-viewable under Settings › About.
🧠 It learns the words you type (#318, #375, #242)
A name, a term or a place you type often enough is kept. The keyboard stops marking it as a mistake, starts offering it in the strip, and starts correcting into it — a word you invented is no longer a word the autocorrect fights.
This release switches it on, for everyone. A default flip alone would only ever reach new installs — the preference store keeps whatever was touched — so existing users are migrated onto it too. That overwrites a deliberate "off" and nothing can tell that apart from a default nobody ever chose, which is why the tour says so on its own page and points at the switch. It is under Typing › User dictionaries, next to the list.
What is never learned: anything typed in incognito mode, anything in a password field, and anything that did not arrive key by key — dictation and glide included. A word has to be typed, every character of it, before it can be considered.
The entry test is measured, not guessed. Two populations are evaluated on every build: correctly typed words the dictionary does not know (which must be learned) against mis-typed ones (which must not). A word climbs three rungs before it counts as known, and words you actually use rise to the front among your own.
Everything is visible and removable. The Learned-words screen lists every word with a bin next to it, says which of the two switches is in the way when nothing is being learned, and the whole vocabulary travels in your backup.
An address is now one word, so [email protected] can be learned instead of being cut at the @ (#318 round 3), and a word carrying a digit no longer throws away the proof that it was typed (#311).
🎨 Five new designs
Dictate Glass and Dictate Glass Clear are translucent: the app you are in shows through the gaps between the keys.
The keys themselves stay nearly solid, and that is a measurement rather than a taste. Spotify draws its search results edge-to-edge behind the keyboard; at 13 % key opacity its song titles read straight through the key labels. Foreign white text stops being readable at roughly 94 % — so there are two themes with the cost in the name: Glass, usable in any app, and Glass Clear, which looks better and lets foreign text through in apps that draw behind the keyboard.
Sand (Day), Deep (Night) and E-Ink Night fill the gaps the line-up actually had: everything light was the same cold grey, and E-Ink had no night counterpart, so automatic day/night switching handed high-contrast users a white keyboard after dark.
Three reusable Snygg properties came out of this — background-sheen, border-sheen and squircle(…) for continuous corner curvature — and two surfaces that had been bypassing the theme with hardcoded colours (the classic layout's enter-key popup and the push-to-talk lock pill) now read key-popup-box and follow whatever theme you pick.
No frosted blur, deliberately. It was built, measured and thrown away: the platform applies a window blur to the whole window, ours spans nearly the display, and the rework needed to make the window the size of the keyboard would have had to agree with one-handed mode, compact mode, split, the resize editor, landscape fullscreen and every panel taller than the keys. A keyboard that glitches is worse than a keyboard that is not frosted.
✋ Split keyboard and landscape (#362, #361)
A new Smartbar quick action, next to one-handed and floating, pulls each row into two runs so both thumbs reach their own half.
Every layout splits, not just QWERTY. The seam falls where the accumulated key width first reaches half the row, which is the seam a reader would draw — so the Hindi varnamala rows and the Chinese layouts split correctly without a single layout file changing.
In landscape the app stays visible whenever there is room for both, instead of the full-screen text editor taking the screen for a one-line field.
😀 Emoji (#338, #340)
Type a word and its emoji is offered, from the same CLDR data the system uses — about fifty languages, measured across eighteen, rather than an English word list.
It rides along beside the suggestions instead of taking one of their seats.
An optional emoji row above the keys holds your pinned and recently used emojis, fills itself, and holds still while you use it.
🧰 Four small helpers (#329)
- Incognito mode — nothing is learned and nothing is kept while it is on, including in the panels that were still quietly taking notes.
- Tracking stripped from pasted links — utm_*, si, fbclid and the like are removed on the way into the field.
- An inline calculator — type a sum ending in = and the answer arrives as a suggestion.
- Digits back on the letters when the number row is on.
✂️ Selecting, moving, and the clipboard (#335, #360, #352, #346, #316)
The row that stood empty during a selection now counts it — words and characters, in the space that was doing nothing.
Jump to the very start and end of the field, on both layouts, and leave the stray spaces behind when copying.
The actions row steps aside when a selection begins instead of talking over it.
The clipboard can be searched, across everything in it.
What you just copied is offered as a pill you can dismiss, shrink-to-fit so it never eats the strip, and copying the same text twice now counts as twice — the "already used" marker was comparing against an id that was always 0.
Deleting a clip deletes the file behind it. Images and videos were left on the phone after the entry that referenced them was gone.
👆 Gestures and fit (#366, #364, #365, #327)
Hold ?123, slide onto a character, let go — it is inserted and the letters are already back, with no switching in and out.
Swiping up on the space bar reaches the line above, not just the word before it, and a sideways swipe can be ended rather than only flicked.
The gap between keys has a range wide enough to see and a name that says what it does — a wider gap makes the keys smaller, not the keyboard.
📁 Every dictation into a folder (#379)
Pick a folder and each finished dictation is written into it as a plain text file, the moment it is done, optionally with its recording. Dictate only writes the files, so whatever already syncs that folder — a cloud client, a script, your own tooling — picks them up without an account or a token ever being handed over.
🎙️ Dictation and providers
Azure's MAI-Transcribe is reachable (#349) — it is selected through the enhanced-mode option rather than a model list, and the screen now says why Azure has no list instead of implying one failed to load.
Choosing an on-device model chooses the on-device engine (#343), and only during setup, and only where nothing else is set up.
Every request has a time limit that fits the wait (#350, #354, #355, #189) — one request had none at all, and a model allowed to think for minutes was being cut off by a socket that stalls in seconds.
The live preview stops narrating itself (#345), and a Gemini Live turn is no longer mistaken for the end of the dictation (#372) — its tail arrives about 0.3 s after the stream is closed.
The floating button can stream without typing along as it goes (#357).
A dictation appears in the history the moment it is sent (#358, #350), and the resend chip finishes the entry it is retrying instead of starting a second one.
Holding the mic to speak behaves like a mic (#235, #88, #228, #301).
An import says which step it is on and can be cancelled (#337), shared files get longer than a chat message to travel, and a shared file is sped up too if that is what the setting says.
💡 Suggestions in every language (#334)
Predictions now weigh the two words before the cursor, not just the last one — and in every language that ships data, not only in English. Whether a second word of context was worth building was measured before it was built; the tables carry their size in the file name so a regeneration can never break an app already installed, and language data is fetched only when it is actually needed, with a Wi-Fi-only switch for it.
🔒 Backup without your keys (#367)
An archive can be made without your API keys, passwords or Dictate Cloud credit, so it can be passed to someone else or attached to a bug report. What is in the archive is listed before it is written, and restoring says plainly when a backup carries no credentials.
🔧 Fixed
Text lands in the field more reliably (#314, #310, #222) — the app is now asked whether the text arrived rather than the field being believed about its own cursor, a rebuild happens only around content that could be proved, and modern phones insert the way Android 12 has to when that is what works.
The Hindi vowel row shows the syllable a Hindi typist is actually building (#315), and the inherent अ key no longer wears a cross over its own letter.
A space typed before a punctuation mark is swallowed, and a transcript piece is asked what it begins with before a space is put in front of it (#356).
Double-tapping the space bar writes what the language ends a sentence with, not a full stop everywhere.
A lone English "i" is capitalised, and only where that is true.
The number row folds away from the action bar instead of colliding with it.
The settings search finds a feature by the name people call it (#333), and the clipboard and the sticker panel each got their search where the header was standing empty (#336, #326).
The sticker pack tabs answer a tap like every other tab does.
Only in-flight work keeps the recording bubble up (#339), and the microphone is promoted before every bubble dictation rather than only on the tap (#230).
A release the tooltip consumed counts as the tap it was (#257).
A cold dictionary manager no longer takes the settings screen down with it.
The release build builds again (#332) — app/lint.xml is lint's configuration file, and reading it as a baseline left every real finding unbaselined — and the unit-test JVM has enough heap to reach the end of the suite (#331).
Distribution: Dictate ships through Google Play. This release has no APK attached on purpose — see the README for why, and for how to build it yourself from source.
Original source - Sep 10, 2026
- Date parsed from source:Sep 10, 2026
- First seen by Releasebot:Sep 11, 2026
Word-triple context tables
DictateKeyboard ships per-language three-word phrase tables to improve next-word suggestions from two words of context, especially after common function words. The update includes complementary pair and triple tables, optimized flat-blob loading, and language-specific sizes built from Leipzig Corpora data.
Per-language tables of three-word phrases, used to suggest the next word from the two words before the cursor instead of one (issue #334).
Format w1 w2 w3count, lowercased, UTF-8, sorted by key — same shape and the same reason as the word-pair tables: the app binary-searches a flat blob, so key order means a linear load rather than sorting 100 000 keys per language. Read by frequency with sort -t$'\t' -k2 -rn .
Why a separate tier rather than simply larger pair tables. Measured on held-out text: after a function word — "the", "to", "of", where 46 % of all predictions are asked for — five times as many pairs are worth exactly nothing (20.4 % → 20.4 % top-3 in English, 15.9 % → 15.9 % in German). Only a second word of context adds anything there. The converse holds too: after a rare word these triples are worth almost nothing and only more pairs help. They are complements, so both shipped together.
100 000 entries because the gain saturates early: 50 000 already buys 4.0 of the 5.3 points available after a function word, 100 000 buys 4.6, and the last 0.7 would cost two and a half times the bytes.
Sizes run 1.8–6.6 MB, and that spread is script, not vocabulary: every table holds the same number of entries, but a Georgian or Tamil character costs three UTF-8 bytes where a Latin one costs one. Tamil's is the one short table (66 149 rows) — its corpus is Wikipedia and the language is agglutinative, so fewer triples clear the minimum count of three.
Source Leipzig Corpora Collection (https://wortschatz-leipzig.de), CC BY — © Universität Leipzig / Sächsische Akademie der Wissenschaften / InfAI. Please cite D. Goldhahn, T. Eckart & U. Quasthoff (2012), "Building Large Monolingual Dictionaries at the Leipzig Corpora Collection: From 100 to 200 Languages", LREC 2012. Counted from each package's *-sentences.txt by tools/glide-dict/generate_ngrams.py; the package per language is recorded in tools/glide-dict/generate_ngrams_all.py.
English is not here — it ships inside the app, so the English keyboard is complete on install.
Original source - Sep 10, 2026
- Date parsed from source:Sep 10, 2026
- First seen by Releasebot:Sep 10, 2026
Trigram context tables v1
DictateKeyboard adds per-language word-triple tables for next-word prediction, with lowercase top-100,000 trigrams written in key order for faster binary search loading.
Per-language word-triple tables (<lang>_trigrams_100k.txt) for next-word prediction — issue #334.
Format: w1 w2 w3<TAB>count, lowercased, top 100 000 by count, written in key order so the app can binary-search the file without sorting it on load.
Source: Leipzig Corpora Collection (https://wortschatz-leipzig.de), CC BY — © Universität Leipzig / Sächsische Akademie der Wissenschaften / InfAI. Please cite D. Goldhahn, T. Eckart & U. Quasthoff (2012), "Building Large Monolingual Dictionaries at the Leipzig Corpora Collection", LREC 2012. Counted from each package's *-sentences.txt by tools/glide-dict/generate_ngrams.py.
Packages used: en = eng_news_2024_1M · de = deu_news_2022_1M
Original source Similar to DevEmperor with recent updates:
- Smokeball release notes147 release notes · Latest Oct 2, 2026
- Cosmolex release notes20 release notes · Latest Jul 30, 2025
- PracticePanther release notes36 release notes · Latest Aug 11, 2026
- Salesforce release notes83 release notes · Latest Oct 1, 2026
- Microsoft release notes1046 release notes · Latest Oct 21, 2026
- Zoom release notes221 release notes · Latest Oct 19, 2026
- Sep 5, 2026
- Date parsed from source:Sep 5, 2026
- First seen by Releasebot:Sep 6, 2026
Dictate 6.1.2
DictateKeyboard ships Hindi and Russian input improvements, sticker panel upgrades, quieter floating dictation fixes, better OpenRouter and audio upload handling, clearer keyboard sound settings, swipe feedback, and floating button positioning polish.
Dictate 6.1.2 is a small release: mostly repairs, plus a few things that were missing. Like 6.1.1 it installs quietly — no what's-new tour, no update notice.
New
Hindi is laid out the way Hindi is taught. (#315) The varnamala layout is now the default, the vowel row shows the matra it is about to attach, and the number row carries Devanagari digits — per language, so no other layout is affected.
Russian can mark where the stress falls. (#328) Long-press a vowel for its accented form.
The sticker panel grew up. (#317, #308) Search stickers by name, drag packs into your own order, give every folder back its own favourites and recents, and optionally be asked before a sticker is sent.
The emoji and media panels match the rest of the keyboard. Search sits where the categories are, categories scroll sideways, and every panel header uses the same icon size.
Fixed
A floating dictation could land in the wrong field. (#310) It used to search the whole window for something editable — Chrome's address bar, WhatsApp's message box — and pull the cursor there first. It now writes only where the input focus already is.
"Green check, but no text" now asks the field itself. The read-back used to go through the same connection as the write, so a dictation into an editor the app had discarded was faithfully reported as having arrived.
Autocorrect no longer eats the digit in top10. (#311)
Rewording uses the model the dialog says it will use. (#313) Retired default models are replaced with ones that still answer, and a failure now says which model it came from when nobody picked one.
OpenRouter transcription works again. (#321) Its plain model list hides every speech model, so Dictate was offering none; the default is a current model, the size ceiling is the one OpenRouter actually enforces, and the language field is the one it reads.
.opus and other voice notes upload correctly. (#322) What an audio file is is now read out of the file rather than its name, providers declare what they accept, and a conversion happens before the upload instead of a rejection after it.
Keyboard sounds explain themselves. (#324) On phones that ship with Android's touch sounds off, or with the ringer on vibrate, the keyboard was silent with both switches on. The settings screen now names the gate that is closed and takes you to it.
Swipe gestures commit under your finger. (#327) Plus feedback for the gestures and panels that had none, and haptics that no longer scale down to nothing. (#325, #326)
The floating button stays where you put it. (#323) Its position is remembered as a side and a fraction rather than pixels, so rotating, folding or splitting the screen no longer strands it.
Panel polish: the GIF panel dims behind its action sheet, the long-press menu is drawn inside the panel, the scrollbar measures rows rather than items, and a digit typed into a search box lands in the search box.
Original source - Sep 4, 2026
- Date parsed from source:Sep 4, 2026
- First seen by Releasebot:Sep 4, 2026
v6.1.2: Dictate 6.1.2 (139)
DictateKeyboard ships a repair-heavy update with sticker search, reordering, Hindi layout fixes, and Russian stress marks.
Sixty commits since 6.1.1, almost all of them repairs: the dictation landing in the wrong field, top10 becoming Top 1, two haptic channels scaled out of existence, swipes committing where the finger started, the floating bubble drifting on a rotation, retired rewording models, uploads named after what they were not, and a keyboard that stayed silent without saying why.
New and small: sticker search and reordering, the Hindi layout in the order Hindi is taught, Russian stress marks.
Original source - Sep 1, 2026
- Date parsed from source:Sep 1, 2026
- First seen by Releasebot:Sep 2, 2026
Dictate 6.1.1
DictateKeyboard 6.1.1 ships a quiet bugfix release that fixes GIF panel crashes, deduplicates repeated GIF results, and stops patch releases from triggering update notices or replaying past whats-new tours.
Dictate 6.1.1 is a bugfix release, and it installs the way a bugfix release should: no what's-new tour, no update notice, nothing to dismiss.
🐛 Fixed
Opening the GIF panel could take the keyboard down. (#307) KLIPY sometimes returns the same GIF twice within one page of results. The grid identifies its tiles by that id, and a repeated one throws out of Compose's measure pass — which kills the keyboard mid-sentence, in whatever app you were typing in. Results are now deduplicated as they arrive, on the first page as well as on every page scrolled in after it. Present since 5.1.0.
A fresh install is no longer made to catch up on every past release. Nothing is shown when you first install, because there is nothing to catch up on — but that also meant the "already seen" mark was never written, and the next update, whichever one it turned out to be, replayed all six what's-new tours back to back and opened a changelog listing every release since 5.0.
A patch release no longer announces itself. The changelog dialog, the "Dictate was updated" notice on the keyboard and the floating-button spotlight are tied to feature releases now, not to every version number. Skipping 6.1.0 and landing here still shows you what 6.1 brought.
If 6.1.0 has been working for you and you don't use the GIF panel, there is nothing in this release you will notice. That is the intention.
Original source - Aug 31, 2026
- Date parsed from source:Aug 31, 2026
- First seen by Releasebot:Sep 1, 2026
Dictate 6.1.0
DictateKeyboard releases 6.1.0 with folder-based sticker panels, voice-message sharing that auto-transcribes, smarter autocorrect, and contact-name importing without READ_CONTACTS. It also expands typing layouts and fixes wide-screen and keyboard bugs.
Dictate 6.1.0
Dictate 6.1.0 is a release about the things you do around dictating. Point the keyboard at a folder and it becomes a sticker panel. Share a voice message to Dictate and it tells you what it says — no field to find, no button to press. And the autocorrect finally catches the ordinary typo, the one it was built not to see. Updating shows a new What's-new tour for 6.1; every tour stays re-viewable under Settings › About.
🖼️ Your own stickers (#280)
Point Dictate at a folder and its pictures become stickers. Subfolders turn into tabs, each with its own favourites and recents. No account, no catalogue, no upload — the folder is the feature.
Add one from any app through the share sheet, and delete one without leaving the keyboard.
What a chat app accepts is not what it says it accepts. WhatsApp asks for image/webp.wasticker and never plain image/webp, then validates what arrives under that name and answers an oversized sticker with an empty frame; Signal takes an animated WebP and shows a single frame of it. So each sticker is brought into one shape — 512×512 WebP within budget — once, on the way into the folder, and inserting is a lookup and a commit.
Two derivatives cover the rest: a PNG for an app without WebP, and a GIF, written by hand because Android cannot encode one, for an app that would otherwise freeze the animation.
🎧 Share a voice message to Dictate (#301, from #300)
Dictate is now in the share sheet for audio and video, with Open with from a file manager as well. Share a voice message and a screen opens that starts transcribing by itself: sharing a file to a transcriber has already said what should happen to it, and a second button would be a toll on a decision made twice.
File transcription has existed since 4.0.0, but only ever answered one of the two questions people have about an audio file. Long-press the mic and the text lands at the cursor — put this file's words into the field I am typing in. What someone actually does with a voice message is the reverse.
Long recordings are handled in pieces rather than turned away, the transcript is searchable, and the player has fixed ends and a real position.
One entry per file, on a screen you can come back to.
✍️ Autocorrect (#295, #150)
The typo it was built not to see is fixed. The rule deciding whether a correction could be swapped in silently let through a finger that had slid 90% of the way to the next key — but never one that landed on the neighbour squarely, and never a word with two slips at all. That is the ordinary typo, and it now gets corrected.
How eagerly it corrects is a setting, measured against two populations rather than one: how many real slips get fixed, and how many correctly typed words get damaged. Both numbers are in the repository as a test that stays.
The word space is about to take is marked, in your accent colour, in every bundled theme. It had been handing the strip an "auto-commit" attribute since #150 that no stylesheet ever read.
Backspace right after a correction gives back what you typed, the way Gboard and SwiftKey do.
👤 Contacts, without the address book (#264, #263)
Your contacts' names can go into the personal dictionary, so the keyboard stops underlining them and starts suggesting them — through a picker, or by importing a vCard.
It never asks for READ_CONTACTS. You hand over the names you want; nothing else is read.
A word you added now competes for the strip instead of owning it. With a handful of hand-added words the old behaviour was invisible; after importing a contact list it is not.
🎙️ Dictation providers
Gemini transcribes with models built for it. (#292) Google shipped gemini-3.5-transcribe and gemini-3.5-transcribe-live on 26 August; until now Gemini transcribed with its multimodal chat models under a stern instruction to return the words and nothing else, and streaming was off altogether.
Deepgram Flux, live. (#291) Flux decides for itself when a turn has ended instead of waiting out a silence timer. It is streaming-only and lives on a different API version, reporting turn events rather than results — so picking it used to fail either way round.
Say which languages you speak, not just one. (#99, #248) An expected-languages list for the models that accept one, and free detection no longer turns into a failed dictation over a region tag.
A model that only thought gets asked again, with the thinking turned down. (#304) A rewording that came back empty because the budget went entirely on reasoning used to replace a dictation with nothing.
A failed dictation says which half failed. (#284) A rewording that died reported "unknown error during transcription", and on the normal path said nothing at all — the raw transcript appeared and the rewording was silently gone.
⌨️ Typing & layouts
Russian can be typed phonetically (#302) — a ЯШЕРТЫ layout beside ЙЦУКЕН.
French finds its accents from the plain letters (#306) — ho reaches hôte and hôtel, oeu reaches œuvre, and an unaccented spelling still gets its accent restored.
Prompts can be triggered by typing a shortcut (#283), not only by tapping one in the strip.
The suggestions switch really switches suggestions off (#297) — a disabled child preference kept running underneath it. And an app can no longer switch your suggestions off without you (#296): the flag that asks for it used to kill completion and autocorrect outright. Password fields are still refused, in code.
Emoji suggestions are no longer switched off by something else. (#298)
A deleted community prompt can be added back. (#303) The library reported prompts as already added that existed nowhere.
🔧 Fixed
Very wide screens get a keyboard again. (#114) In a window 1600dp or wider — a 14.6" tablet in landscape, DeX, a desktop-sized window — the baseline every keyboard dimension is a fraction of was 0 × 0, so the window collapsed to nothing.
Autofill chips no longer take the keyboard down with them. (#287)
Rotating the screen no longer throws away a floating-button recording. (#293) The keyboard now ends only the dictations it owns.
An error's details can be read without the keyboard ducking out from under it. A focusable popup raised by an input method takes focus off the field, so the system hides the keyboard — which tears down the popup, which brings the keyboard back.
The strips above the keys keep their own scrolling. (#188, #221, #290)
A transcript with no words in it no longer gets a conversational reply instead of a result. (#124)
Original source - Aug 18, 2026
- Date parsed from source:Aug 18, 2026
- First seen by Releasebot:Aug 18, 2026
Dictate 6.0.0
DictateKeyboard releases Dictate 6.0.0 with optional Dictate Cloud credit-based transcription, broader Chinese input and offline support, seven new language dictionaries, emoji and GIF search in 51 languages, and cheaper recording uploads with faster, more flexible dictation.
Dictate 6.0.0 adds a second way in: buy credit instead of bringing your own API key. Your own key — and your own server, and models on the device — keep working exactly as before and remain the cheaper path; nothing about the app requires the new one. Alongside that: Chinese typed the way it is actually typed, seven languages that had no dictionary at all, emoji search in over forty languages, and recordings that cost less to transcribe. Updating shows a new What's-new tour for 6.0 — and every tour stays re-viewable under Settings › About.
☁️ Dictate Cloud (optional)
Buy minutes instead of finding an API key — four prepaid packs through Google Play (150, 400, 1000 and 2200 minutes; the larger ones cost noticeably less per minute, and the app shows by how much). Dictation and rewording then run through our server.
Nothing of yours is stored there. Neither your recordings nor your text are written to disk: they are passed straight to the provider and the answer comes back. What is kept is numbers — wallet id, timestamp, duration, token counts, status code, milliseconds.
The server's source is in this repository, under cloud/. The privacy policy makes claims about that server, and a claim you can read the source of is worth more than one you have to take on trust. cloud/src/meter.ts is the only file that writes anything.
No name, no email address. An account is a wallet and a recovery code, so it can be restored on a new phone — and deleted from inside the app, with what deletion leaves behind stated plainly.
Credit is seconds, and every service prices itself into them. That is the safety property rather than a simplification: a pack's price is a hard ceiling on what it can cost to serve, whatever you spend it on.
A warning before the credit runs out, a top-up button when it does, and a refusal before the microphone opens rather than after the upload.
💸 Cheaper, and no longer too long
Recordings can be sped up before upload, without your voice going higher. (#272) Most providers bill by audio length, so a recording a third shorter costs a third less. Off by default, and the row says what it is set to.
Long dictations get packed as AAC instead of being refused. (#281) Every provider's documented upload ceiling is recorded now, so the decision is made against the real limit rather than one guessed number for everybody.
Hold stop to take back a transcription that is hanging. (#270) An on-device run shows as a mark on the status rather than as a different status.
🇨🇳 Chinese (#262)
Pinyin input with a candidate row — until now the only Chinese IME was Zhengma, which hardly anyone uses. The dictionary pack downloads on demand.
SenseVoice Small on the device — an offline model actually trained on Chinese, Cantonese, Japanese and Korean, rather than a general one asked politely.
SiliconFlow as a transcription provider, reachable from mainland China.
The Chinese table is no longer scanned end to end on every keystroke, and a subtype whose table has not arrived yet says so instead of reporting itself as missing.
⌨️ Typing & languages
Seven languages gained a word list (#265) — Arabic, Bengali, Finnish, Hindi, Indonesian, Tamil and Urdu now get suggestions, spell check and autocorrect.
An Arabic word is found however it was spelled — normalised across alef, ya and ta marbuta and with diacritics ignored — and the strip stops answering with English.
Icelandic and Georgian contained the wrong languages entirely and were rebuilt. Devices already holding the broken copy get the corrected one.
Long-press characters in 19 more layouts now follow what the language actually writes, measured from real text rather than assumed. Portuguese vowels corrected (#279), and the Rusyn і key no longer offers ѣ twice, once under a Latin label.
Glide typing knows the words you added yourself. (#263)
Next-word prediction fires after a promised space too, not only after a real one. (#266)
Each dictionary is now kept strictly to its own script.
😀 Emoji & GIF
Emoji search in 51 languages. (#274) It knew six. Search for "heart", "心" or "قلب" and you land on the same emoji; the search follows your keyboard's language.
GIF search sits on the same bar as the emoji search — recents while idle, one clear button instead of two, and the caret on the left.
A swiped word reaches the search box it was typed into.
🎈 Floating button
It reads back what the input connection cannot report (#277), so it no longer flashes a green check over text that never landed.
Auto-enter aims at the right field and admits when it was refused. (#278)
It goes down with the screen instead of surviving onto the always-on display. (#269)
One refused character no longer condemns the whole dictation — the text is handed back rather than thrown away.
🎙️ Dictation & rewording
Rewording no longer translates unbidden. (#268, #276) The output language is anchored to the text, not to the language the instruction happens to be written in.
Croatian is no longer primed with an English sentence (#275), and the mic button no longer needs a second tap (#261).
When a recording never reached a provider at all, the error points at the offline engine instead of shrugging.
The crash right after updating is fixed. (#267) The floating button asked the Android version whether it could use a shader, when the question was whether this frame would reach a GPU.
🔧 Setup & your own provider
The setup wizard names four ways in, not two. (#273) On-device models download straight from the wizard — the two that fit your language, not all twenty-one — and "your own server" hands off to the editor that already existed. A keyless self-hosted endpoint no longer reads as "not set up" while dictating happily.
The Ollama editor now says it has no speech-to-text endpoint, and names both ways on.
The README has a worked self-hosting example, including the two things people trip over: the trailing /v1/, and that localhost means the phone.
Onboarding rebuilt around its illustrations; the step counter no longer jumps between steps.
🔒 Security & privacy
A private way to report a vulnerability — a SECURITY.md and GitHub's private advisory form, so a security report no longer has to start life as a public issue.
The privacy policy was rewritten for Dictate Cloud, the transcription history and GIF search.
🔋 Under the hood
An extension load no longer races against itself and deletes the cache another load is reading from. (#282)
x86_64 is shipped as well, so the app installs on emulators.
Around a dozen new test suites — audio encoding and its cost, the speed-up, the dictionary languages, the Chinese subtypes, the popup mappings, the provider-configured rule and the credit-pack savings.
Thank you to everyone who filed an issue, sent a mail or left a review — nearly every line above started as one of those. 💙
Dictate is distributed via the Google Play Store.
Original source - Aug 17, 2026
- Date parsed from source:Aug 17, 2026
- First seen by Releasebot:Aug 18, 2026
Keyboard language packs v1
DictateKeyboard adds downloadable keyboard language packs and a new Chinese Pinyin flex pack fetched on demand when the subtype is added. It also updates the reading table behind the Chinese Simplified Pinyin subtype with new sourced dictionary data.
Downloadable keyboard language packs (
.flexextensions), fetched on demand when a subtype that needs one is added. Not part of the APK.Chinese Pinyin —
net.devemperor.dictate.pinyin.flexThe reading table behind the Chinese (Simplified) — Pinyin subtype (issue #262). Built by
tools/pinyin-dict/generate.py:- Readings from CC-CEDICT (MDBG), CC BY-SA 4.0 — the generated table is a derivative and carries the same license.
- Ranking from the OPUS OpenSubtitles zh_cn frequency list.
- Words the dictionary does not list get their reading composed from per-character statistics learned from CC-CEDICT itself (98.8% accurate under leave-one-out).
- Full sources and rationale:
tools/pinyin-dict/ATTRIBUTION.md.
- Aug 14, 2026
- Date parsed from source:Aug 14, 2026
- First seen by Releasebot:Aug 14, 2026
Bigram dictionaries v1
DictateKeyboard adds per-language bigram frequency files for Tier 2 autocorrect context models.
Per-language bigram (2-gram) frequency files for the autocorrect context model (Tier 2). Generated from the Leipzig Corpora Collection (wortschatz-leipzig.de), CC BY — © Universität Leipzig / Sächsische Akademie der Wissenschaften / InfAI; Goldhahn, Eckart & Quasthoff, LREC 2012. Format: ' \t', top 60k by count.
Original source - Aug 14, 2026
- Date parsed from source:Aug 14, 2026
- First seen by Releasebot:Aug 14, 2026
Glide typing dictionaries v1
DictateKeyboard adds per-language glide-typing dictionaries, with English and German bundled and other languages downloaded on demand.
Per-language glide-typing word dictionaries (issue #127), downloaded on demand by the keyboard.
Sources / attribution
Word frequencies: OPUS — OpenSubtitles (https://opus.nlpl.eu).
Casing & spell-filter (build-time only): Hunspell + wooorm/dictionaries (https://github.com/wooorm/dictionaries), each dictionary under its own licence. he and is are built OPUS-only (their Hunspell dictionaries are AGPL / CC-BY-SA).
Details: tools/glide-dict/ATTRIBUTION.md.
English and German ship bundled in the app; every other language downloads from here. Build tooling: tools/glide-dict/.
Original source - Aug 5, 2026
- Date parsed from source:Aug 5, 2026
- First seen by Releasebot:Aug 14, 2026
Dictate 5.3.0
DictateKeyboard releases a major 5.3 update with push-to-talk mic controls, rebuilt autocorrect, on-device live transcription, and 45 restored languages. It also adds new floating button designs, smarter output options, OpenAI and self-hosted realtime support, and a refreshed What's-new tour.
Dictate 5.3.0 is about the two things you do most: talking to your phone and typing on it. The mic key can now be held like a voice message, autocorrect was rebuilt to read where your fingers actually land, on-device models write while you speak, and 45 languages that had been missing are back. Updating shows a new What's-new tour for 5.3 — and every tour stays re-viewable under Settings › About.
🎤 Push to talk
Hold the mic, release to send — like a voice message: hold the mic key and talk, let go and it goes. Slide left to throw the recording away, drag up to lock it hands-free. A quick tap still starts a recording the way it always did, so nothing you already knew stops working. Opt-in under the Dictate settings. (#235)
The held mic grows out of the key it replaces without jumping, keeps its centre wherever the key sits, and behaves the same with or without the rewording row. It works in real-time mode too, and it deliberately stays out of the classic keyboard-free layout, where the record button already owns the press.
⌨️ Typing
Autocorrect, rebuilt — corrections are now decided from the touch coordinates, searching the likely words with a beam search as you type, instead of guessing from the finished word. On our test set that moved accuracy from 88.4% to 97.9%; the difference shows up most on fast, sloppy typing. (#242)
German nouns are capitalised even when typed in lowercase. (#242)
Next-word prediction — the suggestion strip offers what usually comes next, learned from how you write, and any word can be added to your dictionary with a long press, so names and jargon stop being corrected. (#241, #245)
📴 Offline
On-device live transcription — downloadable streaming models transcribe while you speak rather than only when you finish, in ten languages (English, German, Spanish, French, Italian, Dutch, Portuguese, Swedish, Turkish and Hebrew). (#233)
Two new one-shot models — Canary 180M Flash covers English, German, French and Spanish in 207 MB, under a third of Parakeet's footprint at comparable accuracy, and GigaAM v2 is specialised in Russian. (#255)
The on-device attributions screen now covers every shipped model.
🌍 Languages
45 languages added — Croatian, Bengali, Swahili and 42 more. The catalog had gaps that had nothing to do with what the providers actually support; it is now built from what they can really do. (#252)
🎨 Interface
Two new floating-button designs, both alive rather than illustrated: Aurora (light moving inside a sphere, its temperament set by what the app is doing) and Lattice (a sphere of dots that wires itself together while idle, ripples with your voice, and twists while your text is reworded — a faithful port of thinking-orbs). Both follow your accent colour. (#253)
Every design now has the same footprint, the same distance to the screen edge whichever way it got there, and a cancel button cut from its own surface instead of a stock grey circle. (#253, #88)
Every provider carries its own logo in the settings instead of a generic cloud.
The recording indicator can be still, pulsing or voice-reactive. (#238)
Settings dialogs keep a persistent scrollbar and stop content from sliding underneath it.
🔌 Providers & your own server
OpenAI's gpt-transcribe and gpt-live-transcribe are supported, and the realtime model picker is back. (#248)
A server of your own can stream too — if it speaks the OpenAI realtime protocol under /v1/realtime, live transcription runs against it. (#249)
Wake a sleeping server — for the common self-hosting shape of a small always-on box in front of a GPU machine that sleeps, Dictate can send a throwaway request the moment a rewording is certain, so the machine has the whole dictation to boot in. Per-server and off by default. (#189)
Provider fields show the effective model instead of an empty box. (#248)
📝 Output
Prompt output can keep the original transcript beside it, so a rewording never costs you what you actually said. (#240)
Paragraphs stop breaking after abbreviations, ordinals and initials. (#239)
⌚ Wear OS (5.3.0-w4)
The watch settings no longer open the system keyboard switcher, whose text is clipped on a round display; the single remaining keyboard entry goes straight to the system input-method settings. (#106)
🔋 Under the hood
Holding the mic and sliding no longer flips the classic layout out from under a running recording. (#235, #125)
A push-to-talk hold survives the moment Compose ends its own pointer dispatch mid-press — the gesture is driven from the window's touch stream instead.
On-device model selection can be tapped by name, not just by its radio button.
Original source - Aug 4, 2026
- Date parsed from source:Aug 4, 2026
- First seen by Releasebot:Aug 14, 2026
On-device models for Dictate
DictateKeyboard adds a broad on-device model catalog for local speech-to-text, including live streaming transcription and one-shot models across many languages. It keeps audio on the phone, verifies downloads with checksums, and expands support with VAD and smart turn detection.
All on-device models
Dictate downloads at runtime, mirrored in one place so the app never depends on a third party while you are dictating. Nothing here ships inside the APK — you pick what you need in Settings → Providers → On-device, and audio never leaves your phone either way.
Every model is int8-quantised and converted to ONNX by the sherpa-onnx project (Apache-2.0). Each upstream license permits redistribution; see NOTICE.
Live / streaming — types while you speak (#233)
kroko-* — Kroko ASR community models by Banafo (CC-BY-SA), streaming Zipformer2 transducers. These drive on-device real-time transcription: text appears in the field while you are still talking. They emit punctuation and capitalisation natively.
Model
Language
Sizekroko-de-*
German
~71 MBkroko-en-*
English
~71 MBkroko-fr-*
French
~71 MBkroko-es-*
Spanish
~156 MBkroko-it-*
Italian
~156 MBkroko-nl-*
Dutch
~156 MBkroko-pt-*
Portuguese
~156 MBkroko-sv-*
Swedish
~156 MBkroko-tr-*
Turkish
~156 MBkroko-he-*
Hebrew
~156 MB
German, English and French use sherpa-onnx's own published conversion — a leaner re-export that is both smaller and more accurate than the upstream build. The rest are extracted verbatim from Banafo's .data containers, which is why their encoder is larger and decodes roughly 1.5–2× slower.
One-shot — transcribes after you stop
parakeet-tdt-0.6b-v3-* — NVIDIA Parakeet TDT 0.6B v3 (CC-BY-4.0), 25 European languages, ~670 MB. The most accurate all-rounder.
parakeet-primeline-de-* — primeline German fine-tune of the above (CC-BY-4.0), ~670 MB. Substantially better on German than the base model.
tiny/base/small-* — OpenAI Whisper (MIT), 99 languages. Base (~153 MB) is the recommended default. The *.en variants are English-only and lighter for the same accuracy on English.
Supporting models
silero_vad.onnx — Silero VAD (MIT). Splits long audio at speech pauses and powers "skip silent recordings" (#93).
smart-turn-v3.2-cpu.onnx — Smart Turn v3 semantic turn detection, used by long-form auto-split (#191).
Filenames are referenced directly from LocalModelCatalog.kt with pinned sizes and SHA-256 checksums, which the app verifies after every download. Renaming or replacing an asset here breaks installs in released app versions — add new files instead.
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.