Repository navigation
feat(bonus): bonus points, shop, avatars and bounties - #55
Merged
Merged
Conversation
- per-area locale files under i18n/locales/<code>/ to avoid merge conflicts - browser language detection, choice stored in a cookie - language switcher in the footer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add common, nav, layout, auth, home and shared component keys in en and fr, translate relative times and dates in format utils, and add the language switcher to the login and register pages. Refs #43 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add torrents, search, upload, edit and markdown keys in en and fr for the torrent list and detail pages, search page, torrent table and the upload/edit modals. Refs #43 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add forum, users and invites keys in en and fr and format forum and invite dates with the active locale. Refs #43 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add mod and admin keys in en and fr for the admin/mod layouts and every admin component, and format admin dates with the active locale. Admin-configured content and server error messages stay untranslated. Refs #43 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- earn points per torrent seeded (only for uploads or real snatches, capped number of torrents) and when an upload gets approved - admin-defined shop: upload credit, invites, animated (GIF) avatar unlock - atomic purchases and balance changes, every movement in a ledger - avatars: png/jpeg/webp for everyone, animated formats once unlocked, detected from magic bytes - bounties: points in escrow, contributions, fill with an approved torrent, accept pays the uploader, cancel refunds contributors - admin endpoints for bonus settings, shop items and point grants Refs #48 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- /shop: balance, earning rules, items, avatar upload, history - /bounties: list, filters, search, create; /bounties/:id: contribute, fill, accept, reject, cancel - admin bonus page: earning rules, shop items editor, point grants - english and french strings in i18n/locales/*/shop.json Refs #48 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- shop and bounties in the main nav, balance in the user menu - avatar on user profiles, bonus entry in the admin menu - type the pending torrents fetch explicitly Refs #48 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 27 minutes. View limit detailsLimit details: You’ve used all 2 included reviews currently available. Review configuration: ⚙️ Run configuration
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (100)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Oct 8, 2026
Merged
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.
Summary
Bonus points, a shop and bounties (#48). All rates and prices are set by the admin.
Earning points
pointsPerSeedDayper torrent per 24h, accrued on each seeder announce. It is limited to:left=0cannot farm points on any torrent;maxSeedingTorrentstorrents earning at the same time.pointsPerUploadonce, when an upload is approved (or immediately for staff and auto-approved roles).Shop
upload_credit(GB added to the uploaded counter);invite(adds invites);gif_avatar(unlocks animated avatars).bonus_transactionsand appears in the user's history.Avatars
/uploads.Bounties
Every state change is a conditional update (
WHERE status = …), so concurrent actions cannot pay twice.UI
/shop(balance, earning rules, items, avatar, history),/bounties(list, filters, search, create) and/bounties/:id./admin/bonus(rules, items editor, point grants).i18n/locales/*/shop.json.Schema
users:bonus_points,avatar_url,can_use_gif_avatar.bonus_transactions,shop_items,bounties,bounty_contributions.drizzle-kit push.0012_bonus_shop.sqlis provided for reference./admin/bonus.Test plan
npx vitest run: 139 passing, with new tests for seeding accrual, purchase rules, bounty transitions and image type detectionnpm run build.png;Known
vue-tscreports an "Excessive stack depth" error in one admin component. It comes from Nitro's typed$fetchroutes once the route count grows, and moves between files. Typecheck is not part of CI.Closes #48
🤖 Generated with Claude Code