{ "name": "subminer", "version": "0.1.0", "description": "All-in-one sentence mining overlay with AnkiConnect and dictionary integration", "main": "dist/main.js", "scripts": { "build": "tsc && cp src/renderer/index.html src/renderer/style.css dist/renderer/", "check:main-lines": "bash scripts/check-main-lines.sh", "check:main-lines:baseline": "bash scripts/check-main-lines.sh 5300", "check:main-lines:gate1": "bash scripts/check-main-lines.sh 4500", "check:main-lines:gate2": "bash scripts/check-main-lines.sh 3500", "check:main-lines:gate3": "bash scripts/check-main-lines.sh 2500", "check:main-lines:gate4": "bash scripts/check-main-lines.sh 1800", "check:main-lines:gate5": "bash scripts/check-main-lines.sh 1500", "docs:dev": "vitepress dev docs --host 0.0.0.0 --port 5173 --strictPort", "docs:build": "vitepress build docs", "docs:preview": "vitepress preview docs --host 0.0.0.0 --port 4173 --strictPort", "test:config": "pnpm run build && node --test dist/config/config.test.js", "test:core": "pnpm run build && node --test dist/cli/args.test.js dist/cli/help.test.js dist/core/services/cli-command-service.test.js dist/core/services/numeric-shortcut-session-service.test.js dist/core/services/secondary-subtitle-service.test.js dist/core/services/mpv-render-metrics-service.test.js dist/core/services/mpv-runtime-service.test.js dist/core/services/runtime-options-runtime-service.test.js dist/core/services/overlay-modal-restore-service.test.js dist/core/services/runtime-config-service.test.js dist/core/services/overlay-bridge-runtime-service.test.js dist/core/services/overlay-visibility-facade-service.test.js dist/core/services/overlay-broadcast-runtime-service.test.js dist/core/services/app-ready-runtime-service.test.js dist/core/services/app-shutdown-runtime-service.test.js dist/core/services/mpv-client-deps-runtime-service.test.js dist/core/services/app-lifecycle-deps-runtime-service.test.js dist/core/services/runtime-options-manager-runtime-service.test.js dist/core/services/config-warning-runtime-service.test.js dist/core/services/app-logging-runtime-service.test.js dist/core/services/startup-resource-runtime-service.test.js dist/core/services/config-generation-runtime-service.test.js", "test:subtitle": "pnpm run build && node --test dist/subtitle/stages.test.js dist/subtitle/pipeline.test.js", "generate:config-example": "pnpm run build && node dist/generate-config-example.js", "start": "pnpm run build && electron . --start", "dev": "pnpm run build && electron . --start --dev", "stop": "electron . --stop", "toggle": "electron . --toggle", "build:appimage": "pnpm run build && electron-builder --linux AppImage", "build:mac": "pnpm run build && electron-builder --mac dmg zip", "build:mac:unsigned": "pnpm run build && env -u APPLE_ID -u APPLE_APP_SPECIFIC_PASSWORD -u APPLE_TEAM_ID -u CSC_LINK -u CSC_KEY_PASSWORD CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --mac dmg zip", "build:mac:zip": "pnpm run build && electron-builder --mac zip" }, "keywords": [ "anki", "ankiconnect", "sentence-mining", "japanese", "subtitles", "overlay", "mpv", "yomitan" ], "author": "", "license": "GPL-3.0-or-later", "dependencies": { "axios": "^1.13.5", "jsonc-parser": "^3.3.1", "ws": "^8.19.0", "@catppuccin/vitepress": "^0.1.2" }, "devDependencies": { "@types/node": "^25.2.2", "@types/ws": "^8.18.1", "electron": "^37.10.3", "electron-builder": "^26.7.0", "typescript": "^5.9.3", "vitepress": "^1.6.3" }, "build": { "appId": "com.sudacode.SubMiner", "productName": "SubMiner", "executableName": "SubMiner", "artifactName": "SubMiner-${version}.${ext}", "icon": "assets/SubMiner.png", "directories": { "output": "release" }, "linux": { "target": [ "AppImage" ], "category": "AudioVideo" }, "mac": { "target": [ "dmg", "zip" ], "category": "public.app-category.video", "icon": "assets/SubMiner.png", "hardenedRuntime": true, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist" }, "files": [ "dist/**/*", "vendor/texthooker-ui/docs/**/*", "vendor/texthooker-ui/package.json", "package.json" ], "extraResources": [ { "from": "vendor/yomitan", "to": "yomitan" }, { "from": "assets", "to": "assets" } ] } }