Skip to content

Releases: CW-Codewalnut/typemate-downloads

TypeMate v1.11.0

Choose a tag to compare

@Ranjan-Bhagat Ranjan-Bhagat released this 19 Sep 04:12

Summary

TypeMate 1.11.0 is a stability and polish release. On the Mac, the two biggest problems reported against 1.10.0 are fixed: the app no longer crashes during dictation, and dictating no longer replaces what you had copied (the transcript is now typed into the field you are in; the clipboard is never touched). The mic button on the Dictate page now works the way it looks: tap to start, tap again to stop. Settings gains a Delete all data control on every platform. The Insights page is simpler and shows a figure only once the history can back it, with a reworked Words a minute card that compares your speed with typing by hand. A stuck speech model download can be cancelled from the app, and a download interrupted by a lost connection stays on screen and continues on its own when the connection returns. Every way of dictating now stops at the same ten-minute limit (the Android floating mic used to stop at two).

Windows downloads are the Setup installer and the MSIX package; the portable zips are no longer published.

Changes

  • macOS: no more crashes during dictation. The dictation pill is now drawn by the app itself instead of running separately alongside it, which was the cause of every crash reported since 1.10.0 shipped.
  • macOS: the transcript is typed into the focused field instead of being pasted, so your clipboard keeps what you copied. The Accessibility card now asks macOS for the permission first, so TypeMate appears in the Accessibility list with a switch to turn on.
  • In-app mic: tap to start listening, tap again to stop and transcribe. The pill reads "Listening... tap to stop"; the ready hint on phones says "Tap the mic, speak, then tap again."
  • Settings > Your data: a Delete all data button, with confirmation, on every platform. It removes the dictation history, settings, downloaded speech models and the error log, and the app carries on as a fresh install without closing. On Linux and macOS the panel also says that uninstalling leaves this data behind.
  • Insights: three cards and one chart. Words dictated (total, today, number of dictations); Words a minute, shown after a minute of dictation and compared with typing by hand at 40 words a minute; Typing time saved, shown once it has saved you at least five minutes of typing; and a words-per-day chart for the last 14 days. The streak, heatmap, sessions and words-per-minute gauge are gone, and every figure is in bold.
  • Model downloads: a Cancel button while a download runs, waits or has failed, a waiting-for-a-connection state while the network is away, failed and interrupted downloads stay visible with Resume and Cancel, a download cut off by a lost connection continues under the same card when the connection returns, and after Delete all data the download card starts at 0% instead of flashing the previous download's 100%.
  • Dictation limit: ten minutes on every surface (in-app mic, desktop shortcut, Windows floating mic, Android floating mic, iOS keyboard); the Android floating mic used to stop after two.
  • Android: the floating mic's accessibility disclosure now ends in "Agree and open settings" and "No thanks", as Google Play requires; the sheet stays open until you choose one of the two.
  • Windows: the Delete all data confirmation stays inside the app window.
  • Windows downloads: the portable x64 and ARM64 zips are dropped; the Setup installers and the signed MSIX packages remain.

Verification

