CollabApp

An alternative Slack client written in Swift, optimized for Mac

66
6
Swift

Inactive as Slack does not allow just any workspace to create legacy tokens anymore, there is not much of a point on continueing development (for me at least). I might pick it back up once slack might release some more flexible (non app) authentication methods. However I am not expecting anyting like this soon.

If you want to continue development. Feel free to create merge requests, I will review and approve, or give maintainership.

CollabApp

(Formerly SlackDesk)

An alternative client for Slack written in swift. V2.

Short demo:
SlackDesk screenshot

The app is adaptive to the MacOs color scheme (light/dark) 💪

Why?

The official client for me was pretty resource heavy. With around 8 teams active
the memory consumption was above 1GB.

This inspired me, together with my interest in learning a new programming
language to develop a simpler client, natively for os x.

The client is build with the vision of giving as much of the features, but to
keep it from being distractive and resource heavy

LOW! 🙏 Memory usage (as per demo):

SlackDesk memory screenshot

Disclaimer

This is my first project I have ever written in Swift. I am pretty sure that many
improvements can be made (and will be made) over time. Feel free to point me to
better implementation techniques if you feel they can improve the client.

Pull requests and bug reports are welcome!

What works?

  • Multiple clients using legacy tokens
  • Chatting
  • Groups, private channels, public channels
  • User list with status
  • Links and markdown rendering of messages
  • Emoji rendering (most of them) 💪
  • Live adding of channels via other clients
  • Notification of new messages (without control)
  • Links to files
  • Drag and drop file uploads 🤳

What does not work

Many things, but that is the point. I will try to add more features but I will
add them one by one:

  • Inline Image viewing (File links are already present)
  • Snippet viewing
  • Channel creation
  • Notification manager
  • Status manager
  • Suggest yours!

If you want a full featured Slack client, you should use the official client.
However, the end goal is to implement every feature into collabApp

Usage

Download the latest release and copy it to your applications
folder.

Then go and create legacy tokens

Last is to add the legacy tokens to the settings pane (CMD+,)

Restart the client for the new connections to be initialized.

Developing

If you would like to contribute, clone the repository.

As this project is using CocoaPods, you should run pod install after cloning.

After running pod install open the collabapp.xcworkspace

All code goes thorough pull requests together with an issue explaining the
motivation for the code.

All help is welcome and much appreciated.

Tests

Some basic testing is implemented.

For mocking a websocket we can use the following:

gem install em-websocket --user-install
gem install faker --user-install

ruby mock_server.rb