Commit Graph
2 Commits
Author SHA1 Message Date
SalastilandClaude Sonnet 5 0ad9b7b719 Add Matrix backend with full end-to-end encryption
- New chatd-rs backend/matrix module: m.login.password auth, /sync-based
  multi-room connect loop, and full E2EE via matrix-sdk-crypto (device key
  upload, Megolm session establishment, encrypt/decrypt) - verified live
  against real homeservers with two independent devices exchanging an
  encrypted message neither one decrypted itself.
- Reactions, edits, redactions, replies, and media upload/download, mapped
  onto the existing Reaction/Embed/ReplyPreview model.
- Frontend wiring: MatrixConnectForm.qml, AccountsPanel/ChatView hookup,
  and the real addMatrixAccount RPC handler (replacing the stub).
- Fix messages doubling in the UI: the Matrix backend never called
  Runtime::set_own_identity, so every message - including the account's
  own - was stored with is_own=false, defeating the frontend's optimistic-
  send reconciliation.
- Fix accounts getting stuck showing "connecting" forever: the Connected
  state transition was gated on this being the account's very first-ever
  sync (next_batch.is_none()), which is never true again once a cursor is
  persisted across a restart - a real account could sync successfully
  forever and never have its state announced as connected.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-12 22:57:54 -04:00
SalastilandClaude Sonnet 5 7f3a1d36cd Restructure QML into views/settings/forms, add popout IPC command
- Move the ~17 top-level QML files into views/, settings/, and forms/
  subdirectories, grouped so cross-directory type references stay minimal
  (only 3 files need an added `import` line). Root now only holds the
  four surfaces plugin.json points at directly.
- Add a `dms ipc call dankChat popout` IPC target to open the floating
  window directly, alongside the existing `toggle`, and document both in
  the README along with the new directory layout.
- Add one line of breathing room between the last message and the
  composer bar via the message ListView's bottomMargin (measured with
  FontMetrics rather than a guessed pixel value).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 23:41:07 -04:00