51 Commits

Author SHA1 Message Date
761e80bca2 Merge pull request 'feat: EAS build config for Android APK + BUILD.md (FIBEROPS-210)' (#3) from feat/FIBEROPS-210-eas-build-config into main 2026-04-01 01:08:41 +00:00
bc22f0c6f6 feat: EAS build config for Android APK + BUILD.md (FIBEROPS-210)
- Add versionCode: 1 to app.json android section
- Add preview-local build profile to eas.json (local Gradle build)
- Add build:android:apk and build:android:local npm scripts
- Add BUILD.md documenting EAS cloud and local build instructions
2026-04-01 01:08:04 +00:00
c649b2f61b Merge pull request 'feat: app icon/splash asset guidelines + app.json fixes (FIBEROPS-209)' (#2) from feat/FIBEROPS-209-app-assets into main 2026-04-01 01:06:09 +00:00
313a2f8a03 feat: app icon/splash asset guidelines + app.json config (FIBEROPS-209)
- Fix slug typo: "firberops" → "fiberops"
- Update splash backgroundColor to brand #F8FAFC (was Expo default #2563EB)
- Update android adaptiveIcon backgroundColor to brand cyan #0891B2
- Add assets/ASSETS.md with full brand guidelines (colors, fonts, dimensions)
- Add scripts/generate-assets.sh to regenerate PNGs from SVG sources via inkscape/rsvg-convert
2026-04-01 01:05:28 +00:00
c0d36fd895 Merge pull request 'fix: Mobile QA — manual tasks + remittance data unwrap bug (FIBEROPS-207-208)' (#1) from fix/FIBEROPS-207-208-mobile-qa into main 2026-04-01 01:02:53 +00:00
7d82ddc316 fix: Mobile QA — manual tasks + remittance review (FIBEROPS-207-208)
- manual-tasks/[id].tsx: use r.data?.data ?? r.data for detail query to
  handle API response wrapper envelope, matching list screen pattern
- remittances/[id].tsx: same fix — detail query now unwraps correctly
- services/api.ts: use STORAGE_KEYS.TOKEN constant instead of hardcoded
  string literals in SecureStore calls
2026-04-01 01:01:59 +00:00
Nemo
95d2510b23 feat: Manual Tasks mobile screens (#24) - list, new, detail + profile nav 2026-03-25 08:21:02 +08:00
Nemo
ca6236da04 fix: remittance — correct unremitted endpoint, send paymentIds in submit, fix channel field 2026-03-25 07:30:07 +08:00
Nemo
c83a25b153 fix: SlideToConfirm v4 — useNativeDriver:false, capture phase claim, pan.setValue in move 2026-03-25 06:29:14 +08:00
Nemo
a3d40cd796 fix: SlideToConfirm use Animated.event + useNativeDriver:true for real-time finger tracking 2026-03-25 06:24:13 +08:00
Nemo
bf1e36f9e7 feat: SlideToConfirm v3 — pageX tracking, tip bounce, check icon, threshold on release 2026-03-25 06:12:51 +08:00
Nemo
b431d83d13 fix: SlideToConfirm snap-to-end — trackWidthRef+State, no _value/_offset private API, layout guard 2026-03-25 05:57:33 +08:00
Nemo
295c32e6e7 fix: SlideToConfirm stale closure — live refs for disabled + onConfirm; horizontal-only drag on iOS 2026-03-25 05:43:44 +08:00
Nemo
831dd6d5a9 fix: onboarding button activeOpacity consistent; feat: GPS update in client profile 2026-03-24 22:38:22 +08:00
Nemo
055b3a4330 fix: onboarding button disabled state; feat: update GPS from client profile 2026-03-24 22:36:08 +08:00
Nemo
9ca012f75a fix: [BLOCKER] status-change comments marked isSystemMessage to prevent auto-reopen 2026-03-24 16:41:43 +08:00
Nemo
77a395a2ef fix: SlideToConfirm color prop + TS errors that were crashing Metro bundler 2026-03-24 16:25:48 +08:00
Nemo
2325d5ad62 fix: [BLOCKER] status RESOLVED race condition - use setQueryData from PATCH response, no refetch race 2026-03-24 16:13:36 +08:00
Nemo
a5cac16924 fix: tab stack reset, GPS optional for install, status picker mutation fix 2026-03-24 16:09:21 +08:00
Nemo
e0da23fa56 fix: syntax error - wrap subscription ternary content in fragment 2026-03-24 15:40:30 +08:00
Nemo
c778d14a13 fix: activation flow - generate invoice on install, block prepaid if unpaid, activate sub on resolve; sub type/status badges 2026-03-24 15:26:09 +08:00
Nemo
5123d8c114 feat: dashboard shows top 5 tickets + invoices with View all links 2026-03-24 15:09:06 +08:00
Nemo
882e416a40 fix: 5 issues - leads 500, prepaid amount/invoice, install RESOLVED, dup tickets, confirm fail 2026-03-24 14:52:40 +08:00
Nemo
16cf1c0616 fix: add lead modal - KeyboardAvoidingView + ScrollView to prevent keyboard overlap 2026-03-24 14:26:33 +08:00
Nemo
c1da787656 fix: SlideToConfirm pure PanResponder+Animated - no Reanimated/RNGH (Expo Go compat) 2026-03-24 14:18:33 +08:00
Nemo
6d3729406b fix: rewrite SlideToConfirm with Reanimated only (no RNGH); remove GestureHandlerRootView 2026-03-24 14:15:02 +08:00
Nemo
e99c057325 fix: downgrade react-native-gesture-handler to 2.20.2 (compiled JS, SDK54 compatible) 2026-03-24 14:05:22 +08:00
Nemo
e9a76baf90 fix: add GestureHandlerRootView to root layout; install react-native-gesture-handler 2026-03-24 14:01:20 +08:00
Nemo
dcff516375 feat: add address field to lead form 2026-03-24 13:53:43 +08:00
Nemo
66cf8e01e8 feat: leads module - list, detail, add, convert to client, delete; leads section on dashboard 2026-03-24 13:49:11 +08:00
Nemo
d6258fc02d fix: onboarding address required fallback; ticket staleTime:0 for instant status refresh 2026-03-24 13:28:35 +08:00
Nemo
e419f64bc2 fix: SlideToConfirm - RNGH GestureHandlerRootView + Reanimated worklets (proper Modal iOS fix) 2026-03-24 13:24:35 +08:00
Nemo
c0802e8635 fix: SlideToConfirm use useNativeDriver:false so setValue follows finger in real-time 2026-03-24 13:16:52 +08:00
Nemo
a4b00bad97 fix: rewrite SlideToConfirm with onTouchStart/Move/End instead of PanResponder - works in Modals 2026-03-24 13:12:53 +08:00
Nemo
024bb06205 fix: SlideToConfirm gesture blocked by modal backdrop - restructure all payment modals 2026-03-24 13:09:53 +08:00
Nemo
065844b579 fix: SlideToConfirm inputRange crash when maxX=0 before layout 2026-03-24 13:03:37 +08:00
Nemo
705e375667 feat: prepaid/postpaid onboarding; prepaid payment gate on activation ticket; slide-to-confirm on all payments; pay button on dashboard invoices 2026-03-24 12:44:55 +08:00
Nemo
8a3f7564a6 feat: slide-to-confirm on all payment screens; pay button on dashboard invoice rows 2026-03-24 12:41:31 +08:00
Nemo
58468fb986 feat: new client onboarding wizard (3-step); fix ticket status refresh after update 2026-03-24 12:36:19 +08:00
Nemo
0ddd31ecd7 fix: installation confirm - invalidate task cache + navigate back so status shows correctly 2026-03-24 12:25:40 +08:00
Nemo
9b79e5a298 fix: tab press listeners reset stack to index - fixes stale detail screen from cross-tab navigation 2026-03-24 12:07:08 +08:00
Nemo
9629384349 fix: unmountOnBlur on tasks+clients tabs - fixes stack freezing on previous detail screen 2026-03-24 12:02:51 +08:00
Nemo
f346951052 fix: tickets freeze (useFocusEffect), comment body render, client status from subscription, activation ticket on install, keyboard avoid payment modal 2026-03-24 11:57:24 +08:00
Nemo
f8c5402b02 fix: 5 bugs - tab height, collect pay modal, invoice picker in record payment, comment body field, dashboard tickets label 2026-03-24 11:44:14 +08:00
Nemo
defacbcc77 fix: client list - prominent status badge with left border accent + plan name 2026-03-24 11:33:30 +08:00
Nemo
346e41445b feat: dashboard tickets+invoices, collect screen overhaul, client detail tickets tab + pay invoice + map
- Dashboard: active tickets (unassigned + assigned to me, top 10), top 10 unpaid invoices by due date, revenue hidden for TECHNICIAN/COLLECTOR
- Collect screen: unpaid invoices sorted overdue-first, remittance button at top, navigate button (Google Maps/Waze)
- Client Detail: added Tickets tab, removed Payments tab, Invoices tab has pay button per invoice + status tags + ordered by issuedDate
- Client Profile tab: map view + navigate button using client lat/lng
- Installed react-native-maps
2026-03-24 11:27:18 +08:00
Nemo
4644a3194d feat: major UI/UX overhaul + user management + ticket detail refactor
- 5-tab navigation (Home/Clients/Collect/Tickets/Profile)
- Inline styles throughout (17px min font, SafeAreaView)
- Dashboard fixed to match real API shape
- Ticket detail: 2 tabs (Details + Comments), always-visible comment input
- Installation confirmation: GPS coordinate capture + client location update
- User management screens (Admin only): list, create, detail + role/active toggle
- Tasks folder replaces tickets folder
- Remittance detail: inline styles
- Record payment: prefill from client, live button text
- Icon component with SVG icons
- Color system: primary #0891B2
2026-03-24 10:37:57 +08:00
Nemo
baed6dc8d5 feat: complete all screens - client tabs, payments list, remittance detail, new ticket, installations tab
- Client detail: Subscription/Invoices/Payments tabs now fully functional
- Payments: proper list with today's total + live search prefill from client
- Record payment: debounced live search, reference required for non-cash
- Remittances: detail screen with included payments breakdown
- Tickets: status filter chips + create button, new ticket with categories
- Installations: tab now visible with list + confirm flow
- Fix: remove duplicate @react-navigation/elements causing Metro asset error
- Fix: metro.config.js asset resolution from node_modules
2026-03-23 21:22:57 +08:00
Nemo
8f5027413c chore: link to Expo project ID 15d21320 (juankibin/firberops) 2026-03-23 19:01:14 +08:00
Nemo
e90ffc9fb3 feat: complete Sprint 3 Expo mobile app scaffold + all screens 2026-03-23 18:44:25 +08:00