record the two pieces of plugin infrastructure the desktop extraction needs

Websockets: a plugin's socket has no door at all — mount.ts never sets `ws` and server.tsx's handler
map is a literal. Desktop ships one that cannot be mounted and will not be the last plugin to want one.

Host setup: a manifest declares packages, not a reconfigured display manager. Left manual for desktop.
Noted that a mechanism for this apparently existed months ago and was removed — history first, design
second.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 00:53:42 +00:00
co-authored by Claude Opus 5
parent 0a1f1ce6df
commit 581ec28fc5
+13
View File
@@ -12,6 +12,19 @@ below that proposed deleting it have been removed rather than left to mislead th
What did NOT reverse: `execution` permissions (terminal, chat, tasks, files, desktop, browser) run as What did NOT reverse: `execution` permissions (terminal, chat, tasks, files, desktop, browser) run as
the owner's OS user and can never be granted. Indirection there really is accidental complexity. the owner's OS user and can never be granted. Indirection there really is accidental complexity.
## Plugin infrastructure
- [ ] **A plugin cannot claim a WebSocket provider.** `pluginPermissions` in mount.ts sets `api` and
`routes` and never `ws`, and `server.tsx`'s handler map is a literal — so a plugin's socket has no
door. The desktop plugin ships one that cannot be mounted (`plugins/desktop/BLOCKERS.md` §2), and it
will not be the last: agreed 2026-08-21 that this is real infrastructure to build, not a per-plugin
workaround.
- [ ] **A plugin cannot run host setup.** `osDependencies` installs packages; it cannot reconfigure a
display manager, and `plugins/desktop/setup/setup-desktop.sh` forces Xorg, enables auto-login and
needs a reboot. Left manual. The owner recalls a mechanism for this existing months ago and being
removed — **look in git history before designing a new one**, it reportedly worked and made the
install page considerably better than it is now.
## Multi-user ## Multi-user
- [ ] **A plugin's settings routes are reachable by anyone the plugin is granted to.** Jellyfin's - [ ] **A plugin's settings routes are reachable by anyone the plugin is granted to.** Jellyfin's