===== node --check extension.js =====
[OK] node --check extension.js

===== node --check out/extension.js =====
[OK] node --check out/extension.js

===== bash -lc cmp -s extension.js out/extension.js && echo runtime-byte-sync-ok =====
runtime-byte-sync-ok
[OK] bash -lc cmp -s extension.js out/extension.js && echo runtime-byte-sync-ok

===== node scripts/test-generated-webview-syntax.js =====
{
  "detailsScripts": 1,
  "htmlDetailsScripts": 1,
  "getProcAddressScripts": 1,
  "dllMainScripts": 1,
  "packEditorScripts": 1,
  "sshDeviceManagerScripts": 1,
  "checkedViews": [
    "Build symbol details",
    "HTML symbol details",
    "GetProcAddress details",
    "DllMain details",
    "visual pack editor",
    "SSH device manager"
  ],
  "status": "ok"
}
[OK] node scripts/test-generated-webview-syntax.js

===== node scripts/test-main-explorer-environment-tree.js =====
{
  "status": "ok",
  "rootEnvironments": [
    "Build",
    "Lua"
  ],
  "buildLibraries": [
    "CMake, CTest & CPack",
    "Meson Build System",
    "GCC & G++",
    "Clang & LLVM",
    "MinGW & Windows Resources",
    "MSVC Build Tools",
    "Make, Ninja & Compilation Databases",
    "C/C++ Dependency Managers",
    "Cross-Compilation & Binary Utilities",
    "Debugging, Coverage & Documentation"
  ],
  "luaLibraries": [
    "Lua standard 5.4",
    "Lua industriel / banc de test",
    "MPT Studio / MPTLua (Lua 5.2.4)",
    "Stormworks Lua microcontroller"
  ],
  "gccCategoryCount": 4
}
[OK] node scripts/test-main-explorer-environment-tree.js

===== node scripts/test-structured-picker-apply-close.js =====
{
  "status": "ok",
  "disposeBeforeAsyncUpdate": true,
  "emptyMultiSelectCanClose": true
}
[OK] node scripts/test-structured-picker-apply-close.js

===== node scripts/test-build-command-preview.js =====
{
  "route": "build_all",
  "cards": 196,
  "gccPreview": "gcc -Wall -Wextra -O2 -fPIC -shared src/mylib.c -o \"libmylib.so\"",
  "gccObjectPreview": "gcc -Wall -Wextra -std=c17 -O0 -g3 -I include -c \"main.c\" -o \"main.o\"",
  "cmakePreview": "cmake_minimum_required(VERSION 3.20)",
  "commandCards": 145
}
[OK] node scripts/test-build-command-preview.js

===== node scripts/test-build-command-routes.js =====
{"route":"build_all","cards":196,"libraries":10}
{"route":"c_all","cards":951,"libraries":2}
{"route":"all_packs","cards":15070,"libraries":149}
[OK] node scripts/test-build-command-routes.js

===== node scripts/test-build-link-ui.js =====
{
  "route": "build_all",
  "cards": 196,
  "gccSharedParameters": 10,
  "conditionalUi": true,
  "commandsChecked": 11,
  "removedDuplicates": [
    "MinGW gcc executable",
    "MinGW g++ executable"
  ]
}
[OK] node scripts/test-build-link-ui.js

===== node scripts/test-multiselect-validation.js =====
{
  "status": "ok",
  "gccMinimum": 1,
  "gccFallback": "-Wall -Wextra",
  "msvcIncompatibilities": [
    "/W3",
    "/Wall"
  ]
}
[OK] node scripts/test-multiselect-validation.js

