Commit Graph

622 Commits

Author SHA1 Message Date
Skip R
8a28fa0f95 connector: share session construction logic
So we can't forget to set up the logging handler.
2026-01-07 18:51:32 -08:00
Skip R
4314aa9206 handlematrix: simplify read receipt bridging 2026-01-06 18:10:50 -08:00
Skip R
761a850a50 handlematrix: bridge outgoing read receipts 2026-01-06 18:10:50 -08:00
Skip R
ca1168bfc2 clean up stray zerolog import 2026-01-06 16:49:10 -08:00
Skip R
e71075cd0d handlematrix: bridge outgoing message attachments 2026-01-05 22:29:26 -08:00
Skip R
cbfbe65619 login/remoteauth: lowercase Errorf 2025-12-18 19:43:30 -08:00
Skip R
c015148b63 login/remoteauth: simplify copy 2025-12-18 19:40:49 -08:00
Skip R
1fb161f379 lint 2025-12-18 19:37:42 -08:00
Skip R
b18d908489 login: implement remoteauth (QR code login) 2025-12-18 19:36:33 -08:00
Skip R
099b464f84 client: refactor boot logic into SetUp method
This method only has heartbeat session population logic for now, so it's
actually a no-op during provisioning. However, there's probably some
value in "mandating" that clients call this shortly after construction,
so we have a chance to run any setup logic that we might need in the
future.

This _feels_ unidiomatic...?
2025-12-18 19:34:50 -08:00
Skip R
2075a4b853 client: don't nil out discordgo.Session when disconnecting
I don't have the logs anymore unfortunately, but I witnessed a
(seemingly?) rare nil dereference _within discordgo's event handling
code_ after Disconnect on the client was called (caused by SIGINT). My
thinking is that this caused the Session to get garbage collected, so
the method receiver became nil out from under it.

To let discordgo clean up after itself, keep a reference to it in the
client.
2025-12-18 19:31:40 -08:00
Skip R
776ddd7c96 login: make complete step id a constant 2025-12-18 19:31:30 -08:00
Skip R
2c669413cc login/token: remove misleading comment about LoadUserLogin
This comment seems to imply that specifying this function is a shortcut
of sorts, when it's actually required and mautrix-go doesn't fallback to
the connector in the way described.
2025-12-18 19:30:34 -08:00
Skip R
0c82f6551d login: move token login to own file, rename
To make room for other login flows.
2025-12-18 18:28:19 -08:00
Skip R
d79406e05b handlematrix: clean up stale comment 2025-12-17 19:17:36 -08:00
Skip R
7a19f09683 handlematrix: bridge outgoing message redactions 2025-12-17 19:04:54 -08:00
Skip R
e030c9548c handlematrix: bridge outgoing reactions 2025-12-17 18:51:36 -08:00
Skip R
2cacd4ec81 msgconv: bridge outgoing replies 2025-12-17 18:23:08 -08:00
Skip R
09414cb59d handlediscord: drop messages lacking an author
DiscordMessage's GetSender is dereferencing nil sometimes and I'm not
sure why.
2025-12-17 18:04:37 -08:00
Skip R
d82b74fb29 handlematrix: handle basic matrix rich text messages
Added the necessary room capabilities, too. Support for replies,
editing, deletion, and attachments are forthcoming.
2025-12-16 18:37:35 -08:00
Skip R
60171b4fca lint 2025-12-11 19:56:31 -08:00
Skip R
ab82f8b131 backfill: document why we aren't backfilling reactions (for now) 2025-12-11 19:50:25 -08:00
Skip R
506f42f93b bridge basic emoji reactions from gateway to matrix 2025-12-11 19:24:19 -08:00
Skip R
25b73bd7cb handlediscord: bail if we're in the middle of provisioning 2025-12-11 18:34:47 -08:00
Skip R
d464cb8b66 bridge discord messages to matrix 2025-12-11 18:22:36 -08:00
Skip R
7b32aad13f attachments: remove trace logging
This was for debugging in development only. Also, bridges default to the
DEBUG level, so this would not be logged at all unless you intentionally
modified your logging configuration.
2025-11-26 18:29:00 -08:00
Skip R
b5e6db06f8 msgconv: port most of attachment and text message bridging
* Created a separate discordid package to avoid import cycles.
* Implemented attachment bridging. We still need to implement direct
  media, but this will do for now.
