Costa Rica App

repo: ~/Projects/costa-rica-app · 28 commits · 0 in last 24h, 0 in last 7d ·

Search the build

28 commits indexed

  1. d2af7f0 2026-09-14 costa-rica: fix broken eas submit ascApiKeyPath -> canonical /Users/macstudio3/private_keys/AuthKey_72Y2TZT54R.p8
  2. e1ee39b 2026-09-13 TK-11518: the honest-copy rewrite introduced its own 2.3.1 claims
  3. 787b1cf 2026-09-13 TK-11518: kill the App Store paste traps + record the real ASC field state
  4. 8ec16a5 2026-09-11 eas: pin production ios.image=latest (ITMS-90725 guard)
  5. 1576ed3 2026-09-11 Costa Rica listing: rewrite the copy to match the live catalog
  6. 5904b9b 2026-09-11 Costa Rica listing: drop the interactive-map claim — the app has no map
  7. f1a335c 2026-09-04 Costa Rica: purge store copy + screenshot that advertised the removed invite feature (TK-10387)
  8. ac997f8 2026-09-04 auto-data-snapshot: 2026-09-04T05:53:32 (1 data files) — package-lock.json
  9. 325bd5d 2026-09-03 Costa Rica iOS: remove address-book import + invite-friends for v1 (TK-10387, DTD verdict C)
  10. ff7a06b 2026-09-03 auto-data-snapshot: 2026-09-03T20:10:09 (2 data files) — app.json package.json
  11. e870ac2 2026-08-10 chore: commit gen-shots intermediate + v0.1.2 (session close — TK-10363 Costa Rica shot prep)
  12. 368e715 2026-08-10 Costa Rica: reshoot 03-booking screenshot to fill frame (stay summary + trust strip) — fixes Cody 2.3.3 empty-half defect (TK-10363)
  13. 10b3c50 2026-08-10 Costa Rica: stage 5x 1320x2868 App Store screenshots + store copy (TK-10363, non-gated prep)
  14. a3a5146 2026-08-09 listing: point Support/Marketing URLs at public /support, add required Privacy Policy URL, correct build to #13
  15. fca4bcf 2026-08-07 costa-rica-app: upgrade Expo SDK 52->54 (RN 0.81.5 / react 19.1.0 / expo-router 6) for Xcode 26 / iOS 26 SDK — Apple now mandates it for App Store uploads; tsc clean + expo-doctor 18/18, TK-10346
  16. 387e7dc 2026-08-07 chore: bump v0.1.0 -> v0.1.1 (session close)
  17. e028ded 2026-08-07 auto-data-snapshot: 2026-08-07T15:54:54 (2 data files) — package-lock.json package.json
  18. 2413374 2026-08-07 costa-rica-app: App Store listing metadata (store/listing.md) + 5 real device screenshots @1290x2796 (directory, listing+BEST WAY TO CONTACT, booking, trips, invite) captured from live app via expo-web+headless-chrome
  19. dc1e02f 2026-08-07 auto-data-snapshot: 2026-08-07T14:22:04 (1 data files) — eas.json
  20. b5406e9 2026-08-07 auto-data-snapshot: 2026-08-07T13:51:08 (1 data files) — eas.json
  21. a6f0009 2026-08-07 costa-rica-app: register expo-asset + expo-font plugins in app.json (complete the Metro bundle-phase fix)
  22. a7eb8a4 2026-08-07 costa-rica-app: add missing expo-asset + expo-font (Metro/EAS bundle-phase failure fix); local expo export now succeeds
  23. e1db303 2026-08-07 costa-rica-app: big BEST WAY TO CONTACT block on listing — WhatsApp/Call/Email/Message/Other color buttons + in-app messenger composer modal
  24. 30a7d50 2026-08-07 costa-rica-app: align react-native 0.76.9 + react-native-screens 4.4.0 to Expo SDK 52 expected versions (expo-doctor 18/18) — pre-build hygiene, TK-10346
  25. 7d6bbd9 2026-08-07 auto-data-snapshot: 2026-08-07T11:14:36 (3 data files) — app.json eas.json package-lock.json
  26. 2368baa 2026-08-07 costa-rica-app: Contacts screen — import address book (expo-contacts + NSContactsUsageDescription), show who's on-app, invite the rest via WhatsApp; 👥 entry point on directory
  27. 2d0b15d 2026-08-07 costa-rica-app: Sign in with Apple — expo-apple-authentication button on login, usesAppleSignIn + plugin, api.apple()
  28. e816038 2026-08-07 costa-rica-app: Expo/EAS native scaffold — Router nav, JWT auth, directory browse, listing, booking+payment (card/SINPE via Tilopay 3DS), my-trips, host onboarding (SINPE/Plaid); eas.json wired to account ASC key (public IDs only, .p8 gitignored)

Authors

Agents used

  • none detected

