Skip to content

Upgrade GitHub Actions for Node 24 compatibility#1876

Merged
yiliang114 merged 1 commit into
QwenLM:mainfrom
salmanmkc:upgrade-github-actions-node24
May 12, 2026
Merged

Upgrade GitHub Actions for Node 24 compatibility#1876
yiliang114 merged 1 commit into
QwenLM:mainfrom
salmanmkc:upgrade-github-actions-node24

Conversation

@salmanmkc

@salmanmkc salmanmkc commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

Warning

You may currently be seeing a warning like this in your workflow runs:

Node.js 20 actions are deprecated. The following actions are running on Node.js 20
and may not work as expected: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8, actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0, actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065, actions/upload-artifact@v4, actions/download-artifact@v4, actions/stale@5bef64f19d7facfb25b37b414482c7164d639639, actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b.
Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026.
Please check if updated versions of these actions are available that support Node.js 24.
To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment
variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you
can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true.
For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

The exact actions listed will vary per workflow.

Upgrades GitHub Actions to versions that support Node 24, since Node 20 is reaching EOL in April 2026.

Changes

Action Old Version(s) New Version Compare Files
actions/checkout 08c6903 de0fac2 Diff build-and-publish-image.yml, ci.yml, docs-page-action.yml, e2e.yml, gemini-scheduled-pr-triage.yml, qwen-code-pr-review.yml, release-sdk-python.yml, release-sdk.yml, release-vscode-companion.yml, release.yml, sdk-python.yml, terminal-bench.yml
actions/download-artifact 634f93c, v4 3e5f45b Diff ci.yml, release-vscode-companion.yml
actions/github-script 60a0d83 3a2844b Diff check-issue-completeness.yml, qwen-automated-issue-triage.yml
actions/setup-node 49933ea 48b55a0 Diff ci.yml, e2e.yml, release-sdk-python.yml, release-sdk.yml, release-vscode-companion.yml, release.yml, terminal-bench.yml
actions/setup-python a26af69 a309ff8 Diff release-sdk-python.yml, sdk-python.yml
actions/stale 5bef64f b5d41d4 Diff stale.yml
actions/upload-artifact 6f51ac0, ea165f8, v4 043fb46 Diff ci.yml, release-vscode-companion.yml, terminal-bench.yml

Context

Per GitHub's announcement, Node 20 is being deprecated and runners will default to Node 24 starting June 2nd, 2026.

  • Node 20 EOL: April 2026
  • Node 24 becomes default: June 2nd, 2026

Notes

All actions are pinned to commit SHAs for supply-chain security. Version comments are included for readability (e.g. actions/checkout@abc123 # v6).

Worth running the workflows on a branch before merging to make sure everything still works.

wenshao
wenshao previously approved these changes Apr 18, 2026

@wenshao wenshao left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. LGTM! ✅ — gpt-5.4 via Qwen Code /review

@wenshao

wenshao commented Apr 18, 2026

Copy link
Copy Markdown
Collaborator

Hi @salmanmkc, thanks for the upgrade! This PR currently has merge conflicts against main — could you rebase and resolve them? Looks like most of the original changes have already landed via other PRs, so the remaining diff should be small. Happy to review once it's green.

@salmanmkc salmanmkc force-pushed the upgrade-github-actions-node24 branch 2 times, most recently from 69c8e75 to d210df1 Compare April 19, 2026 07:44
@salmanmkc

Copy link
Copy Markdown
Contributor Author

Hi @salmanmkc, thanks for the upgrade! This PR currently has merge conflicts against main — could you rebase and resolve them? Looks like most of the original changes have already landed via other PRs, so the remaining diff should be small. Happy to review once it's green.

yup done! bumped the versions again since we've had new releases since

@wenshao wenshao left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Suggestion] packages/core/src/tools/swarm.ts: timed-out workers are currently reported as cancelled, but this tool's schema and docs describe timeouts as failures. That makes summary.failed undercount real timeouts and breaks the result contract for callers that distinguish failures from explicit cancellations. Suggested fix: in the timeout path, return status: 'failed'; keep only externally aborted / first-success-short-circuited workers as cancelled.

