Changelog

What we shipped.

New features, improvements, and fixes across the platform — newest first. Follow along as the beta grows.

Feed tokens, sessions, retention, exports & SDK 1.1

  • Public keys are now ingest-only: they can submit auto-capture batches and nothing else. To read activity in the browser, your server mints a short-lived, actor-scoped feed token (POST /v1/feed-tokens) and passes it to <softechlog-feed feed-token="…">.
  • Sessions are real: any event with a session_id (auto-capture always sends one) creates or extends a session, browsable and replayable in the dashboard and via GET /v1/sessions.
  • Retention is enforced automatically: an hourly sweep deletes events (and their sessions) older than the plan window — 30 / 90 / 365 days. Actors are kept.
  • Plan caps are enforced on every ingest path, single and batch, with a clear 402; the new Plan & usage page shows a live usage meter.
  • Events API: free-text search (q=), action prefix filters (member.*), tuple cursors that never skip or duplicate rows, and CSV / JSON export (GET /v1/events/export) on all plans.
  • New GET /v1/stats: headline totals, per-day series, top actions and usage — the numbers behind the dashboard Overview.
  • Node & Python SDKs 1.1: automatic retries with backoff (network, 429, 5xx), feedToken() / feed_token(), sessionId / session_id, end-user context (ip, user-agent) — plus a FastAPI middleware that fills it in for you.
  • Auto-capture 1.1: SPA route tracking (pushState / popstate), query strings and fragments stripped from URLs by default, data-stl-ignore / data-stl-mask, session ids, and sendBeacon flushes on unload.
  • Feed component: zoneless Angular Elements build with Shadow DOM, feed-token attribute, --stl-font-family, built-in expired-token state.
  • The dashboard no longer holds an API key in the browser — it uses its own session, so it works from any device. Errors from the API now carry a request_id.

Dashboard Overview & full docs

  • New Overview page in the dashboard: event stats, 14-day activity chart, top actions, and recent activity at a glance.
  • Complete docs: quickstart, manual tracking, auto-capture, feed component, filtering, API reference, data retention, security, and FAQ.
  • Redesigned marketing site with dedicated pricing page.

Batch ingestion & self-instrumentation

  • POST /v1/events/batch endpoint for auto-capture ingestion (public key, up to 100 events per call).
  • We now dogfood Softechlog on our own marketing site and dashboard.

Rate limiting, theming, and hardening

  • Redis-backed sliding window rate limits: 1,000 req/min per secret key, 200 req/min per public key.
  • Feed component theming via CSS custom properties (--stl-accent, --stl-bg, and friends).
  • Free plan event cap (10,000/month) now enforced with a clear 402 response.
  • Backend test suite covering ingest, auth, rate limits, and tier limits.

Beta launch

  • Event ingestion API with actor / action / target / metadata contract.
  • Node.js (@softechlog/node) and Python (softechlog) SDKs.
  • Browser auto-capture script (stl_capture.js) with session tracking.
  • Embeddable <softechlog-feed> Web Component.
  • Founder dashboard: live events stream, users, sessions, API keys, settings.