@@ -1,5 +1,10 @@
|
||||
# Changelog
|
||||
|
||||
## 0.2.0 - 2026-09-02
|
||||
|
||||
- Added reusable selective-removal profiles and pseudonymized per-file policy evidence across supported and inspect-only formats.
|
||||
- Distinguished verified full re-encoding, available re-encoding, inspect-only input, and non-executable selective-preservation requests; added Toolbox I/O/capability metadata.
|
||||
|
||||
## 0.1.0 - 2026-09-01
|
||||
|
||||
- Added byte-signature inventory, claimed-vs-detected media types, safe names,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
==============================================================================
|
||||
@add-ideas/toolbox-contract@0.2.3
|
||||
@add-ideas/toolbox-contract@0.3.0
|
||||
Declared licence: Apache-2.0
|
||||
==============================================================================
|
||||
--- LICENSE ---
|
||||
@@ -198,7 +198,7 @@ Declared licence: Apache-2.0
|
||||
|
||||
|
||||
==============================================================================
|
||||
@add-ideas/toolbox-helpers@0.1.0
|
||||
@add-ideas/toolbox-helpers@0.2.0
|
||||
Declared licence: GPL-3.0-or-later
|
||||
==============================================================================
|
||||
--- LICENSE ---
|
||||
@@ -879,7 +879,7 @@ Public License instead of this License. But first, please read
|
||||
|
||||
|
||||
==============================================================================
|
||||
@add-ideas/toolbox-shell-react@0.2.3
|
||||
@add-ideas/toolbox-shell-react@0.3.0
|
||||
Declared licence: Apache-2.0
|
||||
==============================================================================
|
||||
--- LICENSE ---
|
||||
|
||||
+19
-4
@@ -22,9 +22,24 @@ lookups, telemetry, or runtime network calls. A source file is never modified.
|
||||
removed, preserved, generated, unsupported, or incompletely checked, and
|
||||
includes source/output SHA-256 hashes and a bounded decoded-pixel sample
|
||||
comparison.
|
||||
5. Download an individual re-encoded image, a JSON report, or a ZIP containing
|
||||
re-encoded images and the report. The report itself may be sensitive because
|
||||
it contains source filenames and metadata values.
|
||||
5. Download generic sequentially named outputs, a pseudonymized safe-share
|
||||
report, or a ZIP containing both. The separate detailed report preserves
|
||||
source filenames and metadata values and may itself be sensitive.
|
||||
6. Apply a reusable selective-removal policy to the scan evidence. The policy
|
||||
matrix records remove, preserve, and review categories for every input,
|
||||
distinguishes verified full re-encoding from inspect-only formats, and can
|
||||
be exported without source names or raw metadata values.
|
||||
|
||||
The safe-share report deliberately omits source names, timestamps, hashes,
|
||||
exact byte sizes, metadata values and offsets. It retains scanner coverage,
|
||||
format/dimension facts and categorized counts; unusual combinations can still
|
||||
be identifying, so the report remains subject to human review.
|
||||
|
||||
Policy evidence is a decision aid, not a surgical metadata editor. Current
|
||||
JPEG/PNG/WebP output is a complete decoded-pixel re-encode; it does not preserve
|
||||
selected source metadata. For TIFF, GIF, HEIF-family, JPEG XL, PDF, archives,
|
||||
Office and unknown inputs the policy honestly reports `inspect-only` or
|
||||
`policy-not-executable` rather than promising a cleaned file.
|
||||
|
||||
## Format support
|
||||
|
||||
@@ -107,7 +122,7 @@ npm run release:artifact
|
||||
|
||||
This checks the manifest, types, lint, formatting, unit fixtures, production
|
||||
build, Toolbox contract, and Chromium/Firefox workflows, then creates the
|
||||
deterministic `release/privacy-tools-0.1.0.zip` plus its SHA-256 sidecar. The
|
||||
deterministic `release/privacy-tools-0.2.0.zip` plus its SHA-256 sidecar. The
|
||||
archive contains the static application, project documents, and exact runtime
|
||||
dependency licence texts.
|
||||
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
# Corresponding source
|
||||
|
||||
The corresponding source for Privacy Tools 0.1.0 is published at:
|
||||
The corresponding source for Privacy Tools 0.2.0 is published at:
|
||||
|
||||
https://git.add-ideas.de/lotobo/privacy-tools/src/tag/v0.1.0
|
||||
https://git.add-ideas.de/lotobo/privacy-tools/src/tag/v0.2.0
|
||||
|
||||
Build with Node.js 22 and npm 11:
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@ Material runtime components include:
|
||||
| -------------------------------- | ------- | ---------------- | -------------------------------------------------------------------------------------------------- |
|
||||
| ExifReader | 4.44.0 | MPL-2.0 | Secondary metadata parser; <https://github.com/mattiasw/ExifReader/tree/v4.44.0> |
|
||||
| fflate | 0.8.2 | MIT | Bounded PNG metadata inflation and ZIP creation; <https://github.com/101arrowz/fflate/tree/v0.8.2> |
|
||||
| `@add-ideas/toolbox-helpers` | 0.1.0 | GPL-3.0-or-later | Hashing, safe names, download and deterministic JSON primitives |
|
||||
| `@add-ideas/toolbox-contract` | 0.2.3 | Apache-2.0 | Toolbox manifest contract |
|
||||
| `@add-ideas/toolbox-shell-react` | 0.2.3 | Apache-2.0 | Shared application shell |
|
||||
| `@add-ideas/toolbox-helpers` | 0.2.0 | GPL-3.0-or-later | Hashing, safe names, download and deterministic JSON primitives |
|
||||
| `@add-ideas/toolbox-contract` | 0.3.0 | Apache-2.0 | Toolbox manifest contract |
|
||||
| `@add-ideas/toolbox-shell-react` | 0.3.0 | Apache-2.0 | Shared application shell |
|
||||
| React / React DOM | 19.2.8 | MIT | User interface |
|
||||
|
||||
ExifReader is used unmodified. Its MPL-2.0 covered source remains available at
|
||||
|
||||
@@ -27,8 +27,14 @@ arrays, and plain objects. No parser returns HTML or a live third-party object.
|
||||
decoded sample. `buildSanitizationReport` assigns verified/warning/failed
|
||||
based on explicit coverage and output findings.
|
||||
6. `archive` serializes bounded deterministic JSON and creates stored ZIP
|
||||
entries from application-generated `images/` paths and sanitized unique
|
||||
names.
|
||||
entries from application-generated `images/` paths. Safe-share archives use
|
||||
generic sequential image names and a reduced report; detailed reports remain
|
||||
an explicit, separate download for local auditing.
|
||||
7. `policy` applies frozen, versioned category rules to normalized findings. It
|
||||
creates pseudonymous per-file evidence across every inventoried format and
|
||||
separately reports whether the requested removal can be executed by the
|
||||
existing verified re-encode path. New policy profiles can be added without
|
||||
changing a container parser.
|
||||
|
||||
Pixel decoding and Canvas encoding currently run on the main browser context
|
||||
because portable cross-browser image encoder support is there; metadata parsing
|
||||
|
||||
@@ -55,5 +55,17 @@ filesystem metadata, clipboard/history records, application caches, backed-up
|
||||
originals, or cloud/recipient copies. Review the visible output, destination,
|
||||
report, and surrounding files yourself.
|
||||
|
||||
The JSON report is sensitive by design: it can include original filenames,
|
||||
hashes, timestamps, and metadata values. Share or retain it only intentionally.
|
||||
The detailed JSON report is sensitive by design: it can include original
|
||||
filenames, hashes, timestamps, metadata values, offsets, and parser notes. Share
|
||||
or retain it only intentionally. The separate safe-share report replaces file
|
||||
identity with sequential pseudonyms and omits those source identifiers and raw
|
||||
values. It retains formats, dimensions, coverage states, note counts, and
|
||||
finding-category totals so it is useful for review without claiming anonymity.
|
||||
Safe-share ZIPs likewise use generic sequential output names.
|
||||
|
||||
Selective-removal policy evidence follows the same pseudonymization boundary.
|
||||
It can show which finding categories a policy would remove, preserve, or send
|
||||
for review, but it never upgrades inspection coverage and never calls a format
|
||||
safe when no verified output exists. A requested “location-only” policy is
|
||||
therefore non-executable with the current all-metadata pixel re-encode; users
|
||||
receive evidence rather than a misleading partially preserved output.
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
const CACHE_PREFIX = "privacy-tools-shell-";
|
||||
const CACHE_NAME = CACHE_PREFIX + "0.1.0";
|
||||
const CACHE_NAME = CACHE_PREFIX + "0.2.0";
|
||||
const CORE = ["./", "./manifest.webmanifest", "./favicon.svg"];
|
||||
self.addEventListener("install", (event) => {
|
||||
event.waitUntil(
|
||||
|
||||
+51
-3
@@ -3,12 +3,20 @@
|
||||
"schemaVersion": 1,
|
||||
"id": "de.add-ideas.privacy-tools",
|
||||
"name": "Privacy Tools",
|
||||
"version": "0.1.0",
|
||||
"description": "Inspect and remove shareable-file metadata locally in the browser.",
|
||||
"version": "0.2.0",
|
||||
"description": "Inspect metadata and create policy-evidenced sharing copies locally.",
|
||||
"entry": "./",
|
||||
"icon": "./favicon.svg",
|
||||
"categories": ["privacy", "files", "security"],
|
||||
"tags": ["metadata", "exif", "privacy", "sanitize", "share"],
|
||||
"tags": [
|
||||
"metadata",
|
||||
"exif",
|
||||
"privacy",
|
||||
"sanitize",
|
||||
"policy",
|
||||
"evidence",
|
||||
"share"
|
||||
],
|
||||
"integration": {
|
||||
"contextVersion": 1,
|
||||
"launchModes": ["navigate", "new-tab"],
|
||||
@@ -21,6 +29,46 @@
|
||||
"crossOriginIsolated": false,
|
||||
"topLevelContext": false
|
||||
},
|
||||
"io": {
|
||||
"accepts": [
|
||||
{
|
||||
"mediaType": "*/*",
|
||||
"extensions": [],
|
||||
"label": "Files for bounded metadata inventory"
|
||||
}
|
||||
],
|
||||
"produces": [
|
||||
{
|
||||
"mediaType": "image/jpeg",
|
||||
"extensions": [".jpg", ".jpeg"],
|
||||
"label": "Verified re-encoded JPEG"
|
||||
},
|
||||
{
|
||||
"mediaType": "image/png",
|
||||
"extensions": [".png"],
|
||||
"label": "Verified re-encoded PNG"
|
||||
},
|
||||
{
|
||||
"mediaType": "image/webp",
|
||||
"extensions": [".webp"],
|
||||
"label": "Verified re-encoded WebP"
|
||||
},
|
||||
{
|
||||
"mediaType": "application/json",
|
||||
"extensions": [".json"],
|
||||
"label": "Inspection and policy evidence"
|
||||
},
|
||||
{
|
||||
"mediaType": "application/zip",
|
||||
"extensions": [".zip"],
|
||||
"label": "Safe-share bundle"
|
||||
}
|
||||
]
|
||||
},
|
||||
"capabilities": {
|
||||
"required": ["canvas-2d", "web-crypto", "workers"],
|
||||
"optional": ["create-image-bitmap"]
|
||||
},
|
||||
"privacy": {
|
||||
"processing": "local",
|
||||
"fileUploads": true,
|
||||
|
||||
Reference in New Issue
Block a user