Releases: rknightion/sf2loki
Releases · rknightion/sf2loki
Release list
v0.2.0
0.2.0 (2026-07-01)
Features
- app: pipeline + composition root + CLI (T11) (09dc1bd)
- auth: JWT bearer TokenProvider (T2) (07107f2)
- auth: OAuth client_credentials mode + sandbox/production toggle (6bfbccd)
- cli: --check flag for offline config + wiring validation (5f63dea)
- cli: add 'config example|reference|schema' subcommand (6c5dac5)
- configdoc: generate annotated example YAML from the model (a54ef77)
- configdoc: generate markdown reference + json schema (474b620)
- config: generate example + reference from schema; add drift gate (d733f7e)
- deploy: enable org-limits metric poller in docker config (3149d9b)
- deploy: persist checkpoint to a bind-mounted ./state volume (e78bf4a)
- docker: docker-compose run path + readiness-based healthcheck (9ce8836)
- eventlogfile: hourly-ELF resiliency hardening + close ko.md gaps (4559c00)
- labels: always emit job + service_name, auto-derive environment (e9b0b86)
- loki: label guard + protobuf/json encoders (T5) (ae98268)
- loki: LokiSink HTTP push with retry + 413 split (T6) (e7b6526)
- obs: metrics, health, structured logging (T8) (8089fa4)
- obs: OTel-native metrics via OTLP + Salesforce org-limit metrics (d2bfbdb)
- obs: push metrics to Grafana Cloud over OTLP by default (7a84ee1)
- obs: startup banner + pubsub/pipeline operational logging (6306905)
- obs: wire the remaining unwired metrics through (ef8482a)
- packaging: Dockerfile, k8s manifests, CI, docs (T12) (34c9d16)
- project skeleton, frozen seams, proto stubs, config (T1) (d92f25c)
- salesforce: Pub/Sub gRPC client + Avro codec (T3) (f62a074)
- shaping: derive a per-event log level as structured metadata (e44e6cf)
- sources: auto-discover Pub/Sub streams; precedence-aware ELF overlap (18da0d5)
- sources: discover EventLogFile EventTypes with a "*" wildcard (bc2c29e)
- sources: EventLogFile ingestion (Phase 3) + either/or docs (b425acc)
- sources: EventLogFile source stub (T10) (7ca6b45)
- sources: ingest a broad EventLogFile mix on the Daily interval (9c35aa2)
- sources: per-event-type ELF routing + Loki per-line byte cap (40569c2)
- sources: Phase 2/3 seams — overlap guard, ELF config/metrics, timestamp + sink hardening (dff7982)
- sources: Pub/Sub streaming source (T4) (9171a02)
- sources: SOQL client + eventlog_objects source (T9) (856f04e)
- state: file + configmap checkpoint stores (T7) (0b34521)
- tooling: broaden generator API/EventLogFile coverage (0c31277)
- tooling: CSV-driven diverse data + reliable generator cleanup (3a01846)
Bug Fixes
- app: bound graceful shutdown to shutdown_grace (32b868e)
- configdoc: comment out inline secrets in example so *_file isn't shadowed (bc81d6d)
- configdoc: mark required secret leaves; add regression tests for list/alias/undefined rendering (1d3977b)
- config: duration shorthand + ${ENV} interpolation (DESIGN §11) (148c5a4)
- pubsub: create gRPC channel lazily inside the running event loop (69c1150)
- pubsub: invalidate token on UNAUTHENTICATED so streams self-heal (43c6119)
- pubsub: use ChangeEventHeader.commitTimestamp for CDC entry timestamp (575e8a1)
- sources: eventlog_objects entry timestamp uses configured timestamp_field (561946c)
- sources: ingest EventLogFile on the Hourly interval, not Daily (faac02a)
- sources: SOQL-safe datetime literals + dropped-metric count (review) (0105924)
Code Refactoring
- config: make field docs machine-readable via Field(description) (ca4b6e2)
- state: drop Kubernetes/ConfigMap backend, file store only (ec11398)
Documentation
- add Phase 0 design (DESIGN.md) (39e7cc3)
- config: document generated config reference + drift gate (50f60e5)
- correct OAuth scopes — refresh_token required for pre-authorized JWT bearer (b0c9d51)
- dedupe to single source of truth + add generator doc (0d0b931)
- readme: full External Client App + JWT bearer setup walkthrough (a9c9d8d)
Build & CI
- docker: pull the GHCR :main image by default (26aea13)