Commit Graph
27 Commits
Author SHA1 Message Date
Steffen Becker b3b8e58bd4 test: LibreOffice opens what we encrypt, and we open what it encrypts
Five legs in tests/lo-password.test.ts, driven through the repo's first UNO
helper because --convert-to cannot pass a password; self-skips without soffice
or python3-uno and runs with npm run test:lo. The probed format details live in
docs/architecture/encryption.md.
2026-09-04 19:30:04 +02:00
Steffen Becker 4b163e6d10 feat: a document can be saved encrypted with a password (ODF)
Writes LibreOffice's whole-package form: AES-256-GCM keyed by Argon2id over
SHA-256 of the password, the deflated package as one encrypted-package entry.
Reads that plus the per-entry AES-CBC/GCM form with PBKDF2 that every earlier
version writes; the nonce sits ahead of the ciphertext, which no manifest says.
Blowfish and unknown algorithms report an unsupported-encryption error.
2026-09-04 19:30:03 +02:00
Steffen Becker 1e88427154 test: semantic package lint, LO style resolution, cross-format rendering
Three legs against the closed-loop blind spot the duplicate-style bug
exposed: package-lint.test.ts checks invariants the schemas cannot
express (unique style ids/names, dangling style/num/rel references,
balanced ranges, manifest completeness); lo-roundtrip gains a
soffice→fodt leg asserting the styles LibreOffice resolves (Heading
chain Arial/bold/sizes, Word defaults); lo-render-consistency.test.ts
renders the kitchen sink from both formats through LibreOffice and
compares pagination and pixels (ratchet thresholds). CI's LO job
gains poppler-utils; test:lo runs both LO files.
2026-08-30 10:05:43 +00:00
Steffen Becker 946b7e44be chore: package.json names the real repo, homepage and contact
author, homepage and repository.url were still the scaffolding placeholders.
2026-08-18 10:33:16 +02:00
Steffen Becker 82993aeda3 chore: coverage report via npm run test:coverage
@vitest/coverage-v8 with include over src/ so untested files show up
at 0%; text summary plus the browsable coverage/ HTML (gitignored).
2026-08-15 23:01:50 +02:00
Steffen Becker 026f6b6d83 test: headless-Chromium smoke test for the UI layer
tests/smoke/run.mjs boots the production build in Playwright Chromium and
checks what jsdom cannot: the bundle boots, typing and the bold shortcut
reach ProseMirror, autosave survives a reload, a corpus ODT imports and
paginates; any uncaught page error fails the run. Wired as npm run
test:smoke and a CI job (build + chromium install), playwright-core is
now a devDependency.
2026-08-15 21:58:47 +02:00
Steffen Becker 0da75ed456 refactor: the project is called edentext
Renames the product in the docs, the page title and the DOCX creator, and moves
the whole storage namespace from odf-editor- to edentext-. The prefix is a
per-origin namespace, so it stays the product name rather than a generic one.
2026-08-13 21:43:12 +02:00
Steffen Becker 361b14dc17 test: compare the rendered page against LibreOffice
Everything else in tests/ compares documents at the model level; nothing checked
what a page actually looks like. run.mjs renders the same file through soffice
and through the real app in Chromium, reads both back as word boxes, and diffs
page count, line count, line text and line position.

The corpus stays out of the repo: make-fixtures.mjs authors the baseline .docx
files, and real-world documents are whatever you drop into the gitignored
fixtures/ yourself.
2026-08-08 08:35:34 +00:00
Steffen Becker 8e6c4817d8 feat: add lazy tiff to png decoding 2026-07-10 13:02:27 +02:00
Steffen Becker 7faa16c89d feat: add german spell check 2026-07-05 14:15:30 +02:00
Steffen Becker 9700487353 feat: docx export 2026-06-30 02:21:10 +02:00
Steffen Becker 98e7ee2458 feat: add hyperlinks 2026-06-27 19:55:56 +02:00
Steffen Becker fd2683a01b test: set up basic tests 2026-06-24 23:07:18 +02:00
Steffen Becker 0a35a65c83 feat: add spell-check 2026-06-18 23:34:45 +02:00
Steffen Becker 2526144ab9 feat: add pdf-export 2026-06-17 21:07:20 +02:00
Steffen Becker 3088da0ac9 feat: import odt 2026-06-12 21:17:29 +02:00
Steffen Becker 872414ef23 feat: add buttons for superscript and subscript 2026-06-10 02:19:03 +02:00
Steffen Becker b28a33b104 feat: add strikethrough 2026-06-09 23:29:15 +02:00
Steffen Becker fff077b841 chore: prepare AGPL license 2026-06-09 23:02:19 +02:00
Steffen Becker e2f522854f feat: tables 2026-06-06 12:22:45 +02:00
Steffen Becker 355f12afd7 feat: text highlighting 2026-06-06 12:19:05 +02:00
Steffen Becker 1ca69b09cb chore: normalize package-lock.json to npm 10.8.2 format 2026-06-06 12:19:05 +02:00
Steffen Becker 863e1498a8 fix: update odf-kit from 13.4 to 13.5 to fix landscape orientation bag 2026-06-06 12:18:33 +02:00
Steffen Becker 416a405d0f feat: introduce text alignment 2026-05-28 00:17:51 +02:00
Steffen Becker 747ac44a34 feat: add font selection to extended toolbar 2026-05-25 22:40:20 +02:00
Steffen Becker 0098374ac8 feat: add bullet and ordered list support 2026-05-25 20:50:08 +02:00
Steffen Becker 9596814753 chore: set up Vite + Svelte 5 TypeScript project 2026-05-25 20:42:54 +02:00