In webadmin/web/roles-panel.jsx load(), only a failed roles fetch shows a toast. Failures of the permission catalog and channel list fetches are silent (Promise.allSettled branches just skip setState).
Concrete risk: if the channel list fetch fails, opening a role with channel restrictions renders every restriction under "Deleted channels (no longer exist)" with Purge checkboxes. Applying would drop live restrictions. The Swing panel alerts on any load failure.
Suggest a toast per failed fetch (like the roles one) and treating an unavailable channel list as "channel data unavailable" in the editor rather than as orphans. Found during PR #1 review.
In webadmin/web/roles-panel.jsx load(), only a failed roles fetch shows a toast. Failures of the permission catalog and channel list fetches are silent (Promise.allSettled branches just skip setState).
Concrete risk: if the channel list fetch fails, opening a role with channel restrictions renders every restriction under "Deleted channels (no longer exist)" with Purge checkboxes. Applying would drop live restrictions. The Swing panel alerts on any load failure.
Suggest a toast per failed fetch (like the roles one) and treating an unavailable channel list as "channel data unavailable" in the editor rather than as orphans. Found during PR #1 review.