release: prepare OneNote Tools 0.2.0
This commit is contained in:
92
README.md
92
README.md
@@ -1,53 +1,61 @@
|
||||
# OneNote Tools
|
||||
|
||||
OneNote Tools is a standalone, local-first browser reader for a tested subset
|
||||
of Microsoft OneNote `.one` sections and CAB-based `.onepkg` packages. The
|
||||
parser is native TypeScript, runs in a dedicated module worker, and never
|
||||
uploads or persists the selected notebook.
|
||||
OneNote Tools is a standalone, local-first browser reader and exporter for a
|
||||
tested subset of Microsoft OneNote `.one` sections and CAB-based `.onepkg`
|
||||
packages. Its native TypeScript parser runs in a dedicated module worker; the
|
||||
selected notebook is neither uploaded nor persisted.
|
||||
|
||||
It is also an independent application in the add·ideas Toolbox contract: the
|
||||
It is also an independent application in the add·ideas Toolbox contract. The
|
||||
source uses the Toolbox SDK shell and manifest, builds with Vite `base: './'`,
|
||||
and is delivered to Toolbox Portal as an already-built, checksummed static ZIP.
|
||||
and is delivered to Toolbox Portal as a checksummed static ZIP.
|
||||
|
||||
## What version 0.1.0 can open
|
||||
## What version 0.2.0 supports
|
||||
|
||||
- Desktop revision-store `.one` sections from the tested OneNote family. The
|
||||
reader exposes section/page names, stable page IDs, created and updated
|
||||
timestamps when present, page level, and readable plain text.
|
||||
- Unfragmented FSSHTTPB-packaged `.one` sections matching the tested Joplin
|
||||
family. Package cells, revision chains, object groups, and resolved object
|
||||
and page-space references feed the same bounded content reader.
|
||||
- Single-cabinet `.onepkg` files whose CAB folders are uncompressed, MSZIP,
|
||||
Quantum, or LZX compressed. Each contained supported `.one` section is
|
||||
parsed independently, so one unsupported section does not hide sections that
|
||||
did parse.
|
||||
- Package entries, safe normalized paths, uncompressed sizes, compression
|
||||
metadata, section/page navigation, and structured diagnostics.
|
||||
- Desktop revision-store and unfragmented FSSHTTPB package-store `.one`
|
||||
sections from the tested producer families.
|
||||
- Complete single- or multi-cabinet `.onepkg` sets using uncompressed, MSZIP,
|
||||
Quantum, or LZX CAB folders. Split packages can be selected as one `.onepkg`
|
||||
file together with all of its `.cab` companions, in any selection order.
|
||||
- Desktop and FSSHTTPB `.onetoc2` stores inside packages. Section groups,
|
||||
authored section order, recycle-bin filtering, pages, and subpages are
|
||||
presented as a notebook tree; unresolved entries retain a deterministic
|
||||
fallback rather than hiding readable sections.
|
||||
- Structured page content: outlines and layout hints, rich-text runs, safe
|
||||
links, tables, PNG/JPEG images, decoded ink strokes, and declared embedded
|
||||
attachments. Resource bytes remain lazy until previewed, explicitly
|
||||
downloaded, or included in an explicit export.
|
||||
- Local exports as structured JSON, plain text, Markdown, inert semantic HTML,
|
||||
or a deterministic static notebook ZIP. Exports retain parser diagnostics
|
||||
and unsupported-content summaries; they do not create or modify OneNote
|
||||
files.
|
||||
|
||||
The golden tests parse a real Joplin desktop `.one` file with three pages, an
|
||||
unfragmented 17,197-byte Joplin FSSHTTPB `.one` file with one page, and a real
|
||||
Joplin `.onepkg` with seven entries, five sections, and seven pages. LZX
|
||||
`0x1203` and `0x1303`, uncompressed CAB, one- and two-block MSZIP data, and
|
||||
single- and multi-frame Quantum data are covered by fixtures. The MSZIP and
|
||||
Quantum fixtures are CAB-level evidence, not a claim about a particular
|
||||
OneNote `.onepkg` producer.
|
||||
The redistributable golden corpus covers desktop and unfragmented FSSHTTPB
|
||||
sections, a real LZX `.onepkg`, all four CAB compression modes, a five-part
|
||||
spanning CAB set, TOC hierarchy behavior, rich content, resources, and every
|
||||
export format. The generic MSZIP, Quantum, and multi-cabinet fixtures establish
|
||||
CAB behavior; they are not claims about every OneNote producer.
|
||||
|
||||
This is a structural reader, not a full-fidelity OneNote renderer. Images,
|
||||
tables, ink, embedded files, layout, formatting, links, and exports are not
|
||||
rendered. Fragmented FSSHTTPB data elements and some producer variants remain
|
||||
unsupported. See
|
||||
[format support](docs/FORMAT_SUPPORT.md) for the precise matrix.
|
||||
This remains a deliberately bounded compatibility subset. Fragmented FSSHTTPB
|
||||
data-element reconstruction, equations, audio/video, and untested producer
|
||||
variants are not supported. Visual placement is approximate rather than a
|
||||
pixel-perfect OneNote layout. See [format support](docs/FORMAT_SUPPORT.md) for
|
||||
the precise matrix.
|
||||
|
||||
There is no Rust/Wasm runtime, server, proxy, upload, telemetry, or notebook
|
||||
storage. All parsing and CAB/LZX/MSZIP/Quantum decompression is ordinary
|
||||
browser JavaScript produced from the TypeScript source.
|
||||
There is no Rust/Wasm runtime, notebook-processing application backend, upload
|
||||
proxy, telemetry, or notebook storage. All parsing and CAB decompression is
|
||||
ordinary browser JavaScript produced from the TypeScript source.
|
||||
|
||||
## Use
|
||||
|
||||
Run the static build or open it through Toolbox Portal, then drop or choose one
|
||||
local `.one` or `.onepkg` file. Use **Clear file** to terminate the current
|
||||
worker and release application references. Browser garbage collection does not
|
||||
provide a secure-erasure guarantee.
|
||||
Run the static build or open it through Toolbox Portal, then:
|
||||
|
||||
- choose one local `.one` file; or
|
||||
- choose one `.onepkg` file and, for a split package, all linked `.cab` parts
|
||||
in the same file-picker action.
|
||||
|
||||
Use **Clear file** to terminate the current worker and release application
|
||||
references. Browser garbage collection does not provide a secure-erasure
|
||||
guarantee.
|
||||
|
||||
## Development
|
||||
|
||||
@@ -72,7 +80,7 @@ supplied through the SDK's `?toolbox=` context mechanism. The app uses the SDK
|
||||
|
||||
```sh
|
||||
npm run release:artifact
|
||||
(cd release && sha256sum -c onenote-tools-0.1.0.sha256)
|
||||
(cd release && sha256sum -c onenote-tools-0.2.0.sha256)
|
||||
```
|
||||
|
||||
The ZIP root contains the built static app and manifest plus the changelog,
|
||||
@@ -95,7 +103,7 @@ into the portal React tree.
|
||||
|
||||
## Licence
|
||||
|
||||
OneNote Tools is licensed under MPL-2.0. The complete licence is in
|
||||
[`LICENSES/MPL-2.0.txt`](LICENSES/MPL-2.0.txt). Adapted and third-party material
|
||||
remains under the terms recorded in
|
||||
OneNote Tools is primarily MPL-2.0; the adapted multi-cabinet module is
|
||||
LGPL-2.1-only. The complete licence texts are in [`LICENSES/`](LICENSES/), and
|
||||
adapted/third-party material remains under the terms recorded in
|
||||
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
|
||||
|
||||
Reference in New Issue
Block a user