- 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>
51 lines
1.3 KiB
HTML
51 lines
1.3 KiB
HTML
<app-deriving-modal #derivingModal></app-deriving-modal>
|
|
|
|
<div class="sam-text-header">
|
|
<span>Plebeian Signer</span>
|
|
</div>
|
|
|
|
<div class="content">
|
|
<div class="sam-flex-column gap" style="align-items: center">
|
|
<div class="logo-frame">
|
|
<img src="logo.svg" height="120" width="120" alt=""/>
|
|
</div>
|
|
|
|
<span class="sam-mt-2"> Please define a password for your vault. </span>
|
|
|
|
<small class="sam-text-muted">
|
|
Sensitive data is encypted before it is stored.
|
|
</small>
|
|
|
|
<div class="sam-mt input-group">
|
|
<input
|
|
#passwordInputElement
|
|
type="password"
|
|
class="form-control form-control-lg"
|
|
style="font-size: 1rem"
|
|
placeholder="vault password"
|
|
[(ngModel)]="password"
|
|
/>
|
|
<button
|
|
class="btn btn-outline-secondary"
|
|
type="button"
|
|
(click)="toggleType(passwordInputElement)"
|
|
>
|
|
<i
|
|
class="bi bi-eye"
|
|
[class.bi-eye]="passwordInputElement.type === 'password'"
|
|
[class.bi-eye-slash]="passwordInputElement.type === 'text'"
|
|
></i>
|
|
</button>
|
|
</div>
|
|
|
|
<button
|
|
[disabled]="!password || password.length < 4"
|
|
type="button"
|
|
class="sam-mt btn btn-primary"
|
|
(click)="createVault()"
|
|
>
|
|
Create vault
|
|
</button>
|
|
</div>
|
|
</div>
|