Skip to content

Commit aa40eb3

Browse files
committed
clarify local text handling
1 parent 0f9d48d commit aa40eb3

9 files changed

Lines changed: 15 additions & 10 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ system does not handle typographic characters reliably.
4444

4545
## Browser extension
4646

47-
Opens directly as a Chrome Side Panel. Click the toolbar icon, and it docks cleanly on the side of your browser without floating in front of your page content. Paste, clean, copy. It declares no remote permissions and no host access, so it cannot read any page you visit, and it works completely offline.
47+
Opens directly as a Chrome Side Panel. Click the toolbar icon, and it docks cleanly on the side of your browser without floating in front of your page content. Paste, clean, copy. The panel states before input that pasted text stays in the panel and is never stored or uploaded. It declares no remote permissions and no host access, so it cannot read any page you visit, and it works completely offline.
4848

4949
Load it unpacked in Chrome, Edge, Brave or Opera:
5050

extension/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "Invisibles: hidden character cleaner",
4-
"version": "1.2.1",
4+
"version": "1.2.2",
55
"description": "Find and strip hidden characters locally. Uses only Chrome's side-panel UI permission and has no host access.",
66
"icons": {
77
"16": "icons/icon16.png",

extension/sidepanel.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,15 @@
7171
padding:8px;border-radius:var(--r-sm);min-height:36px;display:flex;align-items:center;justify-content:center}
7272
.kofi{background:var(--clay-soft);color:var(--clay);border:1px solid var(--clay)}
7373
.kofi:hover{background:var(--clay);color:var(--clay-ink)}
74-
.gh{background:var(--raised);color:var(--ink);border:1px solid var(--line)}
75-
.gh:hover{border-color:var(--muted)}
74+
.gh,.privacy{background:var(--raised);color:var(--ink);border:1px solid var(--line)}
75+
.gh:hover,.privacy:hover{border-color:var(--muted)}
7676
@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important}}
7777
</style>
7878
</head>
7979
<body>
8080
<div class="header">
8181
<h1>Invisibles <span class="badge">Sidebar</span></h1>
82-
<p class="sub">Reveal and strip hidden characters offline. Zero tracking.</p>
82+
<p class="sub">Processed locally: pasted text stays in this panel and is never stored or uploaded.</p>
8383
</div>
8484

8585
<div class="content">
@@ -105,6 +105,7 @@ <h1>Invisibles <span class="badge">Sidebar</span></h1>
105105
<div class="links">
106106
<a class="kofi" href="https://ko-fi.com/jju1s" target="_blank" rel="noopener">Ko-fi</a>
107107
<a class="gh" href="https://github.com/cig13zs/invisibles" target="_blank" rel="noopener">GitHub</a>
108+
<a class="privacy" href="https://cig13zs.github.io/invisibles/privacy.html" target="_blank" rel="noopener">Privacy</a>
108109
</div>
109110
</div>
110111

site.test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ assert.match(panel, /name="viewport"/);
1111
assert.match(panel, /name="description"/);
1212
assert.match(panel, /<script src="core\.js"><\/script>/);
1313
assert.match(panel, /<script src="popup\.js"><\/script>/);
14+
assert.match(panel, /pasted text stays in this panel and is never stored or uploaded/i);
15+
assert.match(panel, /href="https:\/\/cig13zs\.github\.io\/invisibles\/privacy\.html"/);
1416
assert.ok(!panel.includes('=\\'), 'side-panel attributes must not use escaped pseudo-quotes');
1517
assert.ok(!panel.includes('\\>'), 'side-panel tags must close normally');
1618

1719
assert.deepStrictEqual(manifest.permissions, ['sidePanel']);
20+
assert.strictEqual(manifest.version, '1.2.2');
1821
assert.ok(!manifest.host_permissions, 'the extension must not request host access');
1922
assert.strictEqual(manifest.side_panel.default_path, 'sidepanel.html');
2023
for (const iconPath of new Set([

store-assets.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ assert.ok(bootstrap.includes("mode === 'review'"));
3939

4040
const listing = fs.readFileSync(path.join(__dirname, 'store-assets', 'listing.txt'), 'utf8');
4141
assert.match(listing, /no host access/i);
42-
assert.match(listing, /not collected or transmitted/i);
42+
assert.match(listing, /processed only in memory/i);
43+
assert.match(listing, /never stored or transmitted/i);
4344
assert.match(listing, /identifies characters, not authorship or intent/i);
4445
assert.doesNotMatch(listing, /detects ai writing|guaranteed|100% safe/i);
4546

store-assets/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ python scripts/package.py --check
88
python tests/package.test.py
99
```
1010

11-
Upload `dist/invisibles-1.2.1.zip` and compare its SHA-256 value with the checked checksum sidecar.
11+
Upload `dist/invisibles-1.2.2.zip` and compare its SHA-256 value with the checked checksum sidecar.
1212

1313
Expected SHA-256:
1414

15-
`4a9886ec38da0bcf88e9029f11b0acfdfec2068bc139ca11dcd15952ee302adf`
15+
`8425e14dc433c76a0e7321c27339da0ce204d5fdffa77c6182f3f756174bce4e`
1616

1717
Use the copy in `listing.txt`, category `Tools`, and the public privacy URL:
1818

@@ -51,7 +51,7 @@ Set `INVISIBLES_CHROME` if Chrome is not installed at a standard path.
5151
- Single purpose: `Reveal and clean hidden Unicode in text the user pastes into the side panel.`
5252
- `sidePanel` justification: `Opens the text inspector beside the current tab. It does not grant access to page content.`
5353
- Remote code: `No`
54-
- Data handling: user-provided text is processed transiently in page memory. It is not collected, stored, or transmitted.
54+
- Data handling: user-provided text stays in the side panel, is processed transiently in page memory, and is never stored or transmitted. This is disclosed in the panel before the user enters text.
5555

5656
Use `listing.txt` for the full description. Upload the 128 px icon from
5757
`extension/icons/`, both 1280 x 800 screenshots, and the 440 x 280 promo tile.

store-assets/listing.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Privacy and access
1010

1111
- No host access: the extension cannot read the pages you visit.
1212
- No account, analytics, advertising, or remote service.
13-
- Pasted text is processed locally and is not collected or transmitted.
13+
- Pasted text stays in the side panel, is processed only in memory, and is never stored or transmitted.
1414
- The only requested permission is sidePanel, used to open the tool beside the current tab.
1515

1616
Invisibles identifies characters, not authorship or intent. Some hidden characters are legitimate, so review the findings before cleaning.
1.9 KB
Loading
1.78 KB
Loading

0 commit comments

Comments
 (0)