Slick Logo

FAQ

Questions & Answers


Q: Is this still developed?

Development is currently on hold. The version has drifted too far off the Slack system and would need some serious investment to get it up an running again. Besides other “newer” things Shrugs does not yet support “XOXC” tokens, which are often required by company Slack installations.
An OpenSource version is under consideration in case others would want to kick in to solve issues in the codebase. Stay tuned.

Q: What features are locked in the test version?

The only limitation of the test version is that it only gives access to the so called #general channel plus 4 additional conversations (channels, DMs, groups). No other limitations apply. It is only for testing though.

The `#general` channel is a special channel in a Slack workspace which can't be deleted, but renamed. Shrugs checks for the "general" channel flag, not the actual name.

Q: What features are missing in the application?

Plenty! Shrugs complements the official Slack client, it doesn’t replace it. An (incomplete) list of things which don’t work (yet):

  • Edit posted messages (big one, TBA)
  • Authentication w/ XOXC tokens
  • Loading older messages
  • Typing indicators
  • Starring & Pinning things
  • Search
  • Sharing messages
  • Screensharing and Calls (aka Screenhero)
  • Joining and creating channels

Enough work left to be done for version 1.1!

Q: How can I report bugs?

Issues can be filed in the Shrugs.app issues tracker, or send them to support@shrugs.app.

If it is a crash, please include the crashdump. The kind of the computer and the exact macOS version you are using is always useful information.

Q: Does this support other systems like Matrix or IRC?

I think that Slack is a great service and I’d like to concentrate on making Shrugs.app work well for just that. Adding additional services is possible (proof of concepts exist), but I’d prefer to do one service proper, over supporting five different ones in a half-hearted way.

Q: Is this sanctioned by Slack?

Absolutely not. Like the many other 3rd party options, this is an unofficial client, not sanctioned or endorsed by Slack in any way.

Q: What authorization type should I use?

A real “client token” (an XOXS- token), as used by most 3rd party Slack clients (like Ripcord, slack-term, Emacs Slack, etc.), enables a lot more features. When Shrugs.app is run this way, it is using unofficial Slack API, can use more functionality and doesn’t require that the Shrugs.app (or app installation) is enabled by the workspace adminstrator.

The supported way, using just the official API, is a bot token (an XOXP-). Those are associated with a Slack “application” (in the Slack app store). Either the builtin Shrugs “Slack application” can be used, or you can register your own. While a bot token has reduced functionality, it is quite OK for regular use in say a community Slack.

Q: How are updates delivered?

Shrugs uses Sparkle to deliver updates. Update checks are triggered on application startup, or manually using the “Check for Updates” menu item.

Q: Does Shrugs send messages through ZeeZide servers?

No, we don’t want your data and the liability associated with that. What you discuss in a Slack stays between you, Slack, and your workspace admins.

There are two occasions when Shrugs has to talk to ZeeZide servers:

  1. During the official authentication. Shrugs uses a small server to do a handshake necessary to acquire a Slack bot token. Note: That server does neither see your password nor your resulting token! It just helps with the key exchange. If you don't want that, you can either use client tokens or register your own Slack application.
  2. To support Sparkle updates. To check for updates, Sparkle has to grab the AppCast information (and the actual updates) from our ZeeZide server. Note that those servers do not collect any personal data to avoid any GDPR issues, see the imprint for details.

Note that Slack itself connects to various servers, e.g. during authentication. Checkout their privacy policy for details.

Q: What extra functionality does the “Support Edition” provide?

None. Using the beta program you may get smaller features as previews earlier. Yet once considered stable, we are going to release them as Shrugs updates. Buying the support edition is entirely optional.

Q: Is Shrugs available for iPads?

Shrugs is currently only available for computers running macOS 10.13 and up. Thanks to its use of UXKit, porting Shrugs to iOS is technically possible, but due to lifecycle limitations on iOS of limited use. Specifically the (WebSocket) connection to Slack can’t be kept open, effectively disabling notifications about new messages.

Q: Can you implement an application for us or provide development consulting?

Sure. I do professional software consulting and development, checkout zeezide.com to learn more about my focus areas. To get into contact, send an email to sales@zeezide.de, with details about the project you are interested in.

Q: What technology was used to build Shrugs?

Shrugs itself, including most 3rd party libs being used, is “pure” Swift code (as pure as an application using AppKit can be). The only exceptions are Sparkle (Objective-C) and SQLite3 (C). It doesn’t use SwiftUI.

The project neither uses SwiftPM, but a single framework to manage shared resources and the code is in 20 static libraries, ~130KLoc in ~800 files. Except for two generic libs (UXKit & Core/S), things are kept in a mono repo (e.g. alongside SwiftPM Catalog and HMScriptEditor).

I might be blogging more details in the future.

Q: What OpenSource software is being used?

More information about the OpenSource software being used, and some details on how, can be found in the Shrugs.app Wiki. You can also find the authoritive list in the info section of the Shrugs.app preferences panel.

Q: How do I acquire logging and other debugging data?

There is a list of environment variables to enabling various logging sections over at the Wiki: Debug Logging. The Wiki also contains information on how to query Shrugs.app SQLite cache: Querying the SQLite Cache.