Skip to content

Commit 9814871

Browse files
author
Lalit Sharma
committed
feat: update changelog for version 1.1.42 and disable iOS share-extension target for CI stability
1 parent 44d2d43 commit 9814871

4 files changed

Lines changed: 51 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.1.42] — 2026-02-27
9+
10+
### Fixed
11+
- Fixed non-interactive iOS EAS build failures caused by `ShareExtension` credential setup requirements by disabling iOS share-extension target generation in `expo-share-intent` plugin config for now (`disableIOS: true`).
12+
13+
### Changed
14+
- Kept Android share-link intake enabled through tracked native manifest intent filters while plugin Android mutation remains disabled (`disableAndroid: true`).
15+
- Bumped `apps/mobile` version to `1.1.42`.
16+
817
## [1.1.41] — 2026-02-27
918

1019
### Added

apps/mobile/app.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@
8686
[
8787
"expo-share-intent",
8888
{
89-
"disableAndroid": true
89+
"disableAndroid": true,
90+
"disableIOS": true
9091
}
9192
],
9293
[

apps/mobile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@eclipse-timer/mobile",
3-
"version": "1.1.41",
3+
"version": "1.1.42",
44
"private": true,
55
"main": "index.js",
66
"scripts": {

documents/planning/location-share-links-plan.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Completed:
3232
5. Added `apps/mobile/src/services/shareIntake.ts` and `apps/mobile/tests/share-intake.test.ts` for normalized external-link intake plumbing (linking path implemented; share-target source wiring still pending).
3333
6. Added `expo-share-intent` integration for Expo SDK 54:
3434
- dependency + peer deps in `apps/mobile/package.json`
35-
- plugin registration in `apps/mobile/app.json` (configured with `disableAndroid: true`)
35+
- plugin registration in `apps/mobile/app.json` (configured with `disableAndroid: true`, `disableIOS: true` for CI credential stability)
3636
- `useShareIntent` wiring in `RootNavigator` to forward shared text/web URLs into the same parser + navigation path used by deep links.
3737
7. Added Android native intent filter for share payload intake in `apps/mobile/android/app/src/main/AndroidManifest.xml` (`ACTION_SEND`, `text/*`) so tracked Android native config does not rely on CNG/plugin mutation.
3838
8. Added pnpm native patching for `xcode@3.0.1` (`package.json` `pnpm.patchedDependencies` + `patches/xcode@3.0.1.patch`) to avoid known Expo prebuild/share-extension config sync issues.
@@ -212,6 +212,35 @@ This keeps location application near existing timer state APIs and avoids adding
212212

213213
Implementation note: platform integration should be done via a maintained Expo-compatible package/config plugin to avoid hand-maintained native extension code where possible.
214214

215+
### 6.6 iOS differences and extra requirements
216+
217+
Why iOS is different from Android:
218+
219+
1. Android can receive shared text via `ACTION_SEND` intent filters directly on the main activity.
220+
2. iOS share-sheet ingestion is implemented through a separate `Share Extension` target, not the main app target.
221+
3. The `Share Extension` is treated as a second iOS target with its own bundle identifier and provisioning profile requirements.
222+
4. Because there are multiple iOS targets, EAS credentials setup must succeed for both targets (`EclipseTimer` and `ShareExtension`) in non-interactive CI.
223+
224+
What this means for this project:
225+
226+
1. `expo-share-intent` is currently configured with `disableIOS: true` to keep CI stable until extension credentials are explicitly prepared.
227+
2. Android share flow remains enabled through tracked `AndroidManifest.xml` intent filters and JS intake wiring.
228+
3. iOS share-sheet ingestion is pending only for credential/provisioning setup; parser and navigator logic are already in place.
229+
230+
Extra iOS work required to re-enable `ShareExtension`:
231+
232+
1. Re-enable iOS plugin generation by setting `disableIOS: false` in `apps/mobile/app.json`.
233+
2. Ensure extension identifiers and entitlements are created/consistent:
234+
- app target: `com.lallimaven.eclipse-timer`
235+
- extension target: `com.lallimaven.eclipse-timer.share-extension`
236+
- app group entitlement used by the plugin (currently `group.com.lallimaven.eclipse-timer`)
237+
3. Configure credentials for both iOS targets in EAS (interactive run required once):
238+
- `pnpm -C apps/mobile exec eas credentials --platform ios`
239+
4. Confirm CI can build iOS in non-interactive mode after credentials exist for both targets:
240+
- `pnpm -C apps/mobile exec eas build --profile production --platform ios --local --non-interactive`
241+
5. Validate only one intended extension target is present in iOS build output and EAS credentials mapping.
242+
6. Run manual iOS share flow matrix (cold/warm/foreground) and confirm map pin/status behavior.
243+
215244
## 7. File Touchpoints (Planned)
216245

217246
1. `apps/mobile/src/navigation/RootNavigator.tsx`
@@ -258,7 +287,15 @@ Progress: In progress.
258287
1. JS and config integration is implemented (`expo-share-intent` dependency/plugin + `useShareIntent` wiring).
259288
2. Android native share intent filter is implemented in tracked manifest (`ACTION_SEND` + `text/*`).
260289
3. Known prebuild hardening applied (`xcode@3.0.1` patch via pnpm patchedDependencies).
261-
4. Remaining work is platform validation and any native configuration hardening discovered during device/EAS testing.
290+
4. iOS share-extension target generation is temporarily disabled (`disableIOS: true`) because non-interactive CI failed on missing `ShareExtension` credentials; re-enable after provisioning profile setup.
291+
5. Remaining work is platform validation and any native configuration hardening discovered during device/EAS testing.
292+
293+
iOS re-enable checklist:
294+
295+
1. Toggle `disableIOS` to `false` in `apps/mobile/app.json`.
296+
2. Run interactive iOS credentials setup for both targets with EAS.
297+
3. Verify a successful non-interactive iOS production build in CI.
298+
4. Verify iOS manual share matrix passes.
262299

263300
### Phase 4: Validation and hardening
264301

0 commit comments

Comments
 (0)