diff --git a/.github/workflows/indexnow.yml b/.github/workflows/indexnow.yml index 908fd54..d150061 100644 --- a/.github/workflows/indexnow.yml +++ b/.github/workflows/indexnow.yml @@ -45,13 +45,8 @@ jobs: - name: Note on Google (its ping endpoint no longer exists) run: | - # Google deprecated this in 2023 — they recommend Search Console. - # We try anyway because it's a free no-op if it fails. - # Google retired the sitemap ping endpoint in June 2023; it now - # returns 404, so calling it was doing nothing. Google discovers - # the sitemap from robots.txt and re-crawls on its own schedule — - # the only manual lever is Search Console > Sitemaps / URL - # Inspection, which needs an authenticated human. IndexNow above - # still covers Bing, Yandex, Seznam and Naver. - && echo "✓ Google sitemap ping accepted" \ - || echo "::warning::Google sitemap ping failed (expected since 2023; use Search Console)" + # Google retired the sitemap ping endpoint in June 2023 (it now + # returns 404). Google discovers the sitemap from robots.txt; the + # only manual lever is Search Console. IndexNow above still covers + # Bing, Yandex, Seznam and Naver. + echo "Google: no ping endpoint — use Search Console > Sitemaps" diff --git a/README.md b/README.md index 63baf5f..4bf28c5 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@
The first code editor built for the AI era.
- C++ + Rust · ~12 MB bare native executable · Zero Electron · 238 file types · 82 language lexers · Local AI formatters · MCP server + C++ + Rust · ~13 MB bare native executable · Zero Electron · 238 file types · 82 language lexers · Local AI formatters · MCP server
MCP: notepatra-mcp now ships a prebuilt signed Windows sidecar and a one-click Claude Desktop bundle — connect Claude Desktop, Claude Code, OpenAI Codex, and any MCP client to the running editor. 49 tools (Git, read-only SQL, saved-connection queries, charts, Noter notes); every write human-approved in-window; nothing leaves your machine.
@@ -51,7 +51,7 @@ Not a port. Not a wrapper. Something new — **for everyone**.
I asked: **what would a small native code editor look like if it was built today, in 2026, when AI is part of every developer's workflow, and ran natively on Linux + macOS + Windows from one codebase?**
-The answer: a tiny native executable — ~12 MB bare (~12.6 MB on Linux x64) on every platform — with a Rust-powered core, Scintilla editing engine, and local-first AI integration (cloud backends optional). v0.1.129 downloads: 4.4 MB Linux x64 (tarball, Qt from the system), 27.7 MB on macOS (DMG with bundled Qt), 32.8–43.0 MB on Windows (MSI/zip/setup.exe with bundled Qt DLLs). An editor that can fix your broken JSON with regex in milliseconds — and when regex isn't enough, it asks your AI to figure it out — local by default, six cloud backends one click away when you want a frontier model. No telemetry. No subscription. No mandatory API key.
+The answer: a tiny native executable — ~13 MB bare (~13.4 MB on Linux x64) on every platform — with a Rust-powered core, Scintilla editing engine, and local-first AI integration (cloud backends optional). v0.1.129 downloads: 4.7 MB Linux x64 (tarball, Qt from the system), 28.0 MB on macOS (DMG with bundled Qt), 32.8–43.9 MB on Windows (MSI/zip/setup.exe with bundled Qt DLLs). An editor that can fix your broken JSON with regex in milliseconds — and when regex isn't enough, it asks your AI to figure it out — local by default, six cloud backends one click away when you want a frontier model. No telemetry. No subscription. No mandatory API key.
Notepatra started on Linux — because that's where the gap was. But great tools shouldn't have borders. **Notepatra runs on Linux, Windows, and macOS.** Same codebase. Same features. No one gets left behind.
@@ -299,7 +299,7 @@ Full tool reference, Claude Desktop / Agents SDK snippets, security model, and h
**Why this hybrid?**
- **C++** because Qt and QScintilla are C++ — zero friction for UI
- **Rust** because file I/O, text processing, and parsing must never crash — Rust's ownership system guarantees memory safety
-- **Result**: the speed of C++, the safety of Rust. The bare executable is **~12 MB** on every platform (~12.6 MB Linux x64, similar on macOS / Windows). Latest v0.1.129 download sizes: **4.4 MB** Linux x64 tar.gz · **4.1 MB** Linux ARM64 tar.gz · **27.7 MB** macOS DMG (with bundled Qt) · **43.0 MB** Windows MSI · **32.8 MB** Windows NSIS · **37.4 MB** Windows portable zip. _Installed footprint on Windows is ~75-85 MB after the MSI extracts bundled Qt + QScintilla DLLs — normal for any Qt-based installer._
+- **Result**: the speed of C++, the safety of Rust. The bare executable is **~13 MB** on every platform (~13.4 MB Linux x64, similar on macOS / Windows). Latest v0.1.129 download sizes: **4.7 MB** Linux x64 tar.gz · **4.4 MB** Linux ARM64 tar.gz · **28.0 MB** macOS DMG (with bundled Qt) · **43.9 MB** Windows MSI · **33.0 MB** Windows NSIS · **37.8 MB** Windows portable zip. _Installed footprint on Windows is ~75-85 MB after the MSI extracts bundled Qt + QScintilla DLLs — normal for any Qt-based installer._
---
@@ -323,18 +323,18 @@ That's it. Auto-detects your OS, downloads the right binary, installs it, adds t
| Platform | Download | Size | What's inside |
|---|---|---|---|
-| 🐧 **Linux x64** | [`.tar.gz`](https://github.com/singhpratech/notepatra/releases/latest) | **4.4 MB** | Bare `notepatra` binary. Qt5 from your distro. |
-| 🐧 **Linux ARM64** | [`.tar.gz`](https://github.com/singhpratech/notepatra/releases/latest) | **4.1 MB** | Bare `notepatra` binary for `aarch64` / ARM64 Linux. |
-| 🍎 **macOS Apple Silicon** (M1–M4) | [`.dmg`](https://github.com/singhpratech/notepatra/releases/latest) | **27.7 MB** | `Notepatra.app` with Qt frameworks bundled. Drag to Applications. |
-| 🪟 **Windows x64 (MSI)** | [`.msi`](https://github.com/singhpratech/notepatra/releases/latest) | **43.0 MB** | WiX-built MSI. Per-machine install, upgrade-code handled, file-type associations for `.txt`, `.log`, `.md`, `.json`, `.py`, `.cpp` etc., adds Notepatra to PATH. Best for enterprise / SCCM deploy. |
-| 🪟 **Windows x64 (installer)** | [`.exe`](https://github.com/singhpratech/notepatra/releases/latest) | **32.8 MB** | NSIS installer. Registers in Settings → Apps → Installed apps. Uninstall via Control Panel works. |
-| 🪟 **Windows x64 (portable)** | [`.zip`](https://github.com/singhpratech/notepatra/releases/latest) | **37.4 MB** | `notepatra.exe` + Qt DLLs + QScintilla DLL. Unzip and run anywhere. No installer, no registry. Optional: double-click `register-associations.bat` inside the zip to add Notepatra to the "Open with" menu for `.txt`/`.md`/`.py`/`.json`/etc. — HKCU only, no admin needed. Undo with `unregister-associations.bat`. |
+| 🐧 **Linux x64** | [`.tar.gz`](https://github.com/singhpratech/notepatra/releases/latest) | **4.7 MB** | Bare `notepatra` binary. Qt5 from your distro. |
+| 🐧 **Linux ARM64** | [`.tar.gz`](https://github.com/singhpratech/notepatra/releases/latest) | **4.4 MB** | Bare `notepatra` binary for `aarch64` / ARM64 Linux. |
+| 🍎 **macOS Apple Silicon** (M1–M4) | [`.dmg`](https://github.com/singhpratech/notepatra/releases/latest) | **28.0 MB** | `Notepatra.app` with Qt frameworks bundled. Drag to Applications. |
+| 🪟 **Windows x64 (MSI)** | [`.msi`](https://github.com/singhpratech/notepatra/releases/latest) | **43.9 MB** | WiX-built MSI. Per-machine install, upgrade-code handled, file-type associations for `.txt`, `.log`, `.md`, `.json`, `.py`, `.cpp` etc., adds Notepatra to PATH. Best for enterprise / SCCM deploy. |
+| 🪟 **Windows x64 (installer)** | [`.exe`](https://github.com/singhpratech/notepatra/releases/latest) | **33.0 MB** | NSIS installer. Registers in Settings → Apps → Installed apps. Uninstall via Control Panel works. |
+| 🪟 **Windows x64 (portable)** | [`.zip`](https://github.com/singhpratech/notepatra/releases/latest) | **37.8 MB** | `notepatra.exe` + Qt DLLs + QScintilla DLL. Unzip and run anywhere. No installer, no registry. Optional: double-click `register-associations.bat` inside the zip to add Notepatra to the "Open with" menu for `.txt`/`.md`/`.py`/`.json`/etc. — HKCU only, no admin needed. Undo with `unregister-associations.bat`. |
-> ⚠ **Download size vs. installed size are different.** The numbers above are **download sizes** — the `.msi` / `.dmg` / `.tar.gz` files you grab from GitHub Releases. After install, the on-disk footprint is larger because the installer extracts the bundled Qt DLLs, QScintilla DLL, and Rust core library out of the compressed payload. **Typical installed size on Windows: ~75-85 MB.** Linux installs are still tiny (~12 MB on disk) because Qt5 comes from your distro repo, not the tarball. macOS Notepatra.app on disk is ~50-60 MB after `xattr` removal.
+> ⚠ **Download size vs. installed size are different.** The numbers above are **download sizes** — the `.msi` / `.dmg` / `.tar.gz` files you grab from GitHub Releases. After install, the on-disk footprint is larger because the installer extracts the bundled Qt DLLs, QScintilla DLL, and Rust core library out of the compressed payload. **Typical installed size on Windows: ~75-85 MB.** Linux installs are still tiny (~13 MB on disk) because Qt5 comes from your distro repo, not the tarball. macOS Notepatra.app on disk is ~50-60 MB after `xattr` removal.
> **Lite vs Full.** The downloads above are the default **Lite** build. Each release also ships an opt-in **Full** variant (`-full`) that bundles the **DuckDB** query engine on every platform — plus, on **Linux and Windows**, the QtWebEngine inline Vega-Lite chart renderer (the `generate_chart` tool). **macOS Full is DuckDB-only**: Homebrew `qt@5` no longer ships QtWebEngine and there is no Apple-Silicon Qt5 WebEngine, so inline Vega charts are a Linux/Windows Full feature. The native fenced `` ```chart `` (QtCharts) renderer and the `.npd` diagram tool work on **every** platform in **both** flavors.
-**Why are the download sizes different?** Bare `notepatra` executable is **~12 MB** on each platform (~12.6 MB Linux x64 — slightly smaller on Windows/macOS than on Linux because clang + MSVC emit denser code than gcc). On Linux, Qt5 is a standard system package (`apt install qtbase5-dev libqscintilla2-qt5-dev`), so the download is just the binary (~4.4 MB compressed). On macOS and Windows, Qt isn't pre-installed, so we bundle the Qt frameworks / DLLs alongside the executable for portability — same approach Krita, Kdenlive, and every cross-platform Qt app uses. Even with Qt bundled, Notepatra installs at ~12–85 MB depending on platform vs 300+ MB for VS Code.
+**Why are the download sizes different?** Bare `notepatra` executable is **~13 MB** on each platform (~13.4 MB Linux x64 — slightly smaller on Windows/macOS than on Linux because clang + MSVC emit denser code than gcc). On Linux, Qt5 is a standard system package (`apt install qtbase5-dev libqscintilla2-qt5-dev`), so the download is just the binary (~4.7 MB compressed). On macOS and Windows, Qt isn't pre-installed, so we bundle the Qt frameworks / DLLs alongside the executable for portability — same approach Krita, Kdenlive, and every cross-platform Qt app uses. Even with Qt bundled, Notepatra installs at ~12–85 MB depending on platform vs 300+ MB for VS Code.
> macOS Intel: not shipped pre-built. Apple stopped selling Intel Macs in 2023 and the GitHub Actions `macos-13` runner has been unreliable. Intel Mac users — `git clone` and run `./build.sh`. Builds in ~3 minutes.
@@ -595,9 +595,9 @@ cl /LD myplugin.cpp /Fe:myplugin.dll
| **Vim / Neovim** | ~3 MB | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Sublime Text** | ~30 MB | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | $99 |
| **Kate / Gedit** | ~30 MB | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✗ | ✓ |
-| **Notepatra** | **4.1 / 27.5 / 43.0 MB** | ✓ C++/Rust | ✓ Ollama | ✓ regex + AI | ✓ Rust mmap | ✓ | ✓ | ✓ | ✓ GPL-3 |
+| **Notepatra** | **4.1 / 27.5 / 43.9 MB** | ✓ C++/Rust | ✓ Ollama | ✓ regex + AI | ✓ Rust mmap | ✓ | ✓ | ✓ | ✓ GPL-3 |
-> *Notepatra download sizes are Linux x64 tar.gz / macOS DMG / Windows MSI from v0.1.120. Linux is just the binary (Qt is system-installed). macOS and Windows include bundled Qt. The bare `notepatra` executable inside is ~12 MB on every platform (Linux 12.6 MB, similar on macOS / Windows). Compressed download is much smaller because tar.gz / DMG / MSI all compress the binary plus shared libraries.*
+> *Notepatra download sizes are Linux x64 tar.gz / macOS DMG / Windows MSI from v0.1.120. Linux is just the binary (Qt is system-installed). macOS and Windows include bundled Qt. The bare `notepatra` executable inside is ~13 MB on every platform (Linux 13.4 MB, similar on macOS / Windows). Compressed download is much smaller because tar.gz / DMG / MSI all compress the binary plus shared libraries.*
---
@@ -644,8 +644,8 @@ Notepatra follows [Keep a Changelog](https://keepachangelog.com/) and [Semantic
| [**v0.1.122**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.122) | 2026-07-23 | **Save & Open dialogs remember your last folder — on every platform.** Saving a brand-new file, "Save a Copy As", "Open", and "Open Folder as Workspace" previously reopened at your home folder every time; they now start in the directory you last used and persist it across restarts. "Save As" still prefers the current file's own folder when it has one — the remembered directory is only the fallback for untitled buffers and secondary dialogs, so nothing regresses. Self-healing: a remembered folder that was deleted or lived on an unplugged removable drive falls back to home instead of failing. Covered by a new red-state-verified regression test (72 suites) and confirmed on the compiled Linux binary. |
| [**v0.1.121**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.121) | 2026-07-21 | **MCP design hardening — 6 fixes from live-driving all 48 verbs against a running editor (48 → 49 tools; Read 24 / Act 14 / Write 11).** `list_open_tabs` now reports an **`editable`** flag on every tab, and the read / insert / compare / save verbs gate on it — so the read-only **Welcome tab (index 0)**, previously a silent trap, returns a specific error instead of a no-op. **`save_tab` gains an optional Save-As `path`** so an AI can persist a `new_tab`'s content to disk — still Write-tier and approval-gated, path validated before the card, destination shown on it. New **`select_range`** verb (Act) finally makes `replace_selection` usable by an AI. `git_*` now falls back to the editor's **startup working directory**, so Git works when Notepatra was launched from inside a repo with no workspace open. Generic errors ("could not insert", "could not open compare view", "needs Save As") are replaced with **specific, actionable** ones. **Charts render on Qt 5.15 WebEngine** — the chart bundle now polyfills `Object.hasOwn` and `structuredClone` before the Vega scripts, which Qt 5.15's WebEngine (Chromium ~87) lacks; this had been breaking all chart rendering there (`render_chart` drew nothing, `export_chart` surfaced `e.isString`). Approval gate unchanged: every write needs an in-editor click, 120 s auto-deny, no headless bypass. |
| [**v0.1.120**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.120) | 2026-07-20 | **MCP full control — 48 tools, a remote gateway, and the sidecar finally works on Windows and macOS.** `notepatra-mcp` grows from 35 to 48 tools (Read 24 / Act 13 / Write 11), making every sub-app AI-drivable: **Diagram** (`create_diagram`, `get_diagram_source`, `set_diagram_source`), **Data-analyst** (`list_connections`, `run_query`, `list_tables`, `open_data_analyst`, `export_query_results` — reaches your saved PostgreSQL / MySQL / SQL Server / SQLite / DuckDB connections, SELECT-only and row-capped), **Charts** (`render_chart`, `export_chart`), **Noter** (`open_noter`), and **discovery** (`list_languages`, `get_capabilities`). **Two defects that made the sidecar unusable outside Linux are fixed:** the Windows named-pipe transport deadlocked on every verb — the pipe was opened without `FILE_FLAG_OVERLAPPED` and a parked reader thread blocked every write forever, so no tool call ever completed (only the first request *after* the greeting hung, which is why it looked healthy) — and on macOS the sidecar could not locate a running editor at all, because it guessed `$TMPDIR` while Qt binds under `NSTemporaryDirectory()`; the editor now publishes its real bound endpoint. New opt-in **loopback-only remote gateway** (`serve` / `pair` / `connect`, 8-digit HMAC pairing, fail-closed scopes) — the default build stays **crypto-free**, asserted in every CI job, and a remote write still raises the same local Approve card. Windows gains a prebuilt **cosign-signed sidecar zip** and a one-click **`.mcpb`** Claude Desktop bundle. `.mcpb` also fixed to stop handing Intel Macs an arm64 binary and ARM64 Linux an x64 one. Approval gate unchanged: every write needs an in-editor click, 120 s auto-deny, no headless bypass. Full offscreen ctest 71/71, sidecar 83 tests (117 with `--features remote`). |
-| [**v0.1.119**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.119) | 2026-07-18 | **MCP depth — 35 tools.** The `notepatra-mcp` sidecar grows from 22 to **35 tools in three tiers** — **Read 18 / Act 9 / Write 8**. New read tools: `list_reminders`, read-only Git (`git_status` / `git_diff` / `git_log` / `git_show` / `git_branch`), `validate_npd`, and **`run_sql`** (SELECT-only). New act tool: `open_note`. New **human-approved** write verbs: `create_note`, `append_note`, `set_reminder`, `export_diagram`. `find_in_tab` / `search_project` gained an optional `regex` flag. **Windows named-pipe transport is now supported** (Linux/macOS/Windows all connect via `--socket`; prebuilt Windows binaries not yet in the signed bundle — build from source / `cargo install`). **`run_sql` security:** SELECT-only via the SQL classifier and, on the Full/DuckDB edition, an engine sandbox — the file is materialized in-memory, then `enable_external_access=false` is set before the untrusted query runs, so it cannot read host files; an adversarial security pass hardened it before ship. Bare Lite binary unchanged at 12.6 MB (the new tools live in the sidecar). Full offscreen ctest 71/71, Lite 68/68, 60 sidecar cargo tests, live end-to-end across all 35 tools. |
-| [**v0.1.118**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.118) | 2026-07-17 | **MCP support — your editor, readable by your AI.** New standalone **`notepatra-mcp`** sidecar: a spec-compliant stdio JSON-RPC 2.0 [Model Context Protocol](https://modelcontextprotocol.io) server exposing **22 tools in three tiers** — read (10), act (8), and write (4) — plus open tabs / Noter notes as MCP resources and 3 ready-made prompts. Works with **Claude Desktop, Claude Code, OpenAI Codex CLI, the OpenAI Agents SDK**, and any spec-compliant stdio MCP client. **Every write is human-gated:** an Approve/Deny card inside the editor window, 120 s auto-deny, FIFO one-at-a-time, no headless bypass — the gate lives in the editor process, so no MCP client can write without a human click. Local socket + stdio only, no network connections; Linux/macOS first (Windows named-pipe transport in a future release). Prebuilt `notepatra-mcp` binaries ship as cosign-signed release artifacts; new docs page [notepatra.org/mcp.html](https://notepatra.org/mcp.html). Bare-binary size claim corrected 12.4 → 12.6 MB. Full ctest 68/68 + 47 sidecar cargo tests + live E2E 17/17. |
+| [**v0.1.119**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.119) | 2026-07-18 | **MCP depth — 35 tools.** The `notepatra-mcp` sidecar grows from 22 to **35 tools in three tiers** — **Read 18 / Act 9 / Write 8**. New read tools: `list_reminders`, read-only Git (`git_status` / `git_diff` / `git_log` / `git_show` / `git_branch`), `validate_npd`, and **`run_sql`** (SELECT-only). New act tool: `open_note`. New **human-approved** write verbs: `create_note`, `append_note`, `set_reminder`, `export_diagram`. `find_in_tab` / `search_project` gained an optional `regex` flag. **Windows named-pipe transport is now supported** (Linux/macOS/Windows all connect via `--socket`; prebuilt Windows binaries not yet in the signed bundle — build from source / `cargo install`). **`run_sql` security:** SELECT-only via the SQL classifier and, on the Full/DuckDB edition, an engine sandbox — the file is materialized in-memory, then `enable_external_access=false` is set before the untrusted query runs, so it cannot read host files; an adversarial security pass hardened it before ship. Bare Lite binary unchanged at 13.4 MB (the new tools live in the sidecar). Full offscreen ctest 71/71, Lite 68/68, 60 sidecar cargo tests, live end-to-end across all 35 tools. |
+| [**v0.1.118**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.118) | 2026-07-17 | **MCP support — your editor, readable by your AI.** New standalone **`notepatra-mcp`** sidecar: a spec-compliant stdio JSON-RPC 2.0 [Model Context Protocol](https://modelcontextprotocol.io) server exposing **22 tools in three tiers** — read (10), act (8), and write (4) — plus open tabs / Noter notes as MCP resources and 3 ready-made prompts. Works with **Claude Desktop, Claude Code, OpenAI Codex CLI, the OpenAI Agents SDK**, and any spec-compliant stdio MCP client. **Every write is human-gated:** an Approve/Deny card inside the editor window, 120 s auto-deny, FIFO one-at-a-time, no headless bypass — the gate lives in the editor process, so no MCP client can write without a human click. Local socket + stdio only, no network connections; Linux/macOS first (Windows named-pipe transport in a future release). Prebuilt `notepatra-mcp` binaries ship as cosign-signed release artifacts; new docs page [notepatra.org/mcp.html](https://notepatra.org/mcp.html). Bare-binary size claim corrected 12.4 → 13.4 MB. Full ctest 68/68 + 47 sidecar cargo tests + live E2E 17/17. |
| [**v0.1.117**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.117) | 2026-07-17 | **The honesty release — a 32-agent adversarial audit of every component, every confirmed defect fixed, ~4,100 LOC of dead code removed. No new deps, same bare binary (slightly smaller).** **Find & Replace tells the truth:** Find in Files finally shows its results (they were written to a never-shown widget), whole-word is honored by Count / Replace All / Find in Files, line numbers are right in non-ASCII files, and dead controls are hidden until they work. **Noter export unlocked:** notes export as PDF / Markdown from the right-click menu (the exporter was fully built and tested — it just had no UI entry point); resizable pop-out with visible pin state; Dark/Monokai-correct dialogs. **UTF-32 files with emoji no longer corrupt on save** (byte-level round-trip regression-tested). Terminal gained a real Stop button; tab colors survive reorder; image attach is no longer gated by a hardcoded model list. **~150 Rust-core unit tests promoted into CI + release gates**; git-panel test resurrected; full ctest **70/70**. New for AI assistants: [llms.txt](https://notepatra.org/llms.txt) + crawler-friendly robots.txt + CITATION.cff. |
| [**v0.1.116**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.116) | 2026-07-06 | **Two focused, adversarially-verified fixes — no new features, same bare binary, no new deps.** **Compare view is readable again:** the changed-**word** inline-diff highlight used a heavy red/green fill that buried the text; it's now a soft wash with a crisp red/green outline, **WCAG AA in Light / Dark / Monokai**. **The updater picks the right edition:** the release-asset picker previously scored every installer variant equally, so GitHub asset order could hand you the wrong edition; it now **deterministically selects the installer matching this build's edition** (Lite/Full × cloud/local-AI) across Windows / macOS / Linux. Full ctest **70/70**, every fix red-state proven. |
| [**v0.1.115**](https://github.com/singhpratech/notepatra/releases/tag/v0.1.115) | 2026-07-05 | **Security, robustness & quality hardening — the AI coding assistant regrades B → A- and the Data analyst C+ → A-. No new features, same bare binary, no new deps.** Read-only database access is now enforced in **three real layers** — engine-level DuckDB `READ_ONLY`, a structural SQL classifier that **replaces the old bypassable leading-keyword prefix gate**, and PostgreSQL/MySQL session read-only — and any data mutation now raises a **human approval card** (the model can no longer self-approve via `confirm:true`). Query **cancel/timeout genuinely interrupts a running DuckDB query** (`duckdb_interrupt`) and a row-cap prevents OOM. The AI tool registry is **mode-aware** (the read-only *Ask* segment and *Data* mode can't write files), Compose runs a **host-enforced dry-run**, edits are **atomic via `QSaveFile`** (a failed write can't destroy your original), and *approve all* is scoped per action kind. Truncated model output is now a distinct **"Response cut off — Retry"** state. Testing: the previously-**phantom** read-only-gate test (was git-excluded and never compiled) is now real and CI-run (143 assertions), plus new write-gate (44) and async-DB (30) suites; full ctest **70/70** (up from 67), every fix red-state proven, and a 5-agent adversarial fleet caught and closed a fix-introduced regression. |
diff --git a/docs/docs.html b/docs/docs.html
index deeb67e..772bf09 100644
--- a/docs/docs.html
+++ b/docs/docs.html
@@ -30,12 +30,12 @@
-
+
-
+
@@ -429,7 +429,7 @@
Notepatra is a native code editor written in C++17 with a Rust core for the heavy-lifting (memory-mapped file I/O, Aho-Corasick search, Myers diff, formatters). It targets Linux x64 / ARM64, macOS Apple Silicon, and Windows x64. The bare executable is ~12 MB (12.6 MB on Linux x64) on each platform; downloads range 4.1 MB (Linux ARM64) to ~43.0 MB (Windows MSI with Qt DLLs bundled).
+Notepatra is a native code editor written in C++17 with a Rust core for the heavy-lifting (memory-mapped file I/O, Aho-Corasick search, Myers diff, formatters). It targets Linux x64 / ARM64, macOS Apple Silicon, and Windows x64. The bare executable is ~13 MB (13.4 MB on Linux x64) on each platform; downloads range 4.4 MB (Linux ARM64) to ~43.9 MB (Windows MSI with Qt DLLs bundled).
Unlike Electron-based editors, Notepatra does not ship a browser runtime. It uses Qt5 + QScintilla — a battle-tested Scintilla-based editor engine — so 238 file types, 82 language lexers, brace matching, folding, and code completion are built in.
Unlike cloud-first editors, Notepatra's AI is local-first. The AI dock dropdown ships six backends: Ollama (default · localhost:11434), llama.cpp's llama-server (loads any GGUF directly · localhost:8080), OpenRouter (cloud · 100+ models — Claude, GPT, Gemini, Grok, Kimi, …), Ollama Cloud (cloud · gpt-oss:120b, qwen3-coder:480b, deepseek-v3.1:671b), OpenAI direct, and Azure OpenAI (enterprise). The llama.cpp entry also accepts a user-configured base URL via Settings → Preferences → AI, so it can reach any OpenAI-compatible HTTP server you've installed. Nothing leaves your computer unless you pick a cloud backend. No mandatory API keys, no subscription, no telemetry.
The AI runs as an agent. Tick Coding Mode in the AI dock (with a workspace open and a tool-capable model) and the model gets up to 13 native tools — file tools read_file, list_dir, write_file, search, apply_diff; data tools query_sql, csv_query, generate_chart; and read-only git tools git_status, git_diff, git_log, git_branch_list, git_show — plus three-layer path safety, a 25-call hard cap per turn, and persistent per-workspace chat history. See Coding Mode (agentic) below for the full surface.
| Platform | Asset | Size |
|---|---|---|
| 🐧 Linux x64 | notepatra-linux-x64.tar.gz | ~4.4 MB |
| 🐧 Linux ARM64 | notepatra-linux-arm64.tar.gz | ~4.1 MB |
| 🍎 macOS Apple Silicon | notepatra-macos-arm64.dmg | ~27.7 MB |
| 🪟 Windows x64 (MSI) | notepatra-<version>.msi | ~43.0 MB |
| 🪟 Windows x64 (installer) | notepatra-setup-<version>.exe | ~32.8 MB |
| 🪟 Windows x64 (portable) | notepatra-windows-x64.zip | ~37.4 MB |
| 🐧 Linux x64 | notepatra-linux-x64.tar.gz | ~4.7 MB |
| 🐧 Linux ARM64 | notepatra-linux-arm64.tar.gz | ~4.4 MB |
| 🍎 macOS Apple Silicon | notepatra-macos-arm64.dmg | ~28.0 MB |
| 🪟 Windows x64 (MSI) | notepatra-<version>.msi | ~43.9 MB |
| 🪟 Windows x64 (installer) | notepatra-setup-<version>.exe | ~33.0 MB |
| 🪟 Windows x64 (portable) | notepatra-windows-x64.zip | ~37.8 MB |
Starting in v0.1.64, Notepatra ships two build flavors per release. Lite is the default download — a bare ~12.6 MB binary with no heavy dependencies bundled. Full is the opt-in flavor. On every platform it bundles the DuckDB query engine (v1.1.3) next to the binary; on Linux and Windows it additionally bundles QtWebEngine for inline Vega-Lite chart rendering. macOS Full is DuckDB-only — Homebrew's qt@5 no longer ships QtWebEngine (and there is no Apple-Silicon Qt5 WebEngine), so inline Vega charts stay a Linux/Windows Full feature; the native fenced ```chart renderer (QtCharts) still works everywhere. On Linux the -full tarball links libQt5WebEngineWidgets from your distro (install qtwebengine5-dev / qt5-qtwebengine) and ships libduckdb.so alongside the binary. Heavy features go through packs that you install on demand, the way DuckDB ships a tiny core plus optional extensions (httpfs, parquet, spatial, etc.).
Starting in v0.1.64, Notepatra ships two build flavors per release. Lite is the default download — a bare ~13.4 MB binary with no heavy dependencies bundled. Full is the opt-in flavor. On every platform it bundles the DuckDB query engine (v1.1.3) next to the binary; on Linux and Windows it additionally bundles QtWebEngine for inline Vega-Lite chart rendering. macOS Full is DuckDB-only — Homebrew's qt@5 no longer ships QtWebEngine (and there is no Apple-Silicon Qt5 WebEngine), so inline Vega charts stay a Linux/Windows Full feature; the native fenced ```chart renderer (QtCharts) still works everywhere. On Linux the -full tarball links libQt5WebEngineWidgets from your distro (install qtwebengine5-dev / qt5-qtwebengine) and ships libduckdb.so alongside the binary. Heavy features go through packs that you install on demand, the way DuckDB ships a tiny core plus optional extensions (httpfs, parquet, spatial, etc.).
v0.1.63 bundled QtWebEngine into every release for one specific feature — the AI Data Analyst's inline chart card. Most users will never trigger a chart, but every install paid the disk + download cost. v0.1.64 flipped the default: lite by default, charts move to an optional pack. Same architecture mirrors how Cursor / VS Code / Sublime add language servers and renderers — small core, install what you need.
@@ -630,7 +630,7 @@No. Notepatra is its own application — a native Qt5 + QScintilla editor with an original C++17/Rust core for the hot paths (memory-mapped file I/O, Aho-Corasick search, Myers diff, the formatters). The editing surface is QScintilla — the mature Scintilla engine, the same one Notepad++ is built on — so folding, brace matching and lexing are battle-tested rather than reinvented; everything around it (the AI dock, the tools, the Rust core, the UI) is Notepatra's own. It builds from a single codebase for Linux x64 / ARM64, macOS Apple Silicon, and Windows x64.
The default download is Lite: the complete editor — all 82 lexers, the AI dock, diagrams, formatters, Git, terminal — with no browser engine bundled, which is why the bare binary stays ~12 MB. Full bundles the DuckDB engine on every platform, and — on Linux and Windows — adds QtWebEngine so the generate_chart AI tool can render interactive Vega-Lite charts inline. (macOS Full is DuckDB-only: Homebrew qt@5 no longer ships QtWebEngine and there is no Apple-Silicon Qt5 WebEngine, so inline Vega charts are a Linux/Windows feature.) Everything else is identical. Most people want Lite; reach for Full only if you need the DuckDB engine or WebEngine-rendered Vega charts — the native QtCharts inline charts and the .npd diagram renderer work in both flavors on every platform. See Lite mode vs Full mode.
The default download is Lite: the complete editor — all 82 lexers, the AI dock, diagrams, formatters, Git, terminal — with no browser engine bundled, which is why the bare binary stays ~13 MB. Full bundles the DuckDB engine on every platform, and — on Linux and Windows — adds QtWebEngine so the generate_chart AI tool can render interactive Vega-Lite charts inline. (macOS Full is DuckDB-only: Homebrew qt@5 no longer ships QtWebEngine and there is no Apple-Silicon Qt5 WebEngine, so inline Vega charts are a Linux/Windows feature.) Everything else is identical. Most people want Lite; reach for Full only if you need the DuckDB engine or WebEngine-rendered Vega charts — the native QtCharts inline charts and the .npd diagram renderer work in both flavors on every platform. See Lite mode vs Full mode.
The bare executable is ~12 MB (~12.6 MB on Linux x64) on every platform — no Electron, no bundled browser runtime. Download sizes differ because Linux links Qt from your distro while macOS and Windows bundle it: roughly 4.4 MB (Linux x64 tar.gz), 27.7 MB (macOS DMG with Qt), 43.0 MB (Windows MSI with the Qt DLLs). The GitHub release page is always canonical for exact bytes.
+The bare executable is ~13 MB (~13.4 MB on Linux x64) on every platform — no Electron, no bundled browser runtime. Download sizes differ because Linux links Qt from your distro while macOS and Windows bundle it: roughly 4.7 MB (Linux x64 tar.gz), 28.0 MB (macOS DMG with Qt), 43.9 MB (Windows MSI with the Qt DLLs). The GitHub release page is always canonical for exact bytes.
No telemetry, no analytics, no account — the editor starts fully offline. Every outbound connection is one you trigger: (1) your selected AI backend — a local Ollama (localhost:11434) or llama-server (localhost:8080) by default, or whichever URL you set on the llama.cpp entry; (2) git push/pull from the Git panel; (3) the REST client when you send a request; (4) one GitHub-API call at launch if the update check is enabled. Cloud AI backends (Ollama Cloud / OpenRouter / OpenAI / Azure OpenAI) are opt-in from the dropdown and use your key — your code leaves the machine only when you pick one and send it. All of this is verifiable with strace, and the built-in AI Interaction Log records exactly what was sent so you never have to take our word for it.