Release Package Tools 0.1.0

This commit is contained in:
2026-09-01 13:04:50 +02:00
commit e42943e689
66 changed files with 11321 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
# Accessibility
Package Tools uses native headings, buttons, tables, details/summary trees,
labels, status regions and dialogs. All workbench operations are keyboard
reachable, focus indicators are visible, and state is not conveyed only by
colour. Layout reflows to one column on narrow screens and follows the toolbox
light, dark and system themes.
The recursive package tree can be verbose for screen readers; path search and
the tabular result view provide an alternative. Please report accessibility
problems with browser and assistive-technology details.
+18
View File
@@ -0,0 +1,18 @@
# Architecture
The React workbench is a thin UI over four bounded layers:
1. `src/archive` validates ZIP metadata, paths, sizes, compression ratios and
selected-entry extraction using zip.js without workers.
2. `src/package/analyze.ts` selects at most 512 metadata files / 16 MiB,
determines a package adapter, parses static XML or bounded JSON, and builds
references and diagnostics.
3. Tree and comparison modules create deterministic projections without
reading entry payloads.
4. The preview path reopens the package and performs strict CRC/overlap checks
for one bounded entry. Markup is text-only; only browser-supported raster
image/audio/video blobs receive local object URLs.
The UI lazy-loads the workbench beneath the shared toolbox shell. The app uses
relative URLs so it works under nested portal paths, and a service worker caches
same-origin resources after first use.
+15
View File
@@ -0,0 +1,15 @@
# Privacy and security model
Files remain in browser memory and are never uploaded. Package Tools performs
no telemetry, DNS lookup, external relationship fetch, certificate lookup or
signature validation. Export occurs only after an explicit button press.
Limits in v0.1 include 512 MiB source and aggregate declared expansion, 20,000
entries, 256 MiB per entry, 200:1 compression ratio, 2 MiB per metadata entry,
16 MiB total inspected metadata, and 512 metadata files. UI rendering is capped
at 5,000 tree/comparison rows while diagnostics cover the bounded inventory.
External URLs are displayed as inert text. XML containing DTD or ENTITY
declarations is rejected. SVG, HTML, JavaScript, PDF and executable content are
never rendered from a package; raster image/audio/video preview is delegated to
the browser through a local blob URL.