Pachli è un client Android completo per Mastodon: La timeline viene memorizzata nella cache locale, in modo da poterla leggere anche quando si è offline Bozza dei post ora per finirli in un secondo momento Scrivere i post ora e programmarne l'invio in un secondo momento Leggere e pubblicare da più account Gestite chi seguite con più elenchi Utilizzare diversi temi per personalizzare l'interfaccia utente Una varietà di font accessibili in diverse dimensioni Pieno controllo su come e quando si ricevono le notifiche https://mastodon.it/it/Quale-app-mastodon-utilizzare
Go to file
Nik Clayton e749b362ca
refactor: Start creating core modules (#286)
The existing code base is a single monolithic module. This is relatively
simple to configure, but many of the tasks to compile the module and
produce the final app have to run in series.

This is unnecessarily slow.

This change starts to split the code in to multiple modules, which are:

- :core:account - AccountManager, to break a dependency cycle
- :core:common - low level types or utilities used in many other modules
- :core:database - database types, DAOs, and DI infrastructure
- :core:network - network types, API definitions, and DI infrastructure
- :core:preferences - shared preferences definitions and DI
infrastructure
- :core:testing - fakes and rules used across different modules

Benchmarking with gradle-profiler shows a ~ 17% reduction in incremental
build times after an ABI change. That will improve further as more code
is moved to modules.

The rough mechanics of the changes are:

- Create the modules, and move existing files in to them. This causes a
  lot of churn in import arguments.

- Convert build.gradle files to build.gradle.kts

- Separate out the data required to display a tab (`TabViewData`) from
  the data required to configure a tab (`TabData`) to avoid circular
  dependencies.

- Abstract the repeated build logic shared between the modules in to
  a set of plugins under `build-logic/`, to simplify configuration of
  the application and library builds.

- Be explicit that some nullable types are non-null at time of use.
  Nullable properties in types imported from modules generally can't be
  smart cast to non-null. There's a detailed discussion of why this
restriction exists at
https://discuss.kotlinlang.org/t/what-is-the-reason-behind-smart-cast-being-impossible-to-perform-when-referenced-class-is-in-another-module/2201.

The changes highlight design problems with the current code, including:

- The main application code is too tightly coupled to the network types
- Too many values are declared unnecessarily nullable
- Dependency cycles between code that make modularisation difficult

Future changes will add more modules.

See #291.
2023-12-04 16:58:36 +01:00
.github feat: Periodically check for updates and alert user (#236) 2023-11-08 08:42:39 +01:00
.idea refactor: Transition from Tusky to Pachli 2023-09-05 13:33:37 +02:00
app refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
assets refactor: Remove unnecessary SVG metadata 2023-09-20 19:05:35 +02:00
build-logic refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
checks refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
core refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
docs feat: Periodically check for updates and alert user (#236) 2023-11-08 08:42:39 +01:00
fastlane/metadata/android/en-US chore: Prepare release 2.0.0 (versionCode 8) (#277) 2023-11-23 12:53:58 +01:00
gradle refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
licenses feat: Allow the user to choose a different font 2023-09-04 20:22:07 +02:00
plugins/markdown2resource refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
tools refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
.editorconfig style: Require trailing comma, and break lines 2023-09-04 20:22:10 +02:00
.gitattributes Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
.gitignore chore: Update .gitignore for gradle-profiler (#176) 2023-10-15 22:18:13 +02:00
CHANGELOG.md chore: Prepare release 2.0.0 (versionCode 8) (#277) 2023-11-23 12:53:58 +01:00
CLA_ENTITY.md docs: Add contributor license agreements (#1) 2023-09-05 14:35:07 +02:00
CLA_IC.md docs: Add contributor license agreements (#1) 2023-09-05 14:35:07 +02:00
CODE_OF_CONDUCT.md docs: Adopt the Contributor Covenant Code of Conduct 2023-09-05 13:40:58 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md (#31) 2023-09-12 13:18:50 +02:00
COPYRIGHT.txt docs: Add COPYRIGHT.txt 2023-09-01 18:26:21 +02:00
LICENSE.txt License change back to GPL 3 2017-04-09 20:12:31 -04:00
PRIVACY.md docs: Be more specific about data in the privacy policy (#136) 2023-09-30 12:56:48 +02:00
README.md docs: Mention translation support in the documentation (#253) 2023-11-15 15:59:31 +01:00
Release.md update release process (#3439) 2023-03-18 09:51:21 +01:00
build.gradle refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00
gradle.properties chore(deps): Update to AGP 8.1.1 (#130) 2023-09-27 18:06:14 +02:00
gradlew chore(deps): update dependency gradle to v8.3 (#110) 2023-09-27 15:03:20 +02:00
gradlew.bat Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
renovate.json Kotlin 1.9.0 (#3835) 2023-08-02 09:04:24 +02:00
runtools change: Add tools/mklanguages 2023-09-04 20:22:05 +02:00
runtools.bat change: Add tools/mklanguages 2023-09-04 20:22:05 +02:00
settings.gradle.kts refactor: Start creating core modules (#286) 2023-12-04 16:58:36 +01:00

README.md

Contributor Covenant Contributor License Agreement Translate - with Weblate

Get it on Google Play Get it on F-Droid

Pachli

Pachli is a full-featured Android client for Mastodon, with a cooperative development model.

Features include:

  • Read, reply, filter, post, favourite, and boost posts
  • Translate posts from other languages
  • Your timeline is cached locally, so you can read when offline
  • Draft posts now to finish them later
  • Write posts now and schedule them to send later
  • Read and post from multiple accounts
  • Manage who you follow with multiple lists
  • Use different themes to customise the UI
  • A variety of accessible fonts in different sizes
  • Full control over how and when you receive notifications
  • Explore trending posts, links, and hashtags

Pachli is open source.

Install the newest release from the list of releases, or from Google Play and F-Droid.

Support

Contributing

We actively welcome new contributors. Please read CONTRIBUTING.md for more information.

More information

More information about the application and the principals underpinning its development are at https://pachli.app.