Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · CALLBACK TEST

What happens if the file handler sees no selected file?

It returns immediately in this test. Existing text, result and status remain unchanged; an empty selection is not a reset command.

Tested 28 October 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The optional first-file lookup yields no file. The early return happens before reading, counting or writing the loaded message. Comparing the two saved state objects makes the unchanged result explicit. If you intend to start a fresh document, replace the source deliberately and run cleaning rather than relying on a picker cancellation.

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": "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
  }
}

Capability boundary

We invoke change with an empty mock file list. Whether canceling a native picker dispatches change is browser-dependent and is outside this test. The finding applies if this handler receives no file; it is not a universal claim about native dialog events.

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.