Safari: declare LSApplicationCategoryType for App Store submission - #75
Merged
Conversation
The Mac App Store rejects an uploaded archive whose Info.plist carries no category UTI (error 90242: "The product archive is invalid"). The category on the App Store Connect listing does not satisfy this — the key has to be in the app bundle itself. Set to public.app-category.developer-tools to match the listing's primary category. Also ignores build/, where the App Store archive and exported installer package land. safari-build/ was already ignored; this closes the same gap for the archive path, so a stray `git add -A` cannot commit a multi-hundred -megabyte archive or the signed .pkg. No runtime effect. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jakemgold
added a commit
that referenced
this pull request
Aug 2, 2026
) Lands the two follow-ups from the #76 review, plus one piece of local-tooling hygiene. ## Regression test for the precedence fix #76's change to `loadBlockInspectorPref` shipped with no coverage; the review verified empirically that reintroducing the exact bug the new guard prevents (explicit per-origin `false` falling through to a `_global` `true`) passed the whole suite. New content-lifecycle block [41] closes that: it stubs `WPDBlockInspector` on the harness context and asserts all four precedence outcomes through the real content script. The suite is now 286 assertions; the injected-regression check fails as intended with the new block in place. ## ROADMAP accuracy Store states an external contributor cannot see from the repo: - v0.11.x status now reads "readiness complete; CWS submission approved, publication pending" — the unlisted Chrome Web Store submission is approved but has not been published, so "shipped" overstated it. - The Safari row moves the App Store Connect record, listing assets, and the submitted 1.0.0 build into Done, with App Review outcome as the remaining gate; status is now "in review". The store-readiness checklist ticks the bundle-identifier rename (#72) and the publisher account to match. ## eslint ignore for build/ `build/` (gitignored since #75) holds the App Store archive and exported installer. The archived `.app` contains copies of the shipped bundles, so a local archive breaks `npm run lint` with ~175 errors on files that are not lintable source. Added to the eslint ignores alongside `safari-build/`. No runtime changes; `dist/` untouched. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes an App Store upload rejection found while submitting 1.0.0.
The failure
Uploading the archive returned error 90242:
The category set on the App Store Connect listing does not satisfy this — Apple requires the category UTI inside the app bundle itself.
Change
LSApplicationCategoryType=public.app-category.developer-toolsin the container app'sInfo.plist, matching the listing's primary category. A comment notes the two must stay in sync.build/added to.gitignore. That is where the App Store archive and exported.pkgland;safari-build/was already ignored, so this closes the same gap for the archive path and keeps a straygit add -Afrom committing a large binary.No runtime effect; both are submission metadata and repo hygiene.
Verification
Release build succeeds, and the built bundle now reports:
LSApplicationCategoryType= public.app-category.developer-toolsITSAppUsesNonExemptEncryption= false (from Safari: declare export compliance in the container app Info.plist #74)CFBundleIconFile= AppIcon, withAppIcon.icnspresent in ResourcesThe app icon set was checked at the same time and is complete (16pt through 512pt @1x/@2x), so it is not a second submission blocker.
🤖 Generated with Claude Code