mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
* refactor(terminal): own multiplex ACK window accounting in one module * perf(terminal): pace alternate-screen multiplex output to the measured link BDP Slow SSH links queued up to 2MB of superseded TUI frames ahead of keystroke echo. orcad now estimates delivery rate and base RTT from existing output ACK timing, caps in-flight output for alternate-screen streams near 2x BDP on links under 4 MB/s, and replaces a backlog larger than that budget with the existing recovery snapshot. Normal-screen streams and fast links keep the legacy windows. ORCA_TERMINAL_ADAPTIVE_ACK_WINDOW=0 restores legacy behavior. * perf(terminal): back off unavailable superseding snapshots and bound legacy echo checks * perf(terminal): gate ACK pacing to measured remote links and keep supersedes history-neutral Pacing now needs a base RTT of at least 40ms, 16 fresh window-limited samples, and a sample within 15s, so LAN/local links and stale estimates keep the legacy windows. Superseding snapshots are screen-only, only replace frames that never switch screen mode (rechecked after serializing), and leave client history untouched. Paced streams keep today's total buffering before overflow, so overflow recovery fires no earlier than with legacy windows. * fix(terminal): close supersede gaps found in review Scan for screen switches and OSC side effects across frame and send boundaries (raw and JSON-escaped), back off after an aborted supersede so it cannot re-serialize in a loop, and keep paced pending headroom until the queue drains so leaving the alternate screen cannot force an overflow recovery. * fix(terminal): judge supersedable backlogs on decoded text across every seam Scan the joined text of the whole queue (plus the sent tail) so screen switches split across any frame, send, or covered/retained boundary are seen; never supersede span frames; reject bells (via the shared bell detector), OSC clipboard/notification writes and 8-bit OSC; back off for 1s after a rejected scan instead of rescanning on every ACK. * perf(terminal): make backlog superseding opt-in and forget the sent tail after snapshots Every recovery snapshot makes current clients replay their reattach reset (cursor shape/visibility, focus reporting), which is visible when it fires routinely, so superseding is opt-in via ORCA_TERMINAL_SUPERSEDE_ALT_BACKLOG=1 until clients can skip it. Pacing stays on by default: on a slow link the existing overflow recovery then reaches the client promptly instead of queuing behind a 2MB window. After any snapshot the sent tail is unknown (it can end inside an escape), so superseding waits for the next text frame. * test(terminal): cover default pacing and opt-in superseding separately * perf(terminal): read the supersede switch once per connection and skip its bookkeeping when off * perf(terminal): make adaptive ACK pacing opt-in and fix review findings - Default off: ORCA_TERMINAL_ADAPTIVE_ACK_WINDOW=1 enables it; when off every new path is a single flag check, so behavior matches legacy windows. - Base RTT is a windowed minimum kept honest by periodic probes that drain our own queue; a paced RTT beyond what our window can add means the path changed, so legacy windows hold while the base re-learns (no more self-tightening to 64KiB after an RTT increase). - Paced pending headroom is capped by the connection window legacy would have used and released on drain, pause and detach. - Superseding refuses snapshots that end inside an escape. - Replace the latency-threshold unit test with hardcoded estimator tests and move the link simulation to bench:terminal-multiplex-ack-pacing. * perf(terminal): drop backlog superseding and harden opt-in ACK pacing - Remove the opt-in backlog-superseding snapshot path (code, env switch, frame classifier and tests); it needs a client capability to skip the reattach reset before it can ship. - Paced-ness is decided once at admission (alt screen checked before the estimate) and reused by the send, so a probe starting in between cannot mislabel a sample. - Base RTT is fed only by sends with a near-empty connection queue; probes end only on such samples from paced streams, and a probe that cannot drain backs off. A path change forgets the base and holds legacy windows until a drained sample re-learns it. - Paced pending headroom is sized from the steady window (never a probe's zero) and released whenever the queue drains back within the legacy cap. - Flow-level tests: disabled pacing keeps legacy frames on a measured slow link; drained headroom returns so later output overflows at the legacy cap. * fix(terminal): release paced headroom whenever the queue drains, including after recovery
464 lines
39 KiB
JSON
464 lines
39 KiB
JSON
{
|
|
"name": "orca",
|
|
"version": "1.4.214",
|
|
"description": "Next-gen IDE for parallel agentic development",
|
|
"homepage": "https://github.com/stablyai/orca",
|
|
"author": "stablyai",
|
|
"bin": {
|
|
"orca": "./out/cli/index.js",
|
|
"orca-dev": "./config/scripts/development/launch/orca-dev.mjs"
|
|
},
|
|
"main": "./out/main/index.js",
|
|
"scripts": {
|
|
"check:dependencies": "pnpm run build:packages && node config/scripts/dependency-security/audit-tools/check-dependency-security.mjs",
|
|
"install:release": "pnpm install --frozen-lockfile --cpu=current,x64,arm64",
|
|
"audit:perf": "oxlint --config config/oxlint-performance-audit.json --format json src",
|
|
"test:perf:contracts": "vitest run --config config/vitest.performance.config.ts",
|
|
"format": "oxfmt --write .",
|
|
"lint": "node config/scripts/preflight/changed-checks/run-lint.mjs",
|
|
"audit:code-quality": "pnpm run audit:code-quality:native && pnpm run audit:code-quality:type-aware && pnpm run audit:react-doctor",
|
|
"audit:code-quality:native": "oxlint --config config/oxlint-code-quality-native-plugins.json src config tests mobile --deny-warnings",
|
|
"audit:code-quality:type-aware": "oxlint --type-aware --config config/oxlint-code-quality-type-aware.json src config tests --deny-warnings",
|
|
"audit:react-doctor": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs react-doctor . --yes --no-supply-chain --no-telemetry --blocking none",
|
|
"audit:dead-code": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs knip --config config/knip.json",
|
|
"check:changed": "node config/scripts/preflight/changed-checks/check-changed.mjs",
|
|
"check:code-quality:changed": "node config/scripts/preflight/changed-checks/check-changed-code-quality.mjs",
|
|
"lint:js-plugins": "oxlint --config config/oxlint-js-plugins.json src config tests mobile native .github",
|
|
"lint:ast-grep": "ast-grep scan --config config/sgconfig.yml --min-severity warning src config tests mobile",
|
|
"lint:ast-grep-gates": "node config/scripts/static-analysis/structural-scan/ast-grep-gates.mjs",
|
|
"lint:ast-grep:flaky-tests": "ast-grep scan --config config/sgconfig.yml --filter \"^test-\" src config tests mobile",
|
|
"test:ast-grep": "ast-grep test --config config/sgconfig.yml --skip-snapshot-tests",
|
|
"check:dead-classes": "oxlint --config config/oxlint-dead-classes.json src/renderer",
|
|
"lint:design-system": "oxlint --config config/oxlint-design-system.json src/renderer",
|
|
"check:react-doctor:changed": "node config/scripts/static-analysis/react-doctor/check-react-doctor-changed.mjs",
|
|
"check:zustand-selector-fanout": "node config/scripts/performance/renderer-projection/zustand-selector-fanout-benchmark.mjs --check",
|
|
"doctor": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs react-doctor . --no-telemetry",
|
|
"lint:react-doctor": "oxlint --config config/oxlint-react-doctor.json",
|
|
"lint:react-doctor:changed": "node config/scripts/static-analysis/react-doctor/lint-react-doctor-changed.mjs",
|
|
"prepare": "husky",
|
|
"test": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/test-runtime/execution-policy/run-vitest.mjs run --config config/vitest.config.ts",
|
|
"test:changed": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/test-runtime/execution-policy/run-vitest.mjs run --config config/vitest.config.ts --changed=HEAD",
|
|
"test:node": "pnpm run build:packages && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && vitest run --config config/vitest.config.ts",
|
|
"test:node-server": "node config/scripts/ci/unit-selection/run-node-server-tests.mjs",
|
|
"test:skill-sharing:release": "vitest run --config config/vitest.config.ts src/main/skills src/main/runtime/rpc/methods/skills/skills.test.ts src/shared/skill-bundle-install-contract.test.ts src/shared/skill-package-manifest.test.ts",
|
|
"test:repro:remote-agent-session": "pnpm run build:cli && pnpm run build:electron-vite && node config/scripts/diagnostics/remote-agent-authority/remote-agent-session-authority-repro.mjs",
|
|
"capture:agent-transcript": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/diagnostics/terminal-transcripts/capture-agent-pty-transcript.mjs",
|
|
"check:reliability-gates": "node config/scripts/static-analysis/reliability-policy/check-reliability-gates.mjs",
|
|
"check:ratchets": "node config/scripts/static-analysis/ratchet-runner/run-ratchets.mjs",
|
|
"check:max-lines-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-max-lines-ratchet.mjs",
|
|
"check:ts-nocheck-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-ts-nocheck-ratchet.mjs",
|
|
"check:host-list-render-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-host-list-render-ratchet.mjs",
|
|
"check:memo-translate-subscription-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-memo-translate-subscription-ratchet.mjs",
|
|
"check:react-compiler-compat-ratchet": "node config/scripts/static-analysis/ratchets/react-compiler/check-react-compiler-compat-ratchet.mjs",
|
|
"check:render-path-translate-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-render-path-translate-ratchet.mjs",
|
|
"check:flaky-test-pattern-ratchet": "node config/scripts/static-analysis/ratchets/test-quality/check-flaky-test-pattern-ratchet.mjs",
|
|
"check:path-literal-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-path-literal-ratchet.mjs",
|
|
"check:legacy-relay-fence-ratchet": "node config/scripts/static-analysis/process-boundaries/check-legacy-relay-fence-ratchet.mjs",
|
|
"check:unproven-pty-retirement-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-unproven-pty-retirement-ratchet.mjs",
|
|
"check:daemon-blocking-call-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-daemon-blocking-call-ratchet.mjs",
|
|
"check:id-only-store-write-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-id-only-store-write-ratchet.mjs",
|
|
"check:repo-host-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-repo-host-read-ratchet.mjs",
|
|
"check:workspace-record-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-workspace-record-read-ratchet.mjs",
|
|
"check:worktree-id-composer-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-worktree-id-composer-ratchet.mjs",
|
|
"check:direct-link-open-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-direct-link-open-ratchet.mjs",
|
|
"check:e2e-typecheck-ratchet": "node config/scripts/typecheck/e2e-admission/check-e2e-typecheck-ratchet.mjs",
|
|
"check:runtime-electron-ratchet": "node config/scripts/static-analysis/process-boundaries/check-runtime-electron-ratchet.mjs",
|
|
"check:focus-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-focus-read-ratchet.mjs",
|
|
"check:layout-writer-ratchets": "node config/scripts/static-analysis/ratchets/renderer-state/check-layout-writer-ratchets.mjs",
|
|
"check:readme-local-links": "node config/scripts/static-analysis/repository-layout/check-readme-local-links.mjs",
|
|
"check:has-restyle-scope": "node config/scripts/static-analysis/renderer-styles/check-has-restyle-scope.mjs",
|
|
"check:daemon-protocol-crossing": "node config/scripts/daemon-protocol/admission/check-daemon-protocol-crossing.mjs",
|
|
"check:runtime-launcher-protocol-ratchet": "node config/scripts/daemon-protocol/admission/check-runtime-launcher-protocol-ratchet.mjs",
|
|
"check:node-runtime-pin": "node config/scripts/node-runtime/pin-policy/check-node-runtime-pin.mjs",
|
|
"check:test-file-runners": "node config/scripts/ci/unit-selection/check-test-file-runners.mjs",
|
|
"check:mobile-shared-dependency-versions": "node config/scripts/package-manager/lockfile-contracts/check-mobile-shared-dependency-versions.mjs",
|
|
"build:orcad": "pnpm run build:packages && node config/scripts/orcad-distribution/prebuilds/build-orcad-node.mjs",
|
|
"build:orcad-template": "pnpm run build:packages && node config/scripts/orcad-distribution/template/build-orcad-template.mjs",
|
|
"build:orcad-prebuilds": "pnpm run build:packages && node config/scripts/orcad-distribution/prebuilds/build-orcad-prebuilds.mjs",
|
|
"smoke:orcad-terminal": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && pnpm run build:orcad && node config/scripts/runtime-verification/daemon-lifecycle/runtime-serve-terminal-smoke.mjs --target orcad",
|
|
"smoke:serve-terminal": "node config/scripts/runtime-verification/daemon-lifecycle/runtime-serve-terminal-smoke.mjs",
|
|
"check:feature-wall-assets": "node config/scripts/assets/feature-wall/check-feature-wall-assets.mjs",
|
|
"generate:plugin-declarative-runtime": "node config/scripts/plugin-build/declarative-runtime/build-plugin-declarative-runtime.mjs",
|
|
"generate:plugin-declarative-typings": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-declarative-typings.mjs",
|
|
"generate:plugin-schemas": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-schemas.mjs",
|
|
"generate:plugin-author-typings": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-author-typings.mjs",
|
|
"validate:plugin": "node config/scripts/plugin-authoring/content-validation/validate-plugin-files.mjs",
|
|
"generate:rpc-params-catalog": "node config/scripts/plugin-authoring/rpc-catalog/generate-rpc-params-catalog.mjs",
|
|
"verify:rpc-params-catalog": "node config/scripts/plugin-authoring/rpc-catalog/generate-rpc-params-catalog.mjs --check",
|
|
"generate:acp-protocol": "node config/scripts/acp/generate-protocol.mjs",
|
|
"verify:acp-protocol": "node config/scripts/acp/generate-protocol.mjs --check",
|
|
"generate:bundled-skill-guides": "node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --write",
|
|
"verify:bundled-skill-guides": "node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --check",
|
|
"generate:plugin-authoring-skill-references": "node config/scripts/skills/bundle-generation/generate-plugin-authoring-skill-references.mjs --write && node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --write",
|
|
"verify:plugin-authoring-skill-references": "node config/scripts/skills/bundle-generation/generate-plugin-authoring-skill-references.mjs --check",
|
|
"generate:skill-bundle-manifest": "node config/scripts/skills/bundle-generation/generate-skill-bundle-manifest.mjs --write",
|
|
"verify:skill-bundle-manifest": "node config/scripts/skills/bundle-generation/generate-skill-bundle-manifest.mjs",
|
|
"verify:macos-entitlements": "node config/scripts/desktop-distribution/macos/verify-macos-entitlements.mjs",
|
|
"vendor:feature-wall-assets": "node config/scripts/assets/feature-wall/vendor-feature-wall-assets.mjs",
|
|
"tc:node": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.node.json",
|
|
"tc:cli": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.cli.json",
|
|
"tc:web": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.web.json",
|
|
"tc": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs",
|
|
"typecheck:node": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.node.json",
|
|
"typecheck:cli": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.cli.json",
|
|
"typecheck:web": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.web.json",
|
|
"typecheck:e2e": "pnpm run build:packages && node config/scripts/typecheck/e2e-admission/run-e2e-typecheck.mjs",
|
|
"typecheck:tsc:e2e": "pnpm run build:packages && node config/scripts/typecheck/e2e-admission/run-e2e-typecheck.mjs --compiler=native",
|
|
"typecheck": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs",
|
|
"typecheck:ci": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --compiler=bun",
|
|
"typecheck:tsc:node": "pnpm run build:packages && node node_modules/typescript/bin/tsc --noEmit -p config/tsconfig.node.json --composite false",
|
|
"typecheck:tsc:cli": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.cli.json --composite false",
|
|
"typecheck:tsc:web": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.web.json --composite false",
|
|
"typecheck:tsc": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.node.json --composite false && tsc --noEmit -p config/tsconfig.cli.json --composite false && tsc --noEmit -p config/tsconfig.web.json --composite false",
|
|
"ensure:electron-runtime": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=electron",
|
|
"start": "pnpm run build:packages && pnpm run ensure:electron-runtime && electron-vite preview",
|
|
"dev": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=electron && node config/scripts/development/launch/run-electron-vite-dev.mjs",
|
|
"dev-stable-name": "pnpm run build:packages && pnpm run ensure:electron-runtime && node config/scripts/development/launch/run-electron-vite-dev.mjs --stable-name",
|
|
"dev:fresh": "pnpm run build:packages && node config/scripts/development/profile-seeding/dev-fresh-profile.mjs",
|
|
"dev:seed-profile": "node config/scripts/development/profile-seeding/dev-profile-seed.mjs",
|
|
"dev:web": "vite --config vite.web.config.ts --host 127.0.0.1",
|
|
"dev:fixtures": "vite --config config/vite.fixtures.config.ts",
|
|
"fixtures:shot": "node config/scripts/component-fixtures/fixtures-shot.mjs",
|
|
"build:wsl-guest": "pnpm run build:packages && node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/remote-host-build/wsl-guest/build-wsl-guest.mjs",
|
|
"build:computer-macos": "node config/scripts/native-build/macos/build-computer-macos.mjs",
|
|
"build:keyboard-layout-macos": "node config/scripts/native-build/macos/build-keyboard-layout-macos.mjs",
|
|
"build:process-footprint-macos": "node config/scripts/native-build/macos/build-process-footprint-macos.mjs",
|
|
"build:notification-status-macos": "node config/scripts/native-build/macos/build-notification-status-macos.mjs",
|
|
"build:native": "node config/scripts/native-build/composition/build-native-for-platform.mjs",
|
|
"smoke:computer": "node config/scripts/runtime-verification/desktop-transport/computer-use-smoke.mjs",
|
|
"verify:computer-native": "node config/scripts/runtime-verification/desktop-transport/verify-computer-native.mjs",
|
|
"verify:cli-bin": "node config/scripts/cli-build/verify-cli-bin.mjs",
|
|
"verify:built-skills-cli": "node config/scripts/runtime-verification/skills-cli/verify-skills-cli-runtime.cjs out",
|
|
"verify:renderer-boot-graph": "node config/scripts/desktop-build/output-contracts/verify-renderer-boot-graph.mjs",
|
|
"verify:localization-catalogs": "bun config/scripts/localization/catalog-validation/verify-localization-catalogs.mjs",
|
|
"verify:localization-catalog": "node config/scripts/localization/catalog-validation/verify-localization-catalog.mjs",
|
|
"sync:localization-catalog": "node config/scripts/localization/catalog-validation/verify-localization-catalog.mjs --fix",
|
|
"verify:localization-runtime-catalog": "node config/scripts/localization/catalog-validation/generate-runtime-required-english-catalog.mjs",
|
|
"sync:localization-runtime-catalog": "node config/scripts/localization/catalog-validation/generate-runtime-required-english-catalog.mjs --fix",
|
|
"verify:localization-protected-copy": "node config/scripts/localization/catalog-validation/protected-copy-keys.mjs",
|
|
"sync:localization-protected-copy": "node config/scripts/localization/catalog-validation/protected-copy-keys.mjs --fix",
|
|
"verify:localization-extraction": "node config/scripts/localization/source-extraction/verify-localization-extraction.mjs",
|
|
"verify:localization-coverage": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs --check",
|
|
"verify:mobile-localization": "node config/scripts/localization/catalog-validation/verify-mobile-localization.mjs",
|
|
"sync:mobile-localization": "node config/scripts/localization/catalog-validation/verify-mobile-localization.mjs --fix",
|
|
"verify:mobile-localization-coverage": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs --check --source-root mobile/app --source-root mobile/src --source-root mobile/web-entry --allowlist config/mobile-localization-coverage-allowlist.json",
|
|
"audit:localization": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs",
|
|
"i18n:reactive-translate": "node config/scripts/localization/reactive-translate/codemod-reactive-translate.mjs",
|
|
"audit:translate-helpers": "node config/scripts/localization/reactive-translate/report-translate-helpers.mjs",
|
|
"build:cli": "pnpm run build:packages && node config/scripts/cli-build/build-cli.mjs && pnpm run prepare:cli-output",
|
|
"prepare:cli-output": "node config/scripts/cli-build/verify-cli-bin.mjs --fix-executable --fix-package-json && node config/scripts/development/setup/install-dev-cli.mjs",
|
|
"test:linux-cli-contract": "node config/scripts/runtime-verification/desktop-transport/run-linux-cli-launch-contract-docker.mjs --appimage dist/orca-linux.AppImage",
|
|
"test:repro:skills-cli-runtime": "pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli",
|
|
"build:electron-vite": "pnpm run build:packages && node config/scripts/desktop-build/execution/run-electron-vite-build.mjs",
|
|
"build:electron-vite:parallel": "pnpm run build:packages && node config/scripts/development/launch/run-electron-vite-targets-in-parallel.mjs",
|
|
"build:web": "pnpm run build:packages && node config/scripts/web-build/execution/run-vite-web-build.mjs && node config/scripts/web-build/execution/verify-web-build.mjs",
|
|
"build:web-from-renderer": "node config/scripts/development/web-client/project-renderer-web-client.mjs && node config/scripts/web-build/execution/verify-web-build.mjs",
|
|
"build:mobile-web": "node config/scripts/build/mobile-web-app/build-mobile-web-app-bundle.mjs && node config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs",
|
|
"build:desktop": "pnpm run typecheck && pnpm run build:desktop:assets",
|
|
"build:desktop:ci": "pnpm run typecheck:ci --bun-concurrency=2 --bun-threads=2 && pnpm run build:desktop:assets",
|
|
"build:desktop:assets": "pnpm run build:wsl-guest && pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
|
|
"build": "pnpm run build:desktop && pnpm run build:native",
|
|
"build:release": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
|
|
"build:release:javascript": "pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
|
|
"build:release:javascript:parallel": "pnpm run build:cli && pnpm run build:electron-vite:parallel && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
|
|
"build:release:host": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run verify:built-skills-cli",
|
|
"build:release:parallel": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite:parallel && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
|
|
"postinstall": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/rebuild-native-deps.mjs",
|
|
"rebuild:electron": "node config/scripts/native-build/node-addons/rebuild-native-deps.mjs",
|
|
"reclaim-space": "node config/scripts/worktree-storage/reclaim-worktree-space.mjs",
|
|
"rebuild:node": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node --force",
|
|
"build:unpack": "pnpm run build && pnpm run ensure:electron-runtime && electron-builder --config config/electron-builder.config.cjs --dir",
|
|
"build:win": "pnpm run build:desktop && pnpm run ensure:electron-runtime && electron-builder --config config/electron-builder.config.cjs --win",
|
|
"build:icons": "bash resources/icon-source/generate.sh",
|
|
"build:mac": "pnpm run build:desktop && pnpm run build:computer-macos && pnpm run build:keyboard-layout-macos && pnpm run build:process-footprint-macos && pnpm run build:notification-status-macos && pnpm run ensure:electron-runtime && node config/scripts/desktop-distribution/macos/build-mac-local.mjs",
|
|
"build:mac:release": "node config/scripts/desktop-distribution/macos/verify-macos-release-env.mjs && ORCA_MAC_RELEASE=1 pnpm run build:desktop && ORCA_MAC_RELEASE=1 pnpm run build:computer-macos && ORCA_MAC_RELEASE=1 pnpm run build:keyboard-layout-macos && ORCA_MAC_RELEASE=1 pnpm run build:process-footprint-macos && ORCA_MAC_RELEASE=1 pnpm run build:notification-status-macos && pnpm run ensure:electron-runtime && ORCA_MAC_RELEASE=1 electron-builder --config config/electron-builder.config.cjs --mac",
|
|
"build:linux": "pnpm run build:desktop && pnpm run ensure:electron-runtime && node config/scripts/desktop-distribution/linux/build-linux-local.mjs",
|
|
"test:e2e": "pnpm run ensure:electron-runtime && npx playwright test --config tests/playwright.config.ts --project=electron-headless",
|
|
"test:e2e:workspace-session-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-quit-relaunch-session.spec.ts tests/e2e/golden-terminal-file-link.spec.ts tests/e2e/golden-worktree-create-switch.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:multi-client-navigation": "node config/scripts/ci/e2e-selection/run-multi-client-navigation-e2e.mjs",
|
|
"test:e2e:terminal-layout-parity": "node config/scripts/runtime-verification/terminal-e2e/run-terminal-layout-parity.mjs",
|
|
"test:e2e:floating-mobile-emulator": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/floating-mobile-emulator-tab.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:terminal-rendering-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-raw-emoji-table-scroll-restore.spec.ts --grep @terminal-rendering-golden --config tests/playwright.config.ts --project electron-headless --project electron-headful --workers=1",
|
|
"test:e2e:source-control-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-file-open-edit-save.spec.ts tests/e2e/golden-source-control-commit.spec.ts tests/e2e/golden-source-control-open-diff.spec.ts --grep @golden --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:posix-profile-index-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-posix-profile-index-fsync.spec.ts --grep @posix-profile-index-golden --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:agent-tui-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-agent-tui-launch.spec.ts tests/e2e/golden-shell-after-agent-exit.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:tab-bar-agent-launch-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-tab-bar-agent-launch.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"test:e2e:terminal-rendering-release-evidence": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-opencode-emoji-table-rendering.spec.ts tests/e2e/terminal-long-table-scroll-restore.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=2",
|
|
"test:e2e:terminal-perf": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-typing-latency.spec.ts tests/e2e/terminal-foreground-redraw-freeze.spec.ts tests/e2e/terminal-output-scheduler.spec.ts tests/e2e/terminal-hidden-tui-visual-restore.spec.ts tests/e2e/artificial-opencode-terminal-load.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=2",
|
|
"test:e2e:terminal-perf:scale": "pnpm run ensure:electron-runtime && node config/scripts/runtime-verification/terminal-e2e/run-terminal-scale-perf-e2e.mjs",
|
|
"test:e2e:terminal-perf:scale:report": "pnpm run ensure:electron-runtime && node config/scripts/runtime-verification/terminal-e2e/run-terminal-scale-perf-report-gate.mjs",
|
|
"test:e2e:terminal-perf:check-report": "node config/scripts/performance/terminal-reporting/check-terminal-perf-report-budgets.mjs",
|
|
"test:e2e:terminal-perf:summarize": "node config/scripts/performance/terminal-reporting/summarize-terminal-perf-report.mjs",
|
|
"test:e2e:terminal-perf:html-report": "node config/scripts/performance/terminal-reporting/generate-terminal-perf-html-report.mjs",
|
|
"test:e2e:source-control-scale": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/source-control-large-file-count.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"win-update-e2e": "node tests/tools/win-update-e2e/run.mjs",
|
|
"win-crash-survival-e2e": "node tests/tools/win-crash-survival-e2e/run.mjs",
|
|
"smoke:windows-pty-native-capability": "node tests/tools/windows-pty-native-capability-smoke/run.mjs",
|
|
"test:e2e:headful": "pnpm run ensure:electron-runtime && npx playwright test --config tests/playwright.config.ts --project electron-headful",
|
|
"test:e2e:terminal-ime-native": "node config/scripts/runtime-verification/terminal-e2e/run-terminal-ibus-hangul-e2e.mjs",
|
|
"test:e2e:computer": "vitest run --config tests/e2e/vitest.config.ts",
|
|
"bench:idle-cpu": "pnpm run ensure:electron-runtime && node config/scripts/performance/idle-cpu/run-idle-cpu-benchmark.mjs",
|
|
"bench:spinners": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/spinner-rendering/run.mjs",
|
|
"bench:macos-computer-helper-owner-loss": "node config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-benchmark.mjs",
|
|
"bench:startup": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/startup-time-bench.mjs",
|
|
"bench:daemon-coldstart": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/daemon-coldstart-bench.mjs",
|
|
"bench:wsl-hook-relay-reattach": "pnpm run build:wsl-guest && node config/scripts/performance/wsl-hooks/wsl-hook-relay-reattach-benchmark.mjs",
|
|
"bench:wsl-git-shell": "node config/scripts/performance/wsl-git/wsl-git-shell-benchmark.mjs",
|
|
"bench:hang-watchdog-memory": "pnpm run ensure:electron-runtime && node config/scripts/diagnostics/hang-watchdog/hang-watchdog-memory-benchmark.mjs",
|
|
"bench:main-thread-jank": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/main-thread-jank-bench.mjs",
|
|
"bench:worktree-deletion": "node tests/tools/benchmarks/worktree-deletion-dev-bench.mjs",
|
|
"bench:zustand-selector-fanout": "node config/scripts/performance/renderer-projection/zustand-selector-fanout-benchmark.mjs",
|
|
"bench:agent-inspection-cadence": "node config/scripts/performance/agent-lineage/agent-inspection-cadence-batching-benchmark.mjs",
|
|
"bench:renderer-quadratic-scans": "node config/scripts/performance/renderer-markdown/renderer-quadratic-scan-benchmark.mjs",
|
|
"bench:session-write-hot-path": "node config/scripts/performance/session-transcripts/session-write-hot-path-benchmark.mjs",
|
|
"bench:terminal-partial-escape-tail": "node config/scripts/performance/terminal-stream/terminal-partial-escape-tail-benchmark.mjs",
|
|
"bench:terminal-multiplex-ack-pacing": "node config/scripts/performance/terminal-stream/terminal-multiplex-ack-pacing-benchmark.mjs",
|
|
"bench:worktree-refresh-churn": "node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/performance/source-control/worktree-refresh-churn-benchmark.mjs",
|
|
"bench:cold-park-reveal": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/terminal-cold-park-reveal-bench.mjs",
|
|
"bench:cold-park-resource": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/terminal-cold-park-resource-bench.mjs",
|
|
"bench:compare": "node config/scripts/performance/measurement/compare-benchmark-artifacts.mjs",
|
|
"test:e2e:remote-bulk-open-freeze": "pnpm run ensure:electron-runtime && pnpm exec playwright test tests/e2e/remote-session-bulk-open-freeze-repro.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
|
"repro:live-remote-bulk-open-freeze": "node config/scripts/diagnostics/remote-freeze/live-remote-bulk-open-freeze-repro.mjs",
|
|
"repro:live-remote-realistic-freeze": "node config/scripts/diagnostics/remote-freeze/live-remote-realistic-freeze-repro.mjs",
|
|
"audit:anti-slop": "node config/scripts/static-analysis/oxlint-contracts/sync-anti-slop-plugin.mjs && bun --smol node_modules/oxlint/bin/oxlint --config config/oxlint-anti-slop.json src config tests mobile --deny-warnings",
|
|
"sync:anti-slop-plugin": "node config/scripts/static-analysis/oxlint-contracts/sync-anti-slop-plugin.mjs",
|
|
"build:packages": "node config/scripts/workspace-package-build/build-workspace-packages.mjs",
|
|
"check:process-host-imports": "node config/scripts/static-analysis/process-boundaries/check-process-host-imports.mjs",
|
|
"check:main-sync-spawn-ratchet": "node config/scripts/static-analysis/process-boundaries/check-main-sync-spawn-ratchet.mjs",
|
|
"check:compat-boundary-imports": "node config/scripts/static-analysis/process-boundaries/check-compat-boundary-imports.mjs",
|
|
"check:import-boundaries": "bun config/scripts/static-analysis/process-boundaries/check-import-boundaries.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@anthropic-ai/claude-agent-sdk": "0.3.284",
|
|
"@floating-ui/dom": "1.8.0",
|
|
"@linear/sdk": "^97.0.0",
|
|
"@orca/process-host": "workspace:*",
|
|
"@parcel/watcher": "^2.5.6",
|
|
"@xterm/addon-serialize": "0.15.0-beta.330",
|
|
"@xterm/headless": "6.1.0-beta.334",
|
|
"agent-browser": "~0.39.4",
|
|
"electron-updater": "^6.8.10",
|
|
"fflate": "0.8.3",
|
|
"i18next": "^26.5.11",
|
|
"jsonc-parser": "^3.3.1",
|
|
"mime-types": "3.0.2",
|
|
"node-pty": "^1.1.0",
|
|
"posthog-node": "^5.52.5",
|
|
"proper-lockfile": "4.1.2",
|
|
"qrcode": "^1.5.4",
|
|
"react-i18next": "17.0.19",
|
|
"serve-sim": "0.1.47",
|
|
"smol-toml": "1.9.1",
|
|
"ssh2": "^1.17.0",
|
|
"stream-chain": "4.2.6",
|
|
"stream-json": "3.7.0",
|
|
"tldts": "7.4.18",
|
|
"tweetnacl": "^1.0.3",
|
|
"ws": "^8.22.0",
|
|
"yaml": "^2.9.1",
|
|
"zod": "~4.6.7"
|
|
},
|
|
"devDependencies": {
|
|
"@actions/expressions": "0.3.61",
|
|
"@ast-grep/cli": "0.51.0",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@electron-toolkit/tsconfig": "^2.0.0",
|
|
"@electron/osx-sign": "2.7.0",
|
|
"@electron/rebuild": "^4.2.1",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@noble/hashes": "1.8.0",
|
|
"@oxlint/plugins": "1.89.0",
|
|
"@playwright/test": "^1.64.1",
|
|
"@sanity/diff-match-patch": "^3.2.1",
|
|
"@shadcn/lint": "~0.1.5",
|
|
"@stablyai/playwright-test": "^2.1.16",
|
|
"@tailwindcss/vite": "^4.3.3",
|
|
"@tanstack/react-virtual": "^3.14.13",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.3",
|
|
"@testing-library/user-event": "^14.6.8",
|
|
"@tiptap/extension-code-block": "3.31.3",
|
|
"@tiptap/extension-code-block-lowlight": "3.31.3",
|
|
"@tiptap/extension-details": "3.31.3",
|
|
"@tiptap/extension-image": "3.31.3",
|
|
"@tiptap/extension-link": "3.31.3",
|
|
"@tiptap/extension-list": "3.31.3",
|
|
"@tiptap/extension-mathematics": "3.31.3",
|
|
"@tiptap/extension-placeholder": "3.31.3",
|
|
"@tiptap/extension-table": "3.31.3",
|
|
"@tiptap/markdown": "3.31.3",
|
|
"@tiptap/pm": "3.31.3",
|
|
"@tiptap/react": "3.31.3",
|
|
"@tiptap/starter-kit": "3.31.3",
|
|
"@types/chrome": "0.0.287",
|
|
"@types/hast": "^3.0.4",
|
|
"@types/mdast": "^4.0.4",
|
|
"@types/node": "^24.19.2",
|
|
"@types/proper-lockfile": "^4.1.4",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "~19.2.18",
|
|
"@types/react-dom": "~19.2.7",
|
|
"@types/ssh2": "^1.15.6",
|
|
"@types/ws": "^8.18.2",
|
|
"@vitejs/plugin-react": "^6.1.2",
|
|
"@vscode/ripgrep-universal": "1.18.0",
|
|
"@xterm/addon-fit": "0.12.0-beta.332",
|
|
"@xterm/addon-image": "0.10.0-beta.331",
|
|
"@xterm/addon-ligatures": "0.11.0-beta.330",
|
|
"@xterm/addon-search": "0.17.0-beta.330",
|
|
"@xterm/addon-unicode11": "0.10.0-beta.330",
|
|
"@xterm/addon-web-links": "0.13.0-beta.330",
|
|
"@xterm/addon-webgl": "0.20.0-beta.329",
|
|
"@xterm/xterm": "6.1.0-beta.336",
|
|
"ajv": "8.20.0",
|
|
"bun": "1.4.4",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"devalue": "6.0.3",
|
|
"diff": "8.0.4",
|
|
"dompurify": "3.4.17",
|
|
"electron": "43.8.6",
|
|
"electron-builder": "26.15.3",
|
|
"electron-vite": "^6.0.0",
|
|
"emoji-picker-react": "^4.22.3",
|
|
"emojibase-data": "17.0.0",
|
|
"es-module-lexer": "1.7.0",
|
|
"esbuild": "^0.28.2",
|
|
"github-slugger": "2.0.0",
|
|
"graphql": "16.14.2",
|
|
"happy-dom": "^21.0.4",
|
|
"hast-util-from-html-isomorphic": "2.0.0",
|
|
"hast-util-to-jsx-runtime": "2.3.6",
|
|
"hast-util-to-text": "4.0.2",
|
|
"html-to-image": "^1.11.13",
|
|
"husky": "^9.1.7",
|
|
"i18next-cli": "1.74.2",
|
|
"katex": "0.18.10",
|
|
"lint-staged": "^16.4.0",
|
|
"lowlight": "^3.3.0",
|
|
"lucide-react": "^0.577.0",
|
|
"marked": "^17.0.1",
|
|
"mermaid": "^11.17.2",
|
|
"monaco-editor": "^0.55.1",
|
|
"node-gyp": "12.3.0",
|
|
"oxc-transform-react": "~0.152.0",
|
|
"oxfmt": "^0.74.0",
|
|
"oxlint": "^1.89.0",
|
|
"oxlint-plugin-anti-slop": "github:dmmulroy/anti-slop#c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b",
|
|
"oxlint-plugin-react-doctor": "0.9.14",
|
|
"oxlint-tsgolint": "7.0.2005",
|
|
"pdfjs-dist": "^6.3.289",
|
|
"playwright-core": "1.64.1",
|
|
"pngjs": "^7.0.0",
|
|
"radix-ui": "^1.6.7",
|
|
"react": "~19.2.8",
|
|
"react-colorful": "^5.7.0",
|
|
"react-dom": "~19.2.8",
|
|
"react-grab": "^0.1.33",
|
|
"react-markdown": "^10.1.0",
|
|
"rehype-highlight": "^7.0.2",
|
|
"rehype-katex": "^7.0.1",
|
|
"rehype-raw": "^7.0.0",
|
|
"rehype-sanitize": "^6.0.0",
|
|
"rehype-slug": "^6.0.0",
|
|
"remark-breaks": "^4.0.0",
|
|
"remark-cjk-friendly": "^2.3.1",
|
|
"remark-frontmatter": "^5.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"remark-math": "^6.0.0",
|
|
"remark-parse": "^11.0.0",
|
|
"remark-rehype": "11.1.2",
|
|
"remend": "1.4.0",
|
|
"shiki": "4.5.0",
|
|
"sonner": "2.0.7",
|
|
"sucrase": "3.35.1",
|
|
"tailwind-merge": "^3.7.0",
|
|
"tailwindcss": "^4.3.3",
|
|
"tar": "7.5.22",
|
|
"tsrs": "0.18.0-ts7.1.0-dev.20260929",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^7.0.2",
|
|
"typescript-api": "npm:typescript@6.0.3",
|
|
"unified": "^11.0.5",
|
|
"unist-util-visit-parents": "6.0.2",
|
|
"vite": "^8.3.5",
|
|
"vitest": "5.0.5",
|
|
"vscode-oniguruma": "^2.0.1",
|
|
"zustand": "^5.0.15"
|
|
},
|
|
"optionalDependencies": {
|
|
"@orca/windows-registry": "workspace:*",
|
|
"@orca/windows-security": "workspace:*",
|
|
"@vscode/windows-process-tree": "0.8.0",
|
|
"sherpa-onnx-darwin-arm64": "1.12.37",
|
|
"sherpa-onnx-darwin-x64": "1.12.37",
|
|
"sherpa-onnx-linux-arm64": "1.12.37",
|
|
"sherpa-onnx-linux-x64": "1.12.37",
|
|
"sherpa-onnx-win-x64": "1.12.37"
|
|
},
|
|
"lint-staged": {
|
|
"{*.{ts,tsx,js,jsx,mjs,mts,cts},!(cloud)/**/*.{ts,tsx,js,jsx,mjs,mts,cts}}": [
|
|
"oxlint --no-error-on-unmatched-pattern",
|
|
"oxlint --config config/oxlint-js-plugins.json",
|
|
"ast-grep scan --config config/sgconfig.yml --min-severity warning",
|
|
"oxlint --config config/oxlint-react-doctor.json",
|
|
"oxfmt --write --no-error-on-unmatched-pattern"
|
|
],
|
|
"{*.{json,css,md,mdx,yml,yaml},!(cloud)/**/*.{json,css,md,mdx,yml,yaml}}": [
|
|
"oxfmt --write --no-error-on-unmatched-pattern"
|
|
]
|
|
},
|
|
"engines": {
|
|
"node": "24"
|
|
},
|
|
"packageManager": "pnpm@12.14.0+sha512.c18ba6d87993d3d164cb5e8948f32b2c06ee854487e06cd8d86781342fb3e5bb4634367034711e86802baa9c37bea906ce1929ad08d70884c97d801df13389a6",
|
|
"reactDoctor": {
|
|
"ignore": {
|
|
"overrides": [
|
|
{
|
|
"files": [
|
|
"resources/plugins/declarative/*.mjs"
|
|
],
|
|
"rules": [
|
|
"eslint/max-lines"
|
|
]
|
|
},
|
|
{
|
|
"files": [
|
|
"src/renderer/src/components/editor/combined-diff/review-controls/use-combined-diff-view-preferences.ts"
|
|
],
|
|
"rules": [
|
|
"react-doctor/no-derived-state-effect"
|
|
]
|
|
},
|
|
{
|
|
"files": [
|
|
"src/renderer/src/components/task-page/github/use-task-page-github-issue-draft.ts",
|
|
"src/renderer/src/components/task-page/jira/use-task-page-jira-creation-state.ts"
|
|
],
|
|
"rules": [
|
|
"react-doctor/no-adjust-state-on-prop-change"
|
|
]
|
|
},
|
|
{
|
|
"files": [
|
|
"src/renderer/src/components/editor/combined-diff/browse-files/use-combined-diff-tree-navigation.ts",
|
|
"src/renderer/src/components/editor/combined-diff/load-sections/combined-diff-section-load-registry.ts",
|
|
"src/renderer/src/components/editor/combined-diff/review-controls/use-combined-diff-section-actions.ts"
|
|
],
|
|
"rules": [
|
|
"react-doctor/no-ref-current-in-render"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"rules": {
|
|
"react-doctor/js-combine-iterations": "off",
|
|
"react-doctor/no-initialize-state": "off",
|
|
"react-doctor/no-unstable-nested-components": "off"
|
|
}
|
|
}
|
|
}
|