- Shipped
- 22 Agosti 2026, 01:12 UTC
- Author
- Kamo
- Commit
- c3d0e30
Ten rights arrive as two five-right blocks — one per widget — hanging off VIEW_CALENDAR, because a widget must be gated by the right that governs the data it shows or granting the widget is a way round that gate. Each block is the widget itself plus the four policies every widget carries: Added By Default, Optional, Required and Movable. The suffixes are a contract, not a naming style: the widget resolver derives all four from the parent's name, so a widget shipping three of them would silently treat the fourth as off for everybody with nothing to grant. RoleRightHierarchyTest now pins that shape for every widget there will ever be. The pinned taxonomy totals move to 203/141/32/30 and 62 roots, which also picks up OVERRIDE_CHAT_POLICY — added in 85b6607 without updating the counts, so the test was failing at HEAD. three or four events and walk either way from now, and serving that from findVisibleToMemberInRange would read a member's whole calendar on every home-page load and every websocket nudge to throw nearly all of it away. The opening page is the one query keyed on endTime, so an event already under way stays on the widget instead of falling off it the moment it begins.