Skip to content

Add automatic App Store launch workflow#26

Merged
MatheusKindrazki merged 2 commits into
mainfrom
codex/fix-share-extension-crash
Apr 24, 2026
Merged

Add automatic App Store launch workflow#26
MatheusKindrazki merged 2 commits into
mainfrom
codex/fix-share-extension-crash

Conversation

@MatheusKindrazki
Copy link
Copy Markdown
Owner

@MatheusKindrazki MatheusKindrazki commented Apr 24, 2026

Summary

  • Add fastlane and Make targets for App Store doctoring, screenshot generation, privacy publishing, metadata upload, and submission
  • Generate screenshots automatically for iPhone, iPad, macOS, and IAP review, with isolated DerivedData per destination
  • Update App Store launch docs to make the automated flow the default path and remove manual screenshot instructions

Testing

  • make appstore-screenshots completed successfully and generated 16 validated PNGs
  • make appstore-doctor completed successfully
  • ruby -c apple/fastlane/Fastfile passed
  • git diff --check passed

Summary by CodeRabbit

Release Notes

  • New Features

    • Added automated App Store screenshot generation.
    • Added support page with contact and abuse reporting channels.
  • Documentation

    • Added App Store launch setup guide and operational runbooks.
  • Chores

    • Updated Pro subscription discount messaging (45% → 44% annual savings).
    • Added App Store metadata, privacy configuration, and rating details.
    • Configured automated App Store submission workflows.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 031bbe3b-8170-41e6-807c-053c6477d8bb

📥 Commits

Reviewing files that changed from the base of the PR and between 7f2ab52 and d7796e2.

