super-productivity/package.json
Johannes Millan 762fd3baab fix(release-notes): strip non-Apple platform references from App Store What's New
App Review guideline 2.3.10 rejected the macOS 18.12.0 build because its
What's New text mentioned Android (carried over from the shared GitHub
changelog, which also lists Linux/GNOME desktop fixes). The Apple deliver
prep stripped markdown but never filtered platform-specific lines, so the
same rejection would recur on every release with an Android/Linux commit.

Add stripOtherPlatformLines() to the App Store prep step: drop any changelog
line naming a non-Apple platform (bullets, headings, and intro prose, so the
AI generation path can't leak a name either) and remove any section heading
left empty, logging each dropped line. The GitHub and Play Store changelogs
are unaffected. Refactor the script to export its logic and add tests.
2026-06-25 16:10:33 +02:00

350 lines
23 KiB
JSON

{
"name": "superProductivity",
"version": "18.12.1",
"description": "ToDo list and Time Tracking",
"keywords": [
"ToDo",
"Task Management",
"Jira",
"GitHub",
"Time Tracking"
],
"homepage": "https://super-productivity.com",
"repository": {
"type": "git",
"url": "git://github.com/super-productivity/super-productivity.git"
},
"license": "MIT",
"author": "Johannes Millan <contact@super-productivity.com> (http://super-productivity.com)",
"main": "./electron/main.js",
"scripts": {
"env": "node ./tools/load-env.js",
"assemble:android:prod": "cd android && ./gradlew assembleRelease && cd ..",
"assemble:android:stage": "cd android && ./gradlew assembleDebug && cd ..",
"prebuild": "npm run env && node ./tools/git-version.js && npm run build:packages",
"postinstall": "patch-package",
"prepare": "husky && ts-patch install && npm run env && npm run sync-core:build && npm run sync-providers:build && npm run shared-schema:build && npm run plugin-api:build",
"build": "npm run buildAllElectron:noTests:prod",
"build:packages": "node ./packages/build-packages.js",
"buildAllElectron:noTests:prod": "npm run lint && npm run buildFrontend:prod:es6 && npm run electron:build",
"buildAllElectron:prod": "npm run env && npm run preCheck && npm run buildFrontend:prod:es6 && npm run electron:build",
"buildAllElectron:stage": "npm run preCheck && npm run buildFrontend:stage:es6 && npm run electron:build",
"buildFrontend:dev": "npm run env && ng build --configuration development",
"buildFrontend:prod:es6": "npm run prebuild && cross-env BROWSERSLIST_ENV='modern' ng build --configuration production && npm run removeWOFF1",
"buildFrontend:prod:watch": "npm run prebuild && ng build --configuration production --watch",
"buildFrontend:prodWeb": "npm run prebuild && ng build --configuration productionWeb",
"buildFrontend:stage:es6": "npm run prebuild && cross-env BROWSERSLIST_ENV='modern' ng build --configuration stage && npm run removeWOFF1",
"buildFrontend:stageWeb": "npm run prebuild && ng build --configuration stageWeb",
"buildFrontend:stageWeb:unminified": "npm run prebuild && ng build --configuration stageWeb --optimization=false --aot=false",
"dist": "npm run buildAllElectron:prod && electron-builder",
"dist:android": "npm run buildFrontend:stageWeb:unminified && npm run sync:android && npm run assemble:android:stage && echo 'Staging Android APK generated at android/app/build/outputs/apk/debug/'",
"dist:android:prod": "npm run buildFrontend:prodWeb && npm run sync:android && npm run assemble:android:prod && echo 'Production Android APK generated at android/app/build/outputs/apk/release/'",
"dist:linuxAndWin": "npm run buildAllElectron:prod && electron-builder --linux --win",
"dist:mac:dl": "cp tools/mac-profiles/dl.provisionprofile embedded.provisionprofile && electron-builder --mac",
"dist:mac:mas": "cp tools/mac-profiles/mas.provisionprofile embedded.provisionprofile; electron-builder --mac mas --config=build/electron-builder.mas.yaml",
"dist:mac:mas:buildOnly": "electron-builder --config=build/electron-builder.mas.yaml",
"dist:mac:mas:dev": "cp tools/mac-profiles/mas-dev.provisionprofile embedded.provisionprofile; electron-builder --mac mas-dev --config=build/electron-builder.mas-dev.yaml",
"dist:mac:mas:x64": "cp tools/mac-profiles/mas.provisionprofile embedded.provisionprofile; electron-builder --mac mas --config=build/electron-builder.mas.yaml --x64",
"dist:only": "electron-builder",
"dist:win": "npm run buildAllElectron:noTests:prod && electron-builder --win",
"dist:win:appx": "npm run buildAllElectron:prod && electron-builder --win --config=build/electron-builder.appx.yaml",
"dist:win:only": "electron-builder --win",
"dist:win:store": "git pull && npm run && copy electron-builder.win-store.yaml electron-builder.yaml && npm run dist:win && git checkout electron-builder.yaml || git checkout electron-builder.yaml",
"droid": "npm run buildFrontend:stageWeb:unminified && npx cap sync android",
"buildFrontend:e2e": "npm run plugins:build && npm run env && ng build",
"serveFrontend:e2e:prod": "npx http-server .tmp/angular-dist/browser -p 4242 -c-1 --proxy http://localhost:4242?",
"e2e": "npm run e2e:all -- --grep-invert \"@supersync|@webdav\"",
"e2e:all": "npx playwright test --config e2e/playwright.config.ts --reporter=line",
"e2e:ci": "npm run e2e",
"e2e:ui": "npx playwright test --config e2e/playwright.config.ts --ui",
"e2e:file": "npx playwright test --config e2e/playwright.config.ts --reporter=list",
"e2e:debug": "npx playwright test --config e2e/playwright.config.ts --debug",
"e2e:headed": "npx playwright test --config e2e/playwright.config.ts --headed",
"e2e:show-report": "npx playwright show-report .tmp/e2e-test-results/playwright-report",
"e2e:report": "PLAYWRIGHT_HTML_REPORT=1 npx playwright test --config e2e/playwright.config.ts",
"e2e:webdav": "sh -c 'docker compose up -d webdav && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true npm run e2e:all -- --grep @webdav \"$@\"; EXIT_CODE=$?; docker compose down; exit $EXIT_CODE' --",
"e2e:webdav:file": "sh -c 'docker compose up -d webdav && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true E2E_VERBOSE=true npx playwright test --config e2e/playwright.config.ts --reporter=list \"$@\"; EXIT_CODE=$?; docker compose down; exit $EXIT_CODE' --",
"e2e:supersync": "sh -c 'docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_SUPERSYNC=true npm run e2e:all -- --grep @supersync --workers=3 \"$@\"; EXIT_CODE=$?; docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down supersync; exit $EXIT_CODE' --",
"e2e:supersync:file": "sh -c 'docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_SUPERSYNC=true E2E_VERBOSE=true npx playwright test --config e2e/playwright.config.ts --reporter=list --workers=3 \"$@\"; EXIT_CODE=$?; docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down supersync; exit $EXIT_CODE' --",
"supersync:up": "docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh",
"supersync:down": "docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down supersync",
"e2e:docker": "docker compose -f docker-compose.e2e.yaml up -d app && ./scripts/wait-for-app.sh && E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml down; exit $EXIT_CODE",
"e2e:docker:webdav": "docker compose -f docker-compose.e2e.yaml up -d app webdav && ./scripts/wait-for-app.sh && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e:all -- --grep @webdav; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml down; exit $EXIT_CODE",
"e2e:docker:all": "docker compose -f docker-compose.e2e.yaml -f docker-compose.yaml -f docker-compose.supersync.yaml up -d app webdav db supersync && ./scripts/wait-for-app.sh && ./scripts/wait-for-webdav.sh && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_WEBDAV=true E2E_REQUIRE_SUPERSYNC=true E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e:all -- --workers=6; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml -f docker-compose.yaml -f docker-compose.supersync.yaml down; exit $EXIT_CODE",
"screenshots": "npm run screenshots:capture && npm run screenshots:build",
"screenshots:capture": "npx playwright test --config e2e/playwright.store-screenshots.config.ts",
"screenshots:capture:desktop": "npx playwright test --config e2e/playwright.store-screenshots.config.ts --project=desktopMaster",
"screenshots:capture:mobile": "npx playwright test --config e2e/playwright.store-screenshots.config.ts --project=iphone69 --project=ipad13 --project=androidPhone --project=android7Tablet --project=android10Tablet",
"screenshots:build": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\"}' npx ts-node --transpile-only e2e/store-screenshots/build-store-assets.ts",
"screenshots:build:flathub": "SP_SCREENSHOTS_STORE=flathub npm run screenshots:build",
"screenshots:capture:electron": "npm run electron:build && SCREENSHOT_MODE=electron npx playwright test --config e2e/playwright.store-screenshots.electron.config.ts",
"screenshots:capture:flathub": "SP_SCREENSHOT_BG_DISABLE=1 npm run screenshots:capture:electron",
"screenshots:electron": "npm run screenshots:capture:electron && npm run screenshots:build",
"screenshots:flathub": "npm run screenshots:capture:flathub && npm run screenshots:build:flathub",
"video": "npm run video:capture && npm run video:build && npm run video:open",
"video:capture": "npx playwright test --config e2e/playwright.store-video.config.ts",
"video:build": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\"}' npx ts-node --transpile-only e2e/store-video/build-video.ts",
"video:open": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\"}' npx ts-node --transpile-only e2e/store-video/open-video.ts",
"video:full": "cross-env REEL_VARIANT=full npm run video",
"video:ms-store": "cross-env REEL_VARIANT=ms-store npm run video",
"video:shorts": "cross-env REEL_VARIANT=shorts npm run video",
"video:keyboard": "cross-env REEL_VARIANT=keyboard npm run video",
"video:mobile": "cross-env REEL_VARIANT=mobile npm run video",
"electron": "NODE_ENV=PROD electron .",
"electron:build": "node ./tools/build-wayland-idle-helper.js && tsc -p electron/tsconfig.electron.json && node electron/scripts/bundle-preload.js",
"electron:verify-asar": "node tools/verify-electron-requires.js .tmp/app-builds/linux-unpacked/resources/app.asar",
"electron:watch": "tsc -p electron/tsconfig.electron.json --watch",
"electronBuilderOnly": "electron-builder",
"empty": "echo 'EMPTY YEAH'",
"install:android": "adb install -r android/app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk && echo 'Staging APK installed successfully.'",
"install:android:prod": "adb install -r android/app/build/outputs/apk/fdroid/release/app-fdroid-release.apk && echo 'Production APK installed successfully.'",
"int": "node ./tools/extract-i18n-single.js",
"int:clean": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json --clean --sort --format namespaced-json --marker _",
"int:find": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json --sort --format namespaced-json --marker _",
"int:test": "node ./tools/test-lng-files.js",
"int:unused": "node ./tools/find-unused-translations.js",
"int:watch": "node ./tools/extract-i18n-watch.js",
"lint": "npm run lint:ts && npm run lint:scss && npm run test:lint-rules",
"test:lint-rules": "node eslint-local-rules/run-specs.js",
"lint:ts": "ng lint",
"lint:scss": "stylelint \"**/*.scss\" -- --custom-formatter @csstools/stylelint-formatter-github",
"localInstall": "sudo echo 'Starting local install' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildAllElectron:stage && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
"localInstall:mac": "sudo echo 'Starting local install MAC. Don`t forget APPLEID & APPLEIDPASS !!' && npm run buildAllElectron:noTests:prod && sudo echo '' && electron-builder && sudo cp -rf .tmp/app-builds/mac/superProductivity.app/ /Applications/superProductivity.app",
"localInstall:prod": "sudo echo 'Starting local install PROD' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildAllElectron:prod && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
"localInstall:quick": "sudo echo 'Starting local install QUICK' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildFrontend:stage:es6 && npm run electron:build && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
"localInstall:test:snap": "sudo echo 'Starting local install SNAP QUICK' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildFrontend:stage:es6 && npm run electron:build && electron-builder --linux snap && sudo snap install --dangerous .tmp/app-builds/superProductivity*.snap",
"ng": "ng",
"pack": "electron-builder --dir",
"preCheck": "npm run lint && npm run test & npm run int:test && npm run e2e",
"release": "npm run dist",
"removeWOFF1": "node ./tools/remove-woff.js",
"serveProd": "node ./tools/load-env.js --ensure && ng serve --configuration production",
"start": "npm run electron:build && cross-env NODE_ENV=DEV electron .",
"serve": "node ./tools/load-env.js --ensure && ng serve",
"startFrontend": "npm run env && ng serve",
"startFrontend:e2e": "npm run env && ng serve --port=4242",
"startFrontend:prod": "npm run env && ng serve --configuration production",
"startFrontend:stage": "npm run env && ng serve --configuration stage",
"generate:ios-icon": "node tools/generate-ios-icon.js",
"sync:android": "npx cap sync android",
"sync:ios": "npx cap sync ios",
"dist:ios:prod": "npm run buildFrontend:prodWeb && npm run sync:ios",
"stats": "ng build --configuration production --source-map --stats-json && npx esbuild-visualizer --metadata .tmp/angular-dist/stats.json && xdg-open stats.html",
"test": "npm run packages:test && npm run release-notes:test && cross-env TZ='Europe/Berlin' ng test --watch=false && npm run test:tz:ci",
"test:once": "cross-env TZ='Europe/Berlin' ng test --watch=false",
"test:watch": "cross-env TZ='Europe/Berlin' ng test --browsers ChromeHeadless",
"test:tz:ci": "npm run test:tz:la",
"test:tz:la": "cross-env TZ='America/Los_Angeles' ng test --watch=false --include='**/*.spec.ts'",
"test:tz:tokyo": "cross-env TZ='Asia/Tokyo' ng test --watch=false --include='**/*.spec.ts'",
"test:tz:sydney": "cross-env TZ='Australia/Sydney' ng test --watch=false --include='**/*.spec.ts'",
"test:tz:utc": "cross-env TZ='UTC' ng test --watch=false --include='**/*.spec.ts'",
"test:tz:all": "npm run test && npm run test:tz:la && npm run test:tz:tokyo && npm run test:tz:sydney && npm run test:tz:utc",
"test:date-utils": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/util/**/format-*.spec.ts' --include='src/app/util/**/date-*.spec.ts'",
"test:date-utils:tz": "npm run test:date-utils && cross-env TZ='America/Los_Angeles' npm run test:date-utils && cross-env TZ='Asia/Tokyo' npm run test:date-utils",
"version": "npm run prebuild && node ./tools/bump-android-version.js && git add -A",
"version:ai:codex": "cross-env SP_RELEASE_NOTES_AI=codex npm version",
"version:ai:claude": "cross-env SP_RELEASE_NOTES_AI=claude npm version",
"prettier": "pretty-quick",
"prettier:file": "prettier --write",
"lint:file": "ng lint --lint-file-patterns",
"test:file": "cross-env TZ='Europe/Berlin' ng test --watch=false --include",
"test:electron": "node --test electron/*.test.cjs",
"test:fast": "cross-env TZ='Europe/Berlin' NODE_OPTIONS='--max-old-space-size=4096' ng test --watch=false --no-code-coverage --source-map=false",
"test:fast:watch": "cross-env TZ='Europe/Berlin' NODE_OPTIONS='--max-old-space-size=4096' ng test --browsers ChromeHeadless --no-code-coverage --source-map=false",
"test:shard:features": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/features/**/*.spec.ts'",
"test:shard:ui": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/ui/**/*.spec.ts'",
"test:shard:core": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/core/**/*.spec.ts'",
"test:shard:util": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/util/**/*.spec.ts'",
"checkFile": "node tools/check-file.js",
"release-notes:generate": "node ./tools/release-notes.js generate",
"release-notes:generate:codex": "cross-env SP_RELEASE_NOTES_AI=codex node ./tools/release-notes.js generate",
"release-notes:generate:claude": "cross-env SP_RELEASE_NOTES_AI=claude node ./tools/release-notes.js generate",
"release-notes:prepare-play-store": "node ./tools/release-notes.js prepare-play-store",
"release-notes:test": "node --test tools/release-notes.test.js tools/prepare-appstore-release-notes.test.js",
"clean:translations": "node ./tools/clean-translations.js",
"plugin-api:build": "cd packages/plugin-api && npm run build",
"packages:test": "npm run sync-core:test && npm run sync-providers:test",
"sync-core:build": "cd packages/sync-core && npm run build",
"sync-core:test": "cd packages/sync-core && npm test",
"sync-providers:build": "cd packages/sync-providers && npm run build",
"sync-providers:test": "cd packages/sync-providers && npm test",
"shared-schema:build": "cd packages/shared-schema && npm run build",
"plugin-api:build:watch": "cd packages/plugin-api && npm run build:watch",
"vite-plugin:build": "cd packages/vite-plugin && npm run build",
"plugins:build": "npm run plugin-api:build && npm run vite-plugin:build && cd packages/plugin-dev && npm run build:all",
"plugins:build:silent": "npm run vite-plugin:build && cd packages/plugin-dev && npm run build:all:silent"
},
"resolutions": {
"sass": "1.32.6",
"@ctrl/tinycolor": "4.1.0"
},
"dependencies": {
"@capacitor/browser": "^8.0.3",
"@capacitor/ios": "^8.3.4",
"@capacitor/keyboard": "8.0.1",
"@capacitor/status-bar": "^8.0.2",
"@material-symbols/font-400": "^0.44.10",
"@noble/ciphers": "^2.2.0",
"capacitor-plugin-safe-area": "^5.0.0",
"electron-dl": "^3.5.2",
"electron-localshortcut": "^3.2.1",
"electron-log": "^5.4.3",
"electron-window-state": "^5.0.3",
"hash-wasm": "^4.12.0",
"https-proxy-agent": "^7.0.0",
"node-fetch": "^2.7.0",
"uuidv7": "^1.2.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^21.2.15",
"@angular-eslint/builder": "^21.3.1",
"@angular-eslint/eslint-plugin": "^21.3.1",
"@angular-eslint/eslint-plugin-template": "^21.3.1",
"@angular-eslint/schematics": "^21.3.1",
"@angular-eslint/template-parser": "^21.3.1",
"@angular/animations": "^21.2.17",
"@angular/cdk": "^21.2.9",
"@angular/cli": "^21.2.15",
"@angular/common": "^21.2.17",
"@angular/compiler": "^21.2.17",
"@angular/compiler-cli": "^21.2.17",
"@angular/core": "^21.2.17",
"@angular/forms": "^21.2.17",
"@angular/language-service": "^21.2.17",
"@angular/material": "^21.2.9",
"@angular/platform-browser": "^21.2.17",
"@angular/platform-browser-dynamic": "^21.2.17",
"@angular/platform-server": "^21.2.17",
"@angular/router": "^21.2.17",
"@angular/service-worker": "^21.2.17",
"@capacitor/android": "^8.3.4",
"@capacitor/app": "^8.1.0",
"@capacitor/cli": "^8.3.4",
"@capacitor/core": "^8.3.4",
"@capacitor/filesystem": "^8.1.2",
"@capacitor/local-notifications": "^8.2.0",
"@capacitor/share": "^8.0.1",
"@capawesome/capacitor-android-dark-mode-support": "^8.0.1",
"@capawesome/capacitor-background-task": "^8.0.2",
"@csstools/stylelint-formatter-github": "^2.0.0",
"@dotenv-run/cli": "^1.3.6",
"@electron/notarize": "^3.1.1",
"@eslint/js": "^9.39.2",
"@fontsource/open-sans": "^5.2.7",
"@nextcloud/cdav-library": "^1.5.3",
"@ngrx/effects": "^21.1.0",
"@ngrx/entity": "^21.1.0",
"@ngrx/schematics": "^21.1.0",
"@ngrx/store": "21.1.0",
"@ngrx/store-devtools": "^21.1.0",
"@ngx-formly/core": "^7.1.0",
"@ngx-formly/material": "^7.1.0",
"@ngx-translate/core": "^17.0.0",
"@ngx-translate/http-loader": "^17.0.0",
"@playwright/test": "^1.59.1",
"@schematics/angular": "^21.2.13",
"@types/electron": "^1.6.12",
"@types/electron-localshortcut": "^3.1.3",
"@types/file-saver": "^2.0.7",
"@types/jasmine": "^6.0.0",
"@types/jasminewd2": "~2.0.13",
"@types/node": "^22.19.17",
"@types/node-fetch": "^2.6.13",
"@types/object-path": "^0.11.4",
"@typescript-eslint/types": "^8.59.1",
"@typescript-eslint/utils": "^8.59.1",
"angular-eslint": "^21.3.1",
"angular-material-css-vars": "^10.0.0",
"baseline-browser-mapping": "^2.10.24",
"canvas-confetti": "^1.9.4",
"chai": "^6.2.2",
"chart.js": "^4.5.1",
"chrono-node": "^2.9.0",
"clipboard": "^2.0.11",
"core-js": "^3.49.0",
"cross-env": "^10.1.0",
"detect-it": "^4.0.1",
"dotenv": "^17.4.2",
"electron": "41.4.0",
"electron-builder": "^26.8.1",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsdoc": "62.9.0",
"eslint-plugin-local-rules": "^3.0.2",
"eslint-plugin-prefer-arrow": "1.2.3",
"eslint-plugin-prettier": "^5.5.5",
"fake-indexeddb": "^6.2.5",
"fflate": "^0.8.2",
"file-saver": "^2.0.5",
"fs-extra": "^11.3.4",
"glob": "^13.0.6",
"http-server": "^14.1.1",
"husky": "^9.1.7",
"ical.js": "^2.2.1",
"idb": "^8.0.3",
"jasmine-core": "^6.2.0",
"jasmine-marbles": "^0.9.2",
"jasmine-spec-reporter": "~7.0.0",
"karma": "~6.4.4",
"karma-chrome-launcher": "~3.2.0",
"karma-cli": "^2.0.0",
"karma-coverage-istanbul-reporter": "~3.0.3",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^2.2.0",
"karma-spec-reporter": "^0.0.36",
"marked": "^17.0.1",
"nanoid": "^5.1.11",
"new-github-issue-url": "^1.1.0",
"ng2-charts": "^10.0.0",
"ngx-markdown": "^21.2.0",
"patch-package": "^8.0.0",
"playwright": "^1.59.1",
"prettier": "^3.8.3",
"pretty-quick": "^4.2.2",
"query-string": "^7.1.3",
"rxjs": "^7.8.2",
"shepherd.js": "^11.2.0",
"sql.js": "^1.14.1",
"stacktrace-js": "^2.0.2",
"start-server-and-test": "^2.1.3",
"stylelint": "^17.9.1",
"stylelint-config-recommended-scss": "^17.0.1",
"ts-node": "~10.9.2",
"ts-patch": "^3.3.0",
"tslib": "^2.8.1",
"typescript": "~5.9.3",
"typescript-eslint": "^8.59.1",
"typia": "^12.0.2"
},
"overrides": {
"app-builder-lib": {
"minimatch": "10.2.5"
},
"@electron/asar": {
"minimatch": "3.1.2"
},
"webpack-dev-server": "5.2.4"
},
"optionalDependencies": {
"@lmdb/lmdb-darwin-x64": "^3.5.4",
"@lmdb/lmdb-linux-x64": "^3.5.4",
"@lmdb/lmdb-win32-x64": "^3.5.4",
"@rollup/rollup-darwin-x64": "4.60.2",
"@rollup/rollup-linux-x64-gnu": "4.60.2",
"@rollup/rollup-win32-x64-msvc": "4.60.2"
},
"workspaces": [
"packages/*"
],
"publish": [
{
"provider": "github",
"repo": "super-productivity",
"owner": "johannesjo"
}
],
"volta": {
"node": "22.18.0"
}
}