// changelog

What we shipped, when.

No marketing fluff, no “we're excited to announce” preamble. Just the build log.

  1. Programmatic SEO surface tripled — glossary, listicles, smart 404

    New /glossary/[term] route with 30 short-form definitions (DefinedTerm JSON-LD per page).

    New /best/[slug] commercial-intent listicles — five entries covering free, cheap, reserved-subdomain, no-bandwidth, Stripe-webhook-friendly tunnels (ItemList JSON-LD).

    Collection hubs at /use-case, /integrations, /ngrok-errors, /compare so PageRank flows to leaf pages from a real index.

    Smart 404 page suggests the closest known paths via token-overlap similarity — recovers bounces from typos and stale third-party links.

    New /llms-full.txt corpus (~107 KB markdown) for AI crawlers to ingest the full prose in a single fetch.

    Sitemap grew from 100 → 143 URLs.

    permalink →

  2. Programmatic SEO surface: 9 competitor pages, 10 use cases

    New /compare/[slug] dynamic route with 9 competitors (ngrok, Cloudflare Tunnel, localtunnel, Serveo, frp, Telebit, Expose, Pinggy, Loophole). One TS data file drives all pages.

    New /use-case/[slug] route covering Stripe webhooks, GitHub webhooks, Discord bots, Vite/Django/Streamlit dev servers, mobile deeplinks, ssh -R replacement, Postgres tunneling.

    RSS feed at /changelog.xml. Sitemap auto-includes all programmatic pages from the same data files.

    permalink →

  3. Self-hosted observability — page views + panic log

    The /admin dashboard now includes aggregate page-view counts (path → count, no IPs/UAs/sessions stored) and a recent-errors ring (panics + handler errors with stack traces).

    Replaces the role Plausible/Sentry would play with zero new dependencies. Everything is in-memory, single process, privacy-safe by construction.

    permalink →

  4. Public /status page

    Live operational status polled every 15 seconds. Shows edge HTTP, tunnel control, and web app independently. Strictly anonymous-safe data — counts and uptime, no per-user details.

    permalink →

  5. platform

    Internal admin surface

    New /admin route group gated by an explicit allowlist (LROK_ADMIN_USER_IDS). Returns silent 404 to non-admins so the surface is invisible to enumeration.

    Single dense page: pulse strip (active tunnels, req/sec, MB/sec, mem, uptime — auto-refreshing every 5s), top users by bandwidth, recent signups + upgrades + verified domains.

    API mirror at GET /api/v1/admin/dashboard so curl/cron can pull the same data.

    permalink →

  6. v0.2.1

    lrok login — browser flow + lrok update self-replace

    Default `lrok login` opens a browser; PKCE-style flow mints a Clerk API key bound to your account. Token never appears in any URL.

    `lrok update` self-replaces the binary after SHA-256 verification. No more re-running the install one-liner.

    install.ps1 arch detection robustified — falls back to PROCESSOR_ARCHITECTURE when RuntimeInformation returns nothing.

    permalink →

  7. platform

    Custom domains + Clerk billing E2E

    Bring your own host with TXT-record verification — Traefik HTTP provider auto-emits routers, Let's Encrypt issues per-domain certs.

    Clerk Billing wired end-to-end: subscribe to Pro from /pricing, webhook lifts your quota in seconds, no manual ops step.

    permalink →

  8. design

    Live globe on the homepage + dashboard

    Cobe-backed 3D globe with great-circle arcs from your laptop's origin to the lrok edge. The "live" feel is genuine — arcs animate based on real tunnel openings.

    permalink →

  9. v0.1.0

    lrok 0.1.0

    First public release. HTTP + TCP tunnels, reserved subdomains, basic-auth, live request inspector, custom domains.

    permalink →