chucker / Mastonaut

Simple, elegant, and native Mastodon client for Mac.
GNU General Public License v3.0
113 stars 7 forks source link
appkit macos mastodon

About

This is a fork of Mastonaut by @brunophilipe, whose original marketing page you can still look at here. His latest version 1.3.9 can still be installed from the App Store.

Some features since 1.3.9

(As of 1.9.1. Features marked with a mountain ⛰️ are also available for macOS 10.13 High Sierra through macOS 11 Big Sur; all other features require macOS 12 Monterey or newer.)

Accessibility

Composing

Notifications

Search

Timeline

Viewing

👩🏽‍💻 End Users: Install

To use it, you just want to download 1.9.1 here.

🗺️ Roadmap

This is purely a hobbyist effort, so I can't really promise anything. I try to do a new release every month or two.

👩🏻‍🌾 Developers: Build

These are instructions for if you want to tinker with the code.

The following instructions assume Xcode 14.2 on macOS 13.4. (Note that it may not currently build in Xcode 14.3.x.)

Setup

That should be it.

Bundle IDs

The bundle ID base is used because Mastonaut consists of multiple projects, which use an app group to share information. Given a MASTONAUT_BUNDLE_ID_BASE of com.example.mastonaut and a DEVELOPMENT_TEAM of ABCDEFGH:

Acknowledgments

The acknowledgments in the about box are currently built manually. If you add dependencies, don't forget to edit one of the *Acknowledgments structs, probably SwiftPMAcknowledgements.

Pitfalls

Project Structure

The project you'll be working with is Mastonaut/Mastonaut.xcodeproj. Keep in mind this is effectively read-only: to preserve changes (other than, say, adding files, which works through wildcards), you need to edit the Mastonaut/project.yml instead.

The main application is Mastonaut.

QuickToot is a macOS app extension, specifically for sharing.

QuickToot and Mastonaut use CoreTootin as a common library. GUI code that's required by both belongs here.

The underlying API client is largely implemented in (a custom fork of) MastodonKit, which is referenced as a git submodule.

Working on the Help

MastonautHelp uses https://github.com/chuckhoupt/jekyll-apple-help. Each page is authored in Markdown with some Front Matter metadata written in YAML.

When working on changes to the help, it's easiest to run:

source /opt/homebrew/opt/chruby/share/chruby/chruby.sh
source /opt/homebrew/opt/chruby/share/chruby/auto.sh
chruby ruby-3.1.3
cd MastonautHelp
jekyll serve --livereload

This will launch a web server with live reload capability. Open that in your browser, and saving one of the help files will cause the browser to refresh.