Skip to content

Improve onboarding and location UX - #81

Merged
Merkost merged 146 commits into
masterfrom
compose_migration
Jul 17, 2026
Merged

Improve onboarding and location UX#81
Merkost merged 146 commits into
masterfrom
compose_migration

Conversation

@Merkost

@Merkost Merkost commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • fix onboarding landscape layout and polish the first-spot prompt card
  • add current-location button states for permission, searching, GPS off, and unavailable
  • improve location permission dialog/settings recovery, including app-settings actions

Verification

  • ./gradlew :shared:compileDebugKotlinAndroid --no-daemon
  • ./gradlew :shared:testDebugUnitTest --no-daemon
  • ./gradlew :shared:detekt --no-daemon
  • ./gradlew :shared:compileKotlinIosSimulatorArm64 --no-daemon

Merkost and others added 30 commits June 12, 2026 14:54
…s tracker

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ts, drop dead field

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…s/BrandGradients

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e, stronger token tests

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ull scale

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iption

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… present, no edit needed)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…le AppTextStyle mapping

- SectionCard passes onClick through to AppCard so the whole card is the tap target; the edit pencil is now a decorative Icon hint, not a second tap target (explicit trailing still wins)
- Add IconSize tokens (sm/md/lg); use them for AppButton spinner+leading icon, TextWithLeadingIcon, and SectionCard icons; spinner stroke uses Spacing.xxs
- Extract pure textStyleFor(style, typography); toTextStyle delegates to it; AppTextStyleTest asserts the real M3 role mapping against Typography()

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…with centered viewport

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…edium (no crossfade token in Plan 01)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nstalls

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merkost and others added 29 commits June 13, 2026 17:12
…UiContainer)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rid dp

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace PrimaryText/SecondaryText*/SupportText/BigText/SubtitleText/
SecondaryTextColored with AppText; DefaultButton*/DefaultIconButton with
AppButton/AppIconButton (drops all-caps .uppercase()); DefaultCardClickable
with AppCard(contentPadding=0). secondaryTextColor -> onSurfaceVariant;
tokenize touched off-grid dp.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Text.kt/Buttons.kt/Cards.kt fully unreferenced after the migration -> deleted.
NoContentView rebuilt on AppText + onSurfaceVariant (no customColors). Fence
guards the 14 removed wrapper symbols. Adds the Plan 13 mapping reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Google Maps SDK (MapsDynamite) threw NoClassDefFoundError org.apache.http.ProtocolVersion
on startup, crashing the app at the map start destination.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lift FirstSpotPromptCard above the bottom-end FAB via Spacing.fabClearance.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restore contentWindowInsets=WindowInsets(0) on the app shell Scaffold so the
status-bar/nav-bar inset is owned once by each screen's own TopAppBar/nav bar,
not counted twice.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AppCard defaulted to grey surfaceContainer with 1dp elevation (stock-material
flat grey). Restore the premium look: surface container color, raisedCard
elevation, large corner radius — de-greys every card app-wide.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bring back the loved Jetsnack-style bar (width-lerp selection, sliding
outlined-pill indicator, fade/scale uppercase labels) replacing the stock
M3 NavigationBar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
WeatherMetric now inherits LocalContentColor (white on the blue hero, dark on
neutral cards); hero Surface sets contentColor=onPrimary. weather_percent_value
%% -> % (CMP does not unescape %%). Top bar title is static so the location is
shown once via the picker chip.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collapsed/close and mini-FABs now all use the brand gradient (BrandFab gains a
size-overridable modifier) instead of mismatched tonal/solid/grey fills.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a controlled FishingTheme object (colorScheme/typography/shapes/customColors
+ spacing/iconSize/emphasis/elevation) as the single bridge to Material3, and
migrate every feature-code MaterialTheme.* accessor (~440 sites across 72 files)
to FishingTheme.*. Raw MaterialTheme now lives only in the theme setup and the
FishingTheme bridge, so the design system is owned and controllable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lead each catch with a 64dp rounded photo thumbnail (downloadPhotoLinks, coil3
SubcomposeAsyncImage) with a tinted fish-silhouette fallback and a +N count
badge; weight becomes a prominent primary-colored metric; amount demoted to an
inline caption; date separator pill de-greyed (surfaceContainerHigh, no more
deprecated cardColor).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
EmptyStateNoCatches/NoPlaces now show an action button (the onAddCatch/onAddPlace
callbacks were defined but unused), so new users get a clear next step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the flat Surface(primary) with BrandGradients.primaryDiagonal and
heightIn(min) so the most-viewed surface carries brand identity and survives
large font scales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pressure/temperature lines plotted near-flat because Vico anchored the Y axis
near 0; set CartesianLayerRangeProvider.fixed(minY,maxY) from the data min/max
with 15% padding so real variation is visible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Render the computed-but-hidden CatchStatistics.averageWeight and
mostCaughtSpecies as a third StatTile row.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gh/low

Add a transparent Bite Forecast card (pure WeatherUtils heuristic over pressure
trend, cloud cover, wind, dawn/dusk) with rating + factor chips; a pressure-trend
headline (arrow + delta + Rising/Falling/Steady); a Wind metric making the hero a
balanced 2x2 grid (centered cells); named moon phase instead of a percent; and
High/Low on daily rows.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bottom bar: Role.Tab + selectableGroup + tab-position stateDescription + real icon
contentDescription. FABs: state-aware contentDescription + Role.Button + merged
mini-FAB rows. Charts: chartSemantics() summary for TalkBack. Photos: non-null
contentDescription. Add AppHaptics (LocalHapticFeedback) wired into the FAB
speed-dial.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Catch & Place detail now lead with a hero photo (scrim + overlaid title/weight/
date) when a photo exists, falling back to a branded gradient header instead of
the tiny icon.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…layer pass

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Search: per-VM searchQuery StateFlow combined into the paged flow, filtering
PagingData client-side (fishType/placeTitle/description for catches; title/
description for places); compact SearchField at the top of each list.
Swipe-to-delete: PagedListScaffold gains key + onDelete -> SwipeToDismissBox
(left-swipe reveals an error-tinted delete background only while swiping); VMs
delete via repo and show an Undo snackbar that re-adds (addNewCatch/addNewMarker).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Merkost
Merkost merged commit cfac458 into master Jul 17, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant