{ "name": "@peek/desktop", "version": "0.0.1", "description": "Peek desktop — Electron main process, renderer, features, and packaging.", "private": true, "type": "module", "scripts": { "//-- Build --//": "", "build": "../../scripts/timed.sh sh -c 'node ../../packages/schema/codegen.js && rm -rf dist && tsc -p tsconfig.json && cp -r main/chrome-api-polyfills dist/main/ && node ../../scripts/patch-chrome-extensions.js && node ../../scripts/patch-virtual-core.js'", "build:watch": "tsc -p tsconfig.json --watch", "build:electron": "cd ../.. && ./scripts/timed.sh electron-builder --dir", "build:electron:install": "cd ../.. && ./scripts/timed.sh sh -c 'scripts/assert-prod-peek-not-running.sh && yarn workspace @peek/desktop build && electron-builder --dir && scripts/assert-prod-peek-not-running.sh && rm -rf /Applications/Peek.app && cp -R out/mac-arm64/Peek.app /Applications/'", "build:electron:install:linux": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && electron-builder && mkdir -p ~/Applications && cp out/Peek-*.AppImage ~/Applications/Peek.AppImage && chmod +x ~/Applications/Peek.AppImage && echo \"installed: ~/Applications/Peek.AppImage (launch once to install ~/.local/bin/peek)\"'", "build:electron:install:linux:test": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && electron-builder && mkdir -p ~/Applications && cp out/Peek-*.AppImage ~/Applications/Peek-test.AppImage && chmod +x ~/Applications/Peek-test.AppImage && echo \"installed: ~/Applications/Peek-test.AppImage (side-by-side, does NOT replace prod). To exercise the cli-alias without touching ~/.local/bin/peek, launch with PEEK_CLI_ALIAS_DIR= ~/Applications/Peek-test.AppImage\"'", "build:electron:dist": "cd ../.. && ./scripts/timed.sh electron-builder", "//-- Development --//": "", "dev": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && DEBUG=1 electron .'", "dev:hot": "yarn build && nodemon --exec 'yarn build && cd ../.. && DEBUG=1 electron .'", "start": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && electron .'", "//-- Testing --//": "", "test:desktop:electron:source": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop && HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop-serial --workers=1'", "test:desktop:electron:x": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && electron-builder --dir && scripts/patch-test-plist.sh out/mac-arm64/Peek.app && HEADLESS=1 PACKAGED=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts apps/desktop/tests/desktop/ -x'", "test:packaged": "cd ../.. && yarn kill:packaged && HEADLESS=1 PACKAGED=1 ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop", "test:packaged:debug": "cd ../.. && yarn kill:packaged && HEADLESS=1 PACKAGED=1 DEBUG=1 ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop", "test:desktop:disruptive": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop-disruptive --workers=1'", "test:default-browser:linux": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop build && yarn workspace @peek/desktop build:electron:dist && ./scripts/smoke-default-browser.sh'", "test:default-browser:linux:bg": "../../scripts/bg-run.sh /tmp/smoke-default-browser.log yarn test:default-browser:linux", "test:unit": "../../scripts/timed.sh sh -c 'yarn build && NODE_ENV=test ELECTRON_RUN_AS_NODE=1 npx electron --test dist/main/*.test.js && NODE_ENV=test node --test tests/unit/*.test.js'", "test:unit:modes": "../../scripts/timed.sh sh -c 'yarn build && ELECTRON_RUN_AS_NODE=1 npx electron --test dist/main/modes.test.js'", "test:unit:shortcuts": "../../scripts/timed.sh sh -c 'yarn build && ELECTRON_RUN_AS_NODE=1 npx electron --test dist/main/shortcuts.test.js'", "test:unit:datastore": "../../scripts/timed.sh sh -c 'yarn build && ELECTRON_RUN_AS_NODE=1 npx electron --test dist/main/datastore.test.js'", "test:visible": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && HEADLESS=0 BACKEND=electron npx playwright test --config apps/desktop/playwright.config.ts apps/desktop/tests/desktop/ --headed'", "test:debug": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && HEADLESS=0 npx playwright test --debug'", "test:grep": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts apps/desktop/tests/desktop/ --grep \"$0\"'", "test:desktop:electron:grep": "cd ../.. && HEADLESS=1 PACKAGED=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts apps/desktop/tests/desktop/ --reporter=line --grep \"$0\"", "test:desktop:electron:spec": "cd ../.. && HEADLESS=1 PACKAGED=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --reporter=line \"$0\"", "test:desktop:electron:spec:bg": "../../scripts/bg-run.sh /tmp/test-electron.log sh -c 'read SPEC < /tmp/test-spec && exec yarn test:desktop:electron:spec \"$SPEC\"'", "test:desktop:electron:bg": "../../scripts/bg-run.sh /tmp/test-electron.log yarn test:desktop:electron", "test:desktop:electron:grep:bg": "../../scripts/bg-run.sh /tmp/test-electron.log sh -c 'read PATTERN < /tmp/test-grep-pattern && exec yarn test:desktop:electron:grep \"$PATTERN\"'", "test:log": "tail -f /tmp/test-electron.log", "//-- Manual debugging harness --//": "", "harness": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && BACKEND=electron HEADLESS=0 npx playwright test --config apps/desktop/playwright.config.ts --project=manual --workers=1 --headed'", "harness:stop": "mkdir -p ../../tmp && touch ../../tmp/harness-stop", "//-- Debug --//": "", "debug": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && DEBUG=1 electron .'", "debug:headless": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && PEEK_HEADLESS=1 DEBUG=1 electron .'", "debug:electron:headless": "../../scripts/timed.sh sh -c 'yarn build && cd ../.. && PEEK_HEADLESS=1 DEBUG=1 electron .'", "debug:electron:log": "cd ../.. && yarn kill:electron && sleep 1 && yarn workspace @peek/desktop build && DEBUG=1 electron . 2>&1 | tee /tmp/electron-debug.log", "debug:electron:bg": "cd ../.. && yarn kill:electron && sleep 1 && yarn workspace @peek/desktop build && DEBUG=1 electron . > /tmp/electron-debug.log 2>&1 &", "electron:log": "tail -f /tmp/electron-debug.log", "//-- Packaged run --//": "", "kill:electron": "cd ../.. && pkill -f \"$PWD/node_modules/electron\" || true", "kill:packaged": "pkill -f 'out/(mac[^/]*/Peek\\.app|linux[^/]*-unpacked/peek|win[^/]*-unpacked/Peek\\.exe)' || true", "kill:prod": "pkill -f '/Applications/Peek.app' || true", "run:packaged": "cd ../.. && ./scripts/timed.sh sh -c 'yarn workspace @peek/desktop kill:packaged && yarn workspace @peek/desktop build && electron-builder --dir && PROFILE=tmp-$(date +%s) out/mac-arm64/Peek.app/Contents/MacOS/Peek'", "run:packaged:debug": "cd ../.. && yarn workspace @peek/desktop kill:packaged && DEBUG=1 out/mac-arm64/Peek.app/Contents/MacOS/Peek", "run:packaged:bg": "cd ../.. && yarn workspace @peek/desktop kill:packaged && out/mac-arm64/Peek.app/Contents/MacOS/Peek > /tmp/packaged-debug.log 2>&1 &", "run:packaged:debug:bg": "cd ../.. && yarn workspace @peek/desktop kill:packaged && DEBUG=1 out/mac-arm64/Peek.app/Contents/MacOS/Peek > /tmp/packaged-debug.log 2>&1 &", "run:packaged:check": "cd ../.. && yarn workspace @peek/desktop kill:packaged && out/mac-arm64/Peek.app/Contents/MacOS/Peek 2>&1 | head -5 && sleep 2 && yarn workspace @peek/desktop kill:packaged", "run:prod": "cd ../.. && yarn workspace @peek/desktop kill:prod && open /Applications/Peek.app", "run:prod:debug": "cd ../.. && yarn workspace @peek/desktop kill:prod && /Applications/Peek.app/Contents/MacOS/Peek 2>&1", "run:prod:bg": "cd ../.. && yarn workspace @peek/desktop kill:prod && /Applications/Peek.app/Contents/MacOS/Peek > /tmp/prod-debug.log 2>&1 &", "prod:log": "tail -f /tmp/prod-debug.log", "packaged:log": "tail -f /tmp/packaged-debug.log", "//-- Full desktop (electron) gate — all 6 runners, canonical --//": "", "lint:test-honesty": "cd ../.. && node scripts/lint-test-honesty.mjs apps/desktop/main apps/desktop/tests/unit", "lint:test-honesty:changed": "cd ../.. && node scripts/lint-test-honesty.mjs --changed main apps/desktop/main apps/desktop/tests/unit", "check:r2-window-ops": "cd ../.. && node scripts/check-r2-window-ops.mjs", "test:desktop:electron": "cd ../.. && ./scripts/timed.sh sh -c 'node scripts/lint-test-honesty.mjs --changed main apps/desktop/main apps/desktop/tests/unit && node scripts/check-r2-window-ops.mjs && yarn workspace @peek/desktop build && electron-builder --dir && scripts/patch-test-plist.sh out/mac-arm64/Peek.app && ( fail=0; NODE_ENV=test ELECTRON_RUN_AS_NODE=1 npx electron --test apps/desktop/dist/main/*.test.js || fail=1; NODE_ENV=test node --test apps/desktop/tests/unit/*.test.js || fail=1; HEADLESS=1 PACKAGED=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop || fail=1; HEADLESS=1 PACKAGED=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=desktop-serial --workers=1 || fail=1; HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=components || fail=1; HEADLESS=1 BACKEND=electron ./scripts/playwright-with-display.sh test --config apps/desktop/playwright.config.ts --project=editor || fail=1; exit $fail )'" }, "dependencies": { "@atproto/crypto": "^0.5.1", "@codemirror/commands": "^6.10.1", "@codemirror/lang-markdown": "^6.5.0", "@codemirror/language": "^6.12.1", "@codemirror/search": "^6.6.0", "@codemirror/state": "^6.5.4", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.39.11", "@ghostery/adblocker-electron": "^2.13.4", "@ipld/dag-cbor": "^10.0.1", "@replit/codemirror-vim": "^6.3.0", "@tanstack/virtual-core": "^3.17.2", "archiver": "^7.0.0", "cross-fetch": "^4.1.0", "electron-unhandled": "^5.0.0", "lit": "^3.3.2" }, "devDependencies": { "@electron/rebuild": "^4.1.0", "@playwright/test": "^1.57.0", "@types/archiver": "^6.0.0", "@types/node": "^25.0.3", "electron": "^43.0.0", "electron-builder": "^26.15.3", "fake-indexeddb": "^6.2.5", "linkedom": "^0.18.12", "playwright": "^1.57.0", "playwright-webextext": "^0.0.4", "tslib": "^2.8.1", "typescript": "^5.9.3", "web-ext": "^9.2.0" } }