TinyShip 1.4.0 Released
This version introduces a complete credits payment system, innovatively combining traditional subscription models with the popular AI-era credits model, providing dual-track flexible payment capabilities.
β¨ Core Additions
Dual Payment Model: Traditional time-based subscriptions (monthly/yearly) running in parallel with one-time credits purchases
Credits Consumption System: Supports both fixed consumption and dynamic consumption (per token) modes
AI Model Multipliers: Different AI models can be configured with different credit consumption coefficients
Complete Transaction Tracking: Detailed credit transaction records with pagination support
π― Supported Payment Models
| Model | Type | Use Case |
|---|---|---|
| Subscription | recurring | Membership, SaaS software |
| One-time | one_time | Lifetime access, course purchase |
| Credits | credits | AI chat, image generation |
π§ Technical Highlights
Credits Service Library: Independent @libs/credits module with balance management, consumption calculation, transaction records
Safe Number Handling: safeNumber utility function prevents NaN/Infinity data issues
Automatic Webhook Processing: User credit balance automatically increases after successful payment
i18n Transaction Descriptions: Using TransactionTypeCode for multi-language transaction records
π¦ Credits API Endpoints
// Get credit balance
GET /api/credits/balance
// Get transaction history
GET /api/credits/transactions?page=1&limit=10
// Get complete status (credits + subscription)
GET /api/credits/statusβ οΈ Breaking Changes & Migration
Database Schema Update: This version adds a new credit-transaction table for tracking credit transactions. Existing users need to update their database schema after upgrading.
Migration Steps:
# Verify database connection first
pnpm db:check
# Then run one of the following:
pnpm db:push # Recommended for development (fast, applies schema directly)
# OR
pnpm db:migrate # Recommended for production (safe, creates migration first)
# Optionally verify the new table structure with Drizzle Studio
pnpm db:studioWhat's Added:
- New
credit-transactiontable for complete transaction history - Automatic migration via Drizzle ORM
- No data loss - existing tables remain unchanged
Important: Always backup your database before running migrations in production.
Pricing Page: New tab switching to differentiate subscription plans and credit purchases
Dashboard: New independent "Credits Status" tab showing balance and transaction history
Unified Colors: Removed hardcoded colors, using UI color system
π Documentation Optimization
Split the original large payment document into three independent docs:
- Payment Configuration Guide: Payment methods and plan configuration
- Credits System Guide: Credits recharge and consumption configuration
- Payment Testing Guide: Local development and webhook debugging
π‘ Configuration Example
// Credits plan configuration
credits500: {
provider: 'stripe',
id: 'credits500',
amount: 45,
currency: 'USD',
duration: {
type: 'credits',
credits: 550 // 500 + 50 bonus
}
}
// Credits consumption configuration
credits: {
consumptionMode: 'dynamic',
dynamicChatCostPerKiloToken: 1,
modelMultipliers: {
'qwen-turbo': 1.0,
'gpt-4': 2.0
}
}