— gpt-5.4 via Qwen Code /review

@salmanmkc

Copy link
Copy Markdown
Contributor Author

[Suggestion] packages/core/src/tools/swarm.ts: timed-out workers are currently reported as cancelled, but this tool's schema and docs describe timeouts as failures. That makes summary.failed undercount real timeouts and breaks the result contract for callers that distinguish failures from explicit cancellations. Suggested fix: in the timeout path, return status: 'failed'; keep only externally aborted / first-success-short-circuited workers as cancelled.

— gpt-5.4 via Qwen Code /review

i think that's probably out of scope for the PR

@wenshao

wenshao commented Apr 27, 2026

Copy link
Copy Markdown
Collaborator

Thanks for tackling the Node 24 prep work, @salmanmkc.

The PR description's "Changes" table lists upgrades across 14+ workflow files spanning 7 actions (checkout, download-artifact, github-script, setup-node, setup-python, stale, upload-artifact), but the actual diff only modifies release-vscode-companion.yml (3 lines). As-is, the stated goal of Node 24 compatibility is not delivered — ci.yml, release.yml, e2e.yml, eval.yml, terminal-bench.yml and others still pin the old SHAs.

Could you please do one of:

  1. Push commits that actually upgrade the other workflows in the description table, or
  2. Shrink the PR description to match the real scope (vscode-companion only) and open a separate PR (or follow-up) for the rest.

Two minor inconsistencies to also resolve:

  • Description says actions/download-artifact → v7, but the diff bumps it to @v8. v8 is the latest (v8.0.1 was just released), so the diff itself is fine — just sync the description.
  • The current diff mixes download-artifact@v8 with upload-artifact@v7. upload-artifact has no v8 yet, so v7 is correct — please add a brief note in the description acknowledging the cross-version pairing is intentional.

Happy to re-review once the scope and description are consistent.

@salmanmkc salmanmkc force-pushed the upgrade-github-actions-node24 branch 2 times, most recently from 48b8d9c to 0f74186 Compare April 27, 2026 22:47
@salmanmkc

Copy link
Copy Markdown
Contributor Author

Thanks for tackling the Node 24 prep work, @salmanmkc.

The PR description's "Changes" table lists upgrades across 14+ workflow files spanning 7 actions (checkout, download-artifact, github-script, setup-node, setup-python, stale, upload-artifact), but the actual diff only modifies release-vscode-companion.yml (3 lines). As-is, the stated goal of Node 24 compatibility is not delivered — ci.yml, release.yml, e2e.yml, eval.yml, terminal-bench.yml and others still pin the old SHAs.

Could you please do one of:

  1. Push commits that actually upgrade the other workflows in the description table, or
  2. Shrink the PR description to match the real scope (vscode-companion only) and open a separate PR (or follow-up) for the rest.

Two minor inconsistencies to also resolve:

  • Description says actions/download-artifact → v7, but the diff bumps it to @v8. v8 is the latest (v8.0.1 was just released), so the diff itself is fine — just sync the description.
  • The current diff mixes download-artifact@v8 with upload-artifact@v7. upload-artifact has no v8 yet, so v7 is correct — please add a brief note in the description acknowledging the cross-version pairing is intentional.

Happy to re-review once the scope and description are consistent.

Hi, updated it! Also did one for non first party Actions: https://github.com/QwenLM/qwen-code/pull/3683/changes

wenshao
wenshao previously approved these changes Apr 28, 2026

@wenshao wenshao left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found. LGTM! ✅ — gpt-5.5 via Qwen Code /review

@wenshao

wenshao commented Apr 30, 2026

Copy link
Copy Markdown
Collaborator

Thanks @salmanmkc — all the earlier review points look resolved (description now matches the diff, SHAs verified against upstream tags via the GitHub API, cross-version pairing documented, CI fully green).

One remaining concern before merging: these new action versions all bundle the Node 24 runtime, so anywhere they execute needs a working Node 24 binary. GitHub-hosted runners are fine, but architectures without official Node 24 binaries (e.g. RISC-V) wouldn't be able to run these workflows — anyone using a self-hosted runner on such an arch would be blocked.

