Skip to content

Fix mobile UI bugs, keyboard handling, and iOS CSV import#46

Merged
fkischewski99 merged 12 commits intomainfrom
fix/mobile-ui-bugfixes
Mar 15, 2026
Merged

Fix mobile UI bugs, keyboard handling, and iOS CSV import#46
fkischewski99 merged 12 commits intomainfrom
fix/mobile-ui-bugfixes

Conversation

@fkischewski99
Copy link
Copy Markdown
Owner

Summary

  • Keyboard handling: Add dismiss-on-tap-outside across all screens (recipe overview, recipe form, recipe management, ingredient picker, recipe list, login, register, new event, new meal, participant pages)
  • iOS CSV import: Implement real UIDocumentPickerViewController replacing placeholder/sample data
  • Recipe form UX: Fix header layout for narrow screens, improve ingredient section layout with full-width button, use FocusRequester for reliable Next keyboard action
  • Layout fixes: FAB sizing, participant list scrolling, iOS share crash fix, date picker improvements
  • Stability: Handle deleted recipes gracefully instead of crashing

Test plan

  • Verify keyboard dismisses when tapping outside text fields on all screens (Android + iOS)
  • Test iOS CSV file picker opens native document picker and imports CSV correctly
  • Test recipe form on narrow mobile screens — title should wrap, buttons should not be squeezed
  • Verify "Next" keyboard action moves focus from recipe name to description
  • Test "Zutat hinzufügen" button renders full-width in ingredient section
  • Verify deleted recipes don't crash the recipe overview

🤖 Generated with Claude Code

fkischewski99 and others added 12 commits March 15, 2026 09:23
- Fix white spots behind rounded keyboard corners on Android by setting
  window background color to match app theme
- Add keyboard dismiss on tap outside for Login, Register, NewEventPage,
  NewParticipant, and RecipeListScreen using pointerInput/detectTapGestures
- Fix Register password fields: first field uses ImeAction.Next, second
  field closes keyboard on Done
- Add Done action to event name field on NewEventPage
- Fix CookingGroups button height by removing IntrinsicSize.Min
- Change Row to FlowRow for buttons (shopping/material/recipe plan and
  participant/cooking groups) to support narrow screens
- Fix iOS share crash by dispatching UIActivityViewController on main queue
- Make date input fields read-only on mobile platforms

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FABs now use IntrinsicSize.Max with widthIn(max=400.dp) for consistent
  sizing across mobile and desktop
- Participant search list is now scrollable with bottom padding for FABs
- FABs in ParticipantSearchBar moved into Box overlay within SearchBar
  content so they remain visible over expanded search
- Keyboard search action now hides keyboard instead of closing search
- Fix typo: Teilnehmendeliste → Teilnehmendenliste

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… form

- Fix white corners at keyboard edges on iOS login/register by removing
  duplicate imePadding() (was on both Scaffold and Column)
- Remove hardcoded setBackgroundColor from Android MainActivity
- Fix recipe name overflow squishing delete icon (use weight modifier)
- Fix DatePicker crash: use dynamic year range instead of hardcoded 2025
- Add keyboard actions (Next/Done) to participant name fields
- Fix birthday field crash on iOS (use LaunchedEffect for side effect)
- Localize allergy picker search placeholder to German
- Enable multiSelect for allergy picker dialog
- Add imePadding to participant search bar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Make getRecipeById return nullable Recipe?
- Check doc.exists before deserializing in FireBaseRepository
- Show error state instead of crash when recipe was deleted

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Implement real UIDocumentPickerViewController for iOS CSV import
  instead of placeholder/sample data
- Add keyboard dismiss on tap outside for recipe overview, recipe
  form dialog, recipe management screen, and ingredient picker dialog
- Fix recipe form header layout to wrap title on narrow screens
- Use FocusRequester for reliable Next keyboard action in recipe form
- Improve ingredient section layout with full-width add button

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… import back button

- Remove 5-second delay workaround in Register.kt signup flow
- Remove custom dev.gitlive:firebase-java-sdk:0.6.2 dependency (now
  bundled in gitlive 2.4.0)
- Add NavigationIconButton to CSV import wizard top bar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Upgrade Compose Multiplatform 1.7.1 -> 1.10.2, Navigation 2.8.0-alpha10 -> 2.9.2,
  kotlinx-datetime 0.6.2 -> 0.7.1
- Migrate kotlinx.datetime.Clock to kotlin.time.Clock across all sources
- Remove compose hot-reload plugin and DevelopmentEntryPoint wrapper
- Remove unused imports (viewModel, compose-ui-tooling-preview)
- Enable Android predictive back gesture (enableOnBackInvokedCallback)
- Hardcode iOS bundle identifier to org.futterbock.app
- Add lifecycle-runtime-compose dependency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add FirebaseAuthWeakPasswordException for weak password errors
- Remove irrelevant FirebaseAuthInvalidUserException catch
- Unify error messages to du-form, clearer and more concise
- Sync iOS project.pbxproj bundle ID and signing from main branch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Retain iOS FilePicker delegate as class property to prevent GC
  before UIKit weak delegate callback fires
- Add invokeOnCancellation to dismiss picker on coroutine cancel
- Fix FakeEventRepository.getRecipeById return type to match
  nullable interface (Recipe?)
- Remove delay(100) after registration navigation
- Replace hardcoded 165.dp bottom padding with dynamic values:
  Scaffold's calculateBottomPadding() in NewMealPage,
  onSizeChanged-measured FAB height in ParticipantSearchBar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tton

- Add itemVerticalAlignment = CenterVertically to participant/cooking
  groups FlowRow and date picker FlowRow
- Remove unnecessary IntrinsicSize.Min, clip, and background from
  date button (use standard Button styling)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fkischewski99 fkischewski99 merged commit 44acc97 into main Mar 15, 2026
1 check 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