super-productivity/tools
Johannes Millan dc3523b1c7
ci: auto-submit iOS and macOS App Store builds for review (#7857)
* ci: auto-submit iOS and macOS App Store builds for review

The iOS and Mac App Store workflows previously stopped after uploading the
build to App Store Connect via altool, leaving version creation, "What's New"
and submission as manual steps.

Add fastlane lanes (ios/mac release) that upload the prebuilt .ipa / MAS .pkg
using App Store Connect API key auth (reusing the existing notarization key
secrets), push release notes derived from build/release-notes.md, wait for
processing, submit for review and flag automatic release on approval.

Final version tags submit for review; pre-release tags (RC/beta/alpha) and
manual runs only upload the build. Listing metadata and screenshots remain
curated by hand in App Store Connect.

https://claude.ai/code/session_014c1W1mX7tfvFzpZ6wyWzsJ

* ci: wire iOS and Mac Store workflows to fastlane submit lane

The previous commit added the fastlane lanes but the workflow edits were not
applied. Replace the altool validate/upload steps in the iOS and Mac App Store
workflows with the fastlane submit lane: install fastlane, generate the App
Store "What's New" notes and run `fastlane <platform> release` with App Store
Connect API key auth.

Also extend the Mac workflow's harden-runner egress allowlist with the
rubygems and App Store Connect endpoints used by fastlane.

https://claude.ai/code/session_014c1W1mX7tfvFzpZ6wyWzsJ

* fix(ci): harden Apple App Store auto-submission after review

Address review findings on the iOS/macOS App Store automation:

- Tag gating: submit only when the tag has no "-" (final semver), instead of
  denylisting RC/beta/alpha. GitHub Actions contains() is case-sensitive and
  the repo's RC tags are mostly lowercase (-rc.N), so the old guard would have
  auto-submitted release candidates to production review.
- Fastfile: set skip_metadata so deliver no longer reads back and re-uploads
  curated listing fields; push only "What's New" via an inline release_notes
  hash. Warn against verbose mode (can dump the API key).
- Gemfile.lock: add arm64-darwin/x86_64-darwin platforms so bundle install
  works on the macOS runners.
- Workflows: install deps via pinned ruby/setup-ruby (bundler cache), and
  resolve the artifact path with a strict nullglob check (exactly one match)
  instead of ls | head.
- release-notes script: tighten emphasis regexes so stray * / _ (globs,
  snake_case) survive, anchor footer patterns so legitimate "download" lines
  are not dropped, and drop a duplicate mkdir.
- Docs: document the hyphen-based gate, single-use build numbers, automatic
  release behavior and inline validation.

https://claude.ai/code/session_014c1W1mX7tfvFzpZ6wyWzsJ

* fix(ci): correct deliver metadata + setup-ruby version (second review pass)

Two bugs introduced by the previous review-fix commit, both confirmed against
upstream source:

- Fastfile: skip_metadata: true makes deliver's upload_metadata return early
  (verified in fastlane 2.225.0 deliver/lib/deliver/upload_metadata.rb), so the
  "What's New" notes were never uploaded. Revert to metadata_path pointing at a
  dir that contains only <locale>/release_notes.txt; load_from_filesystem reads
  only that file (next unless File.exist?) with no remote read-back, so other
  listing fields stay untouched. Removed the now-unused inline release_notes
  helper.
- Workflows: ruby/setup-ruby throws when ruby-version is unset and no
  .ruby-version file exists (it does not fall back to system Ruby). Pin
  ruby-version: '3.3' in both workflows.

Docs updated to match the corrected metadata approach.

https://claude.ai/code/session_014c1W1mX7tfvFzpZ6wyWzsJ

* fix(ci): remove invalid wait_for_uploaded_build from deliver lanes

wait_for_uploaded_build is a pilot/upload_to_testflight option, not a deliver one. Passing it to upload_to_app_store makes fastlane raise on the unknown key and fail both iOS and macOS release lanes on every run. deliver already waits for the build to finish processing during submit (select_build -> wait_for_build_processing_to_be_complete), so no replacement is needed.

Also pin the ruby/setup-ruby comment to its resolved version (v1.310.0), and slice the App Store release notes by code point so a multi-byte character is never split at the 4000-char cap.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-01 11:42:16 +02:00
..
lighthouse fix(ci): guard app-state selectors against undefined and bump lighthouse budgets 2026-03-14 13:04:44 +01:00
test-data Add setting for default start page 2025-11-19 20:11:21 -05:00
add-missing-i18n-variables.js feat(tools): enhance translation management script (#6171) 2026-01-25 18:08:06 +01:00
afterPack.js fix(electron): retry Wayland idle helper startup (#7527) 2026-05-10 22:35:33 +02:00
build-wayland-idle-helper.js fix(electron): retry Wayland idle helper startup (#7527) 2026-05-10 22:35:33 +02:00
bump-android-version.js build(release): add automated release notes 2026-05-10 00:24:47 +02:00
check-file.js fix(security): address CodeQL security alerts 2025-12-23 13:42:57 +01:00
clean-translations.js build: better organize stuff 2025-06-27 09:03:16 +02:00
cleanup-unused-translations.js chore(i18n): remove 228 unimplemented feature translation keys 2026-01-09 15:00:36 +01:00
decompress.js build: add decompress script 2021-12-21 00:28:45 +01:00
execCommand.js build: try changing env variables 2024-09-22 21:20:16 +02:00
extract-i18n-single.js chore: add custom watch task for translation extraction 2019-07-17 14:42:32 +02:00
extract-i18n-watch.js refactor(i18n): translation var script #33 2019-07-17 15:46:13 +02:00
extract-i18n.js refactor: format everything with prettier 2021-05-06 22:37:37 +02:00
extract-material-icon-names.js feat: add new icon names and icon name extraction script 2021-12-13 12:38:25 +01:00
extract-material-symbols-names.js feat(icons): upgrade from Material Icons to Material Symbols 2026-01-21 15:30:19 +01:00
find-unused-translations.js chore(i18n): add unused translation scanner and remove orphaned keys 2026-01-09 14:59:05 +01:00
gen-perf-metrics.js build: update configuration files 2025-06-27 10:25:00 +02:00
generate-ios-icon.js fix(build): remove sharp from deps to fix F-Droid build 2026-03-29 19:57:10 +02:00
generate-mac-icon.js fix(build): remove sharp from deps to fix F-Droid build 2026-03-29 19:57:10 +02:00
git-version.js build: change way to extract version 2 2021-09-23 18:19:48 +02:00
load-env.js feat(sync): add OneDrive sync provider with PKCE auth (#7523) 2026-05-26 15:31:06 +02:00
notarizeMacApp.js build: try changing env variables 2024-09-22 21:20:16 +02:00
prepare-appstore-release-notes.js ci: auto-submit iOS and macOS App Store builds for review (#7857) 2026-06-01 11:42:16 +02:00
release-notes.js fix(release): read release-notes prompt from /dev/tty to avoid EAGAIN 2026-05-16 13:23:29 +02:00
release-notes.test.js build(release): add automated release notes 2026-05-10 00:24:47 +02:00
remove-woff.js fix(build): update glob API and remove unused Angular imports 2026-02-04 18:30:51 +01:00
test-file.js feat: add npm commands for single file operations with minified output 2025-07-12 10:48:51 +02:00
test-lng-files.js build: auto check language files for json errors 2023-01-05 15:07:07 +01:00
verify-electron-requires.js build(electron): exclude uuidv7 and guard against future asar regressions 2026-05-13 21:22:59 +02:00