December 2025
Daily changelog for Terra development.2025-12-10
Added
Rate Limiting with Upstash Redis
Rate Limiting with Upstash Redis
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
UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
PII Encryption for Bank Data
PII Encryption for Bank Data
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
ENCRYPTION_KEY(32 bytes, base64 encoded)
Duplicate Field in Form Builder
Duplicate Field in Form Builder
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
Bulk Add Options for Choice Fields
Bulk Add Options for Choice Fields
Files:
src/components/form-builder/properties-panel.tsx- Paste multiple options at once (one per line)
- Supports
value, labelCSV 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/ratelimitand@upstash/redisdependencies - 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