ReviewOS

also looking at this

craft-native/craft

feat(ios): haptic, whose reason expired when ios_config landed

#134
Merged glennmichael123 wants to merge fix/sdk-event-map into main
18 files +562 -163
packages/zig/src/bridge_mobile_calendar.zigmodified+11-4
Changes to packages/zig/src/bridge_mobile_calendar.zig
@@ -139,10 +139,17 @@
139139//! `deleteCalendarEvent` — which requests nothing (3350) — the key is only
140140//! evidence of `config.enableCalendar`, and it is checked for that reason.
141141//!
142//! **`config.enableCalendar` has no Zig mirror**, the same gap
143//! `bridge_mobile_contactpicker.zig` records for `enableContacts`. The plist key
144//! `packages/ios/src/index.ts:190` writes iff that flag is the stand-in, and the
145//! mapping is exact — nothing else writes or shares it.
142//! **`config.enableCalendar` is read directly now.** `ios_config.gateFor` maps
143//! all three actions to `.calendar`, so `ios_dispatch.offerToModules` answers
144//! `CAPABILITY_DISABLED` before this module is asked. This used to say the flag
145//! had no Zig mirror, which was true until `ios_config.zig` read
146//! `craft.config.json`.
147//!
148//! The plist key `packages/ios/src/index.ts:190` writes iff that flag was the
149//! stand-in, and on the one path where it is *only* evidence of the flag rather
150//! than a precondition of the API it is now redundant with the real gate.
151//! Tracked in issue #131; the paths where the key is a genuine precondition are
152//! separated below and stay.
146153//!
147154//! **Behaviour changes on every disabled or malformed path, in Zig's favour.**
148155//! Swift's three cases have no `else` (717-731): an app with