Skip to content

v1.0.0

Choose a tag to compare

@Polliog Polliog released this 16 Jun 06:45
· 81 commits to main since this release
51aec1c

First stable release of the 1.0 line. The headline work since 0.9.7 is the tenant data isolation audit that hardens every backend data-access path, and the metering + capability system that gives every organization usage measurement, feature gates and enforceable limits/quotas (ingestion, spans, storage) without changing OSS behavior. A typed lifecycle hooks surface and a reusable outbound webhook delivery system (HMAC signing, retry/backoff, DLQ, centralized SSRF) land alongside.

See CHANGELOG.md for the full, detailed record.

Security

  • Tenant data isolation audit (#219, #228): closed authenticated cross-tenant log and trace/span reads via unvalidated ?projectId, swept application-layer scoping gaps on tenant-table queries, and added an isolation test suite plus CI tripwires (check:tenant-scoping). Reservoir log query params now require projectId with an explicit GLOBAL_SCOPE sentinel.
  • PII masking is fail-closed at ingestion: records whose masking fails are rejected before storage and reported in the ingest response rejected[]; no unmasked data can reach any storage engine.
  • Two waves of dependency advisory fixes (12 advisories): vitest, esbuild, shell-quote, nodemailer, vite, js-yaml, protobufjs, form-data and @opentelemetry/core upgraded to patched releases; no vulnerable version remains in the lockfile.

Added

  • Capability system (#214): per-organization feature gates, static limits and metered usage quotas, enforced across alerts, sigma rules, notification channels, API keys, dashboards and ingestion/storage/span quotas. OSS defaults stay unlimited.
  • Resource usage metering (#212): storage-agnostic per-org/project consumption tracking with a Usage dashboard, plus span and storage-snapshot recording sites and capability-usage vs plan-limit progress bars.
  • Lifecycle hooks (#216): typed before-/after- extension points for ingestion, query, alert evaluation and webhook dispatch; no-op in OSS, configurable via HOOKS_MODULES.
  • Generic outbound webhook delivery (#218): HMAC-SHA256 signing, exponential-backoff retry, a dead-letter queue, per-org concurrency limiting and centralized SSRF protection, with every sender migrated onto it and a unified event envelope.
  • Audit log primitive (#217): typed actions/actors/outcomes, per-org retention, and audit coverage for API-key access and failed logins.
  • Request context propagation (#213): AsyncLocalStorage-backed context across HTTP, jobs and the DB layer.

Changed

  • BREAKING: unified webhook event envelope (#218): every outbound delivery serializes to one { id, type, version, occurredAt, organizationId, projectId, data } envelope with an X-Logtide-Event-Version: 1 header.
  • OTLP log metadata shape: resource attributes now land under metadata.resource; structured bodies preserved under metadata['otel.body'].

Fixed

  • Sigma search by MITRE technique/tactic/tag (text[] vs jsonb), a migration prefix collision that could break production migrate, and assorted silent-failure and status-code issues across the admin, monitoring and sigma surfaces.

Notes

  • Scheduled email digest reports (#154) are merged as groundwork but disabled in this release pending completion.

Full Changelog: v0.9.7...v1.0.0