@pomelo-nwu — could you help confirm this won't impact any runner / build environment we care about? Given your work on multi-arch and standalone packaging in #3728, you likely have the best read here.

@wenshao wenshao dismissed their stale review April 30, 2026 14:19

Dismissing previous approval — branch is now conflicting with main after recent merges. Please rebase, after which I'll re-review and re-approve. The change itself still looks fine; this is purely about getting back to a mergeable state.

@yiliang114

Copy link
Copy Markdown
Collaborator

Hi @salmanmkc, thanks again for the updates. This PR is showing merge conflicts against main again. Could you rebase or sync the branch with the latest main and resolve the conflicts when you get a chance? I'll take another look once it's mergeable.

Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
@salmanmkc salmanmkc force-pushed the upgrade-github-actions-node24 branch from 0f74186 to 7f30234 Compare May 12, 2026 01:42
@salmanmkc

Copy link
Copy Markdown
Contributor Author

Hi @salmanmkc, thanks again for the updates. This PR is showing merge conflicts against main again. Could you rebase or sync the branch with the latest main and resolve the conflicts when you get a chance? I'll take another look once it's mergeable.

Done!

@yiliang114 yiliang114 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the follow-up updates. I re-reviewed the current head (7f302349fddb7e704f47834df5843ac50b0d5aff): the diff is now limited to the GitHub Actions version-pin updates, the new SHAs match the intended upstream tags, the upgraded actions declare the Node 24 runtime, and the affected workflows run on GitHub-hosted runners. CI is green as well, so I don't see any remaining merge-blocking issue.

One note on the comment format: this PR replaces the previous # ratchet:owner/action@tag annotations with plain # v... comments. Historically those ratchet: comments were machine-readable metadata for ratchet-based pin maintenance, but this repository no longer runs the ratchet check in CI. So I’m treating that as a maintainability/convention change rather than a runtime issue for this PR, and I don’t think it should block the Node 24 action upgrade. We can restore or standardize that annotation style separately if we decide to keep ratchet metadata going forward.

@yiliang114 yiliang114 merged commit 70eecdb into QwenLM:main May 12, 2026
12 checks passed
chiga0 pushed a commit that referenced this pull request May 12, 2026
…ion from #3860

PR #3860 upgraded ink 6.2.3 → 7.0.2 with the claim of "no business code
changes." In production this turns out to break the TUI:

