also looking at this
fix(capabilities): stop the channel manifest claiming knowledge it does not have
#68
15 files
+227
-67
| @@ -559,11 +559,15 @@ holds a ceiling on how many may remain that only ever goes down. | ||
| 559 | 559 | |
| 560 | 560 | ### `channels` |
| 561 | 561 | |
| 562 | Every `craft:*` event, and whether anything native emits on it. This cannot be | |
| 563 | derived from the action tables — an emitter is a separate piece of code that may | |
| 564 | or may not have been written — so a channel is reported live only because the | |
| 565 | code that emits on it took out a permit at startup. Sixteen channels the JS | |
| 566 | surface subscribes to currently have no emitter at all. | |
| 562 | Every `craft:*` event, and what craft can say about it: `'live'` when something | |
| 563 | in this build took out a permit to emit on it, `'unknown'` when craft cannot | |
| 564 | prove it either way. | |
| 565 | ||
| 566 | There is no `'dead'`, deliberately. Craft cannot establish absence — the | |
| 567 | `craft:window:*` names are composed in JavaScript from | |
| 568 | `__craftDeliverWindowEvent('focus')`, so no source scan finds the literal even | |
| 569 | though the emitter is right there. Treat `'unknown'` as "subscribe and see", not | |
| 570 | as "this will never fire". | |
| 567 | 571 | |
| 568 | 572 | ### `supports()` fails open |
| 569 | 573 | |