{ "name": "root", "private": true, "repository": "https://github.com/gitbutlerapp/gitbutler.git", "engines": { "node": ">=24" }, "type": "module", "packageManager": "pnpm@12.5.1", "scripts": { "dev:ui": "pnpm --filter @gitbutler/but-ui-react demos", "dev:web": "turbo watch --filter @gitbutler/web dev", "dev:desktop": "cross-env CARGO_TARGET_DIR=\"$PNPM_SCRIPT_SRC_DIR/target/tauri\" pnpm dev:desktop-with-env", "dev:desktop-http": "cross-env VITE_BUTLER_PORT=6978 VITE_BUTLER_HOST=localhost VITE_BUILD_TARGET=web turbo watch dev --filter=...@gitbutler/desktop", "dev:desktop-with-env": "cargo build -p but && cargo build -p gitbutler-git && node ./scripts/run-desktop-tauri-with-env.mjs development pnpm tauri dev", "dev:internal-tauri": "turbo watch --filter @gitbutler/desktop dev", "package": "turbo run package", "ui:playwright:install:unit": "turbo run --filter @gitbutler/ui-svelte playwright:install:unit", "ui:playwright:install:ct": "turbo run --filter @gitbutler/ui-svelte playwright:install:ct", "test": "turbo run test --no-daemon", "test:watch": "pnpm --filter @gitbutler/desktop run test:watch", "test:ct": "turbo run --filter @gitbutler/ui-svelte test:ct", "test:e2e:playwright": "pnpm --filter @gitbutler/e2e run test:e2e:playwright", "test:e2e": "pnpm --filter @gitbutler/e2e run test:e2e", "test:e2e:blackbox": "pnpm --filter @gitbutler/e2e run test:e2e:blackbox", "act:test:e2e": "act -j test -W .github/workflows/test-e2e.yml -P catthehacker/ubuntu:act-22.04", "build": "turbo run build --no-daemon", "build:desktop": "turbo run --filter @gitbutler/desktop build --no-daemon", "build:sdk": "turbo run --filter @gitbutler/but-sdk build --no-daemon", "build:test": "pnpm exec tauri build --config crates/gitbutler-tauri/tauri.conf.test.json -- --profile dev", "start:desktop": "pnpm --filter @gitbutler/desktop run preview", "check": "turbo run check --no-daemon", "tauri": "cross-env \"CARGO_TARGET_DIR=$PNPM_SCRIPT_SRC_DIR/target/tauri\" tauri", "tauri-for-release": "tauri", "lint": "turbo run //#globallint --no-daemon", "globallint": "prettier --check . && eslint . && pnpm run oxlint", "oxlint": "oxlint", "oxlint:fix": "oxlint --fix", "prettier": "prettier --check .", "format": "prettier --write .", "fix": "eslint --fix .", "prepare": "pnpm --filter @gitbutler/desktop run prepare", "rustfmt": "cargo +nightly fmt -- --config-path rustfmt-nightly.toml", "rustdoc": "cargo +nightly doc -Zrustdoc-mergeable-info --open", "isgood": "pnpm check && pnpm lint", "begood": "pnpm format && pnpm fix" }, "devDependencies": { "@eslint/js": "9.39.4", "@gitbutler/no-cross-domain-imports": "workspace:*", "@gitbutler/no-relative-imports": "workspace:*", "@tauri-apps/cli": "^2.11.1", "@types/eslint": "9.6.1", "@types/node": "^24.13.3", "@typescript-eslint/parser": "^8.57.1", "cross-env": "^10.1.0", "eslint": "^9.39.3", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-next": "^0.6.0", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import-x": "4.16.2", "eslint-plugin-react-hooks": "^7.0.0", "eslint-plugin-storybook": "10.2.19", "eslint-plugin-svelte": "3.15.2", "globals": "^15.15.0", "oxfmt": "^0.56.0", "oxlint": "^1.71.0", "oxlint-tsgolint": "^0.23.0", "postcss": "catalog:postcss", "prettier": "^3.8.1", "prettier-plugin-css-order": "^2.2.0", "prettier-plugin-svelte": "^3.5.1", "svelte-eslint-parser": "^1.6.0", "turbo": "2.9.14", "typescript": "catalog:", "typescript-eslint": "^8.57.1" }, "devEngines": { "runtime": { "name": "node", "version": "^24.0.0", "onFail": "download" } } }