===== node scripts/test-build-cmake-static-runtime-0790.js =====
{
  "status": "ok",
  "cards": 196,
  "configurePreview": "cmake -S \".\" -B \"build32-static-runtime\" `\n  -G \"MinGW Makefiles\" `\n  -DCMAKE_C_COMPILER:FILEPATH=\"C:/Program Files (x86)/mingw32/bin/gcc.exe\" `\n  -DCMAKE_MAKE_PROGRAM:FILEPATH=\"C:/Program Files (x86)/mingw32/bin/mingw32-make.exe\" `\n  -DCMAKE_BUILD_TYPE=Release `\n  -DBUILD_SHARED_LIBS=ON `\n  -DBUILD_TESTS=OFF `\n  -DBUILD_CLI=OFF `\n  -DBUILD_EXAMPLES=OFF `\n  -DUSE_SSH=OFF `\n  -DUSE_HTTPS=WinHTTP `\n  -DUSE_BUNDLED_ZLIB=ON `\n  -DCMAKE_SHARED_LINKER_FLAGS=\"-static-libgcc\"",
  "buildPreview": "cmake --build \"build32-static-runtime\" --parallel",
  "checkedCards": 10
}
[OK] node scripts/test-build-cmake-static-runtime-0790.js

===== python3 scripts/validate-build-cmake-static-runtime-0790.py =====
{
  "status": "ok",
  "packVersion": "1.4.0",
  "cards": 196,
  "parameters": 669,
  "pickerConfigs": 272,
  "multiSelectPickers": 123,
  "conditionalParameters": 43,
  "fileBrowsers": 117,
  "folderBrowsers": 77,
  "cardsByLibrary": {
    "CMake, CTest & CPack": 61,
    "GCC & G++": 18,
    "Clang & LLVM": 11,
    "MinGW & Windows Resources": 6,
    "MSVC Build Tools": 10,
    "Make, Ninja & Compilation Databases": 11,
    "C/C++ Dependency Managers": 18,
    "Cross-Compilation & Binary Utilities": 22,
    "Debugging, Coverage & Documentation": 25,
    "Meson Build System": 14
  },
  "configurePreview": "cmake -S \".\" -B \"build32-static-runtime\" `\n -G \"MinGW Makefiles\" `\n -DCMAKE_C_COMPILER:FILEPATH=\"C:/Program Files (x86)/mingw32/bin/gcc.exe\" `\n -DCMAKE_MAKE_PROGRAM:FILEPATH=\"C:/Program Files (x86)/mingw32/bin/mingw32-make.exe\" `\n -DCMAKE_BUILD_TYPE=Release `\n -DBUILD_SHARED_LIBS=ON `\n -DBUILD_TESTS=OFF `\n -DBUILD_CLI=OFF `\n -DBUILD_EXAMPLES=OFF `\n -DUSE_SSH=OFF `\n -DUSE_HTTPS=WinHTTP `\n -DUSE_BUNDLED_ZLIB=ON `\n -DCMAKE_SHARED_LINKER_FLAGS=\"-static-libgcc\"",
  "buildPreview": "cmake --build \"build32-static-runtime\" --parallel",
  "sharedDllRecipePreview": "add_library(myplugin SHARED\n src/plugin.c\n)\n\ntarget_link_libraries(myplugin PRIVATE\n vendor_zlib\n)\n\ntarget_link_options(myplugin PRIVATE\n -static-libgcc\n)",
  "errors": []
}
[OK] python3 scripts/validate-build-cmake-static-runtime-0790.py

===== node scripts/test-environment-first-navigation.js =====
{
  "status": "ok",
  "luaEnvironment": "Lua",
  "luaLibraries": [
    "Lua standard 5.4",
    "Lua industriel / banc de test",
    "MPT Studio / MPTLua (Lua 5.2.4)",
    "Stormworks Lua microcontroller"
  ],
  "buildEnvironment": "Build",
  "buildLibraries": [
    "CMake, CTest & CPack",
    "Meson Build System",
    "GCC & G++",
    "Clang & LLVM",
    "MinGW & Windows Resources",
    "MSVC Build Tools",
    "Make, Ninja & Compilation Databases",
    "C/C++ Dependency Managers",
    "Cross-Compilation & Binary Utilities",
    "Debugging, Coverage & Documentation"
  ],
  "newPackKeys": [
    "id",
    "name",
    "version",
    "readOnly",
    "environments"
  ]
}
[OK] node scripts/test-environment-first-navigation.js