* Corrected how encrypted files (e.g. embed images and attachments) were
  bridged. Previously, the URL field would be empty.

Still a lot of missing pieces. Thoughts:

* Mentions to roles and custom emoji are not rendered properly. We need
  to maintain our own DB.
* We might not need the "attachments" leaf package anymore? It's just
  there to avoid an import cycle.

Bridging actual events (i.e. wiring up discordgo's event handlers) is
probably next.
2025-11-26 18:13:07 -08:00
Skip R
86e18c1f7d msgconv: port the majority of embed and attachment bridging
We still need to implement direct media support, so for now we encrypt
and reupload to Matrix. Notably remaining is conversion to HTML.
2025-11-26 15:18:29 -08:00
Skip R
17fed9aca5 msgconv: initial impl of ToMatrix, porting convertDiscordTextMessage 2025-11-25 18:01:31 -08:00
Skip R
66d9ca6394 backfill: set ConvertedMessagePart.Type for call/guild join 2025-11-25 16:19:12 -08:00
Skip R
45dae8fafb backfill: set ConvertedMessagePart.Type 2025-11-25 16:10:31 -08:00
Skip R
5fa9645012 connector/id: actually use user as UserLogin 2025-11-25 16:10:04 -08:00
Skip R
114df5f2a2 tidy 2025-11-25 15:09:35 -08:00
Skip R
31c1cdda0c connector: sort recent private channels properly 2025-11-25 15:09:20 -08:00
Skip R
56f05bc02c backfill: make messages actually have IDs 2025-11-25 15:08:33 -08:00
Skip R
f8b65fe1f0 clarify comment 2025-11-25 14:31:42 -08:00
Skip R
61ef0c1051 connector: limit the amount of private channels initially synced
Otherwise, we'll hit the ratelimit pretty easily.
2025-11-25 14:28:28 -08:00
Skip R
ab68fae8dd connector: fix UserLogin lifecycle during provisioning
Bridge provisioning would crash because we wouldn't thread the necessary
database models through.
2025-11-25 14:27:36 -08:00
Skip R
063b9d00dd connector/login: rename variable 2025-11-25 13:49:38 -08:00
Skip R
8c8f029e11 connector: do not forward backfill empty rooms
We'll quickly hit ratelimits if we have a bunch of empty rooms, since
forward backfilling apparently doesn't go through the queue.
2025-11-25 13:49:02 -08:00
Skip R
ae98d58dbe connector: set CanBackfill on rooms 2025-11-25 13:48:48 -08:00
Skip R
c15fd3fc82 implement naive, incomplete backfill 2025-11-25 11:10:20 -08:00
Skip R
aecc5234e6 remove test aggressive updates 2025-11-25 11:09:31 -08:00
Skip R
1c599a33bc add aggressive info updating for dev 2025-11-24 13:23:46 -08:00
Skip R
91edeb6054 connector/userinfo: implement user avatars 2025-11-24 13:23:29 -08:00
Skip R
1442b356f2 sync channel avatars 2025-11-24 13:08:02 -08:00
Skip R
f04a8658d9 always add self when creating DM portals
Clients will leave rooms automatically when they realize that they
aren't actually members of the channel.
2025-11-24 13:07:24 -08:00
Skip R
4e41c2f227 sync private channels and their members 2025-11-24 12:42:27 -08:00
Skip R
bc13724b0a use zerolog/local loggers instead of zerolog/log 2025-11-24 11:15:58 -08:00
Skip R
586cb2bfe6 initial pass at wiring up login to discordgo 2025-11-24 11:04:40 -08:00