Skip to content

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 09 Apr 16:03

Notepatra v0.1.2 — Windows syntax highlighting + AI model detection + Ctrl+B

Bug-fix release fixing the three issues reported against v0.1.1 on Windows. No new features, no API changes — same binaries you got before, just with the keyword colors actually painting, Ollama models actually showing up, and Ctrl+B actually jumping.

Fixed

🎨 Windows: syntax highlighting now paints keywords, strings, comments, numbers, operators

Problem: v0.1.1 loaded the correct QScintilla lexers on Windows (the test_lexers CI smoke test verified that), but in the built binary, keywords still rendered in plain black. Strings plain black. Comments plain black. Switching the Language menu to SQL, JSON, Python, etc. produced no visible change at all.

Root cause: QScintilla's built-in default per-style colors are not reliably initialized on Windows when you call setLexer() cold. The lexer's setDefaultColor() and setDefaultPaper() apply to the DEFAULT style only, not to keyword / comment / string / number styles, so those stayed at whatever un-initialized color Scintilla started with (often the same as the background).

Fix: Notepatra now explicitly paints all 128 style slots using each lexer's own description(int style) method. The description is something like "Keyword" or "Double-quoted string" or "Number" regardless of which lexer you're using, so a single palette function handles all 40+ languages without hard-coding per-lexer style constants. The palette is Notepad++'s default stylers.xml:

Style Color Face
Keywords #0000FF Blue bold
Comments #008000 Green italic
Strings #808080 Gray
Numbers #FF8000 Orange
Operators #000000 Black bold
Preprocessor #804000 Brown bold
Regex #800080 Purple
Classes/Fns #006480 Dark cyan bold

Switching language via Language → Python / JavaScript / SQL / JSON / ... now applies colors immediately. This affects all platforms but was most noticeable on Windows.

🤖 AI Assistant: Ollama model list is now dynamic

Problem: The AI panel's model dropdown shipped with a hard-coded list: qwen3.5:9b, gemma4:e4b, llama3.2:3b, codellama:7b, deepseek-coder-v2:16b, mistral:7b, starcoder2:7b. If you had Ollama running with a different model installed (which is most people — qwen2.5:7b is more common than qwen3.5:9b), the panel would either default to a model you didn't have (silently fail) or force you to type the exact name manually.

Fix: On panel creation, Notepatra now calls Ollama's /api/tags endpoint and populates the dropdown with whatever models are actually installed. Added:

  • ↻ refresh button — re-queries /api/tags on demand (handy after ollama pull)
  • Status line under the dropdown — shows Ollama: N models detected in teal, or a red error (Ollama not running. Start it: ollama serve) if the probe fails
  • Friendly guard in Send — if no real model is selected (e.g. Ollama is offline), clicking an action button prints clear setup instructions instead of hanging

🪟 Windows: Ollama availability probe

Problem: QNetworkReply::waitForReadyRead(2000) is unreliable for localhost sockets on Windows — the TCP loopback connection can complete before the Qt event loop wakes up, so error() returns an uninitialized state.

Fix: Replaced with a QEventLoop + QTimer pattern and a hard 3-second timeout. The probe now waits for QNetworkReply::finished (or the timer) and accurately reports whether Ollama responded.

⌨ Ctrl+B now actually jumps between matching braces

Problem: Ctrl+B (Notepad++'s "Go to Matching Brace" shortcut) highlighted the pair and selected the range between them — but the caret never moved. So pressing Ctrl+B again did nothing visible. Users (reasonably) thought it was broken.

Fix: goToMatchingBrace() now moves the caret past the matching brace using SCI_GOTOPOS. Press Ctrl+B on { → caret jumps past }. Press Ctrl+B again → caret jumps back past {. Notepad++ swivel behavior.

Also removed a cursor-movement hook that was clearing the brace highlight on every keystroke — that hook was actively hiding the visual feedback you wanted to see.

Verifying this release

Same pipeline as v0.1.1 — every artifact is SHA-256 checksummed in SHA256SUMS, cosign-signed with a Sigstore transparency log entry in Rekor, and has a SLSA build provenance attestation cryptographically linking it to this commit. See SECURITY.md for the verification one-liners.

Downloads

Platform Asset
Linux x64 notepatra-linux-x64.tar.gz
macOS Apple Silicon notepatra-macos-arm64.dmg
Windows x64 notepatra-windows-x64.zip

Full changelog: https://github.com/singhpratech/notepatra/blob/main/CHANGELOG.md