===== node scripts/test-system-scripting-command-routes.js =====
{
  "status": "ok",
  "route": "scripting_all",
  "cards": 573,
  "libraries": [
    "Cross-Platform Automation",
    "PowerShell 7",
    "Windows CMD & Batch",
    "Bash & POSIX Shell",
    "Linux systemd & Administration",
    "Git Version Control",
    "OpenSSH & Secure Remote Access",
    "Docker & Containers",
    "DevOps, CI & Release Automation"
  ],
  "individualRoutes": [
    {
      "route": "system_automation_core",
      "library": "Cross-Platform Automation",
      "cards": 36
    },
    {
      "route": "powershell_core",
      "library": "PowerShell 7",
      "cards": 131
    },
    {
      "route": "batch_core",
      "library": "Windows CMD & Batch",
      "cards": 124
    },
    {
      "route": "bash_core",
      "library": "Bash & POSIX Shell",
      "cards": 104
    },
    {
      "route": "linux_admin_core",
      "library": "Linux systemd & Administration",
      "cards": 57
    },
    {
      "route": "git_core",
      "library": "Git Version Control",
      "cards": 48
    },
    {
      "route": "ssh_core",
      "library": "OpenSSH & Secure Remote Access",
      "cards": 29
    },
    {
      "route": "docker_core",
      "library": "Docker & Containers",
      "cards": 39
    },
    {
      "route": "devops_core",
      "library": "DevOps, CI & Release Automation",
      "cards": 5
    }
  ]
}
[OK] node scripts/test-system-scripting-command-routes.js

===== node scripts/test-terminal-execution-ui.js =====
{
  "status": "ok",
  "executeButton": true,
  "shellAwareRouting": true,
  "activeTerminalFallback": true,
  "confirmationGuard": true
}
[OK] node scripts/test-terminal-execution-ui.js

===== node scripts/test-ssh-device-manager-ui.js =====
{
  "status": "ok",
  "command": "jcLib.openSshDeviceManager",
  "scan": true,
  "crud": true,
  "keyEnrollment": true,
  "shellAwareRouting": true
}
[OK] node scripts/test-ssh-device-manager-ui.js

===== node scripts/test-ssh-device-manager-crud.js =====
{
  "status": "ok",
  "configPath": "/tmp/jc-lib-ssh-manager-KqnWLE/.ssh/config",
  "insertionBeforeWildcard": true,
  "create": true,
  "update": true,
  "delete": true,
  "wildcardPreserved": true
}
[OK] node scripts/test-ssh-device-manager-crud.js

===== node scripts/test-web-html-routes.js =====
{
  "status": "ok",
  "route": "web_core",
  "cards": 1319,
  "libraries": [
    "JavaScript",
    "HTML",
    "CSS"
  ],
  "javascriptCards": 813,
  "htmlCards": 153,
  "cssCards": 353,
  "allPacksCards": 15070
}
[OK] node scripts/test-web-html-routes.js

===== node scripts/test-html-empty-attribute-omission.js =====
{
  "status": "ok",
  "buttonCleared": "<button type=\"button\">Start</button>",
  "divCleared": "<div>Content</div>",
  "inputCleared": "<input type=\"text\">",
  "footerPickerRender": "<footer title=\"Status\" aria-label=\"Footer\">Footer content</footer>",
  "generatedFooterCleared": "<footer>Footer content</footer>",
  "htmlCards": 153
}
[OK] node scripts/test-html-empty-attribute-omission.js

