abaddon

An alternative Discord client with voice support made with C++ and GTK 3

GPL-3.0 License

Stars
1K

Bot releases are hidden (Show)

abaddon - v0.2.1 Latest Release

Published by ouwou 7 months ago

Hotfix:

  • Fixed build number fetch
  • Reverted jitter buffer
  • Added workaround for curl bug in 8.7.0 and 8.7.1
abaddon - v0.2.0

Published by ouwou 7 months ago

I figure now would be an okay time to bump up to 0.2.0. The big two are respecting the system GTK theme (mostly? it's much better now), and an alternative channel/server listing more reminiscent of Discord's. Next up is probably a real settings menu (about time) and voice stuff (namely, push-to-talk, stages, idk what else. push-to-talk will require me to write platform-specific code so people on Mac are out of luck (unless you wanna PR it (lol)))

Changes:

  • Use GTK theme. Abaddon should now look more like other GTK programs. Colors are also derived from the theme (except for NSFW channels) but can be configured in the .ini. I'm open to feedback on this in case things look bad and/or icky in general/on a particular theme. The "default" (what's included in the Windows build) is Material-Black-Cherry.
  • As a result of above: application-low-priority.css is no more, and main.css is heavily stripped down
  • Added alternate server/channel listing. You can use a more Discord-like sidebar for navigating between servers and channels. Also open to feedback on this.
  • Added really simple jitter buffer to smooth out voice a bit. Probably needs more work
  • Added notification sounds to Windows (default disabled)
  • Added runtime option for storing token to keychain
  • Added runtime option to configure backend initialization order for audio
  • Added option to configure image embed size
  • View image alt-text when hovering over image
  • Add ability to set image alt-text
  • Tweaked voice window and set status window
  • Added CMake option for additional compiler definitions (#275)
  • MacOS: Added hook to automatically set dark mode preference based on system theme (#276)

Fixes:

  • Audio engine initialization failure is no longer fatal. Logging is enabled now so if it does fail (it shouldn't) plz open issue with the logs (with the environment variable SPDLOG_LEVEL=trace set too ideally)
  • Fix more crashes woohoo
abaddon - v0.1.14

Published by ouwou 11 months ago

Mainly a hotfix for the build number fetch. Next up is proper support for GTK themes (finally) and Discord-style server listing.

Changes:

  • Status indicator is back in the member list (ability to change colors is planned)
  • @ symbol is shown in replies to indicate if a user was pinged
  • Glib application name is set now (#247)

Fixed:

  • Fixed build number fetch again
  • Fixed mention evaluation not working sometimes
abaddon - v0.1.13

Published by ouwou 11 months ago

Changes:

  • Member list implementation rewritten. Now uses a more efficient TreeView which should lead to noticeably lower memory usage and less delay when switching channels
  • Added gui.font_scale setting
  • Added option to actually delete deleted messages instead of displaying [deleted] indicator (contribution: #237)
  • Added option to mix microphone input down to mono
  • Animated emojis will now be animated in reactions
  • Updated list of connections and their images
  • Updated permissions in role view in guild settings

Fixes:

  • Fixed build number fetch failing
  • Fixed some embeds not displaying properly with only a title
  • Fixed pasting not working in the message box on non-English keyboard layouts
  • Fixed gap in profile connections list if image not found
  • Fixed some display names being escaped twice

Notes:

Next couple of things I'm mainly working on are better compatibility with GTK (i.e., respect the system theme) while maintaining the current as a default, a server listing more reminiscent of Discord's sidebar, animated gifs in chat using libnsgif, who knows what else. As always open issues for feedback/ideas/bugs/stuff is broken whatever

abaddon - v0.1.12

Published by ouwou about 1 year ago

New dependencies:

  • rnnoise - Optional. Better voice activity detection and noise suppression. Provided as submodule.
  • qrcodegen - Optional. Allows for login via scanning QR code. Provided as submodule.
  • openssl - Optional, I guess. It's probably already included through curl or ixwebsocket but is explicitly required for QR code support.

Changes:

  • Added better voice activity detection and noise suppression using rnnoise.
  • Added login via QR code.
  • Pomelo support. This includes the new display names and also nicknames. Usernames are used in a couple places the official client doesn't for the sake of disambiguation.
  • Improved UI when editing messages.
  • Added explicit support for MacOS file paths (#207).
  • Group DMs use the same icons as the official client if none is set.
  • Voice participants are shown in private channels.
  • Added option to hide console on Windows.
  • Added option to set any voice gain value under more settings.
  • Updated attachment size limits. Some limits are still in place since the official client uses a new uploading system with GCP that I haven't implemented yet.
  • Added handling for silent messages (MessageFlags.SUPPRESS_NOTIFICATIONS).
  • Added ability to send silent messages.
  • Categories show unread indicators for children (#186).
  • Search for miniaudio.h in system includes.
  • Added a workaround to support building with spdlog and incompatible libfmt.
  • Added some styling to GTK's built-in emoji picker.

Fixes:

  • Fixed pasting on Mac (#177).
  • Fixed linking for audio on Mac (#178).
  • Fixed bad select call that could break voice on some platforms (#182).
  • Fixed potential crash on channel delete.
  • Fixed some parsing errors.
  • Fixed messages getting semi corrupted when loaded from history.
  • Fixed no playback or capture devices being considered a fatal error.
  • Fixed some images getting stretched/distorted (#196).
  • Fixed some undefined behavior which led to issues when getting startup connection data.
  • Fixed GUILD_MEMBER_LIST_UPDATE parsing.
  • Fixed some images not getting embedded if extension wasn't lowercase (#208).
  • Fixed webhooks displaying the wrong username and/or avatar
  • Removed unnecessary file picker filter (#212).

Notes:

I'm a little struck with indecision as to what to work on next so feel free to open issues (unless it's a SILLY idea) or comment on ones that are already open.

abaddon - v0.1.11 - voice support edition

Published by ouwou over 1 year ago

New dependencies:

  • spdlog - Better logging; printf was gross and disturbing
  • libopus - Optional (for voice support)
  • libsodium - Optional (for voice support)
  • miniaudio isn't new but you'll need it for voice support also (still optional)

Changes:

  • Voice support (wow!!). You can now join voice channels and talk and listen and change volume and all that fun stuff. It works in DMs too (but it wont ring whoever you are calling yet). If anything is broken or missing or needs changing or adding in your valuable opinion make sure to open an issue. Some things are missing but planned like push to talk and support for stages. Open an issue if you really want those.
  • Add auto-refresh for main.css. If you update main.css the changes will show up automagically

Fixes:

  • Fixed hypesquad bravery icon using the wrong image
  • Fixed potential crash if you clicked onto a server with an unaccepted verification gate
  • Fixed servers showing up in the server list multiple times
  • Fixed some users showing up as offline when they aren't actually offline
  • Fixed not being able to add reactions sometimes
  • Fixed inability to copy message contents by highlighting
abaddon - v0.1.10

Published by ouwou over 1 year ago

Changes:

  • Added desktop notifications (Mac and Linux only) using org.freedesktop.Notifications. Appearance depends on your notification server.

miniaudio is added as an optional dependency and is provided as a git submodule. You can disable the dependency by passing -DENABLE_NOTIFICATION_SOUNDS=OFF to CMake. You can change the notification sound by replacing res/sound/message.mp3
Runtime settings are available

Fixes:

  • Fixed some servers not being displayed in the server listing
  • Fixed some potential crashes
  • Fixed keybinds like CTRL+Arrow from not working in the chat input box
  • Correctly handle everyone mentions
  • Correctly handle role mentions

Voice soon. I promise

abaddon - v0.1.9

Published by ouwou over 1 year ago

Changes:

  • If USE_LIBHANDY is enabled (default), CMake will fail instead of silently disabling it. libhandy is still optional, but CMake needs to be explicitly told to disable it now
  • Improved compile time. It's still pretty rough but it should still be significantly faster now. You can also use CMake unity builds to speed things up further
  • Sped up connection time
  • Store the token in the system keychain instead of in a text file. You can turn this off by compiling with the CMake option -DUSE_KEYCHAIN=OFF
  • Add option to keep menu bar hidden unless alt is pressed
  • Add option to autoconnect when launching
  • Add keybind and menu options to completely hide channel and member lists
  • Basic support for folders
  • Try to copy Discord's naming scheme for group DM's
  • Made text in embeds selectable
  • Added an option to dump the ready payload

Fixes:

  • Nothing cuz I'm perfect and never make mistakes✨

Still working on voice I promise it'll come one day probably

abaddon - v0.1.8

Published by ouwou about 2 years ago

Changes:

  • Added option to hide to system tray (#99)
  • Automatically fetch cookies and build number. This should reduce likelihood of being falsely detected as spam some more
  • Removed ability to join guilds. It's one of the things Discord really likes to flag you for spam for, so you should only do it in an official client. It also often requires you to fill a captcha which is not something that's going to be supported

Fixes:

  • Fixed some crashes
  • Fixed GUI totally bugging out sometimes when clicking links
  • Fixed curl not working in some cases
  • Fixed the client failing to connect because of missing guild_positions

Not much this time but I've been working on voice support. It's decently usable right now in the voice branch if you want to give it a try. Maybe it'll be usable in next release

abaddon - v0.1.7

Published by ouwou about 2 years ago

Changes:

  • Added support for sending attachments
  • Made the chat input box look a little better
  • Added copy URL option to attachments
  • Added some headers to mimic the web client more closely

Fixes:

  • Fix handling of GUILD_MEMBER_LIST_UPDATE
  • Fix users being mislabeled with the BOT label
  • Remove ability to leave guild if you're the owner
  • Fix potential crash if std::locale::locale returns null
  • Fixed chat input box from expanding horizontally on certain platforms (#89)
  • Fixed active channel overriding expansion state when reconnecting
  • Added some more permission checks to prevent bad requests from being sent
  • Fixed handling role removal events
  • Removed ability to create new DM channels since it is prone to triggering Discord's anti-spam
  • Fixed decoding of emojis.bin file on big-endian platforms (#100)
abaddon - v0.1.6

Published by ouwou over 2 years ago

Changes:

  • Added channel tabs. This introduces libhandy as a dependency but it's optional
  • Added channel history. Bound to back and forward mouse buttons and alt+left/right arrow

Fixes:

  • Fixed menus not updating properly on some platforms
  • Fixed resizing the window causing channel and member panels to stay shrunk
  • Added check to prevent sending messages to channels you don't have permissions to send messages in
  • Fixed messages not being fetched when permissions are temporarily removed
  • State is saved when disconnecting instead of closing (which would erroneously clear state)
  • Fixed handling role create and delete events
  • State is saved on a per-user basis (state/.json)
  • Fixed some compilation errors on some platforms
abaddon - v0.1.5

Published by ouwou over 2 years ago

Changes:

  • Windows uses MSYS2 now instead of vcpkg
  • Server member data is properly fetched now so there are less messages missing member info
  • Nicknames are shown for message authors now
  • Hide token in input dialog
  • Scrolling up to load more messages works better and is less jumpy (still not perfect)

Fixes:

  • Left-aligned stickers
  • Open DM didn't open the right DM sometimes
  • Got rid of mark all as read since it doesn't work on the API end
  • Fixed menus looking broken until they were opened a couple times
abaddon - v0.1.4

Published by ouwou over 2 years ago

Changes:

  • Added option to change unread indicator color
  • Added support for channel icons in DMs
  • Added support for multiple embeds in one message
  • Role mentions are parsed and displayed

Fixes:

  • Fixed clearing database on startup (again)
  • Fix per-server avatars
  • Fix READY message failing to parse in some cases

Note: The fonts folder is only used on Windows

abaddon - v0.1.3

Published by ouwou over 2 years ago

Changes:

  • Unread indicators and mention badges have been added. They can be disabled via settings, and the appearance can be tweaked as well.
  • The config file is written by default to ~/.config on Linux now
  • Connection speed should be faster, particularly if you are in many guilds with many channels.

Fixes:

  • API requests are no longer made for channels which you do not have permission to access.
  • SQL causing Abaddon to fail to launch on some platforms has been fixed.
  • Emojis with a non 1:1 aspect ratio are no longer distorted
abaddon - v0.1.2

Published by ouwou almost 3 years ago

Changes:

  • res has been moved to res/res, css has been moved to res/css, and fonts has been moved to res/fonts. These changes are only in the structure of the repo; the runtime paths actually used by abaddon are unchanged.
  • simpleini is no longer a dependency. The file format is mostly the same, except comments begin with # instead of ;
  • The expansion state of the channel list and the currently opened channel persists across launches now
  • The underlying SQLite store was rewritten and should hopefully be a bit more efficient

Fixes:

  • Private archived threads are actually fetched now
  • Being added to a private thread will update the channel list
  • Some replies that weren't properly shown should now show up
  • A couple UB fixes
abaddon - v0.1.1

Published by ouwou about 3 years ago

Changes:

  • Scroll position now stays put when loading history (not quite perfect at the moment)
  • Windows now uses GTK's native font rendering by default for emojis instead of manual substitution
  • simpleini and IXWebSocket should now be detected and used when building if available

Fixes:

  • Compilation fail from broken include paths fixed
  • Fix state breaking sometimes when disconnecting and reconnecting
  • Fix some potential crashes
abaddon - v0.1.0

Published by ouwou about 3 years ago