Commit graph

8 commits

Author SHA1 Message Date
johannesjo
1421151724 fix(ios): prevent keyboard from overlapping inputs
Use Capacitor's native WebView resize mode on iOS instead of CSS-based
workarounds. When keyboard appears, the WebView itself shrinks so 100vh
automatically fits above the keyboard.

- Configure iOS to use `resize: 'native'` (Android keeps `resize: 'body'`)
- Add scrollIntoViewIfNeeded() to scroll focused inputs into view
- Add proper cleanup for keyboard event listeners
- Improve flexbox shrinking in fullscreen markdown dialog
2026-01-21 17:45:14 +01:00
Johannes Millan
f421d2387a fix(e2e): add robust overlay cleanup to prevent blocked clicks
Angular Material overlay backdrops were not being properly cleared between
tag operations, causing subsequent clicks to timeout when overlays blocked
element interactions.

Added ensureOverlaysClosed() helper with:
- Early exit if no overlays present (performance)
- Escape key dismissal with retry for stacked overlays
- Logging for debugging when fallbacks trigger
- Uses Playwright's native locator.waitFor() instead of waitForFunction()
- Cleanup at operation start (prevent blocking) and end (clean state)

Benefits:
- Eliminates fixed timeouts, uses smart waiting (tests run 2x faster)
- Handles edge cases like stacked overlays
- Provides visibility into when overlays are unexpectedly present

Fixes 4 failing tests:
- Tag CRUD: remove tag via context menu
- Tag CRUD: delete tag and update tasks
- Tag CRUD: navigate to tag view
- Menu: toggle tags via submenu
2026-01-16 22:34:49 +01:00
johannesjo
d91d5e892b fix(ios): set background color for safe area behind home indicator
- Add backgroundColor to Capacitor iOS config to fill safe area
- Add CSS :has() rules to set html background based on theme class
2026-01-16 17:24:47 +01:00
Johannes Millan
a046c347d4 feat(ios): add safe area, keyboard, and status bar handling
Add iOS-specific UX improvements:

Safe Areas:
- Add CSS variables for safe area insets (notch, home indicator)
- Add body classes: isNativeMobile, isIOS, isKeyboardVisible
- Apply safe area padding on native mobile platforms

Keyboard Handling:
- Install @capacitor/keyboard plugin
- Track keyboard visibility via keyboardWillShow/Hide events
- Set --keyboard-height CSS variable for layout adjustments
- Remove bottom safe area padding when keyboard is visible

Status Bar:
- Install @capacitor/status-bar plugin
- Sync status bar style with app dark/light theme
- Configure overlaysWebView: false in capacitor.config.ts

These changes ensure proper display on iPhone devices with
notch/Dynamic Island and home indicator.
2026-01-14 13:45:42 +01:00
Johannes Millan
590e1592da feat(ios): add iOS platform support via Capacitor
Add iOS MVP with core functionality using Capacitor-first approach:

Platform Abstraction Layer:
- Add CapacitorPlatformService for unified platform detection
- Add PlatformCapabilities model with per-platform feature flags
- Add CapacitorNotificationService wrapping LocalNotifications plugin
- Add CapacitorReminderService for cross-platform reminder scheduling

iOS Support:
- Add Capacitor iOS project with proper configuration
- Configure Info.plist for notifications and background modes
- Add app icon and splash screen assets
- Enable CapacitorHttp for WebDAV sync (avoids CORS issues)

Refactoring:
- Update android.effects.ts to use CapacitorReminderService
- Update notify.service.ts to support iOS notifications
- Update startup.service.ts with platform-aware initialization
- Update sync-form.const.ts to hide CORS info on native platforms
- Update webdav-http-adapter.ts to use CapacitorHttp on iOS

MVP includes: task management, scheduled notifications, Dropbox sync,
WebDAV sync, share-out, dark mode. Excludes: background tracking,
widgets, local file sync, share-in (post-MVP features).
2026-01-14 13:45:42 +01:00
Johannes Millan
da2eed1fd2 feat(android): adjust android notification icon 2025-04-21 16:53:12 +02:00
Johannes Millan
463e1dce7d feat(pfapi): deal with sync edge case 2025-04-12 13:56:48 +02:00
Jiongxuan Zhang
b190e2665b feat (WIP): Experiment successful: Integrated Capacitor and ran the project. This is just a demo to verify functionality; future work will focus on better integration. 2024-09-11 09:50:57 +08:00