# Common settings — handoff

## Summary

Shared setting pages used by both room and space settings overlays: general (profile, join rules, encryption, embed filters), members, permissions editors, emojis/stickers, and developer tools (raw state events).

## User-facing behavior

- Same UI whether editing a room or space context
- Members list with kick/ban/invite
- Power level editor
- Room emoji packs
- Developer tools: send custom state events

## Architecture

```
common-settings/
  general/ — RoomProfile, RoomJoinRules, RoomEncryption, EmbedFilters
  members/ — Members.tsx
  permissions/ — PowersEditor, PermissionGroups
  emojis-stickers/
  developer-tools/ — StateEventEditor, SendRoomEvent
Imported by room-settings and space-settings shells
```

## Key files

| Path | Role |
|------|------|
| `cinny/src/app/features/common-settings/general/RoomProfile.tsx` | Name/topic/avatar |
| `cinny/src/app/features/common-settings/general/RoomJoinRules.tsx` | Join rules |
| `cinny/src/app/features/common-settings/general/RoomEncryption.tsx` | E2E toggle |
| `cinny/src/app/features/common-settings/general/EmbedFilters.tsx` | Room-wide embed filters |
| `cinny/src/app/features/common-settings/members/Members.tsx` | Member management |
| `cinny/src/app/features/common-settings/permissions/PowersEditor.tsx` | Power levels |
| `cinny/src/app/features/common-settings/developer-tools/` | Dev event tools |

## Data model

Standard Matrix room/space state events. Embed filters: `im.paarrot.room.embed_filters`.

## Dependencies

- Permission hooks, member list hooks

## Integration points

- **room-settings** / **space-settings**: parent shells
- **embed-filters**: room-wide pattern UI
- **emoji-stickers**: room pack management

## Testing

### Manual

1. Open members from room settings; invite user.
2. Set embed filter pattern as admin.
3. Developer tools: send test state event (staging only).

### Automated

- None

## Known issues & gotchas

- `DevelopTools` naming typo inherited from upstream
- Encryption enable is irreversible — UI must warn

## Future work

- Extract embed filters to own settings section

## Related docs

- [room-settings HANDOFF](../room-settings/HANDOFF.md)
- [space-settings HANDOFF](../space-settings/HANDOFF.md)
- [embed-filters HANDOFF](../embed-filters/HANDOFF.md)

## Add your extra things here

- `PermissionGroups.tsx` — grouped permission UI
