|
3 | 3 | All notable changes to this project will be documented in this file. |
4 | 4 | See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. |
5 | 5 |
|
| 6 | +## v9.6.1 (2026-01-25) |
| 7 | + |
| 8 | +### Fixes |
| 9 | + |
| 10 | +<details> |
| 11 | +<summary>fix: Move performance monitoring into its own package (<a href="https://github.com/streetsidesoftware/cspell/pull/8431">#8431</a>)</summary> |
| 12 | + |
| 13 | +### fix: Move performance monitoring into its own package ([#8431](https://github.com/streetsidesoftware/cspell/pull/8431)) |
| 14 | + |
| 15 | +## Pull request overview |
| 16 | + |
| 17 | +This PR extracts performance monitoring functionality from multiple packages into a new dedicated package `@cspell/cspell-performance-monitor`. The new package provides a centralized, conditionally-enabled performance measurement system using the standard Performance API. |
| 18 | + |
| 19 | +**Changes:** |
| 20 | + |
| 21 | +- Created a new `@cspell/cspell-performance-monitor` package with improved performance measurement functions that can be conditionally enabled/disabled |
| 22 | +- Migrated and removed duplicate performance measurement code from `cspell-lib`, `cspell-dictionary`, and `cspell-trie-lib` packages |
| 23 | +- Updated performance measurement calls to use the new disposable pattern (`using _ = measurePerf()`) that leverages TypeScript's explicit resource management |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +</details> |
| 28 | + |
| 29 | +<details> |
| 30 | +<summary>fix: Add NotifyEmitter (<a href="https://github.com/streetsidesoftware/cspell/pull/8423">#8423</a>)</summary> |
| 31 | + |
| 32 | +### fix: Add NotifyEmitter ([#8423](https://github.com/streetsidesoftware/cspell/pull/8423)) |
| 33 | + |
| 34 | +## Pull request overview |
| 35 | + |
| 36 | +This pull request adds a new `NotifyEmitter` class to provide a reusable event notification system based on the Disposable pattern. The PR refactors the RPC server test to use this new event emitter pattern instead of a custom `AsyncMessageQueue` implementation, resulting in cleaner and more maintainable code. |
| 37 | + |
| 38 | +**Changes:** |
| 39 | + |
| 40 | +- Introduces `NotifyEmitter` class with `NotifyEvent` pattern for event handling with automatic cleanup via `Symbol.dispose` |
| 41 | +- Adds helper functions `notifyEventToPromise` and `notifyEventOnce` for working with notify events |
| 42 | +- Creates `MessagePortEvents` wrapper class to adapt MessagePort events to the NotifyEmitter pattern |
| 43 | +- Refactors `server.test.ts` to use the new event system, removing the custom `AsyncMessageQueue` implementation |
| 44 | +- Adds `result?: unknown` field to `RPCResponse` interface for more consistent type handling |
| 45 | +- Exports new notify-related types and functions through the public API |
| 46 | + |
| 47 | +--- |
| 48 | + |
| 49 | +</details> |
| 50 | + |
| 51 | +<details> |
| 52 | +<summary>refactor: Adjust RPC interface to use a config (<a href="https://github.com/streetsidesoftware/cspell/pull/8420">#8420</a>)</summary> |
| 53 | + |
| 54 | +### refactor: Adjust RPC interface to use a config ([#8420](https://github.com/streetsidesoftware/cspell/pull/8420)) |
| 55 | + |
| 56 | +## Pull request overview |
| 57 | + |
| 58 | +Refactors the RPC client/server APIs (and cspell RPC wrappers) to accept a single configuration object, and updates worker integration and tests accordingly. |
| 59 | + |
| 60 | +**Changes:** |
| 61 | + |
| 62 | +- Update RPCClient/RPCServer (and CSpellRPCClient/CSpellRPCServer) constructors/factories to accept `{ port, ...options }` config objects. |
| 63 | +- Adjust RPC tests and worker usage to match the new config-based API. |
| 64 | +- Update `cspell-lib` package entrypoint to `dist/index.*` and add `src/index.ts` re-export. |
| 65 | + |
| 66 | +--- |
| 67 | + |
| 68 | +</details> |
| 69 | + |
| 70 | +<details> |
| 71 | +<summary>refactor: Refactor CLI to make it easier to spell check files in parallel (<a href="https://github.com/streetsidesoftware/cspell/pull/8387">#8387</a>)</summary> |
| 72 | + |
| 73 | +### refactor: Refactor CLI to make it easier to spell check files in parallel ([#8387](https://github.com/streetsidesoftware/cspell/pull/8387)) |
| 74 | + |
| 75 | +## Pull request overview |
| 76 | + |
| 77 | +This PR refactors the CLI file processing architecture to improve processing speed. The main improvements include extracting file processing logic into a dedicated module, adding sequence tracking for file processing, fixing regex `lastIndex` state sharing issues, and preparing infrastructure for optional worker pool parallelization (currently disabled). |
| 78 | + |
| 79 | +**Changes:** |
| 80 | + |
| 81 | +- Extracted file processing logic from `lint.ts` into a new `processFiles.ts` module with improved batch processing |
| 82 | +- Added sequence tracking interfaces (`FileToProcess`, `ProcessPrefetchFileResult`) to maintain file processing order |
| 83 | +- Fixed regex `lastIndex` state sharing bugs by creating new RegExp instances before use |
| 84 | +- Added worker pool and RPC infrastructure to `cspell-api.ts` (currently disabled via feature flags) |
| 85 | +- Updated performance reporting to track both accumulated processing time and total elapsed time |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +</details> |
| 90 | + |
| 91 | +<details> |
| 92 | +<summary>refactor: Refactor settings a bit (<a href="https://github.com/streetsidesoftware/cspell/pull/8385">#8385</a>)</summary> |
| 93 | + |
| 94 | +### refactor: Refactor settings a bit ([#8385](https://github.com/streetsidesoftware/cspell/pull/8385)) |
| 95 | + |
| 96 | +## Pull request overview |
| 97 | + |
| 98 | +This pull request refactors settings handling in the CSpell codebase. The main focus is on improving the serialization of settings objects by adding circular reference detection and handling to `walkToJSONObj`, along with introducing new utility functions for working with settings that need to be serialized (e.g., for IPC via MessageChannel). |
| 99 | + |
| 100 | +**Changes:** |
| 101 | + |
| 102 | +- Enhanced `walkToJSONObj` to handle circular references using a WeakMap-based visited tracking system |
| 103 | +- Added `toCSpellSettingsWithSourceTrace` and `toCSpellSettingsWithOutSourceTrace` functions to convert settings to serializable formats |
| 104 | +- Refactored `processFile` to accept and use `userSettings` parameter instead of directly accessing `configInfo.config` |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +</details> |
| 109 | + |
| 110 | +<details> |
| 111 | +<summary>refactor: Refactor internal settings (<a href="https://github.com/streetsidesoftware/cspell/pull/8382">#8382</a>)</summary> |
| 112 | + |
| 113 | +### refactor: Refactor internal settings ([#8382](https://github.com/streetsidesoftware/cspell/pull/8382)) |
| 114 | + |
| 115 | +## Pull request overview |
| 116 | + |
| 117 | +This pull request refactors the internal settings structure by reorganizing code from `Models/CSpellSettingsInternalDef.js` into a new `Settings/internal/` directory structure. This improves code organization by collocating internal settings definitions with other settings-related code. |
| 118 | + |
| 119 | +**Changes:** |
| 120 | + |
| 121 | +- Created new `Settings/internal/` directory with split files: `CSpellSettingsInternalDef.ts`, `InternalDictionaryDef.ts`, and `DictionarySettings.ts` (with improved private field syntax) |
| 122 | +- Updated all import paths across the codebase from `Models/CSpellSettingsInternalDef` to `Settings/internal/` or `Settings/index` |
| 123 | +- Added new utility function `walkToJSONObj` for JSON serialization (with comprehensive tests) and `__getOriginalDefinition()` method for accessing original dictionary definitions |
| 124 | + |
| 125 | +--- |
| 126 | + |
| 127 | +</details> |
| 128 | + |
| 129 | +<details> |
| 130 | +<summary>fix: report errors in spelling result. (<a href="https://github.com/streetsidesoftware/cspell/pull/8381">#8381</a>)</summary> |
| 131 | + |
| 132 | +### fix: report errors in spelling result. ([#8381](https://github.com/streetsidesoftware/cspell/pull/8381)) |
| 133 | + |
| 134 | +## Pull request overview |
| 135 | + |
| 136 | +This PR enhances error reporting in spell check results by including configuration and dictionary errors directly in the `SpellCheckFileResult` object. Previously, errors were only extracted from configuration during the lint process; now they're also captured from the spell checking itself. |
| 137 | + |
| 138 | +**Changes:** |
| 139 | + |
| 140 | +- Added `configErrors` and `dictionaryErrors` fields to `SpellCheckFileResult` interface |
| 141 | +- Refactored error reporting to extract errors from spell check results instead of re-computing them from configuration |
| 142 | +- Created a new `cspell-api` module to abstract spell checking implementation |
| 143 | +- Added comprehensive test coverage with fixture files demonstrating error scenarios |
| 144 | + |
| 145 | +--- |
| 146 | + |
| 147 | +</details> |
| 148 | + |
| 149 | +<details> |
| 150 | +<summary>fix: Add CSpell Worker Pool (<a href="https://github.com/streetsidesoftware/cspell/pull/8379">#8379</a>)</summary> |
| 151 | + |
| 152 | +### fix: Add CSpell Worker Pool ([#8379](https://github.com/streetsidesoftware/cspell/pull/8379)) |
| 153 | + |
| 154 | +## Pull request overview |
| 155 | + |
| 156 | +This pull request adds a CSpell Worker Pool implementation to manage multiple spell-checking workers efficiently, along with significant improvements to the RPC infrastructure for better readiness tracking. |
| 157 | + |
| 158 | +**Changes:** |
| 159 | + |
| 160 | +- Added `CSpellWorkerPool` class to manage a pool of spell-checking workers with configurable sizing based on CPU cores |
| 161 | +- Simplified the worker implementation by removing custom status tracking in favor of RPC-based readiness checks |
| 162 | +- Enhanced RPC client/server with ready request/response mechanism, allowing clients to wait for server initialization |
| 163 | +- Renamed `Resolver` utility class to `Future` with improved state tracking (added `isRejected` property) |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +</details> |
| 168 | + |
| 169 | +<details> |
| 170 | +<summary>refactor: Clean Up CSpell Worker (<a href="https://github.com/streetsidesoftware/cspell/pull/8372">#8372</a>)</summary> |
| 171 | + |
| 172 | +### refactor: Clean Up CSpell Worker ([#8372](https://github.com/streetsidesoftware/cspell/pull/8372)) |
| 173 | + |
| 174 | +--- |
| 175 | + |
| 176 | +</details> |
| 177 | + |
| 178 | +<details> |
| 179 | +<summary>fix: Add CSpellRPCServer and CSpellRPCClient classes (<a href="https://github.com/streetsidesoftware/cspell/pull/8366">#8366</a>)</summary> |
| 180 | + |
| 181 | +### fix: Add CSpellRPCServer and CSpellRPCClient classes ([#8366](https://github.com/streetsidesoftware/cspell/pull/8366)) |
| 182 | + |
| 183 | +## Pull request overview |
| 184 | + |
| 185 | +This pull request adds RPC (Remote Procedure Call) infrastructure to enable remote spell checking through CSpell. The implementation includes a generic RPC client/server framework, CSpell-specific RPC adapters, and worker thread support for isolated spell checking operations. |
| 186 | + |
| 187 | +**Changes:** |
| 188 | + |
| 189 | +- Move the RPC framwork from cspell to cspell-lib |
| 190 | +- Adds complete RPC framework with message-based client/server communication over MessagePort |
| 191 | +- Implements CSpell-specific RPC server and client classes for remote spell checking |
| 192 | +- Introduces worker thread support for isolated spell checking operations |
| 193 | +- Adds utility functions for cloning and sanitizing settings for safe RPC transmission |
| 194 | + |
| 195 | +--- |
| 196 | + |
| 197 | +</details> |
| 198 | + |
| 199 | +<details> |
| 200 | +<summary>fix: Work on adding support for Workers (<a href="https://github.com/streetsidesoftware/cspell/pull/8363">#8363</a>)</summary> |
| 201 | + |
| 202 | +### fix: Work on adding support for Workers ([#8363](https://github.com/streetsidesoftware/cspell/pull/8363)) |
| 203 | + |
| 204 | +## Pull request overview |
| 205 | + |
| 206 | +This pull request adds RPC (Remote Procedure Call) infrastructure to support Workers in the cspell package. The implementation provides a client-server communication framework using MessagePort for inter-process or inter-worker communication. |
| 207 | + |
| 208 | +**Changes:** |
| 209 | + |
| 210 | +- Added RPC client and server implementations with support for request/response patterns, cancellation, and error handling |
| 211 | +- Implemented type-safe protocol definitions with automatic Promise wrapping for async operations |
| 212 | +- Created comprehensive test coverage for client, server, and integration scenarios |
| 213 | + |
| 214 | +--- |
| 215 | + |
| 216 | +</details> |
| 217 | + |
| 218 | +### Dictionary Updates |
| 219 | + |
| 220 | +<details> |
| 221 | +<summary>fix: Workflow Bot -- Update Dictionaries (main) (<a href="https://github.com/streetsidesoftware/cspell/pull/8433">#8433</a>)</summary> |
| 222 | + |
| 223 | +### fix: Workflow Bot -- Update Dictionaries (main) ([#8433](https://github.com/streetsidesoftware/cspell/pull/8433)) |
| 224 | + |
| 225 | +# Update Dictionaries (main) |
| 226 | + |
| 227 | +## Summary |
| 228 | + |
| 229 | +``` |
| 230 | + .../MartinThoma/LaTeX-examples/report.yaml | 9 +--- |
| 231 | + .../MartinThoma/LaTeX-examples/snapshot.txt | 7 +-- |
| 232 | + packages/cspell-bundled-dicts/package.json | 10 ++-- |
| 233 | + packages/cspell/src/__snapshots__/app.test.ts.snap | 6 +-- |
| 234 | + pnpm-lock.yaml | 57 ++++++++++++---------- |
| 235 | + 5 files changed, 42 insertions(+), 47 deletions(-) |
| 236 | +``` |
| 237 | + |
| 238 | +--- |
| 239 | + |
| 240 | +</details> |
| 241 | + |
6 | 242 | ## v9.6.0 (2026-01-12) |
7 | 243 |
|
8 | 244 | ### Features |
|
0 commit comments