===== node scripts/test-html-optional-attribute-picker.js =====
{
  "status": "ok",
  "htmlCards": 153,
  "attributeIndex": 2,
  "pickerSections": [
    "Global HTML attributes",
    "Custom data & microdata",
    "Accessibility — ARIA",
    "Inline event handlers"
  ],
  "pickerItems": 136
}
[OK] node scripts/test-html-optional-attribute-picker.js

===== node scripts/test-css-routes.js =====
{
  "status": "ok",
  "cssCards": 353,
  "webCards": 1319,
  "allPacksCards": 15070,
  "previews": {
    "display": "display: block;",
    "flex": ".toolbar {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  align-items: center;\n  gap: 0.75rem;\n}",
    "grid": ".dashboard-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));\n  grid-template-rows: auto;\n  gap: 1rem;\n}",
    "has": ".card:has(> img) {\n  border-color: var(--color-accent);\n}",
    "container": "@container card (inline-size > 40rem) {\n  .card-body { display: grid; }\n}",
    "clamp": "font-size: clamp(1rem, 2vw, 2rem);",
    "mix": "background-color: color-mix(in oklab, var(--color-primary) 80%, white);"
  }
}
[OK] node scripts/test-css-routes.js

===== node scripts/test-csharp-cshtml-routes.js =====
{
  "status": "ok",
  "languageCards": 585,
  "cshtmlCards": 205,
  "aggregateCards": 790,
  "allPacksCards": 15070,
  "footerCleared": "<footer>Footer content</footer>",
  "footerAttrs": "<footer title=\"Status\" aria-label=\"Footer\">Footer content</footer>",
  "inputCleared": "<input asp-for=\"Device.Name\">",
  "partialCleared": "<partial name=\"_DeviceCard\" />",
  "pickerItems": 136
}
[OK] node scripts/test-csharp-cshtml-routes.js

===== node scripts/test-dll-helper-routes.js =====
{
  "status": "ok",
  "routes": {
    "c_core": 910,
    "c_dll": 41,
    "c_all": 951,
    "cpp_core": 1642,
    "cpp_dll": 41,
    "cpp_all": 1683,
    "windows_all": 915,
    "all_packs": 15070
  },
  "previews": {
    "getProcAddressName": "GetProcAddress(module, \"Plugin_Run\");",
    "getProcAddressOrdinal": "GetProcAddress(module, MAKEINTRESOURCEA(7));",
    "dllMain": "#include <windows.h>\n\nBOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)\n{\n    (void)lpReserved;\n\n    switch (ul_reason_for_call)\n    {\n        case DLL_PROCESS_ATTACH:\n        {\n            /* Minimal initialization only. */\n            break;\n        }\n        case DLL_THREAD_ATTACH:\n        {\n            /* Optional per-thread initialization. */\n            break;\n        }\n        case DLL_THREAD_DETACH:\n        {\n            /* Optional per-thread cleanup. */\n            break;\n        }\n        case DLL_PROCESS_DETACH:\n        {\n            /* Minimal cleanup only. */\n            break;\n        }\n    }\n\n    return TRUE;\n}"
  }
}
[OK] node scripts/test-dll-helper-routes.js

===== node scripts/test-find-symbol-shortcut-empty-state.js =====
{
  "test": "find-symbol-shortcut-empty-state",
  "version": "0.7.90",
  "shortcut": {
    "command": "jcLib.findFunction",
    "key": "ctrl+alt+p",
    "mac": "cmd+alt+p"
  },
  "initialResults": 0,
  "initialPreview": false,
  "directInputFocus": "QuickPick.show()"
}
[OK] node scripts/test-find-symbol-shortcut-empty-state.js

===== node scripts/test-find-symbol-focus-retention.js =====
{
  "test": "find-symbol-focus-retention",
  "version": "0.7.88",
  "typingKeepsInputFocus": true,
  "typingOpensDetailsPanel": false,
  "activeSelectionOpensDetailsPanel": false,
  "acceptOpensDetailsPanel": true
}
[OK] node scripts/test-find-symbol-focus-retention.js

