also looking at this
fix(capabilities): stop the channel manifest claiming knowledge it does not have
#68
15 files
+227
-67
| @@ -1247,13 +1247,18 @@ export interface CapabilityNamespace { | ||
| 1247 | 1247 | export interface CraftCapabilities { |
| 1248 | 1248 | namespaces: Record<string, CapabilityNamespace> |
| 1249 | 1249 | /** |
| 1250 | * Every `craft:*` event channel, and whether anything native emits on it. | |
| 1250 | * Every `craft:*` event channel, and what craft can say about it. | |
| 1251 | 1251 | * |
| 1252 | * A `false` here means subscribing would work and never fire — which cannot | |
| 1253 | * be derived from the action tables, so it is tracked separately by the | |
| 1254 | * emitters themselves. | |
| 1252 | * `'live'` means something in this build took out a permit to emit on it. | |
| 1253 | * `'unknown'` means craft cannot prove it either way — subscribe and see, and | |
| 1254 | * do **not** disable a feature over it. | |
| 1255 | * | |
| 1256 | * There is deliberately no `'dead'`. Craft cannot establish absence: the | |
| 1257 | * `craft:window:*` names are composed in JavaScript from | |
| 1258 | * `__craftDeliverWindowEvent('focus')`, so no source scan finds the literal | |
| 1259 | * even though the emitter is right there. | |
| 1255 | 1260 | */ |
| 1256 | channels: Record<string, boolean> | |
| 1261 | channels: Record<string, 'live' | 'unknown'> | |
| 1257 | 1262 | } |
| 1258 | 1263 | |
| 1259 | 1264 | |