ReviewOS

also looking at this

stacks/wildloop

feat: native trail maps and complete native mobile screens

#1017
Draft chris wants to merge codex/trail-experience into main
60 files +2505 -823

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

tests/unit/native-record-screen.test.tsmodifiedrenamed throughout+2-2
Changes to tests/unit/native-record-screen.test.ts
@@ -27,8 +27,8 @@ describe('native Record checkpoint recovery',()=>{
2727 expect(registration.payload.args).toMatchObject(['wildloop-native-recording-v1',{userId:7,id:'782f0d4a-f626-41bc-8f17-2f67e9a099bf',phase:'starting'}])
2828 expect(requests(screen).some(r=>r.payload.method==='startRecording')).toBe(false)
2929 answer(screen,registration,true)
30 const start=await waitForRequest(screen,0,r=>r.payload.method==='startRecording')
31 expect(start.payload.args[0]).toMatchObject({recordingId:'782f0d4a-f626-41bc-8f17-2f67e9a099bf'})
30 const nativeStart=await waitForRequest(screen,0,r=>r.payload.method==='startRecording')
31 expect(nativeStart.payload.args[0]).toMatchObject({recordingId:'782f0d4a-f626-41bc-8f17-2f67e9a099bf'})
3232 })
3333 it('recovers a finished upload offline without starting another GPS recording',async()=>{
3434 const screen=await recover()