Release Binary Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 09:05:50 +02:00
parent 60768466c1
commit 592e0b9f59
26 changed files with 1468 additions and 53 deletions
+5
View File
@@ -1,5 +1,10 @@
# Changelog
## 0.2.0 - 2026-09-02
- Add bounded byte editing, binary search and reusable structure templates in
an isolated worker, with explicit offset and interpretation evidence.
## 0.1.0 - 2026-09-01
- Initial local-first binary conversion and byte inspection workbench.
+3 -3
View File
@@ -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 ---
+8 -2
View File
@@ -6,6 +6,12 @@ Convert, inspect and decode byte-oriented formats locally in the browser. Binary
- Synchronized UTF-8, hexadecimal, Base64, RFC 4648 Base32 and Bitcoin-alphabet Base58 conversions.
- A paged byte/offset/ASCII inspector with clickable highlighted source ranges.
- Checked insert, replace and delete operations over the canonical byte buffer.
- Exact UTF-8 and hex search, including `??` byte wildcards, capped result sets,
and a cancellable hard-deadline worker path for larger buffers.
- Little- and big-endian integer, floating-point, timestamp and UTF-8
interpretations at any checked offset.
- Named range bookmarks plus audited PNG, RIFF/WAVE and ELF header templates.
- CBOR and MessagePack JSON encode/decode.
- Strict ASN.1 DER TLV trees, including canonical identifiers, lengths and core primitive encodings.
- Protocol Buffers wire inspection with optional JSON field schemas for common scalar and nested message types.
@@ -13,7 +19,7 @@ Convert, inspect and decode byte-oriented formats locally in the browser. Binary
## Safety and limits
All input is inert data. The application makes no external requests and never evaluates decoded content. Inputs and encoded outputs are capped at 1 MiB; structured parsing is capped at depth 64 and 10,000 nodes. Base58 is capped at 4 KiB because arbitrary-base conversion is quadratic. DER rejects indefinite/non-minimal lengths and identifiers plus malformed core primitive encodings. Protobuf groups are deliberately unsupported. Schema assistance validates field records and wire compatibility, but is intentionally limited and is not a generated protobuf runtime.
All input is inert data. The application makes no external requests and never evaluates decoded content. Inputs, edits and encoded outputs are capped at 1 MiB; search patterns at 4 KiB, matches at 10,000, bookmarks at 100 and template fields at 128. Larger searches run in a disposable local worker with cooperative cancellation and a five-second hard deadline. Structured parsing is capped at depth 64 and 10,000 nodes. Base58 is capped at 4 KiB because arbitrary-base conversion is quadratic. DER rejects indefinite/non-minimal lengths and identifiers plus malformed core primitive encodings. Protobuf groups are deliberately unsupported. Templates inspect only declared fields and do not claim full format validation. Schema assistance validates field records and wire compatibility, but is intentionally limited and is not a generated protobuf runtime.
## Development
@@ -26,7 +32,7 @@ npm run test:browser
npm run package:release -- --force
```
The deterministic release is written to `release/binary-tools-0.1.0.zip` with a SHA-256 sidecar.
The deterministic release is written to `release/binary-tools-0.2.0.zip` with a SHA-256 sidecar.
## Licence
+2 -2
View File
@@ -1,10 +1,10 @@
# Source identity
- Project: Binary Tools
- Version: 0.1.0
- Version: 0.2.0
- Repository: https://git.add-ideas.de/lotobo/binary-tools
- Licence: GPL-3.0-or-later
- Build: Node.js 22+, npm 11, `npm ci && npm run release:artifact`
- Artifact: `binary-tools-0.1.0.zip`
- Artifact: `binary-tools-0.2.0.zip`
The generated `toolbox-app.json` repeats this version and source identity. Dependencies are exactly pinned by `package-lock.json`; bundled runtime licence texts are included in `LICENSES/npm-runtime-licenses.txt`.
+1 -1
View File
@@ -1,3 +1,3 @@
# Accessibility
Controls use native labels, buttons, selects and dialogs. Inspector formats expose tab semantics, parsing failures use alert regions, byte ranges have textual offsets, and every byte has an accessible label. Layout reflows below 62rem while wide byte rows remain horizontally scrollable. The shared shell provides system/light/dark themes and visible keyboard focus.
Controls use native labels, buttons, selects and dialogs. Inspector formats use a labelled pressed-state button group, parsing failures use alert regions, byte ranges have textual offsets, and every byte has an accessible label. Layout reflows below 62rem while wide byte rows remain horizontally scrollable. The shared shell provides system/light/dark themes and visible keyboard focus.
+1 -1
View File
@@ -1,5 +1,5 @@
const CACHE_PREFIX = "binary-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(
+14 -1
View File
@@ -3,7 +3,7 @@
"schemaVersion": 1,
"id": "de.add-ideas.binary-tools",
"name": "Binary Tools",
"version": "0.1.0",
"version": "0.2.0",
"description": "Convert, inspect and decode bytes locally.",
"entry": "./",
"icon": "./favicon.svg",
@@ -29,6 +29,19 @@
"crossOriginIsolated": false,
"topLevelContext": false
},
"io": {
"accepts": [
{ "mediaType": "*/*", "extensions": [] },
{ "mediaType": "application/octet-stream", "extensions": [".bin"] },
{ "mediaType": "text/plain", "extensions": [".txt", ".hex"] }
],
"produces": [
{ "mediaType": "application/octet-stream", "extensions": [".bin"] },
{ "mediaType": "text/plain", "extensions": [".txt", ".hex"] },
{ "mediaType": "application/json", "extensions": [".json"] }
]
},
"capabilities": { "required": [], "optional": ["workers"] },
"privacy": {
"processing": "local",
"fileUploads": true,