- Upgrade vault encryption from PBKDF2 (1000 iterations) to Argon2id
(256MB memory, 8 iterations, 4 threads, ~3 second derivation)
- Add automatic migration from v1 to v2 vault format on unlock
- Add WebAssembly CSP support for hash-wasm Argon2id implementation
- Add NIP-42 relay authentication support for auth-required relays
- Add profile edit feature with pencil icon on identity page
- Add direct NIP-05 validation (removes NDK dependency for validation)
- Add deriving modal with progress timer during key derivation
- Add client tag "plebeian-signer" to profile events
- Fix modal colors (dark theme for visibility)
- Fix NIP-05 badge styling to include check/error indicator
- Add release zip packages for Chrome and Firefox
New files:
- projects/common/src/lib/helpers/argon2-crypto.ts
- projects/common/src/lib/helpers/websocket-auth.ts
- projects/common/src/lib/helpers/nip05-validator.ts
- projects/common/src/lib/components/deriving-modal/
- projects/{chrome,firefox}/src/app/components/profile-edit/
- releases/plebeian-signer-{chrome,firefox}-v1.0.0.zip
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
74 lines
2.2 KiB
JSON
74 lines
2.2 KiB
JSON
{
|
|
"name": "plebeian-signer",
|
|
"version": "v1.0.0",
|
|
"custom": {
|
|
"chrome": {
|
|
"version": "v1.0.0"
|
|
},
|
|
"firefox": {
|
|
"version": "v1.0.0"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"ng": "ng",
|
|
"clean:chrome": "rimraf dist/chrome",
|
|
"clean:firefox": "rimraf dist/firefox",
|
|
"start:chrome": "ng serve chrome",
|
|
"start:firefox": "ng serve firefox",
|
|
"prepare:chrome": "./chrome_prepare_manifest.sh",
|
|
"prepare:firefox": "./firefox_prepare_manifest.sh",
|
|
"build:chrome": "npm run prepare:chrome && ng build chrome",
|
|
"build:firefox": "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",
|
|
"@nostr-dev-kit/ndk": "^2.11.0",
|
|
"@popperjs/core": "^2.11.8",
|
|
"bootstrap": "^5.3.3",
|
|
"bootstrap-icons": "^1.11.3",
|
|
"buffer": "^6.0.3",
|
|
"hash-wasm": "^4.11.0",
|
|
"nostr-tools": "^2.10.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/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"
|
|
}
|
|
}
|