- Add single-active-prompt queue to prevent permission window spam - Implement request deduplication using hash-based matching - Add 30-second timeout for unanswered prompts with cleanup - Add window close event handling for orphaned prompts - Add queue size limit (100 requests max) - Add "All Queued" row with Reject All/Approve All buttons - Hide batch buttons when queue size is 1 or less - Add 'reject-all' and 'approve-all' response types to PromptResponse Files modified: - package.json - projects/chrome/public/prompt.html - projects/chrome/src/background-common.ts - projects/chrome/src/background.ts - projects/chrome/src/prompt.ts - projects/firefox/public/prompt.html - projects/firefox/src/background-common.ts - projects/firefox/src/background.ts - projects/firefox/src/prompt.ts - releases/plebeian-signer-chrome-v1.1.1.zip - releases/plebeian-signer-firefox-v1.1.1.zip 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
79 lines
2.5 KiB
JSON
79 lines
2.5 KiB
JSON
{
|
|
"name": "plebeian-signer",
|
|
"version": "v1.1.1",
|
|
"custom": {
|
|
"chrome": {
|
|
"version": "v1.1.1"
|
|
},
|
|
"firefox": {
|
|
"version": "v1.1.1"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"ng": "ng",
|
|
"clean:chrome": "rimraf dist/chrome",
|
|
"clean:firefox": "rimraf dist/firefox",
|
|
"start:chrome": "ng serve chrome",
|
|
"start:firefox": "ng serve firefox",
|
|
"fetch-kinds": "node scripts/fetch-kinds.js",
|
|
"prepare:chrome": "./chrome_prepare_manifest.sh",
|
|
"prepare:firefox": "./firefox_prepare_manifest.sh",
|
|
"build:chrome": "npm run fetch-kinds && npm run prepare:chrome && ng build chrome",
|
|
"build:firefox": "npm run fetch-kinds && npm run prepare:firefox && ng build firefox",
|
|
"watch:chrome": "npm run prepare:chrome && ng build chrome --watch --configuration development",
|
|
"watch:firefox": "npm run prepare:firefox && ng build firefox --watch --configuration development",
|
|
"test": "ng test",
|
|
"lint": "ng lint",
|
|
"prepare": "husky"
|
|
},
|
|
"private": true,
|
|
"dependencies": {
|
|
"@angular/animations": "^19.0.0",
|
|
"@angular/common": "^19.0.0",
|
|
"@angular/compiler": "^19.0.0",
|
|
"@angular/core": "^19.0.0",
|
|
"@angular/forms": "^19.0.0",
|
|
"@angular/platform-browser": "^19.0.0",
|
|
"@angular/platform-browser-dynamic": "^19.0.0",
|
|
"@angular/router": "^19.0.0",
|
|
"@cashu/cashu-ts": "^3.2.0",
|
|
"@nostr-dev-kit/ndk": "^2.11.0",
|
|
"@popperjs/core": "^2.11.8",
|
|
"@types/qrcode": "^1.5.6",
|
|
"bootstrap": "^5.3.3",
|
|
"bootstrap-icons": "^1.11.3",
|
|
"buffer": "^6.0.3",
|
|
"hash-wasm": "^4.11.0",
|
|
"nostr-tools": "^2.10.4",
|
|
"qrcode": "^1.5.4",
|
|
"rxjs": "~7.8.0",
|
|
"tslib": "^2.3.0",
|
|
"webextension-polyfill": "^0.12.0",
|
|
"zone.js": "~0.15.0"
|
|
},
|
|
"devDependencies": {
|
|
"@angular-builders/custom-webpack": "^19.0.0",
|
|
"@angular-devkit/build-angular": "^19.0.7",
|
|
"@angular/cli": "^19.0.7",
|
|
"@angular/compiler-cli": "^19.0.0",
|
|
"@types/bootstrap": "^5.2.10",
|
|
"@types/chrome": "^0.0.293",
|
|
"@types/jasmine": "~5.1.0",
|
|
"@types/uuid": "^10.0.0",
|
|
"@types/webextension-polyfill": "^0.12.1",
|
|
"angular-eslint": "19.0.2",
|
|
"eslint": "^9.16.0",
|
|
"husky": "^9.1.7",
|
|
"jasmine-core": "~5.4.0",
|
|
"karma": "~6.4.0",
|
|
"karma-chrome-launcher": "~3.2.0",
|
|
"karma-coverage": "~2.2.0",
|
|
"karma-jasmine": "~5.1.0",
|
|
"karma-jasmine-html-reporter": "~2.1.0",
|
|
"ng-packagr": "^19.0.0",
|
|
"rimraf": "^6.0.1",
|
|
"typescript": "~5.6.2",
|
|
"typescript-eslint": "8.18.0"
|
|
}
|
|
}
|