@@ -5,14 +5,16 @@ layers:
|
||||
|
||||
1. The Toolbox shell owns navigation, application identity, theme preferences,
|
||||
help and source links.
|
||||
2. The ingestion boundary checks extension and source size; each parser then
|
||||
validates package identity from its contents and enforces resource limits.
|
||||
2. The ingestion boundary checks extension, source size and an eight-byte
|
||||
signature; renamed OLE/RTF and non-ZIP inputs fail with clear diagnostics.
|
||||
Each parser then validates package identity and enforces resource limits.
|
||||
3. Format adapters convert office packages into one application-owned,
|
||||
read-only document model.
|
||||
4. Viewer components render that model as document pages, spreadsheet sheets or
|
||||
presentation slides without trusting imported markup.
|
||||
|
||||
The original file is immutable. Opening a new file cancels obsolete work and
|
||||
The original `File` is immutable. “Save exact copy” passes that Blob directly to
|
||||
the shared download helper, so there is no parse/rebuild round trip. Opening a new file cancels obsolete work and
|
||||
releases prior buffers and object URLs. Expensive parsing belongs in a module
|
||||
worker so the shell stays responsive and cancellation has a clear boundary.
|
||||
|
||||
@@ -27,6 +29,11 @@ normalized paths, CRC and expansion limits before namespace-aware XML parsing.
|
||||
It rejects DTDs, entities, external resources and active XML, and returns only a
|
||||
typed, serializable model plus transferable packaged image buffers.
|
||||
|
||||
The semantic ODF adapter retains default/named style inheritance, page geometry,
|
||||
spreadsheet row/column defaults and visibility, drawing transforms, comments,
|
||||
notes and active-content notices. Derived text, CSV, outline and JSON inspection
|
||||
exports are bounded and labelled separately from the byte-exact source path.
|
||||
|
||||
## Deployment contract
|
||||
|
||||
Vite emits relative URLs (`base: './'`). `toolbox-app.json` sits beside
|
||||
|
||||
@@ -3,19 +3,33 @@
|
||||
Office Tools 0.1.0 targets read-only browser viewing, not editing or
|
||||
pixel-identical reproduction.
|
||||
|
||||
| Family | Extensions | 0.1 viewing coverage |
|
||||
| ---------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------- |
|
||||
| Office Open XML document | `.docx` | Paginated sections, text, lists, tables, images, shapes, charts, headers/footers, comments, selection and find |
|
||||
| Office Open XML spreadsheet | `.xlsx` | Sheets, cached values/formulas, styles, merges, frozen panes, images, charts, comments, navigation and find |
|
||||
| Office Open XML presentation | `.pptx` | Slides/masters, text, shapes, images, tables, charts, notes, selection, navigation and find |
|
||||
| OpenDocument text | `.odt` | Semantic headings, paragraphs/runs, lists, tables, packaged images, metadata and foot/endnotes |
|
||||
| OpenDocument spreadsheet | `.ods` | Sheets, typed/cached values, formulas, repeats, merges, annotations, basic safe styling and paged rows |
|
||||
| OpenDocument presentation | `.odp` | Slide order, positioned text/shapes, groups, tables, packaged images, notes and basic safe styling |
|
||||
| Family | Extensions | 0.1 viewing coverage |
|
||||
| ---------------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
||||
| Office Open XML document | `.docx/.docm/.dotx/.dotm` | Paginated sections, text, lists, tables, images, shapes, charts, headers/footers, comments, selection and find |
|
||||
| Office Open XML spreadsheet | `.xlsx/.xlsm/.xltx/.xltm` | Sheets, cached values/formulas, styles, merges, frozen panes, images, charts, comments, navigation and find |
|
||||
| Office Open XML presentation | `.pptx/.pptm/.potx/.potm/.ppsx/.ppsm` | Slides/masters, text, shapes, images, tables, charts, notes, selection, navigation and find |
|
||||
| OpenDocument text | `.odt` | Semantic headings, runs, inherited styles, tables, images, metadata, comments and foot/endnotes |
|
||||
| OpenDocument spreadsheet | `.ods` | Typed/cached values, formulas, repeats, merges, row/column defaults, visibility, annotations and paged rows |
|
||||
| OpenDocument presentation | `.odp` | Page geometry, positioned/transformed shapes, groups, tables, packaged images, notes and safe styling |
|
||||
|
||||
Legacy compound-binary `.doc`, `.xls` and `.ppt` formats are explicitly outside
|
||||
the first package-reader slice. They require a distinct, bounded parser and must
|
||||
not be misidentified as their XML successors.
|
||||
|
||||
The input boundary also identifies RTF, older OpenOffice `.sxw/.sxc/.sxi`, flat
|
||||
OpenDocument `.fodt/.fods/.fodp`, renamed OLE Compound Files and invalid non-ZIP
|
||||
packages. It explains the required conversion instead of passing them to a ZIP
|
||||
or XML successor parser.
|
||||
|
||||
## Export paths
|
||||
|
||||
- `Save exact copy` downloads the original immutable File for every format.
|
||||
- ODT exports plain semantic text; ODS exports the active sheet's cached display
|
||||
values as bounded UTF-8 CSV; ODP exports a text slide/notes outline.
|
||||
- ODF inspection JSON excludes embedded asset bytes while retaining asset
|
||||
identities, sizes, styles, metadata and the bounded semantic structure.
|
||||
- Derived exports are intentionally not advertised as round-trip replacements.
|
||||
|
||||
## Never executed
|
||||
|
||||
Macros, VBA projects, embedded executables, OLE objects, scripts, remote
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
|
||||
Selecting a file grants the current browser tab access to that file's bytes.
|
||||
Office Tools does not upload them, send telemetry or fetch a remote conversion
|
||||
service. Data remains in memory unless a future feature explicitly offers a
|
||||
user-triggered local download or browser-local save.
|
||||
service. Data remains in memory unless the user explicitly chooses an exact-copy
|
||||
or derived local download. Download actions create short-lived object URLs and
|
||||
do not contact a service.
|
||||
|
||||
## Threat model
|
||||
|
||||
|
||||
Reference in New Issue
Block a user