109 lines
4.1 KiB
Markdown
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).
|