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 b0d63e4243
fix: Update PageCache to handle non-chronological ordering (#633)
The PageCache implementation wasn't properly dealing with timelines that
could return statuses in non-chronological order.

For example, if you bookmark a recent status, then go back in the
timeline and bookmark an older status; the bookmarks timeline is ordered
by the time of the bookmark event, not the creation time of the status
that was bookmarked.

If a sufficiently old status was bookmarked so it straddled a page
boundary you could have a situation where the range of status IDs in two
different cached pages overlapped.

E.g., this log extract:

```
0: k: 110912736679636090, prev: 3521487, next: 3057175, size: 40, range: 112219564107059218..110912736679636090
1: k: 111651744569170291, prev: 3049659, next: 2710596, size: 40, range: 111926741634665808..111651744569170291
```

The range of IDs in page 0 overlaps with the range of IDs in page 1.

The previous `PageCache` assumed this couldn't happen, and broke in
various interesting ways when it did.

E.g., you can't find the page that contains a given status by looking
for the largest key less than the needle's status id. Given the pages
above looking for ID 112219564107059218 (first status in page 0) would
suggest page 1 as having the greatest key less than that ID. This
manifested as the correct page briefly appearing in the UI (page 0),
then being completely replaced with page 1.

Rewrite PageCache to fix this. The previous implementation used a single
`TreeMap` assuming items were always sorted by ID. The new code keeps an
unordered map from status IDs to the page that contains that status, and
a separate `LinkedList` that contains the pages in order they're
provided by the API. This decouples the ordering of pages in the cache
with the overall ordering of items within the pages.
2024-04-22 20:34:16 +02:00
.github ci: Cancel in-progress CI runs if a new commit is pushed to the branch (#626) 2024-04-15 21:34:12 +02:00
.idea refactor: Transition from Tusky to Pachli 2023-09-05 13:33:37 +02:00
app fix: Update PageCache to handle non-chronological ordering (#633) 2024-04-22 20:34:16 +02:00
assets refactor: Remove unnecessary SVG metadata 2023-09-20 19:05:35 +02:00
build-logic build: Simplify build infrastructure for command line tools (#613) 2024-04-15 15:06:55 +02:00
checks ci: Simplify and improve CI speed (#615) 2024-04-15 15:24:07 +02:00
core ci: Simplify and improve CI speed (#615) 2024-04-15 15:24:07 +02:00
docs docs: Update translation instructions with new modules (#398) 2024-01-30 16:40:43 +01:00
fastlane/metadata/android chore: Shrink changelog to < 500 characters 2024-03-28 12:08:35 +01:00
feature fix: Set correct text direction for localised error messages (#601) 2024-04-09 14:26:15 +02:00
gradle chore(deps): update agp to v8.3.2, lint to v31.3.2 (#627) 2024-04-15 21:56:42 +02:00
licenses fix: Improve URL / tag / mention extraction when composing (#564) 2024-03-23 14:14:07 +01:00
plugins/markdown2resource fix(deps): update dependency org.jetbrains:markdown to v0.7.0 (#607) 2024-04-10 09:36:15 +02:00
tools build: Simplify build infrastructure for command line tools (#613) 2024-04-15 15:06:55 +02:00
.editorconfig fix: Improve parsing of Friendica (and other server) version formats (#376) 2024-01-23 20:27:25 +01:00
.gitattributes Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
.gitignore chore: Ignore any files in app/*/release (#527) 2024-03-14 12:32:13 +01:00
CHANGELOG.md chore: Prepare release 2.4.0 (versionCode 13) (#568) 2024-03-28 11:46:06 +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: Restructure README, link to screenshots (#596) 2024-04-05 16:44:52 +02:00
Release.md update release process (#3439) 2023-03-18 09:51:21 +01:00
SECURITY.md chore: Create SECURITY.md (#556) 2024-03-21 16:03:07 +01:00
build.gradle refactor: Break navigation dependency cycles with :core:navigation (#305) 2023-12-07 18:36:00 +01:00
crowdin.yml Update Crowdin configuration file 2024-01-30 12:29:47 +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.5 (#170) 2024-01-08 12:51:34 +01:00
gradlew.bat chore(deps): update dependency gradle to v8.6 (#411) 2024-02-03 15:05:43 +01:00
renovate.json chore: Adopt Renovate's "best-practices" configuration defaults (#547) 2024-03-21 12:49:39 +01: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 chore(deps): update plugin com.gradle.develocity to v3.17.1 (#620) 2024-04-15 16:38:10 +02:00

README.md

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.

Get it on Google Play Get it on F-Droid

Support

Contributing

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

Contributor Covenant Contributor License Agreement Translate - with Weblate

More information

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