Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.sh text eol=lf
5 changes: 5 additions & 0 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,8 @@ jobs:
with:
name: qt-python-vsix
path: qt-python/out/*.vsix
- name: Upload qt-bridge-csharp
uses: actions/upload-artifact@v4
with:
name: qt-bridge-csharp-vsix
path: qt-bridge-csharp/out/*.vsix
12 changes: 11 additions & 1 deletion .github/workflows/qt-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ on:
- qt-cpp
- qt-qml
- qt-python
- qt-bridge-csharp

jobs:
tests:
Expand Down Expand Up @@ -101,11 +102,12 @@ jobs:
- name: Prepare NatVis files
run: npm run prepareNatvisFiles
# Compile other extensions once (runtime build)
- name: Compile qt-cpp / qt-qml / qt-python
- name: Compile qt-cpp / qt-qml / qt-python / qt-bridge-csharp
run: |
npm --prefix qt-cpp run compile
npm --prefix qt-qml run compile
npm --prefix qt-python run compile
npm --prefix qt-bridge-csharp run compile


# Install Qt using a community-maintained action.
Expand Down Expand Up @@ -223,6 +225,10 @@ jobs:
if should_run qt-python; then
run_cmd "${XVFB[@]}" npm --prefix qt-python run test:only
fi

if should_run qt-bridge-csharp; then
run_cmd "${XVFB[@]}" npm --prefix qt-bridge-csharp run test:only
fi
else
if should_run qt-core; then
run_cmd npm --prefix qt-core run test:only
Expand All @@ -239,4 +245,8 @@ jobs:
if should_run qt-python; then
run_cmd npm --prefix qt-python run test:only
fi

if should_run qt-bridge-csharp; then
run_cmd npm --prefix qt-bridge-csharp run test:only
fi
fi
29 changes: 29 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,22 @@
"outFiles": ["${workspaceFolder}/qt-python/out/**/*.js"],
"preLaunchTask": "npm qt-python watch"
},
{
"name": "Run qt-bridge-csharp",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/qt-core",
"--extensionDevelopmentPath=${workspaceFolder}/qt-qml",
"--extensionDevelopmentPath=${workspaceFolder}/qt-bridge-csharp"
],
"outFiles": [
"${workspaceFolder}/qt-core/out/**/*.js",
"${workspaceFolder}/qt-qml/out/**/*.js",
"${workspaceFolder}/qt-bridge-csharp/out/**/*.js"
],
"preLaunchTask": "npm qt-bridge-csharp watch + dependencies"
},
{
"name": "Run Extension Tests qt-core",
"type": "extensionHost",
Expand Down Expand Up @@ -137,6 +153,19 @@
],
"outFiles": ["${workspaceFolder}/qt-qml/out/test/**/*.js"],
"preLaunchTask": "npm qt-qml watch and test"
},
{
"name": "Run Extension Tests qt-bridge-csharp",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/qt-core",
"--extensionDevelopmentPath=${workspaceFolder}/qt-bridge-csharp",
"--extensionTestsPath=${workspaceFolder}/qt-bridge-csharp/out/test/suite/index"
],
"outFiles": ["${workspaceFolder}/qt-bridge-csharp/out/test/**/*.js"],
"preLaunchTask": "npm qt-bridge-csharp watch and test + dependencies"
}
]
}
52 changes: 52 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,58 @@
"cwd": "${workspaceFolder}/qt-qml"
}
},
{
"type": "shell",
"label": "npm qt-bridge-csharp watch",
"problemMatcher": "$tsc-watch",
"command": "npm run watch",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"group": {
"kind": "build",
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}/qt-bridge-csharp"
}
},
{
"label": "npm qt-bridge-csharp watch + dependencies",
"dependsOn": [
"npm qt-core watch",
"npm qt-qml watch",
"npm qt-bridge-csharp watch",
"vite:start"
],
"dependsOrder": "parallel"
},
{
"type": "shell",
"label": "npm qt-bridge-csharp watch and test",
"problemMatcher": "$tsc-watch",
"command": "npm run compile-test && npm run watch",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"group": {
"kind": "build",
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}/qt-bridge-csharp"
}
},
{
"label": "npm qt-bridge-csharp watch and test + dependencies",
"dependsOn": [
"npm qt-core watch",
"npm qt-bridge-csharp watch and test"
],
"dependsOrder": "parallel"
},
{
"type": "shell",
"label": "npm qt-qml watch and test",
Expand Down
5 changes: 5 additions & 0 deletions Development.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ Before every commit, run `npm run ci-lint:all`
`.vsix` files in each extension's `out` directory.
- Also, you can run `npm run package:<extension_name>` to generate the package for a specific extension.

## Test extensions in VS Code

- Open the repository root in VS Code.
- Select the extension's launch configuration in the Run and Debug view and press `F5`.

## Install

- To install all extensions, run `npm run install:all`
Expand Down
3 changes: 2 additions & 1 deletion extension_packs/qt/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"theqtcompany.qt-core",
"theqtcompany.qt-cpp",
"theqtcompany.qt-qml",
"theqtcompany.qt-python"
"theqtcompany.qt-python",
"theqtcompany.qt-bridge-csharp"
],
"scripts": {
"vscode:prepublish": "git rev-parse HEAD > commit",
Expand Down
54 changes: 33 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,69 +13,79 @@
"all_dev:qt-qml": "ts-node ./scripts/all_dev.ts --extension=\"qt-qml\"",
"all_dev:qt-cpp": "ts-node ./scripts/all_dev.ts --extension=\"qt-cpp\"",
"all_dev:qt-python": "ts-node ./scripts/all_dev.ts --extension=\"qt-python\"",
"all_dev:qt-bridge-csharp": "ts-node ./scripts/all_dev.ts --extension=\"qt-bridge-csharp\"",
"test:qt-core": "ts-node ./scripts/test.ts --extension=\"qt-core\"",
"test:qt-cpp": "ts-node ./scripts/test.ts --extension=\"qt-cpp\"",
"test:qt-qml": "ts-node ./scripts/test.ts --extension=\"qt-qml\"",
"test:qt-python": "ts-node ./scripts/test.ts --extension=\"qt-python\"",
"test:qt-bridge-csharp": "ts-node ./scripts/test.ts --extension=\"qt-bridge-csharp\"",
"test:all": "ts-node ./scripts/test.ts --extension=\"all\"",
"lint": "npm run prettierWrite && eslint scripts --fix --cache",
"lint:qt-core": "cd qt-core && npm run lint",
"lint:qt-qml": "cd qt-qml && npm run lint",
"lint:qt-cpp": "cd qt-cpp && npm run lint",
"lint:qt-python": "cd qt-python && npm run lint",
"lint:qt-bridge-csharp": "cd qt-bridge-csharp && npm run lint",
"lint:qt-lib": "cd qt-lib && npm run lint",
"lint:all": "concurrently \"npm run lint\" \"npm run lint:qt-lib\" \"npm run lint:qt-core\" \"npm run lint:qt-cpp\" \"npm run lint:qt-python\" \"npm run lint:qt-qml\"",
"lint:all_sync": "npm run lint && npm run lint:qt-lib && npm run lint:qt-core && npm run lint:qt-cpp && npm run lint:qt-python && npm run lint:qt-qml",
"lint:all": "concurrently \"npm run lint\" \"npm run lint:qt-lib\" \"npm run lint:qt-core\" \"npm run lint:qt-cpp\" \"npm run lint:qt-python\" \"npm run lint:qt-qml\" \"npm run lint:qt-bridge-csharp\"",
"lint:all_sync": "npm run lint && npm run lint:qt-lib && npm run lint:qt-core && npm run lint:qt-cpp && npm run lint:qt-python && npm run lint:qt-qml && npm run lint:qt-bridge-csharp",
"pretest": "npm run prettierWrite && npx tsc --incremental --noEmit && eslint scripts --fix --cache",
"pretest:qt-core": "cd qt-core && npm run pretest",
"pretest:qt-qml": "cd qt-qml && npm run pretest",
"pretest:qt-cpp": "cd qt-cpp && npm run pretest",
"pretest:qt-python": "cd qt-python && npm run pretest",
"pretest:qt-bridge-csharp": "cd qt-bridge-csharp && npm run pretest",
"pretest:qt-lib": "cd qt-lib && npm run pretest",
"pretest:all": "concurrently \"npm run pretest\" \"npm run pretest:qt-lib\" \"npm run pretest:qt-core\" \"npm run pretest:qt-cpp\" \"npm run pretest:qt-python\" \"npm run pretest:qt-qml\"",
"pretest:all_sync": "npm run pretest && npm run pretest:qt-lib && npm run pretest:qt-core && npm run pretest:qt-cpp && npm run pretest:qt-python && npm run pretest:qt-qml",
"pretest:all": "concurrently \"npm run pretest\" \"npm run pretest:qt-lib\" \"npm run pretest:qt-core\" \"npm run pretest:qt-cpp\" \"npm run pretest:qt-python\" \"npm run pretest:qt-qml\" \"npm run pretest:qt-bridge-csharp\"",
"pretest:all_sync": "npm run pretest && npm run pretest:qt-lib && npm run pretest:qt-core && npm run pretest:qt-cpp && npm run pretest:qt-python && npm run pretest:qt-qml && npm run pretest:qt-bridge-csharp",
"ci-lint:qt-core": "ts-node ./scripts/ci_lint.ts --dir=\"qt-core\" --exclude_licenses=\"qt-core\"",
"ci-lint:qt-qml": "ts-node ./scripts/ci_lint.ts --dir=\"qt-qml\" --exclude_licenses=\"qt-qml\"",
"ci-lint:qt-cpp": "ts-node ./scripts/ci_lint.ts --dir=\"qt-cpp\" --exclude_licenses=\"qt-cpp\"",
"ci-lint:qt-python": "ts-node ./scripts/ci_lint.ts --dir=\"qt-python\" --exclude_licenses=\"qt-python\"",
"ci-lint:qt-bridge-csharp": "ts-node ./scripts/ci_lint.ts --dir=\"qt-bridge-csharp\" --exclude_licenses=\"qt-bridge-csharp\"",
"ci-lint:qt-lib": "npm run checkStyle -- --dir=\"qt-lib\" && npm run eslint -- --dir=\"qt-lib\" && npm run checkPackage -- --dir=\"qt-lib\"",
"ci-lint:all": "concurrently \"npm run ci-lint\" \"npm run ci-lint:qt-lib\" \"npm run ci-lint:qt-core\" \"npm run ci-lint:qt-cpp\" \"npm run ci-lint:qt-python\" \"npm run ci-lint:qt-qml\" \"npm run checkChangelog:all_ext_pack\"",
"ci-lint:all_sync": "npm run ci-lint && npm run ci-lint:qt-lib && npm run ci-lint:qt-core && npm run ci-lint:qt-cpp && npm run ci-lint:qt-python && npm run ci-lint:qt-qml ",
"ci-lint:all": "concurrently \"npm run ci-lint\" \"npm run ci-lint:qt-lib\" \"npm run ci-lint:qt-core\" \"npm run ci-lint:qt-cpp\" \"npm run ci-lint:qt-python\" \"npm run ci-lint:qt-qml\" \"npm run ci-lint:qt-bridge-csharp\" \"npm run checkChangelog:all_ext_pack\"",
"ci-lint:all_sync": "npm run ci-lint && npm run ci-lint:qt-lib && npm run ci-lint:qt-core && npm run ci-lint:qt-cpp && npm run ci-lint:qt-python && npm run ci-lint:qt-qml && npm run ci-lint:qt-bridge-csharp",
"ci-lint": "npm run prettierCheck && eslint scripts",
"install-ext:qt-core": "ts-node ./scripts/install-ext.ts --dir=\"qt-core\" --name=\"qt-core\"",
"install-ext:qt-qml": "ts-node ./scripts/install-ext.ts --dir=\"qt-qml\" --name=\"qt-qml\"",
"install-ext:qt-cpp": "ts-node ./scripts/install-ext.ts --dir=\"qt-cpp\" --name=\"qt-cpp\"",
"install-ext:qt-python": "ts-node ./scripts/install-ext.ts --dir=\"qt-python\" --name=\"qt-python\"",
"install-ext:all": "concurrently \"npm run install-ext:qt-core\" \"npm run install-ext:qt-cpp\" \"npm run install-ext:qt-python\" \"npm run install-ext:qt-qml\"",
"install-ext:all_sync": "npm run install-ext:qt-core && npm run install-ext:qt-cpp && npm run install-ext:qt-python && npm run install-ext:qt-qml",
"install-ext:qt-bridge-csharp": "ts-node ./scripts/install-ext.ts --dir=\"qt-bridge-csharp\" --name=\"qt-bridge-csharp\"",
"install-ext:all": "concurrently \"npm run install-ext:qt-core\" \"npm run install-ext:qt-cpp\" \"npm run install-ext:qt-python\" \"npm run install-ext:qt-qml\" \"npm run install-ext:qt-bridge-csharp\"",
"install-ext:all_sync": "npm run install-ext:qt-core && npm run install-ext:qt-cpp && npm run install-ext:qt-python && npm run install-ext:qt-qml && npm run install-ext:qt-bridge-csharp",
"install:qt-core": "cd qt-core && npm run install:all",
"install:qt-qml": "cd qt-qml && npm install",
"install:qt-cpp": "cd qt-cpp && npm install",
"install:qt-python": "cd qt-python && npm install",
"install:qt-bridge-csharp": "cd qt-bridge-csharp && npm install",
"install:qt-lib": "cd qt-lib && npm install",
"install:all": "concurrently \"npm install\" \"npm run install:qt-lib\" \"npm run install:qt-core\" \"npm run install:qt-cpp\" \"npm run install:qt-python\" \"npm run install:qt-qml\"",
"install:all_sync": "npm install && npm run install:qt-lib && npm run install:qt-core && npm run install:qt-cpp && npm run install:qt-python && npm run install:qt-qml",
"install:all": "concurrently \"npm install\" \"npm run install:qt-lib\" \"npm run install:qt-core\" \"npm run install:qt-cpp\" \"npm run install:qt-python\" \"npm run install:qt-qml\" \"npm run install:qt-bridge-csharp\"",
"install:all_sync": "npm install && npm run install:qt-lib && npm run install:qt-core && npm run install:qt-cpp && npm run install:qt-python && npm run install:qt-qml && npm run install:qt-bridge-csharp",
"eslint": "ts-node ./scripts/eslint.ts",
"ci:qt-core": "cd qt-core && npm run ci:all",
"ci:qt-qml": "cd qt-qml && npm ci",
"ci:qt-cpp": "cd qt-cpp && npm ci",
"ci:qt-python": "cd qt-python && npm ci",
"ci:qt-bridge-csharp": "cd qt-bridge-csharp && npm ci",
"ci:qt-lib": "cd qt-lib && npm ci",
"ci:all": "npm ci && concurrently \"npm run ci:qt-lib\" \"npm run ci:qt-core\" \"npm run ci:qt-cpp\" \"npm run ci:qt-python\" \"npm run ci:qt-qml\"",
"ci:all_sync": "npm ci && npm run ci:qt-lib && npm run ci:qt-core && npm run ci:qt-cpp && npm run ci:qt-python && npm run ci:qt-qml",
"ci:all": "npm ci && concurrently \"npm run ci:qt-lib\" \"npm run ci:qt-core\" \"npm run ci:qt-cpp\" \"npm run ci:qt-python\" \"npm run ci:qt-qml\" \"npm run ci:qt-bridge-csharp\"",
"ci:all_sync": "npm ci && npm run ci:qt-lib && npm run ci:qt-core && npm run ci:qt-cpp && npm run ci:qt-python && npm run ci:qt-qml && npm run ci:qt-bridge-csharp",
"package:qt-core": "ts-node ./scripts/package.ts --extension=\"qt-core\"",
"package:qt-qml": "ts-node ./scripts/package.ts --extension=\"qt-qml\"",
"package:qt-cpp": "ts-node ./scripts/package.ts --extension=\"qt-cpp\"",
"package:qt-python": "ts-node ./scripts/package.ts --extension=\"qt-python\"",
"package:all": "concurrently \"npm run package:qt-core\" \"npm run package:qt-cpp\" \"npm run package:qt-python\" \"npm run package:qt-qml\"",
"package:all_sync": "npm run package:qt-core && npm run package:qt-cpp && npm run package:qt-python && npm run package:qt-qml",
"package:qt-bridge-csharp": "ts-node ./scripts/package.ts --extension=\"qt-bridge-csharp\"",
"package:all": "concurrently \"npm run package:qt-core\" \"npm run package:qt-cpp\" \"npm run package:qt-python\" \"npm run package:qt-qml\" \"npm run package:qt-bridge-csharp\"",
"package:all_sync": "npm run package:qt-core && npm run package:qt-cpp && npm run package:qt-python && npm run package:qt-qml && npm run package:qt-bridge-csharp",
"compile:qt-core": "cd qt-core && npm run compile",
"compile:qt-qml": "cd qt-qml && npm run compile",
"compile:qt-cpp": "npm run prepareNatvisFiles && cd qt-cpp && npm run compile",
"compile:qt-python": "cd qt-python && npm run compile",
"compile:qt-bridge-csharp": "cd qt-bridge-csharp && npm run compile",
"compile:qt-lib": "cd qt-lib && npm run compile",
"compile:all": "concurrently \"npm run compile:qt-core\" \"npm run compile:qt-cpp\" \"npm run compile:qt-python\" \"npm run compile:qt-qml\"",
"compile:all_sync": "npm run compile:qt-core && npm run compile:qt-cpp && npm run compile:qt-python && npm run compile:qt-qml && npm run compile:qt-lib",
"compile:all": "concurrently \"npm run compile:qt-core\" \"npm run compile:qt-cpp\" \"npm run compile:qt-python\" \"npm run compile:qt-qml\" \"npm run compile:qt-bridge-csharp\"",
"compile:all_sync": "npm run compile:qt-core && npm run compile:qt-cpp && npm run compile:qt-python && npm run compile:qt-qml && npm run compile:qt-bridge-csharp && npm run compile:qt-lib",
"checkLicenses": "ts-node ./scripts/check_licenses.ts",
"checkPackage": "ts-node ./scripts/check_package.ts",
"checkStyle": "ts-node ./scripts/check_style.ts",
Expand All @@ -96,14 +106,16 @@
"generateLicenses:qt-qml": "npm run generateLicenses -- --dir=\"qt-qml\" --exclude=\"qt-qml, qt-lib\" --output=\"qt-qml/ThirdPartyNotices.txt\"",
"generateLicenses:qt-cpp": "npm run generateLicenses -- --dir=\"qt-cpp\" --exclude=\"qt-cpp, qt-lib\" --output=\"qt-cpp/ThirdPartyNotices.txt\"",
"generateLicenses:qt-python": "npm run generateLicenses -- --dir=\"qt-python\" --exclude=\"qt-python, qt-lib\" --output=\"qt-python/ThirdPartyNotices.txt\"",
"generateLicenses:all": "concurrently \"npm run generateLicenses:qt-core\" \"npm run generateLicenses:qt-cpp\" \"npm run generateLicenses:qt-python\" \"npm run generateLicenses:qt-qml\"",
"generateLicenses:all_sync": "npm run generateLicenses:qt-core && npm run generateLicenses:qt-cpp && npm run generateLicenses:qt-python && npm run generateLicenses:qt-qml",
"generateLicenses:qt-bridge-csharp": "npm run generateLicenses -- --dir=\"qt-bridge-csharp\" --exclude=\"qt-bridge-csharp, qt-lib\" --output=\"qt-bridge-csharp/ThirdPartyNotices.txt\"",
"generateLicenses:all": "concurrently \"npm run generateLicenses:qt-core\" \"npm run generateLicenses:qt-cpp\" \"npm run generateLicenses:qt-python\" \"npm run generateLicenses:qt-qml\" \"npm run generateLicenses:qt-bridge-csharp\"",
"generateLicenses:all_sync": "npm run generateLicenses:qt-core && npm run generateLicenses:qt-cpp && npm run generateLicenses:qt-python && npm run generateLicenses:qt-qml && npm run generateLicenses:qt-bridge-csharp",
"_prepublish_git": "git reset --hard && git clean -ffdx",
"_prepublish": "npm run _prepublish_git && npm ci && npm run ci:qt-lib && npm run compile:qt-lib && npm run ci-lint:qt-lib",
"publish:qt-core": "ts-node ./scripts/publish.ts --extension=\"qt-core\"",
"publish:qt-qml": "ts-node ./scripts/publish.ts --extension=\"qt-qml\"",
"publish:qt-cpp": "ts-node ./scripts/publish.ts --extension=\"qt-cpp\"",
"publish:qt-python": "ts-node ./scripts/publish.ts --extension=\"qt-python\"",
"publish:qt-bridge-csharp": "ts-node ./scripts/publish.ts --extension=\"qt-bridge-csharp\"",
"publish:qt-cpp-pack": "ts-node ./scripts/publish_ext_pack.ts --dir=\"extension_packs/cpp\" --pack=\"qt-cpp-pack\"",
"publish:qt-wasm-pack": "ts-node ./scripts/publish_ext_pack.ts --dir=\"extension_packs/wasm\" --pack=\"qt-wasm-pack\"",
"publish:qt-all-pack": "ts-node ./scripts/publish_ext_pack.ts --dir=\"extension_packs/qt\" --pack=\"qt-all-pack\"",
Expand All @@ -112,9 +124,9 @@
"prettierWrite": "npm run prettierBase -- --write \"scripts/**/*.{js,ts,mts,json,mjs,cjs}\" \"eslint.config.mjs\" \"common/.eslintrc.cjs\" --log-level silent",
"prettierCheck": "npm run prettierBase -- --check \"scripts/**/*.{js,ts,mts,json,mjs,cjs}\" \"eslint.config.mjs\" \"common/.eslintrc.cjs\"",
"prettierBase": "prettier --config \"common/.prettierrc\" --ignore-path \"common/.prettierignore\"",
"auditFix": "npm audit fix && cd qt-lib && npm audit fix && cd ../qt-core && npm audit fix && cd ../qt-cpp && npm audit fix && cd ../qt-qml && npm audit fix && cd ../qt-python && npm audit fix && cd ../qt-core/webview-ui && npm audit fix",
"auditFixForce": "npm audit fix --force && cd qt-lib && npm audit fix --force && cd ../qt-core && npm audit fix --force && cd ../qt-cpp && npm audit fix --force && cd ../qt-qml && npm audit fix --force && cd ../qt-python && npm audit fix --force && cd ../qt-core/webview-ui && npm audit fix --force",
"build:qt-cli": "cd qt-cli && bash run.sh build"
"auditFix": "npm audit fix && cd qt-lib && npm audit fix && cd ../qt-core && npm audit fix && cd ../qt-cpp && npm audit fix && cd ../qt-qml && npm audit fix && cd ../qt-python && npm audit fix && cd ../qt-bridge-csharp && npm audit fix && cd ../qt-core/webview-ui && npm audit fix",
"auditFixForce": "npm audit fix --force && cd qt-lib && npm audit fix --force && cd ../qt-core && npm audit fix --force && cd ../qt-cpp && npm audit fix --force && cd ../qt-qml && npm audit fix --force && cd ../qt-python && npm audit fix --force && cd ../qt-bridge-csharp && npm audit fix --force && cd ../qt-core/webview-ui && npm audit fix --force",
"build:qt-cli": "node qt-cli/run.mjs build"
},
"devDependencies": {
"@eslint/js": "^9.21.0",
Expand Down
Loading
Loading