- Comprehensive logging system with chrome.storage.session persistence - NIP-07 action logging in background scripts with standalone functions - Vault operation logging (unlock, lock, create, reset, import, export) - Profile and bookmark operation logging - Logs page with refresh functionality and category icons - Lock button (🔒) in navigation bar to quickly lock vault - Reduced nav bar size (40px height, 16px font) with emoji icons - Reordered navigation: You, Permissions, Bookmarks, Logs, About, Lock - Bookmarks functionality for saving frequently used Nostr apps - Fixed lock/unlock flow by properly clearing in-memory session data 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
62 lines
1.6 KiB
HTML
62 lines
1.6 KiB
HTML
<!-- RELAY_TEMPLATE -->
|
|
<ng-template #relayTemplate let-relay="relay">
|
|
<div class="sam-flex-row gap relay">
|
|
<div class="sam-flex-column sam-flex-grow">
|
|
<span>{{ relay.url | visualRelay }}</span>
|
|
<div class="sam-flex-row gap-h">
|
|
<lib-relay-rw
|
|
type="read"
|
|
[model]="relay.read"
|
|
[readonly]="true"
|
|
></lib-relay-rw>
|
|
<lib-relay-rw
|
|
type="write"
|
|
[model]="relay.write"
|
|
[readonly]="true"
|
|
></lib-relay-rw>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ng-template>
|
|
|
|
<div class="header-pane">
|
|
<lib-icon-button
|
|
icon="chevron-left"
|
|
(click)="navigateBack()"
|
|
></lib-icon-button>
|
|
<span class="header-title">Relays</span>
|
|
</div>
|
|
|
|
<div class="info-banner">
|
|
<span class="emoji">💡</span>
|
|
<span>These relays are fetched from your NIP-65 relay list (kind 10002). To update your relay list, use a Nostr client that supports NIP-65.</span>
|
|
</div>
|
|
|
|
@if(loading) {
|
|
<div class="loading-state">
|
|
<i class="bi bi-circle color-activity"></i>
|
|
<span>Fetching relay list...</span>
|
|
</div>
|
|
}
|
|
|
|
@if(!loading && errorMessage) {
|
|
<div class="error-state">
|
|
<i class="bi bi-exclamation-triangle sam-color-danger"></i>
|
|
<span>{{ errorMessage }}</span>
|
|
</div>
|
|
}
|
|
|
|
@if(!loading && !errorMessage && relays.length === 0) {
|
|
<div class="empty-state">
|
|
<i class="bi bi-broadcast"></i>
|
|
<span>No relay list found</span>
|
|
<span class="hint">Publish a NIP-65 relay list using a Nostr client to see your relays here.</span>
|
|
</div>
|
|
}
|
|
|
|
@for(relay of relays; track relay.url) {
|
|
<ng-container
|
|
*ngTemplateOutlet="relayTemplate; context: { relay: relay }"
|
|
></ng-container>
|
|
}
|