Files
office-tools/public/README.md
T
zemion 08b8f84f7b
Verify / verify (push) Canceled after 0s
Release Office Tools 0.2.0
2026-09-02 07:32:31 +02:00

109 lines
4.1 KiB
Markdown

# Office Tools
Office Tools is a local-first browser application for opening and inspecting
office documents without sending them to a server. It provides safe, useful
viewing of documents, spreadsheets and presentations in Office Open XML and
OpenDocument packages, exact source-copy downloads and bounded semantic exports.
The application is part of the
[add·ideas Toolbox](https://git.add-ideas.de/lotobo/toolbox-portal), but remains
fully usable as a standalone static site at any URL depth.
## Initial format scope
| Kind | Office Open XML | OpenDocument | Legacy diagnostics |
| ------------- | ------------------------------------- | ------------ | ------------------ |
| Documents | `.docx/.docm/.dotx/.dotm` | `.odt` | `.doc/.dot/.rtf` |
| Spreadsheets | `.xlsx/.xlsm/.xltx/.xltm` | `.ods` | `.xls/.xlt/.xla` |
| Presentations | `.pptx/.pptm/.potx/.potm/.ppsx/.ppsm` | `.odp` | `.ppt/.pps/.pot` |
The viewer is deliberately read-only. Macro-enabled and template variants are
opened through their base OOXML family while VBA remains inert. It aims to preserve readable content,
structure and useful styling while clearly reporting features it cannot render.
It does not claim pixel-perfect fidelity with Microsoft Office or LibreOffice.
Macros, scripts, external resources and embedded active content are never run.
Office Open XML files use local Rust/WebAssembly parsers and canvas renderers.
OpenDocument files use the project's bounded ZIP/XML reader and semantic React
views. Both paths run locally, keep the interface responsive, support search and
navigation, and accept source files up to 100 MiB.
Every opened format can be downloaded as a bit-for-bit exact source copy. The
ODF semantic model additionally exports ODT text, the active ODS sheet as CSV,
an ODP text outline, and an application-owned JSON inspection report. Those
derived formats are intentionally lossy and never replace the source package.
See [docs/FORMAT-SUPPORT.md](docs/FORMAT-SUPPORT.md) for the feature matrix and
known limits.
## Privacy and security
- File bytes are read locally and are never uploaded.
- There is no telemetry, analytics or CDN runtime dependency.
- Imported markup is converted to application-owned React output; it is not
inserted as trusted HTML.
- Document links remain inert in this release, and no macros, scripts or
embedded active objects are executed.
- Parsing uses explicit file, package and rendering limits. A malformed file
fails as data rather than taking over the application.
See [docs/PRIVACY-SECURITY.md](docs/PRIVACY-SECURITY.md) for the threat model.
## Development
Requirements: Node.js 22 or newer and npm 11 or newer. The committed `.npmrc`
points the `@add-ideas` scope at the ADD Ideas package registry; credentials stay
in the caller's npm configuration.
```sh
npm ci
npm run dev
```
The complete local verification gate is:
```sh
npm run check
npm run test:browser
```
`vite.config.ts` uses `base: './'`. All application URLs, WASM and worker assets
must remain relative so a production build works at `/apps/office/`, in a deeper
test path, or standalone.
## Release artifact
Create the deterministic application ZIP and checksum with:
```sh
npm run release:artifact
```
The result is written to:
```text
release/office-tools-0.2.0.zip
release/office-tools-0.2.0.zip.sha256
```
The archive contains `toolbox-app.json`, built assets, the full GPL licence,
third-party notices, a generated runtime licence inventory, documentation and
`SOURCE.md`. File order, timestamps and modes are normalized for reproducible
output.
## Toolbox identity
- Manifest id: `de.add-ideas.office-tools`
- Portal target: `office`
- Source: <https://git.add-ideas.de/lotobo/office-tools>
- Licence: `GPL-3.0-or-later`
The application uses `@add-ideas/toolbox-shell-react` 0.3.0 and validates its
production tree with `@add-ideas/toolbox-testkit`.
## Licence
Office Tools is free software licensed under GPL-3.0-or-later. See
[LICENSE](LICENSE). Bundled dependencies retain their own licences; see
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and [LICENSES](LICENSES/README.md).