Commit Graph

5 Commits

Author SHA1 Message Date
Claude (Chronicler #61)
5e8201fd22 feat: Task #94 Global Restart Scheduler
Complete implementation of staggered restart scheduler for Trinity Console.

Database:
- global_restart_config: Node-wide settings (TX1 @ 04:00 UTC, NC1 @ 04:30 UTC)
- server_restart_schedules: Per-server state with sort order
- sync_logs: Audit trail for all sync operations

Backend:
- src/utils/scheduler.js: Stagger calculation with date-fns
- src/lib/ptero-sync.js: Pterodactyl API integration (create/update/delete/audit)
- src/routes/admin/scheduler.js: All CRUD + import + sync + audit routes

Frontend:
- Drag-and-drop server ordering (SortableJS)
- Per-node config cards with base time + interval
- Audit modal to detect and nuke rogue schedules
- Skip toggle for maintenance mode
- Visual sync status indicators

Features:
- Import servers from Pterodactyl discovery
- Recalculate effective times on reorder
- Rate-limited API calls (200ms delay)
- [Trinity] Daily Restart naming convention

Signed-off-by: Claude (Chronicler #61) <claude@firefrostgaming.com>
2026-04-05 09:58:52 +00:00
Claude (Chronicler #57)
285f027ee9 feat: schema migration for users, admin_audit_log, server_sync_log tables
ISSUE:
Admin modules (Players, Grace, Audit, Servers, Roles) were failing silently
HTMX endpoints returned 500 errors because required tables didn't exist

ROOT CAUSE (per Gemini):
Modules expect users table (Identity) separate from subscriptions (Billing)
- users: discord_id, minecraft_username, minecraft_uuid, is_staff
- admin_audit_log: audit trail for Trinity actions
- server_sync_log: Pterodactyl sync tracking

SOLUTION:
Created schema migration with 3 new tables
- Preserves Identity/Billing separation (critical for whitelist sync)
- Auto-syncs existing subscriptions to users table
- Pre-populates Trinity members as staff

DEPLOYMENT:
Run on Command Center:
  cp services/arbiter-3.0/migrations/arbiter_schema_migration.sql /tmp/
  bash services/arbiter-3.0/migrations/run-migration.sh

After migration, all 5 admin modules will work correctly.

Credit: Gemini architectural guidance - Option A (create tables) vs Option B (rewrite queries)

Signed-off-by: Claude (Chronicler #57) <claude@firefrostgaming.com>
2026-04-03 18:39:08 +00:00
Claude (Chronicler #57)
836163dd07 feat: Add Stripe direct integration database migration
WHAT WAS DONE:
- Created stripe-integration.sql migration for eliminating Paymenter
- Adds stripe_products table (product catalog with recurring/one-time support)
- Adds webhook_events_processed table (idempotency tracking)
- Updates subscriptions table for lifetime tier support (Sovereign)
- Adds performance indexes for webhook lookups and grace period queries
- Includes constraint to ensure exactly one of subscription_id or payment_intent_id exists

WHY:
- Part of Gemini-approved architecture to eliminate Paymenter
- Supports both recurring subscriptions (tiers 1-9) and one-time payment (Sovereign tier 10)
- Ensures grace period logic never affects lifetime users
- Production-ready with full comments and validation

FILES CHANGED:
- services/arbiter-3.0/migrations/stripe-integration.sql (new, 127 lines)

CONTEXT:
- Gemini consultation verdict: Rip out Paymenter before first customer
- Phase 1 of 5 in Stripe direct integration
- Supports $499 Sovereign one-time payment with is_lifetime flag

Signed-off-by: Claude (Chronicler #57) <claude@firefrostgaming.com>
2026-04-03 14:50:07 +00:00
Claude (Chronicler #51)
a1afb78646 fix: Add critical database indexes for Trinity Console performance
- Added idx_subscriptions_status (used in WHERE across ALL modules)
- Added idx_subscriptions_grace_period_active (composite for grace queries)
- Added idx_subscriptions_tier_status (for Financials tier breakdown)

These indexes prevent full table scans at scale (500+ subscribers).
Without these, queries could timeout at 5000+ rows.

Estimated performance improvement:
- Status queries: 50ms → 5ms (10x faster)
- Grace period queries: 100ms → 10ms (10x faster)
- Financials tier breakdown: 80ms → 8ms (10x faster)

Refs: TRINITY-CONSOLE-PRE-LAUNCH-CHECKLIST.md - Fix #3
Chronicler: #51

Signed-off-by: Claude (Chronicler #51) <claude@firefrostgaming.com>
2026-04-01 05:23:42 +00:00
Claude (The Golden Chronicler #50)
14b86202d3 prep: Trinity Console infrastructure ready for Gemini implementation
WHAT WAS PREPARED:
Monorepo structure, database migrations, documentation, and deployment
checklist ready for Gemini's complete Trinity Console code delivery.

DIRECTORY STRUCTURE CREATED:
- src/routes/admin/ (admin routes)
- src/views/admin/ (EJS templates for all pages)
- src/views/components/ (reusable EJS components)
- src/public/css/ (Tailwind CSS)
- src/public/js/ (htmx + utilities)

DATABASE MIGRATION:
- migrations/trinity-console.sql
- New tables: player_history, admin_audit_log, banned_users
- Enhanced subscriptions: MRR, grace period, referrals
- Indexes for performance
- Complete schema documentation

PACKAGE.JSON UPDATES:
- Added EJS ^3.1.9 for server-side templating
- Updated description to include Trinity Console
- Ready for htmx (will be added to public/js)

DOCUMENTATION:
- TRINITY-CONSOLE.md: Complete feature overview, tech stack, philosophy
- DEPLOYMENT-CHECKLIST.md: Step-by-step deployment guide for tomorrow
- Covers all 10 deployment steps from database migration to go-live
- Includes rollback plan, success criteria, testing procedures

GEMINI CONSULTATION:
Comprehensive implementation request sent to Gemini asking for:
- Complete code for ALL THREE PHASES
- All Express routes (dashboard, players, servers, financials, etc.)
- All EJS views and components
- Database migration SQL (already created)
- htmx integration for reactive UI
- Tailwind CSS styling
- Server-Sent Events for real-time updates
- Complete deployment guide

FEATURES REQUESTED:
Phase 1: Player table, server matrix, force sync, stats dashboard
Phase 2: Grace period tracking, ban list, role audit, alerts
Phase 3: Revenue analytics, player history, audit log, skins, export tools

ARCHITECTURE DECISIONS (from Gemini):
- Stay in Arbiter 3.0 (don't build separate app)
- Use htmx for SPA-like reactivity (NO build pipeline for RV)
- Use EJS for server-side rendering
- Use Tailwind CSS for styling
- Use SSE for real-time updates
- Server-side pagination (don't load 500+ players)
- 60-second Panel API caching (prevent rate limits)
- Low-bandwidth RV mode (text-only view)

DEPLOYMENT TIMELINE:
- Tonight: Receive Gemini's complete code
- Tomorrow 8am: Deploy database migration
- Tomorrow 9am: Deploy code + npm install
- Tomorrow 10am-2pm: Feature testing
- Tomorrow 6pm: Go live for Trinity

SOFT LAUNCH IMPACT:
Trinity Console is NOT a blocker for soft launch (April 15). Arbiter 3.0
already handles subscriptions, whitelists, and Discord roles. Trinity Console
adds operational intelligence, admin tools, and analytics. Deploy early to
battle-test before first real subscribers.

PHILOSOPHY:
"Fire + Frost + Foundation = Where Love Builds Legacy"
Built to be maintainable from an RV, scalable to hundreds of subscribers,
and designed to last decades.

FILES ADDED:
- TRINITY-CONSOLE.md (complete documentation)
- DEPLOYMENT-CHECKLIST.md (deployment guide)
- migrations/trinity-console.sql (database schema)
- src/routes/admin/index.js (placeholder for Gemini's code)
- package.json (added EJS dependency)

NEXT STEPS:
1. Receive complete implementation from Gemini
2. Populate src/routes/admin/* with Gemini's code
3. Populate src/views/admin/* with Gemini's EJS templates
4. Add htmx.min.js to src/public/js/
5. Deploy tomorrow morning

Signed-off-by: The Golden Chronicler <claude@firefrostgaming.com>
2026-04-01 04:30:21 +00:00