11 Commits
Author SHA1 Message Date
Steffen Becker 1ba47e0ff3 docs: the book spread shows a chapter opening beside a running page
The shot follows the chapter heading rather than a fixed page, so it keeps both
page designs in view if the break ever moves. The gallery notes why the folio
and the document page differ there.
2026-09-06 22:42:23 +02:00
Steffen Becker 92a5c7d713 docs: the showcase documents vary their running heads
The book carries the chapter and the title towards the outer edge and its page
number centred at the foot; the newsletter opens with the masthead and runs a
head with a rule from the second page on. The thesis keeps chapter and number
in the head, so the three read as three page designs.
2026-09-06 22:04:59 +02:00
Steffen Becker 1f38ff0e0e docs: the newsletter's schedule opens the second page
Both tables now sit on it, so the tables screenshot shows the page nearly full
instead of half white; the shot takes it at 120%.
2026-09-06 21:58:19 +02:00
Steffen Becker 629408e8fc docs: the vendored count.js carries its ISC notice in licenses.txt
The collector walks node_modules, so a file copied into public/ had no entry.
The copy has no copyright line of its own; the text is upstream's LICENSE
section for count.js, with the project's copyright holder.
2026-09-06 21:20:44 +02:00
Steffen Becker 284fdae43e docs: the showcase screenshots are shot at twice the pixel density
openApp() passes page options through, so the showcase run sets
deviceScaleFactor 2 — same CSS viewport and layout as the tests, 2800x2000 px
images that stay sharp where the README scales them down.
2026-09-06 21:19:14 +02:00
Steffen Becker 99f10c9399 docs: each showcase shot opens the tab its feature lives in
A shot names a ribbon tab and, optionally, where the caret goes: the tables
one lands in a cell, so the contextual Table Layout tab is up. The floating
table toolbar is hidden while shooting — it covered the table the ribbon is
already showing. `data-tab` on the tab buttons is what the script clicks.
2026-09-06 19:07:24 +02:00
Steffen Becker d156482a3f test: LibreOffice, the layout lint and a monkey read the editor's work back
lo-fuzz.test.ts hands every fuzz seed to LibreOffice as .odt and .docx and
compares what comes back, listing the differences LibreOffice makes by design.
test:layout opens the corpus, the showcase and fuzz seeds in the browser, holds
the page count against LibreOffice and checks the lines for overlap, margin
escapes and stranded headings. test:monkey types at random on corpus documents
and asserts the schema, undo to the start, redo, and that both saved formats
read back. browser.mjs now carries the dev server and the settle helper.
2026-09-06 19:07:16 +02:00
Steffen Becker 406206c300 docs: showcase documents and screenshots replace the README's sample picture
scripts/showcase/run.mjs builds three sample documents plus a review
variant as .odt and .docx through the app's own exporters in headless
Chromium, opens each through the file dialog and takes the README
screenshots; docs/showcase/ holds the results. The README gets a
light/dark hero picture and a gallery of four tiles.
2026-09-06 19:07:13 +02:00
Steffen Becker c336127006 fix: ship every bundled MIT notice and link licenses.txt in About
collect-licenses falls back to the README's License section (only when it
carries a copyright line) for packages without a LICENSE file; hash.js and
isarray now ship their full notice. The About dialog links /licenses.txt,
which was previously reachable only by knowing the URL.
2026-08-20 15:15:52 +02:00
Steffen Becker f1b63c722c feat: the build ships its dependency licenses and its commit
The minifier strips every legal comment, so the bundle reached users without
the notice MIT and Apache-2.0 require to travel with a copy. collect-licenses
quotes all 97 bundled packages into public/licenses.txt, which deploys like the
font and dictionary licenses do. The About dialog's version now carries the
short commit, so a user of the hosted app can identify the source it was built
from - what AGPL 13 asks for and a fixed 0.1.0 could not answer.
2026-08-18 16:44:42 +02:00
Steffen Becker 44b351e865 feat: a thesaurus, LibreOffice's own synonyms
Ctrl+F7, Review ▸ Thesaurus and the context menu open one dialog: the
word at the caret, the sense groups it is in, click one to replace it,
and a box to look up any other word. The data is MyThes re-packed to one
group per line (de 3.0MB/37k groups, en 6.7MB/143k) — the format repeats
every group once per member, ten times the bytes. Loaded on first use for
the document's language and scanned, not indexed: ~4ms a lookup, where a
word→group index measured ~100MB of memory against the text's ~8MB.
2026-08-15 20:23:32 +02:00