Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); chore(rewards): remove dead AAO error-code UX path by dylanjeffers · Pull Request #14417 · AudiusProject/apps · GitHub
Skip to content

chore(rewards): remove dead AAO error-code UX path - #14417

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux
May 28, 2026
Merged

chore(rewards): remove dead AAO error-code UX path#14417
dylanjeffers merged 1 commit into
mainfrom
fix/dead-aao-error-ux

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Summary

  • The web/mobile rewards-claim UX has a friendly AAO-specific error message ("Your account is unable to claim rewards at this time" + emoji) that has been unreachable since #12884 (Oct 2025) removed client-side AAO orchestration from the SDK. The SDK stopped throwing AntiAbuseOracleAttestationError, so the saga's error instanceof Errors.AntiAbuseOracleAttestationError check never matched, aaoErrorCode was never set, and every claim failure — AAO-blocked or otherwise — has rendered the generic "Something went wrong" message.
  • Removes the entire dead branch: saga checks, aaoErrorCode state/selectors/payload, the AAO message + helper in the web modal, <ClaimError aaoErrorCode={…} /> plumbing in the mobile drawer + 11 challenge-content components, getAAOErrorEmojis utility + test, and the REWARDS_CLAIM_BLOCKED / REWARDS_CLAIM_ALL_BLOCKED Analytics events that were only emitted from these branches.
  • No user-visible behavior change: the generic error message has been the only one shown for over six months. This is pure dead-code removal that stops misleading future maintainers.

Out of scope

  • packages/libs (legacy SDK) has its own internal aaoErrorCode plumbing and is left untouched — it's a separate codepath not reached by the current claim flow.
  • A future server-side change that returns structured AAO error info via the /v1/rewards/claim response could re-introduce the friendly message cleanly; the current dead conditionals add no value while we wait for that.

Test plan

  • tsc --noEmit clean for packages/common, packages/web, packages/mobile
  • Repo-wide grep confirms zero remaining references to aaoErrorCode, claimErrorAAO, getAAOErrorCode, getAAOErrorEmojis, REWARDS_CLAIM_BLOCKED, REWARDS_CLAIM_ALL_BLOCKED, RewardsClaimBlocked, RewardsClaimAllBlocked in web/mobile/common
  • Trigger a failed claim (force the saga to dispatch claimChallengeRewardFailed) on web and mobile; confirm the rewards modal renders the generic "Something went wrong while claiming your rewards" message exactly as before

🤖 Generated with Claude Code

The SDK stopped throwing `AntiAbuseOracleAttestationError` when client-side
discovery/AAO orchestration was removed in Oct 2025 (#12884). Every
`claimChallengeRewardFailed` dispatch since has fallen through to the
generic "Something went wrong" branch — the AAO-specific message with
emojis at `messages.claimErrorAAO` was unreachable. The plumbing for
`aaoErrorCode` (selector, state, prop chain through 11 mobile content
components) and the `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED`
analytics events were all conditionals on a value that was never set.
Removes:
- AAO branches in the rewards saga + the now-unused `Errors`,
`RewardManagerError`, `isResponseError` imports
- `aaoErrorCode` from `ClaimState`, `claimChallengeRewardFailed` payload,
`getAAOErrorCode` selector, and the mobile `ChallengeContentProps`
- `claimErrorAAO` / `getErrorMessage` from the web modal; `ClaimError`
on mobile collapses to the generic-message-only component
- `aaoErrorCode` destructure + `<ClaimError aaoErrorCode={…} />` prop
from 11 mobile `*ChallengeContent.tsx`
- `REWARDS_CLAIM_BLOCKED` / `REWARDS_CLAIM_ALL_BLOCKED` Name enum
entries, type defs, and union members in Analytics
- `packages/common/src/utils/aaoErrorCodes.ts` + its test +
re-export — `getAAOErrorEmojis` had no remaining callers
`packages/libs` (legacy SDK) still has its own internal `aaoErrorCode`
plumbing and is left untouched. User-visible behavior is unchanged: the
generic error message has been the only one rendered since Oct 2025.
`tsc --noEmit` passes for packages/common, packages/web, packages/mobile.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ab4fa80

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

🌐 Web preview ready

Preview URL:https://audius-web-preview-pr-14417.audius.workers.dev

Unique preview for this PR (deployed from this branch).
Workflow run

@dylanjeffers
dylanjeffers merged commit b26e894 into mainMay 28, 2026
13 checks passed
@dylanjeffers
dylanjeffers deleted the fix/dead-aao-error-ux branch May 28, 2026 21:34
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dylanjeffers