- After `/clear`, the next user message and AI response do not render
  to the static history area — only the dynamic spinner/input area is
  visible (#3860 + chore/upgrade-ink-7 branch reproduce this).
- After Ctrl+O (TOGGLE_COMPACT_MODE), the screen is cleared and stays
  blank.
- Any `refreshStatic()` call path (auth refresh, model change, render-
  mode switch, /clear, Ctrl+O) puts the UI into the same "muted" state.

Root cause is an ink 7 regression: when `<Static>` is remounted by
changing its `key` prop, the new instance's items are never written to
stdout. A 30-line minimal repro (pure ink + Static + key++) confirms
this independently of qwen-code.

Closest upstream issue: vadimdemedes/ink#773
(useLayoutEffect-driven child stripping in <Static>). PR #905
("Fix dangling staticNode reference") merged into ink 7 fixed the
unmount-OOM path but not this remount path. No upstream issue yet
matches the "remount loses content" case — we should file one and
ship a re-upgrade once it is resolved.

Scope of this revert (intentional partial revert of #3860):

- ink ^7.0.2 → ^6.2.3 (cli + root hoist)
- react / react-dom 19.2.4 pin → ^19.1.0 (cli direct, root overrides
  removed)
- wrap-ansi ^10.0.0 → 9.0.2 (cli direct, root override restored)
- react-devtools-core kept at ^6.1.5 (still ink-6 compatible — ink
  6.8.0's peerOptional requires >=6.1.2; downgrading to 4.x would
  re-introduce a conflict)
- @vitest/eslint-plugin pin "1.3.4" → "^1.3.4"
- "@types/node" override removed (was only needed for ink 7's Node 22
  type drift)

What this revert keeps:

- Node engines >=22 across root / cli / core / sdk / web-templates and
  the matching Dockerfile / .nvmrc / CI matrix work. PR #1876 followed
  up by adding Node 24 support to the matrix, and rolling those back
  would conflict with that work. The visible bug is the ink runtime
  regression, not the engine bump.
- doctorChecks.ts MIN_NODE_MAJOR = 22 (matches engines).
- The test gating that #3860 added for ink-7 input throttle (AuthDialog
  / AskUserQuestionDialog / InputPrompt). With ink 6 these tests would
  pass un-gated, but leaving the gate in place is harmless and a
  follow-up can un-gate them. Keeping this revert minimal.

Verification (local, ink 6.8.0 single instance):

- npm ls ink → single ink@6.8.0
- npm ls react → single react@19.2.4 (kept by vscode-ide-companion
  workspace pin; ink 6 is fine on 19.2)
- npm run typecheck --workspace=packages/cli → clean
- AppContainer.test.tsx 61/61 pass
- MainContent.test.tsx 6/6 pass
- clearCommand.test.ts 13/13 pass

Re-upgrade path: once ink ships a fix for the Static-remount
regression, redo this upgrade behind the feat/virtual-viewport-on-ink7
branch where the `<Static>` + clearTerminal combo is replaced by an
overflowY=hidden self-managed viewport.

Generated with AI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
chiga0 added a commit that referenced this pull request May 12, 2026
…n from #3860 (#4083)

* revert(deps): downgrade ink 7.0.2 → 6.x to fix Static-remount regression from #3860

PR #3860 upgraded ink 6.2.3 → 7.0.2 with the claim of "no business code
changes." In production this turns out to break the TUI:

- After `/clear`, the next user message and AI response do not render
  to the static history area — only the dynamic spinner/input area is
  visible (#3860 + chore/upgrade-ink-7 branch reproduce this).
- After Ctrl+O (TOGGLE_COMPACT_MODE), the screen is cleared and stays
  blank.
- Any `refreshStatic()` call path (auth refresh, model change, render-
  mode switch, /clear, Ctrl+O) puts the UI into the same "muted" state.

Root cause is an ink 7 regression: when `<Static>` is remounted by
changing its `key` prop, the new instance's items are never written to
stdout. A 30-line minimal repro (pure ink + Static + key++) confirms
this independently of qwen-code.

Closest upstream issue: vadimdemedes/ink#773
(useLayoutEffect-driven child stripping in <Static>). PR #905
("Fix dangling staticNode reference") merged into ink 7 fixed the
unmount-OOM path but not this remount path. No upstream issue yet
matches the "remount loses content" case — we should file one and
ship a re-upgrade once it is resolved.

Scope of this revert (intentional partial revert of #3860):

- ink ^7.0.2 → ^6.2.3 (cli + root hoist)
- react / react-dom 19.2.4 pin → ^19.1.0 (cli direct, root overrides
  removed)
- wrap-ansi ^10.0.0 → 9.0.2 (cli direct, root override restored)
- react-devtools-core kept at ^6.1.5 (still ink-6 compatible — ink
  6.8.0's peerOptional requires >=6.1.2; downgrading to 4.x would
  re-introduce a conflict)
- @vitest/eslint-plugin pin "1.3.4" → "^1.3.4"
- "@types/node" override removed (was only needed for ink 7's Node 22
  type drift)

What this revert keeps:

- Node engines >=22 across root / cli / core / sdk / web-templates and
  the matching Dockerfile / .nvmrc / CI matrix work. PR #1876 followed
  up by adding Node 24 support to the matrix, and rolling those back
  would conflict with that work. The visible bug is the ink runtime
  regression, not the engine bump.
- doctorChecks.ts MIN_NODE_MAJOR = 22 (matches engines).
- The test gating that #3860 added for ink-7 input throttle (AuthDialog
  / AskUserQuestionDialog / InputPrompt). With ink 6 these tests would
  pass un-gated, but leaving the gate in place is harmless and a
  follow-up can un-gate them. Keeping this revert minimal.

Verification (local, ink 6.8.0 single instance):

- npm ls ink → single ink@6.8.0
- npm ls react → single react@19.2.4 (kept by vscode-ide-companion
  workspace pin; ink 6 is fine on 19.2)
- npm run typecheck --workspace=packages/cli → clean
- AppContainer.test.tsx 61/61 pass
- MainContent.test.tsx 6/6 pass
- clearCommand.test.ts 13/13 pass

Re-upgrade path: once ink ships a fix for the Static-remount
regression, redo this upgrade behind the feat/virtual-viewport-on-ink7
branch where the `<Static>` + clearTerminal combo is replaced by an
overflowY=hidden self-managed viewport.

Generated with AI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* ci(fix): keep wrap-ansi 10 + skip 1 ink-7-specific TableRenderer test

The initial revert downgraded wrap-ansi to 9.0.2 (the pre-PR-#3860
state). After rebasing onto current main, PR #4050 (preserve table
ANSI color across wrapped lines) brought in a new test
("does not preserve foreground after an explicit foreground reset")
whose wrap point depends on ink 7's <Text> wrapping behavior.

Two-part fix:

1. Restore wrap-ansi to 10 (cli direct dep). The wrap-ansi version is
   independent of the ink regression we're reverting — wrap-ansi 10
   has no peer-dep tie to ink 7 — and #4050's TableRenderer code on
   main already assumes wrap-ansi 10. Keeping the wrap-ansi bump
   removes the root override for wrap-ansi (was forcing all transitives
   to 9.0.2) so cli's TableRenderer gets the wrap-ansi 10 it expects,
   while ink 6's transitive wrap-ansi naturally resolves to 9 (its own
   declared range) — no conflict.

