TinyShip
TinyShip
  • Docs
  • Updates
    ← Back to Updates
    Dec 29, 2025Release

    TinyShip 1.4.0 - AI Era Credits Payment System

    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

    ModelTypeUse Case
    SubscriptionrecurringMembership, SaaS software
    One-timeone_timeLifetime access, course purchase
    CreditscreditsAI 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:studio

    What's Added:

    • New credit-transaction table 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
      }
    }