mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-17 16:37:43 +00:00
* chore(deps): pin npm version to remove lockfile drift Contributors on npm 10 (Node 22's bundled default) vs npm 11 reconcile the app-builder-lib.minimatch override differently, rewriting package-lock.json on npm install. Pin npm 11.7.0 via the standard packageManager field (Corepack) and complete the existing volta block so volta users pick it up automatically. Ref: discussion #8869 * chore: stop tracking .claude/skills symlink (runtime-managed) The Claude Code runtime scaffolds .claude/ each session and materializes .claude/skills as a real directory, clobbering the committed symlink (-> ../.agents/skills). Git then reported a perpetual 'D .claude/skills' in every worktree/session. Skill sources remain tracked under .agents/skills/; let the runtime own .claude/skills and ignore it via the existing /.claude/* rule. * fix(config): restore day-start offset after operation replay Reconcile DateService and app-state from config after incremental or full-state bulk replay without re-minting persistent task operations. Fixes #8890 * fix(sync): replay full-state operations through reducers Normalize canonical full-state operation types to LOAD_ALL_DATA during replay while preserving their original operation metadata. This lets repair and legacy backup operations install state through the existing reducers.
369 lines
23 KiB
JSON
369 lines
23 KiB
JSON
{
|
|
"name": "superProductivity",
|
|
"version": "18.13.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 tools/android-dev-version-code.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.4.1",
|
|
"@capacitor/keyboard": "8.0.5",
|
|
"@capacitor/status-bar": "^8.0.2",
|
|
"@material-symbols/font-400": "^0.45.5",
|
|
"@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",
|
|
"postal-mime": "^2.7.4",
|
|
"uuidv7": "^1.2.1"
|
|
},
|
|
"devDependencies": {
|
|
"@angular-devkit/build-angular": "^21.2.17",
|
|
"@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.17",
|
|
"@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.4.1",
|
|
"@capacitor/app": "^8.1.0",
|
|
"@capacitor/cli": "^8.4.1",
|
|
"@capacitor/core": "^8.4.1",
|
|
"@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.1",
|
|
"@ngrx/entity": "^21.1.1",
|
|
"@ngrx/schematics": "^21.1.1",
|
|
"@ngrx/store": "21.1.1",
|
|
"@ngrx/store-devtools": "^21.1.1",
|
|
"@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.17",
|
|
"@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": "63.0.10",
|
|
"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": "^18.0.5",
|
|
"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.5"
|
|
},
|
|
"@angular-devkit/build-angular": {
|
|
"http-proxy-middleware": "3.0.7"
|
|
},
|
|
"webpack-dev-server": {
|
|
"http-proxy-middleware": "2.0.10"
|
|
},
|
|
"@angular/build": {
|
|
"undici": "7.28.0"
|
|
},
|
|
"node-gyp": {
|
|
"undici": "6.27.0"
|
|
},
|
|
"sockjs": {
|
|
"uuid": "11.1.1"
|
|
},
|
|
"@babel/core": "7.29.7",
|
|
"ws": "8.21.0"
|
|
},
|
|
"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"
|
|
}
|
|
],
|
|
"packageManager": "npm@11.7.0",
|
|
"volta": {
|
|
"node": "22.18.0",
|
|
"npm": "11.7.0"
|
|
}
|
|
}
|