Skip to content

Releases

Clembot-dictate 1.3.0

Choose a tag to compare

@clemenswan clemenswan released this 05 Sep 21:24

Cleaning the clipboard now leaves something behind.

A clean can be undone. The clipboard has no undo of its own, so until now cleaning was a one-way door: a tray balloon told you what changed and then it was gone, along with the original. Every clean is recorded in the history panel now, and Restore puts the original text back on your clipboard.

A cleaned entry shows what changed, not before and after. Cleaning only ever touches characters you cannot see, so two blocks of text would render the same sentence twice and teach you nothing. The card lists the actual tally instead: 1 zero width space removed, 1 no-break space replaced. Underneath is what is sitting on your clipboard now.

Questions you asked appear too. A voice command used to be filed as a dictation whose transcript had gone missing. It is its own kind of entry now.

Clean is a control on the bar, next to History. Asking a question is not, on purpose: cleaning is one-shot and a click maps to it exactly, while asking is hold-to-talk, and a click could only mean start-then-click-again-to-stop. That is a mode, and a mode you forget you are in pastes an answer into a document.

One thing worth knowing. Recording a clean writes that clipboard text to history.json, which before this release held only your own dictations. If you clean something you would rather not keep on disk, set CLIPBOARD_CLEAN_HISTORY = False. Cleaning still works; it just cannot be undone.

Full notes in CHANGELOG.md.


Windows will show "Windows protected your PC" because the binary is unsigned. More info, then Run anyway.

Clembot-dictate 1.2.1

Choose a tag to compare

@clemenswan clemenswan released this 05 Sep 20:55

The interface now says what the app can do.

Two shipped features were invisible. Voice commands landed in 1.1.0 and clipboard cleaning in 1.2.0, and the interface mentioned neither. Searching the UI source for Ctrl and Shift returned nothing at all. Both were in the README, which is not the same as discoverable: nobody reads the README of a tool that is already installed and working.

Every shortcut is listed in two places now. A Shortcuts section at the top of Settings, which is permanent, and the history panel before your first dictation, which previously spent its whole area on one chord and a microphone glyph. Both are built from one list that reads your config, so a feature you switch off is not advertised at you.

The compact bar is deliberately unchanged. It is 44 pixels tall and its restraint is the point.

A Text section in Settings explains the invisible-character cleaning, including the part the docs are careful about: it is not watermark removal and it proves nothing about authorship. A claim that only appears in the documentation is a claim the person using the thing never sees.

Six smaller fixes came out of looking properly, all of them shipping for a while: a 34px emoji in the empty state, a 9px untracked heading, two hardcoded colours left over from a third-party theme, status messages whose bullet got letter-spaced beside the real status dot, an em dash in visible copy, and a Settings dialog that quietly cut off its last paragraph as soon as it grew.

tools/check_brand.py is new and fails the build on the mechanical version of those rules. Every one of the six was mechanically detectable and nothing was checking. It found the last three itself.

Full notes in CHANGELOG.md.


Windows will show "Windows protected your PC" because the binary is unsigned. More info, then Run anyway.

Clembot-dictate 1.2.0

Choose a tag to compare

@clemenswan clemenswan released this 04 Sep 18:26

Text hygiene, in two places.

Every dictation is stripped of invisible characters before it reaches your cursor. The AI cleanup pass runs your words through a language model, and language models emit zero-width spaces, word joiners, non-breaking spaces and narrow no-break spaces. You never see them. The next tool to read that text does: search misses, diffs light up, word counts drift. Set NORMALIZE_OUTPUT = False to turn it off.

Tap Shift and the hotkey to clean your clipboard the same way. Copy from anywhere, a chat window with an assistant in it being the obvious case, tap the chord, and the clipboard is replaced in place. A tray balloon says what changed, or says there was nothing to change. It is on the tray menu too, as Clean clipboard. It needs no model and no network, so it works while the speech model is still downloading on a fresh install.

Visible punctuation is left alone, deliberately. Em dashes, curly quotes and ellipses are ordinary characters that ordinary writing uses, and editing your prose is not this tool's job.

It is not watermark removal and it proves nothing about authorship. Text can be marked statistically, in word choice rather than in the bytes, and nothing here touches that. What it does is narrower: what you paste stops carrying invisible characters that confuse the next tool to read it.

Invisible does not mean disposable. Emoji combine with zero-width joiners, flags are built from tag sequences, and Arabic, Persian, Devanagari, Hangul and Mongolian use joiners that carry meaning. The engine keeps those and takes only free-floating carriers.

