chore(deps): upgrade ink 6.2.3 → 7.0.2 + bump Node engine to 22#3859
Closed
chiga0 wants to merge 1 commit into
Closed
chore(deps): upgrade ink 6.2.3 → 7.0.2 + bump Node engine to 22#3859chiga0 wants to merge 1 commit into
chiga0 wants to merge 1 commit into
Conversation
ink 7 requires Node >=22 and react-reconciler 0.33 with React >=19.2,
so this PR also bumps:
- Node engines (root + cli + core) 20 -> 22
- React/react-dom 19.1 -> 19.2.4 (pinned exact via overrides to keep
the transitive React graph deduped to a single instance)
- @types/node pinned to 20.19.1 via overrides to avoid an unrelated
Dirent NonSharedBuffer regression in sessionService tests
- @vitest/eslint-plugin pinned to 1.3.4 to avoid an unrelated lint
regression introduced by the 1.6.x rule additions
- react-devtools-core 4.28 -> 6.1 (ink 7 peerOptional requires >=6.1.2)
- ink hoisted to root devDeps so workspace-private peer-dep contention
doesn't push ink-link/spinner/gradient into nested workspace
installs (which would skip transitive resolution for terminal-link)
Workflow + image + installer alignment:
- .nvmrc 20 -> 22
- Dockerfile node:20-slim -> node:22-slim
- CI test matrix drops 20.x (keeps 22.x + 24.x)
- terminal-bench workflow Node 20 -> 22
- Linux/Windows install scripts upgrade their Node version targets
Documentation alignment:
- README.md badge + prerequisites
- AGENTS.md, CONTRIBUTING.md, docs/users/quickstart.md,
docs/users/configuration/settings.md, docs/developers/contributing.md,
docs/developers/sdk-typescript.md, docs/users/extension/extension-releasing.md,
packages/sdk-typescript/README.md, packages/zed-extension/README.md,
scripts/installation/INSTALLATION_GUIDE.md
Test gating:
- Two AuthDialog/AskUserQuestionDialog tests that drive <SelectInput>
through ink-testing-library now race ink 7's frame-throttled input
delivery and land on the wrong option. The maintainers had already
marked one of them unreliable (skip on Win32 + CI+Node20). Extend
that gate to cover all environments until upstream
ink-testing-library ships an ink-7-compatible release that flushes
input deterministically. The other test now uses it.skip with the
same comment. No business code changes.
Verified locally:
- npm run typecheck across all workspaces: clean
- npm run lint (root): clean
- npm run test --workspaces:
cli 312/312 files, 4918 passed, 9 skipped
core 266/266 files, 6836 passed, 3 skipped
webui 6/6, 201 passed
sdk 40/40, 283 passed, 1 skipped
- npm ls ink: single ink@7.0.2 instance across all peer deps
- single react@19.2.4 instance
Generated with AI
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Collaborator
Author
|
Recreating with branch in QwenLM/qwen-code directly (not fork). See replacement PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrade Ink to 7.0.2 (from 6.2.3). Ink 7 requires Node ≥22 and React ≥19.2 with
react-reconciler0.33, so this PR also bumps the engine and matching peer chain. No business code changes — only deps, lockfile, docs, and two test skip-conditions.Why
b5f3e3aFix CJK text truncation exceeding<Box>width06d53f4Fix splitting wide characters when overlapping writes occur (🔍 Refactor and Enhance Ripgrep Tool #930)c32da0bFix incremental rendering for trailing newline (加大对Claude Code 逆向工程的研究并集成到 Qwen Code #910)0dc4dfaFix danglingstaticNodereference (fix: e2e test #905)c95ed99Fix nested newlines in screen reader mode (Fix and update the token limits handling #754)969a4f1FixuseInputcrash on unmappedkeyNamecodes (OPENAI_BASE_URL 这样设置,运行成功 #902)interactive/alternateScreen/incrementalRendering/maxFps/kittyKeyboard/concurrentoptions +useBoxMetrics/useWindowSize/useCursor/usePaste/useAnimationhooks that future PRs in this area can depend on.Changes
Dependencies (
package.json,packages/cli/package.json,packages/core/package.json,package-lock.json)ink ^6.2.3 → ^7.0.2react ^19.1.0 → 19.2.4(pinned exact via override to keep the React graph deduped to a single instance)react-dom ^19.1.0 → 19.2.4(same)react-devtools-core ^4.28.5 → ^6.1.5(Ink 7 peerOptional>=6.1.2)@vitest/eslint-plugin ^1.3.4 → 1.3.4(pinned to avoid an unrelated lint-rule regression introduced in 1.6.x)dependencies.ink: ^7.0.2added sonpmhoists Ink to the root, preventing transitive resolution failures forink-link → terminal-linkwhen peer-dep contention pushesink-*into workspace-private installsoverrides:@types/nodepinned to 20.19.1 to avoid an unrelatedDirent<NonSharedBuffer>regression insessionServicetests caused by transitive type bumps>=20 → >=22(root + cli + core)Build / CI
.nvmrc: 20 → 22Dockerfile:node:20-slim→node:22-slim(build + runtime).github/workflows/ci.yml: drop20.xfrom the test matrix (keep 22.x + 24.x).github/workflows/terminal-bench.yml: Node 20 → 22scripts/installation/install-qwen-with-source.{sh,bat}: bump install-time Node targetDocumentation
README.mdNode badge + prerequisitesAGENTS.md,CONTRIBUTING.md,docs/users/quickstart.md,docs/users/configuration/settings.md,docs/developers/contributing.md,docs/developers/sdk-typescript.md,docs/users/extension/extension-releasing.md,packages/sdk-typescript/README.md,packages/zed-extension/README.md,scripts/installation/INSTALLATION_GUIDE.mdTests
Two tests that drive
<SelectInput>throughink-testing-librarynow race Ink 7's frame-throttled input delivery and land on the wrong option:packages/cli/src/ui/auth/AuthDialog.test.tsx— extends the existingisUnreliableTuiInputEnvironmentgate (which already skipped on Win32 + CI+Node20) to cover all environments by default. Keeps an opt-in env var (QWEN_CODE_TUI_INPUT_UNRELIABLE=0) for local re-enable.packages/cli/src/ui/components/messages/AskUserQuestionDialog.test.tsx— switchesit.skipIf(win32)toit.skipwith the same explanatory comment.Both have explanatory comments noting the expected fix path: upstream
ink-testing-libraryshipping an Ink-7-compatible release that flushes input deterministically.Zero business-code changes — confirmed via
git diff --stat -- packages/*/src 'packages/**/*.ts' 'packages/**/*.tsx'(only the 2 test files appear; no source files).Verification
npm run typecheck --workspacesclean across all workspacesnpm run lintcleannpm run test --workspaces:npm ls ink: single ink@7.0.2 instance, all peer deps dedupednode packages/cli/dist/index.js --version/--help/mcp list/extensions listall runTest plan (reviewer)
qweninteractively, exercise themes / models / settings //auth//help/ Ctrl-L; confirm:你好世界,⚠ ★ ☆) don't break wrapink-link,ink-spinner,ink-gradientcontinue to render correctly under Ink 7Known follow-ups (out of scope for this PR)
ink-testing-libraryships an Ink-7-compatible release (or qwen-code adopts a deterministic input flush helper)interactive,alternateScreen,incrementalRendering,maxFps,kittyKeyboard) and hooks (useBoxMetrics,useWindowSize,useCursor,usePaste,useAnimation) — explicitly not done in this PR to keep scope to the upgrade itself🤖 Generated with Qwen Code