⛔ Files ignored due to path filters (16)
  • apple/fastlane/screenshots/iap/en-US/01_APP_IPHONE_67_iap-pro-review.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/01_APP_IPAD_PRO_3GEN_129_share-flow.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/01_APP_IPHONE_67_share-flow.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/02_APP_IPAD_PRO_3GEN_129_retention-picker.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/02_APP_IPHONE_67_retention-picker.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/03_APP_IPAD_PRO_3GEN_129_upload-progress.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/03_APP_IPHONE_67_upload-progress.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/04_APP_IPAD_PRO_3GEN_129_history-revoke.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/04_APP_IPHONE_67_history-revoke.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/05_APP_IPAD_PRO_3GEN_129_pro-paywall.png is excluded by !**/*.png
  • apple/fastlane/screenshots/ios/en-US/05_APP_IPHONE_67_pro-paywall.png is excluded by !**/*.png
  • apple/fastlane/screenshots/macos/en-US/01_APP_DESKTOP_share-flow.png is excluded by !**/*.png
  • apple/fastlane/screenshots/macos/en-US/02_APP_DESKTOP_retention-picker.png is excluded by !**/*.png
  • apple/fastlane/screenshots/macos/en-US/03_APP_DESKTOP_upload-progress.png is excluded by !**/*.png
  • apple/fastlane/screenshots/macos/en-US/04_APP_DESKTOP_history-revoke.png is excluded by !**/*.png
  • apple/fastlane/screenshots/macos/en-US/05_APP_DESKTOP_pro-paywall.png is excluded by !**/*.png
📒 Files selected for processing (42)
  • Makefile
  • apple/.env.appstore.example
  • apple/FastShared.xcodeproj/project.pbxproj
  • apple/FastShared.xcodeproj/xcshareddata/xcschemes/FastSharedApp.xcscheme
  • apple/FastSharedApp/FastSharedApp.swift
  • apple/FastSharedApp/Scenes/PaywallView.swift
  • apple/FastSharedApp/Screenshot/AppStoreScreenshotExporter.swift
  • apple/FastSharedApp/Screenshot/AppStoreScreenshotHostView.swift
  • apple/FastSharedApp/Screenshot/AppStoreScreenshotMode.swift
  • apple/FastSharedAppUITests/AppStoreScreenshotsUITests.swift
  • apple/FastSharedShareExt/ShareRootView.swift
  • apple/Packages/FastSharedCore/Tests/FastSharedCoreTests/Resources/FastSharedTest.storekit
  • apple/README.md
  • apple/fastlane/Deliverfile
  • apple/fastlane/Fastfile
  • apple/fastlane/app_privacy_details.json
  • apple/fastlane/app_rating_config.json
  • apple/fastlane/metadata/copyright.txt
  • apple/fastlane/metadata/en-US/description.txt
  • apple/fastlane/metadata/en-US/keywords.txt
  • apple/fastlane/metadata/en-US/marketing_url.txt
  • apple/fastlane/metadata/en-US/name.txt
  • apple/fastlane/metadata/en-US/privacy_url.txt
  • apple/fastlane/metadata/en-US/promotional_text.txt
  • apple/fastlane/metadata/en-US/release_notes.txt
  • apple/fastlane/metadata/en-US/subtitle.txt
  • apple/fastlane/metadata/en-US/support_url.txt
  • apple/fastlane/metadata/review_information/notes.txt
  • apple/fastlane/screenshots/README.md
  • apple/fastlane/screenshots/iap/en-US/.gitkeep
  • apple/fastlane/screenshots/ios/en-US/.gitkeep
  • apple/fastlane/screenshots/macos/en-US/.gitkeep
  • apple/project.yml
  • docs/marketing/app-store.md
  • docs/marketing/asc-runbook-pro.md
  • docs/ops/appstore-launch-setup.md
  • docs/plan/pro-feature-B-apple-qa-matrix.md
  • docs/plan/pro-feature-B-apple.md
  • docs/plan/pro-feature-C-launch.md
  • web/src/components/Footer.astro
  • web/src/pages/pricing.astro
  • web/src/pages/support.astro

Resumo

Adição de automação completa para fluxo de submissão do App Store Connect, incluindo infraestrutura para captura de screenshots via UI testes, configuração Fastlane para sincronização e submissão de metadados/privacidade, e documentação operacional de lançamento.

Mudanças

Cohort / File(s) Resumo
Automação Makefile & Variáveis de Ambiente
Makefile, apple/.env.appstore.example
Introduz 8 novos alvos Make para fluxos App Store Connect (appstore-doctor, appstore-screenshots, etc.) que carregam variáveis de APPLE_ENV incluindo .env.testflight e .env.appstore.local antes de invocar lanes Fastlane.
Configuração Projeto Xcode & Schemas
apple/FastShared.xcodeproj/project.pbxproj, apple/FastShared.xcodeproj/xcshemes/..., apple/project.yml
Adiciona novo alvo UI testing FastSharedAppUITests com dependência no FastSharedApp, cria configurações Debug/Release, registra arquivos de teste de screenshot, e atualiza schema para incluir bundle de testes.
Infraestrutura de Screenshots para App Store
apple/FastSharedApp/Screenshot/AppStoreScreenshotMode.swift, apple/FastSharedApp/Screenshot/AppStoreScreenshotExporter.swift, apple/FastSharedApp/Screenshot/AppStoreScreenshotHostView.swift, apple/FastSharedAppUITests/AppStoreScreenshotsUITests.swift
Implementa sistema completo: modo screenshot detectável via argumento launch/env var, exporter macOS que renderiza cenas em PNG e salva em diretório, view SwiftUI com painéis temáticos, e teste UI que captura screenshots para múltiplos cenários.
Configuração Fastlane & Metadados App Store
apple/fastlane/Fastfile, apple/fastlane/Deliverfile, apple/fastlane/app_privacy_details.json, apple/fastlane/app_rating_config.json, apple/fastlane/metadata/en-US/*, apple/fastlane/screenshots/*
Define 6 novas lanes Fastlane (store_doctor, store_screenshots, store_privacy, store_metadata, store_sync, store_submit) para automação completa; Deliverfile configura identifiers/versões; arquivos JSON definem privacy details e ratings; metadados incluem descrição, keywords, URLs de suporte/privacidade, e release notes; estrutura de diretórios para screenshots por plataforma.
Correções & Ajustes na App
apple/FastSharedApp/FastSharedApp.swift, apple/FastSharedApp/Scenes/PaywallView.swift, apple/FastSharedShareExt/ShareRootView.swift
FastSharedApp agora trata cloudKitEngine como opcional em modo screenshot e passa AppStoreScreenshotHostView como view alternativa; Paywall reduz desconto anual de 45% para 44%; ShareRootView corrige mapeamento de cores semânticas iOS para UIColor.
Documentação Operacional & Guias
apple/README.md, docs/ops/appstore-launch-setup.md, docs/marketing/app-store.md, docs/marketing/asc-runbook-pro.md, docs/plan/pro-feature-*.md, apple/fastlane/screenshots/README.md
Introduz checklist operacional detalhado para lançamento público, com instruções sequenciais de bootstrap/validação/submissão, definições de configuração IAP, pipeline de screenshots validado, e padrões de nomes de arquivos; atualiza runbooks com novos Product IDs (red.fastsha.pro.*) e dimensões de screenshot revisadas.
Website - Página de Suporte & Footer
web/src/pages/support.astro, web/src/components/Footer.astro
Adiciona nova página de suporte com instruções de contato, seções de abuso/reembolsos/privacidade, e link "support" no footer.
Atualizações de Preços & Copy
web/src/pages/pricing.astro, apple/Packages/FastSharedCore/Tests/FastSharedCoreTests/Resources/FastSharedTest.storekit
Reduz percentual de desconto anual de ~45% para ~44% em página de preços e arquivo de teste StoreKit; atualiza preços de oferecimento em teste (Lifetime/Monthly/Annual).

Diagrama de Sequência

sequenceDiagram
    participant Xcode as Xcode/XCTest
    participant App as FastSharedApp<br/>(Screenshot Mode)
    participant Exporter as AppStoreScreenshotExporter
    participant FileSystem as Sistema de<br/>Arquivos

    Xcode->>App: Lança com FASTSHARED_SCREENSHOT_SCENE=shareFlow
    App->>App: AppStoreScreenshotMode.isEnabled = true
    App->>App: Renderiza AppStoreScreenshotHostView em lugar de normalWindowContent
    Exporter->>Exporter: Detecta launchArgument (isEnabled)
    Exporter->>Exporter: Lê FASTSHARED_SCREENSHOT_OUTPUT_DIR do env
    loop Para cada AppStoreScreenshotScene
        Exporter->>App: Renderiza cena via AppStoreScreenshotHostView
        App-->>Exporter: NSImage (fixed 1536x2048 @ 2x scale)
        Exporter->>Exporter: Codifica NSImage → PNG data
        Exporter->>FileSystem: Escreve PNG atomicamente<br/>(fileSlug_0.png, fileSlug_1.png, etc)
    end
    Exporter->>Exporter: Valida contagem & dimensões
    Exporter->>App: NSApp.terminate(nil)
    Xcode->>Xcode: Extrai screenshots de .xcresult
    Xcode->>FileSystem: Anexa PNG a XCTest
Loading

Esforço Estimado de Revisão

🎯 4 (Complexo) | ⏱️ ~75 minutos

PRs Possivelmente Relacionadas

Poema

🐰 Caro App Store, bem-vindo à festa!
Screenshots capturados, metadados em vesta,
Fastlane orquestra cada cena perfeita,
Com privacidade clara, submissão rápida!
FastShared agora voa para o público... 🚀

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/fix-share-extension-crash

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@MatheusKindrazki MatheusKindrazki marked this pull request as ready for review April 24, 2026 22:20
@MatheusKindrazki MatheusKindrazki merged commit 71d3abe into main Apr 24, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant