Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
a99772f
Bump version to 0.5.0
ChenZhenIO Sep 16, 2026
a25d80d
Bump Flutter version to 3.47.4
ChenZhenIO Sep 18, 2026
01174d6
Implemented the unified clipboard paste pipeline. Added central Ctrl+…
ChenZhenIO Sep 18, 2026
3c30d60
Refactor paste pipeline initialization logic
ChenZhenIO Sep 18, 2026
901ded0
Implemented unified clipboard paste corrections.
ChenZhenIO Sep 19, 2026
37bce08
Fix unified paste insertion semantics and filesystem error handling a…
ChenZhenIO Sep 19, 2026
0114931
Refactor and enhance clipboard paste logic for improved inline handli…
ChenZhenIO Sep 19, 2026
0281560
Refactor and expand inline handling in clipboard paste logic, add imp…
ChenZhenIO Sep 19, 2026
d941280
Improve and refactor clipboard paste handling logic in inline and blo…
ChenZhenIO Sep 19, 2026
f7518e8
Refactor inline serialization and source mapping logic, improve marke…
ChenZhenIO Sep 19, 2026
4570526
Improve clipboard paste logic: add terminal failure handling, optimiz…
ChenZhenIO Sep 19, 2026
f349795
Enhance inline source mapping: add delimiter syntax handling, optimiz…
ChenZhenIO Sep 19, 2026
c3b336a
Refactor and enhance source mapping logic: add block projection, impr…
ChenZhenIO Sep 19, 2026
e7d4f8f
Enhance inline source mapping: add support for autolinks and referenc…
ChenZhenIO Sep 19, 2026
b64e4d2
Remove redundant `BusyMarkReferenceLinkSyntax` and optimize inline se…
albert-gee Sep 19, 2026
a85350f
Refactor hard break serialization: improve source mapping, enhance ru…
albert-gee Sep 19, 2026
7213f9d
Enhance source mapping: add standalone `<br>` handling, improve line …
albert-gee Sep 19, 2026
3823d91
Refactor `source_editor`: improve clipboard insertion logic, simplify…
albert-gee Sep 20, 2026
7491bf5
Refactor `source_editor`: optimize inline logic, streamline serializa…
albert-gee Sep 20, 2026
2d679cb
Refactor `source_editor`: consolidate `_serializeHardBreakRuns`, stre…
albert-gee Sep 20, 2026
3feceb9
Refactor `source_editor`: enhance block insertion logic, optimize con…
albert-gee Sep 20, 2026
368f574
Refactor `source_editor`: improve structured block split logic, enhan…
albert-gee Sep 20, 2026
ab98b83
Implemented spell-checking stack across source editing, WYSIWYG block…
albert-gee Sep 20, 2026
b5546eb
Spell-checking 48 entries are now catalog metadata only; users instal…
albert-gee Sep 20, 2026
43452d2
Implemented spelling-review remediation across projection, correction…
albert-gee Sep 20, 2026
13df43f
Improved projection, caching, and incremental handling for spell-chec…
albert-gee Sep 20, 2026
8f4c236
Improve asset ingestion: add provisional publication tracking, commit…
albert-gee Sep 20, 2026
f299f53
Enhanced spell-check engine: improved projection and caching, added f…
albert-gee Sep 21, 2026
31863ad
Refactor `source_editor`: centralize asset finalization logic, enhanc…
albert-gee Sep 21, 2026
e1801c7
Enhance `source_editor`: improve structured paste handling, optimize …
albert-gee Sep 21, 2026
b681e57
Refactor `workspace`: introduce `DocumentBuffer` integration, enhance…
albert-gee Sep 21, 2026
04a8d07
Optimize `workspace_controller`: simplify file existence check logic …
albert-gee Sep 21, 2026
bca230a
Refactor spell-check engine: refine document ownership logic, improve…
albert-gee Sep 21, 2026
1206cd6
Refactor `local_history` and spell-check integration: improve untitle…
albert-gee Sep 21, 2026
e00890f
Refactor `source_editor` and `settings_screen`: reorganize spelling l…
albert-gee Sep 21, 2026
281b80a
Refactor spelling logic: streamline dictionary installation flow, rep…
albert-gee Sep 21, 2026
57ad840
Refactor spelling banner logic: replace inlined `BusyMarkBanner` crea…
albert-gee Sep 21, 2026
5cae53a
Refactor `source_editor`: link `BusyMarkSourceEditingController` to `…
albert-gee Sep 22, 2026
06b2cce
Introduce `BusyMarkRadioButton`: replace `YaruRadioButton` for consis…
albert-gee Sep 22, 2026
054f96a
Implemented document-chrome redesign
albert-gee Sep 22, 2026
e25a580
Introduce `BusyMarkSwitch`: replace `YaruSwitch` for consistent desig…
albert-gee Sep 22, 2026
d3b3536
Update `_DocumentEditor` logic: improve paragraph layout calculations…
albert-gee Sep 22, 2026
69383d5
Preserve content from layout table pastes
albert-gee Sep 22, 2026
f38602d
Harden Markdown spelling projections
albert-gee Sep 22, 2026
b384051
Refine workspace and dictionary settings
albert-gee Sep 22, 2026
4e4dea3
Update Linux verification tooling
albert-gee Sep 22, 2026
012f654
Refactor `settings_screen`: merge "Window" and "Advanced" settings in…
albert-gee Sep 22, 2026
9939904
Updated the audit test to assert that Release/** is not a Linux CI tr…
albert-gee Sep 22, 2026
1038c5c
Resolve native package assets before CI tests
albert-gee Sep 22, 2026
3279d4d
Run offline smoke tests with runner home
albert-gee Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Dictionary license inputs are checksum-addressed byte artifacts. Preserve
# upstream bytes generally, while pinning the one normalized source file to
# the LF representation stored in Git and recorded in the inventory.
assets/spelling/licenses/** -text
assets/spelling/licenses/es/README_th_es.txt text eol=lf
assets/spelling/CHECKSUMS.sha256 text eol=lf
assets/spelling/NOTICE text eol=lf
assets/spelling/VERSION text eol=lf
assets/spelling/dictionaries.json text eol=lf
102 changes: 97 additions & 5 deletions .github/workflows/flutter-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ name: Flutter Linux

on:
pull_request:
branches: [main]
branches:
- main
push:
branches: [main]
branches:
- main

jobs:
writerside-conformance:
Expand Down Expand Up @@ -38,6 +40,8 @@ jobs:
ninja-build \
pkg-config \
libgtk-3-dev \
libglib2.0-dev \
libpango1.0-dev \
libhandy-1-dev \
libsecret-1-dev \
libwebkit2gtk-4.1-dev \
Expand Down Expand Up @@ -100,9 +104,50 @@ jobs:
- name: Analyze
run: flutter analyze

- name: Test native Hunspell package explicitly
working-directory: packages/busymark_spellcheck_native
run: |
dart pub get
dart test

- name: Prepare all-language spelling test resources
run: tools/fetch_spelling_dictionaries.sh build/spelling-test

- name: Validate every supported dictionary with the native engine
env:
BUSYMARK_TEST_SPELLING_ROOT: ${{ github.workspace }}/build/spelling-test
run: flutter test test/src/spelling_bundle_integration_test.dart

- name: Build Linux release
run: flutter build linux --release

- name: Verify release ships catalog and notices without language pairs
run: |
spelling_root="build/linux/x64/release/bundle/share/busymark/spelling"
test -s "$spelling_root/dictionaries.json"
test -s "$spelling_root/NOTICE"
test -z "$(find "$spelling_root" -type f \( -name '*.aff' -o -name '*.dic' \) -print -quit)"

- name: Install one dictionary and exercise it after an offline restart
run: |
report="${RUNNER_TEMP}/spelling-release.json"
profile="${RUNNER_TEMP}/spelling-profile"
mkdir -p "$profile"
xvfb-run -a -s '-screen 0 1280x1024x24' \
env GDK_BACKEND=x11 BUSYMARK_RELEASE_SMOKE=1 \
XDG_DATA_HOME="$profile" LIBGL_ALWAYS_SOFTWARE=1 \
build/linux/x64/release/bundle/busymark \
--spelling-release-smoke="$report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert report["checks"]["bundledDictionaryFileCount"] == 0, report; assert report["checks"]["dictionaryInstalledDuringRun"], report; assert report["checks"]["installedDictionaryCount"] == 1, report' "$report"
sudo unshare --net --fork -- \
runuser -u "$(id -un)" -- \
xvfb-run -a -s '-screen 0 1280x1024x24' \
env GDK_BACKEND=x11 BUSYMARK_RELEASE_SMOKE=1 \
XDG_DATA_HOME="$profile" LIBGL_ALWAYS_SOFTWARE=1 \
build/linux/x64/release/bundle/busymark \
--spelling-release-smoke="$report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert not report["checks"]["dictionaryInstalledDuringRun"], report; assert report["checks"]["personalWordPresentBeforeRun"], report' "$report"

- name: Test including bundled D2 and Typst paths
env:
BUSYMARK_D2_PATH: ${{ github.workspace }}/build/linux/x64/release/bundle/libexec/busymark/d2
Expand Down Expand Up @@ -131,7 +176,7 @@ jobs:
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report' "$report"
test -s "${RUNNER_TEMP}/visualization-smoke.pdf"

- name: Run visualization smoke tests under Wayland
- name: Run spelling and visualization smoke tests under Wayland
run: |
runtime_dir="/run/user/$(id -u)"
sudo install -d -m 700 -o "$(id -u)" -g "$(id -g)" "$runtime_dir"
Expand All @@ -151,6 +196,16 @@ jobs:
sleep 0.25
done
test -S "$runtime_dir/wayland-99"
spelling_report="${RUNNER_TEMP}/spelling-release-wayland.json"
spelling_profile="${RUNNER_TEMP}/spelling-profile"
sudo unshare --net --fork -- \
runuser -u "$(id -un)" -- \
env XDG_RUNTIME_DIR="$runtime_dir" WAYLAND_DISPLAY=wayland-99 \
XDG_DATA_HOME="$spelling_profile" GDK_BACKEND=wayland \
BUSYMARK_RELEASE_SMOKE=1 LIBGL_ALWAYS_SOFTWARE=1 \
build/linux/x64/release/bundle/busymark \
--spelling-release-smoke="$spelling_report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert report["checks"]["sourceEditorTransaction"], report; assert report["checks"]["formattedRichEditorTransaction"], report; assert report["checks"]["tableCellEditorTransaction"], report' "$spelling_report"
XDG_RUNTIME_DIR="$runtime_dir" WAYLAND_DISPLAY=wayland-99 \
GDK_BACKEND=wayland LIBGL_ALWAYS_SOFTWARE=1 \
/usr/bin/python3 -u tools/visualization_smoke.py \
Expand Down Expand Up @@ -222,6 +277,33 @@ jobs:
"$query" "$loader" | grep -q "\"svg\" 6 \"gdk-pixbuf\""
'

- name: Install one strict-Snap dictionary and verify refresh/offline use
run: |
report="$HOME/snap/busymark/common/spelling-release.json"
rm -f "$report"
xvfb-run -a -s '-screen 0 1280x1024x24' \
env GDK_BACKEND=x11 BUSYMARK_RELEASE_SMOKE=1 \
LIBGL_ALWAYS_SOFTWARE=1 snap run busymark \
--spelling-release-smoke="$report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert report["checks"]["bundledDictionaryFileCount"] == 0, report; assert report["checks"]["dictionaryInstalledDuringRun"], report; assert report["checks"]["installedDictionaryCount"] == 1, report' "$report"
test -d "$HOME/snap/busymark/common/spelling/dictionaries/downloaded/en-US"
before_revision="$(snap list busymark | awk 'NR == 2 {print $3}')"
sudo snap install --dangerous \
"${{ steps.snap-artifact.outputs.snap }}"
after_revision="$(snap list busymark | awk 'NR == 2 {print $3}')"
test -n "$before_revision"
test -n "$after_revision"
test "$before_revision" != "$after_revision"
sudo snap disconnect busymark:network
trap 'sudo snap connect busymark:network >/dev/null' EXIT
xvfb-run -a -s '-screen 0 1280x1024x24' \
env GDK_BACKEND=x11 BUSYMARK_RELEASE_SMOKE=1 \
LIBGL_ALWAYS_SOFTWARE=1 snap run busymark \
--spelling-release-smoke="$report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert not report["checks"]["dictionaryInstalledDuringRun"], report; assert report["checks"]["installedDictionaryCount"] == 1, report; assert report["checks"]["personalWordPresentBeforeRun"], report' "$report"
sudo snap connect busymark:network
trap - EXIT

- name: Exercise strict Snap visualization and PDF paths under X11
run: |
report="$HOME/snap/busymark/common/visualization-release-x11.json"
Expand All @@ -234,15 +316,16 @@ jobs:
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report' "$report"
test -s "$HOME/snap/busymark/common/visualization-smoke.pdf"

- name: Exercise strict Snap visualization and PDF paths under Wayland
- name: Exercise strict Snap spelling and visualization under Wayland
run: |
runtime_dir="/run/user/$(id -u)"
sudo install -d -m 700 -o "$(id -u)" -g "$(id -g)" "$runtime_dir"
XDG_RUNTIME_DIR="$runtime_dir" \
weston --backend=headless-backend.so --socket=wayland-99 \
--idle-time=0 --log="${RUNNER_TEMP}/weston-snap.log" &
weston_pid=$!
trap 'kill "$weston_pid" 2>/dev/null || true' EXIT
sudo snap disconnect busymark:network
trap 'sudo snap connect busymark:network >/dev/null; kill "$weston_pid" 2>/dev/null || true' EXIT
for attempt in {1..40}; do
if [ -S "$runtime_dir/wayland-99" ]; then
break
Expand All @@ -254,6 +337,13 @@ jobs:
sleep 0.25
done
test -S "$runtime_dir/wayland-99"
spelling_report="$HOME/snap/busymark/common/spelling-release-wayland.json"
XDG_RUNTIME_DIR="$runtime_dir" WAYLAND_DISPLAY=wayland-99 \
GDK_BACKEND=wayland BUSYMARK_RELEASE_SMOKE=1 \
LIBGL_ALWAYS_SOFTWARE=1 \
timeout --signal=TERM 300s snap run busymark \
--spelling-release-smoke="$spelling_report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report; assert report["checks"]["sourceEditorTransaction"], report; assert report["checks"]["formattedRichEditorTransaction"], report; assert report["checks"]["tableCellEditorTransaction"], report' "$spelling_report"
report="$HOME/snap/busymark/common/visualization-release-wayland.json"
XDG_RUNTIME_DIR="$runtime_dir" WAYLAND_DISPLAY=wayland-99 \
GDK_BACKEND=wayland BUSYMARK_RELEASE_SMOKE=1 \
Expand All @@ -262,3 +352,5 @@ jobs:
--visualization-release-smoke="$report"
python3 -c 'import json,sys; report=json.load(open(sys.argv[1], encoding="utf-8")); assert report["ok"], report' "$report"
test -s "$HOME/snap/busymark/common/visualization-smoke.pdf"
sudo snap connect busymark:network
trap 'kill "$weston_pid" 2>/dev/null || true' EXIT
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ for filesystem and Git-integration details.

## Run from source

BusyMark currently uses Flutter 3.47.2. Install the Linux packages required by
BusyMark currently uses Flutter 3.47.4. Install the Linux packages required by
Flutter and BusyMark's CMake configuration:

```bash
Expand Down
77 changes: 77 additions & 0 deletions assets/spelling/CHECKSUMS.sha256
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
4575a8d402694008656ed3cda93d158f58adbd0ae54a8b9b47824e53f9f7d19e NOTICE
8b037210fca77dc4fb8f6f0573e1578717d73f429cbb25e8f10b54d314800a11 VERSION
4fa250112cfbee3fcf3e2dc1cc1f9b60bc556f439bdc0310e35dce19ed5b8bd3 dictionaries.json
73480d918cd78d655508e80aa88c022cbd53634524a0f714b5f2519f2cf19124 licenses/ar/COPYING.txt
5ead684ae5211ccf615686959e24bd21ef6eebbb6195997529fda08b993f615e licenses/ar/README_ar.txt
e7431ac20e815b6797369e802f9e4bb1b0082485060d8b096235f035d741bd89 licenses/de/COPYING_GPLv2
8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 licenses/de/COPYING_GPLv3
b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c licenses/de/COPYING_LGPL_v2.0.txt
dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 licenses/de/COPYING_LGPL_v2.1.txt
2d9d81e88ecd0e837122f4688ca7a6a5bd7bb41bff6e21ff5d4663eb43372db3 licenses/de/COPYING_OASIS.txt
c141f4f79c428b7348b5012836f4ad3db4d124f288f15effc22696dc876512ae licenses/de/README_de_DE_frami.txt
7662cbc363fdee12bc03a5295148587bb76923c121792a401115e654fea37b5c licenses/de/README_extension_owner.txt
be7b3c67a66ea7185a69a3ce3b1e712cd6bb904dce8ac0eecdefd2f1a948baf3 licenses/de/README_hyph_de.txt
405accab10106f6d09152f2f5865ec3545fbcf40817b5416b4b99a077f303a87 licenses/de/README_thesaurus.txt
b8dd4d2ace5358adf5e6ddfac720871188e6f211cf56af97db631f4ee53e0ff3 licenses/en/README.txt
f0897dcfdf058bcfc93fbc8e7e1b5da4c27ae9e175ee3a9242e887f02eb84a8b licenses/en/README_en_AU.txt
86700e39b2307dda4c087ad3505a1e634a5b4d518ab808c398a16d21ebe957e2 licenses/en/README_en_CA.txt
18b5833de60a52ffcb6e5b6b5048bb5a5d910acfecd5b096985b77058223880c licenses/en/README_en_GB.txt
cc8abeac37067747d66d5365e8163145be6f3c23f488005074bf255bac89f2e4 licenses/en/README_en_GB_thes.txt
168b4c01cb841f766a72f310b065c04d09cff46376c37a81d799593ce751c371 licenses/en/README_en_US.txt
116ade99dd4a92715b21ae5b358a1a8cc814c76c0d6e582fdba4870835d1a6e2 licenses/en/README_en_ZA.txt
6f3d1dddcf62d2d452801bd86289ad5826a30d15a502c0825f5c73715372db50 licenses/en/README_hyph_en_GB.txt
9bcae072bff45cc0333d6b3c508c92d85b9065fc861c743c1506b303eba3f4a1 licenses/en/README_hyph_en_US.txt
2271b9893955aa0abae1193cf56a66badaa906c0af030edd46113d10c59f2e24 licenses/en/README_lightproof_en.txt
23dbc4f3ea771304e5ab3e5709843813d2619f3c0cfc81229b53fcdb9985f29a licenses/en/WordNet_license.txt
df84246204e3c54cd24aebbc23714235f5fc41d754d53b65444a2afbf070130f licenses/en/license.txt
2b70fd5cb8d3b34cc6ae322c969557a2270b99017594addb2531ef5ffd9e1b17 licenses/es/LICENSE.md
0b5c39a863ecb61f5c5631ec1cd977667ef9bda6da6f90e80e9fc0edcbfadd97 licenses/es/README_hunspell_es.txt
1f1088dce1140d981660faf3f5acc825e74aa1f943a8bec88cb046e4c528a1fb licenses/es/README_hyph_es.txt
c721aad5e8f15297d4a8aa30b31a1bec1a4cbbeaeec6b2633cd64e2b0fafab30 licenses/es/README_th_es.txt
4cff6a48ea9168d545316ab96bac24eff4745bf198cbdd9f57eb10a9d8f93f0d licenses/et_EE/README_et_EE.txt
da273b8ec03e35774a426e9df047ad85253ec9e61a5c056f019d57c1395ef1cb licenses/et_EE/README_hyph_et_EE.txt
7429736f069a84049bcfbee436e5cea3a3fd9b98348d880d9e43ebcf39721989 licenses/fa_IR/LICENSE
aa1450d6eab0d140719048e7277204bae086947fe5d8cd834d115c0dd0cf7a81 licenses/fa_IR/README_fa_IR.txt
4a25abf740ad6ba5e8d0cfc0d2ffadc3c13c303f8fe389f323b061a389350f83 licenses/fr_FR/dictionaries/README_dict_fr.txt
6951d9806c65c7f757d303061ca49cd7a1ddeddc552147f5c29de6540821f2cf licenses/fr_FR/dictionaries/README_hyph_fr.txt
431a690c5be7741eeaa0e9654aeb75ed2b0af337492e622e8393d090b4612b3e licenses/fr_FR/dictionaries/README_thes_fr.txt
204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 licenses/hi_IN/COPYING
2b373a1e07efe18e89c04c7f69bd540681a5926edcb478a4331d0df387861487 licenses/hi_IN/README_hi_IN.txt
97628afebc60f026f5c2b25d7491c46a5c4ee61f693e7cfa07fbd2c03605979b licenses/id/LICENSE-dict
1f3360c2c2fbe9918f3658a20fcd2f64113a11726b7327ca1df7220c433689e1 licenses/id/LICENSE-thes
7c18fabf4169a4b7f0f7effac5309c26294d8cb354d9ed5cbc8ea2868abcf942 licenses/id/README-dict.adoc
6bbe6d0559d00b6e05acc9477cebfbf0da2b183b4c541cf47f7153dc7e3dfda5 licenses/id/README-thes
e6f356c3c49bc6016b6a635c20b468468eef6d011953a7051bbdfd56e17f0d3b licenses/it_IT/README_hyph_it_IT.txt
34c3e93595cf3cf5f3afc9bc0d98eea12593750383f1e82ed1d3ca29f9681283 licenses/it_IT/README_it_IT.txt
07cd83b0d7664ebc620f589524069549f6ead33bccedb7f27d04ed0311e62905 licenses/it_IT/README_th_it_IT.txt
3e41d215a0d9ce21c1fa982d48d2958d539a51011f469f741b51f97e2595ec7e licenses/it_IT/legacy/it_IT_COPYING
0328874f246fa9511fb19be6fc38db57f1351b00356e7c7187de59529fb04e6f licenses/it_IT/legacy/it_IT_README.1st
ec6332fd60cca5d4cd1b69c78aebae33bb49ccea856ed1d69722e3a23f0dfc82 licenses/it_IT/legacy/it_IT_README.txt
4de624abc748506298e7be68f2213e422673b43e1674da4b376804096b87dcec licenses/it_IT/legacy/it_IT_license.txt
3e41d215a0d9ce21c1fa982d48d2958d539a51011f469f741b51f97e2595ec7e licenses/it_IT/legacy/th_it_IT_COPYING
3097ecbc3ebd844266b556768748b7c07bde915dd5dd0b70eee30670a91a2599 licenses/it_IT/legacy/th_it_IT_README
e0b13b74b287a71bc668a756fe0d1bcfe5adafb860acab0d81e71593333e1724 licenses/ko_KR/README_ko_KR.txt
2189c248cbc054445aeac6cd65b87eebd0a115efeb55ed498b0f2a73441805dd licenses/nl_NL/LICENSE.txt
aa4685a78f32d0d24a67dd5043ef4e39acc8720c3e416fe5d201985980dbc004 licenses/nl_NL/README.md
e7431ac20e815b6797369e802f9e4bb1b0082485060d8b096235f035d741bd89 licenses/no/COPYING
0fb3b682bbe5fd3fe23a22d26cc7c417115016bb5f40ec4cf5a62aabe6e5c9c9 licenses/no/README
0fb3b682bbe5fd3fe23a22d26cc7c417115016bb5f40ec4cf5a62aabe6e5c9c9 licenses/no/README_NO.txt
5dd6d4fa61585062d8774afff75d0c51d76bb8126078fef0c0e69740eb093ce0 licenses/no/README_hyph_NO.txt
fb5f9b4a0643821cf88775c0932810c1cd05f236136c913e3eaf1e24806f3f44 licenses/pl_PL/README_en.txt
ce3ad7ab1d3a8b767b8f7dcc870796fbda76bc7ad8cde22f6312b0cf86a5bd11 licenses/pl_PL/README_pl.txt
e691ed1e79934293b0cd6996a14af1520ff893c02f920c09ed0c90aa5f0a8abc licenses/pl_PL/README_pl_PL.txt
9300db07784a8575743e68cd4c9b966c66f9212c708bd3bbf0190df61e75114a licenses/pt_BR/README_Lightproof_pt_BR.txt
bb064f3db7ba5f5536da7d079773f692c5f928822e8aebc3d78259ff6cceb9e5 licenses/pt_BR/README_en.txt
07400608865ce4c964cc443a9f354c733ca7f3f7d31f4463222b927cb7c54b87 licenses/pt_BR/README_hyph_pt_BR.txt
9974ce691fdc1fe731717d7a2dc668244405fdc2bf9bf3367eb9b29e85177c88 licenses/pt_BR/README_pt_BR.txt
253031afa265c7bec5d2e195c659129a7ff254f9d57c57a08eba4a9051868840 licenses/pt_BR/license-thes.readme
8de865eb2f5a83a182d96964d1fe0eee05ae0d68a94f9e9938e4f6349075f5c4 licenses/ru_RU/README_Lightproof_ru_RU.txt
262af2f6ad70a61e5ee1332ff44fa8ee50edca819cf33207d8ad6ba6a0c9be52 licenses/ru_RU/README_ru_RU.txt
faf06127db60c80b4deefc26a86b3c8a18e1ba46e89d29db8f232501ea850b69 licenses/ru_RU/README_thes_ru_RU_M_aot_and_v2.txt
3f3d9e0024b1921b067d6f7f88deb4a60cbe7a78e76c64e3f1d7fc3b779b9d04 licenses/tr_TR/LICENSE
18750c09a1e666a6d34854b92dfdc0353c3bfe39008b412d539f52821ecdbdec licenses/tr_TR/README.txt
b5866714694f0e9a7c9d044984b4b39ec6289ade07fa7d2a083a31f5072f3529 licenses/uk_UA/README_hyph_uk_UA.txt
29aed1f76c8552b9ba22b00f9f3a5f8316498f95b50f5c1aad3a9743a560ba6c licenses/uk_UA/README_th_uk_UA.txt
664436fee625b4a3e712483947d1711a2f467670f4c389bcf10abca2a564e1dc licenses/uk_UA/README_uk_UA.txt
d32e4c8faf974bdeb87da10a5951556b33744cf9b50a7f06125074e11f30d7f6 licenses/vi/LICENSES-en.txt
e300eee4d3fd59e2886e785b63f6ded6badc7b9c6883cf73e365b59635d6128d licenses/vi/LICENSES-vi.txt
3 changes: 3 additions & 0 deletions assets/spelling/NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
LibreOffice dictionary data
Revision: 32b006a2c22a4ac7e8ed3f03346f7b3d85a970a4
Each dictionary remains under the terms recorded in licenses/.
1 change: 1 addition & 0 deletions assets/spelling/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
32b006a2c22a4ac7e8ed3f03346f7b3d85a970a4
Loading
Loading