Skip to content
WM KeyboardWM Keyboard
Accessibility

About & diagnostics

Version, licence, and source links, where to send a bug, and a diagnostics screen for pulling a shareable report.

About has its own group on the Settings home screen: one tap gets you the build you’re running, every licence bundled into the app, and a diagnostics screen for pulling a shareable report when something needs debugging.

Screenshot pending
The About screen: Share, App, Feedback, Documentation, Third party, and Word lists groups, plus Updates on a Play build.

The Share group at the top has up to three rows: Share Play Store link, Share F-Droid link, and Share GitHub link (on Play Store builds, the F-Droid and GitHub links are omitted). Each opens the Android share sheet rather than the destination itself, pre-filled with a one-line pitch and the corresponding link (play.google.com/store/apps/details?id=com.wasimaster.wmkeyboard, f-droid.org/packages/com.wasimaster.wmkeyboard, or the GitHub repository). Pick whichever app you want to send the recommendation through.

The App group holds seven rows:

  • Version shows the edition, build type and store channel as its subtitle (“Full build (release · Play Store)”, or “Lite build (debug)” on something you sideloaded), with the build number after “code,” and the version name as the row’s trailing value. It navigates nowhere, but it isn’t quite inert: tap it seven times and you get the hidden mini game, with a toast counting you down from the fourth tap.
  • Licence shows “MIT, © 2026 Wasi Master” and opens the app’s own MIT licence text in full underneath it, monospaced and horizontally scrollable.
  • Source code opens the GitHub repository directly in your browser; unlike the Share rows above, this one navigates immediately rather than opening a share sheet.
  • Storage opens the storage screen below, which is where you see what the app keeps on your device and delete any of it.
  • Statistics opens Statistics: how much you type, day by day, plus the switch that turns the counting off.
  • Diagnostics opens the diagnostics screen covered below.
  • Run setup again walks you back through the first-run wizard. A replay changes nothing on its own, so your settings stay as they are; see Running it again.

Underneath the group, a caption spells out what the MIT licence means in practice: you can use, modify, and redistribute the app, provided the copyright notice and licence text travel with it.

Directly under that caption sits an Updates group, on Play builds only. Every other build has no updater behind it, so the group draws nothing at all and you update the way you installed: F-Droid, or a new APK.

Its first row follows whatever the updater is currently doing, and its label always matches what pressing it will do:

RowWhen you see itWhat it does
Check for updatesNothing in flight. The subtitle reads “Ask the Play Store if a newer version is out”, “Asking the Play Store…”, “This is the newest version”, or “The Play Store did not answer. Press to try again”Asks the Play Store
Download the updateA newer version is out. The subtitle names its version code and, when Play says, the download sizeStarts the download
Downloading the updateWhile it downloads. The subtitle counts bytes once Play reports themNothing; it isn’t pressable
Install the updateThe download finishedInstalls it
Installing the updateWhile it installsNothing; it isn’t pressable

Installing restarts the app and the keyboard, which the Install row says out loud, so the moment is yours to pick rather than something that happens mid-sentence.

Below the row is Ask me about updates, on by default: it lets the Play Store offer a new version when you open the app. Turn it off and nothing arrives uninvited; the update card on the settings home screen and this row are still there when you go looking. High-priority releases ask anyway. This one switch lives in its own small preferences file rather than in the main settings store, so it doesn’t travel in a settings export or a backup, but it resets like any other row.

WM KeyboardAboutStorage

Storage breaks the app’s disk use into named pieces and lets you delete them one at a time. At the top is a ring split three ways, App / Data / Cache, with your device’s own free space underneath, then the pieces themselves in six groups: The app itself, Downloads, Looks and add-ons, Your data, Caches, and The rest. Rows with nothing in them are hidden until you tap Show all.

The figures come from Android’s own storage stats rather than from adding up file sizes, so they match what Settings → Apps → WM Keyboard reports, down to the block rounding (every size on the screen is a multiple of 4 KB, which is why a thousand tiny sticker files “cost” more than their bytes). A device too old to report exact numbers gets an estimate, and says so.

Tapping a row opens that piece on its own: what it holds, how big each item in it is, and a delete button per item. Free up at the top clears every cache in one go and never touches anything you made. Deleting anything else asks first, in wording that matches what you’d lose: a cache is free to delete, a download can be fetched again, and something you made or the keyboard learned is gone for good.

A few rows worth knowing about:

  • Sticker packs lists one row per pack, plus Images you made stickers from, the photos the sticker editor keeps so you can edit a sticker again later. Deleting that row keeps every sticker and only costs you the ability to resume those edits.
  • Downloads covers the things the app fetched and can fetch again: word lists, CJK dictionaries, emoji keyword packs, and (on the full build) the speech and AI models, which are usually the biggest rows on the screen.
  • Your data is the personal end: learned words, clipboard history, snippets, AI history, and your own imported word lists. This group is also where the reset lives, and it asks twice.

Anything the app writes that no row claims lands in Other data under The rest, so nothing is invisible; a new feature that stores files is meant to add its own row rather than grow that one.

The Feedback group is where a problem goes. It has two rows:

  • Report a bug opens the project’s GitHub issue tracker in your browser (github.com/wasi-master/WMKeyboard/issues). Start here if you can: an issue is public and searchable, so someone else may have already hit the same thing, and it can be tracked to a fix rather than sitting in an inbox.
  • Email the developer opens a draft to arianmollik323@gmail.com in your mail app, pre-filled with headings for what happened, what you expected, and how to reproduce it, plus the build, Android version, and device model at the bottom. Use this when the report has anything in it you’d rather not post publicly. Only mail apps show up in the chooser, since the row uses a mailto: intent rather than a generic share.

Either way, take Diagnostics along: it names the exact build and device, and it never contains anything you typed. A phone with no mail app installed shows a toast with the address instead of opening anything.

Something a model wrote rather than a bug in the app has its own button: see Reporting a result in the AI tool.

Documentation, third-party notices, and word lists

Section titled “Documentation, third-party notices, and word lists”

Two more single-purpose groups round out the screen:

  • Documentation links to this documentation site (User guide) and to the Privacy policy page, both opening directly in your browser.
  • Third party has one row, Open-source licences, which opens the licence browser below.
  • Word lists has one row, Dictionaries, explaining that the seed bigrams, loanword map, and offensive-word list are hand-curated for this project and covered by its licence, while downloadable wordlists keep their own sources’ licences, listed under Open-source licences. Like Version, this row is informational only and doesn’t navigate anywhere. See Every wordlist for the full, filterable list of what’s downloadable per language.

Tapping Open-source licences opens a three-group screen: everything bundled into the APK, data the app can download, and the online services its tools call. Tapping a row with a bundled licence text opens it in full, monospaced and horizontally scrollable, matching the licence viewer described above; rows without a bundled text (mostly the online services) open the provider’s terms in your browser instead.

Screenshot pending
The open-source licences list, grouped by bundled components, downloadable data packs, and online services.

Bundled in the app always lists AndroidX & Jetpack Compose, Kotlin/coroutines/serialization, Coil, OkHttp & Okio, ZXing, and LuaJ, all Apache-2.0 or MIT. Full edition only adds Harper and its Rust dependencies (grammar checking), Google ML Kit (handwriting and scanning), LiteRT-LM (the local AI models), and LiteRT plus OpenAI Whisper and whisper_android (offline speech-to-text); these are features the Lite edition only build doesn’t link, so their licences don’t apply to it. A Play build adds one more, Play In-App Updates, which isn’t open source and so opens Google’s SDK terms in your browser rather than a bundled text. Both editions also list Unicode CLDR & emoji data, gemoji, OpenCC, the LSHK Jyutping table, the bundled editor colour palettes (Dracula, Nord, Solarized, Catppuccin, Tokyo Night), Google Fonts, and Inter & Manrope (the two faces the settings app itself is set in, which ship as files in the APK and so carry their own notice rather than the generic one).

That makes 21 bundled components on a full Play build and 13 on a lite F-Droid one. The gap is the seven entries gated behind grammar checking, ML Kit, the local LLM and Whisper, plus the Play updates entry: a full F-Droid build lists 20, a lite Play build 14.

Downloadable data packs (not edition-gated, since any build can fetch them) covers the frequency wordlists, offensive word lists, emoji keyword dictionaries and Noto Animated Emoji served from the WM Keyboard data repository, plus the CJK-specific conversion data: CC-CEDICT, mozc, rime-cantonese & CC-Canto, a Chinese stroke code table, and the Unicode Unihan database. Nine rows in all. A caption underneath notes these keep their upstream licences whether or not they’re actually installed on your device.

