// changelog
What we shipped, when.
No marketing fluff, no “we're excited to announce” preamble. Just the build log.
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.
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- v0.1.0
lrok 0.1.0
First public release. HTTP + TCP tunnels, reserved subdomains, basic-auth, live request inspector, custom domains.