Site approvals and panel approvals share one allowedOrigins list on disk because the policy is one SitePolicy either way, but on screen they are two different things: a URL you signed in on versus an Aegis sidebar panel you unlocked. The panel showed them in one mono list under "Sites Claude may control", so an Aegis approval read as "theseus-panel://aegis" with no label and no clue it was a panel at all. publicState() now splits allowedOrigins into allowedSites (web origins) and allowedPanels (theseus-panel://<addon>, enriched with the add-on's own title via api.tabControl.list()). The panel.html renders them in their own sections: "Sites Claude may control" and "Add-on panels Claude may control", the latter hidden when nothing is approved. Each panel row shows the add-on title in bold with the mono origin as a subtitle. The ✕ button goes through the existing remove-origin IPC — removing either kind takes one call. The renderer falls back to deriving the split from allowedOrigins so a UI loaded against an older host still renders both sections. |
||
|---|---|---|
| .. | ||
| aegis | ||
| blocker | ||
| claude-connector | ||
| consent | ||
| docx-editor | ||
| hermes | ||
| notepad | ||
| pdf-editor | ||
| pithos | ||
| screenshot | ||
| translate | ||
| vpn | ||