Skills used

  • /claude5
  • /code5
  • /listing4
  • /copy2
  • /costa-rica-appstore-copy2
  • /contacts2
  • /macstudio31
  • /nineoh-guide1
  • /asc-api-key1
  • /seed1
  • /app1
  • /listings1
  • /surf1
  • /short-rentals1
  • /long1
  • /nearby1
  • /invite-friends1
  • /screenshots1
  • /branding1
  • /subtitle1
  • /keywords1
  • /description1
  • /support1

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

d2af7f0 · 2026-09-14 · costa-rica: fix broken eas submit ascApiKeyPath -> canonical /Users/macstudio3/private_keys/AuthKey_72Y2TZT54R.p8
The configured path ../nineoh-guide/.credentials/asc-api-key.p8 does not exist on
disk; a gated 'eas submit' would fail on it. Repointed to the canonical ASC API key
(same key id 72Y2TZT54R already in this file; nineoh committed precedent). Config-only,
reversible, no submit fired. TK-11730.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KoECqRCpUVbcsFegZ1Xp3e
e1ee39b · 2026-09-13 · TK-11518: the honest-copy rewrite introduced its own 2.3.1 claims
store/listing.md is the authoritative paste source, so two defects in it matter:

- Its note asserted 'REALITY: 4 real listings (Arenal Volcano Hike, Casa Manuel
  Antonio, Nosara Yoga Institute, Tamarindo Surf School)'. Those four were
  classified by NAME. places.source says all four are 'seed-demo', inserted by
  scripts/seed.sql:41-58 as 'placeholders so UI renders something before scrape
  lands real data'. Genuine curated inventory is zero.
- The body copy therefore makes false provenance claims -- 'hand-picked, not
  scraped' and 'Every listing is reviewed by a human before it goes up' over a
  catalog that is 8/8 machine-seeded -- and is coupled to the gated demo purge,
  which deletes exactly the four destinations it names.

Body copy deliberately NOT rewritten: the right copy depends on inventory that
does not exist yet, and a speculative rewrite would create a fourth divergent
version. Warning banner added instead.

Docs/copy only. Undo: git revert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vbtgv1MuWftpd3hfWEiZYG
787b1cf · 2026-09-13 · TK-11518: kill the App Store paste traps + record the real ASC field state
Three paste sources existed for the same listing; the 2.3.1 fix (1576ed3/5904b9b)
landed only in store/listing.md, leaving the other two live.

- store/costa-rica-appstore-copy.md: marked SUPERSEDED. Its description still read
  'Thousands of listings across all 7 provinces and 84 cantones' against a measured
  live catalog of 8, plus Monteverde/Puerto Viejo (no listings) and restaurants +
  local services (no such vertical). Withdrawn blocks kept as the record, never
  pasteable. Only the ASC field checklist here is still usable.
- store/listing.md: records the ASC state measured read-only 2026-09-13 — ~13 unset
  fields, not the 9 previously packeted, and flags that the store-visible name is the
  placeholder 'Costa Rica (b9f8c9)'.

Docs/copy only. No code, no deploy, no ASC write. Undo: git revert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vbtgv1MuWftpd3hfWEiZYG
8ec16a5 · 2026-09-11 · eas: pin production ios.image=latest (ITMS-90725 guard)
Fleet sweep under TK-11155 found this app missing the guard that Charge & Explore
needed after sitting at 0 builds in ASC on an ITMS-90725 upload bounce. The
documented fix is exactly this line (Xcode 26 / iOS 26 SDK image), and the
chargeandexplore-release canary treats it as a HARD gate.

Cheap insurance: without it a production build can bounce on upload after the
EAS build has already been paid for.

Semantic diff confirms this adds build.production.ios.image only; nothing else
removed or changed. JSON re-validated.

Refs TK-11155.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1576ed3 · 2026-09-11 · Costa Rica listing: rewrite the copy to match the live catalog
Steve's call (TK-11518): hold the submission, soften the copy, populate real
inventory. This is the copy half.

The description promised a product that does not exist yet. Measured against
/api/app/listings and the source, the previous copy carried five separate
Guideline 2.3.1 exposures:

  claim                                    reality
  "Thousands of listings"                  8 listings (4 of them labelled DEMO)
  "all 7 provinces and 84 cantones"        4 regions
  "Monteverde, and Puerto Viejo"           neither has a listing
  "restaurants, and local services"        verticals are tours/surf/short-rentals only
  "an interactive map"                     no map in the binary (removed in 5904b9b)

Rewritten as an honest small-launch position: four named destinations, human-
reviewed listings, growing. Subtitle and promotional text corrected the same way
("Hotels, tours & local services" -> "Stays & tours in Costa Rica").

Every surviving claim was re-verified against the code or the live API: SINPE
(2 files), in-app messenger (5), Sign in with Apple (1 + expo-apple-authentication),
My Trips (2), booking (7), and "four destinations" against 4 live regions.
Lengths gated: subtitle 27/30, promo 142/170, description 1227/4000.

NOT submitting. Two things still gate a submission and both are content, not copy:
every listing has image_url null, and the 4 DEMO rows are still live in prod.

