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.

.maestro/native-trail/maps.yamlmodified+16-0
Changes to .maestro/native-trail/maps.yaml
@@ -134,3 +134,19 @@ name: Native Android trail maps and sticky save
134134- assertVisible:
135135 id: trail-sticky-actions
136136- takeScreenshot: android-native-sticky-actions
137- scrollUntilVisible:
138 element:
139 id: trail-weather-heading
140 direction: DOWN
141- assertVisible:
142 id: trail-weather-heading
143- takeScreenshot: android-native-trail-weather
144- scrollUntilVisible:
145 element:
146 id: trail-surfaces-heading
147 direction: DOWN
148- assertVisible:
149 id: trail-surfaces-heading
150- takeScreenshot: android-native-trail-surfaces
151- assertVisible:
152 id: trail-sticky-actions
resources/native/TrailDetail.stxmodified+2-2
Changes to resources/native/TrailDetail.stx
@@ -327,7 +327,7 @@ onMount(() => onNativeAccountChange(craft, () => { viewer.set(0); saved.set(fals
327327 </View>
328328 <Text :class="ui.header">Conditions</Text>
329329 <View :class="ui.card">
330 <Text :class="ui.title">Weather</Text>
330 <Text testID="trail-weather-heading" :class="ui.title">Weather</Text>
331331 <Text :show="!forecast()" :class="ui.caption">No forecast is available right now. Pull down to retry.</Text>
332332 <View :show="forecast()" class="gap-3 mt-2">
333333 <View :show="forecast()?.current" class="gap-1 py-2">
@@ -346,7 +346,7 @@ onMount(() => onNativeAccountChange(craft, () => { viewer.set(0); saved.set(fals
346346 </View>
347347 </View>
348348 <View :class="ui.card" class="mt-3 gap-2">
349 <Text :class="ui.title">Surface types</Text>
349 <Text testID="trail-surfaces-heading" :class="ui.title">Surface types</Text>
350350 <View :for="surface in surfaces()" :key="surface.label" :class="ui.row">
351351 <View class="h-5 w-5 rounded-[4px]" :style="{backgroundColor:surface.color}" />
352352 <Text :text="surface.label" :class="ui.body" />
tests/native/trail-journey.tsmodified+8-0
Changes to tests/native/trail-journey.ts
@@ -86,6 +86,14 @@ const maps:SimulatorStep[] = [
8686 {command:'expect',text:`Map layer: ${layer}`,seconds:10},
8787 ]),
8888 {command:'back'},
89 {command:'scrollto',text:'Weather'},
90 {command:'expectid',text:'trail-weather-heading',seconds:10},
91 {command:'shot',name:'native-trail-weather'},
92 {command:'tree',name:'native-trail-weather'},
93 {command:'scrollto',text:'Surface types'},
94 {command:'expectid',text:'trail-surfaces-heading',seconds:10},
95 {command:'shot',name:'native-trail-surfaces'},
96 {command:'tree',name:'native-trail-surfaces'},
8997 {command:'expectid',text:'trail-sticky-actions',seconds:10},
9098]
9199const reviews:SimulatorStep[] = [