From 70c496d36b9f9b43ad37da77ad39eb76f29913b9 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 19 Mar 2026 20:11:37 +0100 Subject: [PATCH 1/8] Replace glob with fast glob --- .../node/command-server/package.json | 2 +- packages/app-neovim/package.json | 2 +- packages/app-talonjs/package.json | 2 +- packages/app-vscode/package.json | 4 +- .../src/InstallationDependencies.ts | 6 +-- packages/app-web-docs/package.json | 2 +- packages/app-web/package.json | 2 +- packages/lib-cheatsheet-local/package.json | 2 +- packages/lib-cheatsheet/package.json | 2 +- packages/lib-common/package.json | 2 +- packages/lib-engine/package.json | 2 +- packages/lib-neovim-common/package.json | 2 +- packages/lib-neovim-registry/package.json | 2 +- packages/lib-node-common/package.json | 4 +- .../src/FileSystemCommandHistoryStorage.ts | 2 +- packages/lib-sentence-parser/package.json | 2 +- packages/lib-talonjs-core/package.json | 2 +- packages/lib-test-case-recorder/package.json | 4 +- packages/lib-tutorial/package.json | 2 +- packages/lib-vscode-common/package.json | 2 +- .../lib-vscode-tutorial-webview/package.json | 2 +- packages/test-neovim-e2e/package.json | 2 +- packages/test-runner/package.json | 4 +- packages/test-runner/src/runAllTests.ts | 2 +- packages/test-talon-e2e/package.json | 2 +- packages/test-vscode-e2e/package.json | 2 +- packages/tool-meta-updater/package.json | 2 +- .../src/updatePackageJson.ts | 2 +- pnpm-lock.yaml | 49 +++++-------------- 29 files changed, 46 insertions(+), 71 deletions(-) diff --git a/cursorless.nvim/node/command-server/package.json b/cursorless.nvim/node/command-server/package.json index 35482431f7..d9da516fbd 100644 --- a/cursorless.nvim/node/command-server/package.json +++ b/cursorless.nvim/node/command-server/package.json @@ -19,7 +19,7 @@ "@typescript-eslint/parser": "^8.32.1", "esbuild": "^0.27.4", "eslint": "^10.0.0", - "glob": "^13.0.0", + "fast-glob": "^3.3.3", "mocha": "^8.1.3", "neovim": "^5.0.1", "typescript": "^5.8.3", diff --git a/packages/app-neovim/package.json b/packages/app-neovim/package.json index c2307e0cb4..ea79342765 100644 --- a/packages/app-neovim/package.json +++ b/packages/app-neovim/package.json @@ -7,7 +7,7 @@ "main": "./out/index.cjs", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "dev": "pnpm run compile:dev && pnpm run populate-dist", "build": "pnpm run compile:prod && pnpm run populate-dist", "compile:prod": "pnpm run compile:base --minify", diff --git a/packages/app-talonjs/package.json b/packages/app-talonjs/package.json index f74047c76b..87ee18cbfb 100644 --- a/packages/app-talonjs/package.json +++ b/packages/app-talonjs/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "dev": "pnpm run compile:watch", "build": "pnpm run compile:prod", "compile:prod": "pnpm run compile:base --minify src/mainProduction.ts", diff --git a/packages/app-vscode/package.json b/packages/app-vscode/package.json index 3af5c95f96..0f1b17a171 100644 --- a/packages/app-vscode/package.json +++ b/packages/app-vscode/package.json @@ -1282,7 +1282,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test": "pnpm ensure-grammar-up-to-date", "dev": "pnpm generate-grammar && pnpm run compile:dev && pnpm run bundle:dev && pnpm run populate-dist", "build": "pnpm generate-grammar && pnpm run compile:prod && pnpm run bundle:prod && pnpm run populate-dist", @@ -1315,7 +1315,7 @@ "@cursorless/lib-test-case-recorder": "workspace:*", "@cursorless/lib-tutorial": "workspace:*", "@cursorless/lib-vscode-common": "workspace:*", - "glob": "^13.0.6", + "fast-glob": "^3.3.3", "itertools": "^2.6.0", "lodash-es": "^4.17.23", "nearley": "^2.20.1", diff --git a/packages/app-vscode/src/InstallationDependencies.ts b/packages/app-vscode/src/InstallationDependencies.ts index 35c4475c22..5743f112e7 100644 --- a/packages/app-vscode/src/InstallationDependencies.ts +++ b/packages/app-vscode/src/InstallationDependencies.ts @@ -1,6 +1,6 @@ import { isWindows } from "@cursorless/lib-node-common"; import { COMMAND_SERVER_EXTENSION_ID } from "@cursorless/lib-vscode-common"; -import { globSync } from "glob"; +import glob from "fast-glob"; import * as fs from "node:fs"; import * as os from "node:os"; import * as path from "node:path"; @@ -130,9 +130,9 @@ function talonHomeExists() { function cursorlessTalonExists() { const talonUserPath = path.join(getTalonHomePath(), "user"); - const files = globSync("**/*/src/cursorless.talon", { + const files = glob.sync("**/*/src/cursorless.talon", { cwd: talonUserPath, - maxDepth: 3, + deep: 3, }); return files.length > 0; } diff --git a/packages/app-web-docs/package.json b/packages/app-web-docs/package.json index 19b675489b..9f16847950 100644 --- a/packages/app-web-docs/package.json +++ b/packages/app-web-docs/package.json @@ -18,7 +18,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "docusaurus clear && rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "docusaurus clear && rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "dev": "docusaurus start", "build": "docusaurus build" }, diff --git a/packages/app-web/package.json b/packages/app-web/package.json index 9c78d6f44a..c84b28a4d3 100644 --- a/packages/app-web/package.json +++ b/packages/app-web/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "dev": "env NODE_OPTIONS=--import=tsx vite serve", "build": "env NODE_OPTIONS=--import=tsx vite build" }, diff --git a/packages/lib-cheatsheet-local/package.json b/packages/lib-cheatsheet-local/package.json index f6f7c528f1..4bb2c5c080 100644 --- a/packages/lib-cheatsheet-local/package.json +++ b/packages/lib-cheatsheet-local/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test": "jest", "dev": "env NODE_OPTIONS=--import=tsx vite serve", "bundle:prod": "env NODE_OPTIONS=--import=tsx vite build", diff --git a/packages/lib-cheatsheet/package.json b/packages/lib-cheatsheet/package.json index 459883ec7c..b1c54bb164 100644 --- a/packages/lib-cheatsheet/package.json +++ b/packages/lib-cheatsheet/package.json @@ -13,7 +13,7 @@ ], "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test": "jest" }, "dependencies": { diff --git a/packages/lib-common/package.json b/packages/lib-common/package.json index 79b24be180..aff7a1eb3e 100644 --- a/packages/lib-common/package.json +++ b/packages/lib-common/package.json @@ -14,7 +14,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "itertools": "^2.6.0", diff --git a/packages/lib-engine/package.json b/packages/lib-engine/package.json index e7dbb0e22e..797023f58b 100644 --- a/packages/lib-engine/package.json +++ b/packages/lib-engine/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test": "pnpm ensure-grammar-up-to-date", "generate-grammar:base": "nearleyc src/customCommandGrammar/grammar.ne", "ensure-grammar-up-to-date": "pnpm -s generate-grammar:base | diff -u src/customCommandGrammar/generated/grammar.ts -", diff --git a/packages/lib-neovim-common/package.json b/packages/lib-neovim-common/package.json index 063c89f121..72a4e8547d 100644 --- a/packages/lib-neovim-common/package.json +++ b/packages/lib-neovim-common/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/lib-neovim-registry/package.json b/packages/lib-neovim-registry/package.json index 8176b99818..c70f11f983 100644 --- a/packages/lib-neovim-registry/package.json +++ b/packages/lib-neovim-registry/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { "neovim": "^5.4.0" diff --git a/packages/lib-node-common/package.json b/packages/lib-node-common/package.json index 84e0168d9b..15f2ede924 100644 --- a/packages/lib-node-common/package.json +++ b/packages/lib-node-common/package.json @@ -9,11 +9,11 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", - "glob": "^13.0.6", + "fast-glob": "^3.3.3", "immer": "^11.1.4", "lodash-es": "^4.17.23", "node-html-parser": "^7.1.0" diff --git a/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts b/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts index a7d4ded78d..219368dee8 100644 --- a/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts +++ b/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts @@ -2,7 +2,7 @@ import type { CommandHistoryEntry, CommandHistoryStorage, } from "@cursorless/lib-common"; -import { glob } from "glob"; +import glob from "fast-glob"; import * as fs from "node:fs/promises"; import * as path from "node:path"; diff --git a/packages/lib-sentence-parser/package.json b/packages/lib-sentence-parser/package.json index 1a94c7396b..8ccbae587b 100644 --- a/packages/lib-sentence-parser/package.json +++ b/packages/lib-sentence-parser/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { "@types/mocha": "^10.0.10", diff --git a/packages/lib-talonjs-core/package.json b/packages/lib-talonjs-core/package.json index 31ec4d1476..0317e419eb 100644 --- a/packages/lib-talonjs-core/package.json +++ b/packages/lib-talonjs-core/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/lib-test-case-recorder/package.json b/packages/lib-test-case-recorder/package.json index 1885de9ed7..261954a875 100644 --- a/packages/lib-test-case-recorder/package.json +++ b/packages/lib-test-case-recorder/package.json @@ -9,13 +9,13 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", "@cursorless/lib-engine": "workspace:*", "@cursorless/lib-node-common": "workspace:*", - "glob": "^13.0.6", + "fast-glob": "^3.3.3", "immutability-helper": "^3.1.1", "lodash-es": "^4.17.23" }, diff --git a/packages/lib-tutorial/package.json b/packages/lib-tutorial/package.json index 9a60aa8015..c7d83c40b1 100644 --- a/packages/lib-tutorial/package.json +++ b/packages/lib-tutorial/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/lib-vscode-common/package.json b/packages/lib-vscode-common/package.json index 90ff2000e2..b33e927ebe 100644 --- a/packages/lib-vscode-common/package.json +++ b/packages/lib-vscode-common/package.json @@ -9,7 +9,7 @@ }, "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*" diff --git a/packages/lib-vscode-tutorial-webview/package.json b/packages/lib-vscode-tutorial-webview/package.json index cea2f01f72..ddd43ddb74 100644 --- a/packages/lib-vscode-tutorial-webview/package.json +++ b/packages/lib-vscode-tutorial-webview/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "dev": "env NODE_OPTIONS=--import=tsx vite serve", "bundle:prod": "env NODE_OPTIONS=--import=tsx vite build", "bundle:dev": "env NODE_OPTIONS=--import=tsx vite build --mode development", diff --git a/packages/test-neovim-e2e/package.json b/packages/test-neovim-e2e/package.json index e6d1cc91bf..8e2dc8fef1 100644 --- a/packages/test-neovim-e2e/package.json +++ b/packages/test-neovim-e2e/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/test-runner/package.json b/packages/test-runner/package.json index 5860aa7a48..50b2cbd5a0 100644 --- a/packages/test-runner/package.json +++ b/packages/test-runner/package.json @@ -8,7 +8,7 @@ "main": "./out/extensionTestsNeovim.cjs", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test": "c-tsx ./src/scripts/runUnitTests.ts", "test:subset": "c-tsx ./src/scripts/runUnitTests.ts --subset", "test:update": "c-tsx ./src/scripts/runUnitTests.ts --update", @@ -26,7 +26,7 @@ "@cursorless/lib-neovim-common": "workspace:*", "@cursorless/lib-neovim-registry": "workspace:*", "@cursorless/lib-node-common": "workspace:*", - "glob": "^13.0.6", + "fast-glob": "^3.3.3", "neovim": "^5.4.0", "tail": "^2.2.6" }, diff --git a/packages/test-runner/src/runAllTests.ts b/packages/test-runner/src/runAllTests.ts index 0d3fce74eb..f2f060aa31 100644 --- a/packages/test-runner/src/runAllTests.ts +++ b/packages/test-runner/src/runAllTests.ts @@ -1,5 +1,5 @@ import { getCursorlessRepoRoot } from "@cursorless/lib-node-common"; -import { glob } from "glob"; +import glob from "fast-glob"; import Mocha from "mocha"; import * as path from "node:path"; import { diff --git a/packages/test-talon-e2e/package.json b/packages/test-talon-e2e/package.json index d266bb320a..2d27f44354 100644 --- a/packages/test-talon-e2e/package.json +++ b/packages/test-talon-e2e/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build", "test:quickjs": "bash ./scripts/test-quickjs.sh" }, "dependencies": { diff --git a/packages/test-vscode-e2e/package.json b/packages/test-vscode-e2e/package.json index 9060aefd12..668130b03e 100644 --- a/packages/test-vscode-e2e/package.json +++ b/packages/test-vscode-e2e/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/tool-meta-updater/package.json b/packages/tool-meta-updater/package.json index a60c970880..9ae6ef97f8 100644 --- a/packages/tool-meta-updater/package.json +++ b/packages/tool-meta-updater/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "typecheck": "tsc", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "clean": "rm -rf ./out ./tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { "@cursorless/lib-common": "workspace:*", diff --git a/packages/tool-meta-updater/src/updatePackageJson.ts b/packages/tool-meta-updater/src/updatePackageJson.ts index e55be4d120..a1d3dc64f3 100644 --- a/packages/tool-meta-updater/src/updatePackageJson.ts +++ b/packages/tool-meta-updater/src/updatePackageJson.ts @@ -99,7 +99,7 @@ async function getScripts( scripts.typecheck = "tsc"; - const cleanDirs = ["./out", "tsconfig.tsbuildinfo", "./dist", "./build"]; + const cleanDirs = ["./out", "./tsconfig.tsbuildinfo", "./dist", "./build"]; const clean = `rm -rf ${cleanDirs.join(" ")}`; const cleanScripts = name === "@cursorless/app-web-docs" ? ["docusaurus clear", clean] : [clean]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ecd59f1739..b561ee267c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,9 +153,9 @@ importers: '@cursorless/lib-vscode-common': specifier: workspace:* version: link:../lib-vscode-common - glob: - specifier: ^13.0.6 - version: 13.0.6 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 itertools: specifier: ^2.6.0 version: 2.6.0 @@ -578,9 +578,9 @@ importers: '@cursorless/lib-common': specifier: workspace:* version: link:../lib-common - glob: - specifier: ^13.0.6 - version: 13.0.6 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 immer: specifier: ^11.1.4 version: 11.1.4 @@ -646,9 +646,9 @@ importers: '@cursorless/lib-node-common': specifier: workspace:* version: link:../lib-node-common - glob: - specifier: ^13.0.6 - version: 13.0.6 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 immutability-helper: specifier: ^3.1.1 version: 3.1.1 @@ -765,9 +765,9 @@ importers: '@cursorless/lib-node-common': specifier: workspace:* version: link:../lib-node-common - glob: - specifier: ^13.0.6 - version: 13.0.6 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 neovim: specifier: ^5.4.0 version: 5.4.0 @@ -6831,10 +6831,6 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -8013,10 +8009,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.7: - resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} - engines: {node: 20 || >=22} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -8859,10 +8851,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} - engines: {node: 18 || 20 || >=22} - path-temp@2.0.0: resolution: {integrity: sha512-92olbatybjsHTGB2CUnAM7s0mU/27gcMfLNA7t09UftndUdxywlQKur3fzXEPpfLrgZD3I2Bt8+UmiL7YDEgXQ==} engines: {node: '>=8.15'} @@ -18836,12 +18824,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@13.0.6: - dependencies: - minimatch: 10.2.4 - minipass: 7.1.3 - path-scurry: 2.0.2 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -20271,8 +20253,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.7: {} - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -21458,11 +21438,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.3 - path-scurry@2.0.2: - dependencies: - lru-cache: 11.2.7 - minipass: 7.1.3 - path-temp@2.0.0: dependencies: unique-string: 2.0.0 From 81e946fd13bfacc3c4d60eaa0ecc5cf55f0e7d0d Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 19 Mar 2026 20:22:18 +0100 Subject: [PATCH 2/8] Ignore node modules --- packages/test-runner/src/runAllTests.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/test-runner/src/runAllTests.ts b/packages/test-runner/src/runAllTests.ts index f2f060aa31..6bc934793b 100644 --- a/packages/test-runner/src/runAllTests.ts +++ b/packages/test-runner/src/runAllTests.ts @@ -34,7 +34,7 @@ export function runAllTests(type: TestType): Promise { const testRoot = path.join(getCursorlessRepoRoot(), "packages"); let filePattern: string; - let ignore: string[] | undefined = undefined; + let ignore: string[] = []; switch (type) { case TestType.unit: @@ -64,7 +64,7 @@ export function runAllTests(type: TestType): Promise { async function runTestsInDir( testRoot: string, filePattern: string, - ignore: string[] | undefined, + ignore: string[], ): Promise { // Create the mocha test const mocha = new Mocha({ @@ -75,7 +75,8 @@ async function runTestsInDir( const files = await glob(`**/*.${filePattern}`, { cwd: testRoot, - ignore, + followSymbolicLinks: false, + ignore: ["**/node_modules", ...ignore], }); if (files.length === 0) { From 79b6d1ca40fe801d1d1edc35682bd62b60582125 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 19 Mar 2026 20:22:43 +0100 Subject: [PATCH 3/8] Update ignore pattern --- packages/test-runner/src/runAllTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test-runner/src/runAllTests.ts b/packages/test-runner/src/runAllTests.ts index 6bc934793b..1a3718d077 100644 --- a/packages/test-runner/src/runAllTests.ts +++ b/packages/test-runner/src/runAllTests.ts @@ -76,7 +76,7 @@ async function runTestsInDir( const files = await glob(`**/*.${filePattern}`, { cwd: testRoot, followSymbolicLinks: false, - ignore: ["**/node_modules", ...ignore], + ignore: ["**/node_modules/**", ...ignore], }); if (files.length === 0) { From 179bbbcfebaaa860c809e490e2a2b6b78f40d3e5 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 19 Mar 2026 20:25:10 +0100 Subject: [PATCH 4/8] Sort files --- packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts b/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts index 219368dee8..512342cfa2 100644 --- a/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts +++ b/packages/lib-node-common/src/FileSystemCommandHistoryStorage.ts @@ -24,6 +24,8 @@ export class FileSystemCommandHistoryStorage implements CommandHistoryStorage { cwd: this.dir, }); + files.sort(); + const entries: CommandHistoryEntry[] = []; for (const file of files) { From 5eff2b763982970efebcf542dc95d49ef42d813c Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 19 Mar 2026 20:32:13 +0100 Subject: [PATCH 5/8] check that Talon user exists --- packages/app-vscode/src/InstallationDependencies.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/app-vscode/src/InstallationDependencies.ts b/packages/app-vscode/src/InstallationDependencies.ts index 5743f112e7..684385a152 100644 --- a/packages/app-vscode/src/InstallationDependencies.ts +++ b/packages/app-vscode/src/InstallationDependencies.ts @@ -130,6 +130,11 @@ function talonHomeExists() { function cursorlessTalonExists() { const talonUserPath = path.join(getTalonHomePath(), "user"); + + if (!fs.existsSync(talonUserPath)) { + return false; + } + const files = glob.sync("**/*/src/cursorless.talon", { cwd: talonUserPath, deep: 3, From 82479ab6fbc6849bb29c5df36988e2a1fda9e199 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 20 Mar 2026 07:35:30 +0100 Subject: [PATCH 6/8] Empty commit From 7bceb2cba6fbb576352cccade9d69c86b8f3b647 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 20 Mar 2026 08:00:21 +0100 Subject: [PATCH 7/8] Update notebook tests --- .../crossCellsSetSelection.vscode.test.ts | 29 +++++++++++-------- ... => withinCellSetSelection.vscode.test.ts} | 0 2 files changed, 17 insertions(+), 12 deletions(-) rename packages/test-vscode-e2e/src/suite/{intraCellSetSelection.vscode.test.ts => withinCellSetSelection.vscode.test.ts} (100%) diff --git a/packages/test-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts b/packages/test-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts index 32e9e5a175..775ffcb66a 100644 --- a/packages/test-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts +++ b/packages/test-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts @@ -1,6 +1,6 @@ -import { LATEST_VERSION } from "@cursorless/lib-common"; -import { isLinux } from "@cursorless/lib-node-common"; +import { LATEST_VERSION, splitKey } from "@cursorless/lib-common"; import { + getCellIndex, getCursorlessApi, openNewNotebookEditor, runCursorlessCommand, @@ -8,26 +8,31 @@ import { import assert from "assert"; import { window } from "vscode"; import { endToEndTestSetup } from "../endToEndTestSetup"; -import { isCI } from "../isCI"; // Check that setSelection is able to focus the correct cell suite("Cross-cell set selection", async function () { - // FIXME: This test is flaky on Linux CI, so we skip it there for now - if (isCI() && isLinux()) { - this.ctx.skip(); - } - endToEndTestSetup(this); test("Cross-cell set selection", runTest); }); async function runTest() { - const { hatTokenMap } = (await getCursorlessApi()).testHelpers!; + const { hatTokenMap, toVscodeEditor } = (await getCursorlessApi()) + .testHelpers!; - await openNewNotebookEditor(['"hello"', '"world"']); + const notebook = await openNewNotebookEditor(['"hello"', '"world"']); await hatTokenMap.allocateHats(); + const hatMap = await hatTokenMap.getReadableMap(false); + const targetHat = hatMap.getEntries().find(([, token]) => { + const editor = toVscodeEditor(token.editor); + return ( + getCellIndex(notebook, editor.document) === 1 && token.text === "world" + ); + }); + + assert(targetHat != null, 'Expected a hat for "world" in the second cell'); + const { hatStyle, character } = splitKey(targetHat[0]); await runCursorlessCommand({ version: LATEST_VERSION, @@ -38,8 +43,8 @@ async function runTest() { type: "primitive", mark: { type: "decoratedSymbol", - symbolColor: "default", - character: "o", + symbolColor: hatStyle, + character, }, }, }, diff --git a/packages/test-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts b/packages/test-vscode-e2e/src/suite/withinCellSetSelection.vscode.test.ts similarity index 100% rename from packages/test-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts rename to packages/test-vscode-e2e/src/suite/withinCellSetSelection.vscode.test.ts From ab5cfdf8ee982d5401159c8296abb509dd43f5e9 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Fri, 20 Mar 2026 08:21:29 +0100 Subject: [PATCH 8/8] Re enable scope provided tests on Linux --- .../scopeProvider.vscode.test.ts | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/packages/test-vscode-e2e/src/suite/scopeProvider/scopeProvider.vscode.test.ts b/packages/test-vscode-e2e/src/suite/scopeProvider/scopeProvider.vscode.test.ts index 50d9c1f06f..5016b045ed 100644 --- a/packages/test-vscode-e2e/src/suite/scopeProvider/scopeProvider.vscode.test.ts +++ b/packages/test-vscode-e2e/src/suite/scopeProvider/scopeProvider.vscode.test.ts @@ -1,7 +1,5 @@ import { asyncSafety } from "@cursorless/lib-common"; -import { isLinux } from "@cursorless/lib-node-common"; import { endToEndTestSetup } from "../../endToEndTestSetup"; -import { isCI } from "../../isCI"; import { runBasicScopeInfoTest } from "./runBasicScopeInfoTest"; import { runCustomRegexScopeInfoTest } from "./runCustomRegexScopeInfoTest"; import { runCustomSpokenFormScopeInfoTest } from "./runCustomSpokenFormScopeInfoTest"; @@ -20,24 +18,10 @@ suite("scope provider", async function () { ); test( "custom spoken form", - asyncSafety(() => { - // FIXME: This test is flaky on Linux CI, so we skip it there for now - if (isCI() && isLinux()) { - this.ctx.skip(); - } - - return runCustomSpokenFormScopeInfoTest(); - }), + asyncSafety(() => runCustomSpokenFormScopeInfoTest()), ); test( "custom regex", - asyncSafety(() => { - // FIXME: This test is flaky on Linux CI, so we skip it there for now - if (isCI() && isLinux()) { - this.ctx.skip(); - } - - return runCustomRegexScopeInfoTest(); - }), + asyncSafety(() => runCustomRegexScopeInfoTest()), ); });