Repository navigation
feat(api): achievement expansion + free-tier XP earning + report-event (#196) - #268
Merged
Merged
Conversation
- Append Social/Sharing/Together achievement categories - Define 10 achievements: FirstFriend, SquadGoals, Cheerleader, ShowOff, YearInReview, TeamPlayer, MissionAccomplished, BattleBuddy (defined for siblings #197-#201) + StreakImmortal/Unstoppable (wired on streak/volume) - Add idempotent IGamificationService.TryGrantAchievementsAsync grant funnel - Add POST /api/achievements/report-event (auth, whitelisted keys: card_shared->ShowOff, wrapped_viewed->YearInReview); no Pro gate - A1: free users earn habit-log + goal XP and level up (achievements stay Pro-gated) behind the gamification_free_tier flag predicate - Data-only migration enabling gamification_free_tier - Portuguese notification strings for the 10 new achievements - Inventory report-event in the agent capability catalog Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Owner
Author
|
Paired client PR: thomasluizon/orbit-ui-mobile#357 (Closes #196). Merge this API PR first. |
The Dependency Scan flags a high-severity advisory: Microsoft.AspNetCore.OpenApi
10.0.9 transitively resolves the vulnerable Microsoft.OpenApi 2.0.0 ("circular
schema references may terminate OpenAPI parsing"). Pin a direct reference to the
patched 2.7.5. This affects main and every open branch, not just this PR; it rides
on the foundation PR so it lands on main first.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
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.



Backend half of #196 (paired with the orbit-ui-mobile PR — merge this API PR first).
What
GamificationServiceso free users earn XP and trigger the level-up overlay; achievement display stays Pro-gated ("earn now, reveal on upgrade").Social/Sharing/Together+ constantsFirstFriend,SquadGoals,Cheerleader,ShowOff,YearInReview,TeamPlayer,MissionAccomplished,BattleBuddy, plus self-contained tiersStreakImmortal(≥1000 streak) andUnstoppable(≥2500 completions). Self-contained tiers are wired here; the social/sharing/together award triggers are owned by feat(ai): SSE chat streaming + exhaustive today-listing prompt rules #199/fix(subscriptions): consume referral coupon on Play purchases made with the referral offer #200/feat(ai): tighten the daily summary to one ~140-char sentence #201/fix(habits): preserve one-time task completion when duplicating #197/fix(ai): 15s per-attempt timeout + logged retries, index-authoritative prompt reads; remove integration suite #198 (they reference these constants).POST /api/achievements/report-event(AchievementsController, authed, idempotent, whitelisted keyscard_shared→ShowOff,wrapped_viewed→YearInReview) — consumed by fix(habits): preserve one-time task completion when duplicating #197 (card share) and fix(ai): 15s per-attempt timeout + logged retries, index-authoritative prompt reads; remove integration suite #198 (Wrapped view).GamificationFreeTierflag flipped on via a data-only migration (no schema/snapshot change).Validation
dotnet buildclean;dotnet test4152 passed (App 2400 / Domain 455 / Infra 1297).Cross-repo
This is the dependency root for the Phase 5 achievement hooks — merge it before the other achievement-touching PRs so their string-id award fallbacks resolve. Refs thomasluizon/orbit-ui-mobile#196.
🤖 Generated with Claude Code