// Changelog

What we shipped, when.

A public log of platform updates — features, performance work, fixes and brand changes. New entries appear at the top.

Live status page

The public /status page is no longer a static "everything's fine" snapshot. It polls a real health endpoint every 60 seconds and reflects what the platform is actually doing.

  • FeatureNew GET /api/v1/health public endpoint with eight component probes (database, cache, scheduler, worker, REST API, webhooks, dashboard, DHRU Auto Sync).
  • FeatureStatus page hero + component pills update live with cyan / amber / red dots and matching pulse animations.
  • PerfEndpoint is Cache-Control: max-age=30 so two polling tabs share a single upstream call.
  • FeaturePolling pauses on tab hidden, resumes on visible; soft "feed unreachable" fallback instead of raw fetch errors.

Yearly billing cycle

The Yearly toggle in /billing.php?tab=plan now charges the upfront annual total and stamps the cycle on your account — not just a price-label swap.

  • FeatureNew users.billing_cycle column persists monthly / yearly per user.
  • FeaturechangePlanWithProrate() understands cycle flips: full charge of the new cycle, full refund of the unused old cycle, expiry resets to NOW + new-cycle days.
  • FeatureThe switch modal now reads "renew yearly afterwards" and the confirm button shows the cycle alongside the charge amount.
  • FixModal sub-line ("$X.XX/mo · 🎁 Save 17%") only renders on the yearly toggle; the monthly view stayed clean.

Brand consolidation

The landing and the app no longer look like two different products. Every cyan / teal accent now matches end to end, and the brand stopwatch shows up wherever the old abstract icon used to live.

  • BrandPanel-wide indigo → cyan sweep: design-tokens, dark-theme, sidebar, dashboard, billing tabs, runs, jobs — 28 files touched.
  • BrandTransactional emails (verify, password reset, plan expiry, failure alert) now use the cyan accent.
  • BrandFavicon is the real stopwatch mark (multi-resolution .ico extracted from logo.png) plus matching SVG fallback.
  • BrandNav + footer brand mark on every public page is the real logo crop, not a generic cyan circle.

Dashboard performance — O(1) per user

Cold dashboard renders went from ~25 s to under half a second. The platform now scales linearly with traffic without bloating the buffer pool or the front-end wait.

  • PerfLive per-user execution counters in Redis, written by the engine on every job completion (TTL 48 h, reconciled at boot).
  • PerfMaterialised daily-stats table for the 30-day window — 25 s → 12 s on its own, before counters took it the rest of the way down to ~0.4 s.
  • PerfCapped COUNT(*) with LIMIT 1001 and split FORCE INDEX paths on Run History.

Safety nets — retention & soft caps

Two long-term safety nets so the platform stays predictable: capacity protection without breaking production, and run-log retention that respects the plan tier.

  • FeatureSmart Protection — Anti-Overload. Past your daily cap you get a 7-day grace window; only then are executions demoted to a lower BullMQ priority (jobs still run).
  • FeaturePer-plan retention cron — runs nightly, prunes job_runs rows older than each user's plan window (7 / 14 / 90 / 180 days).
  • FeaturePlan-expiry reminders by email + Telegram, 7 days before renewal, deduplicated per user/day.

Premium platform launch

Full rewrite of the public face of CronJobFast — landing, partner directory, docs, dashboard onboarding — plus the DHRU Premium plan and a panel restructure that finally separates billing, statement and reseller flows.

  • FeatureLogo-led cyan landing with animated dashboard mockup (FLIP feed, live counters, de-duplicated job names from the real DHRU surface).
  • FeatureDedicated /resellers directory with compact partner cards and equal-weight WhatsApp / Telegram / Web contact icons.
  • FeatureDHRU Premium plan ($9.99/mo or $99.99/yr — 500 manual jobs, 2-second interval, 5.18 M execs/day, 180-day run history, 3 DHRU domains).
  • FeatureFirst-run onboarding card on the dashboard for users with zero jobs — two tiles: "Scan your DHRU domain" or "Create a manual cron".
  • Feature/docs refresh: plan tiers table, caps & throttling section, DHRU Premium specs, updated webhook signing notes.
  • FixGSM Theme Detect no longer blocks DHRU Premium users behind an "Upgrade Plan" wall.

Foundation

The boring-but-load-bearing work that makes the rest possible.

  • PerfPHP-FPM hardening: request_terminate_timeout=20s + slowlog at /etc/php/8.2/fpm/pool.d/www.conf to stop stuck workers cascading into nginx 504s.
  • PerfRedis-backed PHP sessions (DB 1) — file-lock contention 502s eliminated.
  • FeatureEmail verification at signup + login gate for unverified users.
  • FeatureRun History with implicit 30-day window, capped COUNT(*) cached in Redis, ID-aware job filter.
  • FeatureRun-Now button wired through NODE_RUN_NOW_SECRET (engine .env + FPM env).