2. Skip the one new test that asserts a specific wrap position. The
   other assertions in that test (foreground cleared, equal visible
   widths) still pass on ink 6 — only `expectWrappedContinuation` is
   ink-7-specific. The sibling test 'does not preserve foreground
   after an explicit reset' (using \\u001b[0m instead of \\u001b[39m)
   still passes unmodified on ink 6, so the ANSI-handling logic itself
   is verified end-to-end. The TODO marker references the re-upgrade
   path.

Local verification:

- TableRenderer.test.tsx: 54/54 pass + 1 skipped
- AppContainer.test.tsx: 61/61 pass
- MainContent.test.tsx: 6/6 pass
- clearCommand.test.ts: 13/13 pass
- npm run typecheck --workspace=packages/cli: clean
- npm ls ink → single ink@6.8.0
- npm ls wrap-ansi → cli direct: 10.0.0; ink 6 transitive: 9.0.2
  (no conflict, no override)

Generated with AI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

---------

Co-authored-by: 秦奇 <gary.gq@alibaba-inc.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
TaimoorSiddiquiOfficial pushed a commit to TaimoorSiddiquiOfficial/HopCode that referenced this pull request May 13, 2026
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
wenshao pushed a commit that referenced this pull request May 17, 2026
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
wenshao pushed a commit that referenced this pull request May 17, 2026
…n from #3860 (#4083)

* revert(deps): downgrade ink 7.0.2 → 6.x to fix Static-remount regression from #3860

PR #3860 upgraded ink 6.2.3 → 7.0.2 with the claim of "no business code
changes." In production this turns out to break the TUI:

