Skip to content

1.1.0

Latest

Choose a tag to compare

@cassidyjames cassidyjames released this 22 Jul 17:47
ef0aca8

Easier to Use, Extend, and Test

Osprey spent its first release cycle proving it can carry trust and safety operations at scale, processing more than 50 million events a day in production at organizations like Bluesky and Discord as it encodes platform-specific rules and supports live investigations. With 1.1.0, we've turned our attention to how we could improve working in Osprey day to day.

Read more about the release on our blog.

Changes

Added

  • Postgres execution result store backend (#171 by @serendipty01)
  • MinIO execution-result backend wired to the UI API (#332 by @julietshen)
  • Persistent sidebar navigation (#240 by @haileyok)
  • Dark mode (#246 by @haileyok)
  • Dark mode follows system preferences (#360 by @BinaryFiddler)
  • Features Registry page at /features (#276 by @haileyok)
  • Rules Registry page at /rules (#277 by @haileyok)
  • GetActionId() stdlib UDF for retrieving the current action ID from execution context (#327 by @julietshen)
  • ParseInt UDF for converting numeric strings to integers (#190 by @bealsbe)
  • StringSlice UDF for extracting substrings by index range (#189 by @bealsbe)
  • Experiment and ExperimentWhen UDFs for checking experiment membership (#203 by @bealsbe)
  • Per-action health metrics in the executor (#191 by @cmttt)
  • Option to suppress cached errors to reduce metric bloat (#180 by @lithium-powered)
  • Experimental asyncio-native worker with metrics and engine/coordinator improvements (#341 by @cmttt)
  • ATProto JetStream example plugins and rules (#236 by @haileyok)
  • osprey-stress CLI: closed-loop stress harness that produces synthetic events at a configurable rate, observes their ExecutionResults on the output topic, and reports drop rate and p50/p95/p99 latency, exiting non-zero on threshold breach so it can gate CI on pipeline health (#367 by @julietshen, closes #324)

Changed

  • Event stream defaults to selecting all event types on first load (#194 by @chimosky)
  • Event stream shows sensible defaults so first-load isn't empty (#297 by @haileyok)
  • Replace react-scripts with rsbuild/rspack for UI builds (#235 by @chimosky)
  • Migrate from npm to pnpm via Corepack (#252 by @haileyok)
  • Replace highcharts (proprietary) with echarts (Apache 2.0) in the Timeseries chart (#374)

Fixed

  • Escape literal braces when parsing f-strings in the engine (#347 by @haileyok)
  • Tolerate malformed URI escapes in EntityWithPopover UI component (#377 by @julietshen)
  • Add retention limits to Kafka topics to prevent unbounded disk growth (#249 by @VINODvoid)
  • Fix failed UDF query (#233 by @chimosky)
  • Force a visible scrollbar on the event-stream virtualized list, which was relying on the OS auto-hide default and was easy to miss (#367 by @julietshen)

New Contributors

Full Changelog: 1.0.1...1.1.0