29 Commits
Author SHA1 Message Date
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 855cc24371 feat: the site counts anonymous visits with GoatCounter
GoatCounter: no cookies, no IP or user-agent stored, EU-hosted. count.js is
vendored into public/ so no file loads from a foreign origin — only the count
request itself leaves. The /count endpoint is documented as staying
compatible, so the copy does not go stale.
2026-09-06 21:03:28 +02:00
Steffen Becker f6c906f9fa perf: the word lists travel as .txt, which the host compresses
GitHub Pages serves a .dic as text/x-c and leaves it uncompressed, while
text/plain goes out gzipped: the English list cost 552 KB over the wire
where 191 KB would do. Only the fetch path changes; the mount name the
checker sees stays <code>.dic. Measured first load 1.83 → 1.70 MB.
2026-09-06 19:07:11 +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 91a1ecb26d style: brand the link-preview image with the logo header
Icon + wordmark above the screenshot on the light chrome color,
same 1200x630 frame.
2026-08-22 12:10:04 +00:00
Steffen Becker dca155ddd6 chore: add a single-entry sitemap.xml 2026-08-22 11:45:37 +00:00
Steffen Becker 236aad826d chore: add robots.txt (allow all, point at the sitemap) 2026-08-22 11:45:29 +00:00
Steffen Becker 0c420b8765 feat: add Open Graph tags, a canonical URL and a 1200x630 preview image
Shared links now render a preview card; the image is the README
screenshot center-cropped to the standard card ratio.
2026-08-22 11:44:05 +00:00
Steffen Becker 742cf97571 chore: add the Google Search Console site-verification file 2026-08-22 11:03:37 +00:00
Steffen Becker 96e5b2fc87 fix: the PWA install icon uses the current logo
The icon PNGs still carried the old two-leaf motif; only favicon.svg was
updated in the redesign, and Chrome takes the PNGs for the install icon.
Re-rendered both from the current logo, added a padded maskable variant
so Android's mask no longer clips the leaves, bumped the service-worker
cache so existing installs drop the stale icons, and removed the
unreferenced old favicon and wordmark files.
2026-08-21 15:39:19 +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 7e0f9ca617 docs: the font licenses ship with the fonts, the notices name them all
public/ is copied verbatim into the build, src/assets/ is not - so the fonts
were deployed without the license texts that OFL-1.1 and Bitstream Vera require
to travel with them. Moving the texts to public/font-licenses/ fixes that with
no build step. The notices covered only Liberation and missed five bundled
dependencies; the commercial license now states what it cannot relicense, the
copyleft German dictionary and thesaurus above all.
2026-08-18 10:33:10 +02:00
Steffen Becker 3ae8d27b26 fix: the build runs under a subpath, not only at the domain root
base './' emits relative asset URLs; the manifest, the service-worker
registration and sw.js's precache resolve against their own location;
the four hardcoded /image literals turn relative. Verified headless
under a simulated /edentext/ subpath: boots, types, SW scope correct.
2026-08-17 18:59:48 +02:00
Steffen Becker ad0df9df05 fix: the logo's stem is visible on every background
An <img> sees neither data-theme nor the document's color, so the ink stem and
its prefers-color-scheme flip left it dark on the dark chrome. One slate stem
instead: 5.1:1 on white, 3.5:1 on the dark surfaces.
2026-08-16 14:46:38 +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
Steffen Becker e1b2fefa55 feat: the OS can hand a document to the installed app
The manifest registers .odt/.ott/.docx/.dotx as file handlers and a
launchQueue consumer opens what the OS passes, keeping the handle so the
first Save writes that file. A .dotx now reads like an .ott: Word's
importer, but never bound as the file to save over.
2026-08-15 01:00:20 +02:00
Steffen Becker d05459b0e0 style: keep the favicon's leaf colors fixed across themes
Only the stem needed the dark-mode swap for visibility; the slate
and clay leaves already read fine on both backgrounds.
2026-08-14 22:40:42 +02:00
Steffen Becker bbf3b99490 style: favicon adapts to a dark browser theme
An embedded prefers-color-scheme media query swaps the ink stem and
leaf fills for the app's own dark-theme tokens, so the near-black
stem no longer vanishes on a dark tab bar.
2026-08-14 22:40:42 +02:00
Steffen Becker ca001e96d9 style: keep the J1 favicon around as favicon-j1.svg
Not deleted, just no longer the live one now that F5 is.
2026-08-14 22:40:21 +02:00
Steffen Becker 1a525ac256 style: switch the favicon to F5 (Full pair)
Bigger, rounder leaves on a stem with a bud, uniformly scaled from
the pitch-deck mark to fill the 32x32 viewBox.
2026-08-14 22:40:06 +02:00
Steffen Becker b19409aacb feat: the editor installs and runs with the network gone
Nothing here talks to a server at runtime, so a cached shell is the whole
editor. The worker reads the build's hashed asset names out of the entry
document, which precaches without a build step; the document itself stays
network-first, or it would keep naming the assets of the build it was
cached with. Matching ignores Vary: a precached asset is fetched without
the page's Origin, and a server answering "Vary: Origin" never matches it.

Verified in a headless Chromium with the network cut.
2026-08-14 22:11:49 +02:00
Steffen Becker 0428cb674f style: darken the favicon's ground line for visibility 2026-08-14 22:11:49 +02:00
Steffen Becker cdbc0a071d feat: new leaf-pair favicon, shown in the About dialog
Two asymmetric blades on a ground line, in the slate/clay brand
colors, replace the old page-lines icon. The old favicon is kept as
favicon-old.svg. The About dialog shows it above the wordmark.
2026-08-14 09:12:54 +02:00
Steffen Becker 7faa16c89d feat: add german spell check 2026-07-05 14:15:30 +02:00
Steffen Becker cc1e606d7a style: switch from PrimeText to EdenText logo 2026-07-05 09:03:33 +02:00
Steffen Becker a75214dab8 style: add PrimeText logo 2026-06-20 00:03:21 +02:00
Steffen Becker 238c0c95c0 feat: english dictionary 2026-06-18 23:36:40 +02:00
Steffen Becker 6ca51efe1e style(ui): add document favicon 2026-05-25 20:43:03 +02:00