Reproduction:
- Open a session/conversation.
- Tap the circular chevron back button in the top-left glass overlay.
- Nothing happens — the conversation does not pop back to the dashboard.
Root cause:
Commit cf82de5 ("ui: move conversation controls into composer") removed the native navigation bar and replaced it with a custom glass overlay top-bar. The overlay's back button calls @Environment(\.dismiss). On a path-driven NavigationStack (routes pushed via navigationPath.append), dismiss() is a no-op for programmatically-pushed routes, so the button silently does nothing. The Android side of the same commit wires onBack to pop its own nav stack directly, confirming the intended behavior is a direct stack pop.
Additionally, the custom button's hit area is only the thin chevron glyph (Image with no .contentShape), so even with a working action most taps on the 40x40 glass circle miss.
Fix:
- Back the custom button with
popCurrentRoute() (pop the path-driven NavigationStack) instead of dismiss().
- Add
.contentShape(Circle()) so the whole glass circle is tappable (matches SavedAppDetailView).
Note: this regression shipped after the 2.0 release (which still used the native nav-bar back button), so production 2.0 is unaffected.
Reproduction:
Root cause:
Commit cf82de5 ("ui: move conversation controls into composer") removed the native navigation bar and replaced it with a custom glass overlay top-bar. The overlay's back button calls
@Environment(\.dismiss). On a path-drivenNavigationStack(routes pushed vianavigationPath.append),dismiss()is a no-op for programmatically-pushed routes, so the button silently does nothing. The Android side of the same commit wiresonBackto pop its own nav stack directly, confirming the intended behavior is a direct stack pop.Additionally, the custom button's hit area is only the thin chevron glyph (
Imagewith no.contentShape), so even with a working action most taps on the 40x40 glass circle miss.Fix:
popCurrentRoute()(pop the path-drivenNavigationStack) instead ofdismiss()..contentShape(Circle())so the whole glass circle is tappable (matches SavedAppDetailView).Note: this regression shipped after the 2.0 release (which still used the native nav-bar back button), so production 2.0 is unaffected.