Skip to main content

December 2025

Daily changelog for Terra development.

2025-12-10

Added

Files: src/lib/rate-limit.ts, src/app/actions.ts, src/app/actions/webhooks.tsImplemented distributed rate limiting to prevent abuse:
  • Form submissions: 30 requests per minute per IP address
  • Webhooks: 500 requests per minute globally
  • Uses sliding window algorithm for smooth rate limiting
  • Graceful degradation when Redis unavailable
  • IP detection for Vercel/Cloudflare/nginx proxies
Environment variables:
  • UPSTASH_REDIS_REST_URL
  • UPSTASH_REDIS_REST_TOKEN
Files: src/lib/encryption.ts, src/app/actions.tsField-level AES-256-GCM encryption for sensitive form data:
  • Encrypts bank account numbers and routing numbers
  • Masked display in submissions list (****1234)
  • Full decryption in submission detail view
  • Backwards compatible with existing plaintext data
Environment variables:
  • ENCRYPTION_KEY (32 bytes, base64 encoded)
Files: src/stores/form-builder-store.ts, src/components/form-builder/builder-wrapper.tsx
  • Click duplicate button to clone any field
  • Preserves all field settings and nested elements
  • Generates new unique IDs for cloned fields
  • Inserts copy directly after the original
Files: src/components/form-builder/properties-panel.tsx
  • Paste multiple options at once (one per line)
  • Supports value, label CSV format
  • Auto-generates snake_case values from labels
  • Edit individual option values after creation

Fixed

  • Desktop/mobile layout overlap: Properties panel no longer shows duplicate overlay on desktop when resizing from mobile

Infrastructure

  • Added @upstash/ratelimit and @upstash/redis dependencies
  • Created rate limit test script (scripts/test-rate-limit.ts)

2025-12-09

Added

  • Form builder sidebar improvements
  • Alert banner system for public forms

Fixed

  • Various UI polish and bug fixes

Earlier

For changes before December 2025, see commit history on GitHub.