v1.0.0
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 requireprojectIdwith an explicitGLOBAL_SCOPEsentinel. - 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 anX-Logtide-Event-Version: 1header. - OTLP log metadata shape: resource attributes now land under
metadata.resource; structured bodies preserved undermetadata['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