What's new on KeyAway

Last updated: August 3, 2026

Release notes for major features, improvements, and fixes shipped to KeyAway.

Platform release history

Catalog activity feed →

March 2026

  1. ·PR #66

    feat(auth): 7-day admin sessions and admin events/report UI tweaks

    featuienhance

    Extends admin NextAuth sessions to 7 days in production and improves admin Events and key report detail layouts for visitor hash and location readability.

    Highlights

    • Admin JWT sessions last 7 days in production (matching dev)
    • Events table stacks tier, spammer badge, and hash on separate lines
    • Report details modal shows city/country below visitor badges
  2. ·PR #64

    feat(admin): visitor model, analytics expansion, and shared palette

    featapiuirefactor

    Adds Sanity-backed visitor documents with session tiers and spammer flags, wires page-view tracking and admin UIs to the model, and introduces a central color palette for analytics charts and admin chrome.

    Highlights

    • Visitor docs keyed by event hash with tiers new through star
    • Admin events table shows hash, tier, and spammer columns
    • Shared tailwind-palette.json for analytics charts and tier pills

    Admin & public

    • Upsert visitor on track; PATCH for report eventType and spammer flag
    • Key report flows respect spammer restrictions on public site
    • Reusable ModalCloseButton across admin modals
  3. ·PR #55

    feat: trustpilot widget

    featui

    Adds TrustpilotReviewWidget with logo link on footer and program information sections.

    Highlights

    • Trustpilot review widget component with branded logo asset
    • Shown in site footer and program information panel
  4. ·PR #53

    feat(docs): Terms & Privacy docs, LICENSE, key-reports fix, CD key uniqueness

    featdocsfix

    Adds Terms and Privacy documentation, MIT LICENSE with KeyAway branding, fixes admin key-reports status persistence, enforces unique CD keys per program, and adds Facebook domain verification.

    Highlights

    • Terms of Service and Privacy Policy docs with README legal links
    • Admin key-reports PATCH correctly persists single cdKey status updates
    • Duplicate CD keys blocked within the same program in Sanity validation

    Legal & trust

    • MIT LICENSE with KeyAway branding reserved
    • facebook-domain-verification meta tag in layout
  5. ·PR #47

    feat(analytics): add updatedAt to bundles; treat bearer as auto run in CronStatusCard

    featapienhance

    Adds updatedAt to event bundles and refreshes CronStatusCard so bearer-triggered runs display like Vercel cron runs.

    Highlights

    • trackingEventBundle gains updatedAt on create and append
    • CronStatusCard treats bearer-triggered runs as automatic
    • Simplified cron badge copy without separate Bearer label
  6. ·PR #46

    feat(admin): dashboard refresh, username in session, CronStatusCard tweaks

    featuiapi

    Refreshes the admin dashboard with reusable components and real-time stats, adds GitHub username to the session welcome header, improves Cron Status card, and moves expired-keys cron to 22:00 UTC.

    Highlights

    • DashboardCard, QuickOverviewStats, and WelcomeHeader replace placeholders
    • Dashboard counts API returns programs, keys, reports, and recent reports
    • GitHub username shown in admin welcome header

    Admin dashboard

    • CronStatusCard clearer manual vs Vercel run messaging
    • update-expired-keys cron schedule moved to 22:00 UTC
  7. ·PR #45

    fix(cron): add run logging and admin status card

    featapifix

    Adds cron run logging and an admin Cron Status card, centralizes cron auth, and adjusts schedules to 20:00 and 21:00 UTC.

    Highlights

    • cronRun Sanity documents record each job run with status and source
    • CronStatusCard on admin dashboard shows last Vercel runs per job
    • Shared verifyCronAuth and logCronRun utilities

    Cron infrastructure

    • GET /api/v1/admin/cron-status returns last 7 days of runs
    • Expired keys at 20:00 UTC; bundle events at 21:00 UTC
    • EXPIRED_KEYS_SYSTEM.md updated with schedule notes
  8. ·PR #41

    feat: Auth v2 – GitHub sign-in, admin nav, key-report filters

    featapifixui

    Adds Auth.js with GitHub for admin auth, moves sign-out and Studio into site nav, and improves key-report notifications and filtering on the key-reports page.

    Highlights

    • GitHub OAuth admin sign-in with org membership gate
    • Key report notifications show last report time; exclude resolved keys
    • Key-reports page filters by program and key query params

    Auth & navigation

    • ProtectedAdminLayout and AdminHeader use Auth.js session
    • Sign-out and Studio link in site footer AdminNavIcons
    • Studio token auth; dynamic studio route

    Key reports

    • Notifications API uses _createdAt and returns lastReportAt
    • URL params ?program= and ?key= with auto-select from key hash
  9. ·PR #39

    fix: Key reports persistence, dedicated endpoint, shared API utils

    fixapirefactor

    Introduces dedicated POST /api/v1/key-reports, fixes report persistence including ad-blocker bypass, and centralizes IP/location logic in shared libraries.

    Highlights

    • Dedicated key-reports endpoint avoids analytics track ad-blocker issues
    • Report failures surfaced in UI instead of silent success
    • Shared requestGeo utilities for IP hash and location

    API

    • Unified create and renew on single route
    • getKeyData consolidated in keyHashing module
  10. ·PR #38

    feat: REST v1 refactor, event bundling, and Next.js 16 / Sanity v5 upgrade

    featapiperfrefactor

    Upgrades to Next.js 16 and Sanity v5, migrates all API routes to v1, and adds event bundling, sitemap revalidation, and hardened cron auth.

    Highlights

    • All admin, public, cron, and webhook routes under /api/v1/
    • Event bundling cron batches analytics writes
    • Automatic sitemap revalidation on program/key changes

    Platform upgrade

    • Next.js 16 middleware proxy and revalidateTag profile update
    • Sanity v5 compatibility across studio and client
    • CRON_SECRET server-side auth replaces public cron secret

    Admin

    • REST admin events API with pagination, filtering, rate limit

For day-to-day listings and key drops, see Updates.