All notable changes to this project are documented here. The format is based loosely on Keep a Changelog and the project follows SemVer once it ships to the Chrome Web Store.
IMPLEMENTATION.md— step-by-step handbook for Phases 2-4. Locked decisions, code patterns, file paths, acceptance criteria, anti-patterns, and commit cadence. Designed so a less-capable model can execute the work without making bad architectural calls.
- Phase 2 default image model:
Organika/sdxl-detectorat q8. Benchmark deferred to Phase 2.5. - Phase 2.5: new explicit phase for the local-image-model benchmark, run after Phase 2 ships and after the maintainer curates a 60-image test set.
- Phase 3 default text model:
Hello-SimpleAI/chatgpt-detector-robertaat q8. Default text confidence threshold raised to 0.70 (vs 0.55 for images) — biases toward "Uncertain" given known false-positive risk. - Phase 4 boost-failure behavior: fall back to local model with a visible toast
"Boost failed (rate limited) — using local model". Toggleable in Options, default on. - Phase 4 rate limiting: client-side, 10 RPM per provider by default, configurable in Options.
ARCHITECTURE.md— added explicit default-models table, quantization choice (q8), backend strategy (device: 'auto'), and boost-failure / rate-limit behavior.ROADMAP.md— Phase 2 cross-references the handbook; new Phase 2.5 section; Phase 3 + 4 reflect the locked defaults.AGENTS.md— points cheaper agents atIMPLEMENTATION.md; added the new locked decisions; updated repo layout for the post-Phase-1 reality.
- New Netlify-ready static site under
site/with:site/index.html(product marketing page),site/docs/index.html(documentation hub),site/docs/architecture.html(architecture overview),- custom SVG graphics under
site/assets/.
- New root
netlify.tomlconfigured to publishsite/with security headers.
- Updated
README.mdwith website and docs URLs plus current extension build command (npm run build).
ARCHITECTURE.md— source of truth for v1 system design.ROADMAP.md— phase-by-phase plan to Chrome Web Store launch.AGENTS.md— persistent guidance for AI agents working on this repo.- This
CHANGELOG.md.
- Rewrote
README.mdto honestly describe project state; dropped the unsubstantiated "CLIP zero-shot via Vision Transformers" claim. - Rewrote
CONTRIBUTING.mdfor the upcoming TypeScript/Vite stack. - Moved icons from repo root to
assets/icons/.
- All v0.1 Python "detectors" (
simple_ai_detector.py,huggingface_detector.py,google_ai_detector.py,ml_model_example.py,train_model.py,deploy_model.py,test_api.py,setup_api_key.sh,requirements*.txt,.python-version) — none of these were functional AI detectors; the wired-in one was a hash-of-bytes heuristic. Seearchive/legacy-python/README.md. - All v0.1 documentation (
docs/,sphinx-docs/,DOCS.md,SETUP_GUIDE.md,netlify.toml) — described a CLIP system that did not exist in code. Seearchive/legacy-docs/README.md. - v0.1 extension files (
manifest.json,background.js,content-script.js,content-style.css,popup.{html,js},options.{html,js}) — kept as a reference for the v1 rewrite. Seearchive/legacy-extension-v0.1/README.md.
- Vite 8 + CRXJS 2.4 + React 19 + TypeScript 6 + Tailwind 4 build system.
- Typed
manifest.config.ts— droppedhost_permissions: <all_urls>, keptactiveTab+scripting+storage+offscreen+contextMenus. src/background/index.ts— service worker with typed message routing, offscreen lifecycle, context menu setup, keyboard shortcut handler.src/offscreen/— offscreen document stub (Phase 2 will add ONNX session).src/content/index.ts+badges.ts— visible-image discovery, scroll/resize-aware badges, image-to-dataURL via canvas, text-selection toast, timeout handling.src/popup/App.tsx— "Scan visible images" + "Scan selected text" buttons, mock-mode indicator, settings link.src/options/App.tsx— provider radio selector (local / Gemini / OpenAI / HF), API key input, confidence threshold slider, save button.src/shared/types.ts— discriminated-union message bus,ClassificationResult,ExtensionSettings.src/shared/storage.ts— typedchrome.storage.syncwrapper.src/shared/classify-mock.ts— deterministic mock classifier for development.src/detectors/— router stub + Phase 2/3 placeholder files.tests/unit/classify-mock.test.ts— 5 unit tests, all passing..github/workflows/ci.yml— GitHub Actions: typecheck + lint + test + build on push/PR.vitest.config.ts,eslint.config.js,tsconfig.json— toolchain configuration.
Extension builds to dist/, loads in Chrome via developer mode, and shows "MOCK" badges on visible images when "Scan visible images" is clicked. All CI checks pass (0 errors, 0 warnings). Ready for Phase 2 (real local image inference).
Original public release. Plain-JS MV3 extension + localhost Flask server claiming CLIP-based AI detection. The on-page UX was solid; the "ML" was a hash-based placeholder. Preserved verbatim under archive/legacy-extension-v0.1/ and archive/legacy-python/.