El envio de la 2.0.2 fallo con "could not find an editable version for 'IOS'":
deliver no crea el registro de version, y con la 2.0.1 ya en READY_FOR_SALE no
habia nada editable. Con la 2.0.1 no se noto porque la version ya existia.
ensure_editable_version usa app.ensure_version! de spaceship y avisa antes de
renumerar un borrador ajeno. Login de Connect API extraido a connect_api_app,
que ya compartia status.
Ademas shipped_app_version leia un path relativo y el directorio de trabajo de
la lane no es la raiz del repo, asi que devolvia vacio y ASC rechazaba el POST
por versionString ausente. Ahora es absoluto respecto al Fastfile y falla ruidoso
si no puede leerlo.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
submit envia a review una build ya subida: la 2.0.1 build 66 ya estaba en
TestFlight, y release habria reconstruido mientras publish nunca envia.
Distribucion automatica (AFTER_APPROVAL) y sin tocar screenshots, que se heredan.
status lista el estado de cada version en App Store Connect. Sirvio para
confirmar que la 2.0.1 quedo en AFTER_APPROVAL y no en MANUAL como la 2.0.
Ojo: asc_api_key devuelve el hash de opciones de fastlane, no un token de
spaceship; hay que construir el token aparte.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
La build phase de Xcode solo sube el dSYM de la compilacion local. No habia red
de seguridad, asi que un fallo del script deja los crashes sin simbolizar.
refresh_dsyms baja los dSYM de App Store Connect y los manda a Crashlytics. Se
ejecuta aparte de beta a proposito: beta usa skip_waiting_for_build_processing,
asi que justo tras el upload los dSYM aun no existen en ASC.
Dos detalles que salieron al ejecutarla de verdad:
- upload_symbols_to_crashlytics busca el binario en ./Pods, pero Firebase entra
por SPM y vive en DerivedData. Se resuelve con un glob.
- ASC no tiene dSYMs para la build 64 (normal sin bitcode: Apple no recompila
nada). Sin fallback la lane seria un no-op permanente, asi que tira de los
dSYM del ultimo archive local (app + widget).
Verificado ejecutandola: sube los dos dSYM de la 64 correctamente.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
- Caption-localized the 5 iPhone 6.7" + 5 iPad 12.9" screenshots into the 5
non-English locales, reusing the en-US framed captures (in-frame UI stays EN).
Tooling in fastlane/screenshot_localize/ (Pillow: repaints the pastel caption
band, re-renders headline/subtitle in SF Pro; auto-fits + wraps per language).
- Rewrote release_notes 1.2.0 in all 6 languages: since 1.1.5 never shipped
publicly (last public = 1.1.4), the notes consolidate 1.1.5 + 1.2.0 features.
- Fastfile: new `publish` lane — uploads metadata + screenshots for an existing
TestFlight build (skip_binary_upload, no submit) so offer codes can be set up
before submission.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BkanrydYtrme8wipTzWssG
Build 50 uploaded to TestFlight. Also migrates Fastfile from
Apple ID + app-specific-password to App Store Connect API key
(via pass) to avoid session expiry on future uploads.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch premium to AutoRenewable subscription (com.mealmood.premium.monthly.sub);
legacy one-time purchasers retain lifetime access via StoreManager fallback
- Add ITSAppUsesNonExemptEncryption=false to Info.plist (no custom encryption)
- Update storekit config with both legacy NonConsumable and new subscription
- Bump version 1.1.1 build 46; update fastlane metadata and release notes (6 langs)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- AutocompleteEngine: no-repeat rule now applies to all dishes (not just tagless ones); fallback still allows repeats when no alternative exists
- CalendarService: update existing events instead of delete+create to prevent duplicates; fix weekStartDate using plan date instead of currentWeekStart
- DishFormView: form stays open after saving in create mode for quick multi-dish entry; Done button to close; saved feedback banner
- OnboardingViewModel/FirstDishesStepView: dishes are now optional during onboarding; Finish button always enabled
- AnalyticsService: new events — onboarding_step_viewed(step) and auto_assign_used(filled, unfilled)
- Localization: dish_done and first_dishes_optional_hint added in 6 languages; release notes updated in all 6 languages
- Version bump: 1.0.3 → 1.0.4 (build 19)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>