npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.

> sawaup@3.6.1 test
> node --test tests/*.test.mjs

✔ Athar profile has Wamda publish, notifications, DMs and public/private control (1.22976ms)
✔ right swipe returns to phone chats and left swipe opens Athar profile (0.285511ms)
✔ private Athar follows use requests with accept and reject (0.241045ms)
✔ Athar direct messages are separate backend records (0.245873ms)
✔ private Wamdat are filtered from discovery unless viewer is accepted follower (0.31631ms)
✔ background notification task is registered and stores messages locally (1.258115ms)
✔ push transport sends a visible alert plus a high-priority headless cache copy (0.330849ms)
✔ Android separates message and call notification channels (0.207423ms)
✔ message and call pushes carry enough payload for local cache and routing (0.250867ms)
✔ new groups notify initial members immediately (0.153835ms)
✔ cache serializes concurrent merges without losing messages (11.723548ms)
✔ cache does not silently erase corrupt local history (0.531923ms)
✔ caller negotiates video without opening camera and requests earpiece (3.5621ms)
✔ callee uses the offered video sender instead of adding an unmatched transceiver (1.55325ms)
✔ audio track arriving after video preserves both remote tracks (0.978818ms)
✔ calls keep STUN and support authenticated multi-endpoint TURN fallback (1.354879ms)
✔ unified call starts audio-only and can enable camera without starting a new call (0.935816ms)
✔ Arabic digits and Oman phone normalize (1.46859ms)
✔ username normalize (0.282522ms)
✔ profile search accepts username and phone (1.380156ms)
✔ poll and event previews are readable (0.352185ms)
✔ attachment parsing (0.200281ms)
✔ audio preview (0.238201ms)
✔ message merge keeps receipts and local media (0.306734ms)
✔ one-view effects cannot reopen after consumption (0.23756ms)
✔ room recipients are unique and include sender (1.007832ms)
✔ room relay rejects a sender who is not a member (0.75121ms)
✔ v2.4 SQL migration defines durable poll votes and event RSVP tables (0.706667ms)
✔ v2.5 group moderation migration adds durable muted state (0.237778ms)
✔ Athar uses the account-wide username and does not expose a separate editable username (2.129935ms)
✔ keyboard uses one resize policy and keeps active forms scrollable above the keyboard (1.028066ms)
✔ Android push registration diagnoses native token and retries Expo token (1.12028ms)
✔ slow Y distance locks before release regardless of speed or original button bounds (3.483179ms)
✔ release event reaching threshold locks even if no move event was delivered (0.749329ms)
✔ release below threshold sends once despite duplicate release events (0.967565ms)
✔ release during permission is honored after preparation (0.892767ms)
✔ listen once is carried in the sent attachment options, preview is optional (1.195886ms)
✔ system gesture cancellation discards recording (0.91969ms)
✔ inbox reads stored wamda likes/comments with actor profiles and retains follows (9.10686ms)
✔ public map retry reuses uploaded media and record id after metadata network error (1.871682ms)
✔ invalid coordinates fail before upload (1.138203ms)
✔ AccountScreen does not shadow the imported setBlocked service (2.40731ms)
✔ unblock button calls the service then refreshes the local blocked list (0.853542ms)
✔ all JSX press controls are wired to handlers (1.482658ms)
✔ direct chat plus menu exposes the seven requested actions (0.502089ms)
✔ contact picker searches by phone or username (0.380475ms)
✔ group plus menu exposes the same seven requested actions (1.319916ms)
✔ poll cards support voting, changing vote, counts and percentages (0.448093ms)
✔ event cards support RSVP and add-to-calendar (0.412033ms)
✔ bottom navigation has no rooms tab and keeps chats as launch screen (1.09389ms)
✔ chat composers use Android resize so the full composer clears the keyboard (0.818574ms)
✔ groups live inside chats and support immediate moderation (0.446746ms)
✔ calls use one confirmation action and camera is enabled inside the call (0.45066ms)
✔ 24-hour Athar prefers durable local media after publish (0.275485ms)
✔ notification responses deep-link to chats, groups, calls (0.516109ms)
✔ returning from another app repaints chats from local phone storage before network (0.188065ms)
✔ voice recorder uses hold-to-record, slide-up lock, review, delete and send (0.287185ms)
✔ unified call starts audio-only and negotiates dormant video before offer (0.946879ms)
✔ camera is attached on demand to the pre-negotiated video sender (0.183046ms)
✔ 3.1.2 implements owner-only public Athar deletion (1.292468ms)
✔ 3.1.2 implements owner-only Wamda deletion and UI removal (0.243447ms)
✔ 3.1.2 downloads Wamda media into the device library without bypassing reshare choice (0.374684ms)
✔ 3.1.2 keeps Wamda pin migration and media-library config in the full build (1.093829ms)
✔ 3.1.2 hardens active test-stage RLS away from bare true policies (0.305973ms)
✔ Storage requests send the same test-stage gate key required by media RLS (0.282767ms)
✔ 3.1.1 autolinks the local isolated face-warp Expo module (1.79042ms)
✔ Android face warp owns a separate CameraX + ML Kit pipeline with frame dropping (0.579906ms)
✔ native face analysis prefers 468-point Face Mesh and falls back to contours for unsafe or missed frames (1.645439ms)
✔ CameraX surface lifetime is owned until SurfaceRequest detaches (0.218507ms)
✔ GPU renderer performs inverse pixel deformation instead of overlay-only drawing (0.432006ms)
✔ mesh-guided deformation uses feature-specific radii instead of one generic face box (0.33707ms)
✔ all agreed geometry-changing filters have native warp parameter presets (0.491587ms)
✔ warp failure fails open to the stable VisionCamera camera path (0.220815ms)
✔ normal and decorative camera paths remain available and filtered media records the visible composition (0.545556ms)
✔ face warp module is Android-first and iOS remains a safe fallback (1.207965ms)
✔ Android native warp pins display rotation and guards torch until CameraX is OPEN (0.521933ms)
✔ 3.1 keeps direct and group swipe reply plus sticker sending (1.694516ms)
✔ 3.1 conversation camera is wired for direct and group capture/review (0.441786ms)
✔ 3.1 notification reply and previews cover message variants (1.22683ms)
✔ 3.1 keyboard fix uses native Android resize rather than the old insufficient height offset (0.362306ms)
✔ 3.1 call path hardens permissions, startup timeouts, actual connection state and self view (0.291978ms)
✔ 3.1 Athar trend, pull refresh and pinned Wamdat are wired (0.301237ms)
✔ 3.1 keeps the stable simple receipt UI (0.253157ms)
✔ interactive message notifications register a native text reply action (1.494528ms)
✔ main profile save verifies and caches the server result (0.281203ms)
✔ Athar profile save verifies persisted bio and follow lists resolve missing Athar profiles (0.285806ms)
✔ friend Athar recipient picker hydrates cached people and groups before network refresh (0.323238ms)
✔ Athar profile exposes chat, Wamdat and working menu actions (0.273644ms)
✔ voice recording keeps the requested hold-release-lock-review gesture (0.335607ms)
✔ 3.1 preserves the confirmed successful chat improvements (1.496758ms)
✔ 3.1 fixes the reported chat regressions without restoring failed receipt text (0.585423ms)
✔ call timeline groups missed calls and formats answered duration (10.278846ms)
✔ full 3.1 build advances beyond the failed build 18 (0.361002ms)
✔ Athar high-volume lists use bounded pagination instead of 1000/5000 row pulls (0.74114ms)
✔ Athar profile counters use HEAD exact-count queries instead of downloading rows (0.164366ms)
✔ friend Athar and public Athar are separate entry points (1.468502ms)
✔ friend story + badge is lower-left (0.372099ms)
✔ simple mode hides only the public Athar tab (0.352548ms)
✔ Athar camera has glass search and four-way gestures (0.349918ms)
✔ Wamdat is a vertical paged video feed with search discovery (0.345627ms)
✔ public Athar profile is independent and supports follows (0.181396ms)
✔ public map stores approximate coordinates only from opt-in publish (0.254283ms)
✔ public reshares do not let friend-story cleanup delete shared media (0.70934ms)
✔ friend Athar create button opens live camera instead of treating press event as media (0.523854ms)
✔ v3 uses MapLibre with New Architecture and no react-native-maps dependency (1.328875ms)
✔ Athar live camera is driven by VisionCamera face detection during preview (0.43732ms)
✔ camera wrapper saves the same live filter composition for photos and videos (0.302477ms)
✔ Athar map clusters nearby public posts and expands clusters on tap (0.191426ms)
✔ all 20 agreed Athar filter names are present (0.42419ms)
✔ push delivery has visible OS alerts, background cache copy, call channel, and registration diagnostics (0.279295ms)
✔ native build number identifies the full 3.1 repository build (0.207893ms)
✔ voice hold release keeps immediate-send behavior from the working v3.0.0 path (0.773938ms)
✔ slide-up locks recording and provides recipient listen-once option (0.201451ms)
✔ recording composer replaces the text field with waveform and elapsed duration (0.315462ms)
✔ audio uploads use an audio MIME type instead of falling through to image/jpeg (0.111076ms)
ℹ tests 115
ℹ suites 0
ℹ pass 115
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 570.162927