Refs TK-11518, TK-11155.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5904b9b · 2026-09-11 · Costa Rica listing: drop the interactive-map claim — the app has no map
The App Store description advertised "See every place on an interactive map and
find what's near you." There is no map in the binary: no react-native-maps,
MapView, mapbox, leaflet, or any lat/long/nearby code in app/ or src/, and
react-native-maps is not a dependency. expo-location is not a dependency either.

Advertising a feature the binary does not have is a Guideline 2.3.1 rejection,
and it is the same defect class that flagged Unofficial 90210 ("No ads. No
tracking." over a binary shipping AdMob + Firebase). On an account already
carrying seven unresolved rejections, a self-inflicted 2.3.1 is expensive.

The 4 staged screenshots were already honest — directory, listing-contact,
booking, trips, no map shot — so only the copy was wrong.

Also refreshed two stale notes in the same file: the screenshot-size guidance
(staged shots are 6.9" 1320x2868, verified with sips, which is Apple's current
required iPhone size; the old 6.7"/6.5" text predated it) and the suggested
screenshot set, which still listed a "Map of places" shot.

Refs TK-11518, TK-11155.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
f1a335c · 2026-09-04 · Costa Rica: purge store copy + screenshot that advertised the removed invite feature (TK-10387)
Removing the contacts/invite-friends feature made the staged App Store metadata FALSE.
Submitting it as-is would have described and shown a feature the binary no longer has —
the same Guideline 2.3.1 trap already flagged on another app in this fleet, and 2.3.3 for
the screenshot.

- store/screenshots/05-invite.png showed the Invite-friends screen and WAS STAGED FOR
  UPLOAD. Moved to store/_removed/ (kept, not deleted). Four shots remain, a valid set.
- Removed the 'BRING YOUR FRIENDS' section from both costa-rica-appstore-copy.md and
  listing.md.
- Removed 'Contacts (optional, user-initiated)' AND 'Location (coarse, optional)' from
  the declared privacy data types in listing.md. Location is gone too: there is no
  expo-location and no maps dependency, so that permission was orphaned and has been
  dropped from app.json.
- Rewrote the privacy guidance block, which previously instructed 'Contacts and Location
  are used ON-DEVICE ... do not label as collected'. That wording described an intent the
  shipped code did not match — it uploaded and stored the whole address book — which is
  precisely why the feature was removed rather than relabelled.

Metadata only; no product code touched. ASC entry remains Steve's console action.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QfGYEoLBywwJD1nfrHe1on
325bd5d · 2026-09-03 · Costa Rica iOS: remove address-book import + invite-friends for v1 (TK-10387, DTD verdict C)
The client read the user's ENTIRE address book and uploaded {name, phone, email}
in cleartext to a server route that durably persisted it - third parties' personal
data from people who are not users and never consented. That also contradicted the
app's own NSContactsUsageDescription, which promised contacts stay on-device.

DTD panel ruled C unanimously (8/8): remove the feature for v1. At zero users an
invite-matcher matches an empty set, so the feature had no value to trade against
the Guideline 5.1.1/5.1.2 exposure. Prod was verified empty first (0 rows), so no
third-party data was ever actually collected.

- delete app/contacts.tsx, its Stack.Screen route, and the home-screen entry point
- drop importContacts/contacts/inviteContact from src/api.ts
- drop NSContactsUsageDescription (no address-book access remains)
- drop the orphaned NSLocationWhenInUseUsageDescription: verified there is no
  expo-location and no maps dependency, so the app asked for a permission it
  never used (decision 3)
- supportsTablet -> false: only iPhone-6.9" screenshots are staged, and an iPad
  set is a hard ASC submit blocker (decision 2)
- remove the expo-contacts dependency and plugin entry, so no contacts SDK ships

Server counterpart removed in the costa-rica repo. Local only - no deploy, no
submit, no DB write.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QfGYEoLBywwJD1nfrHe1on
10b3c50 · 2026-08-10 · Costa Rica: stage 5x 1320x2868 App Store screenshots + store copy (TK-10363, non-gated prep)
- Regenerated 5 screenshots at exactly 1320x2868 (iPhone 6.9" spec) via local
  Playwright render of an HTML mock built from the app's REAL screens/branding
  (green #0a7d55). $0 local render, no paid API.
- Screens: directory browse, listing detail (BEST WAY TO CONTACT), booking
  (card + SINPE Movil), My Trips, Invite friends.
- Added store/costa-rica-appstore-copy.md: name/subtitle/keywords/description,
  privacy labels per Steve's Aug 8 decision (Contacts+Location on-device, not
  collected), export compliance, screenshot manifest. Anti-slop checked.
- gen-shots.mjs renderer committed under tmp/ for reproducibility.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

File tree

28 files tracked. Click any to browse the source at HEAD.

Other build journals

← Costa Rica  ·  all 4 projects  ·  Council 0809 Builds →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 0ms