DEV Community

SN
SN

Posted on

Building TextRecast v0.3.0: Local Windows rewriting with review before replacement

TextRecast started with a narrow goal: select text in an existing Windows application, improve it with a local model, and put the result back without sending the text to a hosted API.

Version 0.3.0 turns that experiment into a more complete Windows application. The biggest work was not adding another writing feature. It was making installation, model ownership, review, replacement, and failure recovery understandable.

The product boundary

TextRecast is intentionally focused on selected text. It is not a document manager, chat interface, writing-history database, or cloud service.

The workflow is:

  1. Select editable text in another Windows application.
  2. Click the floating TextRecast launcher.
  3. Choose Improve, Shorter, Longer, Summarize, or Tone.
  4. Review or edit the generated revision.
  5. Copy it, regenerate it, cancel, or explicitly replace the source selection.

Inference runs locally on the CPU through LLamaSharp. There is no TextRecast account and no API key.

One installer instead of a folder of files

Earlier releases used a self-contained ZIP. That avoided a separate .NET installation, but it still left users responsible for extracting the complete runtime, keeping every DLL together, and understanding first-run model setup.

v0.3.0 has one supported end-user artifact: a self-contained per-user Windows installer.

The setup flow covers:

  • welcome and version information;
  • Apache-2.0 license and privacy acknowledgement;
  • per-user destination selection;
  • explicit local-model choice;
  • a final installation summary;
  • application installation, resumable model download, and verification; and
  • completion options for launching TextRecast, adding a Desktop shortcut, and starting the floating launcher at Windows sign-in.

The installer does not contain a GGUF model. It downloads only the model the user selects, and only after Install is chosen.

Model choice without pretending there is a perfect model

The current English-only catalog contains four profiles:

Profile Model Download
Fast/default Qwen 2.5 1.5B Q4_K_M 1.04 GiB
Balanced Qwen 3.5 2B Q5_K_M 1.34 GiB
Best quality Qwen 3.5 4B Q5_K_M 2.93 GiB
Alternative Granite 4.1 3B Q5_K_M 2.27 GiB

Hardware inspection is a compatibility gate, not an automatic recommendation engine. It can disable a model that does not fit measured memory requirements, but it does not silently pick or download one.

Downloads support HTTP Range and If-Range, so a compatible partial download can resume. Before a model becomes active, TextRecast verifies its exact expected byte size and SHA-256 checksum.

Generation and replacement are separate actions

The most important workflow change is that choosing an operation no longer implies permission to overwrite source text.

The editor has two fixed areas:

  • Original selection is read-only.
  • Revised — editable contains the local model output and can be corrected before use.

Generate and Replace are separate operations. TextRecast does not return to the source application until Replace selection is chosen.

Immediately before replacement, the application checks the source window, process identity, capture age, and selected text again. A clean replacement closes the editor. If replacement fails, the editor stays open with the revision and error message.

Clipboard restoration is also treated as a visible state. If replacement succeeds but the previous clipboard contents cannot be verified after restoration, the editor remains visible so the warning is not lost.

The floating launcher is small on purpose

The launcher remains available without occupying the taskbar. Clicking it opens the editor for the current selection. Clicking it again closes the open editor without recapturing or starting another model request.

Its context menu is limited to formatting a new selection, model information, legal/privacy information, About, and Exit.

Installer ownership and recovery

The setup architecture has two layers:

  1. A small managed WPF host owns the seven-screen setup journey and model orchestration.
  2. An embedded NSIS package owns application files, uninstall registration, and the Start Menu shortcut.

Application files are staged before activation. During an upgrade, the previous complete payload is retained until the new payload and required Windows metadata succeed. Failed activation restores the previous payload when possible.

Uninstall removes the package-owned application directory and known shortcuts. Downloaded models, verified model state, and partial downloads live under the user's local application data and remain available for reinstall. They can still be removed manually after TextRecast is closed.

Verification

The final v0.3.0 source passed:

  • formatting verification;
  • a Release build with zero warnings and zero errors;
  • 177 automated tests across Core, Deployment, Infrastructure, Setup, and App projects;
  • package-content checks that reject GGUF and partial model files;
  • release-pipeline coverage for installer ownership, upgrade rollback, uninstall, and reinstall; and
  • light/dark rendered UI checks for setup and application windows.

There are still honest limitations. TextRecast currently targets Windows x64 and English rewriting, inference is CPU-based, and local models can alter meaning or details. Review is a product requirement, not a disclaimer hidden at the bottom.

Try it

Repository: github.com/snss10/TextRecast

Release: TextRecast v0.3.0

The release contains a model-free setup executable and matching SHA-256 file. The installed application is self-contained, so users do not need to install .NET 10 separately. The current Microsoft Visual C++ x64 Redistributable may still be required.

If you try it, I would especially value feedback on installation clarity, replacement behavior across different editors, and performance on different CPUs.

Top comments (0)