Repository navigation
feat(achievements): five badges for recent features and a "not available here" tile (v2.39.0) - #198
Merged
Merged
Conversation
…ble here" tile (v2.39.0)
Spec §31.12. The catalog grows from 26 to 31:
- Hype Squad (first_hype): an accepted hype, awarded in the hype transaction.
- Word of Mouth (first_share): a share-link mint (moved into lib/shareLinks.ts).
- Glow Up (first_icon): a proposal or direct publish setting an icon the user chose
(differs from the skill's current icon; promotions excluded).
- Robot Sidekick (first_ai_draft): a usable propose-form draft (§43) or an improvements
run with an AI-drafted file (§44); its copy uses the AI display name ({name}).
- Fresh Coat (first_update): the gateway stamp sees an install move to a higher stable
version (worker).
Locked badges whose feature is switched off for the owner (hype, AI, MCP, marketplaces,
Three Doors Down) now show "Not available here yet" instead of the how-to hint, via a new
`unavailable` list on the owner's achievements response. Level total and Hero rule unchanged.
Migration 0099 backfills hype, share, icon and AI history (Fresh Coat is not provable) and
the deferred Habits backfill reads the new sources. Tests: shared unit, grid unit, a new
recentBadges dbtest, award assertions in the aiDraft/qualityDraft dbtests, a worker
freshCoat integration test, and e2e for the hype badge + tile; stale e2e badge counts fixed.
Co-Authored-By: Claude Opus 5.5 <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.
Implements SKILLY_SPEC.md §31.12 (spec reviewed and approved before the build).
What changes for users
Five new achievements (catalog 26 → 31):
A locked badge whose feature is switched off for you (hype, AI, MCP, marketplaces, and Three Doors Down via its parts) now reads "Not available here yet — your administrator decides whether it's switched on." instead of an un-actionable how-to hint. The level total and the Hero rule are unchanged.
Robot Sidekick's copy uses the admin-set AI display name (§40.14) everywhere, including the notification.
Implementation
achievementCopy/achievementNamesAi({name}substitution);unavailableAchievements(held, flags);submissionChoosesIcon;isForwardUpdate.placeHype(transactional), the share mint (moved intolib/shareLinks.ts),createProposal()/directPublish()(icon, transactional, compared against the icon before the version syncs it),draftWithAi()andrunDraft();unavailableon the owner'sGET /api/users/:id/achievements(lib/achievementFlags.ts, plusmarketplaceReachablenext to the directory query); the grid renders the tile and the substituted copy; award helpers substitute the display name in theachievement.earnedblurb; the deferred Habits backfill reads the new sources./info/refsstamp returns the previouslast_served_semverand awards Fresh Coat (system installs and pinned installs never move).first_hype,first_share,first_icon,first_ai_draft(no schema change); Fresh Coat has no provable history and is not seeded.Verified locally
pnpm typecheck✅ · shared unit 583/583 ✅ · web unit 242/242 ✅ · worker unit 204 pass (13 DB-gated skipped) ✅recentBadges.dbtest.ts6/6 ✅; workerintegration/freshCoat.test.ts1/1 ✅; touched dbtests re-run one file at a time — achievements 9, encore 3, hype 1, aiDraft 1, qualityDraft 1, proposals 14, marketplaceDirectory 1, follows 6 — all ✅Not verified locally
hype.spec.tsnew test: Hype Squad earned + the switched-off tile on/profile;achievements.spec.tsbadge counts now readACHIEVEMENT_TOTAL— they still said 24 from before the catalog reached 26). Type-checked only; left to CI / your environment._schema_migrations.🤖 Generated with Claude Code