===== node scripts/test-find-symbol-transient-explorer.js =====
{
  "test": "find-symbol-transient-explorer",
  "version": "0.7.90",
  "shortcutSearchAppliesPersistentFilter": false,
  "acceptRestoresExplorerTree": true,
  "escapeRestoresExplorerTree": true,
  "acceptOpensDetailsPanel": true,
  "clearFilterCommandPreserved": true
}
[OK] node scripts/test-find-symbol-transient-explorer.js

===== python3 scripts/audit-packs.py =====
{
  "distributedJsonFiles": 21,
  "errors": {},
  "coverage": [
    {
      "file": "build_pack.json",
      "version": "1.4.0",
      "cards": 196,
      "parameters": 669,
      "advancedSelectors": 272,
      "documentedChoices": 999,
      "multiSelectors": 123,
      "booleanEditors": 0,
      "fileBrowsers": 117,
      "folderBrowsers": 77
    },
    {
      "file": "c_language_pack.json",
      "version": "1.12.0",
      "cards": 951,
      "parameters": 1589,
      "advancedSelectors": 118,
      "documentedChoices": 487,
      "multiSelectors": 22,
      "booleanEditors": 13,
      "fileBrowsers": 43,
      "folderBrowsers": 15
    },
    {
      "file": "cpp_language_pack.json",
      "version": "2.16.0",
      "cards": 1812,
      "parameters": 1813,
      "advancedSelectors": 113,
      "documentedChoices": 396,
      "multiSelectors": 17,
      "booleanEditors": 1,
      "fileBrowsers": 47,
      "folderBrowsers": 20
    },
    {
      "file": "csharp_language_pack.json",
      "version": "1.3.0",
      "cards": 790,
      "parameters": 1642,
      "advancedSelectors": 245,
      "documentedChoices": 338,
      "multiSelectors": 161,
      "booleanEditors": 15,
      "fileBrowsers": 25,
      "folderBrowsers": 6
    },
    {
      "file": "cvi_pack.json",
      "version": "1.1.0",
      "cards": 1977,
      "parameters": 7541,
      "advancedSelectors": 102,
      "documentedChoices": 719,
      "multiSelectors": 1,
      "booleanEditors": 8,
      "fileBrowsers": 83,
      "folderBrowsers": 12
    },
    {
      "file": "database_pack.json",
      "version": "1.2.0",
      "cards": 317,
      "parameters": 561,
      "advancedSelectors": 53,
      "documentedChoices": 166,
      "multiSelectors": 1,
      "booleanEditors": 5,
      "fileBrowsers": 24,
      "folderBrowsers": 4
    },
    {
      "file": "default_pack.json",
      "version": "2.26.0",
      "cards": 6880,
      "parameters": 15008,
      "advancedSelectors": 780,
      "documentedChoices": 2988,
      "multiSelectors": 218,
      "booleanEditors": 143,
      "fileBrowsers": 234,
      "folderBrowsers": 69
    },
    {
      "file": "embedded_language_pack.json",
      "version": "1.3.1",
      "cards": 393,
      "parameters": 534,
      "advancedSelectors": 86,
      "documentedChoices": 331,
      "multiSelectors": 12,
      "booleanEditors": 19,
      "fileBrowsers": 15,
      "folderBrowsers": 2
    },
    {
      "file": "java_language_pack.json",
      "version": "1.2.0",
      "cards": 490,
      "parameters": 973,
      "advancedSelectors": 46,
      "documentedChoices": 189,
      "multiSelectors": 6,
      "booleanEditors": 8,
      "fileBrowsers": 29,
      "folderBrowsers": 9
    },
    {
      "file": "kotlin_language_pack.json",
      "version": "1.2.0",
      "cards": 421,
      "parameters": 483,
      "advancedSelectors": 28,
      "documentedChoices": 105,
      "multiSelectors": 4,
      "booleanEditors": 9,
      "fileBrowsers": 2,
      "folderBrowsers": 1
    },
    {
      "file": "lua_pack.json",
      "version": "1.5.0",
      "cards": 975,
      "parameters": 773,
      "advancedSelectors": 17,
      "documentedChoices": 71,
      "multiSelectors": 0,
      "booleanEditors": 15,
      "fileBrowsers": 12,
      "folderBrowsers": 1
    },
    {
      "file": "opencv_pack.json",
      "version": "1.0.0",
      "cards": 195,
      "parameters": 608,
      "advancedSelectors": 70,
      "documentedChoices": 342,
      "multiSelectors": 5,
      "booleanEditors": 14,
      "fileBrowsers": 13,
      "folderBrowsers": 4
    },
    {
      "file": "php_language_pack.json",
      "version": "1.2.0",
      "cards": 593,
      "parameters": 639,
      "advancedSelectors": 79,
      "documentedChoices": 299,
      "multiSelectors": 43,
      "booleanEditors": 17,
      "fileBrowsers": 27,
      "folderBrowsers": 13
    },
    {
      "file": "python_pack.json",
      "version": "1.15.1",
      "cards": 1028,
      "parameters": 2275,
      "advancedSelectors": 155,
      "documentedChoices": 592,
      "multiSelectors": 6,
      "booleanEditors": 167,
      "fileBrowsers": 58,
      "folderBrowsers": 22
    },
    {
      "file": "qt_pack.json",
      "version": "1.12.1",
      "cards": 1040,
      "parameters": 1795,
      "advancedSelectors": 128,
      "documentedChoices": 530,
      "multiSelectors": 24,
      "booleanEditors": 62,
      "fileBrowsers": 33,
      "folderBrowsers": 10
    },
    {
      "file": "qt_python_pack.json",
      "version": "1.9.0",
      "cards": 573,
      "parameters": 918,
      "advancedSelectors": 49,
      "documentedChoices": 216,
      "multiSelectors": 6,
      "booleanEditors": 13,
      "fileBrowsers": 26,
      "folderBrowsers": 10
    },
    {
      "file": "sdl_pack.json",
      "version": "1.0.1",
      "cards": 185,
      "parameters": 244,
      "advancedSelectors": 25,
      "documentedChoices": 138,
      "multiSelectors": 12,
      "booleanEditors": 0,
      "fileBrowsers": 9,
      "folderBrowsers": 0
    },
    {
      "file": "system_scripting_pack.json",
      "version": "1.9.0",
      "cards": 573,
      "parameters": 1110,
      "advancedSelectors": 614,
      "documentedChoices": 1835,
      "multiSelectors": 221,
      "booleanEditors": 0,
      "fileBrowsers": 73,
      "folderBrowsers": 28
    },
    {
      "file": "typescript_language_pack.json",
      "version": "1.2.0",
      "cards": 418,
      "parameters": 587,
      "advancedSelectors": 22,
      "documentedChoices": 92,
      "multiSelectors": 3,
      "booleanEditors": 23,
      "fileBrowsers": 10,
      "folderBrowsers": 5
    },
    {
      "file": "web_language_pack.json",
      "version": "2.0.0",
      "cards": 1319,
      "parameters": 1642,
      "advancedSelectors": 296,
      "documentedChoices": 735,
      "multiSelectors": 154,
      "booleanEditors": 24,
      "fileBrowsers": 6,
      "folderBrowsers": 8
    },
    {
      "file": "windows_api_device_pack.json",
      "version": "1.9.0",
      "cards": 915,
      "parameters": 2026,
      "advancedSelectors": 294,
      "documentedChoices": 718,
      "multiSelectors": 142,
      "booleanEditors": 59,
      "fileBrowsers": 19,
      "folderBrowsers": 12
    }
  ]
}
[OK] python3 scripts/audit-packs.py

