Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions Documentation/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# Contributing

First, please read the Mastodon project [Contributing guide](https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md).

In addition, note that user interface changes for our official apps are carried out through a design process that involves core team review - most changes of this kind will not be accepted as community contributions; if they are accepted, they will take time to go through this review.

## General Information

- File an issue to report a bug or feature request
- Translate the project in our [Crowdin](https://crowdin.com/project/mastodon-for-ios) project
- Make the Pull Request to contribute
- Make a Pull Request to contribute

## Bug Report

File an issue about the bug or feature request. Make sure you are installing the latest version of the app from TestFlight or App Store.

## Translation

[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)

The app uses CrowdIn to crowdsource translations. Translations will update regularly via a GitHub action. Please request the language if it is not listed via an issue.
Expand All @@ -28,13 +36,15 @@ Note that we have switched the main app localizations from using `.strings` and
- Use the new typed strings by importing `MastodonLocalization` and using the `L10nLookup` struct.
- The `L10nLookup` struct will return the proper localization if it is available or fallback to English if it is not.
- If you see the key itself in the UI, that means the string was not found in the `.xcstrings` file. Check for typos.

### To modify translations:

- English translations can be updated by modifying them locally in the `.xcstrings` file with the Xcode editor and pushing the change to GitHub. See "To merge translations" below for next steps.
- Other languages' translations must be made through the CrowdIn interface and integrated into the app by merging the resulting PR. This is because the next time CrowdIn changes are merged, any locally-made changes to those values will be overwritten with the previous values.
- Changes to *keys* that have already been uploaded to CrowdIn are likely to cause problems with the CrowdIn integration, so try not to change them.

### To merge translations:

- If you have any new strings or changes to English translations, commit those changes and push them to GitHub. This will immediately trigger the `CrowdIn/Upload translations` GitHub action.
- Log in to CrowdIn and check the "Activity" tab to confirm that CrowdIn has received your updates.
- Manually trigger the `CrowdIn/Download translations` GitHub action to pull in any updated translations.
Expand All @@ -43,12 +53,13 @@ Note that we have switched the main app localizations from using `.strings` and
Note: The `.strings` files in `WidgetExtension`, `MastodonIntent`, and `InfoPlist` have not yet been converted to `.xcstrings`, but they also don't seem to have been included in the `swiftgen` workflow.

### To add a new translation language:

- New languages added via CrowdIn should be incorporated automatically.
- If a new language is not being shown in the UI despite translations being available, ensure that the language code is included in the `.pbxproj` file's `knownRegions` section. This is best accomplished automatically by editing the main bundle's Localizable.xcstrings file at `Mastodon/Resources/Localizable.xcstrings` to add the new language (this MUST be done via the string catalog editor in order to have an effect on the `.pbxproj`; manually editing the json will fail to change the `.pbxproj`). Ensure that you also add a "translation" for the one string in that file for the new language (the "translation" can be any string).

## Pull Request

You can create a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via an issue.
You can create a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via an issue.

Also, there are lots of existing feature request issues that could be a good-first-issue discussing place.

Expand All @@ -61,4 +72,5 @@ Follow the git-flow pattern to make your pull request.
5. Request a code review and wait for approval. The PR will be merged when it is approved.

## Documentation
The documentation for this app is listed under the [Documentation](../Documentation/) folder. We are also welcoming contributions for documentation.

The documentation for this app is listed under the [Documentation](../Documentation/) folder. We welcome contributions for documentation.
10 changes: 5 additions & 5 deletions Documentation/Setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
- Swift 5.7+
- iOS 18.0+

Install the latest version of Xcode from the App Store or Apple Developer Download website. Also, we assert you have the [Homebrew](https://brew.sh) package manager.
Install the latest version of Xcode from the App Store or Apple Developer Download website. Also, we assert you have the [Homebrew](https://brew.sh) package manager.

This guide may not suit your machine and actually setup procedure may change in the future. Please file an issue or open a Pull Request if there are any problems.
This guide may not suit your machine and actual setup procedure may change in the future. Please file an issue or open a Pull Request if there are any problems.

### Swiftgen and Sourcery

Expand Down Expand Up @@ -60,13 +60,13 @@ The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay)
Please check the [Establishing a Certificate-Based Connection to APNs
](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns) document to generate the certificate and exports the p12 file.

Note:
Note:
Please check and set the `notification.Topic` to the app BundleID in [toot-relay.go](https://github.com/DagAgren/toot-relay/blob/f9d6894040509881fee845972cd38ec6cd8f5a11/toot-relay.go#L112). The server needs use a reverse proxy to port this relay on 443 port with valid domain and HTTPS certificate.

## Start

1. Open `Mastodon.xcodeproj`
2. Wait for the Swift Package Dependencies to be resolved.
1. Open `Mastodon.xcodeproj`
2. Wait for the Swift Package Dependencies to be resolved.
2. Check the signing settings make sure to choose a team. [More info…](https://help.apple.com/xcode/mac/current/#/dev23aab79b4)
3. Select `Mastodon` scheme and device then run it. (Command + R)

Expand Down
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,40 @@
# Mastodon
# Mastodon for iOS

[![CI](https://github.com/mastodon/mastodon-ios/actions/workflows/build-only.yml/badge.svg)](https://github.com/mastodon/mastodon-ios/actions/workflows/build-only.yml) [![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)

<a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974?itsct=apps_box_badge&amp;itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&amp;releaseDate=1627603200&h=72b0c8495c2c0af1291efef280c4c2c1" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a>

## Introduction

This is the repository for the official iOS App for Mastodon. You can install it from the App Store now. You can build the app from source and file bug report here.
This is the repository for the official iOS app for Mastodon.

You can install the app from the App Store. You can build the app from source and file bug reports here.

Please note that this app is intended to be used with Mastodon servers. Our team does not have bandwidth to ensure compatibility with other server software, which means that unsolicited pull requests focused on that goal will most likely be closed.

Read this blog post for this app to learn more.

> [Developing an official iOS app for Mastodon](https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/)

## Contributing

First, please read the Mastodon project [Contributing guide](https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md).

Note that user interface changes for our official apps are carried out through a design process that involves core team review - most changes of this kind will not be accepted as community contributions; if they are accepted, they will take time to go through this review.

## Getting Started

- Read the setup guide [here](./Documentation/Setup.md)
- About [contributing](./Documentation/CONTRIBUTING.md)
- [Documentation folder](./Documentation/)
- About [contributing](./Documentation/CONTRIBUTING.md) (specific to the iOS app)
- Read the [setup guide](./Documentation/Setup.md)
- [App Store Deployment](./Documentation/Deployment.md)

## Acknowledgments

Thanks to these open-source projects listed [here](./Documentation/Acknowledgments.md).
Thanks to [these open-source projects](./Documentation/Acknowledgments.md).

## License

This project is released under the [GPL-3 License](./LICENSE). It is also dual-licensed to Apple for the purposes of publishing the app on the App Store. For this reason, any contributors are required to sign a Contributor License Agreement.

The Mastodon name and logo are trademarks. If you intend to redistribute a modified version of this app, use a unique name and icon for your app that does not mistakenly imply any official connection with or endorsement by the Mastodon non-profit organisation.
Loading