Repository navigation
feat: German and Spanish spell-check dictionaries - #21
Merged
Merged
Conversation
com.glyph.dictionary-de (igerman98, via dictionary-de 3.0.0) and com.glyph.dictionary-es (RLA-ES, via dictionary-es 4.0.0) add Deutsch and Español to the app's spell check, built like the Persian dictionary: sandboxed, no permissions, data read through ctx.assets only once the language is picked. Each LICENSE carries the upstream notice and the full text of the license this package distributes the data under (GPL-2.0 for German, MPL-1.1 for Spanish), and ships in the package. German declares apiVersion 0.28.0: the app checks with Hunspell itself from that version, and older apps ignore the compound flags igerman98 builds words from, so they would underline Fußball and every other compound. Spanish needs no compounding and keeps 0.16.0. scripts/dictionaries.test.mjs checks the German, Spanish and Persian word lists with hunspell-wasm 0.3.0, the engine the app ships, pinned by package-lock.json; the smoke job installs it with npm ci --ignore-scripts. The API reference, the dictionary recipe and the ecosystem page describe the engine, the size cap, and English as a core plugin, and the Persian README now says it runs sandboxed, as its manifest does. Refs hamidfzm/glyph#1052
…ext is decoded The recipe now tells authors to ship the license, so its example manifest lists it. The API reference says the app takes the text as already decoded and ignores the affix file's SET line, so an ISO-8859 dictionary is converted first. The test-only package gets a name of its own instead of the clone's folder name in its lockfile. Refs hamidfzm/glyph#1052
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the official German (
com.glyph.dictionary-de) and Spanish (com.glyph.dictionary-es) spell-check dictionaries, built like the Persian one: sandboxed, no permissions, and their data read throughctx.assetsonly once the language is picked in Settings, Editor, Spell Check.Refs hamidfzm/glyph#1052 (closed by hamidfzm/glyph#1057, the app side).
Changes
plugins/com.glyph.dictionary-de/: igerman98 by way ofdictionary-de3.0.0, label "Deutsch (German)".plugins/com.glyph.dictionary-es/: RLA-ES by way ofdictionary-es4.0.0, a general Spanish dictionary not tied to one country, label "Español (Spanish)".LICENSEholds the upstream notice and the full text of the license this package distributes the data under, and is listed in the manifest'sfilesso it ships in the zip. Both upstreams let the recipient choose: German ships under GPL-2.0 (its "version 2 or 3"), Spanish under MPL-1.1 (one of GPL-3.0, LGPL-3.0 and MPL-1.1).plugin.jsoncarries the placeholdersha256; the release job rewritespackageUrland the digest.scripts/dictionaries.test.mjschecks the German, Spanish and Persian word lists (accepted words, flagged misspellings, the expected correction among the suggestions) withhunspell-wasm0.3.0, the engine the app ships. A rootpackage.jsonandpackage-lock.jsonpin it as the repo's only dev dependency, andsmoke.ymlinstalls it withnpm ci --ignore-scriptsbeforenode --test; the job still holds onlycontents: read.index.json,index/, anddocs/plugin-catalog.mdregenerated withscripts/build-index.mjs.docs/api-reference.md: stacking (unloading a dictionary brings back the one it replaced), the Hunspell engine from 0.28.0, the size cap, and how the text is decoded (the affix file'sSETline is ignored, so an ISO-8859 dictionary is converted first).docs/recipes.md: ship the license infiles(the example manifest now lists it), and declare 0.28.0 for a compounding dictionary.docs/ecosystem.md: English is now a core plugin, and why it is the one dictionary in the app.docs/contributing.md: the smoke job.Testing
npm ci --ignore-scripts && node --test: 33 passing, including the three word lists.node scripts/check-plugins.mjspasses, and a freshscripts/build-index.mjsleaves the committed index unchanged.