the widget is out of scope too, leaving one open call
widgets/MusicPlayer stays in its third workspace package, registered where it is. plugins cannot contribute widgets and are not going to learn how tonight. with cliamp and the widget both cut, exactly one judgement is left in the music extraction: whether the global MusicPlayerHost overlay gets a contribution slot in the shell or stays in DashboardLayout gated as it already is. either is fine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -115,7 +115,8 @@ A normal refresh is enough; the shell is `no-store`. When the log's last line ap
|
||||
|
||||
## Music specifically — READ THIS BEFORE STARTING
|
||||
|
||||
**Music is not a bigger offscale. It does not fit the shape, and three of its parts have nowhere to go.**
|
||||
**Music is bigger than offscale, and one part of it has nowhere to go.** Two others did, and the owner cut
|
||||
both from tonight's scope — see below.
|
||||
Mapped 2026-08-15.
|
||||
|
||||
**Decide these yourself. Do not stop to ask.** Every one of them has two defensible answers, the owner has
|
||||
@@ -145,8 +146,11 @@ avoid is not a wrong call; it is a tree left half-moved with a question attached
|
||||
2. **A global UI overlay.** `MusicPlayerHost` is rendered by `DashboardLayout` on **every route**, not
|
||||
inside a panel, and gates itself on `can('music')`. A plugin contributes panels and a layout; there is
|
||||
no "render this everywhere" slot, and inventing one is a platform change.
|
||||
3. **A dashboard widget.** `src/workspaces/widgets/MusicPlayer/` in a *third* workspace package, wired
|
||||
through `WidgetRegistry`. Plugins cannot contribute widgets.
|
||||
3. ~~**A dashboard widget.**~~ **OUT OF SCOPE — leave it where it is.**
|
||||
|
||||
`src/workspaces/widgets/MusicPlayer/` sits in a third workspace package and is wired through
|
||||
`WidgetRegistry`. Plugins cannot contribute widgets and are not going to learn how tonight. Leave the
|
||||
directory, the registration and the barrel export alone; note the seam in the manifest.
|
||||
|
||||
### What else differs
|
||||
|
||||
@@ -190,9 +194,11 @@ in the platform is worth far more than a perfect design that did not land.
|
||||
|
||||
| Part | Close the gap | Leave it behind |
|
||||
| --- | --- | --- |
|
||||
| ~~websockets~~ | — | **out of scope, see above. Do not spend a minute on cliamp.** |
|
||||
| global overlay | add one slot the shell renders from installed plugins | leave `MusicPlayerHost` in `DashboardLayout`, gated on the permission as it already is |
|
||||
| widget | let a plugin contribute `widgetRegistryMetas` | leave `widgets/MusicPlayer` where it is |
|
||||
| ~~websockets~~ | — | **out of scope. Do not spend a minute on cliamp.** |
|
||||
| ~~widget~~ | — | **out of scope. Leave `widgets/MusicPlayer` exactly as it is.** |
|
||||
| global overlay | add one slot the shell renders from installed plugins | leave `MusicPlayerHost` in `DashboardLayout`, gated as it already is |
|
||||
|
||||
**One open call, then.** The player overlay is the only judgement left, and either answer is fine.
|
||||
|
||||
Whatever you pick, the plugin must **install, enable, disable and uninstall cleanly** at the end. A piece
|
||||
left in the platform is a documented seam; a piece left dangling is a bug.
|
||||
|
||||
Reference in New Issue
Block a user