feat(ui): let the user choose and order the bottom bar destinations - #53
Merged
Conversation
Completes the navigation rework. Home keeps the first slot, the next three are the user's to pick and arrange, and More still opens the drawer with everything in it. Defaults stay Members / Front history / Journals, so nobody's muscle memory moves without them asking. The editor lives in Settings > Appearance > Navigation bar, next to the theme, and applies changes immediately rather than hiding them behind a save button. It has two sections, "In the bar" and "Under More", with move up/down and remove/add controls. Ordering uses explicit buttons rather than drag-and-drop: the list is short, and buttons stay operable with a screen reader or switch access, which a long-press drag does not. Pins are per-device, like the theme override: which three things you want under your thumb is a fact about this phone, not about the account. They survive sign-out for the same reason. They are only reordered by the user, never by the app: a primary bar that rearranges itself by usage defeats the muscle memory it exists to serve, so there is no frequency-based shuffling here and shouldn't be later. Saved pins are read back by builds that may no longer have those destinations, so resolution treats them as untrusted: unknown routes are dropped rather than rendered as dead slots, duplicates collapse, and over-long lists are capped. Short lists are deliberately left short - padding them would mean removing something in the editor silently swapped in a default, leaving the bar and the editor disagreeing about what is pinned. Unit tests cover those cases and the reorder helper, plus a guard that every drawer route exists in Routes. Also drops the Board messages and Notifications icons from the Home top bar. Both were there because the bottom bar couldn't hold them; the drawer lists them now, so the top bar is back to just Settings.
The subtitles had drifted from the screens they describe: Appearance said "Theme, timezone" while also holding the palette picker and now the navigation bar editor, System said "Custom fields" while holding tags and archived members too, and Notifications named only the two device toggles while holding subscriptions, channels and devices above them. Since the subtitle is what people scan to decide which category to open, each now names its contents. Safety keeps its re-auth level, which is real state worth surfacing, and gains a mention of revision retention.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final piece of the navigation rework, after #49 (drawer) and #51 (Settings de-featuring). Part of #65.
Pinnable, reorderable bottom bar
Home keeps the first slot; the next three are the user's to pick and arrange. More still opens the drawer with everything in it. Defaults stay Members / Front history / Journals, so nobody's muscle memory moves without them asking.
The editor is in Settings > Appearance > Navigation bar, next to the theme, and applies changes immediately rather than hiding them behind a save button. Two sections:
Ordering uses explicit buttons rather than drag-and-drop: the list is three items, and buttons stay operable with a screen reader or switch access, which a long-press drag does not.
Pins are per-device, like the theme override - which three things you want under your thumb is a fact about this phone, not the account - and they survive sign-out for the same reason. They are only reordered by the user, never by the app: a primary bar that rearranges itself by usage defeats the muscle memory it exists to serve.
Saved pins are read back by builds that may no longer have those destinations, so resolution treats them as untrusted: unknown routes are dropped rather than rendered as dead slots, duplicates collapse, over-long lists are capped. Short lists are deliberately left short - padding them would mean removing something in the editor silently swapped in a default, leaving the bar and the editor disagreeing about what is pinned.
Also here
Home's top bar loses its Board messages and Notifications icons. Both were there because the bottom bar couldn't hold them; the drawer lists them now, so it's back to just Settings.
Settings category subtitles now name what's actually inside them. Several had drifted - Appearance said "Theme, timezone" while also holding the palette picker and now this editor; System said "Custom fields" while holding tags and archived members too. Account also advertised "Email", which isn't a row on that screen, so that's gone rather than describing something that isn't there.
Testing
:app:assemblePlayRelease+:app:testPlayReleaseUnitTestgreen (rebased onto current main). 15 unit tests cover pin resolution (unknown routes, duplicates, over-long and short lists, never-set vs deliberately-empty) and the reorder helper's no-op cases at the list ends, plus a guard that every drawer route exists inRoutes.Device checklist: