Skip to content

Safari: declare LSApplicationCategoryType for App Store submission - #75

Merged
jakemgold merged 1 commit into
mainfrom
fix/app-store-category-key
Jul 25, 2026
Merged

Safari: declare LSApplicationCategoryType for App Store submission#75
jakemgold merged 1 commit into
mainfrom
fix/app-store-category-key

Conversation

@jakemgold

Copy link
Copy Markdown
Collaborator

Fixes an App Store upload rejection found while submitting 1.0.0.

The failure

Uploading the archive returned error 90242:

The product archive is invalid. The Info.plist must contain a LSApplicationCategoryType key, whose value is the UTI for a valid category.

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-tools in the container app's Info.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 .pkg land; safari-build/ was already ignored, so this closes the same gap for the archive path and keeps a stray git add -A from committing a large binary.

No runtime effect; both are submission metadata and repo hygiene.

Verification

Release build succeeds, and the built bundle now reports:

The 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

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
jakemgold requested a review from fabiankaegy as a code owner July 25, 2026 19:09
@jakemgold
jakemgold merged commit cbb6c00 into main Jul 25, 2026
1 check passed
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)
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