All local, on the release code (1.11.0+20, commit bf32745; the one commit after it is a backlog note). CI was down for every workflow from 2026-09-18 (startup failure before any job ran), so every artifact on this release was built by hand on the same machines and toolchains the release workflow uses, Flutter 3.47.0 throughout, and uploaded by hand.

  • Full unit and widget suite green on the Mac: 710 passed, 2 skipped; analyzer and formatter clean.
  • Kotlin accessibility-service suite green on the Windows laptop: 62 tests, 0 failures.
  • Windows desktop e2e suite on the laptop, run in the interactive session: 12 of 13 files green (smoke, delete all data, denoiser, dictation, dictation failure, settings, whisper engine survival, platform defaults; the iOS, Linux and macOS files skip on Windows as designed). desktop_model_download_test passed 3 of 4: the "no reachable server says it is waiting" case fails on its card-text read, twice in a row, because the test's wait returns on the download's momentary first status; the same case passes on macOS, on the Ubuntu VM and on the Windows ARM VM (PR #82), and the waiting state and its Cancel are pinned by the unit suite. Recorded in docs/BACKLOG.md with the fix. The laptop desktop was locked while the suite ran; every focus check still passed.
  • Windows overlay app-mode e2e green on the laptop: exit 0, 19 checks, survived 80 pill transitions under GC churn, overlay never takes focus.
  • Android e2e suite on the MuMu emulator (Android 15): 9 passed, 15 skipped (desktop-only and iOS-only tests), 0 failed.
  • Linux e2e suite under WSL on the laptop: 11 of 13 files green; the two that cannot pass under WSL (linux_text_insertion_test, WSLg takes no xdotool input; desktop_model_download_test, WSL has no NetworkManager) both passed on the Ubuntu VM (1/1 and 4/4).
  • Linux overlay app-mode e2e green on the Ubuntu 26.04 ARM VM: exit 0, 19 checks, OVERLAY-E2E OK.
  • Linux desktop scripts on the same VM, release build: features.sh 11/11 (window, autostart entry, settings location, download with the window closed, shortcut and pill while hidden, single instance); dictate.sh typed a real dictation into another window and saved it to History, word-perfect on the second run (the first heard "PipeMate" for "TypeMate" on the synthetic clip; VMs cannot judge accuracy); multimon.sh 3/3 single-monitor checks, its 3 two-monitor checks need a second output this VM does not have.
  • macOS on the MacBook Pro: release build packed to TypeMate-v1.11.0-macos-preview.dmg (Info.plist 1.11.0/20, on-demand models stripped); the overlay app-mode e2e passed on the real desktop (24 checks, 80 pill transitions, engine window never visible or key). The stress-loop crash that hit this e2e at 1.10.0 went away with the second engine.
  • iOS: flutter build ios --release --no-codesign packed to TypeMate-v1.11.0-ios-unsigned.ipa with the keyboard extension inside (app and extension both 1.11.0/20); the keyboard-session e2e passed on the iPhone 17 simulator (5 tests).
  • Windows x64 on the laptop: TypeMate-Setup-v1.11.0.exe (Inno Setup 6.7.3) and the signed sideload TypeMate-v1.11.0-x64.msix (signer CN=CodeWalnut, identity Version 1.11.0.20, x64), plus the public certificate.
  • Windows on ARM on the Windows 11 ARM64 VM: TypeMate-Setup-v1.11.0-arm64.exe (every binary AA64) and the signed TypeMate-v1.11.0-arm64.msix (identity Version 1.11.0.20, arm64).
  • Linux x86_64 under WSL, clean build: typemate_1.11.0_amd64.deb (Version 1.11.0, amd64, on-demand models stripped) and TypeMate-v1.11.0-x86_64.AppImage, which launched under WSLg and started the English engine.
  • Android on the Mac: TypeMate-v1.11.0-android.apk signed with the release upload key (CN=TypeMate, O=CodeWalnut; not debug-signed), versionCode 20.
  • Not proven: none of the installers was installed on a fresh machine this time (build, signing and version read-backs only); nothing on a real iPhone; neither Apple artifact is signed, so the dmg needs a right-click Open and the ipa needs re-signing.

Checklist — check off before requesting review

  • Unit/widget tests cover the components and helpers I touched,
    including negative and edge cases.
  • End-to-end coverage: the e2e suites in integration_test/
    exercise my change, or I extended them where the user-visible
    flow changed.
  • I manually verified the change in the running app on at least
    one target OS (not just tests).
  • Analyzer and formatter are clean; no lint issues suppressed
    without a comment explaining why.
  • I removed dead code, debug leftovers, and non-descriptive
    comments from the files I touched.
  • Every linked issue this PR claims to fix is actually resolved
    by it (verified, not assumed).
  • Nothing visible is a placeholder: every control, tab, and
    metric added by this PR works.
  • Docs (README / CLAUDE.md / docs/DESIGN.md) are updated where
    behavior or process changed.
  • Release PRs only: version bumped in pubspec.yaml, and this
    description is written to serve as the release notes.

TypeMate v1.10.0

Choose a tag to compare

@Ranjan-Bhagat Ranjan-Bhagat released this 15 Sep 16:40

Summary

TypeMate 1.10.0 brings TypeMate to Apple devices. On a Mac, dictation now works end to end: hold the Globe (Fn) key or your shortcut, speak, and the text lands in the app you are using. The app keeps running from a mic icon in the menu bar when you close its window, the Dictate page tells you exactly which permissions the Mac still needs, and the dictation pill shows on the display you are working on, over full-screen apps too. On iPhone and iPad, TypeMate arrives with in-app dictation in every language and the TypeMate keyboard, which lets you dictate into any app: open TypeMate once, switch to the TypeMate keyboard anywhere, tap the mic, speak, and the words are typed where you are. On Linux, the overlay no longer flashes a full-screen window at startup or shows an empty pill, and a microphone that cannot start is reported at the key press instead of being blamed on transcription later. Linux now comes as two downloads, a .deb for Debian and Ubuntu and a portable AppImage; the .rpm and the .tar.gz are no longer published, and Linux builds are tested on Debian-based systems.

Windows on ARM laptops (Snapdragon X and friends) get their own native installer, TypeMate-Setup-v1.10.0-arm64.exe, instead of running the Intel build under emulation; on the ARM test machine the English engine loads four times faster natively. The x64 installer keeps its name and still works everywhere.

The Mac build ships as an unsigned preview disk image (drag to Applications; right-click, Open on first launch), and the iOS build is an unsigned package for developers; both become signed downloads once TypeMate's Apple Developer team access lands.

Changes

  • macOS: dictation works (Mac recordings are now accepted by the speech engines); Globe (Fn) key hold-to-dictate; permission cards for the microphone and Accessibility; menu-bar icon with Open and Quit, close hides the window, a Dock click brings it back; the pill appears over full-screen apps and on the display you are dictating on; native Mac window chrome and key names.
  • Windows on ARM: a native ARM64 build with native speech engines, shipped as TypeMate-Setup-v1.10.0-arm64.exe and TypeMate-v1.10.0-windows-arm64.zip; the ARM64 installer refuses Intel machines, the x64 installer is unchanged.
  • iPhone and iPad: the TypeMate app (in-app dictation saved to History, every language, on-demand model download) and the TypeMate keyboard for dictating into other apps through a keyboard session.
  • Linux: no more full-screen "Unnamed Window" flash at startup and no empty pill; a recorder that cannot start fails the key press with the real reason.
  • Linux downloads: a .deb and an AppImage only (the AppImage keeps its launch-at-login entry valid, since it runs from a temporary mount); the .rpm and the portable .tar.gz are dropped.
  • All desktops: a recording is only rewritten when its header needs it, and Windows recordings are left untouched.
  • Model downloads use the released upstream downloader package instead of our fork (the fix we contributed is now upstream; downloads behave the same, and a Linux machine without NetworkManager sees one harmless connectivity error in its log at start).
  • Every release now also builds the unsigned iOS package alongside the macOS preview, and the macOS preview is a .dmg rather than a zip.

Verification

All local, on the release code (1.10.0+19), per the release gate. The Windows and Linux VM runs were made on the version-bump commit; the two commits after it touch only the release workflow and one test file's skip guard, and the Android re-run below covers that file.

  • Full unit and widget suite green (634 tests) with the upstream downloader package; analyzer and formatter clean.
  • Kotlin accessibility-service suite green on the Windows machine: 58 tests, 0 failures.
  • Windows desktop e2e suite green, run in the laptop's interactive session: all 8 applicable files passed (smoke, denoiser, model download, dictation, dictation failure, settings, whisper engine survival, platform defaults); the iOS, Linux and macOS files skip on Windows as designed.
  • Windows overlay app-mode e2e green: exit code 0, 19 checks, survived 80 pill transitions under GC churn, overlay-never-takes-focus held throughout.
  • Android e2e suite on the MuMu emulator (Android 15): 8 passed, 9 desktop-only tests skipped, zero real failures. The one red file was the macOS permission-cards test erroring in its setup instead of skipping; fixed in this PR and re-run on MuMu (2 skipped, exit 0).
  • Linux e2e suite under WSL: 9 of 11 files green (smoke, denoiser, dictation, dictation failure, settings, whisper engine survival, platform defaults; iOS and macOS files skip). Two files cannot pass under WSL and were run on the Ubuntu VM instead, both green there: linux_text_insertion_test (xdotool cannot type into WSLg's windows) and desktop_model_download_test (WSL has no NetworkManager, and the new downloader release checks connectivity through it on Linux). A throwaway probe under WSL confirmed a download still completes on a Linux without NetworkManager; the connectivity error is only logged. Recorded in docs/BACKLOG.md.
  • Linux overlay app-mode e2e green on the Ubuntu 26.04 ARM VM: exit 0, 19 checks, OVERLAY-E2E OK.
  • Linux desktop scripts on the same VM, release build: features.sh 11/11 (autostart entry, settings location, download with the window closed, shortcut and pill while hidden, single instance); dictate.sh typed a real dictation into another window and saved it to History (the only miss is "PipeMate" for the invented word "TypeMate", a recognition slip on a virtual microphone, and VMs cannot judge accuracy); multimon.sh passed its 3 single-monitor checks, and its 3 two-monitor checks need the Fedora VM's second output, which this VM does not have.
  • macOS on the MacBook Pro: release build with the AOT gate succeeds and packs to TypeMate-v1.10.0-macos-preview.dmg (49 MB disk image with an Applications shortcut, on-demand models stripped, Info.plist 1.10.0/19; CI dry run of the macOS job green); the permission-cards e2e passed (2 tests) on real hardware; the overlay app-mode e2e passed its 15 checks and then hit the known pre-existing stress-loop crash recorded in docs/BACKLOG.md (unchanged by this release).
  • iOS: flutter build ios --release --no-codesign succeeds with the keyboard extension inside (PlugIns/TypeMateKeyboard.appex), packs to TypeMate-v1.10.0-ios-unsigned.ipa (20 MB, app and extension both 1.10.0/19); the keyboard-session e2e passed on the iPhone 17 simulator (5 tests, real bridge, real Darwin notifications).
  • Windows on ARM (merged in dev as #75): release build, all 8 Windows e2e files and the overlay e2e green natively on the Windows 11 ARM64 VM; the ARM64 installer built, installed and started there with the English engine loading in 4.0 s (17.6 s for x64 under emulation on the same VM); a CI dry run of the new windows-11-arm builder produced an all-ARM64 artifact; x64 builds re-verified byte-identical for the speech libraries. What the window looks like on ARM is unproven: the VM has no 3D display driver, and the shipped x64 v1.9.0 is blank there too.
  • Linux packaging (merged in dev as #76): the AppImage passed the VM desktop scripts on the Ubuntu VM (11/11 features, a real dictation typed into another window), built and ran under WSL on x86_64 with the pinned tool and runtime, and a CI dry run of the Linux builder produced both files.
  • Not proven: nothing on a real iPhone (no signing yet; the real-device risks are in docs/BACKLOG.md), and neither Apple artifact is signed, so the Mac zip needs a right-click Open and the .ipa needs re-signing to install.

Checklist — check off before requesting review

  • Unit/widget tests cover the components and helpers I touched,
    including negative and edge cases.
  • End-to-end coverage: the e2e suites in integration_test/
    exercise my change, or I extended them where the user-visible
    flow changed.
  • I manually verified the change in the running app on at least
    one target OS (not just tests).
  • Analyzer and formatter are clean; no lint issues suppressed
    without a comment explaining why.
  • I removed dead code, debug leftovers, and non-descriptive
    comments from the files I touched.
  • Every linked issue this PR claims to fix is actually resolved
    by it (verified, not assumed).
  • Nothing visible is a placeholder: every control, tab, and
    metric added by this PR works.
  • Docs (README / CLAUDE.md / docs/DESIGN.md) are updated where
    behavior or process changed.
  • Release PRs only: version bumped in pubspec.yaml, and this
    description is written to serve as the release notes.

TypeMate v1.9.0

Choose a tag to compare

@Ranjan-Bhagat Ranjan-Bhagat released this 01 Sep 15:08

Summary

TypeMate 1.9.0 makes dictation land where you meant it and downloads behave like a product. On Android, dictating with the cursor in the middle of your text now inserts at the cursor instead of the end of the field, exactly like typing. Model downloads got a full overhaul: every download names the language it belongs to, in the app and in the phone's notifications; a download you switch away from stays visible with its own progress card; a download interrupted by anything, including updating the app, finishes itself the next time the app opens; and downloading several models at once can no longer break any of them or shuffle the notifications. On Windows, a crash that killed the app the first time Hindi, Hinglish, or Tamil was used is fixed, installing an update no longer hangs while the app is running, and uninstalling now offers to delete your dictation history, settings, and models, so removing TypeMate can really remove everything. The product is also now one identity everywhere: TypeMate, under com.codewalnut.typemate.

Changes

  • Android dictation inserts at the cursor, replacing selected text the way typing does (WhatsApp keeps its special insertion route, unchanged).
  • Model downloads name their language in the app's cards and the Android notification; concurrent downloads each keep their own stable notification.
  • A download left running after switching languages, closing the app, or updating the app stays visible and completes itself; nothing sits at "download required" with the model already on disk.
  • Fixed the Windows crash on first use of any whisper language (Hindi, Hinglish, Tamil).
  • Windows installs and uninstalls close the running tray app themselves instead of hanging; uninstall asks whether to also delete your data (keeping it is the default and silent uninstalls always keep it).
  • One name and one identity on every platform: TypeMate, com.codewalnut.typemate; upgrades clean up the old "Type Mate" shortcuts automatically.

Verification

All local, on the release code (1.9.0+18), per the release gate:

  • Full unit and widget suite green (531 tests); analyzer and formatter clean.
  • Kotlin accessibility-service suite green (fresh forced rerun at the release version).
  • Windows desktop e2e suite green: all 8 files, including the real-engine whisper test that guards the Windows crash fix; the overlay-window file correctly skips on Windows because its coverage there is the app-mode e2e.
  • Overlay app-mode e2e green: exit code 0, survived 80 pill transitions under GC churn, and the overlay-never-takes-focus invariant held.
  • Linux e2e suite green under WSL: all 8 files, including the whisper engine test on the POSIX side.
  • Overlay window e2e green on its canonical host, the Lubuntu VM (both tests, GUI-booted). Investigation note: the suite fails under a HEADLESS VirtualBox boot (no accelerated graphics for the variant rendering); a bisect against the historically green commit proved the release code was never at fault. The VM must boot with its GUI for this suite.
  • Android e2e suite green on the MuMu emulator: 5 files passed, 4 desktop-only files correctly skipped, zero failures. The cursor fix, concurrent downloads, interrupted-download self-completion, and notification ordering were additionally verified by hand on a real Galaxy S25 during this cycle.
  • Windows install, upgrade, and uninstall flows verified live: fresh install, upgrade over the RUNNING officially released v1.8.1 (app closed automatically, no stall, old-name shortcuts migrated), interactive uninstall with the data prompt, and silent uninstall keeping data.
  • Identity and label read back from real built artifacts on every platform: APK package com.codewalnut.typemate labeled TypeMate; Windows exe CompanyName CodeWalnut, ProductName TypeMate; Linux binary carrying com.codewalnut.typemate with menu entry TypeMate; MSIX manifest Identity CodeWalnut.TypeMate, DisplayName TypeMate, version 1.9.0.18.
  • Runner note for the record: flutter test integration_test in directory mode fails to relaunch the app between files on both desktop hosts; every suite above ran file-by-file, which is solid.

Checklist — check off before requesting review

  • Unit/widget tests cover the components and helpers I touched,
    including negative and edge cases.
  • End-to-end coverage: the e2e suites in integration_test/
    exercise my change, or I extended them where the user-visible
    flow changed.
  • I manually verified the change in the running app on at least
    one target OS (not just tests).
  • Analyzer and formatter are clean; no lint issues suppressed
    without a comment explaining why.
  • I removed dead code, debug leftovers, and non-descriptive
    comments from the files I touched.
  • Every linked issue this PR claims to fix is actually resolved
    by it (verified, not assumed).
  • Nothing visible is a placeholder: every control, tab, and
    metric added by this PR works.
  • Docs (README / CLAUDE.md / docs/DESIGN.md) are updated where
    behavior or process changed.
  • Release PRs only: version bumped in pubspec.yaml, and this
    description is written to serve as the release notes.

TypeMate v1.8.1

Choose a tag to compare

@Ranjan-Bhagat Ranjan-Bhagat released this 28 Aug 07:20

TypeMate 1.8.1 restores speech model downloads. The app now fetches its speech models and Linux helper tools from TypeMate's own storage, so on-demand language downloads and the Android first-run download work again for every language.

  • Speech models and the Linux capture/typing tools download from typemate.codewalnut.com, with the same integrity verification as before.
  • After updating, the selected language's speech model may download once more; older downloaded files are no longer used.
  • No feature or behavior changes beyond download hosting.

Assets

Choose a tag to compare

@Ranjan-Bhagat Ranjan-Bhagat released this 28 Aug 07:15

Files served through typemate.codewalnut.com. Names are internal ids; do not rename or delete anything here, released apps depend on these exact URLs.