fix: PPI → PII across entire codebase + add Ko-fi support section

PII (Personally Identifiable Information) is the correct standard term.
Renamed all instances — comments, UI labels, variable names, function
names (autoDetectPPI → autoDetectPII, scanInputForPPI → scanInputForPII,
ppiWarnings → piiWarnings), CSS comments, README, and options page.

Added Ko-fi donation section to README and Options footer. Tone: no
obligation, no warranty, no influence on updates — just appreciation.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
This commit is contained in:
Claude
2026-03-28 16:21:21 +00:00
parent 22205c2590
commit ad3b8718fa
10 changed files with 83 additions and 66 deletions
+6 -6
View File
@@ -1,14 +1,14 @@
/**
* Silent Send - Auto-Detect
*
* Scans text for potential PPI that the user hasn't configured.
* Scans text for potential PII that the user hasn't configured.
* This catches things the identity and auto-redact scanner can't —
* because the user forgot or didn't know to configure them.
*
* Returns warnings (not auto-redactions) so the user can decide.
*/
const PPI_PATTERNS = [
const PII_PATTERNS = [
// --- Network ---
{
name: 'Private IP Address',
@@ -21,7 +21,7 @@ const PPI_PATTERNS = [
regex: /\b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b/g,
category: 'network',
hint: 'IP address — could identify your network',
// Exclude common non-PPI IPs
// Exclude common non-PII IPs
exclude: /^(?:127\.0\.0\.1|0\.0\.0\.0|255\.255\.255\.\d+|8\.8\.[84]\.[84]|1\.1\.1\.1|1\.0\.0\.1)$/,
},
{
@@ -126,12 +126,12 @@ const PPI_PATTERNS = [
},
];
// Context words that make ambiguous patterns more likely to be PPI
// Context words that make ambiguous patterns more likely to be PII
const CONTEXT_WORDS = /\b(?:born|birthday|dob|birth|passport|license|driver|ssn|social\s*security|address|home|live|lives|reside|zip|postal)\b/i;
const AutoDetect = {
/**
* Scan text for potential unconfigured PPI.
* Scan text for potential unconfigured PII.
* Pass in identity so we can skip values the user already configured.
*
* Returns array of { name, value, hint, category, index }
@@ -167,7 +167,7 @@ const AutoDetect = {
}
}
for (const pattern of PPI_PATTERNS) {
for (const pattern of PII_PATTERNS) {
// Skip context-dependent patterns if no context words present
if (pattern.contextRequired && !hasContext) continue;
+5 -5
View File
@@ -1,11 +1,11 @@
/**
* Silent Send - Document Scanner
*
* Scans uploaded documents for PPI and substitutes/redacts before
* Scans uploaded documents for PII and substitutes/redacts before
* the file reaches the AI service.
*
* Supported formats:
* - PDF: Extract text, scan for PPI, create sanitized plaintext version
* - PDF: Extract text, scan for PII, create sanitized plaintext version
* (PDFs can't be reliably edited in-place without breaking layout)
* - DOCX: Parse XML, find-replace text, repackage ZIP (layout preserved)
* - XLSX: Parse cells, find-replace values, repackage (formatting preserved)
@@ -13,7 +13,7 @@
*
* Modes:
* - Silent: substitute and upload (default for text files)
* - Preview: show PPI findings, let user confirm before upload (default for PDF/DOCX/XLSX)
* - Preview: show PII findings, let user confirm before upload (default for PDF/DOCX/XLSX)
*
* Integration:
* - The fetch interceptor in content.js detects multipart/form-data uploads
@@ -70,9 +70,9 @@ const DocumentScanner = {
},
/**
* PDF: extract text, scan for PPI, create sanitized text file.
* PDF: extract text, scan for PII, create sanitized text file.
* PDFs can't be reliably edited in-place, so we extract text,
* substitute PPI, and send the clean text instead.
* substitute PII, and send the clean text instead.
*/
async _processPDF(file, filename, substituteAll, options) {
const text = await this._extractPDFText(file);
+2 -2
View File
@@ -12,7 +12,7 @@
* - Policy updates are applied automatically
*
* Privacy: the org admin can check compliance (are required fields
* configured?) but CANNOT see individual PPI values.
* configured?) but CANNOT see individual PII values.
*/
import api from './browser-polyfill.js';
@@ -220,7 +220,7 @@ const OrgPolicy = {
/**
* Check if the user's configuration meets org policy requirements.
* Returns compliance status WITHOUT revealing actual PPI values.
* Returns compliance status WITHOUT revealing actual PII values.
*
* @returns {{ compliant: boolean, missing: string[], configured: string[] }}
*/
+1 -1
View File
@@ -23,7 +23,7 @@ const KEYS = {
SETTINGS: 'ss_settings',
};
// Keys that contain sensitive PPI and should be encrypted at rest
// Keys that contain sensitive PII and should be encrypted at rest
// All user data keys are encrypted at rest — settings included since
// custom domains and configuration can reveal what services the user
// accesses. Only ss_sync_encryption (salt, verification blob) and