If credits just piled up with nowhere to go, they stopped meaning anything. Seven new ways to spend them are live:
- Tip another user — 5% tax burned to prevent laundering, 10–10,000 per tip, 10,000/day out-cap. The Tip button lands on every profile and on every post that isn't yours.
- Sponsor-pin a thread — 500 credits (6hr) or 1,500 credits (24hr) pins your thread above the sort list on its forum. One sponsor per forum at a time; extending your own is fine.
- Cosmetics — username colors (2,500 cr), post borders (1,500 cr), avatar frames (2,500 cr). One-time purchases. Catalog at /account/cosmetics.
- Gift a download — 10% tax, pay for someone else's file download. Recipient gets a notification and the next time they try to download that file, it's free and the gift is marked redeemed.
- Highlight a post — 100 credits, 24 hours of a pulsing cyan glow on your own post. Re-highlighting stacks.
- Change your username — 1,000 credits, once per 365 days.
- Bump a thread — 50 credits to push your own thread to the top of sort=new. 1/day/user, and refuses to bump a thread that was active in the last hour.
Everything debits through CreditLedger and throws InsufficientCredits when you can't afford it, so the UI shows the exact shortfall instead of silently failing.
The credit_transactions table now carries source_type + source_id columns so reversals can find the original row. A reverses_tx_id column linking back means reverseFor is idempotent — running it twice doesn't double-claw.