This file tracks small implementation PRDs derived from PLAN.md. A PRD is marked done only after its files exist and the relevant verification passes.
Status: Done
Deliverables:
- TypeScript project scaffold with WXT extension build and Vite userscript build.
- Shared masking core under
src/core. - No text rewriting; masking uses
data-chatveil-*attributes plus CSS/SVG overlays.
Evidence:
package.json,tsconfig.json,wxt.config.ts,vite.userscript.config.tssrc/core/engine.ts,src/core/adapters.ts,src/core/settings.ts,src/core/hash.ts
Status: Done
Deliverables:
- First-class ChatGPT, Claude, and Qwen adapters.
- Conservative generic sidebar adapter.
- Static host permissions for known chatbot domains.
- Optional single-origin custom site flow through popup.
Evidence:
src/core/adapters.tswxt.config.tsentrypoints/background.tsentrypoints/popup/main.tssrc/extension/storage.ts
Status: Done
Deliverables:
- Content script starts the engine on supported sites.
- Popup can enable or disable current site, show all temporarily, reset unlocks, choose mask style, and manage custom sites.
- Popup can enable or disable Chrome sync for settings, custom hosts, and hashed unlock keys.
- Default mask style is dynamic
Dissolve, withSkeleton,Characters, andBlurretained as optional styles.
Evidence:
entrypoints/content.tsentrypoints/popup/index.htmlentrypoints/popup/main.tsentrypoints/popup/style.csssrc/extension/storage.ts
Status: Done
Deliverables:
- Tampermonkey userscript with the same shared masking core.
- Uses
GM_getValue,GM_setValue,GM_registerMenuCommand. - Includes lightweight in-page control panel.
Evidence:
src/userscript/main.tsvite.userscript.config.ts
Status: Done
Deliverables:
- README with development, artifacts, and manual acceptance.
- Privacy policy.
- Permission justification.
- Store listing draft.
- Icons generated into
public/icons.
Evidence:
README.mdPRIVACY.mdPERMISSIONS.mdSTORE_LISTING.mdscripts/generate-icons.mjs
Status: Done
Deliverables:
npm run lintnpm run testnpm run build:extensionnpm run build:userscript- Final completion audit mapping
PLAN.mdrequirements to artifacts and command output.
Evidence:
npm run lint: passed.npm run test: passed, 4 test files and 39 tests.npm run typecheck: passed.npm run test:smoke: passed, browser-level dissolve default, current-title, hover/remask, userscript style switch, menu pin, and character-mode smoke.npm run build:extension: passed, produced.output/chrome-mv3/and.output/chatveil-0.1.0-chrome.zip.npm run build:userscript: passed, produceddist/userscript/chatveil.user.js.- Packaged MV3 manifest inspected at
.output/chrome-mv3/manifest.json.
Status: Done
Deliverables:
- Default
Dissolvemask style with animated SVG particles. - Reveal/remask state machine where particles scatter before title reveal and gather before remasking.
- Long-list performance guard: one shared animation scheduler, offscreen pause/release, lighter idle cadence, and full-priority hover/focus transitions.
- Reduced-motion support and fallback CSS for non-SVG or test environments.
Evidence:
src/core/engine.tssrc/core/constants.tssrc/core/settings.tsentrypoints/popup/index.htmlsrc/userscript/main.tstests/engine.test.tsscripts/smoke-playwright.mjs