Critical fixes: - handle_space_child_change now reads the actual m.space.child state event and checks if via is empty; removes child from index on removal instead of unconditionally adding - Server user is exempted from PL rejection guard so sync_power_levels can function without being blocked by its own protection - PL rejection now also checks that space-managed users aren't omitted from proposed power level events Important fixes: - room_to_space changed from 1:1 to 1:many (HashMap<RoomId, HashSet<RoomId>>) so a room can belong to multiple parent spaces; get_parent_space renamed to get_parent_spaces; join gating checks all parents (qualify in any) - All custom event types renamed from m.space.* to com.continuwuity.space.* to avoid squatting on the Matrix namespace - Cache cleanup on child removal from space - Added tokio Semaphore (capacity 4) to limit concurrent enforcement tasks - Server user membership checked before enforcement in auto_join, kick, and sync_power_levels to avoid noisy errors Suggestions: - Replaced expect() calls with proper error propagation via map_err/? - Fixed indentation in timeline/mod.rs line 116 - handle_space_child_change now directly joins users to the specific new child room instead of scanning all children via auto_join_qualifying_rooms Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| advanced | ||
| calls | ||
| community | ||
| deploying | ||
| development | ||
| plans | ||
| public | ||
| reference | ||
| _meta.json | ||
| _nav.json | ||
| appservices.mdx | ||
| calls.mdx | ||
| configuration.mdx | ||
| contributing.mdx | ||
| deploying.mdx | ||
| index.mdx | ||
| introduction.mdx | ||
| maintenance.mdx | ||
| security.mdx | ||
| troubleshooting.mdx | ||