[{"data":1,"prerenderedAt":2035},["ShallowReactive",2],{"navigation":3,"docs-\u002Fmodule\u002Fmigration-v4":52,"docs-\u002Fmodule\u002Fmigration-v4-surround":2030},[4,22,43],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Guide","\u002Fguide","1.guide",[9,13,17],{"title":10,"path":11,"stem":12},"Getting Started","\u002Fguide\u002Fgetting-started","1.guide\u002F0.getting-started",{"title":14,"path":15,"stem":16},"Features","\u002Fguide\u002Ffeatures","1.guide\u002F1.features",{"title":18,"path":19,"stem":20},"Composables","\u002Fguide\u002Fcomposables","1.guide\u002F2.composables",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Module","\u002Fmodule","2.module",[27,31,35,39],{"title":28,"path":29,"stem":30},"Module Authors","\u002Fmodule\u002Fguide","2.module\u002F0.guide",{"title":32,"path":33,"stem":34},"Utility Kit","\u002Fmodule\u002Futils-kit","2.module\u002F1.utils-kit",{"title":36,"path":37,"stem":38},"UI Kit","\u002Fmodule\u002Fui-kit","2.module\u002F2.ui-kit",{"title":40,"path":41,"stem":42},"Migration to v4","\u002Fmodule\u002Fmigration-v4","2.module\u002F3.migration-v4",{"title":44,"path":45,"stem":46,"children":47,"page":21},"Development","\u002Fdevelopment","3.development",[48],{"title":49,"path":50,"stem":51},"Contribution Guide","\u002Fdevelopment\u002Fcontributing","3.development\u002F0.contributing",{"id":53,"title":40,"body":54,"description":2025,"extension":2026,"meta":2027,"navigation":469,"path":41,"seo":2028,"stem":42,"__hash__":2029},"docs\u002F2.module\u002F3.migration-v4.md",{"type":55,"value":56,"toc":1987},"minimark",[57,66,81,128,141,175,213,220,230,241,253,360,377,428,434,450,525,553,772,780,804,810,858,869,893,900,912,949,983,990,1004,1089,1095,1102,1130,1175,1182,1195,1287,1300,1307,1325,1427,1434,1458,1480,1494,1498,1501,1532,1543,1556,1607,1614,1627,1642,1657,1661,1676,1702,1874,1905,1912,1924,1944,1950,1956,1962,1972,1983],[58,59,61,65],"h2",{"id":60},"vscode-option-removed-ndt_dep_0008",[62,63,64],"code",{},"vscode"," option removed {#ndt_dep_0008}",[67,68,69,70,73,74,76,77,80],"p",{},"The bespoke ",[62,71,72],{},"devtools.vscode"," integration has been replaced by the Code Server\nDevframe plugin. Supplying ",[62,75,64],{}," emits ",[62,78,79],{},"NDT_DEP_0008","; the complete value is\nignored and is not translated, because partially mapping the old modes would\nsilently change their behavior.",[82,83,88],"pre",{"className":84,"code":85,"language":86,"meta":87,"style":87},"language-diff shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  devtools: {\n-   vscode: { enabled: true },\n+   codeServer: { enabled: true },\n  },\n})\n","diff","",[62,89,90,98,104,110,116,122],{"__ignoreMap":87},[91,92,95],"span",{"class":93,"line":94},"line",1,[91,96,97],{},"export default defineNuxtConfig({\n",[91,99,101],{"class":93,"line":100},2,[91,102,103],{},"  devtools: {\n",[91,105,107],{"class":93,"line":106},3,[91,108,109],{},"-   vscode: { enabled: true },\n",[91,111,113],{"class":93,"line":112},4,[91,114,115],{},"+   codeServer: { enabled: true },\n",[91,117,119],{"class":93,"line":118},5,[91,120,121],{},"  },\n",[91,123,125],{"class":93,"line":124},6,[91,126,127],{},"})\n",[67,129,130,131,140],{},"The replacement supports only a locally installed Coder\n",[132,133,137],"a",{"href":134,"rel":135},"https:\u002F\u002Fcoder.com\u002Fdocs\u002Fcode-server\u002Finstall",[136],"nofollow",[62,138,139],{},"code-server",", detected at setup\nand started on demand. These legacy capabilities were removed:",[142,143,144,156,159,162,165,172],"ul",{},[145,146,147,148,151,152,155],"li",{},"Microsoft ",[62,149,150],{},"code serve-web"," and Microsoft ",[62,153,154],{},"code-server serve-local",";",[145,157,158],{},"VS Code tunnels;",[145,160,161],{},"reusing an existing server;",[145,163,164],{},"starting the server on boot;",[145,166,167,168,171],{},"installing the ",[62,169,170],{},"vscode-server-controller"," extension;",[145,173,174],{},"opening a specific file through that controller extension.",[67,176,177,178,181,182,181,185,181,188,181,191,181,194,181,197,200,201,204,205,208,209,212],{},"The generic open-in-editor feature remains available. For the new integration,\nconfigure only ",[62,179,180],{},"enabled",", ",[62,183,184],{},"bin",[62,186,187],{},"cwd",[62,189,190],{},"serverPort",[62,192,193],{},"host",[62,195,196],{},"args",[62,198,199],{},"env",",\n",[62,202,203],{},"cookieSuffix",", or ",[62,206,207],{},"startTimeout"," under ",[62,210,211],{},"devtools.codeServer",".",[58,214,216,219],{"id":215},"startsubprocess-api-changes",[62,217,218],{},"startSubprocess()"," API Changes",[67,221,222,223,226,227,212],{},"The subprocess system has been migrated from ",[62,224,225],{},"execa"," to ",[62,228,229],{},"tinyexec",[231,232,234,237,238],"h3",{"id":233},"subprocessoptions-no-longer-extends-execaoptions",[62,235,236],{},"SubprocessOptions"," no longer extends ",[62,239,240],{},"ExecaOptions",[67,242,243,244,246,247,249,250,252],{},"Previously, ",[62,245,236],{}," extended ",[62,248,240],{}," from ",[62,251,225],{},", allowing you to pass any execa option directly. It now has its own interface:",[82,254,258],{"className":255,"code":256,"language":257,"meta":87,"style":87},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","interface SubprocessOptions {\n  command: string\n  args?: string[]\n  cwd?: string\n  env?: Record\u003Cstring, string | undefined>\n  nodeOptions?: SpawnOptions \u002F\u002F from 'node:child_process'\n}\n","ts",[62,259,260,274,286,301,310,340,354],{"__ignoreMap":87},[91,261,262,266,270],{"class":93,"line":94},[91,263,265],{"class":264},"spNyl","interface",[91,267,269],{"class":268},"sBMFI"," SubprocessOptions",[91,271,273],{"class":272},"sMK4o"," {\n",[91,275,276,280,283],{"class":93,"line":100},[91,277,279],{"class":278},"swJcz","  command",[91,281,282],{"class":272},":",[91,284,285],{"class":268}," string\n",[91,287,288,291,294,297],{"class":93,"line":106},[91,289,290],{"class":278},"  args",[91,292,293],{"class":272},"?:",[91,295,296],{"class":268}," string",[91,298,300],{"class":299},"sTEyZ","[]\n",[91,302,303,306,308],{"class":93,"line":112},[91,304,305],{"class":278},"  cwd",[91,307,293],{"class":272},[91,309,285],{"class":268},[91,311,312,315,317,320,323,326,329,331,334,337],{"class":93,"line":118},[91,313,314],{"class":278},"  env",[91,316,293],{"class":272},[91,318,319],{"class":268}," Record",[91,321,322],{"class":272},"\u003C",[91,324,325],{"class":268},"string",[91,327,328],{"class":272},",",[91,330,296],{"class":268},[91,332,333],{"class":272}," |",[91,335,336],{"class":268}," undefined",[91,338,339],{"class":272},">\n",[91,341,342,345,347,350],{"class":93,"line":124},[91,343,344],{"class":278},"  nodeOptions",[91,346,293],{"class":272},[91,348,349],{"class":268}," SpawnOptions",[91,351,353],{"class":352},"sHwdD"," \u002F\u002F from 'node:child_process'\n",[91,355,357],{"class":93,"line":356},7,[91,358,359],{"class":272},"}\n",[67,361,362,363,365,366,368,369,372,373,376],{},"Common fields like ",[62,364,187],{}," and ",[62,367,199],{}," are still available as top-level options. Other execa-specific options should be migrated to ",[62,370,371],{},"nodeOptions"," (Node.js ",[62,374,375],{},"SpawnOptions","):",[82,378,380],{"className":84,"code":379,"language":86,"meta":87,"style":87},"startSubprocess({\n  command: 'my-command',\n  args: ['--flag'],\n  cwd: '\u002Fsome\u002Fpath',\n- stdio: 'pipe',\n+ nodeOptions: {\n+   stdio: 'pipe',\n+ },\n})\n",[62,381,382,387,392,397,402,407,412,417,423],{"__ignoreMap":87},[91,383,384],{"class":93,"line":94},[91,385,386],{},"startSubprocess({\n",[91,388,389],{"class":93,"line":100},[91,390,391],{},"  command: 'my-command',\n",[91,393,394],{"class":93,"line":106},[91,395,396],{},"  args: ['--flag'],\n",[91,398,399],{"class":93,"line":112},[91,400,401],{},"  cwd: '\u002Fsome\u002Fpath',\n",[91,403,404],{"class":93,"line":118},[91,405,406],{},"- stdio: 'pipe',\n",[91,408,409],{"class":93,"line":124},[91,410,411],{},"+ nodeOptions: {\n",[91,413,414],{"class":93,"line":356},[91,415,416],{},"+   stdio: 'pipe',\n",[91,418,420],{"class":93,"line":419},8,[91,421,422],{},"+ },\n",[91,424,426],{"class":93,"line":425},9,[91,427,127],{},[231,429,431,433],{"id":430},"startsubprocess-is-deprecated-ndt_dep_0004",[62,432,218],{}," is deprecated {#ndt_dep_0004}",[67,435,436,438,439,445,446,449],{},[62,437,218],{}," is soft-deprecated in favour of the Vite DevTools terminals\nhost, used from the ",[132,440,442],{"href":441},"\u002Fmodule\u002Futils-kit#ondevtoolsready",[62,443,444],{},"onDevtoolsReady"," hook.\nIt still works as a shim, but emits the ",[62,447,448],{},"NDT_DEP_0004"," deprecation diagnostic.",[82,451,453],{"className":84,"code":452,"language":86,"meta":87,"style":87},"- import { startSubprocess } from '@nuxt\u002Fdevtools-kit'\n+ import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n\n- const subprocess = startSubprocess(\n-   { command: 'vite', args: ['build', '--watch'] },\n-   { id: 'my-module:build', name: 'Build', icon: 'ph:terminal-duotone' },\n- )\n+ onDevtoolsReady(async (ctx) => {\n+   const session = await ctx.terminals.startChildProcess(\n+     { command: 'vite', args: ['build', '--watch'], cwd: process.cwd() },\n+     { id: 'my-module:build', title: 'Build', icon: 'ph:terminal-duotone' },\n+   )\n+ })\n",[62,454,455,460,465,471,476,481,486,491,496,501,507,513,519],{"__ignoreMap":87},[91,456,457],{"class":93,"line":94},[91,458,459],{},"- import { startSubprocess } from '@nuxt\u002Fdevtools-kit'\n",[91,461,462],{"class":93,"line":100},[91,463,464],{},"+ import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n",[91,466,467],{"class":93,"line":106},[91,468,470],{"emptyLinePlaceholder":469},true,"\n",[91,472,473],{"class":93,"line":112},[91,474,475],{},"- const subprocess = startSubprocess(\n",[91,477,478],{"class":93,"line":118},[91,479,480],{},"-   { command: 'vite', args: ['build', '--watch'] },\n",[91,482,483],{"class":93,"line":124},[91,484,485],{},"-   { id: 'my-module:build', name: 'Build', icon: 'ph:terminal-duotone' },\n",[91,487,488],{"class":93,"line":356},[91,489,490],{},"- )\n",[91,492,493],{"class":93,"line":419},[91,494,495],{},"+ onDevtoolsReady(async (ctx) => {\n",[91,497,498],{"class":93,"line":425},[91,499,500],{},"+   const session = await ctx.terminals.startChildProcess(\n",[91,502,504],{"class":93,"line":503},10,[91,505,506],{},"+     { command: 'vite', args: ['build', '--watch'], cwd: process.cwd() },\n",[91,508,510],{"class":93,"line":509},11,[91,511,512],{},"+     { id: 'my-module:build', title: 'Build', icon: 'ph:terminal-duotone' },\n",[91,514,516],{"class":93,"line":515},12,[91,517,518],{},"+   )\n",[91,520,522],{"class":93,"line":521},13,[91,523,524],{},"+ })\n",[67,526,527,528,181,531,200,534,537,538,541,542,544,545,548,549,552],{},"The terminals host session exposes ",[62,529,530],{},"terminate()",[62,532,533],{},"restart()",[62,535,536],{},"getChildProcess()",", and ",[62,539,540],{},"getResult()"," — a ",[62,543,229],{},"-style awaitable handle that\nresolves to ",[62,546,547],{},"{ stdout, stderr, exitCode }"," — so the ",[62,550,551],{},"startSubprocess().getResult()","\nergonomics carry over:",[82,554,556],{"className":255,"code":555,"language":257,"meta":87,"style":87},"onDevtoolsReady(async (ctx) => {\n  const session = await ctx.terminals.startChildProcess(\n    { command: 'npm', args: ['install'] },\n    { id: 'my-module:install', title: 'Install' },\n  )\n  const { exitCode, stderr } = await session.getResult()\n  if (exitCode !== 0)\n    console.error(stderr)\n})\n",[62,557,558,584,615,658,691,696,728,748,765],{"__ignoreMap":87},[91,559,560,563,566,569,572,576,579,582],{"class":93,"line":94},[91,561,444],{"class":562},"s2Zo4",[91,564,565],{"class":299},"(",[91,567,568],{"class":264},"async",[91,570,571],{"class":272}," (",[91,573,575],{"class":574},"sHdIc","ctx",[91,577,578],{"class":272},")",[91,580,581],{"class":264}," =>",[91,583,273],{"class":272},[91,585,586,589,592,595,599,602,604,607,609,612],{"class":93,"line":100},[91,587,588],{"class":264},"  const",[91,590,591],{"class":299}," session",[91,593,594],{"class":272}," =",[91,596,598],{"class":597},"s7zQu"," await",[91,600,601],{"class":299}," ctx",[91,603,212],{"class":272},[91,605,606],{"class":299},"terminals",[91,608,212],{"class":272},[91,610,611],{"class":562},"startChildProcess",[91,613,614],{"class":278},"(\n",[91,616,617,620,623,625,628,632,635,637,640,642,645,647,650,652,655],{"class":93,"line":106},[91,618,619],{"class":272},"    {",[91,621,622],{"class":278}," command",[91,624,282],{"class":272},[91,626,627],{"class":272}," '",[91,629,631],{"class":630},"sfazB","npm",[91,633,634],{"class":272},"'",[91,636,328],{"class":272},[91,638,639],{"class":278}," args",[91,641,282],{"class":272},[91,643,644],{"class":278}," [",[91,646,634],{"class":272},[91,648,649],{"class":630},"install",[91,651,634],{"class":272},[91,653,654],{"class":278},"] ",[91,656,657],{"class":272},"},\n",[91,659,660,662,665,667,669,672,674,676,679,681,683,686,688],{"class":93,"line":112},[91,661,619],{"class":272},[91,663,664],{"class":278}," id",[91,666,282],{"class":272},[91,668,627],{"class":272},[91,670,671],{"class":630},"my-module:install",[91,673,634],{"class":272},[91,675,328],{"class":272},[91,677,678],{"class":278}," title",[91,680,282],{"class":272},[91,682,627],{"class":272},[91,684,685],{"class":630},"Install",[91,687,634],{"class":272},[91,689,690],{"class":272}," },\n",[91,692,693],{"class":93,"line":118},[91,694,695],{"class":278},"  )\n",[91,697,698,700,703,706,708,711,714,716,718,720,722,725],{"class":93,"line":124},[91,699,588],{"class":264},[91,701,702],{"class":272}," {",[91,704,705],{"class":299}," exitCode",[91,707,328],{"class":272},[91,709,710],{"class":299}," stderr",[91,712,713],{"class":272}," }",[91,715,594],{"class":272},[91,717,598],{"class":597},[91,719,591],{"class":299},[91,721,212],{"class":272},[91,723,724],{"class":562},"getResult",[91,726,727],{"class":278},"()\n",[91,729,730,733,735,738,741,745],{"class":93,"line":356},[91,731,732],{"class":597},"  if",[91,734,571],{"class":278},[91,736,737],{"class":299},"exitCode",[91,739,740],{"class":272}," !==",[91,742,744],{"class":743},"sbssI"," 0",[91,746,747],{"class":278},")\n",[91,749,750,753,755,758,760,763],{"class":93,"line":419},[91,751,752],{"class":299},"    console",[91,754,212],{"class":272},[91,756,757],{"class":562},"error",[91,759,565],{"class":278},[91,761,762],{"class":299},"stderr",[91,764,747],{"class":278},[91,766,767,770],{"class":93,"line":425},[91,768,769],{"class":272},"}",[91,771,747],{"class":299},[231,773,775,776,779],{"id":774},"direct-devtoolsterminal-hooks-are-legacy-output-only-bridge","Direct ",[62,777,778],{},"devtools:terminal:*"," hooks are legacy (output-only bridge)",[67,781,782,783,786,787,786,790,786,793,796,797,799,800,212],{},"Calling the ",[62,784,785],{},"devtools:terminal:register"," \u002F ",[62,788,789],{},":write",[62,791,792],{},":exit",[62,794,795],{},":remove"," hooks\ndirectly (including via ",[62,798,218],{},", which emits them internally) is\nlegacy. Nuxt DevTools no longer ships its own xterm terminal UI; instead these\nhooks are ",[801,802,803],"strong",{},"bridged onto the built-in Vite DevTools Terminals dock",[67,805,806,807,282],{},"The bridge is ",[801,808,809],{},"output + final status only",[142,811,812,828,849],{},[145,813,814,815,817,818,821,822,824,825,827],{},"terminal output (",[62,816,789],{},") and the final ",[62,819,820],{},"stopped","\u002F",[62,823,757],{}," status (",[62,826,792],{},")\nappear live in the Terminals dock;",[145,829,830,831,786,834,837,838,786,841,844,845,848],{},"the legacy ",[62,832,833],{},"restartable",[62,835,836],{},"terminatable"," flags and the\n",[62,839,840],{},"onActionRestart",[62,842,843],{},"onActionTerminate"," callbacks are ",[801,846,847],{},"ignored"," — Devframe\ncannot attach action controls to an externally registered session, so no\nrestart\u002Fterminate button is shown for a bridged terminal;",[145,850,851,852,786,855,857],{},"re-registering the same id (",[62,853,854],{},"clear()",[62,856,533],{},") is surfaced as a new\nsession; the previous run's output is not reset in place.",[67,859,860,861,786,863,865,866,868],{},"Programmatic control (",[62,862,530],{},[62,864,533],{}," on a ",[62,867,218],{},"\nhandle) keeps working because that helper owns its process. Only the old Nuxt UI\ncontrols are gone.",[67,870,871,872,874,875,878,879,882,883,786,886,889,890,892],{},"This compatibility bridge, the ",[62,873,778],{}," hooks, and the deprecated\n",[62,876,877],{},"TerminalState"," action fields are scheduled for ",[801,880,881],{},"removal in v5",". Spawn\nterminals through ",[62,884,885],{},"ctx.terminals.startChildProcess()",[62,887,888],{},"startPtySession()"," from\n",[62,891,444],{}," instead — those are owned by Devframe and keep full controls.",[231,894,896,899],{"id":895},"getprocess-is-deprecated-ndt_dep_0001",[62,897,898],{},"getProcess()"," is deprecated {#ndt_dep_0001}",[67,901,902,903,905,906,908,909,911],{},"The return value of ",[62,904,218],{}," now also provides ",[62,907,540],{},"; use it instead of the deprecated ",[62,910,898],{}," method.",[142,913,914,930],{},[145,915,916,918,919,922,923,926,927,578],{},[62,917,898],{}," still works but emits the ",[62,920,921],{},"NDT_DEP_0001"," deprecation diagnostic and returns ",[62,924,925],{},"ChildProcess | undefined"," (was ",[62,928,929],{},"ExecaChildProcess\u003Cstring>",[145,931,932,934,935,938,939,181,942,181,945,948],{},[62,933,540],{}," returns a tinyexec ",[62,936,937],{},"Result"," object with ",[62,940,941],{},".kill()",[62,943,944],{},".process",[62,946,947],{},".pipe()",", and more",[82,950,952],{"className":84,"code":951,"language":86,"meta":87,"style":87},"const subprocess = startSubprocess(\u002F* ... *\u002F)\n\n- const proc = subprocess.getProcess()\n- proc.stdout.on('data', handler)\n+ const result = subprocess.getResult()\n+ result.process?.stdout?.on('data', handler)\n",[62,953,954,959,963,968,973,978],{"__ignoreMap":87},[91,955,956],{"class":93,"line":94},[91,957,958],{},"const subprocess = startSubprocess(\u002F* ... *\u002F)\n",[91,960,961],{"class":93,"line":100},[91,962,470],{"emptyLinePlaceholder":469},[91,964,965],{"class":93,"line":106},[91,966,967],{},"- const proc = subprocess.getProcess()\n",[91,969,970],{"class":93,"line":112},[91,971,972],{},"- proc.stdout.on('data', handler)\n",[91,974,975],{"class":93,"line":118},[91,976,977],{},"+ const result = subprocess.getResult()\n",[91,979,980],{"class":93,"line":124},[91,981,982],{},"+ result.process?.stdout?.on('data', handler)\n",[58,984,986,989],{"id":985},"extendserverrpc-is-deprecated-ndt_dep_0003",[62,987,988],{},"extendServerRpc()"," is deprecated {#ndt_dep_0003}",[67,991,992,994,995,999,1000,1003],{},[62,993,988],{}," is soft-deprecated in favour of the Vite DevTools RPC\nregistration, done from the ",[132,996,997],{"href":441},[62,998,444],{},"\nhook. It still works as a shim, but emits the ",[62,1001,1002],{},"NDT_DEP_0003"," deprecation\ndiagnostic.",[82,1005,1007],{"className":84,"code":1006,"language":86,"meta":87,"style":87},"- import { extendServerRpc } from '@nuxt\u002Fdevtools-kit'\n+ import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n+ import { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n\n- const rpc = extendServerRpc('my-module', {\n-   async getData() {\n-     return 'hello'\n-   },\n- })\n+ onDevtoolsReady((ctx) => {\n+   ctx.rpc.register(defineRpcFunction({\n+     name: 'my-module:get-data',\n+     type: 'query',\n+     setup: () => ({ handler: async () => 'hello' }),\n+   }))\n+ })\n",[62,1008,1009,1014,1018,1023,1027,1032,1037,1042,1047,1052,1057,1062,1067,1072,1078,1084],{"__ignoreMap":87},[91,1010,1011],{"class":93,"line":94},[91,1012,1013],{},"- import { extendServerRpc } from '@nuxt\u002Fdevtools-kit'\n",[91,1015,1016],{"class":93,"line":100},[91,1017,464],{},[91,1019,1020],{"class":93,"line":106},[91,1021,1022],{},"+ import { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n",[91,1024,1025],{"class":93,"line":112},[91,1026,470],{"emptyLinePlaceholder":469},[91,1028,1029],{"class":93,"line":118},[91,1030,1031],{},"- const rpc = extendServerRpc('my-module', {\n",[91,1033,1034],{"class":93,"line":124},[91,1035,1036],{},"-   async getData() {\n",[91,1038,1039],{"class":93,"line":356},[91,1040,1041],{},"-     return 'hello'\n",[91,1043,1044],{"class":93,"line":419},[91,1045,1046],{},"-   },\n",[91,1048,1049],{"class":93,"line":425},[91,1050,1051],{},"- })\n",[91,1053,1054],{"class":93,"line":503},[91,1055,1056],{},"+ onDevtoolsReady((ctx) => {\n",[91,1058,1059],{"class":93,"line":509},[91,1060,1061],{},"+   ctx.rpc.register(defineRpcFunction({\n",[91,1063,1064],{"class":93,"line":515},[91,1065,1066],{},"+     name: 'my-module:get-data',\n",[91,1068,1069],{"class":93,"line":521},[91,1070,1071],{},"+     type: 'query',\n",[91,1073,1075],{"class":93,"line":1074},14,[91,1076,1077],{},"+     setup: () => ({ handler: async () => 'hello' }),\n",[91,1079,1081],{"class":93,"line":1080},15,[91,1082,1083],{},"+   }))\n",[91,1085,1087],{"class":93,"line":1086},16,[91,1088,524],{},[67,1090,1091,1092,212],{},"To broadcast to clients from the same context, use ",[62,1093,1094],{},"ctx.rpc.broadcast({ method, args, event })",[58,1096,1098,1101],{"id":1097},"nuxtdevtoolsrpc-direct-access-is-deprecated-ndt_dep_0007",[62,1099,1100],{},"nuxt.devtools.rpc"," direct access is deprecated {#ndt_dep_0007}",[67,1103,1104,1105,1108,1109,1112,1113,1116,1117,1120,1121,1124,1125,1129],{},"Directly accessing ",[62,1106,1107],{},"nuxt.devtools.rpc.broadcast"," or ",[62,1110,1111],{},"nuxt.devtools.rpc.functions","\nis deprecated (",[62,1114,1115],{},"NDT_DEP_0007","). They still work as a shim, but you should use the\nconnected ",[62,1118,1119],{},"ctx.rpc"," (the devframe ",[62,1122,1123],{},"RpcFunctionsHost",") from the\n",[132,1126,1127],{"href":441},[62,1128,444],{}," hook instead:",[82,1131,1133],{"className":84,"code":1132,"language":86,"meta":87,"style":87},"- nuxt.devtools.rpc.broadcast.myEvent.asEvent(payload)\n+ onDevtoolsReady((ctx) => {\n+   ctx.rpc.broadcast({ method: 'myEvent', args: [payload], event: true })\n+ })\n\n- nuxt.devtools.rpc.functions.myFn = handler\n+ onDevtoolsReady((ctx) => {\n+   ctx.rpc.register({ name: 'myFn', handler })\n+ })\n",[62,1134,1135,1140,1144,1149,1153,1157,1162,1166,1171],{"__ignoreMap":87},[91,1136,1137],{"class":93,"line":94},[91,1138,1139],{},"- nuxt.devtools.rpc.broadcast.myEvent.asEvent(payload)\n",[91,1141,1142],{"class":93,"line":100},[91,1143,1056],{},[91,1145,1146],{"class":93,"line":106},[91,1147,1148],{},"+   ctx.rpc.broadcast({ method: 'myEvent', args: [payload], event: true })\n",[91,1150,1151],{"class":93,"line":112},[91,1152,524],{},[91,1154,1155],{"class":93,"line":118},[91,1156,470],{"emptyLinePlaceholder":469},[91,1158,1159],{"class":93,"line":124},[91,1160,1161],{},"- nuxt.devtools.rpc.functions.myFn = handler\n",[91,1163,1164],{"class":93,"line":356},[91,1165,1056],{},[91,1167,1168],{"class":93,"line":419},[91,1169,1170],{},"+   ctx.rpc.register({ name: 'myFn', handler })\n",[91,1172,1173],{"class":93,"line":425},[91,1174,524],{},[58,1176,1178,1181],{"id":1177},"addcustomtab-is-deprecated-ndt_dep_0005",[62,1179,1180],{},"addCustomTab()"," is deprecated {#ndt_dep_0005}",[67,1183,1184,1186,1187,1191,1192,449],{},[62,1185,1180],{}," is soft-deprecated in favour of registering a dock entry on the\nVite DevTools docks host, from the\n",[132,1188,1189],{"href":441},[62,1190,444],{}," hook. It still works as a\nshim, but emits the ",[62,1193,1194],{},"NDT_DEP_0005",[82,1196,1198],{"className":84,"code":1197,"language":86,"meta":87,"style":87},"- import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n+ import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n\n- addCustomTab({\n-   name: 'my-module',\n-   title: 'My Module',\n-   icon: 'carbon:apps',\n-   view: { type: 'iframe', src: '\u002Furl-to-your-module-view' },\n- })\n+ onDevtoolsReady((ctx) => {\n+   ctx.docks.register({\n+     id: 'my-module',\n+     title: 'My Module',\n+     icon: 'carbon:apps',\n+     type: 'iframe',\n+     url: '\u002Furl-to-your-module-view',\n+   })\n+ })\n",[62,1199,1200,1205,1209,1213,1218,1223,1228,1233,1238,1242,1246,1251,1256,1261,1266,1271,1276,1282],{"__ignoreMap":87},[91,1201,1202],{"class":93,"line":94},[91,1203,1204],{},"- import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n",[91,1206,1207],{"class":93,"line":100},[91,1208,464],{},[91,1210,1211],{"class":93,"line":106},[91,1212,470],{"emptyLinePlaceholder":469},[91,1214,1215],{"class":93,"line":112},[91,1216,1217],{},"- addCustomTab({\n",[91,1219,1220],{"class":93,"line":118},[91,1221,1222],{},"-   name: 'my-module',\n",[91,1224,1225],{"class":93,"line":124},[91,1226,1227],{},"-   title: 'My Module',\n",[91,1229,1230],{"class":93,"line":356},[91,1231,1232],{},"-   icon: 'carbon:apps',\n",[91,1234,1235],{"class":93,"line":419},[91,1236,1237],{},"-   view: { type: 'iframe', src: '\u002Furl-to-your-module-view' },\n",[91,1239,1240],{"class":93,"line":425},[91,1241,1051],{},[91,1243,1244],{"class":93,"line":503},[91,1245,1056],{},[91,1247,1248],{"class":93,"line":509},[91,1249,1250],{},"+   ctx.docks.register({\n",[91,1252,1253],{"class":93,"line":515},[91,1254,1255],{},"+     id: 'my-module',\n",[91,1257,1258],{"class":93,"line":521},[91,1259,1260],{},"+     title: 'My Module',\n",[91,1262,1263],{"class":93,"line":1074},[91,1264,1265],{},"+     icon: 'carbon:apps',\n",[91,1267,1268],{"class":93,"line":1080},[91,1269,1270],{},"+     type: 'iframe',\n",[91,1272,1273],{"class":93,"line":1086},[91,1274,1275],{},"+     url: '\u002Furl-to-your-module-view',\n",[91,1277,1279],{"class":93,"line":1278},17,[91,1280,1281],{},"+   })\n",[91,1283,1285],{"class":93,"line":1284},18,[91,1286,524],{},[1288,1289,1290],"warning",{},[67,1291,1292,1293,1296,1297,1299],{},"The docks host does not yet cover the Nuxt-specific custom-tab features such as\n",[62,1294,1295],{},"vnode"," views or tab categories. If you rely on those, keep using\n",[62,1298,1180],{}," for now.",[58,1301,1303,1306],{"id":1302},"refreshcustomtabs-is-deprecated-ndt_dep_0006",[62,1304,1305],{},"refreshCustomTabs()"," is deprecated {#ndt_dep_0006}",[67,1308,1309,1311,1312,1315,1316,1319,1320,1324],{},[62,1310,1305],{}," is soft-deprecated (",[62,1313,1314],{},"NDT_DEP_0006","). With the docks host you\nno longer re-run a hook to refresh — update the dock entry directly via the\nhandle returned by ",[62,1317,1318],{},"register()"," inside the\n",[132,1321,1322],{"href":441},[62,1323,444],{}," hook:",[82,1326,1328],{"className":255,"code":1327,"language":257,"meta":87,"style":87},"onDevtoolsReady((ctx) => {\n  const entry = ctx.docks.register({ id: 'my-module', \u002F* ... *\u002F })\n  entry.update({ title: 'My Module (updated)' })\n})\n",[62,1329,1330,1346,1392,1421],{"__ignoreMap":87},[91,1331,1332,1334,1336,1338,1340,1342,1344],{"class":93,"line":94},[91,1333,444],{"class":562},[91,1335,565],{"class":299},[91,1337,565],{"class":272},[91,1339,575],{"class":574},[91,1341,578],{"class":272},[91,1343,581],{"class":264},[91,1345,273],{"class":272},[91,1347,1348,1350,1353,1355,1357,1359,1362,1364,1367,1369,1372,1374,1376,1378,1381,1383,1385,1388,1390],{"class":93,"line":100},[91,1349,588],{"class":264},[91,1351,1352],{"class":299}," entry",[91,1354,594],{"class":272},[91,1356,601],{"class":299},[91,1358,212],{"class":272},[91,1360,1361],{"class":299},"docks",[91,1363,212],{"class":272},[91,1365,1366],{"class":562},"register",[91,1368,565],{"class":278},[91,1370,1371],{"class":272},"{",[91,1373,664],{"class":278},[91,1375,282],{"class":272},[91,1377,627],{"class":272},[91,1379,1380],{"class":630},"my-module",[91,1382,634],{"class":272},[91,1384,328],{"class":272},[91,1386,1387],{"class":352}," \u002F* ... *\u002F",[91,1389,713],{"class":272},[91,1391,747],{"class":278},[91,1393,1394,1397,1399,1402,1404,1406,1408,1410,1412,1415,1417,1419],{"class":93,"line":106},[91,1395,1396],{"class":299},"  entry",[91,1398,212],{"class":272},[91,1400,1401],{"class":562},"update",[91,1403,565],{"class":278},[91,1405,1371],{"class":272},[91,1407,678],{"class":278},[91,1409,282],{"class":272},[91,1411,627],{"class":272},[91,1413,1414],{"class":630},"My Module (updated)",[91,1416,634],{"class":272},[91,1418,713],{"class":272},[91,1420,747],{"class":278},[91,1422,1423,1425],{"class":93,"line":112},[91,1424,769],{"class":272},[91,1426,747],{"class":299},[58,1428,1430,1433],{"id":1429},"getserverdata-rpc-is-deprecated-ndt_dep_0009",[62,1431,1432],{},"getServerData()"," RPC is deprecated {#ndt_dep_0009}",[67,1435,1436,1437,1440,1441,1445,1446,1449,1450,1453,1454,1457],{},"The read-only ",[801,1438,1439],{},"Nuxt Options Viewer"," page has been replaced by the ",[132,1442,1444],{"href":1443},"\u002Fguide\u002Ffeatures#data-inspector","Data Inspector"," panel in the ",[62,1447,1448],{},"Nuxt"," group, backed by the ",[62,1451,1452],{},"@devframes\u002Fplugin-data-inspector"," ",[62,1455,1456],{},"Nuxt Application"," source. Its live jora workbench supersedes the pre-serialized snapshot the old page rendered.",[67,1459,1460,1461,1464,1465,1468,1469,1472,1473,1476,1477,1479],{},"The ",[62,1462,1463],{},"getServerData"," server RPC that fed the old page is deprecated (",[62,1466,1467],{},"NDT_DEP_0009","). It still works as a compatibility shim — returning the legacy ",[62,1470,1471],{},"NuxtServerData"," shape (",[62,1474,1475],{},"{ nuxt, nitro, vite: { server, client } }",") with the Vite configs normalized for transport — but emits the diagnostic on first use and will be removed in a future major. Query the Data Inspector's ",[62,1478,1456],{}," source instead of calling the RPC.",[67,1481,1482,1483,1489,1490,1493],{},"To expose your own inspectable data, install ",[132,1484,1487],{"href":1485,"rel":1486},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@devframes\u002Fplugin-data-inspector",[136],[62,1488,1452],{}," and register a source through its native ",[62,1491,1492],{},"registerDataSource"," API; there is no Nuxt-specific wrapper.",[58,1495,1497],{"id":1496},"global-install-support-removed","Global Install Support Removed",[67,1499,1500],{},"Nuxt DevTools no longer supports being installed globally.",[142,1502,1503,1513,1523],{},[145,1504,1460,1505,1508,1509,1512],{},[62,1506,1507],{},"devtoolsGlobal"," Nuxt config option (with ",[62,1510,1511],{},"projects"," whitelist) is no longer supported",[145,1514,1460,1515,1518,1519,1522],{},[62,1516,1517],{},"-g"," flag is no longer used when installing\u002Funinstalling ",[62,1520,1521],{},"@nuxt\u002Fdevtools"," via the DevTools UI",[145,1524,1460,1525,1528,1529],{},[62,1526,1527],{},"isGlobalInstall"," property has been removed from ",[62,1530,1531],{},"NuxtDevtoolsInfo",[58,1533,1535,1538,1539,1542],{"id":1534},"nuxtdevtools-wizard-package-and-nuxi-devtools-removed",[62,1536,1537],{},"@nuxt\u002Fdevtools-wizard"," Package and ",[62,1540,1541],{},"nuxi devtools"," Removed",[67,1544,1460,1545,1547,1548,1551,1552,1555],{},[62,1546,1537],{}," package, its CLI, and the ",[62,1549,1550],{},"nuxi devtools enable\u002Fdisable"," subcommand have been removed. DevTools is shipped with Nuxt — to enable or disable it, update your ",[62,1553,1554],{},"nuxt.config.ts"," directly:",[82,1557,1559],{"className":255,"code":1558,"language":257,"meta":87,"style":87},"export default defineNuxtConfig({\n  devtools: { enabled: true }, \u002F\u002F or false\n})\n",[62,1560,1561,1577,1601],{"__ignoreMap":87},[91,1562,1563,1566,1569,1572,1574],{"class":93,"line":94},[91,1564,1565],{"class":597},"export",[91,1567,1568],{"class":597}," default",[91,1570,1571],{"class":562}," defineNuxtConfig",[91,1573,565],{"class":299},[91,1575,1576],{"class":272},"{\n",[91,1578,1579,1582,1584,1586,1589,1591,1595,1598],{"class":93,"line":100},[91,1580,1581],{"class":278},"  devtools",[91,1583,282],{"class":272},[91,1585,702],{"class":272},[91,1587,1588],{"class":278}," enabled",[91,1590,282],{"class":272},[91,1592,1594],{"class":1593},"sfNiH"," true",[91,1596,1597],{"class":272}," },",[91,1599,1600],{"class":352}," \u002F\u002F or false\n",[91,1602,1603,1605],{"class":93,"line":106},[91,1604,769],{"class":272},[91,1606,747],{"class":299},[58,1608,1610,1613],{"id":1609},"runwizard-rpc-removed",[62,1611,1612],{},"runWizard"," RPC Removed",[67,1615,1460,1616,1618,1619,1622,1623,1626],{},[62,1617,1612],{}," server RPC function has been removed from ",[62,1620,1621],{},"ServerFunctions",". The ",[62,1624,1625],{},"enablePages"," action is now available as a direct RPC function:",[82,1628,1630],{"className":84,"code":1629,"language":86,"meta":87,"style":87},"- await rpc.runWizard(token, 'enablePages')\n+ await rpc.enablePages(token)\n",[62,1631,1632,1637],{"__ignoreMap":87},[91,1633,1634],{"class":93,"line":94},[91,1635,1636],{},"- await rpc.runWizard(token, 'enablePages')\n",[91,1638,1639],{"class":93,"line":100},[91,1640,1641],{},"+ await rpc.enablePages(token)\n",[67,1643,1460,1644,181,1647,537,1650,1653,1654,212],{},[62,1645,1646],{},"WizardFunctions",[62,1648,1649],{},"WizardActions",[62,1651,1652],{},"GetWizardArgs"," types have been removed from ",[62,1655,1656],{},"@nuxt\u002Fdevtools-kit",[58,1658,1660],{"id":1659},"vite-devtools-integration-is-now-always-enabled","Vite DevTools Integration is Now Always Enabled",[67,1662,1460,1663,1666,1667,1672,1673,1675],{},[62,1664,1665],{},"viteDevTools"," module option has been removed. Nuxt DevTools now always integrates with ",[132,1668,1671],{"href":1669,"rel":1670},"https:\u002F\u002Fgithub.com\u002Fvitejs\u002Fdevtools",[136],"Vite DevTools"," as a dock entry, nested under a ",[62,1674,1448],{}," framework group. The built-in floating panel has been removed — DevTools is accessed through the Vite DevTools panel instead.",[67,1677,1678,1680,1681,1684,1685,226,1688,1691,1692,1694,1695,1698,1699,282],{},[62,1679,1521],{}," now requires Vite 8 (",[62,1682,1683],{},"peerDependencies.vite"," narrowed from\n",[62,1686,1687],{},">=6.0",[62,1689,1690],{},"^8.0.14","), matching the Vite DevTools plugins it depends on. Join\nthe ",[62,1693,1448],{}," group from your own module by pointing a dock entry's ",[62,1696,1697],{},"groupId"," at\n",[62,1700,1701],{},"'nuxt'",[82,1703,1705],{"className":255,"code":1704,"language":257,"meta":87,"style":87},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n\nonDevtoolsReady((ctx) => {\n  ctx.docks.register({\n    id: 'my-module',\n    type: 'iframe',\n    title: 'My Module',\n    icon: 'i-ph-puzzle-piece',\n    url: '\u002Fmy-module\u002F',\n    groupId: 'nuxt',\n  })\n})\n",[62,1706,1707,1729,1733,1749,1766,1781,1797,1813,1829,1845,1861,1868],{"__ignoreMap":87},[91,1708,1709,1712,1714,1717,1719,1722,1724,1726],{"class":93,"line":94},[91,1710,1711],{"class":597},"import",[91,1713,702],{"class":272},[91,1715,1716],{"class":299}," onDevtoolsReady",[91,1718,713],{"class":272},[91,1720,1721],{"class":597}," from",[91,1723,627],{"class":272},[91,1725,1656],{"class":630},[91,1727,1728],{"class":272},"'\n",[91,1730,1731],{"class":93,"line":100},[91,1732,470],{"emptyLinePlaceholder":469},[91,1734,1735,1737,1739,1741,1743,1745,1747],{"class":93,"line":106},[91,1736,444],{"class":562},[91,1738,565],{"class":299},[91,1740,565],{"class":272},[91,1742,575],{"class":574},[91,1744,578],{"class":272},[91,1746,581],{"class":264},[91,1748,273],{"class":272},[91,1750,1751,1754,1756,1758,1760,1762,1764],{"class":93,"line":112},[91,1752,1753],{"class":299},"  ctx",[91,1755,212],{"class":272},[91,1757,1361],{"class":299},[91,1759,212],{"class":272},[91,1761,1366],{"class":562},[91,1763,565],{"class":278},[91,1765,1576],{"class":272},[91,1767,1768,1771,1773,1775,1777,1779],{"class":93,"line":118},[91,1769,1770],{"class":278},"    id",[91,1772,282],{"class":272},[91,1774,627],{"class":272},[91,1776,1380],{"class":630},[91,1778,634],{"class":272},[91,1780,200],{"class":272},[91,1782,1783,1786,1788,1790,1793,1795],{"class":93,"line":124},[91,1784,1785],{"class":278},"    type",[91,1787,282],{"class":272},[91,1789,627],{"class":272},[91,1791,1792],{"class":630},"iframe",[91,1794,634],{"class":272},[91,1796,200],{"class":272},[91,1798,1799,1802,1804,1806,1809,1811],{"class":93,"line":356},[91,1800,1801],{"class":278},"    title",[91,1803,282],{"class":272},[91,1805,627],{"class":272},[91,1807,1808],{"class":630},"My Module",[91,1810,634],{"class":272},[91,1812,200],{"class":272},[91,1814,1815,1818,1820,1822,1825,1827],{"class":93,"line":419},[91,1816,1817],{"class":278},"    icon",[91,1819,282],{"class":272},[91,1821,627],{"class":272},[91,1823,1824],{"class":630},"i-ph-puzzle-piece",[91,1826,634],{"class":272},[91,1828,200],{"class":272},[91,1830,1831,1834,1836,1838,1841,1843],{"class":93,"line":425},[91,1832,1833],{"class":278},"    url",[91,1835,282],{"class":272},[91,1837,627],{"class":272},[91,1839,1840],{"class":630},"\u002Fmy-module\u002F",[91,1842,634],{"class":272},[91,1844,200],{"class":272},[91,1846,1847,1850,1852,1854,1857,1859],{"class":93,"line":503},[91,1848,1849],{"class":278},"    groupId",[91,1851,282],{"class":272},[91,1853,627],{"class":272},[91,1855,1856],{"class":630},"nuxt",[91,1858,634],{"class":272},[91,1860,200],{"class":272},[91,1862,1863,1866],{"class":93,"line":509},[91,1864,1865],{"class":272},"  }",[91,1867,747],{"class":278},[91,1869,1870,1872],{"class":93,"line":515},[91,1871,769],{"class":272},[91,1873,747],{"class":299},[82,1875,1877],{"className":84,"code":1876,"language":86,"meta":87,"style":87},"export default defineNuxtConfig({\n  devtools: {\n    enabled: true,\n-   viteDevTools: true,\n  },\n})\n",[62,1878,1879,1883,1887,1892,1897,1901],{"__ignoreMap":87},[91,1880,1881],{"class":93,"line":94},[91,1882,97],{},[91,1884,1885],{"class":93,"line":100},[91,1886,103],{},[91,1888,1889],{"class":93,"line":106},[91,1890,1891],{},"    enabled: true,\n",[91,1893,1894],{"class":93,"line":112},[91,1895,1896],{},"-   viteDevTools: true,\n",[91,1898,1899],{"class":93,"line":118},[91,1900,121],{},[91,1902,1903],{"class":93,"line":124},[91,1904,127],{},[231,1906,1908,1911],{"id":1907},"clientdevtools-methods-now-control-vite-devtools",[62,1909,1910],{},"client.devtools"," Methods Now Control Vite DevTools",[67,1913,1460,1914,181,1917,537,1920,1923],{},[62,1915,1916],{},"client.devtools.open()",[62,1918,1919],{},"client.devtools.close()",[62,1921,1922],{},"client.devtools.toggle()"," methods still work but now control the Vite DevTools panel:",[142,1925,1926,1932,1938],{},[145,1927,1928,1931],{},[62,1929,1930],{},"open()"," opens the Vite DevTools panel and switches to the Nuxt DevTools dock entry",[145,1933,1934,1937],{},[62,1935,1936],{},"close()"," closes the Vite DevTools panel",[145,1939,1940,1943],{},[62,1941,1942],{},"toggle()"," toggles the Nuxt DevTools dock entry in the Vite DevTools panel",[67,1945,1460,1946,1949],{},[62,1947,1948],{},"Shift+Alt+D"," keyboard shortcut now toggles the Nuxt DevTools entry in the Vite DevTools panel.",[231,1951,1953,1542],{"id":1952},"clientdevtoolspopup-removed",[62,1954,1955],{},"client.devtools.popup",[67,1957,1958,1959,1961],{},"The Picture-in-Picture popup feature (",[62,1960,1955],{},") has been removed. This was an experimental feature that required Chrome 111+.",[231,1963,1965,365,1968,1971],{"id":1964},"showpanel-and-minimizepanelinactive-settings-removed",[62,1966,1967],{},"showPanel",[62,1969,1970],{},"minimizePanelInactive"," Settings Removed",[67,1973,1460,1974,365,1976,1978,1979,1982],{},[62,1975,1967],{},[62,1977,1970],{}," UI settings have been removed from ",[62,1980,1981],{},"NuxtDevToolsOptions"," as the built-in floating panel no longer exists.",[1984,1985,1986],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":87,"searchDepth":100,"depth":100,"links":1988},[1989,1991,2002,2004,2006,2008,2010,2012,2013,2015,2017],{"id":60,"depth":100,"text":1990},"vscode option removed {#ndt_dep_0008}",{"id":215,"depth":100,"text":1992,"children":1993},"startSubprocess() API Changes",[1994,1996,1998,2000],{"id":233,"depth":106,"text":1995},"SubprocessOptions no longer extends ExecaOptions",{"id":430,"depth":106,"text":1997},"startSubprocess() is deprecated {#ndt_dep_0004}",{"id":774,"depth":106,"text":1999},"Direct devtools:terminal:* hooks are legacy (output-only bridge)",{"id":895,"depth":106,"text":2001},"getProcess() is deprecated {#ndt_dep_0001}",{"id":985,"depth":100,"text":2003},"extendServerRpc() is deprecated {#ndt_dep_0003}",{"id":1097,"depth":100,"text":2005},"nuxt.devtools.rpc direct access is deprecated {#ndt_dep_0007}",{"id":1177,"depth":100,"text":2007},"addCustomTab() is deprecated {#ndt_dep_0005}",{"id":1302,"depth":100,"text":2009},"refreshCustomTabs() is deprecated {#ndt_dep_0006}",{"id":1429,"depth":100,"text":2011},"getServerData() RPC is deprecated {#ndt_dep_0009}",{"id":1496,"depth":100,"text":1497},{"id":1534,"depth":100,"text":2014},"@nuxt\u002Fdevtools-wizard Package and nuxi devtools Removed",{"id":1609,"depth":100,"text":2016},"runWizard RPC Removed",{"id":1659,"depth":100,"text":1660,"children":2018},[2019,2021,2023],{"id":1907,"depth":106,"text":2020},"client.devtools Methods Now Control Vite DevTools",{"id":1952,"depth":106,"text":2022},"client.devtools.popup Removed",{"id":1964,"depth":106,"text":2024},"showPanel and minimizePanelInactive Settings Removed","Breaking changes and migration guide for Nuxt DevTools v4.","md",{},{"title":40,"description":2025},"bS0eMjnKdLyRogl3LOJwUL8DQBs1-UJqK8lS50eABP4",[2031,2033],{"title":36,"path":37,"stem":38,"description":2032,"children":-1},"UI Kit is for module authors to build a custom view.",{"title":49,"path":50,"stem":51,"description":2034,"children":-1},"Learn how to contribute to the Nuxt DevTools.",1784897452768]