Skip to content

fix(dictionary-fa): ship the Apache-2.0 license text in the package - #22

Merged
hamidfzm merged 1 commit into
feat/dictionaries-de-esfrom
fix/fa-dictionary-license
Nov 12, 2026
Merged

hamidfzm merged 1 commit into
feat/dictionaries-de-esfrom
fix/fa-dictionary-license

Conversation

@hamidfzm

@hamidfzm hamidfzm commented Nov 4, 2026

Copy link
Copy Markdown
Member

Summary

The official Persian dictionary's package ships without its license. The release zip holds only main.js, assets/fa.aff and assets/fa.dic, and the folder's LICENSE was a short Apache notice with no license text. Apache-2.0 section 4(a) requires giving recipients a copy of the license, so this brings the Persian package in line with how #21 ships German and Spanish.

Stacked on #21 (base feat/dictionaries-de-es), which also regenerates the index and edits the Persian README. Merge #21 first; GitHub then retargets this PR to main. If this fix should land before #21 (which waits on the app's 0.28.0 release), it can be rebased onto main instead.

Changes

  • plugins/com.glyph.dictionary-fa/LICENSE: the section layout of the German and Spanish packages. First the Lilak notice, naming the copyright holder as the header of assets/fa.aff does (upstream's own LICENSE leaves the name blank, which the old file copied), then a line saying the package distributes the data under Apache-2.0, then the full Apache License 2.0 text. That text is the apache.org LICENSE-2.0.txt byte for byte (md5 3b83ef96387f14655fc854ddc3c6bd57, the same bytes as the copies in several packages on disk; the copy in typescript is reflowed and lacks the appendix, so it was not used).
  • manifest.json: LICENSE added to files, so the release zip carries it.
  • Version 1.0.1 in manifest.json and plugin.json. packageUrl and sha256 keep pointing at the published 1.0.0 zip, as the Hello Status 1.1.0 bump did in fix(hello-status): match the registration to the manifest and gate drift in CI #8: the release job rewrites both after merge, and until then the index still names a zip that verifies.
  • README.md: the package link points at the 1.0.1 release, and the license mention points at LICENSE.
  • scripts/dictionaries.test.mjs: a test per official dictionary that fails when its manifest leaves LICENSE out of files.
  • index.json, index/language.json and docs/plugin-catalog.md regenerated with node scripts/build-index.mjs.

Testing

  • npm ci --ignore-scripts && node --test: 36 passing (the release-official suite skips on Windows and runs in the Smoke job).
  • With LICENSE removed from the Persian manifest, the new test fails for com.glyph.dictionary-fa only.
  • node scripts/check-plugins.mjs passes, and a fresh scripts/build-index.mjs leaves the committed index unchanged.
  • The text after the license heading in LICENSE hashes to the canonical LICENSE-2.0.txt digest above.

The Persian dictionary's release zip carried only main.js and the two
Hunspell files. Its LICENSE was a short Apache notice with no license
text and was not in the manifest's files, so recipients got no copy of
the license, which Apache-2.0 section 4(a) requires.

- LICENSE now follows the layout of the German and Spanish packages: the
  Lilak notice, naming the copyright holder as the header of
  assets/fa.aff does, then the full Apache License 2.0 text (the
  apache.org LICENSE-2.0.txt, byte for byte).
- manifest.json lists LICENSE in files, so the release zip includes it.
- Version 1.0.1 in manifest.json and plugin.json. packageUrl and sha256
  keep pointing at the published 1.0.0 zip until the release job
  rewrites them, as with the Hello Status 1.1.0 bump.
- The README links the 1.0.1 release and points at LICENSE.
- A test fails when any official dictionary's manifest leaves LICENSE
  out of files.
@hamidfzm hamidfzm self-assigned this Nov 12, 2026
@hamidfzm
hamidfzm added this pull request to stack #23 November 12, 2026 23:20
@hamidfzm
hamidfzm merged commit c6d37ac into main Nov 12, 2026
3 checks passed
@hamidfzm
hamidfzm deleted the fix/fa-dictionary-license branch November 12, 2026 23:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant