Repository navigation
App Store shippability: release-readiness prereqs, pre-ship audits, CI, and submission mechanics #92
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestinfraRepo / tooling / releaseRepo / tooling / releasepriority:p1High priority; release/publication blocker or major user impactHigh priority; release/publication blocker or major user impactsecuritySecurity, privacy, credentials, trust boundaries, or sensitive dataSecurity, privacy, credentials, trust boundaries, or sensitive datastatus:needs-reconcileIssue facts or acceptance criteria may lag the current repositoryIssue facts or acceptance criteria may lag the current repository
Milestone
Description
Goal and scope
Track App Store readiness for Labstream's coordinated four-platform set: visionOS, universal iOS/iPadOS, tvOS, and macOS. Canonical status and detailed acceptance checks: docs/RELEASES.md.
Current source versus distribution
- Source: 1.7.1 (build 1) across all four apps and matching PMSKit fallback.
- Current merged main includes P7 initialization hardening (Harden experimental P7 fallback initialization identity #320) and GPL logo cleanup (docs: use GPLv3 logo without tagline #321). The P7 HDR10-base candidate remains default-off, DEBUG macOS only, not native P7 Dolby Vision support or Release enablement.
- Latest repository-recorded processed distribution: 1.6.1 (build 2) for all four platform archives, from
abd1ddcac351. This is not a fresh App Store Connect query. - Distribution identity:
org.labstream.Labstream, one universal-purchase record with four platform versions; iPhone and iPad share the iOS archive. The old personal-namespace visionOS record is historical, not the current publication identity. - No current 1.7.1 archive, upload, hardware acceptance, or submission is established by this update. Check live App Store Connect state before choosing build numbers or uploading.
Completed foundations (bounded evidence)
- Public source, support/privacy documentation, licensing and required disclosures exist.
- Prior four-platform 1.6.1 build-2 archive processing is recorded; this does not certify the current source.
- Latest merged P7 hardening and logo PR checks passed; physical and broader codec acceptance remain separate.
- Dedicated reviewer Jellyfin infrastructure in App Review: provision an isolated dedicated Jellyfin demo environment #280 has validated public-path TLS, authentication, catalog/artwork, range playback, reset and external reachability. Physical TestFlight journey remains open.
Next work, in order
1. Release codec confidence
- Refresh private library inventory and exact per-backend source bindings; missing/changed IDs must fail closed.
- Define and execute a representative matrix of observed video codec/profile/bit depth/HDR, container, resolution/bitrate, audio codec/layout and subtitle combinations across Plex, Jellyfin and Emby.
- Verify initial playback, seek/reopen, audio/subtitle changes and genuinely different quality transitions. Separate direct/copy/remux from explicit video encoding and preserve encoding consent.
- Inspect decoded frames rather than relying only on advancing time; record each failure, retry, unavailable combination and blocked lane. Keep personal media/identifiers and raw evidence private.
- Exercise shipping/default behavior; DEBUG-only P7 evidence is not a Release pass. Physical HDR/DV/audio output remains a separate hardware gate.
- Reconcile remaining playback issues against current evidence, including [Bug]: Direct Play and Maximum Transcode can converge on an unplayable HEVC copy lane on macOS #288, Emby: investigate native MP4 starvation and fragmented-MP4 recovery stalls #291, Jellyfin HEVC audio-only HLS playback at a quality ceiling: validate container and decoded frames #303 and Emby AV1: startup media-response timeouts and repeated encode attempts #305, without blanket closure.
2. Exact release candidate and TestFlight
- Verify current App Store Connect versions/build numbers and supported archive toolchain; do not infer account state from repository records.
- Freeze the public release commit after accepted fixes and run the required hermetic/native/hygiene checks.
- Produce clean signed Release archives for all four platforms; verify identity, versions, entitlements, architectures, minimum OS and device families.
- Validate/upload the authorized candidate and verify processing/build selection for every submitted platform. Rebuild if the release source changes.
- Physical Vision Pro TestFlight journey: sign-in, browse/playback, seek, subtitles/audio, Cinema, lifecycle and diagnostics.
- Physical iPhone and iPad TestFlight journeys: navigation, playback, downloads, lifecycle and accessibility.
- Physical Apple TV TestFlight journey: remote/focus, playback, long play, HDR/audio routing and lifecycle (no downloads).
- Mac TestFlight journey: sandboxed sign-in/local-network access, playback, windows, keyboard/media controls, downloads and accessibility.
- Deferred by user decision: Cold launch without connectivity blocks completed offline downloads #259 (disconnected cold-launch/local-download acceptance). Keep it open and do not count deferral as a pass; it is outside the current active pre-release work queue.
3. Screenshots and reviewer journey
- Reuse the dedicated App Review: provision an isolated dedicated Jellyfin demo environment #280 demo and openly licensed sample content; verify media and artwork licenses/attribution for screenshot and review use.
- Capture and privacy-review actual app screenshots for required device families/sizes; replace synthetic placeholders. Validate against current Apple specifications.
- Complete exact reviewer navigation instructions and platform differences; keep private credentials solely in appropriate secret/account fields.
- Validate the demo journey from the exact TestFlight candidate and required physical devices; do not close App Review: provision an isolated dedicated Jellyfin demo environment #280 based solely on infrastructure tests.
4. Account and submission gates
- Recheck current agreements, trader declaration/verification, pricing, territories and release method with the Account Holder.
- Complete product-page metadata, privacy/export answers and accessibility review against the actual candidate. Resolve Release privacy: reconcile project-operated review demo and collection disclosures #325 (review/demo-service privacy disclosure) and Privacy manifest: declare production systemUptime API use #326 (missing SystemBootTime required-reason declaration); the previously recorded Data Not Collected answer is not newly certified.
- Verify the exact corresponding GPL source and release notes are public; create release tags only when authorized.
- Obtain explicit final storefront/submission approval; submit only accepted platform versions.
Acceptance and reporting
This issue remains open until the chosen platform submission scope is accepted and submitted, or an explicit go/no-go is recorded. A clean repository, closed implementation issue, green CI or uploaded build alone is not App Store readiness. Preserve historical comments as point-in-time evidence; the old source/distribution topology in the original body is superseded by this reconciliation. No archive upload or App Store submission is claimed by this checklist update.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestinfraRepo / tooling / releaseRepo / tooling / releasepriority:p1High priority; release/publication blocker or major user impactHigh priority; release/publication blocker or major user impactsecuritySecurity, privacy, credentials, trust boundaries, or sensitive dataSecurity, privacy, credentials, trust boundaries, or sensitive datastatus:needs-reconcileIssue facts or acceptance criteria may lag the current repositoryIssue facts or acceptance criteria may lag the current repository
Activity
jlipworth commentedon Jun 24, 2026
App Review server-access: use the public Jellyfin demo (verified — no infra to build)
Follow-up to the reviewer-access research above. Decision: point App Review at the public Jellyfin demo server rather than standing up our own. This eliminates the entire build-a-demo-server task (domain purchase, DNS zones, Traefik routing, a Jellyfin pod, sourcing safe content, securing the deployment) — none of it is needed.
Why the public demo works
https://demo.jellyfin.org/stablereturns HTTP 200 over HTTPS with a publicly-trusted cert (TLS verify = 0), JellyfinStable Demov10.11.11. That's exactly the "HTTPS / port 443 / fixed real DNS / system-trusted cert" setup Apple DTS requires — it sidesteps the DDNS/self-signed/non-443 trap that got a self-hosted app rejected 10+ times (see prior comment).demo, empty password. Server resets at the top of each hour, so any reviewer change reverts.Verified against VisionPlay's actual request shapes (PMSKit)
Replicated the app's exact Jellyfin flow (
JellyfinAuth.authenticateByNameRequest→ views → items →PlaybackInfo→ stream) against the demo:demo+"Pw":""→AccessTokenissued. (The auth path sends an emptyPwwith no guard, so blank-password login goes through at the network layer.)PlaybackInforeturns a media source (h264/mp4); the stream URL serves real bytes — HTTP 206,video/mp4.So core functionality (sign in → browse → play) is fully exercisable by a reviewer with no server of ours.
One open item
"Pw":""is already verified). A single manual tap-through covers this.Risk + fallback
The demo is third-party and resets hourly. It's been stable for years, but if it's ever down mid-review we get a 2.1 bounce. Fallback: a throwaway Jellyfin pod behind our existing Traefik (which already issues Let's Encrypt certs on 443, so the "vanilla network" requirement is met for free) — kept as a documented backup, not built unless needed.
Multi-backend note
We do not need separate Plex/Emby/Jellyfin demo servers. Guideline 2.1 requires the reviewer to exercise the app's core functionality end-to-end; one working backend path does that. Plex/Emby live integrations don't each need their own reviewer-reachable server for the first submission.
Draft App Review Notes (for App Store Connect)
Sources:
https://demo.jellyfin.org/stable/users/public; Apple Developer Forums reviewer-cannot-connect-to-server (DDNS).jlipworth commentedon Jun 24, 2026
Trademark / branding sign-off (third-party client) — verdict: compliant, one action item
Reviewed both halves: (A) what each rights-holder's terms permit for a third-party client, and (B) an audit of what VisionPlay actually ships. Net: the app is already trademark-clean. The only required change is adding a "not affiliated" disclaimer (in-app + App Store description). No rename, no icon change, no logo removal needed.
A. What each service permits
B. Audit of what VisionPlay ships
Assets.xcassets(onlyAppIcon,VisionPlayGlyph,VisionPlayLogo). ✅DS.Brand.amber, used as a global accent — it is not Plex's brand palette applied to Plex branding, so it isn't "copying look-and-feel."Required action — add a not-affiliated disclaimer
Single combined wording covering all three (mirrors the Emby-approved phrasing):
Placement:
Standing rules to not regress
Status
Sources: Plex Trademarks & Guidelines; Jellyfin Branding Guidelines; Emby 3rd-party REST API + branding thread (staff approval).
Add not-affiliated trademark disclaimer to Settings → About (#92)
jlipworth commentedon Jun 30, 2026
App Store signing update — Developer Program active
Apple Developer Program membership is now active and the App Store distribution-signing path is unblocked.
Verified locally, with sensitive/account-specific identifiers omitted here:
CODE_SIGN_STYLE = Automatic.Signing.local.xcconfigis present in both the main worktree and downloads-refactor worktree with the paid developer team configured. The file is gitignored and not tracked.com.jlipworth.VisionPlaycan now be exported with App Store distribution signing.Successful export proof:
VisionPlay.ipa.Identifier=com.jlipworth.VisionPlayAuthority=Apple Distribution: <redacted>TeamIdentifier=<redacted>Remaining next steps:
com.jlipworth.VisionPlay.CURRENT_PROJECT_VERSIONfor every subsequent TestFlight/App Store upload.Current repo version at the time of this check:
MARKETING_VERSION = 1.3.5,CURRENT_PROJECT_VERSION = 1.jlipworth commentedon Jul 5, 2026
App Store rollout checkpoint — paused for rename
Stopping the App Store Connect rollout here because the public app name needs to change before the first ASC app record/build upload.
Verified today
/v1/appsreturned empty).com.jlipworth.VisionPlaySKQWLRL5Z3UNIVERSALPRODUCT_BUNDLE_IDENTIFIER = com.jlipworth.VisionPlayMARKETING_VERSION = 1.3.5CURRENT_PROJECT_VERSION = 1~/.private_keys/with0600perms; no key material was printed or committed.Important App Store Connect constraints confirmed from Apple docs
Recommended next path after rename
com.jlipworth.VisionPlayor be changed before ASC creation.Apps → + → New App), because public ASC API access did not expose initial app-record creation.vp-visionos-2026or another non-name-specific identifier.Remaining non-code setup still expected
https://jlipworth.github.io/VisionPlay/privacy/https://jlipworth.github.io/VisionPlay/support/Data Not Collected), support/privacy URLs, and App Review notes using the public Jellyfin demo path.jlipworth commentedon Jul 5, 2026
Version bump checkpoint — first TestFlight train now 1.4.0 (1)
Bumped the App Store/TestFlight candidate from
1.3.5to1.4.0after the Labstream rename.Changed and pushed:
MARKETING_VERSION = 1.4.0in both Debug/Release project settingsCURRENT_PROJECT_VERSION = 1left unchanged because this is a new marketing version and no successful upload for1.4.0exists yetPMSKit.version = "1.4.0"1.4.0Verification:
cd PMSKit && swift testpassed: 1192 testsscripts/agent-sim-run.sh launch-home-passiveCFBundleShortVersionString = 1.4.0CFBundleVersion = 1CFBundleIdentifier = com.jlipworth.LabstreamGit:
6b8b98d(Bump app version to 1.4.0)v1.4.0pushedNext upload should be a fresh archive/export from this commit/tag. Ignore any prior
1.3.5 (1)awaiting-upload placeholder created by the earlier export probe; it was not uploaded and the active candidate is now1.4.0 (1).jlipworth commentedon Jul 5, 2026
Resume checklist for next session — ASC metadata, demo screenshots, first TestFlight upload
Pausing here to resume on 2026-07-07. Current candidate is Labstream 1.4.0 (1) on
main, tagv1.4.0, bundle idcom.jlipworth.Labstream.1. App Store Connect app/version setup
Labstreamcom.jlipworth.Labstream1.4.0for visionOS.1.3.5 (1)awaiting-upload placeholder from export probing; it was not uploaded. The active train is1.4.0 (1).2. URLs before metadata submission
Need public 200s before final ASC metadata/review submission:
https://jlipworth.github.io/Labstream/privacy/https://jlipworth.github.io/Labstream/support/If they still 404, publish/enable the MkDocs/GitHub Pages site first.
3. Demo screenshots / App Store images needed
Need App Store-safe screenshots/images using non-private demo content. Use the public Jellyfin demo where possible:
https://demo.jellyfin.org/stableScreenshot hygiene:
demo, blank password.4. App Review Notes draft to paste
Use this reviewer path unless it needs tweaks in ASC:
5. Metadata still to paste/finalize
Data Not Collected, matching the privacy manifest.6. Build/upload path
Before upload, create a fresh archive/export from commit
6b8b98d/ tagv1.4.0:1.4.01com.jlipworth.LabstreamKnown Xcode export quirk from today:
app-store-connectexport with symbols enabled hit a local rsync packaging failure.uploadSymbols=falseproduced a distribution-signed IPA successfully.7. After upload
1.4.0, incrementCURRENT_PROJECT_VERSIONto2first.Add not-affiliated trademark disclaimer to Settings → About (#92)
jlipworth commentedon Aug 22, 2026
App Store rollout checkpoint — Labstream bundle rename unblocked and export-verified
Continuing from the pause-for-rename checkpoint: the public rename is now carried through the repo and App Store signing path.
Repo / GitHub
jlipworth/Labstream.main:Bundle ID / local app identity
PRODUCT_BUNDLE_IDENTIFIER = com.jlipworth.LabstreamINFOPLIST_KEY_CFBundleDisplayName = LabstreamMARKETING_VERSION = 1.3.5CURRENT_PROJECT_VERSION = 1CFBundleIdentifier = com.jlipworth.LabstreamCFBundleDisplayName = LabstreamValidation
scripts/ci-hygiene.shpassed.cd PMSKit && swift testpassed after clearing stale SwiftPM module cache left from the old path rename (/path/to/user/visionplay->/path/to/user/labstream): 1192 tests passed.scripts/agent-sim-run.sh launch-home-passive.App Store signing/export
com.jlipworth.Labstream.com.jlipworth.Labstreamget-task-allow = falseNote on Xcode export quirk
The first
app-store-connectexport attempt with symbols enabled failed during IPA creation because Xcode's packaging step invoked/usr/bin/rsyncwith extended-attribute flags that this macOS/openrsync combo rejected. Signing/provisioning had already succeeded. Retrying withuploadSymbols = falseproduced the IPA successfully. If dSYMs/symbols are required for the first TestFlight upload, handle symbol upload separately or use Xcode Organizer if it avoids the local rsync packaging bug.Headset data note
Because the bundle id changed from
com.jlipworth.VisionPlaytocom.jlipworth.Labstream, the renamed TestFlight build is a different app/container. Existing offline downloads do not migrate automatically; the old app/download container was intentionally removed on-device before continuing.Next step
Ready to upload the first TestFlight build for
1.3.5 (1)from the export-verified archive/IPA, or re-archive immediately before upload if we want a fresh timestamped build artifact.Recreated during the pre-publication privacy scrub. Original comment created 2026-07-05T19:20:31Z.
1 remaining item
jlipworth commentedon Aug 22, 2026
Research: legal/trademark review + App Review server-access strategy
Working two of the non-code prereqs from the checklist. (#273 history gate is being handled separately. Privacy-policy + support-URL content will live in the docs/mkdocs refactor — see #69 — rather than as standalone files here. Apple Developer enrollment is not started yet and is the long pole, since archive/TestFlight are blocked on it.)
1. Legal / trademark — naming & branding for an unofficial 3rd-party client
Bottom line: the app name is already clean. "VisionPlay" contains none of "Plex", "Jelly…fin", or "Emby". The #52 rename away from VisionPlex was exactly the move all three trademark policies require — a name containing "Plex" would have been a direct violation. No name change needed.
What each rights-holder requires of third-party clients:
Recommended actions (all metadata/policy, no code beyond the icon check):
2. App Review can't reach a private server — strategy
This is the top rejection risk (Guideline 2.1 App Completeness drives ~40% of unresolved review issues). Findings from Apple's guidelines + developer forums:
SERVFAIL'd on Apple's corporate network. Apple DTS ("Quinn") prescribed a "vanilla network setup": HTTPS, port 443, a fixed real DNS name, and a system-trusted TLS certificate. This is exactly the trap a Plex/Jellyfin/Emby self-hoster falls into (DDNS hostnames, non-standard ports, self-signed certs).Recommendation: stand up a dedicated demo server for review, configured as a vanilla setup — real registered domain on port 443 over HTTPS with a publicly-trusted (e.g. Let's Encrypt) cert, not DDNS / a custom port / a self-signed cert — preloaded with copyright-clean sample media, and put demo credentials + a one-line "open app → it's pre-pointed at this server → sign in" note in App Review Notes. Keep it live through the whole review window.
The most bulletproof option is an in-app demo/guest mode (a bundled sample catalog so the reviewer needs no server at all), but that's code and would warrant its own issue if we go that route. The demo-server approach above needs no app changes and is the lower-effort first attempt.
Net
Sources: Plex Trademarks & Guidelines; Jellyfin Branding Guidelines; Emby License / 3rd-party API + branding thread; Apple App Review Guidelines; Apple Developer Forums reviewer-cannot-connect-to-server / DDNS and demo-video-not-sufficient.
Recreated during the pre-publication privacy scrub. Original comment created 2026-06-24T09:05:45Z.
jlipworth commentedon Aug 22, 2026
Session update — enrollment kicked off + archive-readiness verified
Apple Developer Program
CODE_SIGN_STYLE = Automaticalready, so Xcode will mint the distribution cert/profile automatically once the membership activates.Archive-readiness — verified, nothing to fix in the repo
Spot-checked the things that actually cause submission/validation rejections; all already in place:
VisionPlay/PrivacyInfo.xcprivacy) complete:NSPrivacyTracking=false, no collected data types, and all three required-reason APIs declared — UserDefaultsCA92.1, file timestampDDA9.1, disk space85F4.1.ITSAppUsesNonExemptEncryption=NOinConfig/Info.plist(skips the per-upload encryption question).NSAllowsLocalNetworking).APP-STORE-EXCEPTION.md) resolves the FSF/VLC App-Store-distribution conflict while preserving copyleft.Stale fact to update in the issue body
MARKETING_VERSIONis now1.2.1,CURRENT_PROJECT_VERSION = 1(issue body says1.0). Reminder: each TestFlight upload needs a unique build number, so bumpCURRENT_PROJECT_VERSIONper upload.Remaining path (all account/portal, gated on activation)
com.jlipworth.VisionPlay, platform visionOS). App-name availability for "VisionPlay" still to be confirmed in ASC (residual from the trademark line); have a fallback ("VisionPlay for Plex").Listing copy drafted (paste into ASC when the version page exists)
Your media server, in 3Dplex,jellyfin,emby,media,cinema,movies,tv,streaming,home theater,offline,player,serverRecreated during the pre-publication privacy scrub. Original comment created 2026-06-27T09:26:10Z.
jlipworth commentedon Aug 22, 2026
2026-08-21 initial App Store / TestFlight preflight
Grounded the current
maincandidate and attempted the first signed visionOS archive.Repository-controlled preflight — pass
c037eb964d4cb4e99305fc94fa8834a3c9fad4b4(clean)Labstream, Release, generic visionOS devicecom.jlipworth.Labstream1.6.0 (1)Signed archive attempt — blocked on local Apple account state
Ran the real archive with automatic provisioning:
Result:
Current machine inventory has no Xcode Apple account/team, usable signing identity, provisioning profile, or ASC API key. The earlier successful signing/export comments are historical; those credentials/artifacts are not present now. No repository change is required—the user needs to sign the paid Apple ID into Xcode → Settings → Accounts. After that, rerun the archive and let automatic signing mint/select the distribution assets.
Toolchain
27A5228hOnce account access is restored
Signing.local.xcconfigif needed).1.6.0 (1)archive.uploadSymbols=falseand handle dSYMs separately/through Organizer.1.6.0.No build number bump was made:
1.6.0 (1)remains valid if it has never been uploaded.jlipworth commentedon Aug 22, 2026
Follow-up: signing restored; archive/export pass; upload reached ASC but toolchain was rejected
After the paid Apple ID was restored in Xcode:
Signing.local.xcconfigfor the paid team.com.jlipworth.Labstream.Labstream.ipa.The archive was built with Xcode 27 beta 4 (
27A5228h). Although Apple had previously enabled beta 4 for TestFlight, current server-side acceptance has rolled forward; this build is no longer accepted. No app/package validation defect was reported before that toolchain rejection.Next gate
Install supported stable Xcode 26.6 (preferred for the production path) or the currently accepted Xcode 27 beta/RC, switch
xcode-select, then create a fresh archive/export/upload. The current beta-4 archive cannot be repaired in place because the SDK/toolchain is embedded in the uploaded build.Local candidate artifacts:
/tmp/labstream-appstore-archive-20260821-224534export/Labstream.ipaSince ASC rejected the upload rather than accepting a build, keep
1.6.0 (1)for the fresh-toolchain retry unless ASC unexpectedly shows build 1 after processing.jlipworth commentedon Aug 22, 2026
Initial TestFlight deployment complete — 2026-08-21
The first Labstream visionOS build is now in App Store Connect/TestFlight.
Toolchain/install
27A5237l) from Apple Developer Downloads./Applications/Xcode-beta.app/Contents/Developer; first-launch status is clean.Archive/upload
24M5347a)com.jlipworth.LabstreamApp Store Connect reconciliation
1.0to1.6.0.1.6.0 (1)is attached to the group.Remaining gates
1.6.0 (1), and smoke: launch → public Jellyfin demo login → browse → play.1.6.0must use build2or higher.Local archive root:
/tmp/labstream-appstore-archive-20260821-231104-xcode27b5jlipworth commentedon Aug 22, 2026
1.6.1 coordinated source milestone + release runbook draft
Prepared the next source milestone as 1.6.1 (1) across all four native targets (visionOS, universal iOS/iPadOS, macOS preview, tvOS preview) and synchronized the PMSKit fallback version. This does not upload 1.6.1 or change the distribution scope; ASC/TestFlight still contains visionOS 1.6.0 (1) only.
Validation completed on the uncommitted working tree:
MARKETING_VERSION = 1.6.1; all builds remainCURRENT_PROJECT_VERSION = 1.1.6.1 (1).Documentation drafted in
docs/RELEASES.mdand linked from README/MkDocs. It records the platform-specific distribution state, version/build semantics, repository/binary checks, screenshots and metadata, TestFlight/App Review, privacy/export compliance, Account Holder agreement, EU trader status, and public-release closeout. The umbrella issue body has also been replaced with the current Labstream facts/checklist; historical details remain in comments.Still deliberately deferred: installing the existing 1.6.0 (1) TestFlight build on Vision Pro. Human/account gates remain the current agreement acceptance, trader/storefront decision, and final ASC business/review fields.
jlipworth commentedon Aug 22, 2026
Split the reviewer-backend work into #280: a dedicated isolated Jellyfin environment with stable HTTPS/DNS, least-privileged non-expiring review credentials, licensed sample media, deterministic reset, external health checks, and no personal server/data exposure. The public Jellyfin project demo remains a development/fallback path, but the App Store submission should not depend exclusively on third-party demo infrastructure.
jlipworth commentedon Sep 6, 2026
The targeted code/history sweep found that this issue body predates the current documented universal-purchase topology and processed build-2 archives (see docs/RELEASES.md). Please reconcile this existing umbrella rather than create a duplicate release issue; keep uploaded-candidate state distinct from current source and preserve all unfulfilled platform/hardware/review gates. This sweep did not query App Store Connect and does not advance account-side release status. Focused tracking for the already documented full macOS hosted regression failures is now #299. New sweep findings #292–#298 are individually scoped follow-ups, not release-readiness certification.
jlipworth commentedon Sep 15, 2026
Release codec sweep follow-up is tracked separately: #322 (Emby P8 deep-seek failure), #323 (P5 forced-transcode startup and delayed Jellyfin worker cleanup), and #324 (HEVC Rext/4:4:4 Original startup across backends). Investigation branch:
codex/release-codec-sweep-triage. Current checkpoint: 39 bounded macOS DEBUG runs, 18 transport passes / 15 blocked / 6 failed; these are not visual or release-acceptance counts. Queue halted on bounded cleanup failure; the worker subsequently exited naturally and no test workers remained at final check. Subtitle burn-in, remaining combinations and hardware acceptance stay open. #259 is explicitly deferred by the user. No experimental P7 candidate enablement or release upload is implied.jlipworth commentedon Sep 15, 2026
Completed a source-level disclosure/checklist audit on codex/prerelease-disclosure-audit (separate from playback work). Findings #325 and #326 are recorded; current privacy/export/accessibility certification remains unchecked rather than inferred from historical processed builds. #259 is explicitly deferred. Public support/privacy HTTPS endpoints returned 200. Screenshot branch 7f93e1e was reviewed, with nine screenshot tooling tests passing; final captures, attribution/age-suitability review and TestFlight journey remain open. Docs hygiene and 1,707 hermetic PMSKit tests pass. No App Store Connect query, account edit, merge, upload or submission was performed.
jlipworth commentedon Sep 16, 2026
Privacy tracking clarification: #325 now separates ordinary on-device client diagnostics, explicit support sharing, and the optional project-operated reviewer/demo service. Additional source review identified no automatic diagnostic-upload path in the reviewed implementation. #280 owns the demo-service retention/deletion/backup/access evidence; #325 owns accurate wording and final owner-approved disclosure mapping. This does not require auditing arbitrary user-selected media servers or changing Data Not Collected solely because local logs exist.
Handle server playback failures with stable errors and bounded cleanup (
docs: reconcile demo-service privacy and collection disclosures (#329)
docs: consolidate screenshot provenance and release gates (#330)
jlipworth commentedon Sep 29, 2026
PR #330 merged: consolidated licensed demo-media provenance/capture planning and remaining release-gate corrections, preserving the already merged privacy changes. Official license pages and Apple screenshot guidance were rechecked; local tooling/PMSKit/docs checks and all PR checks passed. This is documentation/spec/test work only: no final screenshots, live asset-hash audit, account edits, upload or hardware acceptance. #259 stays deferred; #280/#325/#326 acceptance remains open.