Per parity decision #4 — both platforms conform to 3-second refresh intervals.
Previously iOS Works was at 2s, Android was at 5s. Now both at 3s.
Screens updated:
- MyTasksScreen: 2s → 3s
- BusinessSelectionScreen: 2s → 3s
- TaskListScreen: 2s → 3s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract duplicated inline error/loading patterns from TaskListScreen,
MyTasksScreen, BusinessSelectionScreen, AccountScreen, and TaskDetailScreen
into shared components under Views/Components/.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace all .cfm endpoints with .php (PHP backend migration)
- Update debug strings and test walkthrough documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Parse RoleID from myBusinesses API. CashCollectionSheet now shows
role-appropriate messaging: staff keeps cash, admin deposits to business.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add global IS_DEV flag controlling API endpoint (dev vs biz.payfrit.com),
dev ribbon banner, and magic OTP hints
- Add diagonal orange DEV ribbon overlay (Widgets/DevRibbon.swift)
- Replace app icon with properly centered dark-outline SVG on white background
- Fix display name with InfoPlist.strings localization
- Redesign business selection cards with initial letter, status pill, task count
- Make businesses only tappable when pending tasks > 0 (dimmed otherwise)
- Simplify LoginScreen and RootView to use IS_DEV directly
- Fix hardcoded dev URLs to respect IS_DEV flag
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>