- Fix race condition where permission prompts failed on first request due to Buffer polyfill not being initialized during module evaluation - Replace Buffer.from() with native browser APIs (atob + TextDecoder) in prompt.ts for reliable base64 decoding - Add debug logging to reckless mode approval checks - Update permission encryption to support v2 vault key format - Enhance LoggerService with warn/error/debug methods and log storage - Add logs component for viewing extension activity - Simplify deriving modal component - Rename icon files from gooti to plebian-signer - Update permissions component with improved styling Files modified: - projects/chrome/src/prompt.ts - projects/firefox/src/prompt.ts - projects/*/src/background-common.ts - projects/common/src/lib/services/logger/logger.service.ts - projects/*/src/app/components/home/logs/ (new) - projects/*/public/*.svg, *.png (renamed) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
46 lines
1.2 KiB
HTML
46 lines
1.2 KiB
HTML
<div class="header-pane">
|
|
<lib-icon-button
|
|
icon="chevron-left"
|
|
(click)="navigateBack()"
|
|
></lib-icon-button>
|
|
<span>Permissions</span>
|
|
</div>
|
|
|
|
@if(hostsPermissions.length === 0) {
|
|
<span class="text-muted" style="font-size: 12px">
|
|
Nothing configured so far.
|
|
</span>
|
|
} @else {
|
|
<button class="btn btn-danger btn-sm remove-all-btn" (click)="onClickRemoveAllPermissions()">
|
|
Remove All Permissions
|
|
</button>
|
|
}
|
|
@for(hostPermissions of hostsPermissions; track hostPermissions) {
|
|
<div class="permissions-card">
|
|
<span style="margin-bottom: 4px; font-weight: 500">
|
|
{{ hostPermissions.host }}
|
|
</span>
|
|
|
|
@for(permission of hostPermissions.permissions; track permission) {
|
|
<div class="permission">
|
|
<span
|
|
[class.action-allow]="permission.methodPolicy === 'allow'"
|
|
[class.action-deny]="permission.methodPolicy === 'deny'"
|
|
>{{ permission.methodPolicy }}</span
|
|
>
|
|
<span class="text-muted">{{ permission.method }}</span>
|
|
@if(typeof permission.kind !== 'undefined') {
|
|
<span>(kind {{ permission.kind }})</span>
|
|
}
|
|
<div class="sam-flex-grow"></div>
|
|
<lib-icon-button
|
|
icon="trash"
|
|
title="Revoke permission"
|
|
(click)="onClickRevokePermission(permission)"
|
|
></lib-icon-button>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
}
|