Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · CALLBACK TEST

Why does the removal count disappear after I press Copy?

The copy-success branch replaces the status with Copied cleaned text. In this test, the removal details remain, so the status is a latest-action message rather than a permanent cleaning summary.

Tested 28 October 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The before state reports one removed invisible character. The after state reports a successful mock copy, while the removal list still contains the same code point and count. Two independent interface elements have different lifetimes. Check the details or retain the original test record when reviewing what cleaning did after copying.

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.

{
  "before": {
    "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
  },
  "after": {
    "source": "A​B",
    "result": "AB",
    "status": "Copied cleaned text",
    "inputCount": "",
    "resultCount": "2 characters",
    "copyDisabled": false,
    "details": [
      {
        "children": [],
        "textContent": "Removed characters:"
      },
      {
        "children": [
          {
            "children": [],
            "textContent": "1 (U+200B) × 1"
          }
        ],
        "textContent": ""
      }
    ],
    "writes": [
      "AB"
    ],
    "focused": false,
    "selected": false
  }
}

Capability boundary

The write operation is mocked and resolves successfully; no actual clipboard success is claimed. A later file load or error can also write this status element, but those transitions have separate tests. Neither a copy message nor a removal total demonstrates removal of a statistical text watermark.

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.