All notable changes to PromptWard are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
The current release number lives in VERSION; it is the single
source of truth that package.json, src/manifest.ts, and
APP_VERSION (src/shared/debug.ts) must all equal. A test
(tests/manifest.test.ts > keeps every version source equal to the VERSION
file) enforces this — bump with npm run bump-version -- <x.y.z> so all four
update together.
Docs-only housekeeping so root documents render in-browser instead of downloading.
LICENSE and NOTICE now have .md extensions (LICENSE.md,
NOTICE.md). GitHub and GitHub Pages serve bare LICENSE/NOTICE as raw
downloads with no preview; adding the extension makes them display as
rendered Markdown. All in-repo links and the License: MIT badge have been
updated to the new paths (README, AGENTS, and the cross-link from
LICENSE.md to NOTICE.md). The vendored model license at
public/models/rampart/LICENSE is intentionally untouched — it is a
separate, third-party file.Minor fix to the review modal’s auto-send countdown.
pointermove over the modal. In
practice the modal pops up under a cursor still coasting to a stop after the
click that triggered the send — so the countdown cancelled instantly and the
confirm button showed plain “Send redacted” with no timer, looking like the
feature was broken. The countdown now only cancels on deliberate interaction
(a click/pointerdown on the panel or a keydown), preserving the original
step-away-from-keyboard intent. Regression test added in
content-flow.test.ts; the existing review-modal.test.ts case updated to
model interaction via pointerdown.Critical fix: protection was silently no-op’ing on the most popular sites.
content flow > resolves the composer over an earlier empty contenteditable)
that failed on the pre-fix code and passes now. Diagnostics also now record
which editor was resolved when an empty editor is ignored, so any future
regression of this kind is immediately readable in the side panel.Polish and dead-code removal. The headline user-visible change is the removal of the fake “WebGPU” settings toggle; the rest is internal hardening and performance work that doesn’t change behavior.
webGpuEnabled value was read by no runtime code — the worker hardcodes
device: "wasm". A visible control with no effect erodes trust in a privacy
tool, so it’s gone. A stale webGpuEnabled key left in your sync storage is
harmlessly ignored. (plan 012)awaited log stages around the model call, each a round trip to the
background worker. Logging in the protect flow is now fire-and-forget.
Diagnostic events are unchanged; only when they’re recorded is deferred.
(plan 011)escapeHtml
(previously duplicated across the worker/offscreen boundary, where drift
could silently reintroduce an XSS surface). (plan 010)Reliability and packaging. Adds CI, hardens the offscreen-document lifecycle, validates custom-domain input, and trims the packaged size by stripping unused ONNX Runtime WASM variants.
ort-wasm-simd-threaded.jsep.*), dropping
the package from ~93 MB / 26 files to ~23 MB — faster downloads and installs.
(plan 007) — see note below; pending
manual Chrome runtime verification.verify:assets, typecheck, tests, and build on every push,
so releases no longer ship on whatever was verified locally. (plan 006)Correctness fixes for the protection flow. Addresses an IME-composition bug, a retry-path contract gap, unbounded request hangs, and a per-page-load crash that silently disabled diagnostics.
isComposing / keyCode 229) are now ignored.
(plan 002)ReferenceError in content-script init (the module-init log call ran before
the debugSettingsPromise declaration) threw on every import, silently
disabling diagnostics on supported sites. The declaration is now hoisted
above its first use. This also fixes npm test exiting 1 on an all-green
run. (plan 013)The 12 plans above all landed in one unreleased sequence since 0.9.3 — no git
tags or GitHub releases were cut for the intermediate versions. 0.9.4,
0.10.0, and 0.10.1 are reconstructed groupings (by priority: P1 fixes, P2
reliability/packaging, P3 polish) that describe the logical progression; the
shipped code is at 0.10.1. Going forward, each entry in this file will
correspond to a real tagged release cut via npm run bump-version.
[0.10.0]’s ORT asset trim (plan 007) is statically and build-verified but has not yet been confirmed by loading the built extension in Chrome and watching the model reach “Ready”. See plans/README.md for the blocking note.