Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.5.5/schema.json",
"$schema": "https://biomejs.dev/schemas/2.5.6/schema.json",
"assist": { "actions": { "source": { "organizeImports": "on" } } },
"linter": {
"enabled": true,
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
"eval:full": "vally eval --suite full"
},
"devDependencies": {
"@biomejs/biome": "^2.5.5",
"@microsoft/vally-cli": "^0.11.0",
"@biomejs/biome": "^2.5.6",
"@microsoft/vally-cli": "^0.12.0",
"typescript": "^7.0.2"
},
"engines": {
"node": ">=18.0.0"
},
"packageManager": "pnpm@11.17.0"
"packageManager": "pnpm@11.18.0"
}
4 changes: 2 additions & 2 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@
"clean": "rimraf dist"
},
"devDependencies": {
"@types/node": "^26.1.1",
"@types/node": "^26.1.2",
"rimraf": "^6.1.3",
"thermoworks-mcp": "workspace:^",
"tsup": "^8.5.1",
"vitest": "^4.1.10"
},
"dependencies": {
"@github/keytar": "^7.10.6",
"@modelcontextprotocol/sdk": "^1.29.0",
"@modelcontextprotocol/sdk": "^1.30.0",
"thermoworks-sdk": "workspace:^",
"zod": "^4.4.3"
}
Expand Down
4 changes: 2 additions & 2 deletions packages/mcp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@
"clean": "rimraf dist"
},
"devDependencies": {
"@types/node": "^26.1.1",
"@types/node": "^26.1.2",
"rimraf": "^6.1.3",
"tsup": "^8.5.1",
"vitest": "^4.1.10"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"@modelcontextprotocol/sdk": "^1.30.0",
"thermoworks-sdk": "workspace:^",
"zod": "^4.4.3"
}
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
"clean": "rimraf dist"
},
"devDependencies": {
"@types/node": "^26.1.1",
"@types/node": "^26.1.2",
"@vitest/coverage-v8": "^4.1.10",
"rimraf": "^6.1.3",
"tsup": "^8.5.1",
Expand Down
10 changes: 5 additions & 5 deletions packages/vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -563,11 +563,11 @@
"publish": "vsce publish --no-dependencies"
},
"devDependencies": {
"@types/node": "^26.1.1",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/node": "^26.1.2",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"@types/vscode": "^1.125.0",
"@vitejs/plugin-react": "^6.0.4",
"@vitejs/plugin-react": "^6.0.5",
"@vitest/coverage-v8": "^4.1.10",
"@vscode/vsce": "^3.9.2",
"esbuild": "^0.28.1",
Expand All @@ -577,7 +577,7 @@
"recharts": "^3.10.1",
"thermoworks-sdk": "workspace:^",
"typescript": "^7.0.2",
"vite": "^8.1.5",
"vite": "^8.2.0",
"vitest": "^4.1.10"
},
"dependencies": {
Expand Down
16 changes: 8 additions & 8 deletions packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@tanstack/react-virtual": "^3.14.8",
"@tanstack/react-virtual": "^3.14.9",
"clsx": "^2.1.1",
"lucide-react": "^1.26.0",
"lucide-react": "^1.28.0",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-router": "^8.3.0",
Expand All @@ -29,19 +29,19 @@
},
"devDependencies": {
"@axe-core/playwright": "^4.12.1",
"@playwright/test": "^1.62.0",
"@playwright/test": "^1.62.1",
"@tailwindcss/vite": "^4.3.3",
"@testing-library/jest-dom": "^7.0.0",
"@testing-library/react": "^16.3.2",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.4",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"@vitejs/plugin-react": "^6.0.5",
"@vitest/coverage-v8": "^4.1.10",
"fake-indexeddb": "^6.2.5",
"jsdom": "^29.1.1",
"jsdom": "^30.0.1",
"tailwindcss": "^4.3.3",
"typescript": "^7.0.2",
"vite": "^8.1.5",
"vite": "^8.2.0",
"vitest": "^4.1.10"
}
}
54 changes: 54 additions & 0 deletions packages/web/tests/jsdom-computed-style.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { describe, expect, it } from "vitest";

/**
* Regression guard for getComputedStyle() with CSS math functions.
*
* jsdom 30.0.0 threw "object null is not iterable" from getComputedStyle() for
* any CSS math function it couldn't reduce to a plain length, which covers every
* percentage-plus-length expression. @testing-library/dom calls getComputedStyle
* on every element during a role query, so one such declaration takes out every
* query in a file rather than a single assertion. The chart marker components
* use calc(6% + 1.25rem) for absolute positioning, so this isn't hypothetical.
*
* jsdom 30.0.1 fixed it upstream, which retired the local patch this file used
* to guard. These keep the behaviour pinned so a future jsdom regression fails
* with a clear cause instead of a cascade of unrelated "unable to find role"
* errors.
*
* Upstream: https://github.com/jsdom/jsdom/issues/4193
*/
describe("getComputedStyle with unresolvable CSS math functions", () => {
const unresolvable = [
// Used by TemperatureAnnotationMarkers and TemperatureEventMarkers.
["top", "calc(6% + 1.25rem)"],
["top", "calc(100% + 4px)"],
["width", "calc(100% - 40px)"],
["width", "min(360px, 100%)"],
["width", "max(360px, 100%)"],
["width", "clamp(100px, 50%, 360px)"],
] as const;

it.each(unresolvable)("does not throw for %s: %s", (property, value) => {
const element = document.createElement("div");
element.style.setProperty(property, value);
document.body.append(element);

try {
expect(() => window.getComputedStyle(element).getPropertyValue(property)).not.toThrow();
} finally {
element.remove();
}
});

it("still reduces math functions that resolve to a plain length", () => {
const element = document.createElement("div");
element.style.setProperty("width", "calc(8px * 2)");
document.body.append(element);

try {
expect(window.getComputedStyle(element).width).toBe("16px");
} finally {
element.remove();
}
});
});
Loading