ReviewOS

also looking at this

craft-native/craft

feat: finish native customization and platform seams

#401
Merged glennmichael123 wants to merge codex/issues-388-400-344 into main
21 files +707 -17

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.

packages/ios/src/index.test.tsmodified+2-0
Changes to packages/ios/src/index.test.ts
@@ -2629,6 +2629,8 @@ describe('Craft iOS builder', () => {
26292629 expect(watch).toContain('protocolVersion')
26302630 expect(watch).toContain('requestId')
26312631 expect(watch).toContain('stateVersion')
2632 expect(watch).toContain('guard incomingVersion >= stateVersion else { return }')
2633 expect(watch).toContain('stateVersion = incomingVersion')
26322634 expect(watch).toContain('planned-session')
26332635 expect(watch).toContain('craft.watch.state.v1')
26342636 expect(watch).toContain('updateApplicationContext(state)')
packages/ios/templates/CraftWatchApp.swift.templatemodified+4-0
Changes to packages/ios/templates/CraftWatchApp.swift.template
@@ -117,6 +117,10 @@ final class CraftWatchSession: NSObject, ObservableObject {
117117 }
118118
119119 private func apply(_ payload: [String: Any]) {
120 if let incomingVersion = payload["stateVersion"] as? Int {
121 guard incomingVersion >= stateVersion else { return }
122 stateVersion = incomingVersion
123 }
120124 if let plan = payload["plan"] as? [String: Any], payload["type"] as? String == "planned-session" {
121125 plannedSession = plan
122126 status = "Plan ready"