Skip to content

Releases: streetsidesoftware/cspell

v8.14.0

17 Aug 11:42
Compare
Choose a tag to compare

Changes

Features

feat: Create package @cspell/normalize-json (#6107)

feat: Create package @cspell/normalize-json (#6107)


feat: Add filetype detection package. (#6103)

feat: Add filetype detection package. (#6103)


Fixes

dev: Experiment with smaller cache sizes. (#6100)

dev: Experiment with smaller cache sizes. (#6100)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#6088)

fix: Workflow Bot -- Update Dictionaries (main) (#6088)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

v8.13.3

12 Aug 12:53
Compare
Choose a tag to compare

Changes

Fixes

fix: Try non-English suffix endings on word breaks (#6066)

fix: Try non-English suffix endings on word breaks (#6066)

Related to #6065.

When breaking a camel case word into its parts there are two word break patterns:

  • regExpCamelCaseWordBreaks
  • regExpCamelCaseWordBreaksWithEnglishSuffix is the default pattern.
    It is the same as regExpCamelCaseWordBreaks, but will not split ALL CAPS words with English suffixes.

Using just regExpCamelCaseWordBreaks misses unknown 4-letter words.
The code below was tried, but it missed flagging words like LSTMs:

  • LSTM was caught.
  • LSTMs was missed because it becomes LST and Ms.
const results = _checkCamelCaseWord(vr, regExpCamelCaseWordBreaks);
if (!results.length) return results;
const resultsEnglishBreaks = _checkCamelCaseWord(vr, regExpCamelCaseWordBreaksWithEnglishSuffix);
return results.length < resultsEnglishBreaks.length ? results : resultsEnglishBreaks;
  • Make sure the API doesn't change when adding functions to text.ts.
  • Fix possible accent issue with wordSplitter (note, not an issue with Normalized strings).

Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#6070)

fix: Workflow Bot -- Update Dictionaries (main) (#6070)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json |  2 +-
 pnpm-lock.yaml                             | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

Documentation

docs: fix grammar issue. (#6064)

docs: fix grammar issue. (#6064)

fixes #6059


v8.13.2

08 Aug 06:52
Compare
Choose a tag to compare

Changes

Fixes

fix: Stop duplicate issue output. (#6058)

fix: Stop duplicate issue output. (#6058)

Kind of reverts #4495

Since the output no longer lists each file, repeating the issues at the end is redundant.

8.11.0
image

8.13.0
image

After this change.
image


fix: make sure reported issues are consistent. (#6032)

fix: make sure reported issues are consistent. (#6032)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#6050)

fix: Workflow Bot -- Update Dictionaries (main) (#6050)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json |  6 +++---
 pnpm-lock.yaml                             | 31 ++++++++++++++++++------------
 2 files changed, 22 insertions(+), 15 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#6037)

fix: Workflow Bot -- Update Dictionaries (main) (#6037)

Update Dictionaries (main)

Summary

 .../Azure/azure-rest-api-specs/report.yaml         |    2 +-
 .../googleapis/google-cloud-cpp/report.yaml        |    5 +-
 .../googleapis/google-cloud-cpp/snapshot.txt       |    3 +-
 .../snapshots/ktaranov/sqlserver-kit/report.yaml   | 3590 ++----------
 .../snapshots/ktaranov/sqlserver-kit/snapshot.txt  | 5849 ++++++--------------
 .../microsoft/TypeScript-Website/report.yaml       |    2 +-
 .../snapshots/vitest-dev/vitest/report.yaml        |    2 +-
 packages/cspell-bundled-dicts/package.json         |    6 +-
 pnpm-lock.yaml                                     |   30 +-
 9 files changed, 1983 insertions(+), 7506 deletions(-)

Documentation

docs: fix website build (#6055)

docs: fix website build (#6055)


v8.13.1

02 Aug 07:25
Compare
Choose a tag to compare

Fixes

fix: Use the resolved root when setting Glob Root (#6027)

fix: Use the resolved root when setting Glob Root (#6027)

fixes #6025


fix: Perf improve check text speed (#6024)

fix: Perf improve check text speed (#6024)


fix: Improve perf of camel case word splitter. (#6019)

fix: Improve perf of camel case word splitter. (#6019)


perf: Reduce the use of Generators in critical sections. (#6015)

perf: Reduce the use of Generators in critical sections. (#6015)


v8.13.0

30 Jul 11:38
Compare
Choose a tag to compare

Features

Speed Improvement

On average, 8.13.0 is 1.5x - 2x faster than 8.12

Spell check the CSpell Repo: 1467 files.

Version Time
8.13.0 9.8s
8.12.1 18.0s
8.11.0 18.2s
8.10.4 19.0s
feat: Improve the speed of checking text. (#6004)

feat: Improve the speed of checking text. (#6004)

After doing a bit of perf testing, it became clear that some of the Pipe function took up a decent percent of the time.

Converting Generators to Iterables resulting in a significant speed improvement.


Fixes

refactor: Use text.matchAll instead of sequenceFromRegExpMatch (#5994)

refactor: Use text.matchAll instead of sequenceFromRegExpMatch (#5994)


fix: trie lookup performance (#5985)

fix: trie lookup performance (#5985)

This is currently a place holder for per work.

Initial Perf:

File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words             7.31 ops/sec      4 iterations  546.87ms time
✔ fastTrieBlob has words    14.43 ops/sec      8 iterations  554.57ms time
✔ trieBlob has words        19.27 ops/sec     10 iterations  518.86ms time
✔ iTrieFast has words       12.64 ops/sec      7 iterations  553.83ms time
✔ iTrieBlob has words       16.79 ops/sec      9 iterations  536.03ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words               24.43 ops/sec     13 iterations  532.14ms time
✔ dictionary has 100k words (2nd time)    24.68 ops/sec     13 iterations  526.69ms time
✔ collection has 100k words               13.44 ops/sec      7 iterations  520.71ms time
✔ iTrie has 100k words                    32.54 ops/sec     17 iterations  522.51ms time
✔ iTrie.hasWord has 100k words            33.18 ops/sec     17 iterations  512.32ms time
✔ iTrie.data has 100k words               37.27 ops/sec     19 iterations  509.79ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words                6.65 ops/sec      4 iterations  601.33ms time
✔ dictionary has not 100k words (2nd time)     6.36 ops/sec      4 iterations  628.84ms time
✔ collection has not 100k words                2.57 ops/sec      2 iterations  776.87ms time
✔ iTrie has not 100k words                    29.93 ops/sec     15 iterations  501.20ms time
✔ iTrie.hasWord has not 100k words            27.78 ops/sec     14 iterations  503.89ms time
✔ iTrie.data has not 100k words               33.93 ops/sec     17 iterations  500.99ms time
done.

result:

File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words             6.44 ops/sec      4 iterations  620.65ms time
✔ fastTrieBlob has words    13.74 ops/sec      7 iterations  509.65ms time
✔ trieBlob has words        19.24 ops/sec     10 iterations  519.73ms time
✔ iTrieFast has words       13.90 ops/sec      7 iterations  503.53ms time
✔ iTrieBlob has words       16.88 ops/sec      9 iterations  533.31ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words            25.89 ops/sec     13 iterations  502.22ms time
✔ collection has 100k words            13.81 ops/sec      7 iterations  506.81ms time
✔ collection reverse has 100k words    13.26 ops/sec      7 iterations  527.84ms time
✔ iTrie has 100k words                 36.84 ops/sec     19 iterations  515.72ms time
✔ iTrie.hasWord has 100k words         33.99 ops/sec     18 iterations  529.51ms time
✔ iTrie.data has 100k words            38.55 ops/sec     20 iterations  518.75ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words        6.37 ops/sec      4 iterations  627.52ms time
✔ collection has not 100k words        2.71 ops/sec      2 iterations  738.63ms time
✔ iTrie has not 100k words            28.77 ops/sec     16 iterations  556.20ms time
✔ iTrie.hasWord has not 100k words    25.99 ops/sec     13 iterations  500.14ms time
✔ iTrie.data has not 100k words       34.15 ops/sec     18 iterations  527.10ms time
done.

fix: speed up word look up. (#5984)

fix: speed up word look up. (#5984)

Start Metrics:

File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words             6.84 ops/sec      4 iterations  584.46ms time
✔ fastTrieBlob has words    13.16 ops/sec      7 iterations  531.93ms time
✔ trieBlob has words        16.89 ops/sec      9 iterations  532.98ms time
✔ iTrieFast has words       12.67 ops/sec      7 iterations  552.63ms time
✔ iTrieBlob has words       17.26 ops/sec      9 iterations  521.36ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words               14.98 ops/sec      8 iterations  533.90ms time
✔ dictionary has 100k words (2nd time)    15.85 ops/sec      9 iterations  567.87ms time
✔ collection has 100k words                4.98 ops/sec      3 iterations  602.34ms time
✔ iTrie has 100k words                    26.74 ops/sec     14 iterations  523.57ms time
✔ iTrie.hasWord has 100k words            29.86 ops/sec     16 iterations  535.84ms time
✔ iTrie.data has 100k words               32.51 ops/sec     17 iterations  522.92ms time
Running Perf Suite: dictionary has Not
✔ dictionary has 100k words                4.96 ops/sec      3 iterations  605.42ms time
✔ dictionary has 100k words (2nd time)     5.42 ops/sec      3 iterations  553.15ms time
✔ collection has 100k words                0.40 ops/sec      1 iterations 2525.41ms time
✔ iTrie has 100k words                    24.18 ops/sec     13 iterations  537.61ms time
✔ iTrie.hasWord has 100k words            23.98 ops/sec     12 iterations  500.34ms time
✔ iTrie.data has 100k words               27.89 ops/sec     14 iterations  501.99ms time
done.

In progress:

File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words             7.07 ops/sec      4 iterations  565.75ms time
✔ fastTrieBlob has words    14.51 ops/sec      8 iterations  551.21ms time
✔ trieBlob has words        18.61 ops/sec     10 iterations  537.47ms time
✔ iTrieFast has words       12.97 ops/sec      7 iterations  539.54ms time
✔ iTrieBlob has words       18.01 ops/sec      9 iterations  499.70ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words               23.78 ops/sec     12 iterations  504.61ms time
✔ dictionary has 100k words (2nd time)    24.79 ops/sec     13 iterations  524.47ms time
✔ collection has 100k words               12.98 ops/sec      7 iterations  539.20ms time
✔ iTrie has 100k words                    33.16 ops/sec     17 iterations  512.61ms time
✔ iTrie.hasWord has 100k words            33.05 ops/sec     17 iterations  514.37ms time
✔ iTrie.data has 100k words               34.17 ops/sec     18 iterations  526.77ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words                6.38 ops/sec      4 iterations  627.41ms time
✔ dictionary has not 100k words (2nd time)     6.42 ops/sec      4 iterations  623.45ms time
✔ collection has not 100k words                0.46 ops/sec      1 iterations 2193.36ms time
✔ iTrie has not 100k words                    28.49 ops/sec     15 iterations  526.53ms time
✔ iTrie.hasWord has not 100k words            29.51 ops/sec     15 iterations  508.24ms time
✔ iTrie.data has not 100k words               31.32 ops/sec     16 iterations  510.82ms time
done.

Latest:

File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words             7.31 ops/sec      4 iterations  546.87ms time
✔ fastTrieBlob has words    14.43 ops/sec      8 iterations  554.57ms time
✔ trieBlob has words        19.27 ops/sec     10 iterations  518.86ms time
✔ iTrieFast has words       12.64 ops/sec      7 iterations  553.83ms time
✔ iTrieBlob has words       16.79 ops/sec      9 iterations  536.03ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words               24.43 ops/sec     13 iterations  532.14ms time
✔ dictionary has 100k words (2nd time)    24.68 ops/sec     13 iterations  526.69ms time
✔ collection has 100k words               13.44 ops/sec      7 iterations  520.71ms time
✔ iTrie has 100k words                    32.54 ops/sec     17 iterations  522.51ms time
✔ iTrie.hasWord has 100k words            33.18 ops/sec     17 iterations  512.32ms time
✔ iTrie.data has 100k words               37.27 ops/sec     19 iterations  509.79ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words                6.65 ops/sec      4 iterations  601.33ms time
✔ dictionary has not 100k words (2nd time)     6.36 ops/sec      4 iterations  628.84ms time
✔ collection has not 100k words                2.57 ops/sec      2 iterations  776.87ms time
✔ iTrie has not 100k words                    29.93 ops/sec     15 iterations  501.20ms time
✔ iTrie.hasWord has not 100k words            27.78 ops/sec     14 iterations  503.89ms time
✔ iTrie.data has not 100k words               33.93 ops/sec     17 iterations  500.99ms time
done.

fix: Speed up dictionary look up. (#5983)

fix: Speed up dictionary look up. (#5983)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5980)

fix: Workflow Bot -- Update Dictionaries (main) (#5980)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/eslint/eslint/report.yaml    |  6 ++----
 integration-tests/snapshots/eslint/eslint/snapshot.txt   |  3 +--
 integration-tests/snapshots/pagekit/pagekit/report.yaml  |  4 +---
...
Read more

v8.12.1

22 Jul 19:07
Compare
Choose a tag to compare

Features

feat: Support custom issue template (#5949)

feat: Support custom issue template (#5949)

Related to #5758

Make it possible to use custom issue templates from the command line:

cspell . --issue-template='{green $filename}:{yellow $row:$col} $message ({red $text}) $quickFix'

Template

option: --issue-template to set the template to use when reporting issues.

The template is a string that can contain the following placeholders:

  • $filename - the file name
  • $col - the column number
  • $row - the row number
  • $text - the word that is misspelled
  • $message - the issues message: "unknown word", "word is misspelled", etc.
  • $messageColored - the issues message with color based upon the message type.
  • $uri - the URI of the file
  • $suggestions - suggestions for the misspelled word (if requested)
  • $quickFix - possible quick fixes for the misspelled word.
  • $contextFull - the full context of the misspelled word.
  • $contextLeft - the context to the left of the misspelled word.
  • $contextRight - the context to the right of the misspelled word.

Color is supported using the following template pattern:

  • {<style[.style]> <text>} - where <style> is a style name and <text> is the text to style.
    Styles
  • bold, italic, underline, strikethrough, dim, inverse
  • black, red, green, yellow, blue, magenta, cyan, white

Example:

{green $filename}:{yellow $row}:{yellow $col} $message {red $text} $quickFix {dim $suggestions}


Fixes

refactor: remove .cjs dependency (#5956)

refactor: remove .cjs dependency (#5956)


fix: refactor uri to url (#5943)

fix: refactor uri to url (#5943)

Part of moving away from vscode-uri to the standard URL.


fix: Use stdout and stderr to display text (#5935)

fix: Use stdout and stderr to display text (#5935)

  1. Do not use console.log/.error/.warn to display text.
  2. Clean up the output so it doesn't use too much space.

fix: ignore `_` in hex values (#5934)

fix: ignore _ in hex values (#5934)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5938)

fix: Workflow Bot -- Update Dictionaries (main) (#5938)

Update Dictionaries (main)

Summary

 .../Azure/azure-rest-api-specs/report.yaml         |  6 +--
 .../snapshots/RustPython/RustPython/report.yaml    |  4 +-
 .../snapshots/RustPython/RustPython/snapshot.txt   | 16 ++++---
 .../snapshots/django/django/report.yaml            |  8 ++--
 .../snapshots/django/django/snapshot.txt           |  3 +-
 .../snapshots/eslint/eslint/report.yaml            |  6 +--
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../snapshots/gitbucket/gitbucket/report.yaml      |  3 +-
 .../snapshots/gitbucket/gitbucket/snapshot.txt     |  3 +-
 .../googleapis/google-cloud-cpp/report.yaml        | 42 +++++++++----------
 .../snapshots/ktaranov/sqlserver-kit/report.yaml   |  3 +-
 .../snapshots/ktaranov/sqlserver-kit/snapshot.txt  |  3 +-
 .../microsoft/TypeScript-Website/report.yaml       |  3 +-
 .../microsoft/TypeScript-Website/snapshot.txt      |  3 +-
 .../snapshots/neovim/nvim-lspconfig/report.yaml    |  3 +-
 .../snapshots/neovim/nvim-lspconfig/snapshot.txt   |  5 +--
 .../snapshots/sveltejs/svelte/report.yaml          | 10 ++---
 .../snapshots/sveltejs/svelte/snapshot.txt         |  8 +---
 .../typescript-cheatsheets/react/report.yaml       |  9 ++--
 .../typescript-cheatsheets/react/snapshot.txt      |  9 ++--
 .../snapshots/wireapp/wire-webapp/report.yaml      |  7 ++--
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  5 +--
 packages/cspell-bundled-dicts/package.json         | 10 ++---
 .../cspell/src/app/__snapshots__/app.test.ts.snap  | 13 +++++-
 pnpm-lock.yaml                                     | 49 ++++++++++++----------
 25 files changed, 107 insertions(+), 127 deletions(-)

v8.11.0

16 Jul 16:42
Compare
Choose a tag to compare

Changes

Features

feat: speed up dictionary lookup (#5898)

feat: speed up dictionary lookup (#5898)


Fixes

refactor: char index (#5926)

refactor: char index (#5926)

  • add test
  • add perf tests
  • minor clean up.

fix: support emojis in triev3 files (#5923)

fix: support emojis in triev3 files (#5923)


fix: Use UTF8 sequence to store characters in the TrieBlob (#5913)

fix: Use UTF8 sequence to store characters in the TrieBlob (#5913)

The TrieBlob (binary version of a Trie) was using a character index and storing the offset into the character index in each trie node.

Using utf8 bytes instead make the format easier to understand and process. It also gets the added benefit of being sorted. Sorting was lost when the index was used.


fix: make sure the TrieBlob is sorted. (#5909)

fix: make sure the TrieBlob is sorted. (#5909)


fix: search issue with Emojis (#5906)

fix: search issue with Emojis (#5906)


fix: performance - Improve dictionary search speed. (#5901)

fix: performance - Improve dictionary search speed. (#5901)


fix: Improve word lookup performance for FastTrieBlob and TrieBlob (#5888)

fix: Improve word lookup performance for FastTrieBlob and TrieBlob (#5888)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5874)

fix: Workflow Bot -- Update Dictionaries (main) (#5874)

Update Dictionaries (main)

Summary

 .../MicrosoftDocs/PowerShell-Docs/report.yaml        |  6 ++----
 .../MicrosoftDocs/PowerShell-Docs/snapshot.txt       |  4 +---
 .../snapshots/gitbucket/gitbucket/report.yaml        |  4 +---
 .../snapshots/gitbucket/gitbucket/snapshot.txt       |  4 +---
 .../googleapis/google-cloud-cpp/report.yaml          |  7 ++-----
 .../googleapis/google-cloud-cpp/snapshot.txt         |  5 +----
 .../snapshots/ktaranov/sqlserver-kit/report.yaml     |  3 +--
 .../snapshots/ktaranov/sqlserver-kit/snapshot.txt    |  3 +--
 .../snapshots/sveltejs/svelte/report.yaml            |  3 +--
 .../snapshots/sveltejs/svelte/snapshot.txt           |  3 +--
 packages/cspell-bundled-dicts/package.json           |  4 ++--
 pnpm-lock.yaml                                       | 20 ++++++++++----------
 12 files changed, 24 insertions(+), 42 deletions(-)

v8.10.4

05 Jul 21:52
Compare
Choose a tag to compare

Changes

Fixes

fix(cspell-tools): Make sure the directive is used to build dictionaries. (#5867)

fix(cspell-tools): Make sure the directive is used to build dictionaries. (#5867)


v8.10.3

05 Jul 16:46
ce61ec2
Compare
Choose a tag to compare

Changes

Fixes

fix(cspell-tools): Make sure the directive is used to build dictionaries. (#5867)

fix(cspell-tools): Make sure the directive is used to build dictionaries. (#5867)


v8.10.2

05 Jul 14:46
Compare
Choose a tag to compare

Changes

Fixes

fix: Correctly handle relative globs (#5864)

fix: Correctly handle relative globs (#5864)

fixes #5861