Skip to content

Commit 50f8feb

Browse files
author
Hana
committed
chore(public-sync): apply scrub rules from .public-sync
Auto-generated by .public-sync/sync-to-public.sh. Removes the internal docs trees, replaces the personalised voice template with the framework generic Nell archetype, and substitutes absolute paths plus author-name attributions per .public-sync/replacements.txt.
1 parent f5e1eee commit 50f8feb

1 file changed

Lines changed: 91 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 91 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,99 @@ signing costs. See [`docs/roadmap.md`](docs/roadmap.md) for what's on
77
deck and [`docs/release-checklist.md`](docs/release-checklist.md) for
88
what each release has to clear.
99

10-
## 0.0.11-alpha.5 — (pending)
11-
12-
Windows WebView2 fetch fix — root cause identified.
10+
## 0.0.12-alpha.5 — 2026-05-17
11+
12+
- **Windows `WinError 206` fix on long chat sessions.** Fresh sessions
13+
worked but every message returned `provider_failed` after a few dozen
14+
turns; closing and reopening the chat resolved it until the new
15+
session grew again. Root cause: the Claude CLI provider was passing
16+
the system prompt (voice template, ~15 KB) and the full session
17+
buffer on the command line. Windows `CreateProcess` caps the entire
18+
command line at 32,767 chars — voice template + a moderate session
19+
buffer was already enough to cross it. The provider now writes the
20+
system prompt to a tempfile (`--system-prompt-file`) and pipes the
21+
conversation via stdin instead, keeping argv bounded regardless of
22+
session length. macOS and Linux are unaffected today (their argv
23+
limits are 256 KB–2 MB), but the same fix preempts the same trap
24+
there on extremely long sessions.
25+
26+
## 0.0.12-alpha.4 — 2026-05-15
27+
28+
- **UTF-8 encoding fix for Windows.** Added `encoding="utf-8", errors="replace"`
29+
to all four `subprocess.run` calls in the Claude CLI provider. Windows defaults
30+
to cp1252 for `text=True` subprocess output, but Claude CLI emits UTF-8. Without
31+
this, accented characters in chat replies render as mojibake. Non-Windows
32+
platforms are unaffected (default encoding is already UTF-8).
33+
34+
## 0.0.12-alpha.3 — 2026-05-15
35+
36+
- **Revert tauri.localhost bridge URL.** The alpha.1 tauri.localhost change
37+
was a red herring. The real wizard hang was the Windows path mismatch
38+
(fixed in alpha.2). With the path fix in place, 127.0.0.1 works correctly.
39+
tauri.localhost introduced a new problem: Tauri's internal proxy intercepts
40+
CORS preflight requests carrying an Authorization header and strips the
41+
server's Access-Control-Allow-Headers, breaking all authenticated fetches
42+
on Windows.
43+
44+
## 0.0.12-alpha.2 — 2026-05-14
45+
46+
- **Windows path fix.** The Rust `nellbrain_home()` function was resolving
47+
to `%APPDATA%` (Roaming) while Python's `platformdirs` resolves to
48+
`%LOCALAPPDATA%\hanamorix\companion-emergence`. This caused the Tauri app
49+
to read bridge.json from the wrong directory on Windows — the file was
50+
written by Python under LocalAppData but Rust looked under Roaming.
51+
Root-caused by a Windows user who added devtools to surface the error.
52+
macOS and Linux are unaffected (both crates agree on the path there).
53+
54+
## 0.0.12-alpha.1 — 2026-05-14
55+
56+
- **Past-image gallery.** New Gallery tab in the left panel shows every
57+
image shared across all past conversations as a thumbnail grid. Click any
58+
thumbnail for a full-size lightbox (Escape or click backdrop to close).
59+
Thumbnails lazy-load and the grid shows up to 50 recent images.
60+
61+
- **Auto-update support.** The app can now check for, download, and install
62+
updates from GitHub Releases. Find it in the Connection panel under the
63+
new "Updates" section. On macOS it downloads a DMG, on Windows an MSI,
64+
and on Linux an AppImage. Updates are cryptographically signed.
65+
66+
- **Windows WebView2 fetch fix (tauri.localhost).** The bridge fetch URL now
67+
uses `http://tauri.localhost` instead of `http://127.0.0.1`, matching the
68+
WebView page origin. On Chromium 148+ (WebView2 Runtime), the hostname
69+
mismatch could cause `fetch()` to hang even after CORS preflight passed.
70+
CSP updated to include `tauri.localhost:*` for both HTTP and WebSocket.
71+
72+
## 0.0.11-alpha.5 — 2026-05-14
73+
74+
Windows WebView2 bridge fetch fix (root-cause fix for the alpha.4 symptom).
1375