- After `/clear`, the next user message and AI response do not render
  to the static history area — only the dynamic spinner/input area is
  visible (#3860 + chore/upgrade-ink-7 branch reproduce this).
- After Ctrl+O (TOGGLE_COMPACT_MODE), the screen is cleared and stays
  blank.
- Any `refreshStatic()` call path (auth refresh, model change, render-
  mode switch, /clear, Ctrl+O) puts the UI into the same "muted" state.

Root cause is an ink 7 regression: when `<Static>` is remounted by
changing its `key` prop, the new instance's items are never written to
stdout. A 30-line minimal repro (pure ink + Static + key++) confirms
this independently of qwen-code.

Closest upstream issue: vadimdemedes/ink#773
(useLayoutEffect-driven child stripping in <Static>). PR #905
("Fix dangling staticNode reference") merged into ink 7 fixed the
unmount-OOM path but not this remount path. No upstream issue yet
matches the "remount loses content" case — we should file one and
ship a re-upgrade once it is resolved.

Scope of this revert (intentional partial revert of #3860):

- ink ^7.0.2 → ^6.2.3 (cli + root hoist)
- react / react-dom 19.2.4 pin → ^19.1.0 (cli direct, root overrides
  removed)
- wrap-ansi ^10.0.0 → 9.0.2 (cli direct, root override restored)
- react-devtools-core kept at ^6.1.5 (still ink-6 compatible — ink
  6.8.0's peerOptional requires >=6.1.2; downgrading to 4.x would
  re-introduce a conflict)
- @vitest/eslint-plugin pin "1.3.4" → "^1.3.4"
- "@types/node" override removed (was only needed for ink 7's Node 22
  type drift)

What this revert keeps:

- Node engines >=22 across root / cli / core / sdk / web-templates and
  the matching Dockerfile / .nvmrc / CI matrix work. PR #1876 followed
  up by adding Node 24 support to the matrix, and rolling those back
  would conflict with that work. The visible bug is the ink runtime
  regression, not the engine bump.
- doctorChecks.ts MIN_NODE_MAJOR = 22 (matches engines).
- The test gating that #3860 added for ink-7 input throttle (AuthDialog
  / AskUserQuestionDialog / InputPrompt). With ink 6 these tests would
  pass un-gated, but leaving the gate in place is harmless and a
  follow-up can un-gate them. Keeping this revert minimal.

Verification (local, ink 6.8.0 single instance):

- npm ls ink → single ink@6.8.0
- npm ls react → single react@19.2.4 (kept by vscode-ide-companion
  workspace pin; ink 6 is fine on 19.2)
- npm run typecheck --workspace=packages/cli → clean
- AppContainer.test.tsx 61/61 pass
- MainContent.test.tsx 6/6 pass
- clearCommand.test.ts 13/13 pass

Re-upgrade path: once ink ships a fix for the Static-remount
regression, redo this upgrade behind the feat/virtual-viewport-on-ink7
branch where the `<Static>` + clearTerminal combo is replaced by an
overflowY=hidden self-managed viewport.

Generated with AI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* ci(fix): keep wrap-ansi 10 + skip 1 ink-7-specific TableRenderer test

The initial revert downgraded wrap-ansi to 9.0.2 (the pre-PR-#3860
state). After rebasing onto current main, PR #4050 (preserve table
ANSI color across wrapped lines) brought in a new test
("does not preserve foreground after an explicit foreground reset")
whose wrap point depends on ink 7's <Text> wrapping behavior.

Two-part fix:

1. Restore wrap-ansi to 10 (cli direct dep). The wrap-ansi version is
   independent of the ink regression we're reverting — wrap-ansi 10
   has no peer-dep tie to ink 7 — and #4050's TableRenderer code on
   main already assumes wrap-ansi 10. Keeping the wrap-ansi bump
   removes the root override for wrap-ansi (was forcing all transitives
   to 9.0.2) so cli's TableRenderer gets the wrap-ansi 10 it expects,
   while ink 6's transitive wrap-ansi naturally resolves to 9 (its own
   declared range) — no conflict.

2. Skip the one new test that asserts a specific wrap position. The
   other assertions in that test (foreground cleared, equal visible
   widths) still pass on ink 6 — only `expectWrappedContinuation` is
   ink-7-specific. The sibling test 'does not preserve foreground
   after an explicit reset' (using \\u001b[0m instead of \\u001b[39m)
   still passes unmodified on ink 6, so the ANSI-handling logic itself
   is verified end-to-end. The TODO marker references the re-upgrade
   path.

Local verification:

- TableRenderer.test.tsx: 54/54 pass + 1 skipped
- AppContainer.test.tsx: 61/61 pass
- MainContent.test.tsx: 6/6 pass
- clearCommand.test.ts: 13/13 pass
- npm run typecheck --workspace=packages/cli: clean
- npm ls ink → single ink@6.8.0
- npm ls wrap-ansi → cli direct: 10.0.0; ink 6 transitive: 9.0.2
  (no conflict, no override)

Generated with AI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

---------

Co-authored-by: 秦奇 <gary.gq@alibaba-inc.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants