Skip to content

Commit 7ef70c0

Browse files
authored
chore(deps): bring dependencies to latest (resizable-panels v4, react-day-picker 10, forge React 19, next-intl 4.13) (#472)
* chore(deps): bump tooling and runtime patch versions Bump build/test/lint/release/docs tooling and low-risk runtime patch versions within existing semver ranges (radix patches, tanstack, aws-sdk, swagger, nanoid, hono, uuid, vitest, playwright, typescript-eslint, docusaurus, webpack, etc). Excludes next-intl (deliberately pinned), react-resizable-panels (major, needs manual visual parity work), prisma/zenstack (owned by the v3 upgrade), and runtime-minor bumps handled in a separate commit. Verified: lint (0 errors), production build, full vitest suite (9745 passed). * chore(deps): bump runtime minor versions (tiptap, radix, rhf, bullmq, pg) Bump runtime libraries to their latest in-range minor versions, each verified non-breaking against our usage via changelog review: - @tiptap/* 3.26.1 -> 3.27.1 (ordered-list type attr, drag-handle/markdown fixes) - @radix-ui/react-avatar 1.1 -> 1.2, react-slot 1.2 -> 1.3 (additive) - framer-motion / motion 12.40 -> 12.41 - react-hook-form 7.78 -> 7.80, react-draggable 4.6 -> 4.7 - bullmq 5.78 -> 5.79, pg 8.21 -> 8.22 - openai 6.42 -> 6.45, ai 6.0.202 -> 6.0.209, axios 1.16.1 -> 1.18.1 next-intl, react-resizable-panels, ioredis, and prisma/zenstack intentionally left untouched. Verified: lint (0 errors), production build, full vitest suite (9745 passed). * chore(deps): remove dead @atlaskit transformer, bump ioredis to 5.11.1 - Remove @atlaskit/editor-jira-transformer: it is imported nowhere in the app, so the dependency (and its transitive tree) was dead weight. - Bump ioredis 5.10.1 -> 5.11.1 (minor, additive) in package.json and the pnpm-workspace.yaml override so the whole tree, including bullmq's transitive copy, resolves to a single version. Verified: lint (0 errors), production build, full vitest suite (9745 passed). * chore(deps): upgrade react-resizable-panels 3.0.6 -> 4.11.2 v4 is a hard breaking change: renamed PanelGroup->Group and PanelResizeHandle->Separator, renamed direction->orientation, removed onCollapse/onExpand/order/autoSaveId, switched the imperative ref to a panelRef prop, dropped the data-panel-group-direction attribute, and now treats bare-number sizes as PIXELS instead of percentages. Absorb all of this in the components/ui/resizable.tsx wrapper so callers stay on the v3-style API: - Group: map direction->orientation; reimplement autoSaveId persistence via defaultLayout/onLayoutChanged + localStorage; orientation via context so the vertical handle styling works without the removed data attribute. - Panel: forward ref to panelRef; strip order; re-derive onCollapse/onExpand from onResize; normalize the onResize PanelSize back to a number; convert numeric default/min/max/collapsed sizes to percentage strings (v4 would otherwise read them as pixels and collapse panels on mount). - Separator: disableDoubleClick to preserve current behavior. Callers only need the ImperativePanelHandle -> PanelImperativeHandle type rename (5 files). Updated the overview E2E collapse assertion (the data-panel-size attribute no longer exists in v4). Verified: lint (0 errors), build, full vitest suite (9745 passed), and a before/after screenshot pass across case-detail (expanded + collapsed), the report builder + vertical results group, and the repository tree. * chore(deps): upgrade forge-app to Forge SDK v8 / Babel 8; bump docs markdownlint forge-app (isolated Jira plugin): - @forge/api 7->8, @forge/bridge 5->6, @forge/kvs 1->2, @forge/resolver 1->2 (SDK majors are non-breaking for our resolver/kvs/api/bridge usage; api 8 only drops the legacy `storage` module, which we don't use) - @forge/cli 12->13, webpack-cli 6->7 (drop-in) - @babel/core+preset-env+preset-react 7->8 (Babel 8 is ESM-only, needs Node >=22.18 build host; pinned preset-react runtime "classic" to preserve the existing JSX transform) - lucide-react 0.577->1.21 (unused in forge-app) - @forge/react held at 11.17.0: v12 is currently uninstallable (transitive @atlassian/react-compiler-gating not published) and is cosmetic here (Custom UI app). react/react-dom kept at 18 (needs a forge-deploy runtime smoke-test before bumping). docs: - markdownlint-cli 0.47->0.49. (@Docusaurus 3.10 deferred: the pinned @acid-info/docusaurus-og plugin breaks the build on 3.10.) Verified: forge-app `webpack` build and `docusaurus build` both pass. Forge runtime (resolver/KVS/Jira API/UI Kit) still needs a forge deploy to fully validate. * chore(deps): bump docs lucide-react 0.561->1.21 and globals 16->17 Docs site (isolated): - lucide-react 0.x -> 1.x: all icons used in index.tsx keep their v1 names (none are renamed/removed brand icons); v1 defaults icons to aria-hidden=true but they're decorative-with-text here. - globals 16 -> 17: only audioWorklet split out (unused). Deferred (blocked by incompatible deps, build/lint verified): - @Docusaurus 3.10: the pinned @acid-info/docusaurus-og plugin crashes the build on 3.10 (no stable plugin release supports it yet). - eslint 10: eslint-plugin-react 7.37.5 calls the removed context.getFilename() and crashes under eslint 10; no compatible plugin release available yet. Verified: docusaurus build passes. (Pre-existing prettier/prettier lint errors in docs source are unrelated to these bumps.) * chore(deps): upgrade low-risk packages to latest Straightforward bumps that need no code changes: - lucide-react 0.577 -> 1.21 (v1 keeps the old icon names as aliases, so all ~156 icons across 422 files resolve unchanged) - ai 6 -> 7, xml-encryption 3 -> 4, slate-hyperscript 0.100 -> 0.125 (these are unused in app code / transitive) - concurrently 9 -> 10, shadcn 3 -> 4 (dev CLI tooling) - sharp 0.34 -> 0.35, prettier-plugin-tailwindcss 0.7 -> 0.8, baseline-browser-mapping 2.10.38 -> 2.10.40 (dev) - @changesets/changelog-github 0.5 -> 0.7 (release tooling) Verified: lint (0 errors), format:check, production build, full vitest suite (9745 passed). * chore(deps): upgrade app-runtime libs (marked, csv-parse, stream-json, zxcvbn) Empirically verified via type-check + build + full test suite: - marked 17 -> 18, csv-parse 6 -> 7, stream-json 1 -> 3, stream-chain 3 -> 4 (type-compatible, no code changes; testmo-import / CSV / markdown tests pass) - @zxcvbn-ts/core + language-en 3 -> 4: v4 replaced the top-level zxcvbn()/zxcvbnOptions with a ZxcvbnFactory instance (.check()) — updated PasswordStrengthIndicator + its test mock. Deferred (not upgraded): - undici 8: jsdom 29 (test env) uses undici 7 internally; the tree-wide override forcing undici 8 breaks jsdom. Kept at 7. - react-day-picker 10: shadcn calendar.tsx uses v9 classNames (caption, etc.) that v10 renamed/removed + initialFocus dropped; needs a calendar-component rewrite with visual verification across the app's date pickers. Verified: lint/type-check, production build, full vitest suite (9745 passed). * chore(deps): unpin next-intl 4.9.2 -> 4.13.0 next-intl was pinned at 4.9.2 because 4.10.1 broke our usage. That change was reverted upstream in 4.11.2, so 4.13.0 is safe again. Kept as an exact pin (not a range) to keep guarding against a future re-break. Verified: type-check, production build, full vitest suite (9745 passed). * chore(deps): bump @types/node 26, @types/nodemailer 8, commander 15 Type-compatible, no code changes: - @types/node 25 -> 26 (all workspace packages) - @types/nodemailer 7 -> 8 (testplanit) - commander 14 -> 15 (@testplanit/cli) Verified: testplanit type-check (0 errors), cli typecheck + build + tests (130 passed). typescript 6 deferred: prisma 6's generated @prisma/client types are not TS6-compatible (25k+ errors); it goes with the prisma 7 / zenstack upgrade. * chore(deps): bump vite 7 -> 8 and @vitejs/plugin-react 5 -> 6 @vitejs/plugin-react 6 requires vite 8; vitest 4.1.9 supports vite ^8, so the test toolchain upgrades cleanly (vite is only used by vitest, not the Next build). Raised the workspace `vite` override to ^8.1.0 to allow it. Verified: full vitest suite (9745 passed, clean exit). * test: make the @zxcvbn-ts/core v4 mock constructable The PasswordStrengthIndicator mock returned an arrow from vi.fn().mockImplementation, which isn't a constructor — so `new ZxcvbnFactory()` in the component threw an unhandled rejection during the test run (tests still passed, but vitest exited non-zero). Use a class mock. * chore(deps): upgrade react-day-picker 9 -> 10 v10 removed the v9-deprecated ClassNames aliases (`caption`, `table`) and the `initialFocus` prop. Migration: - components/ui/calendar.tsx: drop the dead `caption` and `table` keys. Both were deprecated aliases that v9 already ignored at runtime (the month caption reads `month_caption`, the grid reads `month_grid`), so removing them preserves the current layout — the calendar renders byte-identically before/after (verified via a before/after screenshot of the date-range popover). - ShareDialog / EditShareLinkDialog: `initialFocus` -> `autoFocus`. Verified: type-check (0 errors), production build, full vitest suite (9745 passed), and a pixel-identical before/after calendar screenshot. * chore(deps): bump forge-app react/react-dom 18 -> 19 The Forge Custom UI bundles (app.jsx/settings.jsx, react-dom createRoot) build clean under React 19, and `forge deploy` packaged + deployed the app (incl. the @forge/react UI Kit in index.jsx) to the development environment successfully. The deployed dev app on testplanit.atlassian.net was verified to render correctly (issue panel + admin page) under React 19. @forge/react stays at 11.17 (v12 is still an uninstallable release). Only the development environment was deployed; production installs are untouched. Verified: webpack build, forge lint, forge deploy (development), and a live render check of the issue panel + admin page in Jira.
1 parent 2fa0aff commit 7ef70c0

24 files changed

Lines changed: 6500 additions & 13855 deletions

File tree

cli/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,23 @@
2727
},
2828
"dependencies": {
2929
"chalk": "^5.6.2",
30-
"commander": "^14.0.3",
30+
"commander": "^15.0.0",
3131
"conf": "^15.1.0",
3232
"form-data": "^4.0.6",
3333
"glob": "^13.0.6",
34-
"ora": "^9.3.0"
34+
"ora": "^9.4.1"
3535
},
3636
"devDependencies": {
3737
"@semantic-release/changelog": "^6.0.3",
3838
"@semantic-release/git": "^10.0.1",
39-
"@semantic-release/github": "^12.0.6",
40-
"@types/bun": "^1.3.11",
41-
"@types/node": "^25.5.0",
42-
"@vitest/coverage-v8": "^4.1.2",
43-
"semantic-release": "^25.0.3",
39+
"@semantic-release/github": "^12.0.8",
40+
"@types/bun": "^1.3.14",
41+
"@types/node": "^26.0.1",
42+
"@vitest/coverage-v8": "^4.1.9",
43+
"semantic-release": "^25.0.5",
4444
"tsup": "^8.5.1",
4545
"typescript": "^5.9.3",
46-
"vitest": "^4.1.2"
46+
"vitest": "^4.1.9"
4747
},
4848
"engines": {
4949
"node": ">=24"

docs/package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,29 @@
3030
"docs": "0.3.2-canary.0",
3131
"embla-carousel-autoplay": "^8.6.0",
3232
"embla-carousel-react": "^8.6.0",
33-
"lucide-react": "^0.561.0",
33+
"lucide-react": "^1.21.0",
3434
"prism-react-renderer": "^2.4.1",
35-
"react": "^19.2.5",
36-
"react-dom": "^19.2.5"
35+
"react": "^19.2.7",
36+
"react-dom": "^19.2.7"
3737
},
3838
"devDependencies": {
3939
"@docusaurus/module-type-aliases": "3.9.2",
4040
"@docusaurus/tsconfig": "3.9.2",
4141
"@docusaurus/types": "3.9.2",
42-
"@typescript-eslint/eslint-plugin": "^8.58.1",
43-
"@typescript-eslint/parser": "^8.58.1",
44-
"dotenv": "^17.4.1",
42+
"@typescript-eslint/eslint-plugin": "^8.62.0",
43+
"@typescript-eslint/parser": "^8.62.0",
44+
"dotenv": "^17.4.2",
4545
"eslint": "9.39.2",
4646
"eslint-config-prettier": "^10.1.8",
4747
"eslint-plugin-jsx-a11y": "^6.10.2",
48-
"eslint-plugin-prettier": "^5.5.5",
48+
"eslint-plugin-prettier": "^5.5.6",
4949
"eslint-plugin-react": "^7.37.5",
50-
"eslint-plugin-react-hooks": "^7.0.1",
51-
"globals": "^16.5.0",
52-
"markdownlint-cli": "^0.47.0",
53-
"prettier": "^3.8.1",
50+
"eslint-plugin-react-hooks": "^7.1.1",
51+
"globals": "^17.7.0",
52+
"markdownlint-cli": "^0.49.0",
53+
"prettier": "^3.8.4",
5454
"typescript": "~5.9.3",
55-
"typescript-eslint": "^8.58.1"
55+
"typescript-eslint": "^8.62.0"
5656
},
5757
"browserslist": {
5858
"production": [

forge-app/package.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@
1313
"author": "TestPlanIt",
1414
"license": "MIT",
1515
"dependencies": {
16-
"@forge/api": "^7.1.2",
17-
"@forge/bridge": "^5.15.0",
18-
"@forge/kvs": "^1.6.0",
19-
"@forge/react": "^11.14.0",
20-
"@forge/resolver": "^1.7.1",
21-
"date-fns": "^4.1.0",
22-
"lucide-react": "^0.577.0",
23-
"react": "^18.3.1",
24-
"react-dom": "^18.3.1"
16+
"@forge/api": "^8.0.0",
17+
"@forge/bridge": "^6.0.0",
18+
"@forge/kvs": "^2.0.0",
19+
"@forge/react": "^11.17.0",
20+
"@forge/resolver": "^2.0.0",
21+
"date-fns": "^4.4.0",
22+
"lucide-react": "^1.21.0",
23+
"react": "^19.2.7",
24+
"react-dom": "^19.2.7"
2525
},
2626
"devDependencies": {
27-
"@babel/core": "^7.29.7",
28-
"@babel/preset-env": "^7.29.2",
29-
"@babel/preset-react": "^7.28.5",
30-
"@forge/cli": "^12.17.0",
31-
"@tailwindcss/postcss": "^4.2.2",
27+
"@babel/core": "^8.0.1",
28+
"@babel/preset-env": "^8.0.2",
29+
"@babel/preset-react": "^8.0.1",
30+
"@forge/cli": "^13.0.0",
31+
"@tailwindcss/postcss": "^4.3.1",
3232
"babel-loader": "^10.1.1",
3333
"css-loader": "^7.1.4",
34-
"html-webpack-plugin": "^5.6.6",
34+
"html-webpack-plugin": "^5.6.7",
3535
"mini-css-extract-plugin": "^2.10.2",
36-
"postcss": "~8.5.10",
36+
"postcss": "^8.5.15",
3737
"postcss-loader": "^8.2.1",
3838
"style-loader": "^4.0.0",
39-
"tailwindcss": "^4.2.2",
40-
"webpack": "^5.105.4",
41-
"webpack-cli": "^6.0.1"
39+
"tailwindcss": "^4.3.1",
40+
"webpack": "^5.108.0",
41+
"webpack-cli": "^7.0.3"
4242
}
4343
}

forge-app/webpack.config.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ const moduleRules = {
1111
use: {
1212
loader: 'babel-loader',
1313
options: {
14-
presets: ['@babel/preset-env', '@babel/preset-react'],
14+
presets: [
15+
'@babel/preset-env',
16+
// Babel 8 flips preset-react's default runtime to "automatic"; pin
17+
// "classic" to preserve the existing JSX transform (the frontend
18+
// files import React explicitly).
19+
['@babel/preset-react', { runtime: 'classic' }],
20+
],
1521
},
1622
},
1723
},

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
"packages:test": "pnpm --filter \"@testplanit/*\" test"
1414
},
1515
"devDependencies": {
16-
"@changesets/changelog-github": "^0.5.2",
17-
"@changesets/cli": "^2.30.0",
18-
"vite": "^7.3.5"
16+
"@changesets/changelog-github": "^0.7.0",
17+
"@changesets/cli": "^2.31.0",
18+
"vite": "^8.1.0"
1919
}
2020
}

packages/api/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@
5252
"tag": "latest"
5353
},
5454
"devDependencies": {
55-
"@types/node": "^25.5.2",
56-
"@vitest/coverage-v8": "^4.1.3",
55+
"@types/node": "^26.0.1",
56+
"@vitest/coverage-v8": "^4.1.9",
5757
"tsup": "^8.5.1",
5858
"typescript": "^5.9.3",
59-
"vitest": "^4.1.3"
59+
"vitest": "^4.1.9"
6060
}
6161
}

packages/mcp-server/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@
6060
},
6161
"devDependencies": {
6262
"@prisma/client": "~6.19.3",
63-
"@types/node": "^25.5.2",
64-
"@vitest/coverage-v8": "^4.1.3",
63+
"@types/node": "^26.0.1",
64+
"@vitest/coverage-v8": "^4.1.9",
6565
"tsup": "^8.5.1",
6666
"typescript": "^5.9.3",
67-
"vitest": "^4.1.3"
67+
"vitest": "^4.1.9"
6868
}
6969
}

packages/playwright-testplanit-reporter/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@
5858
"@testplanit/api": "workspace:^"
5959
},
6060
"devDependencies": {
61-
"@playwright/test": "^1.60.0",
62-
"@types/node": "^25.6.0",
63-
"@vitest/coverage-v8": "^4.1.3",
61+
"@playwright/test": "^1.61.1",
62+
"@types/node": "^26.0.1",
63+
"@vitest/coverage-v8": "^4.1.9",
6464
"tsup": "^8.5.1",
6565
"typescript": "^5.9.3",
66-
"vitest": "^4.1.3"
66+
"vitest": "^4.1.9"
6767
}
6868
}

packages/wdio-testplanit-reporter/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@
5959
"@testplanit/api": "workspace:^"
6060
},
6161
"devDependencies": {
62-
"@types/node": "^25.6.0",
63-
"@vitest/coverage-v8": "^4.1.3",
64-
"@wdio/reporter": "^9.27.0",
65-
"@wdio/types": "^9.27.0",
62+
"@types/node": "^26.0.1",
63+
"@vitest/coverage-v8": "^4.1.9",
64+
"@wdio/reporter": "^9.29.0",
65+
"@wdio/types": "^9.29.0",
6666
"tsup": "^8.5.1",
6767
"typescript": "^5.9.3",
68-
"vitest": "^4.1.3"
68+
"vitest": "^4.1.9"
6969
}
7070
}

0 commit comments

Comments
 (0)