Files
onenote-tools/README.md

116 lines
5.0 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.
Version 0.3.2 uses the stable shared top bar, with the Toolbox icon and
`add·ideas Toolbox` label in a fixed far-left block; the app title and one
tagline centered; and Help, the OneNote source link, Apps, and Personalize in a
fixed far-right cluster. Personalize uses the shared portal-style appearance
panel while catalogue counts and preference import/export stay in the portal.
## What version 0.3.2 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.3.2.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).