Also fixed: build.bat could not complete on a non-UTF-8 console.

Full notes in CHANGELOG.md, details in Cleaning pasted text.


Windows will show "Windows protected your PC" because the binary is unsigned. More info, then Run anyway.

Clembot-dictate 1.1.1

Choose a tag to compare

@clemenswan clemenswan released this 20 Aug 17:01

An interface pass. Same tool, considerably less noise.

Install

Download Clembot-dictate-Setup-1.1.1.exe below and run it. No admin rights, and it upgrades an existing install in place. Windows will show "Windows protected your PC" because the binary is unsigned: More info, then Run anyway.

SHA256  5a70a7c1b147f6b44be29221ddbac61b775a33b6520f0a4aca39da8dcbf137a9
Size    73.6 MiB

What changed

No more title bar. A 44px strip was carrying 32px of window chrome whose minimise and maximise buttons meant nothing for a tool that lives in the tray. The window is frameless now: drag it by the bar, and it stays above your other windows since it no longer has a taskbar entry to find it with.

A palette of its own. The interface was painted in Catppuccin Mocha, a third-party developer theme. It now uses a warm dark palette with a forest green accent, derived from the Wanessa Labs system rather than borrowed. Every text colour was measured against its background: the lowest ratio in the app is 5.1:1, comfortably past AA.

Icons instead of emoji. The header was built from ●, ▼, ⚙, ⟳, 📋 and ✕. Those render differently on every machine and take the system emoji font's colour rather than the app's. They are drawn now, at one stroke weight.

History cards fit their contents. Every entry used to be padded to three lines whether it needed them or not, so a full panel showed one and a half entries. The cause was real: a card built before the panel was open had no width yet, so a one-line transcript measured as three and stayed that way. Two entries now fit where one and a half did.

Type has a scale. Four sizes, one family, and state words set as spaced uppercase labels. It was previously drawing from four sizes at three weights with no system behind the choice.

The tray icon is on the palette too, green when idle and red while recording, rather than the slate it was before.

Notes

  • Windows 10 and 11 only.
  • Audio is still transcribed on your machine and never written to disk.
  • Voice commands (Ctrl with the hotkey) still need the local sidecar, which is not published yet, and still fall back to ordinary dictation without it.
  • Full documentation: README, setup, troubleshooting.

Clembot-dictate 1.1.0

Choose a tag to compare

@clemenswan clemenswan released this 20 Aug 05:38

Hold a key, speak, release. Your words land at your cursor in any Windows app, transcribed locally.

Install

Download Clembot-dictate-Setup-1.1.0.exe below and run it. It installs to %LOCALAPPDATA%\Programs\Clembot-dictate, no admin rights needed, and upgrades an earlier install in place.

Windows will show "Windows protected your PC", because the binary is not code signed. Click More info, then Run anyway. Once per machine. If you would rather not, run from source: it is the same code.

The speech model (about 75 MB) downloads on first launch.

SHA256  783547bd73339632c2b9e19c7c909f0cb278fd047a52f8b15b93e52f7c8f8421
Size    73.6 MiB

Antivirus products flag freshly built PyInstaller bundles fairly often, because the packaging pattern resembles what packers do. Nothing here is obfuscated and the full source is in this repository.

What is new

Voice commands, optional and currently dormant. Holding Ctrl with the hotkey turns the gesture into a spoken question rather than pasted text, answered by a local sidecar process. That sidecar is a separate project which is not published yet, so on a fresh install a Ctrl-held utterance simply falls back to ordinary dictation and the tray says why. Nothing breaks; the feature waits.

Fixed: the update check had never worked. It sent Python's default urllib user agent, which the WAF in front of the version manifest rejects with a 403 on every path, and the check swallows exceptions by design. It had failed silently since the day it was written. It now sends a named agent.

That fix only helps going forward. A 1.0.0 install cannot see this release, because the copy doing the looking still has the broken check. Upgrading to 1.1.0 is a manual download this once.

Added a release preflight (tools/check_release.py) that compares every file naming a version and probes the update endpoint using the agent read out of the shipping module, since checking with a different client than the app uses proves nothing about the app.

Notes

  • Windows 10 and 11 only.
  • Audio is transcribed on your CPU and never written to disk. The optional text-cleanup pass is the only thing that can touch the network, and the default backend for it is local.
  • Full documentation: README, setup, troubleshooting.