Repository navigation
chore: Prepare Release v10.4.1 (auto-deploy) - #9467
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
release-draft
branch
17 times, most recently
from
October 22, 2026 05:17
abaced3 to
5b99773
Compare
github-actions
Bot
force-pushed
the
release-draft
branch
from
October 22, 2026 16:38
5b99773 to
1586645
Compare
github-actions
Bot
force-pushed
the
release-draft
branch
from
October 22, 2026 16:38
1586645 to
ef0bbcc
Compare
github-actions
Bot
force-pushed
the
release-draft
branch
9 times, most recently
from
October 24, 2026 07:40
fcd6e01 to
a917927
Compare
github-actions
Bot
force-pushed
the
release-draft
branch
28 times, most recently
from
November 6, 2026 14:46
65aa7b6 to
8471686
Compare
github-actions
Bot
force-pushed
the
release-draft
branch
from
November 6, 2026 15:28
8471686 to
abfab0f
Compare
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.
Release v10.4.1
Release Notes
Details
Fixes
fix: `cspell init` updates the config in the current directory (#9552)
fix:
cspell initupdates the config in the current directory (#9552)Summary
cspell initnow updates the config file in the current directory, so you no longer need-cto point at it. Parent directories are not searched.Feature
Run
cspell initwith the options you want, and it updates the config that cspell would load for the current directory:.vscode/and.config/.package.json: it counts only if it has acspellsection.--outputor--formatstill creates a new file, even if a config exists.--configstill names the file to use.cspell initcreatescspell.config.yaml, as before.JavaScript and TypeScript configs
cspell initcan't edit a config such ascspell.config.mjs, so changes go in a newcspell.config.yamlthat imports it. The code file is not changed, and the new file holds only what you asked for.For example,
cspell init --locale en-GBbesidecspell.config.mjscreates this file:Before, it created a separate config that did not import the code file, which hid its settings.
The new file takes priority over the code file, so a setting it holds overrides the same setting there. If no option asks for a change, nothing is written.
fix: `cspell init` only changes what you ask for and handles new JSON paths (#9551)
fix:
cspell initonly changes what you ask for and handles new JSON paths (#9551)Summary
cspell initnow changes only what you ask for in a config that already has settings, and no longer crashes when creating a new JSON file by path.version,language, and their comments are no longer added. Options such as--locale,--import, and--dictionarystill apply.{}file, and apackage.jsonwith nocspellsection. They get the default settings, and the schema reference where the format supports it.cspell init -c cspell.jsonandcspell init -o cspell.jsonused to fail withUnable to parseunless you also passed--format json. The file extension now decides the format of a new file named this way.For this existing
cspell.config.yaml:Before,
cspell init -c cspell.config.yamlwrote:After, the file is unchanged.
fix: `cspell init` no longer adds the schema to existing config files (#9550)
fix:
cspell initno longer adds the schema to existing config files (#9550)Summary
cspell initno longer adds or replaces the schema reference in a config file that already exists, unless you ask for it with the new--schemaflag.--no-schemastill leaves it out.--schema: adds the schema reference to an existing file, or replaces the one it has.For this existing
cspell.json:{ "words": ["foo"] }Before,
cspell init -c cspell.jsonwrote:{ "words": ["foo"], "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", "version": "0.2", "language": "en" }After:
{ "words": ["foo"], "version": "0.2", "language": "en" }fix: cspell-tools no longer depends on the glob package (#9540)
fix: cspell-tools no longer depends on the glob package (#9540)
Summary
@cspell/cspell-toolsnow finds files with the glob support built into Node.js, so installing it no longer pulls in theglobpackage.cspell-tools compileandcspell-tools gzipmatch the same files as before, except for these cases:*/*.txtor./**/*.txt, can find different files than before. The result depends on the pattern and the Node.js version. Naming the link in the pattern, such aslink/*.txt, works as before.**followed by a dot name, such as**/.hidden/*: these patterns match nothing on older Node.js versions, such as 22.21.1. They work on 22.23.0 and 24.13.1 and later.Matching files can also be processed in a different order. This can only affect the output of
compile --no-sort, when several files are merged into one dictionary.fix: Stop storing the file paths of issues in the cache (#9522)
fix: Stop storing the file paths of issues in the cache (#9522)
Summary
The cache no longer stores the full path of the file with each spelling issue. A
universalcache shared with others no longer shows where the project lived on the machine that made it, and cache files with issues are smaller.Follows up on #9519.
Technical Details
fix: Report cached issues at the file's current location (#9519)
fix: Report cached issues at the file's current location (#9519)
Summary
Issues read from a
universalcache are now reported at the file's current location. Before, a cache copied to another folder or machine reported issues at the path of the folder that made it.Fixes #9427
cspell doc.mdin a copied folder now printsdoc.md:1:12 - Unknown word (speling), the same as--no-cache.Technical Details
fix: cspell-tools: apply top-level target options and remove options that have no effect (#9470)
fix: cspell-tools: apply top-level target options and remove options that have no effect (#9470)
Summary
cspell-tools buildnow applies target options set at the top level ofcspell-tools.config.yamlto every target. Options that were accepted but never had an effect are removed, so the config only offers settings that work.What changed
Top-level target options now work. Each one is a default for every target, and a target's own value wins:
generateNonStrictlocalesortremoveDuplicatesdictionaryDirectivesSource options belong on sources. They were accepted in other places but ignored there, and are now removed:
split,maxDepth,allowedSplitWords,storeSplitWordsAsCompounds, andminCompoundLengthat the top level.allowedSplitWordson a target.keepRawCaseis removed everywhere. It has had no effect since at least early 2023. To keep the case of words read withsplit: legacy, add# cspell-tools: keep-caseto the word list file.For the
compilecommand:--keep-raw-caseis deprecated. It had no effect. It is hidden from--help, and using it prints a warning.--max_depthnow takes effect. It was ignored before.--initwrites--max_depthand--spliton each source, sobuilduses them.Example
With
src/words.txtcontainingHello, the builtwords.txtbefore this change:After:
Does this affect my dictionaries?
cspell-dictssetsmaxDepth: 0at the top level, and moving it onto its Hunspell source shrinks the dictionary from about 108 million words to about 325 thousand.--keep-raw-casetocspell-tools compile, it still works, and prints--keep-raw-case has no effect and will be removed in future versions.Remove the flag to silence the warning.fix: A locale that isn't valid no longer stops a file from being checked (#9501)
fix: A locale that isn't valid no longer stops a file from being checked (#9501)
Summary
With word segmentation on, a locale that isn't valid stopped the whole file from being checked. Now cspell ignores
that locale and checks the file.
Word segmentation is on for Thai and a few other languages. The error was easy to hit with a locale comment in
Markdown or HTML when a word after the locale wasn't one, for example:
<!-- cspell:locale th,en !! -->Before:
After: the file is checked using
thanden.Technical Details
Intl, which also does the word segmentation. Before, a patternallowed only forms like
enanden-US, and word segmentation didn't check locales at all.zh-Hant-TW,es-419, andfilare now also used for the case of suggestions and for dictionaries.cspell:localedirective stops at the first word that doesn't look like a locale.fix: Ignore the comment closing marker in a locale directive (#9496)
fix: Ignore the comment closing marker in a locale directive (#9496)
Summary
cspell:locale(orcspell:language) directive no longer treats the closing-->of an HTML comment, or*/of a block comment, as an extra locale.<!-- cspell:locale en -->made files fail withRangeError: Invalid language tagwhenuseIntlWordSegmentationwas on.Fixes #9480
fix: Show "stdin" as the file name when checking stdin (#9487)
fix: Show "stdin" as the file name when checking stdin (#9487)
Summary
When
cspell lintchecks text fromstdin, the issues it reports now name the filestdin. Before, the file name was empty.This applies to
cspell lint stdin,cspell lint --file stdin, andcspell lint stdin://. Withstdin://<path>, the issues still show<path>.Before:
After:
With
--no-relative, the name is alsostdin, instead of astdin:URL that points to the current folder.fix: Recognize Fortran source files (#9490)
fix: Recognize Fortran source files (#9490)
Summary
cspell now recognizes Fortran source files. Each one gets the file type
fortran, plusFortranFreeFormorFortranFixedForm, the language IDs used by the Modern Fortran extension for VS Code. Settings and dictionaries can now target Fortran files.Feature
fortranFortranFreeForm.f90,.f95,.f03,.f08,.f18,.fpp,.fypp,.pf,.cuf(CUDA Fortran)FortranFixedForm.f,.f77,.for,.ftnUppercase extensions, such as
.F90, match too.Use
fortranto match both forms:{ "languageSettings": [ { "languageId": "fortran", "words": ["gfortran", "nvfortran"] } ] }To match a Fortran file opened in VS Code, list the VS Code IDs too:
"languageId": "fortran,FortranFreeForm,FortranFixedForm".Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#9548)
fix: Workflow Bot -- Update Dictionaries (main) (#9548)
Update Dictionaries (main)
Summary
fix: Workflow Bot -- Update Dictionaries (main) (#9494)
fix: Workflow Bot -- Update Dictionaries (main) (#9494)
Update Dictionaries (main)
Summary
Version Information
v10.4.110.4.1Summary