Skip to content

feat(devtools)!: reuse the built-in Terminals dock via ctx.terminals#1026

Open
antfubot wants to merge 2 commits into
nuxt:mainfrom
antfubot:feat/terminals-reuse-devframe
Open

feat(devtools)!: reuse the built-in Terminals dock via ctx.terminals#1026
antfubot wants to merge 2 commits into
nuxt:mainfrom
antfubot:feat/terminals-reuse-devframe

Conversation

@antfubot

@antfubot antfubot commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements plan 02-terminals-reuse from the Vite DevTools integration series. Nuxt DevTools stops shipping its own @xterm terminal UI + RPC and instead surfaces terminal sessions through the devframe terminals host (ctx.terminals), so they render in Vite DevTools' built-in Terminals dock (which auto-hides when empty). The Nuxt "Terminals" tab is removed.

Existing modules keep working via a compat shim. For the "DevTools owns the process" model (output-only child processes and interactive PTYs), no new Nuxt-specific API is introduced — modules use Vite DevTools' own terminals host directly via the already-exposed onDevtoolsReady((ctx) => ctx.terminals.startChildProcess(...) / .startPtySession(...)).

Rebased on main after the Vite DevTools Kit 0.4.2 / devframe 0.7.5 upgrade (#1029) and the Messages unification (#1025), and updated to adopt the new devframe capabilities.

What changed

Server bridge (server-rpc/terminals.ts, rewritten)

  • Bridges the devtools:terminal:* hooks onto ctx.terminals instead of maintaining its own Map + RPC:
    • register → a read-only DevframeTerminalSession carrying a ReadableStream (registered via ctx.terminals.register). Re-registration resets/clears in place, so startSubprocess().clear()/restart() still work.
    • writecontroller.enqueue(data); exit → close stream + update(status); remove → dispose + remove the session.
  • Terminals registered before the kit connects are buffered and replayed inside the devtools:ready callback.
  • The "DevTools owns the process" model is intentionally not re-wrapped in a Nuxt shim — modules call Vite DevTools' ctx.terminals.startChildProcess(...) / .startPtySession(...) directly through onDevtoolsReady. (Both surface in the built-in Terminals dock; PTYs are zigpty-powered with a graceful pipe fallback.)

devframe 0.7 capability — docks.activate({ sessionId })

  • Added a revealTerminal(id) RPC that calls ctx.docks.activate('devframes_plugin_terminals', { sessionId }) to focus the built-in Terminals dock on a specific session.
  • The in-client "reveal terminal" affordances (installing-module card, "Building…" button, npm update) now focus the dock on the right session instead of navigating to the removed tab — a UX upgrade over simply dropping the links.

Kit surface (@nuxt/devtools-kit)

  • Added the revealTerminal RPC type. (No new terminal-spawning API is added — that path is Vite DevTools' own ctx.terminals.)
  • Dropped getTerminals/getTerminalDetail/runTerminalAction + onTerminalData from the RPC types (kept onTerminalExit). TerminalState/TerminalInfo/TerminalAction and the devtools:terminal:* module-facing hooks are preserved.

Internal producers — module-install / analyze-build / npm-update already spawn via startChildProcess; they now broadcast onTerminalExit on process exit so their transient UI state (installing-modules, "Building…", update spinner) still clears. Exit-driven cleanup is not lost.

Client — deleted the terminals.vue tab, TerminalPage.vue, TerminalView.vue; removed useTerminals, useCurrentTerminalId, and the onTerminalData handler. Removed the @xterm/* deps from package.json, pnpm-workspace.yaml, and the client nuxt.config.ts bundling/optimizeDeps; refreshed the lockfile (the built-in @devframes/plugin-terminals owns xterm now).

Docs — documented spawning DevTools-owned terminals via onDevtoolsReady((ctx) => ctx.terminals.startChildProcess(...) / .startPtySession(...)) and refreshed the "Terminals tab" references.

Bug fix — VS Code Server launcher was a silent no-op. While validating this
change against a real dev server, found and fixed a pre-existing bug (from
#966, unrelated to this PR's changes) that broke every module-main.ts
integration relying on ctx.devtoolsKit (VS Code Server, Vue DevTools, Vite
Inspect, Vue Tracer, plugin-metrics, timeline): setupRPC()'s return
statement and module-main.ts's destructuring both spread ctx
({ connectDevToolsKit, ...ctx }), and ctx.devtoolsKit is a getter — object
spread reads a getter's current value into a plain property, which at that
point (synchronous module setup, before the kit connects) is always
undefined. This permanently froze ctx.devtoolsKit to undefined, so e.g.
clicking "Launch" on the VS Code Server tab silently did nothing (its
ctx.devtoolsKit?.terminals.startChildProcess(...) call was always skipped by
the optional chain) — no process spawned, nothing in the Terminals dock.
Fixed by returning/destructuring ctx as a nested property instead of
spreading it. Verified against a real dev server: pre-fix, ctx.devtoolsKit
is undefined at the call site and no process spawns; post-fix it resolves
to the connected kit and a real, tracked code-server child process spawns.

Notes / breaking changes

  • New major: the bespoke Nuxt terminals RPC (getTerminals/getTerminalDetail/runTerminalAction) and the @xterm UI are removed. Module-facing hooks (devtools:terminal:register/write/remove/exit) and startSubprocess() continue to work via the shim.
  • The startSubprocess/getProcess() deprecation codes (NDT_DEP_0004/0001) already shipped; this PR swaps the underlying implementation rather than adding new codes.
  • Unrelated: pnpm typecheck currently reports one pre-existing error in the client/server/api/echo.post.ts fixture that is present on main (surfaced by the deps: upgrade Vite DevTools kit to 0.4.2 #1029 dep bump), not introduced here.

Verification

pnpm lint, pnpm build, and pnpm test:unit pass; pnpm typecheck is clean apart from the pre-existing echo.post.ts fixture error noted above.

This PR was created with the help of an agent.

@antfubot
antfubot force-pushed the feat/terminals-reuse-devframe branch from badf065 to 4f421ba Compare July 21, 2026 08:59
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The terminal system now bridges Nuxt terminal hooks to the built-in DevTools Terminals dock through streamed read-only sessions. Terminal RPCs are narrowed to revealing sessions, with exit events replacing terminal-data events. Client terminal pages, routing state, xterm integration, and related dependencies are removed. Build and npm operations broadcast process exit codes, while module UI actions reveal terminals through RPC. Documentation and playground wording now describe the built-in dock.

Estimated code review effort: 4 (Complex) | ~45 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 42.86% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: switching DevTools terminals to the built-in dock via ctx.terminals.
Description check ✅ Passed The description is directly related and accurately describes the terminal dock rewrite, compatibility shim, removals, and related fix.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
packages/devtools/src/server-rpc/npm.ts (1)

65-78: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Ensure the terminal exit is broadcast even if the session rejects.

If session.getResult() rejects (e.g., due to a failure to spawn the process), the exit is never broadcast. This can leave the client's UI in a perpetual "updating" state. Consider broadcasting a non-zero exit code in the .catch block.

♻️ Proposed fix to broadcast on error
     // Surface the exit to the client so the update UI state can settle.
     void Promise.resolve(session.getResult()).then((result) => {
       broadcastTerminalExit(ctx, processId, result.exitCode)
-    }).catch(() => {})
+    }).catch(() => {
+      broadcastTerminalExit(ctx, processId, 1)
+    })
 
     return {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/devtools/src/server-rpc/npm.ts` around lines 65 - 78, Update the
Promise chain around session.getResult() so its catch handler calls
broadcastTerminalExit with processId and a non-zero exit code when the session
rejects. Preserve the existing result.exitCode broadcast for successful
sessions, ensuring every terminal outcome notifies the client.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@packages/devtools/src/server-rpc/npm.ts`:
- Around line 65-78: Update the Promise chain around session.getResult() so its
catch handler calls broadcastTerminalExit with processId and a non-zero exit
code when the session rejects. Preserve the existing result.exitCode broadcast
for successful sessions, ensuring every terminal outcome notifies the client.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 008b91d4-8ba3-471e-8395-83c3a464aeff

📥 Commits

Reviewing files that changed from the base of the PR and between 03b7a1a and 4f421ba.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (23)
  • docs/content/2.module/1.utils-kit.md
  • packages/devtools-kit/src/_types/hooks.ts
  • packages/devtools-kit/src/_types/rpc.ts
  • packages/devtools-kit/src/_types/terminals.ts
  • packages/devtools-kit/src/index.ts
  • packages/devtools/client/components/ModuleItem.vue
  • packages/devtools/client/components/NpmVersionCheck.vue
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/composables/state-routes.ts
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/nuxt.config.ts
  • packages/devtools/client/pages/modules/analyze-build.vue
  • packages/devtools/client/pages/modules/modules.vue
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/client/setup/client-rpc.ts
  • packages/devtools/package.json
  • packages/devtools/src/server-rpc/analyze-build.ts
  • packages/devtools/src/server-rpc/index.ts
  • packages/devtools/src/server-rpc/npm.ts
  • packages/devtools/src/server-rpc/terminals.ts
  • playgrounds/module-starter/playground/nuxt.config.ts
  • pnpm-workspace.yaml
💤 Files with no reviewable changes (9)
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/setup/client-rpc.ts
  • packages/devtools/package.json
  • packages/devtools/client/composables/state-routes.ts
  • pnpm-workspace.yaml
  • packages/devtools/client/nuxt.config.ts

@antfubot
antfubot force-pushed the feat/terminals-reuse-devframe branch from ad88fe2 to 2bdfdfe Compare July 21, 2026 23:06

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/devtools/src/server-rpc/terminals.ts`:
- Around line 92-101: Update the existing-terminal branch in the
devtools:terminal:register hook to recreate or replace the bridged session’s
stream/controller when re-registering an exited terminal, rather than only
resetting state and clearing its buffer. Ensure subsequent writes use the fresh
controller and preserve the existing session replacement/reset behavior before
calling host.update(existing.session).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 016f7cca-5c9a-47a4-8aad-5226c840d174

📥 Commits

Reviewing files that changed from the base of the PR and between ad88fe2 and 2bdfdfe.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (22)
  • docs/content/2.module/1.utils-kit.md
  • packages/devtools-kit/src/_types/hooks.ts
  • packages/devtools-kit/src/_types/rpc.ts
  • packages/devtools/client/components/ModuleItem.vue
  • packages/devtools/client/components/NpmVersionCheck.vue
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/composables/state-routes.ts
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/nuxt.config.ts
  • packages/devtools/client/pages/modules/analyze-build.vue
  • packages/devtools/client/pages/modules/modules.vue
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/client/setup/client-rpc.ts
  • packages/devtools/package.json
  • packages/devtools/src/module-main.ts
  • packages/devtools/src/server-rpc/analyze-build.ts
  • packages/devtools/src/server-rpc/index.ts
  • packages/devtools/src/server-rpc/npm.ts
  • packages/devtools/src/server-rpc/terminals.ts
  • playgrounds/module-starter/playground/nuxt.config.ts
  • pnpm-workspace.yaml
💤 Files with no reviewable changes (9)
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/package.json
  • packages/devtools/client/nuxt.config.ts
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/client/composables/state-routes.ts
  • packages/devtools/client/setup/client-rpc.ts
  • pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (9)
  • playgrounds/module-starter/playground/nuxt.config.ts
  • packages/devtools/client/components/ModuleItem.vue
  • packages/devtools/src/server-rpc/analyze-build.ts
  • packages/devtools/src/server-rpc/index.ts
  • packages/devtools/src/module-main.ts
  • packages/devtools/client/components/NpmVersionCheck.vue
  • packages/devtools/client/pages/modules/modules.vue
  • packages/devtools/client/pages/modules/analyze-build.vue
  • packages/devtools-kit/src/_types/rpc.ts

Comment on lines 92 to +101
nuxt.hook('devtools:terminal:register', (terminal) => {
terminals.set(terminal.id, terminal)
refresh('getTerminals')
const existing = terminals.get(terminal.id)
if (existing) {
// Re-registration (e.g. `startSubprocess().clear()`/`restart()`): reset
// the session back to running and clear the display buffer in place.
existing.state = terminal
existing.exited = false
existing.session.status = 'running'
existing.session.buffer?.splice(0, existing.session.buffer.length)
host?.update(existing.session)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

set -euo pipefail
git ls-files packages/devtools/src/server-rpc/terminals.ts
wc -l packages/devtools/src/server-rpc/terminals.ts
sed -n '1,240p' packages/devtools/src/server-rpc/terminals.ts

Repository: nuxt/devtools

Length of output: 6793


🏁 Script executed:

sed -n '1,240p' packages/devtools/src/server-rpc/terminals.ts

Repository: nuxt/devtools

Length of output: 6697


🏁 Script executed:

set -euo pipefail
echo "FILE:"
wc -l packages/devtools/src/server-rpc/terminals.ts
echo "----"
sed -n '1,240p' packages/devtools/src/server-rpc/terminals.ts

Repository: nuxt/devtools

Length of output: 6758


🏁 Script executed:

set -euo pipefail
grep -nE 'controller|enqueue|write|re-?registration|restart|clear|buffer|status|devtools:terminal:register' packages/devtools/src/server-rpc/terminals.ts

Repository: nuxt/devtools

Length of output: 1496


Recreate the stream/controller on terminal re-registration.
The existing branch only resets state and clears the buffer in place; if the terminal had already exited, the previous controller is closed, so later writes still return success while enqueue() throws and is swallowed. Replace the bridged session or create a fresh stream/controller before calling host.update(...).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/devtools/src/server-rpc/terminals.ts` around lines 92 - 101, Update
the existing-terminal branch in the devtools:terminal:register hook to recreate
or replace the bridged session’s stream/controller when re-registering an exited
terminal, rather than only resetting state and clearing its buffer. Ensure
subsequent writes use the fresh controller and preserve the existing session
replacement/reset behavior before calling host.update(existing.session).

antfubot added 2 commits July 22, 2026 01:14
Retire Nuxt DevTools' bespoke @xterm terminal UI + RPC and surface terminal
sessions through the Vite DevTools terminals host (ctx.terminals), so they
render in the built-in Terminals dock.

Existing modules keep working: the devtools:terminal:* hooks are bridged onto
ctx.terminals as read-only registered sessions (module still owns the process
and streams output). For the "DevTools owns the process" model (output-only
child processes and interactive PTYs) no new Nuxt-specific API is added —
modules use Vite DevTools' own terminals host directly via the already-exposed
onDevtoolsReady((ctx) => ctx.terminals.startChildProcess(...) / .startPtySession(...)).

Exit-driven cleanup for the internal module-install / analyze-build / npm-update
flows is preserved by broadcasting terminal exits from their startChildProcess
producers.

Adopts the devframe 0.7 docks.activate({ sessionId }) capability: the in-client
"reveal terminal" affordances (module install, build analyze, npm update) focus
the built-in Terminals dock on the relevant session via a revealTerminal RPC,
instead of the removed Terminals tab.

Created with the help of an agent.
…ions

`setupRPC()`'s `ctx.devtoolsKit` is a getter backed by a closure variable set
once the Vite DevTools kit connects. Both `setupRPC`'s own return statement
and `module-main.ts`'s destructuring spread `ctx` (`{ connectDevToolsKit,
...ctx }` / `const { ..., ...ctx } = setupRPC(...)`), and object spread reads
a getter's *current* value into a plain property on the new object — at that
point (synchronous module setup, before the kit has connected) the value is
always `undefined`. This permanently froze `ctx.devtoolsKit` to `undefined`
for every integration wired through `module-main.ts` (vscode, vue-devtools,
vite-inspect, vue-tracer, plugin-metrics, timeline), even long after the kit
actually connected.

Concretely, this made the VS Code Server launcher a silent no-op: its
`ctx.devtoolsKit?.terminals.startChildProcess(...)` call was always skipped
by the optional-chain, so clicking "Launch" never spawned `code-server` and
nothing showed up in the Terminals dock.

Fix: return/destructure `ctx` as a nested property instead of spreading it,
so the getter — and therefore the live connected kit — stays intact.

Verified against a real Nuxt dev server: pre-fix, `ctx.devtoolsKit` is
`undefined` at the VS Code integration's call site and no process spawns;
post-fix it resolves to the connected kit and `startChildProcess` returns a
real, tracked child-process session.

Created with the help of an agent.
@antfubot
antfubot force-pushed the feat/terminals-reuse-devframe branch from 2bdfdfe to 04c5d29 Compare July 22, 2026 01:14

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/devtools/client/pages/modules/modules.vue (1)

48-71: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Remove the nested role="button" from NCard.

The outer <button> is now the interactive element, so the child NCard must not also expose button semantics. Keeping both can produce invalid nested controls and duplicate/confusing announcements for assistive technology.

Proposed fix
         <NCard
           border="1.5 dashed"
           h-full animate-pulse p4 transition
           hover="border-primary"
           flex="~ col gap-1 items-center justify-center"
-          role="button"
           class="group"
         >
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/devtools/client/pages/modules/modules.vue` around lines 48 - 71,
Remove the redundant role="button" attribute from the NCard inside the
processInstallingModules button loop. Keep the outer button as the sole
interactive element and leave the card’s styling and content unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/devtools/client/pages/modules/modules.vue`:
- Around line 48-71: Remove the redundant role="button" attribute from the NCard
inside the processInstallingModules button loop. Keep the outer button as the
sole interactive element and leave the card’s styling and content unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 63f2e6f0-cde4-48cc-8fc4-099e502f751d

📥 Commits

Reviewing files that changed from the base of the PR and between 2bdfdfe and 04c5d29.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (22)
  • docs/content/2.module/1.utils-kit.md
  • packages/devtools-kit/src/_types/hooks.ts
  • packages/devtools-kit/src/_types/rpc.ts
  • packages/devtools/client/components/ModuleItem.vue
  • packages/devtools/client/components/NpmVersionCheck.vue
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/composables/state-routes.ts
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/nuxt.config.ts
  • packages/devtools/client/pages/modules/analyze-build.vue
  • packages/devtools/client/pages/modules/modules.vue
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/client/setup/client-rpc.ts
  • packages/devtools/package.json
  • packages/devtools/src/module-main.ts
  • packages/devtools/src/server-rpc/analyze-build.ts
  • packages/devtools/src/server-rpc/index.ts
  • packages/devtools/src/server-rpc/npm.ts
  • packages/devtools/src/server-rpc/terminals.ts
  • playgrounds/module-starter/playground/nuxt.config.ts
  • pnpm-workspace.yaml
💤 Files with no reviewable changes (9)
  • packages/devtools/client/setup/client-rpc.ts
  • pnpm-workspace.yaml
  • packages/devtools/client/composables/state.ts
  • packages/devtools/client/components/TerminalPage.vue
  • packages/devtools/client/pages/modules/terminals.vue
  • packages/devtools/package.json
  • packages/devtools/client/components/TerminalView.vue
  • packages/devtools/client/composables/state-routes.ts
  • packages/devtools/client/nuxt.config.ts
🚧 Files skipped from review as they are similar to previous changes (12)
  • packages/devtools/src/server-rpc/analyze-build.ts
  • playgrounds/module-starter/playground/nuxt.config.ts
  • packages/devtools-kit/src/_types/rpc.ts
  • packages/devtools/src/server-rpc/index.ts
  • packages/devtools/src/module-main.ts
  • packages/devtools/client/components/ModuleItem.vue
  • docs/content/2.module/1.utils-kit.md
  • packages/devtools-kit/src/_types/hooks.ts
  • packages/devtools/client/components/NpmVersionCheck.vue
  • packages/devtools/src/server-rpc/npm.ts
  • packages/devtools/client/pages/modules/analyze-build.vue
  • packages/devtools/src/server-rpc/terminals.ts

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.

1 participant