Commit 7ef70c0
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
- docs
- forge-app
- packages
- api
- mcp-server
- playwright-testplanit-reporter
- wdio-testplanit-reporter
- testplanit
- app/[locale]/projects
- overview/[projectId]
- repository/[projectId]
- [caseId]
- runs/[projectId]/[runId]
- sessions/[projectId]/[sessionId]
- components
- reports
- ui
- e2e/tests/project-management
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | | - | |
36 | | - | |
| 35 | + | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
44 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
49 | 49 | | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
41 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
42 | 42 | | |
43 | 43 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
15 | 21 | | |
16 | 22 | | |
17 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
18 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
| 55 | + | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
64 | | - | |
| 63 | + | |
| 64 | + | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | 69 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
67 | 67 | | |
68 | 68 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
| 68 | + | |
69 | 69 | | |
70 | 70 | | |
0 commit comments