Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · CALLBACK TEST

Do old removal details remain after a clean run finds nothing?

In this test, no. A second run with plain text clears the old details and reports no selected invisible characters.

Tested 28 October 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The first run adds a heading and list for the removed zero-width space. The second run replaces the children of the details container before deciding whether to append any new counts. Because the second input contains no selected marker, that container stays empty. Save per-run evidence separately if you need an audit history.

Reproduce the observation

Save tested-app.js and reproduce.cjs together, then run node reproduce.cjs. Compare its output with the recorded observation. The harness executes the actual homepage callback in a minimal DOM and records its resulting field values and method calls. File-like objects and clipboard responses are controlled substitutes. Runtime: v24.22.1. No submitted text or genuine Claude output is used.

{
  "first": {
    "source": "A​B",
    "result": "AB",
    "status": "Removed 1 invisible character",
    "inputCount": "",
    "resultCount": "2 characters",
    "copyDisabled": false,
    "details": [
      {
        "children": [],
        "textContent": "Removed characters:"
      },
      {
        "children": [
          {
            "children": [],
            "textContent": "1 (U+200B) × 1"
          }
        ],
        "textContent": ""
      }
    ],
    "writes": [],
    "focused": false,
    "selected": false
  },
  "second": {
    "source": "plain",
    "result": "plain",
    "status": "No selected invisible characters found",
    "inputCount": "",
    "resultCount": "5 characters",
    "copyDisabled": false,
    "details": [],
    "writes": [],
    "focused": false,
    "selected": false
  }
}

Capability boundary

The homepage details are current-run feedback, not an accumulated removal log. The harness observes the container structure rather than screenshot pixels. No browser storage, analytics event or server-side history is tested here. An empty list means only that this run generated no selected-removal entries.

This Claude watermark remover edits a small selected character set. These callback observations do not establish authorship, detector scores, statistical-watermark removal or end-to-end browser behavior. For real work, keep the original and compare the exact result at its destination.

Primary material and next step

The tested first-party source snapshot and complete harness are the primary material for this page. For broader scope, read invisible Unicode versus AI watermarks, or return to the cleaner.