v0.1.2
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/tagson demand (handy afterollama pull) - Status line under the dropdown — shows
Ollama: N models detectedin 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