2.3.1
What's Changed
- fix: runner alloc idx logic, api auth for actor get by @MasterPtato in #4443
- chore: update byte units on frontend by @MasterPtato in #4444
- fix(api): dont 500 on cross dc response by @MasterPtato in #4449
- fix(config): allow configuring topo dcs via map, fix pg ssl mode config by @MasterPtato in #4456
- fix(cache): clean up lib by @MasterPtato in #4457
- feat(cache): add in flight deduping by @MasterPtato in #4459
- feat(ups): implement queue subs by @MasterPtato in #4486
- feat(pb): actors v3 by @MasterPtato in #4463
- chore: envoy client by @NathanFlurry in #4521
- feat: basic envoy tunnel impl by @MasterPtato in #4534
- feat: basic rivetkit impl by @MasterPtato in #4544
- feat(envoy-client): fully flesh out tunnel impl by @MasterPtato in #4547
- feat(pb): actor v1 to v2 migration by @MasterPtato in #4548
- fix: optimize e2e actor path by @MasterPtato in #4551
- feat: add sleep and reschedule endpoints for actors by @MasterPtato in #4556
- feat: actor query in gateway by @NathanFlurry in #4553
- feat: native SQLite backend via napi-rs with KV channel protocol by @NathanFlurry in #4496
- chore: remove global epoxy contention by @NathanFlurry in #4554
- fix: reuse hyper instance across requests by @NathanFlurry in #4562
- Add agentOS launch blog post by @NicholasKissel in #4557
- chore: update actor query routing to use qp by @NathanFlurry in #4563
- Fix CI: remove unpublished sqlite-native optional deps by @NicholasKissel in #4571
- added render example hello-world by @ojusave in #4575
- added render example chat-room by @ojusave in #4577
- added render example state by @ojusave in #4578
- added render example react by @ojusave in #4579
- added render example stream by @ojusave in #4580
- fix(cache): make in memory cache global by @MasterPtato in #4560
- chore: misc fixes, add pb snapshot test by @MasterPtato in #4561
- fix(envoy): use global instance, add signal handlers by @MasterPtato in #4565
- fix(pb): clean up actor stop decision handling by @MasterPtato in #4566
- fix: misc token fixes by @MasterPtato in #4569
- fix: remove serverless token by @MasterPtato in #4572
- fix: driver test suite & sqlite reliability by @NathanFlurry in #4559
- feat: dynamic actors by @NathanFlurry in #4397
- chore: remove non-engine drivers by @NathanFlurry in #4574
- feat(engine): rust runner by @NathanFlurry in #4582
- chore: delete kv channel by @NathanFlurry in #4583
- feat(rust/engine-runner): minimal rust engine runner by @NathanFlurry in #4289
- feat: US-001 - Define SqliteKv trait in rivetkit-sqlite-native by @NathanFlurry in #4584
- fix: fix pool metadata protocol version refresh, rivetkit native ws by @MasterPtato in #4585
- chore: revert actor v2 hack by @NathanFlurry in #4586
- chore: remove udb as a dependency of envoy-client by @NathanFlurry in #4587
- chore: tunnel auth by @NathanFlurry in #4588
- fix: add global envoy to envoy client, remove crash policy from actors v2 by @MasterPtato in #4593
- Rework landing page for Actors + agentOS split by @NicholasKissel in #4606
- Fix broken pnpm lockfile for tsup jiti version by @NicholasKissel in #4607
- Fix agentOS RAM typo: 22 KB → 22 MB by @NicholasKissel in #4608
- chore: doc epoxy fanout behavior by @NathanFlurry in #4613
- chore: fix driver test suite by @NathanFlurry in #4591
- fix(envoy-client): add tls by @MasterPtato in #4595
- fix(envoy-client): fix handling actor event ack by @MasterPtato in #4599
- fix(pb-envoy): reduce round trips for ws connection by @MasterPtato in #4603
- chore(epoxy): clean up kv get by @MasterPtato in #4604
- fix: move runner configs to epoxy by @MasterPtato in #4605
- fix(pb): optimize actor key allocation by @MasterPtato in #4610
- fix(pb): backport serverless fix by @MasterPtato in #4611
- fix(envoy): require runner config for ws conn by @MasterPtato in #4612
- fix: dont upsert for ensure if missing by @MasterPtato in #4615
- fix(epoxy): use vbare by @MasterPtato in #4616
- chore(pegboard): cache actor kv info by @NathanFlurry in #4617
- chore: add rivetkit-native cross-platform builds to pkg-pr-new by @NathanFlurry in #4600
- feat(frontend): remove plain by @jog1t in #4646
- fix(epoxy): reuse cached optimistic value by @NathanFlurry in #4618
- fix(pegboard): create missing normal runner configs by @NathanFlurry in #4619
- fix(pegboard): skip protocol version keys in runner pool backfill by @NathanFlurry in #4620
- fix(pegboard-runner): clear terminal tunnel routes by @NathanFlurry in #4621
- fix(pegboard-gateway): enforce tunnel message state by @NathanFlurry in #4622
- fix(pegboard): unpack global runner config keys correctly by @NathanFlurry in #4623
- docs(pegboard): note runner config upsert split write risk by @NathanFlurry in #4624
- fix(pegboard): isolate runner config dc lookup failures by @NathanFlurry in #4625
- chore: sandbox smoke test by @NathanFlurry in #4662
- refactor: uplift metrics by @jog1t in #4499
- feat(frontend): logs uplift by @jog1t in #4504
- refactor(frontend): actor list uplift by @jog1t in #4511
- refactor: icons chunk by @jog1t in #4567
- feat: dev toolbar by @jog1t in #4325
- fix(frontend): typos by @jog1t in #4674
- fix(frontend): exclude preview versions from outdate notice by @jog1t in #4677
- fix(frontend): drive VITE_APP_SENTRY_ENV from DEPLOYMENT_TYPE by @jog1t in #4678
- refactor(frontend): improve "go to actor" ux by @jog1t in #4682
- feat(frontend): improve db ux by @jog1t in #4683
- chore: migrate frontend auth from Clerk to Better Auth by @NathanFlurry in #4568
- refactor(better-auth): login/signup by @jog1t in #4592
- fix: repair pnpm lock by @jog1t in #4685
- fix: missing config envs by @jog1t in #4686
- fix: frontend build by @jog1t in #4687
- move ee changes to oss by @MasterPtato in #4688
- fix: epoxy cache get opt return empty cache, prewarm enabled dcs on runner config upsert by @MasterPtato in #4689
- fix(frontend): incorrect APP_TYPE reference by @jog1t in #4690
- fix: pnpm lock by @jog1t in #4691
- fix(frontend): organization slug shenanigans by @jog1t in #4693
- fix(frontend): ts issues by @jog1t in #4694
- fix(frontend): add pagination to sql editor by @jog1t in #4695
- fix(frontend): actor names list sorting, actor details loading by @jog1t in #4697
- refactor(frontend): improve actors list data fetching by @jog1t in #4704
- fix(frontend): ns creataion by @jog1t in #4709
- fix(frontend): settings ux improvements by @jog1t in #4710
- fix(frontend): issus with context by @jog1t in #4716
- feat(frontend): sort by recently visited project/n by @jog1t in #4717
- fix(frontend): remove double visit record by @jog1t in #4718
- fix(sqlite-native): gate native read cache behind env var by @NathanFlurry in #4630
- perf(sqlite-native): remove delete file existence probe by @NathanFlurry in #4631
- perf(sqlite-native): reuse read cache for partial writes by @NathanFlurry in #4632
- perf(sqlite-native): gate kv operation labels by @NathanFlurry in #4633
- perf(sqlite-native): avoid cloning cached read chunks by @NathanFlurry in #4634
- fix(sqlite-native): restore kv error hook by @NathanFlurry in #4635
- fix(sqlite-vfs): use delete range for truncate cleanup by @NathanFlurry in #4636
- fix(sqlite-native): keep truncate cache coherent by @NathanFlurry in #4637
- fix(sqlite-native): delete metadata before chunk range by @NathanFlurry in #4638
- fix(sqlite-native): restore native startup kv preload by @NathanFlurry in #4639
- chore(rivetkit): remove wasm sqlite runtime by @NathanFlurry in #4614
- chore(sqlite-vfs): remove wasm sqlite packages and workspace wiring by @NathanFlurry in #4641
- test(rivetkit): remove wasm sqlite-only fixtures and coverage by @NathanFlurry in #4642
- fix(rivetkit): isolate engine envoys and propagate startup failures by @NathanFlurry in #4643
- fix(rivetkit): prevent sleep races during disconnect and db work by @NathanFlurry in #4644
- fix(rivetkit): surface native sqlite kv errors to callers by @NathanFlurry in #4645
- chore: lockfile lefthook by @NathanFlurry in #4647
- chore(engine): publish engine bases in ci by @NathanFlurry in #4649
- chore(publish): pin docker base image refs by @NathanFlurry in #4652
- fix(rivetkit): update config to match envoys & remove manager references by @NathanFlurry in #4663
- refactor(frontend): support envoys by @jog1t in #4651
- feat(frontend): add enoys to the runner table by @jog1t in #4675
- refactor(frontend): improve stability of data providers by @jog1t in #4768
- feat(frontend): better ux when loading actors by @jog1t in #4769
- fix(frontend): fix stale session when activating the account through the email by @jog1t in #4773
- fix(api-public): remove orphan import_export actors module by @NathanFlurry in #4764
- refactor(rivetkit-core): remove prevent_sleep field and deprecate set_prevent_sleep to no-op by @NathanFlurry in #4741
- fix(rivetkit-core): cap SerializeState shutdown timeout at 15s by @NathanFlurry in #4742
- fix(rivetkit-core): error on sleep/destroy before startup or already-requested by @NathanFlurry in #4743
- fix(rivetkit-core): abort graceful cleanup task when grace deadline elapses by @NathanFlurry in #4745
- fix(rivetkit-core): enumerate non-drained counters in grace deadline warn log by @NathanFlurry in #4746
- refactor(rivetkit): deprecate setPreventSleep to no-op in TypeScript by @NathanFlurry in #4747
- feat(rivetkit): expose c.keepAwake(promise) through native path by @NathanFlurry in #4748
- docs: add keepAwake vs waitUntil table and internal sleep-sequence invariants by @NathanFlurry in #4749
- test(rivetkit-core): cover sleep/destroy guards and prevent_sleep no-op by @NathanFlurry in #4750
- test(engine): add regression test for alarm-during-sleep-transition race by @NathanFlurry in #4755
- test(rivetkit): remove sleepWithPreventSleep fixture and tests by @NathanFlurry in #4756
- fix(rivetkit-core): return stopping not starting when sleep/destroy called mid-shutdown by @NathanFlurry in #4757
- test(engine): force overdue branch in alarm-during-sleep test with negative offset by @NathanFlurry in #4758
- docs(rivetkit): document keepAwake/waitUntil counter-arm race and surface bridge errors by @NathanFlurry in #4759
- docs(rivetkit): clean up stale setPreventSleep references in docs and JSDoc by @NathanFlurry in #4760
- fix(rivetkit): minor sleep-cleanup follow-ups by @NathanFlurry in #4761
- chore(envoy-client): log command and event payloads by @NathanFlurry in #4751
- refactor(rivetkit-core): rename StopReason to ShutdownKind and kill enum fallthroughs by @NathanFlurry in #4765
- chore(kitchen-sink): configurable endpoint by @NathanFlurry in #4766
- fix(pegboard): refresh runner config after envoy connect by @NathanFlurry in #4778
- fix(rivetkit): route raw request fetches to actors by @NathanFlurry in #4781
- fix(rivetkit): drain native sleep side tasks reliably by @NathanFlurry in #4782
- refactor(rivetkit-core): merge ready+started into lifecycle_started, drop redundant napi calls by @NathanFlurry in #4784
- fix(rivetkit-napi): run onMigrate before createState/onCreate/createVars by @NathanFlurry in #4785
- test(rivetkit): cover c.db access from onWake/onSleep/onDestroy by @NathanFlurry in #4786
- fix: autogenerate bare protocol versions by @MasterPtato in #4696
- fix: improve epoxy propose errors, add gcp logging fmt by @MasterPtato in #4698
- fix(gas): add large txn retries for pulling signals, tighten commit interval for actors by @MasterPtato in #4712
- chore: move code by @MasterPtato in #4713
- fix: add wf registry command by @MasterPtato in #4714
- fix: update railway docs to include graceful shutdown by @MasterPtato in #4715
- refactor(pb): fix actor overdue alarm handling by @MasterPtato in #4770
- refactor(gateway): clean up and fix lost tunnel msgs by @MasterPtato in #4771
- fix(pb): remove actor sleep ts when allocated by @MasterPtato in #4772
- fix(pb): fix pool config defaults by @MasterPtato in #4774
- fix(outbound): implement drain grace period by @MasterPtato in #4775
- fix(pb-envoy): hard abort ws to tunnel on ping error by @MasterPtato in #4776
- fix(pb-outbound): add back serverless token by @MasterPtato in #4817
- fix(pegboard): move sqlite v1 migration into actor workflow by @NathanFlurry in #4787
- fix(frontend): runner config requires at least 1 slot per actor by @jog1t in #4852
- fix(frontend): guard missing data provider by @jog1t in #4853
- fix(frontend): handle missing tokens on route paths by @jog1t in #4854
- fix(gas): make pruner chunked by @MasterPtato in #4818
- chore: fix decode runner config by @MasterPtato in #4855
- fix(pb): fix actor indexes from migration by @NathanFlurry in #4869
- fix(gas): add worker version by @NathanFlurry in #4870
- chore: misc logging changes by @NathanFlurry in #4871
- fix(envoy): gate envoy protocol version by @NathanFlurry in #4872
- fix(epoxy): epoxy changelog fixes by @NathanFlurry in #4874
- chore: fix envoy ws to tunnel lifecycle res by @NathanFlurry in #4875
- feat(envoy-client): impl metadata and actor names by @NathanFlurry in #4876
- fix(engine-runner): fix reconnect race condition by @NathanFlurry in #4877
- fix(rivetkit): fix v1 -> v2 kv schemas by @NathanFlurry in #4867
- chore(rivetkit): v2.1.1 migration test by @NathanFlurry in #4879
- fix(rivetkit): allow sending conn messages in onConnect by @NathanFlurry in #4881
- chore(claude): add stack-merge skill by @NathanFlurry in #4885
- chore(sqlite): stateless storage refactor by @NathanFlurry in #4856
- feat(sqlite): pitr & forking by @NathanFlurry in #4859
- chore(depot): fault injection tests by @NathanFlurry in #4868
- feat(engine-tests): wire envoy actor names through prepopulate_actor_names by @NathanFlurry in #4827
- chore(engine-tests): convert envoy tests to Sleep crash policy + triage ignored by @NathanFlurry in #4828
- fix(pegboard): use Iterator streaming mode in list_names so limit param is honored by @NathanFlurry in #4829
- fix(api-peer): make actors_delete idempotent for already-destroyed actors by @NathanFlurry in #4830
- fix(api): silently filter invalid IDs from actor_ids query instead of 400 by @NathanFlurry in #4831
- fix(api): honor cursor in actor_ids list path by @NathanFlurry in #4832
- fix(engine-tests): parallelize multi-DC startup + enable 6 multi-DC tests by @NathanFlurry in #4833
- fix(sqlite-storage): let sqlite open take over stale owners by @NathanFlurry in #4834
- fix(pegboard): route scoped actor key reads by runner dc by @NathanFlurry in #4837
- fix(pegboard-envoy): allow sqlite requests across lifecycle states by @NathanFlurry in #4838
- fix(rivetkit): remove requirement for token by @NathanFlurry in #4839
- fix(rivetkit): normalize waitUntil/keepAwake promises to null to avoid serde undefined error by @NathanFlurry in #4841
- feat(rivetkit): expose conn handle in onWebSocket context by @NathanFlurry in #4842
- fix(publish): enable frontend build for engine target and use
turbo buildinstead ofturbo build:engineby @NathanFlurry in #4843 - feat(serverless): configure drain grace period by @NathanFlurry in #4844
- test(raw-websocket): add serverless smoke coverage by @NathanFlurry in #4845
- test(sqlite): expand db stress coverage by @NathanFlurry in #4846
- docs(actors): document manual lifecycle controls by @NathanFlurry in #4847
- feat(sqlite): benchmark cold reads by @NathanFlurry in #4848
- feat(sqlite): add cold read benchmarks and simplify optimizations by @NathanFlurry in #4857
- chore(rivetkit): wasm support by @NathanFlurry in #4860
- fix(rivetkit-wasm): fix mem leaks by @NathanFlurry in #4880
- chroe: rename rivetkit-sqlite to depot-client by @NathanFlurry in #4883
- chore(driver-test-runner): add native/wasm runtime matrix to skill by @NathanFlurry in #4884
- test(serverless): avoid pinning header validation order by @NathanFlurry in #4896
- fix(rivetkit): make duplicate sleep requests idempotent by @NathanFlurry in #4934
- fix(rivetkit-core): allow dispatch during sleep grace by @NathanFlurry in #4935
- fix(rivetkit): persist native onSleep state on errors by @NathanFlurry in #4936
- fix(rivetkit): keep actors awake until keepAwake work finishes by @NathanFlurry in #4937
- test(rivetkit): cover async websocket close db access by @NathanFlurry in #4938
- fix(rivetkit-core): keep sleeping actors reachable during grace by @NathanFlurry in #4939
- test(rivetkit): verify cached websocket db refs exceed grace by @NathanFlurry in #4940
- test(rivetkit): enable driver lifecycle regressions by @NathanFlurry in #4941
- fix(kitchen-sink): default mock agent to local endpoint by @NathanFlurry in #4942
- feat(kitchen-sink): add mock agent event log copy by @NathanFlurry in #4943
- fix(guard): handle bypass preflight before query parse by @NathanFlurry in #4944
- fix(gateway): split actor response wait errors by @NathanFlurry in #4945
- feat(kitchen-sink): add actor probe controls by @NathanFlurry in #4946
- test(rivetkit): cover bypass fetch header forwarding by @NathanFlurry in #4947
- chore(rivetkit): note duplicate admission logic by @NathanFlurry in #4948
- wip: kitchen sink agentic loop finish by @NathanFlurry in #4949
- fix(rivetkit): export database provider types by @NathanFlurry in #4950
- fix(universaldb): align versionstamp operand encoding by @NathanFlurry in #4951
- fix(universaldb): preserve plain set values by @NathanFlurry in #4952
- fix(depot): add ltx decode diagnostics by @NathanFlurry in #4953
- ci(publish): add manual preview publish flow by @NathanFlurry in #4954
- fix(client): flatten skipReadyWait option by @NathanFlurry in #4955
- fix(rivetkit): use startup kv preload by @NathanFlurry in #4956
- fix(rivetkit): fire abort signal on shutdown finalize by @NathanFlurry in #4957
- fix(rivetkit): preserve bridge error messages by @NathanFlurry in #4959
- fix(pegboard): align drain grace defaults with stop threshold by @NathanFlurry in #4958
- fix(rivetkit): wrap onMigrate in savepoints by @NathanFlurry in #4960
- WIP: more fuzz tests by @NathanFlurry in #4962
- fix(rivetkit): hide pending connections during preflight by @NathanFlurry in #4969
- test(rivetkit): cover failed preflight disconnect handling by @NathanFlurry in #4973
- fix(rivetkit): defer initialized persist until state exists by @NathanFlurry in #4974
- fix(engine): install rustls provider with pools by @NathanFlurry in #4975
- fix(rivetkit): decode legacy v4 actor schedule args by @NathanFlurry in #4976
- refactor(depot-client): split embedded depot transport by @NathanFlurry in #4970
- fix(rivetkit): fix crypto dep in drizzle by @NathanFlurry in #4972
- fix(sqlite): stop actors on head fence mismatch by @NathanFlurry in #4977
- chore: update comment by @MasterPtato in #4966
- chore(rivetkit): rewrite work registry + fix waituntil not preventing sleep by @NathanFlurry in #4990
- chore(envoy-client): add envoy key tracing context by @NathanFlurry in #5002
- fix(rivetkit): use unbounded actor channels by @NathanFlurry in #5003
- refactor(metrics): split server metrics crate by @NathanFlurry in #5004
- fix(sqlite): quiet startup database miss by @NathanFlurry in #5005
- fix(rivetkit): preserve internal bridge errors by @NathanFlurry in #4993
- fix(depot-client): only fatal sqlite vfs on fence mismatch by @NathanFlurry in #5007
- fix(rivetkit): preserve query gateway skip ready wait by @NathanFlurry in #5008
- chore(engine): roxiproxi tests by @NathanFlurry in #4864
- feat(envoy-client): add ping health check by @MasterPtato in #5001
- fix(rivetkit): remove async drizzle db proxy by @abcxff in #4984
- chore(rivetkit): log inspector errors + standardize pino errorKey
errorby @abcxff in #4986 - fix(pegboard): validate drain_grace_period < request_lifespan by @abcxff in #4998
- fix(rivetkit-core): chunk apply_batch puts/deletes at 128 by @abcxff in #5046
- feat(rivetkit): add ConnectionMap readonly Map wrapper for actor connections by @abcxff in #5047
- fix: wasm-pack build by @abcxff in #5048
- fix(rivetkit): decode bridge errors with actor: null by @abcxff in #5056
- feat(frontend): add serverless check when editing the runner config by @jog1t in #4961
- fix(frontend): navigate only by using actor ids by @jog1t in #5023
- fix(frontend): ns aware navigation by @jog1t in #5024
- fix(frontend): 404 navigation issues by @jog1t in #5025
- feat(frontend): improve runners errors ui by @jog1t in #5026
- fix(frontend): build ladle correctly by @jog1t in #5027
- feat(frontend): rbac token notice for the engine by @jog1t in #5028
- refactor(frontend): better gateway errors by @jog1t in #5029
- feat(frontend): allow local->staging tunnel in dev by @jog1t in #5030
- refactor(frontend): datacenter aware provider configuration by @jog1t in #5031
- fix(frontend): missing provider configuration right after adding it by @jog1t in #5032
- refactor(forntend): improve providers table by @jog1t in #5033
- feat(frontend): add provider icons by @jog1t in #5034
- feat(frontend): allow creating serverfull instances during onboarding by @jog1t in #5035
- chore: regenerate sdk by @jog1t in #5036
- [slop]feat(frontend): enable compute, add historical logs by @abcxff in #5059
- fix(frontend): entry deduplication by @jog1t in #5061
- chore: regenerate sdk by @jog1t in #4964
- feat(website): reposition landing around the agentic era + on-prem story by @NicholasKissel in #4968
- fix(rivetkit): remove client-side connection request size check by @abcxff in #5057
- fix(rivetkit): bind methods through createWriteThroughProxy by @abcxff in #4987
- fix(workflow-engine): only commit step state after success by @abcxff in #5010
- feat(frontend): redesign hub navigation, org creation, and project NUX by @NicholasKissel in #5064
- fix(frontend): fix changelog display by @jog1t in #5076
- fix(frontend): ensure onboarding checks are only for production namespace, improve caching by @jog1t in #5077
- fix(frontend): missing skeleton view for actor names by @jog1t in #5078
- fix(frontend): hover animation on project cards not moving billing badge by @jog1t in #5079
- fix(frontend): navigation during open popover breaks closing animation by @jog1t in #5080
- fix(frontend): re-layout members screen by @jog1t in #5081
- refactor(frontend): unify settings pages by @jog1t in #5082
- fix(frontend): custom actor icons not displaying by @jog1t in #5083
- fix(frontend): dark mode issues on health check monitor by @jog1t in #5088
- fix(frontend): remove create actor from context switcher by @jog1t in #5090
- refactor(frontend): bring back the billing gauge by @jog1t in #5091
- refactor(frontend): sleep/schedule/wake actions on actors by @jog1t in #5092
- chore(website): add dashboard redesign changelog post by @NicholasKissel in #5094
- feat(frontend): compute ui by @abcxff in #5084
- chore: enable rivet compute docs by @abcxff in #5095
- docs: prep for site by @abcxff in #5096
- feat(frontend): feature flag compute by @abcxff in #5098
- feat(website): add compute to sitemap by @abcxff in #5099
- feat(frontend): rename profile to account and drop members from user dropdown by @NicholasKissel in #5101
- fix(frontend): meaningful serverless metadata errors by @jog1t in #5102
- fix(fontend): less monoscaped by @jog1t in #5103
- fix(frontend): clickable namespaces in deployments table by @jog1t in #5104
- fix(frontend): align log region column and disable selection on metadata by @jog1t in #5105
- refactor(frontend): modify onboarding for rivet compute by @jog1t in #5106
- refactor(frontend): runner_pool -> rivet_pool by @jog1t in #5107
- feat(compute): add hello-world image and docker hub publish by @abcxff in #5108
- chore: upgrade compute deploy to v1.1.1 by @abcxff in #5110
- fix(frontend): compute ui tweaks by @abcxff in #5111
- fix(frontend): compute deployments and onboarding polish by @abcxff in #5113
- fix(frontend): group envoys versions by the pool name by @jog1t in #5117
- fix(frontend): catch gateway errors in a correct format by @jog1t in #5118
- fix(actions): compute hello world wf by @abcxff in #5109
- 2.3.0 rc by @NathanFlurry in #5114
- fix(rivetkit): fix BigInt serialization in inspector workflow history and state deserialization by @abcxff in #5058
- fix(rivetkit): wire CancellationToken through waitForNamesAvailable to eliminate KV busy-polling by @abcxff in #5063
- feat(workflow-engine): add retryOnTimeout opt-in for step timeout retries by @abcxff in #5089
- chore(wasm-pack): upgrade wasm-pack to now-functioning v0.15.0 by @abcxff in #5125
- fix(rivetkit): infer T from step/tryStep config object in workflow context wrapper by @abcxff in #5124
- chore: add agent formatting hooks by @NathanFlurry in #5126
- chore: remove tracked agent working files by @NathanFlurry in #5128
- chore: remove graphite skill by @NathanFlurry in #5127
- chore(website): add runtime capabilities to on-prem Enterprise Edition pricing by @NicholasKissel in #5129
- chore: upstream ee by @NathanFlurry in #5130
- fix(types): restore repo check-types by @NathanFlurry in #5131
- fix(rivetkit): preserve connected actor action types by @NathanFlurry in #5134
- feat(frontend): redesign onboarding wizard by @NicholasKissel in #5116
- fix(frontend): fix compute rivet run url by @abcxff in #5121
- fix(frontend): onboarding prompts by @abcxff in #5122
- fix: get rid of old hub.rivet.dev references by @abcxff in #5123
- fix(ci): restore release checks by @NathanFlurry in #5159
- fix(ci): restore deploy build targets by @NathanFlurry in #5160
- fix(rivetkit-core): preserve user errors at client boundary by @NathanFlurry in #5171
- fix(rivetkit): target dynamic raw websockets by query by @NathanFlurry in #5172
- chore: remove vercel examples by @NathanFlurry in #5165
- chore: revert agent-os example changes by @NathanFlurry in #5166
- fix(rivetkit): save state before deferred sleep cleanup by @NathanFlurry in #5173
- fix(rivetkit-core): defer hibernating actions during sleep by @NathanFlurry in #5174
- chore: rename pyroscope impl module by @NathanFlurry in #5167
- chore(format): skip generated outputs by @NathanFlurry in #5168
- [SLOP(claude-opus-4-8)] docs: upstream OSS-safe docs + agent-doc guidance from EE by @NathanFlurry in #5169
- test(rivetkit): expect workflow step rollback by @NathanFlurry in #5170
- fix(frontend): getRivetRunUrl import by @abcxff in #5176
- chore: update pnpm package lockfile by @abcxff in #5177
- fix(frontend): rename DEPLOYMENT_TYPE to VITE_DEPLOYMENT_TYPE so it reaches the client bundle by @abcxff in #5185
- chore(website): redesign blog post page by @NicholasKissel in #5184
- Nathan/2.3.0 rc rollback by @MasterPtato in #5198
- chore: clean up err tracker wf, ignore silenced wf by @MasterPtato in #4979
- chore: clean up types by @MasterPtato in #4999
- feat(vbare): add conversion boilerplate generator, fix envoy protocol conversion by @MasterPtato in #5000
- chore(release): 2.3.0-rc.12 by @MasterPtato in #5207
- docs(actors): fix draceful grain timeout note by @abcxff in #5210
- refactor(depot): remove sqlite cold storage by @NathanFlurry in #5180
- fix(depot): fix migrating v1 -> v2 databases by @NathanFlurry in #5183
- docs: restructure actor state & storage docs into single high-level page by @NathanFlurry in #5204
- feat(depot): support disabling sqlite compaction via config by @NathanFlurry in #5205
- feat(rivetkit): update Rust package by @NathanFlurry in #5214
- fix(rivetkit): preserve explicit actor startup newness by @NathanFlurry in #5215
- docs: update CLAUDE.md for jj by @NathanFlurry in #5216
- chore(website): serve real 301 redirects and fix technical seo issues by @NicholasKissel in #5217
- fix(rivetkit): minor rivetkit debug changes by @jog1t in #4676
- refactor(rivetkit): move devtools to local script by @jog1t in #4669
- refactor: inspector tabs bundled with actor by @jog1t in #4670
- fix: user experience improvements for actor list by @jog1t in #5213
- refactor(dashboard): nice loading for every page by @jog1t in #5225
- feat(pricing): add Rivet Compute pricing and calculator by @NicholasKissel in #5212
- [SLOP(gpt-5)] feat(metrics): expose envoy lifecycle state gauge by @NathanFlurry in #5236
- [SLOP(gpt-5)] feat(metrics): enrich rivetkit info labels by @NathanFlurry in #5237
- [SLOP(gpt-5)] fix(run): split engine host and port env from endpoint by @NathanFlurry in #5218
- [SLOP(gpt-5)] fix(frontend): build embedded engine UI with ui base by @NathanFlurry in #5241
- fix(frontend): broken docker images by @jog1t in #5239
- fix(frontend): oss fixes and token for tabs by @jog1t in #5243
- feat(effect): Effect SDK design by @NathanFlurry in #5244
- feat:
@rivetkit/effectSDK by @IGassmann in #4703 - feat(website): porcelain redesign, Rivet Compute calculator, and marketing polish by @NicholasKissel in #5257
- [SLOP(claude-opus-4-8[1m]-medium)] docs(website): consolidate landing pages, deploy quickstarts, and docs restructuring by @NathanFlurry in #5254
- [SLOP(gpt-5)] feat(cli): add rivetkit cli by @NathanFlurry in #5255
- [SLOP(claude-opus-4-8[1m]-medium)] fix(website): fix docs styling issues by @NathanFlurry in #5261
- [SLOP(claude-opus-4-8-medium)] fix(rivetkit-wasm): add missing inspector_tabs field to ActorConfigInput conversion by @NathanFlurry in #5245
- [SLOP(claude-opus-4-8-medium)] docs(quickstart): clean up rust quickstart to import shared actor and auto-download engine by @NathanFlurry in #5246
- [SLOP(claude-opus-4-8-medium)] docs(pool-configuration): fix runner-config SDK snippet to use RivetClient from engine-api-full by @NathanFlurry in #5248
- [SLOP(claude-opus-4-8)] docs(actors): rewrite in-memory state page, remove sandbox page, fix stateSaveInterval default, forbid em dashes by @NathanFlurry in #5249
- [SLOP(claude-opus-4-8)] docs(actors): apply docs audit fixes by @NathanFlurry in #5250
- [SLOP(gpt-5)] fix(rivetkit): normalize protocol args source-side by @NathanFlurry in #5251
- [SLOP(claude-opus-4-8)] docs(examples): split effect example into hello-world-effect and chat-room-effect by @NathanFlurry in #5252
- [SLOP(claude-opus-4-8)] refactor(rivetkit): deprecate actor kv api across core and typescript by @NathanFlurry in #5253
- [SLOP(claude-opus-4-8[1m]-high)] feat(rivetkit): add cloudflare-workers and supabase platform packages by @NathanFlurry in #5256
- [SLOP(claude-opus-4-8[1m]-high)] docs(examples): wire quickstart examples, clients, and dev tools links by @NathanFlurry in #5260
- fix(cli): strip protocol from registry endpoint for Docker tags by @NicholasKissel in #5262
- fix(rivetkit): auto-spawn engine binary path on local endpoint by @NathanFlurry in #5263
- docs(actors): fix createState/conn state type errors blocking skills build by @NathanFlurry in #5265
- Website: actors hero cleanup, changelog pill restyle, /docs/connect redirect fix, hide cookbooks + comparison guides from SEO by @NicholasKissel in #5264
- Website: pricing + enterprise restructure (cloud tiers vs on-prem Enterprise Edition) by @NicholasKissel in #5266
- feat(frontend): simplify onboarding to a two-step flow by @NicholasKissel in #5259
- Website: Introducing Rivet 2.3 blog post by @NathanFlurry in #5268
- docs(releasing): fix stale promote-prod.sh path by @jog1t in #5269
- feat(rivetkit): move HTTP listener to Rust + RIVETKIT_RUNTIME_MODE env var by @abcxff in #5132
- fix(rivetkit): reject invalid runtime mode env values by @NathanFlurry in #5270
- Website: blog list changelog feed + blog/docs icon fixes by @NicholasKissel in #5271
- fix(rivetkit): stop logging benign actor-sleep aborts at error level by @abcxff in #5211
- fix(website): docs config schema text color + sidebar scroll persistence by @NicholasKissel in #5276
- refactor(rivetkit): split workflow context into WorkflowContext + WorkflowStepContext by @abcxff in #5231
- fix(rivetkit): reap registered tasks and cancel abandoned waiters to stop workflow memory leaks by @abcxff in #5232
- [SLOP(claude-opus-4-8-high)] feat(frontend): make breadcrumb name navigate and chevron open the switcher by @NicholasKissel in #5277
- [SLOP(claude-opus-4-8-high)] feat(frontend): supabase-style dashboard nav topbar by @NicholasKissel in #5279
- docs(website): introduce the Effect SDK for Rivet Actors by @NathanFlurry in #5280
- fix(frontend): inspector tabs by @jog1t in #5272
- refactor(rivetkit-core): serve inspector UI bundle from embedded memory only by @jog1t in #5273
- build(rivetkit): two-step turbo build so napi/wasm embed the built inspector UI by @jog1t in #5274
- fix(frontend): onboarding code example scroll, background, copy button by @jog1t in #5275
- style: reformat use-import ordering for rustfmt style_edition 2024 by @jog1t in #5286
- [SLOP(claude-opus-4-8-high)] feat(website): float the mobile marketing nav bar by @NicholasKissel in #5287
- fix(frontend): stop esc from opening feedback popover by @jog1t in #5288
- fix(frontend): await sign-out and bypass session cache on login redirect by @jog1t in #5290
New Contributors
- @IGassmann made their first contribution in #4703
Full Changelog: v2.2.1...v2.3.1