I got stuck on a different PR (implementing video attachments on mobile) for the past few days and didn't get to look at this too much, so tonight I worked on it even more than usual.

With the help of my trusty steed—tonight it's Claude.ai—I got several things done:

First, I modularized the MaitsuTabView and let the consumer send arbitrary sets of tabs as MaitsuTab. Doing this let me define individual content views for each tab as well. I'm going to quickly run into the problem that my current tab bar library has where the view stack is not stored per tab. This means that the root view is recreated every time you go to a different tab and come back. This might not be as big of a problem with our design, but it is annoying and is potentially bad for performance, so I'd like to fix it.

Then, I implemented gesture recognizers on each tab. Gesture recognizers are for things like double tap and long press. Currently it's set up so only the active tab has more than one gesture recognizer to make things not super overwhelming. The idea is to add flexibility by letting people do things like long press to go back to the root view or double tap to go to the top and refresh automatically.

Lastly, I worked on getting tab bar visibility and animation working. There are some situations where life becomes a lot easier if you just hide the tab bar and the library the app is currently using doesn't give easy control over that. There's probably more work to do, but I'm happy with how the dialed in animation values turned out.

Next milestone

Next, I'd like to try to make the tab bar mode change automatically when the user navigates to a new nested view. We were using a button before, so now lets do the real thing.