1476
- **WebView2 origin mismatch fix.** The alpha.4 PNA fix correctly added
15-
server-side `Access-Control-Allow-Private-Network` headers, but on Windows
16-
the Tauri WebView2 was still blocking *all* bridge fetches before any bytes
17-
left the browser. Root cause: Tauri 2 serves Windows frontends from
18-
`https://tauri.localhost` (HTTPS → public address space) while the bridge
19-
listens on `http://127.0.0.1` (HTTP → private address space). Chromium's
20-
Private Network Access enforcement blocks the fetch at the address-space
21-
gate — the preflight never reaches the server, so server-side headers
22-
don't help. Fix: `useHttpsScheme: false` in Tauri window config tells the
23-
WebView2 to serve the frontend from `http://tauri.localhost` instead. Now
24-
both page and bridge share the same address space → no PNA preflight
25-
needed. CORS origins (`http://tauri.localhost`) and CSP (`'self'`) already
26-
supported HTTP scheme. No change to macOS (custom protocol) or dev mode.
77+
server-side `Access-Control-Allow-Private-Network` headers, but Windows
78+
users reported the app still showed `Failed to fetch` / `Bridge unreachable`
79+
and `bridge-*.log` stayed at 0 bytes — no request from the WebView ever
80+
reached the server, not even a preflight. Server-side CSP and CORS headers
81+
were verified correct from PowerShell; the fetch was blocked inside the
82+
WebView2 before any bytes left. Root cause: Tauri 2 serves Windows/Linux
83+
frontends from `https://tauri.localhost` (HTTPS, public address space) while
84+
the bridge listens on `http://127.0.0.1` (HTTP, private address space).
85+
Chromium's Private Network Access enforcement blocks the fetch at the
86+
address-space gate. Fix: `useHttpsScheme: false` in the Tauri window config
87+
switches to `http://tauri.localhost`. Page and bridge now share the same
88+
address space → no PNA preflight needed. CORS origins and CSP already
89+
supported the HTTP scheme. No change to macOS (custom `tauri://` protocol)
90+
or dev mode (Vite). Reported and root-caused with help from a Windows user.
91+
92+
- **Public sync filter-repo recovery.** The public sync's `git filter-repo`
93+
step was dropping the v0.0.11 initiate merge, removing `brain/initiate/`,
94+
`InitiateBanner.tsx`, `reply_to_audit_id`, and related files from the public
95+
build. Added a post-filter-repo recovery step to `.public-sync/sync-to-public.sh`
96+
that restores any files the merge simplification drops, with personal-marker
97+
filtering applied.
98+
99+
- **Packaging.** CI run `25849769893` passed all four jobs: validate (Python
100+
tests, lint, frontend tests, frontend build, cargo check, cargo test, wheel
101+
smoke), windows-x86_64, macos-arm64, linux-x86_64. All 8 release assets
102+
published with SHA256SUMS. Privacy marker scan passes.
27103

28104
## 0.0.11-alpha.4 — 2026-05-13
29105

0 commit comments

Comments
 (0)