Skip Navigation

[v1.52.3] Haptics

This release updates the haptic feedback in the app, adding more haptic feedback to actions and adjusting some of the haptics that already exist. It also adds a new settings screen specifically for adjusting haptic feedback.

Full changelog

  • Added a new settings page dedicated to haptic feedback.
  • Added haptics to more actions.
  • Adjusted strength of haptic feedback to be inline with Android's guidelines.
  • Added a new experimental feature that automatically marks duplicate posts as read. A duplicate post is a post that has been posted to another instance that is essentially the same as a post that has been read. This feature is off by default.
  • Fixed a bug where links cannot be opened if the preview link setting is set to "Preview all".
  • Fixed a bug where thumbnails sometimes won't load.
  • Fixed a bug where the last swipe action on a post is accidentally replayed.

Update

Noticed that not all thumbnail links were fixed. Pushing another release (v1.52.1) to fix even more thumbnails.

Update 2

Pulling in some new translations. Releasing as v1.52.2.

Update 3

Special note for one bug I finally tracked down. There was a period of time where the oddest things would happen when I was in a post where I thought I was losing my mind. I would upvote a comment, return to the post and see that the comment was not upvoted. Or I would post a comment and then after, the comment dialog would popup multiple times. This was extremely confusing as none of the logs indicated anything had even gone wrong. The "ghost votes" would appear in the logs as though I had went back to the comment and removed my vote manually.

After a lot of manual testing, I was finally able to track this issue down and it has to do with how swipe actions work.

When a swipe action is initiated, the app remembers the last swipe action. When you swipe and then let go the app triggers the last swipe action saved. This allows you to drag the swipe action slider as far as you want and as long as you are in the correct region when you let go, the right action will be taken.

The issue is when the action is triggered, it does not clear the last saved action.

This normally wouldn't cause any issues except if you are also using gesture navigation.

A gesture navigation gesture is just a regular swipe except the starting point is near an edge of the screen.

For a back gesture, the user first has to touch the edge of the screen and then swipe inwards. During the first part of the gesture, Android doesn't actually know yet if the action is going to be a back gesture. So at that stage Android will let the app handle the gesture. Only once the finger slides far enough does Android realize it's a back gesture and take ownership of the gesture. At this point Android will cancel the swipe gesture on the app's end so it can handle the gesture gracefully.

When Android tells Summit to cancel the swipe action, Summit was incorrectly assuming it was a valid swipe action because the last swipe action was set. Summit would then trigger that action. The fix is simple. The last swipe action just needs to be cleared whenever a swipe action is triggered.

3 comments