A completely native Discord client for macOS built 100% in Swift and SwiftUI

Overview

Swiftcord

A completely native Discord client for macOS built 100% in Swift and SwiftUI

This project aims to create a fully functional native Discord client in Swift for macOS from scratch.

Client Feature Parity

Feature parity with the following Discord client is targeted:

Version 0.0.283
Build # 115689
Release Channel canary

Current State

This project is currently in a non-functional state, with the GUI being completely non-functional. All the magic goes on in the terminal. Connection with the Discord WebSocket Gateway is fully functional (but unstable), and the HTTP REST API is partially implemented (press the button in the header of the UI to test that out)

Contributions

Thank you for popping by! If you know the Discord API well, have Swift knowledge and feel like contributing, feel free to make a pull request! Any (positive) contribution is welcome, no matter how small!

License

Made with ❤️ by Vincent Kwok

Copyright © 2022 Vincent Kwok

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See https://www.gnu.org/licenses/ for a copy of the GNU General Public License.

Comments
  • 'Swiftcord' will damage your computer

    'Swiftcord' will damage your computer

    Opening the latest release (0.2.2) triggers a gatekeeper alert I had never seen before.

    image

    This is unlike the regular popup for unsigned/unverified apps which require you to bypass it manually in the system settings. This popup suggests that this app was actively flagged as being malicious by Apple.

    waiting for op 
    opened by jasperweiss 47
  • Stuck on

    Stuck on "Establishing Gateway connection"

    Trying this out as a native alternative to Ripcord (by cancel.fm)! Looks like a cool project! When I open the app it seems to just sit on "Establishing Gateway connection" without progressing.

    Looking at its network traffic in LittleSnitch, it sends a request to "discord.gg" when first launched but it never gets a reply and it does not make any more requests.

    Swiftcord v0.2.2(3) - Pre-built provided on GitHub MacOS v12.3.1 Macbook Pro M1 Pro

    bug 
    opened by Melonking906 32
  • Flaky Gateway Connectivity

    Flaky Gateway Connectivity

    When loading channels i get this error

    <E> [DiscordGateway] Unknown close code: 1000
    2022-04-13 07:18:59.697935+0100 Swiftcord[37958:1482007] [SwiftUI] Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
    

    and when looking into xcode image

    Im not sure if this warning is turning into an error or not due to my account having server folders and Swiftcord not supporting that just yet or its an actual error. So i have 2 questions. How do i log out of my account before fully loading in? and Is there a way to solve this warning?

    opened by bentettmar 21
  • Stuck on

    Stuck on "Loading channels"

    Hello, I love the concept of your app (it's beautiful ❤️) BUT I'm stuck on this screen: Screenshot 2022-04-30 at 18 57 54

    (I'm connected, the "preferences" menu works) Screenshot 2022-04-30 at 18 58 35

    Here are the errors in Xcode :

    Screenshot 2022-04-30 at 18 59 35 Screenshot 2022-04-30 at 18 59 26

    Thank you in advance for your response

    bug 
    opened by CodingForAddicts 12
  • [Bug]: Badge duplication & overlap

    [Bug]: Badge duplication & overlap

    Describe the bug

    For some reason my nitro badge is being duplicated and overlapped ontop of my hypesquad badge. idk if this will occur with other badges or if it happens with a set amount etc. To Reproduce

    Open a users profile who has HS balance & nitro badges

    Expected behavior No duplication and or overlap Screenshots Swiftcord: image

    standard client: image

    Logs

    Additional context

    bug 
    opened by pozm 6
  • [Enhancement]: GIFs not rendered

    [Enhancement]: GIFs not rendered

    version 0.4.1

    Describe the bug

    I checked on servers and in my DMs, but when someone sends a GIF, only the URL is displayed with a block underneath it. You can still click on the link to view the GIF in your browser, but needless to say, this is not the best solution :,)

    Screen Shot 2022-06-19 at 10 58 49 PM enhancement ui 
    opened by aceilort 5
  • Weird menu bar item behaviour

    Weird menu bar item behaviour

    Describe the bug when clicking any menu items (bar at top of screen) they show up for a split second and then disappear, not to mention getting them to trigger is janky for some reason To Reproduce

    1. click any menu item

    Expected behavior for the dropdown to show as intended and stay until unfocused Screenshots https://user-images.githubusercontent.com/44528100/171665531-b5167f99-097a-479e-b293-9443d1e21a70.mov Logs

    Additional context

    bug 
    opened by pozm 5
  • Message field does not wrap

    Message field does not wrap

    Describe the bug When typing a long message into the message field, the text does not wrap once it hits the end of the field. Although newlines work (opt + return), the text does not wrap anymore like it did before with TextEditor

    To Reproduce

    1. Type very long text in the message field
    2. Notice how the text does not scroll, but you can still input text into the field
    3. Send the message and note that the text that was entered beyond the width of the field is present

    Expected behavior The text wraps to the next line

    Screenshots

    Note the cut-off 't' that appears after the cursor

    Screenshot 2022-05-26 at 11 46 25 AM

    Additional context Text wrapping used to work while a TextEditor was used, but newlines didn't. Now, its the opposite xD

    bug 
    opened by cryptoAlgorithm 5
  • Can't compile from source

    Can't compile from source

    Describe the bug Can't compile from source:

    Dependencies could not be resolved because no versions of 'lottie-ios' match the requirement 3.3.0..<4.0.0 and root depends on 'lottie-ios' 3.3.0..<4.0.0.

    To Reproduce Xcode -> Source Control -> Clone...

    bug 
    opened by zohaad 5
  • Rich Embeds Markdown not working

    Rich Embeds Markdown not working

    Describe the bug

    It seems that RichEmbeds containing markdown text are not properly rendering.

    To Reproduce

    1. Go to a channel with RichEmbed messages including markdown text inside.

    Expected behavior

    See screenshots

    Screenshots

    First one is SwiftCord, the other one is Discord https://imgur.com/a/rBOkGFO

    Additional context

    I'm not sure if this is a problem or not as I saw that "Rich message rendering" should work fine on the roadmap. So just in case 🤷‍♂️ ALSO the "author" field does not appear in the Rich Embed either (see the top part of it in the screenshots)

    By the way, I really appreciate your work!! The UI looks soo good and Discord should defintively make a native version instead of electron... Can't wait to see Voice channels haha

    bug 
    opened by selimgr 5
  • Pre-built releases would be nice

    Pre-built releases would be nice

    Not a bug just an extra feature request! Perhaps connecting with GitHub Actions so a new release is built on every new version/milestone. Because right now building the entire project would be quite a hassle, and as the other issue states, building isn't possible in the current state. Awesome project btw looks so much like the original Discord app. Great work!!

    opened by aviwad 5
  • [Bug]: Swiftcord locks up on wake

    [Bug]: Swiftcord locks up on wake

    Describe the Bug

    Bug Description Swiftcord will lock up on Macs running the M1 Max chipset after a few hours of inactivity. this is prominent when the machine is waking up from sleep. on macos 13.0.1

    Actual Behaviour program locks up requiring you to force quit before you use it.

    Expected Behavior the program to let you continue using it.

    Reproducing the Bug

    1... Launch Swiftcord on M1 Max macOS device running macos 13.0.1 2... let it sit idle for a while. you can let it fall asleep or use other programs. 3... come back and the program will be frozen.

    Version

    0.5.1

    Category

    Other

    Relevant Log Output

    No response

    Screenshots

    No response

    Additional Info

    No response

    bug ui 
    opened by PaRkThEcAr 7
  • Visual glitch in the traffic lights area

    Visual glitch in the traffic lights area

    Hi all,

    The following glitch happens with either the dark and light themes:

    Untitled (6) Untitled (5)

    Happens with alpha release, both standalone and brew versions. Also happens when in fullscreen mode as well. Tried reinstalling but the glitch persists. Is anyone experiencing the same glitch?

    bug ui 
    opened by Vfposselt 4
  • [Enhancement]: Migrate to List for message history

    [Enhancement]: Migrate to List for message history

    Describe Your Request

    Migrate to List instead of LazyVStack - Significant performance improvements especially on macOS 13.

    List appears to scroll way smoother than a ScrollView and LazyVStack, but comes with its own set of issues. For example, there is a bug that causes random crashes if the List itself is rotated 180º, which is required to scroll the message history properly.

    Category

    Message history

    Other Category

    No response

    Screenshots

    No response

    enhancement ui 
    opened by cryptoAlgorithm 1
  • [Enhancement]: Performance and architecture overhaul

    [Enhancement]: Performance and architecture overhaul

    Describe Your Request

    As more features have been added to Swiftcord, the priority has been to ship new features out as fast as possible. This has led to non-optimal code which has been making debugging increasingly hard. This issue will be a long-running issue to track performance-oriented changes to Swiftcord. One pain point that seems to be causing most of the bugs during development is the multiple sources of truth, and keeping them in sync. I will be rectifying this issue and more in a series of PRs.

    Category

    Other

    Other Category

    Performance and architecture

    Screenshots

    No response

    enhancement 
    opened by cryptoAlgorithm 1
  • [Enhancement]: Support more channel types

    [Enhancement]: Support more channel types

    Describe the Bug

    Bug Description Stage channels are treated as text channels Actual Behavior If you click on a stage channel, an empty text channel is opened where you cannot send messages. Expected Behavior It shouldn't let you click on stage channels (since there is no VC implementation) and it should also show them with the correct icon.

    Reproducing the Bug

    1. Click on a stage channel
    2. Try to send a message in it

    Version

    0.5.1

    Category

    Other

    Relevant Log Output

    No response

    Screenshots

    Screen Shot 2022-10-17 at 7 29 45 PM Swiftcord: Screen Shot 2022-10-17 at 7 30 19 PM Discord: Screen Shot 2022-10-17 at 7 30 31 PM

    #aaa is a stage voice channel.

    Additional Info

    No response

    enhancement ui backend 
    opened by doinkythederp 2
  • [Bug]: Message are sent twice

    [Bug]: Message are sent twice

    Describe the Bug

    If you write a message to any channel they're sent twice.

    Reproducing the Bug

    1. Go to any channel
    2. Send a message
    3. See that they're sent twice

    Version

    0.5.1 (Build 15)

    Category

    Sending messages

    Relevant Log Output

    No response

    Screenshots

    Additional Info

    No response

    waiting for op backend 
    opened by Im-Fran 7
Releases(v0.5.1)
  • v0.5.1(Oct 15, 2022)

    This release contains a critical bug fix for the flashy new account switcher that was causing a crash during token migration. It also contains all the goodies from the 0.5.0 release, which will finally be formally released!

    ⚠️ Important If you're updating from an older version of Swiftcord, you might get stuck on the loading screen due to a bug in the new account storage system. Clicking the logout button that appears after ~30s is a workaround which will allow you to log in again. You'll only have to do this once.

    Sponsors

    Your name and a message could be here! Sponsoring Swiftcord is the perfect way to support me and its development if you're lacking the time or knowledge to contribute!

    New Features

    • Handle session invalidation gracefully - Prevents reconnect loops if the token is invalid

    Bug Fixes

    • Rearchitect account manager to fix crash and token storage issues - All tokens are now stored under a single keychain key
    • All buttons are now styled like Discord's buttons

    Translations

    Big thanks to everybody that contributed to translations on Swiftcord's Weblate! This release contains 4 new translations, namely:

    • Japanese
    • Hebrew - Very incomplete, might be removed if it isn't rectified
    • Turkish
    • Traditional Chinese

    v0.5.0 Release Notes

    This release adds several long-awaited features, namely an account switcher and viewing and updating presences! Support for server folders are added too!

    New Features

    • Presences!
      • View others presences, by clicking on the user's avatar or in the DMs list
      • Update your own presence by clicking on your account in the channel list footer
      • You can also set a custom status!
    • Account Switcher
      • Access the account switcher dialog by clicking on the "Switch Accounts" button in the current user popover.
      • You can add as many accounts as you'd like, and they're all stored securely in your keychain
      • Please enter your password and click "Always Allow" when prompted for keychain access!
    • Guild folders (kindly contributed by @thegail) - Your server folders are now rendered! Classify your servers easily, and no longer wonder where that one server you visited months ago went!

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.6...v0.5.1

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.5.1.dmg(9.78 MB)
    Swiftcord15-11.delta(4.57 MB)
    Swiftcord15-12.delta(4.54 MB)
    Swiftcord15-13.delta(3.55 MB)
  • v0.4.6(Aug 27, 2022)

    This is basically a feature drop release 📦 It's packed with some new and improved code (well, at least those that were made in time), as well as better crash analytics to help track down and kill all those pesky bugs!

    Sponsors

    Sponsors allow me to continue supporting Swiftcord with their kind donations!

    Red-hot sponsors 🔥:

    kallisti

    New Features

    • Finally, reply support! Right click on any message to reply to it, even supports pinging/not pinging the OP!
    • Supports new message types, and handle unknown types more gracefully:
      • recipientAdd (member added to a group DM)
      • recipientRemove (member removed from group DM)
      • userPremiumGuildSub (server boosted)
      • userPremiumGuildSubTier1, userPremiumGuildSubTier2, userPremiumGuildSubTier3 (server boosted and achieved tiers 1, 2 or 3 respectively)
    • Migrated from AppCenterCrashes to Sentry! Significantly better crash info helps to pinpoint crashes more easily, so more bugs can be squashed <3

    Bug Fixes

    • More "human" German translations - Thanks to all who helped translate Swiftcord
    • Added new sponsor!

    What's Changed

    • Revamped about section, new credits section by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/96
    • Reply support by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/98
    • Hide edit context button on non-owned messages by @DanielleMaywood in https://github.com/SwiftcordApp/Swiftcord/pull/101

    New Contributors

    • @DanielleMaywood made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/101

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.5...v0.4.6

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.6.dmg(7.85 MB)
    Swiftcord13-10.delta(2.23 MB)
    Swiftcord13-11.delta(2.23 MB)
    Swiftcord13-12.delta(2.16 MB)
    Swiftcord13-8.delta(2.64 MB)
    Swiftcord13-9.delta(2.26 MB)
  • v0.4.5(Aug 7, 2022)

    A few requested features in the #suggestion channel in Swiftcord's Discord server were implemented, as well as some bug fixes for bugs caught by the community! Not to mention, better translations 🎏!

    PS: If you haven't already, you should probably join Swiftcord's Discord server here! I actively respond to your feature requests and answer bug reports there! I'm also looking for new names for Swiftcord, so send your best name suggestion(s) there!

    New Features

    • GIF support (#92) Note: GIF embeds (e.g. Tenor) don't work since they aren't actually GIFs, Discord returns those as videos
      • Animated avatars, server icons and user banners now animate!
    • Focus message field when a channel is clicked into

    Bug Fixes

    • ~~More "human" German translations - Thanks to all who helped translate Swiftcord~~ This was not merged in time for this release
    • More concise GPL license in about window
    • Fixed broken DM ordering due to last_message_id having different lengths
    • Stop video player playback when channel changed

    What's Changed

    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/85
    • [Feature]: GIF media support by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/92
    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/88

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.4...v0.4.5


    If you feel Swiftcord benefits you, consider dropping a donation thru GitHub Sponsors or Patreon to support Swiftcord's development!

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.5.dmg(7.89 MB)
    Swiftcord12-10.delta(773.39 KB)
    Swiftcord12-11.delta(773.89 KB)
    Swiftcord12-7.delta(2.67 MB)
    Swiftcord12-8.delta(1.48 MB)
    Swiftcord12-9.delta(901.75 KB)
  • v0.4.4(Jul 12, 2022)

    This release contains an important bug fix that fixes a crash that would occur during the onboarding. Please do not use v0.4.3 to prevent an immediate crash on launch.

    Bug Fixes

    • @Candygoblen123 - Converted colors to sRGB before getting their components: fixed crash due to FlatButtonStyle during onboarding
    • Use User.public_flags and fallback to User.flags if that is nil to fix verified bot checkbox

    What's Changed

    • Use official blurple color from Discord's Branding Guidelines by @BomberFish in https://github.com/SwiftcordApp/Swiftcord/pull/82

    New Contributors

    • @BomberFish made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/82

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.3...v0.4.4

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.4.dmg(6.99 MB)
    Swiftcord11-10.delta(190.51 KB)
    Swiftcord11-7.delta(2.59 MB)
    Swiftcord11-8.delta(1.36 MB)
    Swiftcord11-9.delta(721.21 KB)
  • v0.4.3(Jul 11, 2022)

    Notice:

    Some people are reporting a crash after first log in, please run defaults write io.cryptoalgo.swiftcord local.seenOnboarding true in a terminal to work around the issue. A patch will be available shortly.

    This release includes Discord-like button styling, better-looking dialogs and properly-bundled localisations. It also contains an important bug fix.

    New Features

    • Discord-styled buttons in more places
    • Better-looking dialogs
    • Skeleton server join dialog (not fully operational)
    • Channel list sidebar can be toggled by clicking on the channel icon in the toolbar (# or @)
    • Show placeholder image and only load video when the play button is clicked
    • Add fade-in animation for images when loaded

    Bug Fixes

    • Properly registered app delegate, fixes the following issues:
      • Temporary files do not get cleared on app launch
      • AppCenter SDK is never initialised, no analytics data and crash stacks are sent
      • UserDefaults default values are not set
    • Added new localisation languages properly so they will be included in the app bundle
    • Workaround for broken toolbar paddings and offsets for macOS 13
    • Use a custom horizontal divider for the day divider so a background does not have to be used to mask the divider

    Note: The join server dialog in this release is non-operational.


    What's Changed

    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/71
    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/76
    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/78
    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/80

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.2...v0.4.3

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.3.dmg(6.99 MB)
    Swiftcord10-7.delta(2.60 MB)
    Swiftcord10-8.delta(1.36 MB)
    Swiftcord10-9.delta(716.04 KB)
  • v0.4.2(Jul 8, 2022)

    A bunch of quality of life improvements, as well as some minor features which are detailed below, are included in this release.

    New Features

    • Basic keyboard shortcuts - Use your keyboard to change servers, channels and more! (@Candygoblen123)
    • Onboarding popover will be shown on the first launch after logging in
    • Release notes will be shown after every update
    • 'Panic logout' button on loading screen to allow logging out in deadlocked situations
    • Warning on loading screen if there is no network connectivity
    • Option to disable AppCenter analytics in settings, with clearer explanations

    Localisations

    • Much more translations with more strings localised
    • Full English and Chinese, and partial French, German, Italian, Korean and Norwegian Bokmal translations
    • Thanks to all localisation contributors! If you'd like to help localise Swiftcord to more languages, check out its Weblate!
    Latest translation status

    Translation status

    Known Issues

    • Very unstable with performance degradation on macOS 13 beta 1
      • App sometimes starts with sidebar minimised regardless of previous setting
      • Message list gets sluggish after a bit of scrolling

    Workarounds/Fixes

    • Removed settings button in user footer below channel list > macOS 13 - Button is broken since macOS 13

    What's Changed

    • Update README.md by @SkiingIsFun123 in https://github.com/SwiftcordApp/Swiftcord/pull/63
    • Supporting changes for DiscordKit rearchitect by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/64
    • add german translation by @7408647n in https://github.com/SwiftcordApp/Swiftcord/pull/66
    • Fix README.md typo by @agnezi in https://github.com/SwiftcordApp/Swiftcord/pull/67
    • Translations update from Hosted Weblate by @weblate in https://github.com/SwiftcordApp/Swiftcord/pull/65
    • Update README by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/73

    New Contributors

    • @SkiingIsFun123 made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/63
    • @7408647n made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/66
    • @agnezi made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/67
    • @weblate made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/65

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.1...v0.4.2

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.2.dmg(6.92 MB)
    Swiftcord9-7.delta(2.51 MB)
    Swiftcord9-8.delta(1.24 MB)
  • v0.4.1(Jun 6, 2022)

    This release contains major performance increases and various bug fixes.

    New Features

    • Proper user profile caching - User popover now loads immediately when opened again
    • AppCenter crash diagnostics and analytics - Helps debug crashes and see what features were used most
    • Drag and drop to add attachments
    • Partial Chinese localisation
    • Custom banner image (nitro only) is now rendered in user popover
    • User badges are now rendered in the popover (except the nitro badge, its still being worked on)
    • Reference messages now highlight themselves when the reply is clicked on
    • You can choose to always play animated stickers or only play them on interaction
    • Hide debug menu if the user didn't enable developer mode
    • Show day divider

    Known Issues

    • Text field doesn't wrap: #45
    • Various rerendering issues, or rather the lack thereof
    • Changing the theme override causes rendering glitches, read caption below option in settings for more info

    Fixes

    • Select first channel after ordering, so the initial selected channel also visually the first
    • Last DM channel is now saved in UserDefaults like in servers

    Note: This release contains anonymous AppCenter analytics. Opt-out will be added in the (near) future. Analytics events are stored for up to 28 days, and doesn't include any identifiable information.


    What's Changed

    • Added SwiftLint by @Candygoblen123 in https://github.com/SwiftcordApp/Swiftcord/pull/49
    • Butter: Performance optimisations 🧈 by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/51
    • Drag'n'drop to attach files by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/52
    • Update to match API changes to the User type in DiscordKit by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/54
    • Use Decoded Dates by @charxene in https://github.com/SwiftcordApp/Swiftcord/pull/55
    • Use the provided Calendar method to determine if two dates are on the same day by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/57
    • Setup AppCenter's app secret in a way that doesn't expose it by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/58
    • Use the correct org/app structure for AppCenter’s app ID by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/59
    • Move the AppCenter secret to it’s own configuration by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/60
    • Respect the system’s current light/dark theme by @tonyarnold in https://github.com/SwiftcordApp/Swiftcord/pull/61

    New Contributors

    • @tonyarnold made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/54
    • @charxene made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/55

    Sponsors

    • @selimgr Sponsors the project since 20 May 2022 <3 Sponsoring the project will allow me to continue working on it and invest on more services related to it!

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.4.0...v0.4.1

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.1.dmg(6.64 MB)
    Swiftcord8-7.delta(2.05 MB)
  • v0.4.0(May 26, 2022)

    This release includes new major feature and bug fixes.


    What's Changed

    • Add Sparkle Auto-Updater by @Candygoblen123 in https://github.com/SwiftcordApp/Swiftcord/pull/44
    • First class DM support by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/41

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.3.2...v0.4.0

    Sponsors

    A big thanks to all contributors and sponsors!

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.4.0.dmg(5.87 MB)
  • v0.3.2(May 24, 2022)

    What's Changed

    • Remove Starscream Dependency + Rewrite WebSocket Wrapper by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/10
    • Icon Change by @bentettmar in https://github.com/SwiftcordApp/Swiftcord/pull/11
    • Updated Icon Image Sizes by @ingleanthony in https://github.com/SwiftcordApp/Swiftcord/pull/16
    • Added zoom button, adjusted sidebar and channel buttons by @ingleanthony in https://github.com/SwiftcordApp/Swiftcord/pull/19
    • Various Channel List/Button Improvements by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/20
    • Implemented attachment downloading, previews, download progress and caching by @ingleanthony in https://github.com/SwiftcordApp/Swiftcord/pull/21
    • Audio Manager - Queue and control audio playback in one place! by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/22
    • Fix crash with force-unwrapped optional by @marcprux in https://github.com/SwiftcordApp/Swiftcord/pull/28
    • More official implementation by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/30
    • Refactors & improvements by @rrroyal in https://github.com/SwiftcordApp/Swiftcord/pull/32
    • Fix keychain key collisions, add gh action for building commits by @Candygoblen123 in https://github.com/SwiftcordApp/Swiftcord/pull/34
    • Message Attachment Support by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/35
    • Move DiscordAPI to Swift Package by @rrroyal in https://github.com/SwiftcordApp/Swiftcord/pull/36
    • RichEmbeds fix by @selimgr in https://github.com/SwiftcordApp/Swiftcord/pull/38
    • Proper cache updating/updated data propagation by @cryptoAlgorithm in https://github.com/SwiftcordApp/Swiftcord/pull/39
    • Link Binary with AVKit to fix "Failed to demangle VideoPlayerView" crash by @Candygoblen123 in https://github.com/SwiftcordApp/Swiftcord/pull/43

    New Contributors

    • @cryptoAlgorithm made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/10
    • @bentettmar made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/11
    • @ingleanthony made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/16
    • @marcprux made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/28
    • @rrroyal made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/32
    • @Candygoblen123 made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/34
    • @selimgr made their first contribution in https://github.com/SwiftcordApp/Swiftcord/pull/38

    Full Changelog: https://github.com/SwiftcordApp/Swiftcord/compare/v0.1.0...v0.3.2

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.0.3.2.dmg(5.76 MB)
  • v0.2.2(3)(Apr 14, 2022)

    This release is built from latest commits in the #native-urlsession-websocket branch, which contains a completely rewritten WebSocket wrapper (RobustWebSocket.swift). Various manual tests have been carried out, and it seems to perform quite reliably in those circumstances. However, I cannot simulate every network condition, so if you happen to come across a bug, please create an issue and include the console output for debugging :D

    Once again, thanks for testing Swiftcord! It means a lot to me <3

    macOS might flag Swiftcord as malware, and not allow you to open it since I did not sign it with a dev account. To open Swiftcord, you have to right click the app, and click run.

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.zip(3.75 MB)
  • v0.1.0(Apr 13, 2022)

    I'm creating a pre-built release with version 0.1.0, for those who are interested in trying out Swiftcord but can't build the app from source.

    You'd need to unzip the zip, then right-click on the .app package and click run (shown below) since I did not sign the app with an apple developer account. Screen Shot 2022-04-13 at 11 06 19 AM

    Known Issues

    • Channel list buttons are not styled properly - This is a temporary UI issue
    • Scrolling lags and "hitches" - I'm currently trying to fix this performance issue, it's something to do with the way I'm decoding and handling Discord Gateway messages from the WebSocket (its not the most efficient)
    • All DMs do not have proper names (they just appear as #) - This is also being worked on currently

    Thanks for trying out Swiftcord! It means a lot to me :)

    If you run into any bugs, or have suggestions, feel free to leave a comment in the discussion for this release (click on the Join Discussion button at the bottom right, or click here) <3

    Full Changelog: https://github.com/cryptoAlgorithm/Swiftcord/commits/v0.1.0

    Source code(tar.gz)
    Source code(zip)
    Swiftcord.zip(5.48 MB)
Owner
CryptoAlgo-Dev
Developing Chatty, a secure end-to-end encrypted and annonymous online chatting app. Take a look at my README to see more projects/stats!
CryptoAlgo-Dev
100-Days-of-SwiftUI - Studying through Paul Hudson's 100 Days of SwiftUI

Hacking with SwiftUI 100 Days of SwiftUI Studying through Paul Hudson's "100 Day

Dean Thompson 3 Aug 29, 2022
Quotes App is quotes browsing app which is built with Quotable Free API completely in SwiftUI.

Quotes App is quotes browsing app which is built with Quotable Free API completely in SwiftUI. You can watch the whole journey of building this

Dheeraj Kumar Sharma 32 Nov 22, 2022
Quotes App - quotes browsing app which is built with Quotable Free API completely in UIKit

Quotes App is quotes browsing app which is built with Quotable Free API completely in UIKit

Mohammed Sulaiman 1 Jan 7, 2023
🎲 100% SwiftUI 2.0, classic 2048 game [SwiftUI 2.0, iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Swift 5.3].

swiftui-2048 If you like the project, please give it a star ⭐ It will show the creator your appreciation and help others to discover the repo. ✍️ Abou

Astemir Eleev 174 Dec 17, 2022
This SwiftUI project is a result of the third 'milestone' in "Hacking With Swift's 100 Days of SwiftUI".

exercise-tracker This SwiftUI project is a result of the third 'milestone' in "Hacking With Swift's 100 Days of SwiftUI". In this exercise tracking ap

Eric Tolson 2 Dec 14, 2022
Seaglass is a truly native macOS client for Matrix. It is written in Swift and uses the Cocoa user interface framework.

Seaglass is a truly native macOS client for Matrix. It is written in Swift and uses the Cocoa user interface framework.

null 1 Jan 17, 2022
100-Days-of-SwiftUI - a free online course created and delivered by Paul Hudson

100-Days-of-SwiftUI DESCRIPTION 100 Days of SwiftUI is a free online course crea

null 0 Jan 9, 2022
All the projects from 100 Days of SwiftUI, as taught by Paul Hudson (Hacking with Swift)

100 Days of SwiftUI 19 projects of increasing complexity built with SwiftUI. These projects were built as part of an iOS development course taught by

Emmanuel Chucks 7 Dec 4, 2022
E-commerce app built in SwiftUI. Built in the course SwiftUI Masterclass in Udemy.

Touchdown-SwiftUI E-commerce app built in SwiftUI. Built in the course SwiftUI Masterclass in Udemy. Main components and concepts used: @EnvironmentOb

Jorge Martinez 5 Aug 18, 2022
A customizable Snapping Drawer à la Apple Maps.

 100% in SwiftUI.

Snap A customizable Snapping Drawer à la Apple Maps, Apple Music, Stocks, Overcast, etc.. 100% in SwiftUI This is heavily inspired by Rideau and based

Mathias Quintero 632 Jan 4, 2023
Riddler is a riddle game built as a native iOS app in Swift using SwiftUI

Riddler is a riddle game built as a native iOS app in Swift using SwiftUI. It includes 50 challenging riddles with hints for when you get stuck. The game tracks your stats so you can compare your performance against your friends, and see who can answer all 50 riddles the quickest.

Oliver Stenning 3 Nov 23, 2022
Native iOS app built in SwiftUI, displays a collection of user's books.

Native iOS app built in SwiftUI, displays a collection of user's books.

Matthew Eilar 1 May 23, 2022
A cross-platform Reddit client built in SwiftUI

A cross-platform Reddit client created in SwiftUI. Get the Public Beta Note: This project is far from complete. It still lacks many features of your t

Carson Katri 1.2k Dec 25, 2022
Tanukis-Stash - Open source e621 client for iOS built with SwiftUI

The Tanuki's Stash The worlds first e621 client for iOS, iPadOS, and macOS built

Jay 3 Jul 29, 2022
Swift iPhone and iPad Client for Polls API, using Hyperdrive API client

Polls Client This is a Swift iPhone and iPad client for the Polls API - a simple application allowing users to view polls and vote in them. Polls is a

Apiary 34 Jul 15, 2022
Native Jellyfin Client for iOS and tvOS

Swiftfin Swiftfin is a modern client for the Jellyfin media server. Redesigned in Swift to maximize direct play with the power of VLC and look native

Jellyfin 1.1k Jan 6, 2023
RippleQueries is an iOS application built as assessment task at Ripple Egypt. Built Using MVVM (Model-View-ViewModel) and Clean Architecture concepts

RippleRepositories RippleRepositories is an iOS application built as an assessment task at Ripple Egypt. Built Using RxSwift & MVVM (Model-View-ViewMo

Muhammad Ewaily 3 Sep 16, 2021
A weather app developed in React Native. It is the React Native version of SwiftWeather.

ReactNativeWeather A weather app developed in React Native. It is the React Native version of SwiftWeather How to run the app Install react-native If

Jake Lin 22 Jun 7, 2022
iOS app that detects LaTeX symbols from drawings. Built using PencilKit, SwiftUI, Combine and CoreML for iOS 14 and macOS 11.

DeTeXt Finding the symbol you want to use in LaTeX can be hard since you can't memorize all the possible commands and packages for every symbol you mi

Venkat 73 Dec 8, 2022