# Developer tools — handoff

## Summary

Power-user tools for debugging Matrix state: view/edit account data, send custom room events, and inspect raw JSON. Available in user settings and room/space common-settings.

## User-facing behavior

- **Settings → Developer tools**: account data viewer
- **Room settings → Developer tools**: send state events, room account data
- Raw JSON editors with validation warnings

## Architecture

```
settings/developer-tools/
  DevelopTools.tsx, AccountData.tsx
common-settings/developer-tools/
  DevelopTools.tsx, StateEventEditor.tsx, SendRoomEvent.tsx
```

## Key files

| Path | Role |
|------|------|
| `cinny/src/app/features/settings/developer-tools/DevelopTools.tsx` | User-level dev tools |
| `cinny/src/app/features/settings/developer-tools/AccountData.tsx` | Account data viewer |
| `cinny/src/app/features/common-settings/developer-tools/DevelopTools.tsx` | Room dev tools entry |
| `cinny/src/app/features/common-settings/developer-tools/StateEventEditor.tsx` | Edit state events |
| `cinny/src/app/features/common-settings/developer-tools/SendRoomEvent.tsx` | Send events |

## Data model

Direct read/write to Matrix account data and state events — **production danger**.

## Dependencies

- matrix-js-sdk low-level APIs

## Integration points

- **user-settings**: developer tab
- **common-settings**: per-room tools

## Testing

### Manual

1. View account data keys on staging account.
2. Send harmless custom state event in test room.
3. Verify permission denied without power level.

### Automated

- None

## Known issues & gotchas

- No guard rails — can break rooms with bad state events
- Should be hidden or disabled in production builds for normal users (currently settings-gated only)
- Typo `DevelopTools` vs `DeveloperTools` in filenames

## Future work

- Feature flag via client config
- Event diff viewer

## Related docs

- [user-settings HANDOFF](../user-settings/HANDOFF.md)
- [common-settings HANDOFF](../common-settings/HANDOFF.md)

## Add your extra things here

- Only use on test homeservers — document internal MSC event types here when experimenting
