Conversation
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bd586397d3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b40de2bf11
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4be07c1357
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d5b4089552
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4dd2fc025c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Cherry-picked/adapted from upstream bb3a555. The additive YouTubeAskCore module, models, views, view models, cookie-backup subsystem, tests and ADR applied cleanly; auth/webkit/login mods auto-merged. Conflicts resolved against the fork's diverged watch-page work: - YouTubeClient: keep both getPlayability (members gate) and the new getWatchPage; extend getWatchPage with an optional playlistId so Mix/radio watch-next context is preserved (upstream dropped it). - YouTubeWatchViewModel.load: merge upstream's account-scope reset + Ask bootstrap seeding with the fork's collaborators/notifications, live-chat startup and members gate; route the fetch through loadWatchPageWithIdentityRetry (now carrying playlistId). Comment load keeps the fork's sort tokens plus upstream's initial-completion tracking. - YouTubeWatchView: adopt upstream's Ask toolbar/overlay/accessibility and the split playback/load tasks (load(accountScope:)), but keep the fork's inline player wiring (upNextQueue + heatmap, which the new lifecycle helper omits) and the promoted (non-DEBUG) ambient style picker; drop upstream's DEBUG prototype duplicate. - APIExplorer: keep the fork's --hl flag, re-ported into upstream's unified option switch, alongside the new BoundedResponseDataDelegate. - Localization: inject the 23 new Ask source keys into the catalog and regenerate .lproj mirrors via Scripts/sync-lproj.py. Builds clean (swift build). NOT yet runtime-verified: the Ask flow touches auth/webkit paths that auto-merged, and the test target is pre-existing broken on main (MockYouTubeWatchPlaybackController lacks availableAudioTracks). Needs manual QA + the test target fixed before release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…upstream ledger Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sozercan#384/sozercan#415 already-ported Content already present via cherry-picks and prior independent ports; records ancestry so the fork reads 0-behind. No code changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
YouTubeAskCoretarget for strict parsing, bounded wire decoding, request construction, opaque commands, and visible-text sanitizationEligibility and safety
The panel is omitted unless all of the following hold:
PAyouchatcapability for the current account, region, and videoBrand accounts remain fail-closed until their delegated Ask identity/request flow is separately validated. Opaque continuations, click tracking, account identifiers, cookies, and raw payloads remain memory-only and are never logged or persisted.
Root causes addressed
footer.chatInputViewModel.sendUserQueryCommand, not onlyyouChatItemViewModelValidation
swiftformat .swiftlint --strictswift buildswift build --target APIExplorerswift test --skip KasetUITests --filter YouTubeAskswift test --skip KasetUITests --filter WebKitAuthMaterialTestsswift test --skip KasetUITests --filter WebKitManagerTestsswift test --skip KasetUITests --filter LocalizationCatalogParityTestsswift test --skip KasetUITests --filter AppLocalizationTestsgit diff --checkUI tests were not run, per repository policy.