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.

scripts/run-native-trail-android-e2e.tsmodified+3-3
Changes to scripts/run-native-trail-android-e2e.ts
@@ -143,10 +143,10 @@ export async function runNativeTrailAndroidE2e(): Promise<void> {
143143 if (phase === 'directions' || phase === 'directions-map') {
144144 const activities = await adb(['shell', 'dumpsys', 'activity', 'activities'], `${phase}-activities`)
145145 const resumed = activities.split('\n').filter(line => /(?:mResumedActivity|topResumedActivity):/.test(line))
146 const systemActivity = /\b(?:android|com\.android\.(?:intentresolver|launcher3|permissioncontroller)|com\.google\.android\.apps\.nexuslauncher)\//
146 const expectedHandler = /\b(?:com\.google\.android\.apps\.maps|com\.android\.chrome)\//
147147 const unfinishedActivity = /(?:ResolverActivity|ChooserActivity|FirstRunActivity)\b/
148 if (!resumed.length || resumed.some(line => line.includes(`${mobile.android.packageName}/`) || systemActivity.test(line) || unfinishedActivity.test(line)))
149 throw new Error('Directions did not reach a ready external Android application.')
148 if (!resumed.length || resumed.some(line => !expectedHandler.test(line) || unfinishedActivity.test(line)))
149 throw new Error('Directions did not reach ready Chrome or Google Maps on the stock Play test device.')
150150 }
151151 await platformEvents(phase)
152152 }