110 lines
4.6 KiB
Markdown
110 lines
4.6 KiB
Markdown
# OneNote Tools
|
|
|
|
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
|
|
source uses the Toolbox SDK shell and manifest, builds with Vite `base: './'`,
|
|
and is delivered to Toolbox Portal as a checksummed static ZIP.
|
|
|
|
## What version 0.2.1 supports
|
|
|
|
- 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 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 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, 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:
|
|
|
|
- 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
|
|
|
|
Node.js 22 or newer is required. The checked-in `.npmrc` contains only the
|
|
public package registry mapping and no credential.
|
|
|
|
```sh
|
|
npm ci
|
|
npm run dev
|
|
npm run check
|
|
```
|
|
|
|
`npm run check` validates manifest synchronization, TypeScript, ESLint,
|
|
Prettier, fixture-backed Vitest tests, the production build, and
|
|
`toolbox-check dist`.
|
|
|
|
The application works standalone. A same-origin Toolbox catalogue can be
|
|
supplied through the SDK's `?toolbox=` context mechanism. The app uses the SDK
|
|
`AppShell` and does not add a second suite-level switcher.
|
|
|
|
## Release artifact
|
|
|
|
```sh
|
|
npm run release:artifact
|
|
(cd release && sha256sum -c onenote-tools-0.2.1.sha256)
|
|
```
|
|
|
|
The ZIP root contains the built static app and manifest plus the changelog,
|
|
corresponding-source information, security/support/provenance documents, and
|
|
the required project and third-party licence texts. File order and ZIP
|
|
timestamps are fixed. Existing artifacts are not overwritten unless `--force`
|
|
is passed after `--`.
|
|
|
|
Toolbox Portal expands the reviewed ZIP below an `apps/<target>/` path and
|
|
locks its exact SHA-256. It does not build this repository or import this app
|
|
into the portal React tree.
|
|
|
|
## Design and provenance
|
|
|
|
- [Format support](docs/FORMAT_SUPPORT.md)
|
|
- [Security model and active limits](docs/SECURITY.md)
|
|
- [Pinned references and normative specifications](docs/REFERENCE_IMPLEMENTATIONS.md)
|
|
- [Port provenance](docs/PORTING.md)
|
|
- [Fixture provenance](tests/fixtures/README.md)
|
|
|
|
## Licence
|
|
|
|
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).
|