Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: SwiftcordApp/Swiftcord
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.4.5
Choose a base ref
...
head repository: SwiftcordApp/Swiftcord
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.4.6
Choose a head ref

Commits on Aug 3, 2022

  1. Translated using Weblate (Chinese (Simplified))

    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/zh_Hans/
    cryptoAlgorithm authored and weblate committed Aug 3, 2022
    Copy the full SHA
    13b42aa View commit details
  2. Translated using Weblate (Russian)

    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ru/
    Andrew-71 authored and weblate committed Aug 3, 2022
    Copy the full SHA
    99605b5 View commit details
  3. Copy the full SHA
    38be54a View commit details
  4. Translated using Weblate (Korean)

    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    jnghyk authored and weblate committed Aug 3, 2022
    Copy the full SHA
    a398e6c View commit details
  5. Translated using Weblate (Chinese (Traditional))

    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/zh_Hant/
    jimmy1720 authored and weblate committed Aug 3, 2022
    Copy the full SHA
    8968a24 View commit details
  6. Added translation using Weblate (Turkish)

    metezd authored and weblate committed Aug 3, 2022
    Copy the full SHA
    3d76207 View commit details
  7. Translated using Weblate (Turkish)

    Currently translated at 17.0% (14 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/tr/
    metezd authored and weblate committed Aug 3, 2022
    Copy the full SHA
    f56815a View commit details
  8. Translated using Weblate (Turkish)

    Currently translated at 95.1% (78 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/tr/
    metezd authored and weblate committed Aug 3, 2022
    Copy the full SHA
    2a269a7 View commit details
  9. Translated using Weblate (Korean)

    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    jnghyk authored and weblate committed Aug 3, 2022
    Copy the full SHA
    71ea0a4 View commit details
  10. Translated using Weblate (Korean)

    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    jnghyk authored and weblate committed Aug 3, 2022
    Copy the full SHA
    5f857c1 View commit details

Commits on Aug 6, 2022

  1. Translated using Weblate (German)

    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/de/
    cxt authored and weblate committed Aug 6, 2022
    Copy the full SHA
    0b0539b View commit details

Commits on Aug 7, 2022

  1. Copy the full SHA
    763900e View commit details
  2. Squash and merge new Weblate translations

    Translated using Weblate (Chinese (Simplified))
    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/zh_Hans/
    
    Translated using Weblate (Russian)
    
    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ru/
    
    Added translation using Weblate (Chinese (Traditional))
    
    Translated using Weblate (Korean)
    
    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    Translated using Weblate (Chinese (Traditional))
    
    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/zh_Hant/
    
    Added translation using Weblate (Turkish)
    
    Translated using Weblate (Turkish)
    
    Currently translated at 17.0% (14 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/tr/
    
    Translated using Weblate (Turkish)
    
    Currently translated at 95.1% (78 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/tr/
    
    Translated using Weblate (Korean)
    
    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    Translated using Weblate (Korean)
    
    Currently translated at 98.7% (81 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    Translated using Weblate (German)
    
    Currently translated at 100.0% (82 of 82 strings)
    
    Translation: Swiftcord/Swiftcord
    Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/de/
    cryptoAlgorithm committed Aug 7, 2022
    Copy the full SHA
    409ffa5 View commit details
  3. Copy the full SHA
    ba56469 View commit details
  4. Copy the full SHA
    cc4cfa4 View commit details
  5. Copy the full SHA
    9e8ccb1 View commit details
  6. Copy the full SHA
    78e5ae1 View commit details
  7. Update sponsors in readme

    Thanks to all sponsors!
    cryptoAlgorithm authored Aug 7, 2022
    Copy the full SHA
    fe1b3ed View commit details

Commits on Aug 8, 2022

  1. Remove local SwiftyGif pkg, use forked repo

    The PR with the 120Hz refresh bugfix hasn’t been merged into the main repo yet, so the dependancy still has to use my forked repo unfortunately
    cryptoAlgorithm committed Aug 8, 2022
    Copy the full SHA
    faefebb View commit details
  2. Revamped about section, new credits section (#96)

    * Reskin about section in settings
    
    Moved credits to its own section
    
    * Revamp credits appearance
    
    * Remove scrollview in about view
    
    * Top align about section, it looks better
    
    * Dynamically fetch contributors from gh
    
    Top 3 contributors are shown more prominently too!
    
    * Only show first 12 contributors
    
    * Allow specifying custom base in FlatButtonStyle
    
    * Fix bug in foreground text color algorithm
    
    * Classify assets in folders
    
    * Major credits section facelift
    
    Also manually updated supporters
    
    * Move all strings in credits to Localizable.strings
    
    * Move strings in about to Localizable.sttings too
    
    * Finishing touches - analytics, UI touchup
    
    Analytics to find click-through rate of supporters
    cryptoAlgorithm authored Aug 8, 2022
    Copy the full SHA
    442a8c1 View commit details

Commits on Aug 10, 2022

  1. Allow SwiftyGifView to be sized with .frame

    Supplying width and height arguments are no longer required
    cryptoAlgorithm committed Aug 10, 2022
    Copy the full SHA
    c34cb21 View commit details
  2. Optimisation: play/pause animation when required

    Instead of switching between a CachedImageView and SwiftyGifView
    cryptoAlgorithm committed Aug 10, 2022
    Copy the full SHA
    161bc02 View commit details
  3. Copy the full SHA
    a05f652 View commit details

Commits on Aug 11, 2022

  1. Major Keychain helper cleanup

    Run blocking operations on the utility DispatchQueue to prevent hanging the main thread
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    0a44232 View commit details
  2. UI bugfixes and optimisations

    * Use BetterImageView where possible to increase conciseness
    * Remove animation from server button when pressed (like Discord)
    * Make channel icon in message list header align with the official client
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    36a59cd View commit details
  3. Support more message types!

    Newly supported types:
    * 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)
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    bbd5e1b View commit details
  4. Copy the full SHA
    b4e22a0 View commit details
  5. Render replies to “action messages” properly

    Note: Every commit from now onwards expects that Message is a class and referenced_message is of type Message.
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    5d29118 View commit details
  6. Squashed commit of the following:

    commit c54920f
    Author: cxt <accounts@cxt.sh>
    Date:   Mon Aug 8 18:23:17 2022 +0000
    
        Translated using Weblate (German)
    
        Currently translated at 98.1% (106 of 108 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/de/
    
    commit 81cde3d
    Author: jnghyk <voydebokne@vusra.com>
    Date:   Mon Aug 8 11:37:50 2022 +0000
    
        Translated using Weblate (Korean)
    
        Currently translated at 100.0% (82 of 82 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    commit dfc2c03
    Author: jnghyk <voydebokne@vusra.com>
    Date:   Mon Aug 8 11:15:47 2022 +0000
    
        Translated using Weblate (Korean)
    
        Currently translated at 98.7% (81 of 82 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    commit 8782877
    Author: vinkwok <cryptoalgro@gmail.com>
    Date:   Thu Aug 4 22:24:03 2022 +0800
    
        Initial reply UI
    
    commit 0b2fc65
    Author: vinkwok <cryptoalgro@gmail.com>
    Date:   Wed Aug 10 18:38:36 2022 +0800
    
        Optimisation: play/pause animation when required
    
        Instead of switching between a CachedImageView and SwiftyGifView
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    0cdb7f6 View commit details
  7. Fix mergingWithPartialMsg: return new instance

    Self cannot be mutated since mutable functions don’t exist in classes, so return a new instance instead. This should fix this actions build failure.
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    87bb3f2 View commit details
  8. Lock DiscordKit commit hash

    In progress of debugging some GitHub actions issue. Also includes minor pixel-perfection improvements.
    cryptoAlgorithm committed Aug 11, 2022
    Copy the full SHA
    f8b4a24 View commit details
  9. Reply support (#98)

    * Initial reply UI
    
    * Reply POC, move everything to a ViewModel
    
    This is obviously not how a ViewModel is used, but this commit was growing a little too big for comfort.
    
    * Minor cleanup
    
    * Allow SwiftyGifView to be sized with .frame
    
    Supplying width and height arguments are no longer required
    
    * Optimisation: play/pause animation when required
    
    Instead of switching between a CachedImageView and SwiftyGifView
    
    * Fix README typo, summarise some points
    
    * Major Keychain helper cleanup
    
    Run blocking operations on the utility DispatchQueue to prevent hanging the main thread
    
    * UI bugfixes and optimisations
    
    * Use BetterImageView where possible to increase conciseness
    * Remove animation from server button when pressed (like Discord)
    * Make channel icon in message list header align with the official client
    
    * Support more message types!
    
    Newly supported types:
    * 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)
    
    * Put message rendering views in their own folder
    
    * Render replies to “action messages” properly
    
    Note: Every commit from now onwards expects that Message is a class and referenced_message is of type Message.
    
    * Squashed commit of the following:
    
    commit c54920f
    Author: cxt <accounts@cxt.sh>
    Date:   Mon Aug 8 18:23:17 2022 +0000
    
        Translated using Weblate (German)
    
        Currently translated at 98.1% (106 of 108 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/de/
    
    commit 81cde3d
    Author: jnghyk <voydebokne@vusra.com>
    Date:   Mon Aug 8 11:37:50 2022 +0000
    
        Translated using Weblate (Korean)
    
        Currently translated at 100.0% (82 of 82 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    commit dfc2c03
    Author: jnghyk <voydebokne@vusra.com>
    Date:   Mon Aug 8 11:15:47 2022 +0000
    
        Translated using Weblate (Korean)
    
        Currently translated at 98.7% (81 of 82 strings)
    
        Translation: Swiftcord/Swiftcord
        Translate-URL: https://hosted.weblate.org/projects/swiftcord/swiftcord/ko/
    
    commit 8782877
    Author: vinkwok <cryptoalgro@gmail.com>
    Date:   Thu Aug 4 22:24:03 2022 +0800
    
        Initial reply UI
    
    commit 0b2fc65
    Author: vinkwok <cryptoalgro@gmail.com>
    Date:   Wed Aug 10 18:38:36 2022 +0800
    
        Optimisation: play/pause animation when required
    
        Instead of switching between a CachedImageView and SwiftyGifView
    
    * Fix mergingWithPartialMsg: return new instance
    
    Self cannot be mutated since mutable functions don’t exist in classes, so return a new instance instead. This should fix this actions build failure.
    
    * Lock DiscordKit commit hash
    
    In progress of debugging some GitHub actions issue. Also includes minor pixel-perfection improvements.
    
    * Lock DiscordKit commit hash
    
    In progress of debugging some GitHub actions issue. Also includes minor pixel-perfection improvements.
    
    * Rebase main onto reply
    
    * Refactor reply UI
    
    No longer uses the flaky MessageInfoBarView method
    
    * Allow turning off (or on) referenced author ping
    cryptoAlgorithm authored Aug 11, 2022
    Copy the full SHA
    fa10cdc View commit details

Commits on Aug 13, 2022

  1. Squash commits: nightly build action improvements

    * Use Xcode 14 beta
    * Switch build to use the xcodeproj instead of the workspace
    
    Run Xcode-select manually to select Xcode 14
    
    Improve nightly action build
    
    * Derived data is cached to (hopefully) speed up build times
    * Combined a step - install step can be combined with create-dmg step
    * Add 15-min action timeout
    
    Update nightly action cache key
    
    Also increased timeout to 30 mins, 15 mins is cutting it too close
    
    Update nightly build badge with new nightly action name
    cryptoAlgorithm committed Aug 13, 2022
    Copy the full SHA
    9a10c5a View commit details

Commits on Aug 19, 2022

  1. Do not run build action for PRs

    Secrets aren't available there, causing failed runs.
    cryptoAlgorithm authored Aug 19, 2022
    Copy the full SHA
    961de1c View commit details
  2. Hide edit cotext button on non-owned messages (#101)

    Dan Maywood authored Aug 19, 2022
    Copy the full SHA
    8a44940 View commit details

Commits on Aug 24, 2022

  1. Add new sponsor

    cryptoAlgorithm committed Aug 24, 2022
    Copy the full SHA
    12352d0 View commit details

Commits on Aug 26, 2022

  1. Migrate from AppCenterCrashes to Sentry (#104)

    * feat: add and init sentry sdk
    
    * patch: update setting string regarding crashes
    
    * patch: add sentry symbol upload build phase
    
    * fix: sentry symbol upload build script auth tokens
    cryptoAlgorithm committed Aug 26, 2022
    Copy the full SHA
    ba62b48 View commit details

Commits on Aug 27, 2022

  1. Copy the full SHA
    a941821 View commit details
  2. Copy the full SHA
    74379e1 View commit details
  3. Copy the full SHA
    85d8862 View commit details
  4. Copy the full SHA
    81f0184 View commit details
  5. Copy the full SHA
    53a55c6 View commit details
Showing with 1,713 additions and 810 deletions.
  1. +29 −23 .github/workflows/main.yml
  2. +22 −0 .github/workflows/release.yaml
  3. +26 −55 README.md
  4. +139 −59 Swiftcord.xcodeproj/project.pbxproj
  5. +43 −8 Swiftcord.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
  6. +1 −0 Swiftcord.xcodeproj/xcshareddata/xcschemes/Swiftcord.xcscheme
  7. +73 −67 Swiftcord.xcworkspace/xcshareddata/swiftpm/Package.resolved
  8. +13 −3 Swiftcord/AppDelegate.swift
  9. 0 Swiftcord/Assets.xcassets/{ → Badges}/BugHunter.imageset/Contents.json
  10. 0 Swiftcord/Assets.xcassets/{ → Badges}/BugHunter.imageset/bugHunter.svg
  11. 0 Swiftcord/Assets.xcassets/{ → Badges}/CertifiedModerator.imageset/Contents.json
  12. 0 Swiftcord/Assets.xcassets/{ → Badges}/CertifiedModerator.imageset/certifiedModerator.svg
  13. +6 −0 Swiftcord/Assets.xcassets/Badges/Contents.json
  14. 0 Swiftcord/Assets.xcassets/{ → Badges}/DiscordStaff.imageset/Contents.json
  15. 0 Swiftcord/Assets.xcassets/{ → Badges}/DiscordStaff.imageset/discordStaff.svg
  16. 0 Swiftcord/Assets.xcassets/{ → Badges}/EarlySupporter.imageset/Contents.json
  17. 0 Swiftcord/Assets.xcassets/{ → Badges}/EarlySupporter.imageset/earlySupporter.svg
  18. 0 Swiftcord/Assets.xcassets/{ → Badges}/EarlyVerifiedBotDev.imageset/Contents.json
  19. 0 Swiftcord/Assets.xcassets/{ → Badges}/EarlyVerifiedBotDev.imageset/earlyVerifiedBotDev.svg
  20. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBalance.imageset/Contents.json
  21. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBalance.imageset/hypesquadBalance.svg
  22. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBravery.imageset/Contents.json
  23. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBravery.imageset/bravery.svg
  24. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBrilliance.imageset/Contents.json
  25. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadBrilliance.imageset/hypesquadBrilliance.svg
  26. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadEvents.imageset/Contents.json
  27. 0 Swiftcord/Assets.xcassets/{ → Badges}/HypesquadEvents.imageset/hypesquadEvents.svg
  28. 0 Swiftcord/Assets.xcassets/{ → Badges}/NitroSubscriber.imageset/Contents.json
  29. 0 Swiftcord/Assets.xcassets/{ → Badges}/NitroSubscriber.imageset/nitroSubscriber.svg
  30. +6 −0 Swiftcord/Assets.xcassets/Large Backgrounds/Contents.json
  31. 0 Swiftcord/Assets.xcassets/{ → Large Backgrounds}/LoginBackground.imageset/Contents.json
  32. BIN Swiftcord/Assets.xcassets/{ → Large Backgrounds}/LoginBackground.imageset/LoginBackground.png
  33. 0 Swiftcord/Assets.xcassets/{ → Large Backgrounds}/NoDMs.imageset/Contents.json
  34. 0 Swiftcord/Assets.xcassets/{ → Large Backgrounds}/NoDMs.imageset/wump.svg
  35. 0 Swiftcord/Assets.xcassets/{ → Large Backgrounds}/NoGuildChannels.imageset/Contents.json
  36. 0 Swiftcord/Assets.xcassets/{ → Large Backgrounds}/NoGuildChannels.imageset/noServerChannels.svg
  37. +6 −0 Swiftcord/Assets.xcassets/Nitro Gradient/Contents.json
  38. +38 −0 Swiftcord/Assets.xcassets/Nitro Gradient/NitroGradientEnd.colorset/Contents.json
  39. +38 −0 Swiftcord/Assets.xcassets/Nitro Gradient/NitroGradientMiddle.colorset/Contents.json
  40. +38 −0 Swiftcord/Assets.xcassets/Nitro Gradient/NitroGradientStart.colorset/Contents.json
  41. +3 −1 Swiftcord/ButtonStyles/FlatButtonStyle.swift
  42. +1 −0 Swiftcord/Utils/AnalyticsWrapper.swift
  43. +5 −8 Swiftcord/Utils/Extensions/Color+.swift
  44. +45 −28 Swiftcord/Utils/Extensions/MessagesView+.swift
  45. +22 −2 Swiftcord/Utils/GitHub/GitHubAPI.swift
  46. +23 −0 Swiftcord/Utils/GitHub/GitHubStructs.swift
  47. +37 −29 Swiftcord/Utils/Keychain.swift
  48. +32 −24 Swiftcord/Utils/MergeStructs/MergePartialMessage.swift
  49. +38 −0 Swiftcord/ViewModels/MessagesViewModel.swift
  50. +1 −1 Swiftcord/Views/Message/Attachment/AttachmentGif.swift
  51. +13 −8 Swiftcord/Views/Message/MessageInfoBarView.swift
  52. +58 −0 Swiftcord/Views/Message/MessageInputReplyView.swift
  53. +12 −6 Swiftcord/Views/Message/MessageInputView.swift
  54. +93 −0 Swiftcord/Views/Message/MessageRenderViews/ActionMessageView.swift
  55. +57 −0 Swiftcord/Views/Message/MessageRenderViews/DefaultMessageView.swift
  56. 0 Swiftcord/Views/Message/{ → MessageRenderViews}/LoFiMessageView.swift
  57. +30 −61 Swiftcord/Views/Message/{ → MessageRenderViews}/MessageView.swift
  58. +85 −0 Swiftcord/Views/Message/MessageRenderViews/ReferenceMessageView.swift
  59. +109 −100 Swiftcord/Views/Message/MessagesView.swift
  60. +0 −79 Swiftcord/Views/Message/ReferenceMessageView.swift
  61. +3 −1 Swiftcord/Views/Server/ChannelButton.swift
  62. +7 −13 Swiftcord/Views/Server/ServerButton.swift
  63. +21 −98 Swiftcord/Views/Settings/Misc/AboutSwiftcordView.swift
  64. +259 −0 Swiftcord/Views/Settings/Misc/CreditsView.swift
  65. +8 −1 Swiftcord/Views/Settings/Misc/MiscSettingsView.swift
  66. +6 −11 Swiftcord/Views/User/CurrentUserFooter.swift
  67. +2 −2 Swiftcord/Views/User/Profile/MiniUserProfileView.swift
  68. +48 −62 Swiftcord/Views/User/UserAvatarView.swift
  69. +38 −0 Swiftcord/Views/Utils/BetterImageView.swift
  70. +44 −26 Swiftcord/Views/Utils/SwiftyGif/SwiftyGifNSView.swift
  71. +8 −3 Swiftcord/Views/Utils/SwiftyGif/SwiftyGifView.swift
  72. +77 −25 Swiftcord/de.lproj/Localizable.strings
  73. +29 −1 Swiftcord/en.lproj/Localizable.strings
  74. +5 −5 Swiftcord/ko.lproj/Localizable.strings
  75. +16 −0 appcast.xml
52 changes: 29 additions & 23 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# This is a basic workflow to help you get started with Actions

name: Build Canary
name: Build Nightly

# Controls when the workflow will run
on:
@@ -14,16 +12,34 @@ on:
jobs:
build_nightly_release:
runs-on: macos-12
timeout-minutes: 30 # If a build exceeds 30 mins, it probably isn't ever going to complete

steps:
- name: "Checkout Project"
uses: actions/checkout@v3
- uses: actions/checkout@v3

- name: "Select Xcode 13.3.1"
uses: devbotsxyz/xcode-select@main
- name: "Select Xcode 14.0"
run: sudo xcode-select -s /Applications/Xcode_14.0.app

### Caching
- uses: actions/cache@v2
name: "Cache Derived Data"
with:
version: "13.4.1"
path: |
~/Library/Developer/Xcode/DerivedData/Swiftcord-*/Build
~/Library/Developer/Xcode/DerivedData/Swiftcord-*/SourcePackages
key: ${{ runner.os }}-derivedData-cache-${{ hashFiles(
'Swiftcord.xcworkspace/xcshareddata/swiftpm/Package.resolved',
'Swiftcord.xcodeproj/xcshareddata/swiftpm/Package.resolved'
) }} # The xcworkspace will be removed soon
restore-keys: |
${{ runner.os }}-derivedData-cache
- name: Avoid inode changes for DerivedData
run: defaults write com.apple.dt.XCBuild IgnoreFileSystemDeviceInodeChanges -bool YES

- name: Install sentry-cli
run: curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="2.5.2" bash

### Certs
- name: "Import Certificate: Development"
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.DEVELOPMENT_CERTIFICATE_DATA }}
@@ -68,22 +84,19 @@ jobs:
TEAMID=`awk -F '=' '/DEVELOPMENT_TEAM/ {print $2; exit}' Swiftcord.xcodeproj/project.pbxproj`
sed -i '' "s/$TEAMID/ RJNC97Y8QD;/g" Swiftcord.xcodeproj/project.pbxproj
- name: "Archive"
- name: "Create Release Build Archive"
run: |
xcodebuild -workspace Swiftcord.xcworkspace -scheme Swiftcord -configuration Release archive -archivePath Swiftcord.xcarchive \
COMPILER_INDEX_STORE_ENABLE=NO APPCENTER_APP_SECRET="${{ secrets.APPCENTER_APP_SECRET }}" "OTHER_CODE_SIGN_FLAGS=--keychain $RUNNER_TEMP/app-signing.keychain-db" | xcpretty
xcodebuild -project Swiftcord.xcodeproj -scheme Swiftcord -configuration Release archive -archivePath Swiftcord.xcarchive \
COMPILER_INDEX_STORE_ENABLE=NO APPCENTER_APP_SECRET="${{ secrets.APPCENTER_APP_SECRET }}" SENTRY_API_TOKEN="${{ secrets.SENTRY_API_TOKEN }}" "OTHER_CODE_SIGN_FLAGS=--keychain $RUNNER_TEMP/app-signing.keychain-db" | xcpretty
- name: "Export & Sign Release Build"
uses: devbotsxyz/xcode-export-archive@main
with:
workspace: Swiftcord.xcworkspace
scheme: Swiftcord

- name: Install create-dmg
run: npm install --global create-dmg

- name: Make Release Dmg
run: create-dmg Export/Swiftcord.app
- name: Create Release DMG
run: npm install --global create-dmg && create-dmg Export/Swiftcord.app

- name: "Notarize Release Build"
run: |
@@ -100,13 +113,6 @@ jobs:
name: Swiftcord_Canary # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path: Swiftcord*.dmg

- name: "Upload debugging symbols to App Center"
run: |
appcenter crashes upload-symbols \
--token "${{ secrets.APPCENTER_API_TOKEN }}" \
--app "Swiftcord/Swiftcord" \
--xcarchive "Swiftcord.xcarchive"

- name: Clean up keychain and provisioning profile
if: ${{ always() }}
22 changes: 22 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Post-release

on:
release:
types: [published]
# Can be manually dispatched too
workflow_dispatch:

jobs:
postrelease:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
with:
environment: production
version: ${{ github.ref }}
81 changes: 26 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
<p align="center"><image src="Swiftcord/Assets.xcassets/AppIcon.appiconset/Picture 1.png" width="196px" height="196px" /></p>

<h1 align="center">Swiftcord</h1>
<p align="center">A completely native Discord client for macOS built 100% in Swift and SwiftUI</p>
<p align="center">Native Discord client for macOS built in Swift and SwiftUI</p>

<image src="README_Resources/heroScreenshot.png" width="100%" alt="Viewing the general-talk channel in the r/MacBookPro server in Swiftcord" />

[![Lines of code](https://img.shields.io/tokei/lines/github/SwiftcordApp/Swiftcord?style=for-the-badge)]()
[![Discord](https://img.shields.io/discord/964741354112577557?color=rgb%2888%2C101%2C242%29&label=discord&style=for-the-badge)](https://discord.gg/he7n6MGDXS)
[![GitHub Repo stars](https://img.shields.io/github/stars/cryptoAlgorithm/Swiftcord?color=%23FECF0F&style=for-the-badge)](https://github.com/SwiftcordApp/Swiftcord/stargazers)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/cryptoAlgorithm?label=buy%20me%20a%20coffee&logo=buymeacoffee&style=for-the-badge)](https://github.com/sponsors/cryptoAlgorithm)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/cryptoAlgorithm?label=Sponsor%20Me!&logo=buymeacoffee&style=for-the-badge)](https://github.com/sponsors/cryptoAlgorithm)
[![Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Dcryptoalgo%26type%3Dpatrons&style=for-the-badge)](https://www.patreon.com/cryptoAlgo)
[![Weblate project translated](https://img.shields.io/weblate/progress/swiftcord?style=for-the-badge)](https://hosted.weblate.org/projects/swiftcord/swiftcord/)

---
@@ -19,17 +20,29 @@ client in Swift for macOS from scratch.
I'd also recommend checking out [DiscordKit](https://github.com/SwiftcordApp/DiscordKit),
the Discord API implementation Swiftcord relies on.

**If you like this project, please give it a ⭐ star! It helps motivate
**If you like this project, please smash the star button and be one of my stargazers 🌟! It helps motivate
me to continue developing it**

**Consider buying me a coffee ☕️ by sponsoring Swiftcord!**
**Consider supporting me and Swiftcord's development by sponsoring me through [GitHub Sponsors](https://github.com/sponsors/cryptoAlgorithm) or [Patreon](https://patreon.com/cryptoAlgo)! It would help ensure this project has a stable future :)**

## Supporters
Huge thanks to all my supporters! I'm extremely grateful to every single one of them <3
### Red-hot Supporter 🔥
It'll be mind-blowing to get red-hot supporters! Be my first red-hot supporter, and get special privileges that only you'll ever have!
Support me on [GitHub Sponsors](https://github.com/sponsors/cryptoAlgorithm) or [Patreon](https://patreon.com/cryptoAlgo)!

### Amazing Supporter 🤯
<img src="https://cxt.sh/assets/img/pfp.png" width=36 height=36 align="left" />**`cxt`** - First amazing supporter!

### Extremely Cool Supporter 🧊
* **`selimgr`** - First extremely cool supporter, and the first sponsor!
* An extremely generous anonymous supporter

## Contents
* [Motivation](#motivation)
* [Releases](#releases)
* [FAQ](#faq)
* [Current State](#current-state)
* [Roadmap](#roadmap)
* [Copyright Notice](#copyright-notice)

---
@@ -46,8 +59,8 @@ since it was relatively new to me at that time. Hence, Swiftcord was born!

## Releases

### Nightly Builds (Latest fixes/features, might be unstable)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/SwiftcordApp/Swiftcord/Build%20Canary?style=for-the-badge)](https://nightly.link/SwiftcordApp/Swiftcord/workflows/main/main/Swiftcord_Canary.zip)
### Nightly Builds (Latest fixes/features, built from the latest commit on `main`, might be unstable)
[![Nightly build action status](https://img.shields.io/github/workflow/status/SwiftcordApp/Swiftcord/Build%20Nightly?style=for-the-badge)](https://nightly.link/SwiftcordApp/Swiftcord/workflows/main/main/Swiftcord_Canary.zip)

For the latest features and fixes, [a pre-built version of the latest commit is available here](https://nightly.link/SwiftcordApp/Swiftcord/workflows/main/main/Swiftcord_Canary.zip)

@@ -84,14 +97,9 @@ to expand the answer

<details>
<summary><b>Will I get banned for using Swiftcord/Is using Swiftcord illegal?</b></summary>
Using Swiftcord <i>isn't illegal</i>. Contrary to what many people say
on various platforms, 3rd party clients (i.e. Swiftcord) <b>aren't against</b>
the Discord ToS. You can read the section in Discord's ToS regarding their software
<a href="https://discord.com/terms#software-in-discord’s-services">here</a>.
However, I <b>cannot guarantee</b> Swiftcord's use of Discord's endpoints won't
trip selfbot ban detection. As far as possible, Swiftcord aims to
use endpoints as similarly to the official client as possible, and I (the developer)
have not been banned for using Swiftcord with either my main or alt account.
Nobody really knows what Discord's official stance on unofficial clients is.
However, hundreds of people and I have been using Swiftcord for quite a while,
and nobody has been banned to date.
<i>
I do not take any responsibility for account bans due to the use of Swiftcord,
whether direct or indirect, although there's a very low possibility of that occurring.
@@ -109,7 +117,7 @@ to expand the answer
</details>
<details>
<summary><b>Swiftcord just crashed!</b></summary>
Although I'm aiming for 0 crashes (which is made easy by Swift),
Although I'm aiming for 0 crashes (which is made easier by Swift),
sometimes the unexpected happens xD. If you experience a crash, please
open an issue with appropriate information like the line the error
occurs on, relevant logs, and what you were doing that might have caused
@@ -122,7 +130,8 @@ to expand the answer

Implemented most core message-related features from the official
client, including basic markdown and embeds, stickers (lottie/PNG),
and editing and deleting events. You can now send attachments (both
and editing and deleting events. Animated media, like profile images, server icons
and profile banners are supported too! You can now send attachments (both
from the file picker and by dragging and dropping) with your messages too!
DMs now have first-class support!

@@ -136,44 +145,6 @@ with the relevant logs.

---

## Roadmap

I do not have a definite timeline for when a feature would be implemented,
and they may not necessarily be implemented in sequence.

- ✅ Gateway/REST API Implementation
- ✅ Load server list, channels, and message
- ✅ Basic message, channel, and server rendering
- ✅ Rich message rendering (stickers, embeds, markdown, media)
- ✅ Message replies
- ✅ Load and display full user profile (bio + roles)
- ✅ Save the last server and last channel viewed in servers (QoL)
- ✅ Better loading screen
- ✅ Find and request the most optimized photo size from CDN
- ⏱ Partial user and app settings
- ✅ DM and group loading
- ✅ Display DMs properly in UI
- ✅ Send DM messages
- ✅ Send attachments
- ❌ User roles + overwrites
- ❌ Message notifications
- ❌ Full list of users in a server, especially for larger servers (1000+ members)
- ✅ Ordering of channels, servers, and categories
- ❌ Threads support
- ❌ Full user settings
- ❌ Server creation
- ❌ Server discovery
- ❌ Server banner, boost widget, and other misc. boosted features
- ❌ Voice channels (ambitious)
- ❌ Video channels (very ambitious)

#### Legend:
* ✅ -> Complete
* ⏱ -> Implementation in progress
* ❌ -> Not started

---

## Copyright Notice

Copyright (c) 2022 Vincent Kwok
Loading