Online services lists what each network tool talks to and under what terms: Brave Search, KLIPY & GIPHY, Wikipedia, Google Translate, Open-Meteo, Frankfurter & ExchangeRate-API, Coinbase & the other coin-price sources, the Free Dictionary API, Hugging Face, and the bring-your-own-key AI providers (Anthropic, OpenAI, Google AI, xAI, DeepSeek, and whichever OpenAI-compatible service you point the escape hatch at). None of their code or data ships inside the app; see Network policy for what each one actually sends and when.

Diagnostics is where you go if something’s misbehaving and you want to send in what the keyboard recorded, or just look at it yourself. It never contains anything you typed: that’s stated as a hard design rule in the logging code’s own documentation, not just a promise in the UI copy.

Screenshot pending
Diagnostics: report actions, the app log with its filter and level chips, and Clear app log at the bottom.

The Report group has three controls:

  • Share diagnostics writes the full report to a file and sends it through the share sheet: deliberately a file rather than inline text, since a report can run to tens of kilobytes and share intents that large get silently dropped by some receiving apps.
  • Copy to clipboard copies the same report as plain text instead, with a confirmation toast.
  • Include the system log is a toggle, off by default, that adds this process’s own Android log (everything it printed, including its libraries) to the report. An info button next to it explains why it’s opt-in: unlike the app log, the keyboard doesn’t control what ends up in the system log, so it’s worth reading before you send it anywhere.

If the app has crashed since it was last cleared, a Crashes group appears above the app log showing the crash record and a Clear crashes button. It only shows up when there’s something to show.

The app log itself is a free-text filter field plus one level chip per severity (Debug, Info, Warn, Error) that keeps entries at or above the level you pick; all four are shown by default. Entries list newest first, with a timestamp and tag above each monospaced message, colour-coded by severity. A Refresh button re-reads the log without leaving the screen. Turning on Include the system log above adds another group underneath showing that raw log (the third group on the screen if no Crashes section is showing, the fourth if one is). A Clear app log button sits at the very bottom, on its own.

There are only two switches in this whole tree. Everything else is either a display-only row (Version, Dictionaries) or a read-only browser (the licence and diagnostics screens).

WM KeyboardAboutUpdates
SettingControlDefault
Ask me about updatesToggleOn
WM KeyboardAboutDiagnostics
SettingControlDefault
Include the system logToggleOff

See Privacy policy and Network policy for what the app does and doesn’t send over the network in general. Diagnostics itself never touches the network on its own, since sharing or copying the report is something you trigger and send yourself.

  • The licence-text screen’s title is always “Licence,” never the specific component’s name. Tapping into AndroidX’s Apache-2.0 text or the app’s own MIT text lands on a top bar that just says “Licence” either way, so rely on the row you tapped (or the text itself) to know which one you’re reading.
  • Several bundled components share one licence asset. All the Apache-2.0 entries (AndroidX, Kotlin, Coil, OkHttp & Okio, ZXing, OpenCC, and, on a full build, Harper and LiteRT/LiteRT-LM) open the same Apache-2.0 text rather than a per-project copy; the per-project attribution (name, what it’s used for, copyright line) is what you saw on the list row before tapping in.
  • Licence texts don’t reflow. They’re hard-wrapped at a fixed column width and rendered monospaced, so long lines scroll sideways instead of wrapping to the screen width.
  • The word-list attribution splits by kind, not by download status. The three word lists that ship as source (seed bigrams, loanword map, offensive-word list) are covered by the app’s own MIT licence; every wordlist you download separately keeps its own upstream licence, listed under Open-source licences regardless of whether you’ve actually downloaded it yet.
  • Sharing a link isn’t the same as opening one. The three Share rows always hand off to the system share sheet with a pre-filled message; Source code, Report a bug, User guide, and Privacy policy, and any row inside the licence browser without a bundled text, open a browser tab directly. Email the developer is the odd one out again: it opens a mail composer, not a browser or a share sheet.
  • A report is a draft, not a submission. Both the Feedback rows and the AI panel’s Report button hand you something to read and edit; nothing is sent until you send it, and the app has no reporting server of its own.

See Privacy at a glance for what leaves the device and when, Network policy for the tool-by-tool network breakdown referenced above, and Every wordlist for the downloadable dictionaries this page’s Word lists group points at.