mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-12 09:13:23 +00:00
A modern Material3 screen to review and revoke the permissions napplets hold. Data layer (commons, tested): NappletPermissionStore gains all() (enumerate persisted grants by coordinate) and remove(coordinate, capability); the ledger gains allPersistedGrants() and revoke(identity, capability). DataStore actual implements both (capability is the final space-delimited token of each key). UI (amethyst): NappletPermissionsScreen renders one ElevatedCard per napplet — resolved title + author, and a row per capability with an icon, label, and a control: a Switch (Allowed/Blocked) for normal capabilities, or a "Blocked" indicator for per-use ones (payments only ever persist a DENY). Each row has a revoke action; each card a "Forget this napplet" (revokeAll). Empty state with a shield. Reads/writes the same DataStore the broker uses, so changes take effect immediately. Reached via a "Manage permissions" action on the Napplets top bar (Route.NappletPermissions). commons ledger tests added for allPersistedGrants + single-capability revoke. :commons:jvmTest and :amethyst:compileFdroidDebugKotlin pass; spotless clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ncMHuBBVHEf7spAoSssde