Skip to content

v2.3.0

Latest

Choose a tag to compare

@bucketeer-release-bot bucketeer-release-bot released this 31 Jul 05:40
ee7a093

2.3.0 (2026-07-31)

Features

  • add ai recommend chat (#2441) (12ce9f5)
  • add domain event-driven redis cache eviction via subscriber service (#2542) (887d055)
  • add multi-layer caching with domain event invalidation for feature flags and segment users (#2529) (cd3ec5a)
  • add search filter for auto operations (#2507) (0d0ec08)
  • add variation value schema persistence (#2578) (3fc0c55)
  • add workflow to trigger ai-docs-update on issue close (#2472) (7567fba)
  • bulk flag duplication across envs (#2527) (d68ac60)
  • calculator: add sample ratio mismatch (srm) detection (#2655) (5060547)
  • calculator: add sequential bayes factor stopping rule for always-valid inference (#2664) (aedaadc)
  • calculator: winsorize per-user goal values at p99 before dwh aggregation (#2661) (98e8c22)
  • implement onboard walkthrough for new user (#2712) (5b475f6)
  • implement postgres for account svc (#2593) (dabe25c)
  • implement postgres for audit log service (#2589) (064b3c2)
  • implement postgres for autoops service (#2625) (9ffcf3d)
  • implement postgres for coderef service (#2606) (4236565)
  • implement postgres for environment svc (#2595) (1a44fd6)
  • implement postgres for eventcounter svc (#2627) (e2e043a)
  • implement postgres for experiment svc (#2633) (6c010c6)
  • implement postgres for feature last used info svc (#2587) (aa8a8a5)
  • implement postgres for feature service (#2575) (2dd2ade)
  • implement postgres for flag trigger svc (#2584) (c23fcac)
  • implement postgres for insight svc (#2635) (a6d9a45)
  • implement postgres for notification svc (#2636) (6b0bbf0)
  • implement postgres for ops event (#2608) (9282cec)
  • implement postgres for scheduled feature change svc (#2642) (8f5e017)
  • implement postgres for segment APIs (#2576) (901ae41)
  • implement postgres for subscribers and refactor dwh layer (#2650) (6f54019)
  • implement postgres for tag svc (#2583) (a6eb084)
  • implement postgres query builder (#2540) (0a6cfab)
  • implement postgres storage for push svc (#2569) (22a8a92)
  • implement postgreSQL as data warehouse option (#2300) (291212c)
  • implement priority class option to chart manifest (#2428) (76af04b)
  • implement update admin notification (#2721) (c946f12)
  • init postgres migration and helm chart, compose config (#2426) (0acd4ee)
  • insights: add 2 and update 1 Prometheus metrics (#2389) (512491b)
  • insights: add a daily batch of MAU (#2443) (96b1145)
  • insights: add Prometheus request count to monthly summary batch (#2444) (79e9e27)
  • insights: add SQL of creating monthly_summary (#2392) (1173b25)
  • insights: count DAU in APIs (#2391) (41bba3d)
  • insights: count DAU in evaluation_count_event_persister (#2437) (7007184)
  • insights: defined the proto (#2390) (82f2bec)
  • insights: impl 5 APIs (#2448) (0b834a3)
  • map synonym to improve correction (#2598) (3a9ddea)
  • notification: add notification center proto contract and service skeleton (#2690) (8d5009f)
  • notification: add notification center table migrations (#2697) (d938a4f)
  • notification: implement CreateNotification API (#2708) (b2d62d1)
  • notification: implement DeleteAdminNotification API (#2731) (d996382)
  • notification: implement ListDraftAdminNotifications API (#2710) (e4f88c1)
  • notification: implement PublishAdminNotification API (#2733) (23b90bb)
  • obfuscate API key in the UI console (#2463) (726f105)
  • postgres implementation for team (#2637) (60923b6)
  • realtime-sync: add SSE stream evaluations messages (#2592) (4d9350f)
  • remove command layer and redundant API in feature package (#2393) (6b3e5cc)
  • show relative lift and make the confidence banner metric-aware (#2658) (029e842)
  • split has_auto_ops filter into active and finished (#2616) (df2926b)
  • sse: implemented the evaluation logic and add 7 metrics (#2665) (f1bc1f0)
  • sse: prepare the fan-out dispatcher (#2630) (74b9f52)
  • stream: add Envoy circuit breaker and connection budget for SSE (#2698) (b9b0e4f)
  • stream: add graceful shutdown for SSE connections (#2675) (eeed7f2)
  • stream: add per-pod SSE connection limit (#2676) (20c6ad2)
  • stream: add SSE connection-based HPA for api gateway (#2699) (ac86505)
  • stream: add SSE-dedicated service and timeout config for streaming (#2688) (72ded5e)
  • stream: propagate prerequisite-dependent tags in SSE dispatch (#2679) (5cae4cc)
  • support for 3 or more variation when using progressive rollout (#2199) (2a54dc3)
  • support rule-based user segments (#2723) (28f1eb0)
  • support rules reorder (#2517) (21a0284)
  • system admin account have read only permission (#2550) (bbd5354)
  • ui/dashboard: add auto-archive settings to environment management (#2318) (d62bceb)
  • ui/dashboard: add comprehensive change summary to confirmation dialog (#2147) (e165394)
  • ui/dashboard: implement ui insight dashboard page (#2450) (3cf7a6f)
  • ui/dashboard: improve the URL to enable to copy (#2522) (967ed51)
  • ui/dashboard: improvement progress rollout ui/ux (#2351) (e1c3eb6)
  • ui: add drag-and-drop reordering for segment rules (#2581) (0fd8357)
  • ui: add recurring setting to schedule auto operation (#2494) (176734c)
  • ui: add reorder discard change (#2537) (b521792)
  • ui: designate primary goal and drive experiment verdict from it (#2668) (1a0e597)
  • ui: implement infinite loading for feature flags dropdown (#2362) (0dca8d7)
  • ui: implement sequential bayes factor confidence banner (#2666) (235c931)
  • ui: infinite loading for the organization settings (#2541) (e7feab9)
  • ui: surface sample ratio mismatch (srm) check on the experiment results page (#2656) (f6918ed)

Bug Fixes

  • add grace window to feature flag diff filter to prevent partial-diff trap (#2621) (d4adf72)
  • add scheduled_feature_change to delete-e2e-data-mysql (#2407) (c0100e1)
  • add subscription cleanup on shutdown and expiration policy for cache invalidator (#2532) (43358d6)
  • allow service tokens to bypass system admin read-only restriction (#2610) (b08d1ee)
  • calculator: correct normal-inverse-gamma posterior update for value metrics (#2639) (2c5e15f)
  • calculator: derive normal-inverse-gamma priors from observed data (empirical bayes) (#2651) (86efabd)
  • copy srm result from json blob in operational-db read storage (#2657) (425be4b)
  • default value count not being incremented when using detailed error types (#2398) (a03b249)
  • devcontainer: deadlock error when using bigquery emulator (#2505) (1217e8a)
  • devcontainer: make httpstan docker targets idempotent (#2370) (eceb033)
  • dropdown select date range (#2394) (8b503fd)
  • e2e: remove GET method test case from stream request errors (#2696) (365e1ec)
  • eventcounter: deduplicate events by ID in BigQuery count queries (#2738) (479cd30)
  • feature: persist failed status when scheduled flag change execution fails (#2709) (c6e3d7b)
  • force full payload when GetFeatureFlags diff filter would be empty (#2612) (01b08a6)
  • include UNKNOWN sdk (#2585) (3770e0a)
  • insighst: use longer writeTimeout for batches (#2489) (de3d407)
  • insights: set longer writeTimeout in batch gateway (#2492) (b95697b)
  • insights: use recordingRule in batch (#2484) (7561930)
  • make redis non-blocking for graceful degradation (#2440) (1499d50)
  • persist create-time schedule conflicts and add granular rule clause summaries (#2420) (ac87b11)
  • pipecd unable to run helm template, missing configuration (#2410) (927331e)
  • postgres can't resolve output column aliases in list features (#2588) (adb1995)
  • prevent cache-miss thundering-herd cancellation in gateway service (#2551) (2c64b50)
  • prevent sdk cache staleness caused by requestedAt advancement in none responses (#2462) (a27b058)
  • progressive rollout watcher to skip stopped/finished rollouts (#2382) (b1d05b9)
  • publish segment domain events after commit to prevent stale cache refresh (#2740) (945f0ed)
  • remove sourceIds of req=0 for 12Months (#2535) (f57a398)
  • resolve tar race condition vulnerability (CVE-2026-23950) (#2365) (c07e57a)
  • rest: skip logging for HTTP redirect responses (#2663) (728e319)
  • scope cross-flag conflict detection to actual dependencies and add recovery helpers (#2417) (75f7916)
  • segment e2e failed after switch to no command API (#2363) (72146e4)
  • set longer writeTimeout for longer batches (59318b4)
  • stream: prevent buffer overflow in SSE streaming middleware (#2684) (0faf970)
  • stream: set SSE circuit breaker maxPendingRequests to 100 (#2730) (0cdd20e)
  • subscriber preserve "id" attribute on reclaimed redis stream messages (#2618) (04aac8f)
  • subscriber: discard goal events older than the user's latest evaluation (#2734) (6afb699)
  • subscriber: retain in-memory buffers when periodic writes fail (#2736) (054d068)
  • system admin can't see other envs if it's a member (#2601) (10496ef)
  • tighten pdb selectors to exclude job-owned pods (#2599) (a7eedbb)
  • treat pub/sub not found error as ok when deleting cache invalidator subscription (#2549) (4e374d5)
  • ui/dashboard: fix auto-archive custom days value being reset on modal reopen (#2396) (d5875e3)
  • ui/dashboard: unsaved leave page switch organization and environment (#2447) (7d4b391)
  • ui/insights: formatLatency ms (#2523) (cf8e348)
  • ui/insights: reset SDK filter when switching environments (#2536) (ae3ed7f)
  • ui: auto-generation id stops working after 2 characters (#2622) (5fbd407)
  • ui: auto-invalidate react query cache on mutations to prevent stale data (#2624) (fe7f8a1)
  • ui: coerce boolean URL params to prevent silent filter inversion (#2531) (24874ae)
  • ui: copy button stays disabled after discarding the changes (#2594) (f93cc23)
  • ui: correct split-equally weights and show variation allocation bar (#2643) (9b7d73b)
  • ui: fix stale featureRef, uuid mismatch, and rollout weight unit in segment rule targeting (#2582) (9c0a88c)
  • ui: improve insights dashboard env default and chart y-axis (#2525) (8a79729)
  • ui: prevent infinite 401 retry loop in axios interceptor (#2452) (e1a2495)
  • ui: recurring schedule update not recalculating nextExecutionAt (#2519) (4aeb0b5)
  • ui: remove schedule option from flag switch confirmation modal (#2486) (b42ee18)
  • ui: render archive warning interpolation (#2678) (e9a806a)
  • ui: replace nested button with span in tooltip triggers on create flag page (#2571) (0e20eaa)
  • ui: resolve console warnings on targeting page (#2372) (e96c651)
  • ui: show correct cycle dates in recurring schedule timeline (#2515) (f32eb6f)
  • ui: show correct modal for stop/delete operations by type (#2483) (80dd23a)
  • ui: update now option is scheduling instead of updating immediately (#2481) (a2d4d90)
  • ui: use variation name as label in evaluation chart for YAML/JSON types (#2573) (6b464ac)
  • use resilient token source for google pub/sub to survive spot preemption (#2545) (89e6002)

Miscellaneous

  • add conflict detection for scheduled flag changes (#2405) (dbac468)
  • add debug logs for sdk internal errors (#2379) (568abca)
  • add recurring schedule proto definitions and domain logic (#2465) (43d8032)
  • add recurring schedule support to DatetimeWatcher and api service (#2469) (5045124)
  • add scheduled flag change executor and cross-flag conflict detection (#2406) (781184f)
  • add scheduled flag changes proto definitions and api stubs (#2368) (1923f90)
  • add scheduled flag changes ui (#2414) (a3b7790)
  • add scope label to feature flag cacher metrics (#2380) (8f38996)
  • add storage layer for scheduled flag changes (#2374) (c129d56)
  • change default auto-archive unused days from 90 to 60 (#2460) (694dc77)
  • ci: add --frozen-lockfile in 'yarn install' (#2543) (5134afc)
  • create hack script to create service account for e2e (#2559) (832e73c)
  • devcontainer: add dynamic hack tool dependency tracking (#2419) (8fe10fd)
  • devcontainer: add SSH server to devcontainer base image (#2704) (c217029)
  • devcontainer: remove unused files (#2705) (253f70d)
  • double error check in get evaluation (#2400) (e133a5c)
  • downgrade cache invalidator shutdown logs to debug (#2563) (c9e06c0)
  • drop unused mau and mau_summary tables (#2424) (adf9761)
  • enforce homogeneous schedule types per operation (#2491) (49c77c6)
  • evaluation: remove gRPC requests and reduce the release package size. (#2431) (74d1ec4)
  • evaluation: update typescript evaluation version to 0.0.7 (#2359) (ab72a0e)
  • hack: update delete redis retry keys app (#2458) (c3c8e11)
  • ignore sdk cache not found warning logs (#2526) (9165b13)
  • implement delete e2e data for postgres (#2659) (8749e79)
  • implement delete postgres data warehouse data (#2660) (b8f7c64)
  • implement scheduled flag change API handlers (#2375) (5f43fe9)
  • improve flag cache update delay when executing auto operations (#2376) (b6713b7)
  • improve scheduled change summaries with segment and cross-flag names (#2422) (dd27215)
  • init Claude context window for auto memory (#2546) (2f7b6f3)
  • init database dump, fix pg host and global yaml config (#2568) (48d78dc)
  • insights: add local prometheus for E2E (#2524) (888edb7)
  • insights: rename the DAU/MAU key (#2442) (d42f42b)
  • make big query optional in minikube (#2435) (860de2f)
  • metrics: collect prometheus error metric for batch jobs/subscriber (#2626) (5c29e30)
  • refresh L2 caches on domain events to eliminate cache-miss thundering herd (#2562) (65d3548)
  • regenerate service token for local development (#2611) (c5ac44e)
  • remove empty environment id migration code (#2459) (13b5577)
  • remove logging of sensitive information (#2490) (ee2b047)
  • remove unnecessary warning logs from api svc (#2554) (7e28980)
  • remove unused mau and mau_summary implementation (#2425) (a18f233)
  • remove user event persisters (upsert maus) (#2653) (f708382)
  • replace deprecated ingress k8s config (#2456) (bc7e69d)
  • replace ptypes with google.golang.org/protobuf (#2493) (3014b6b)
  • switch local image to timescale db (#2436) (1d3f0f4)
  • ui: add typeScript types, api hooks, and i18n for scheduled flag changes (#2409) (1c125ad)
  • ui: enhance flag creation with template tooltips and smart defaults (#2479) (5c518db)
  • ui: implement infinite loader for filter maintainer dropdown (#2560) (2600de0)
  • ui: improve targeting tab UX with evaluation flow indicators (#2488) (3003662)
  • ui: improve variation dropdown display and validation error messages (#2500) (bcbb169)
  • ui: visualize targeting evaluation order with a vertical flow (#2644) (5045a6b)
  • use updated_at for server sdk feature hash to match client sdk (#2383) (62e9f60)
  • validate variation values against schema (#2683) (10d82c8)

Performance Improvements

  • bound metrics event processing with a worker pool (#2564) (849ff1f)
  • optimize evaluation count persistence with aggregation (#2449) (04de7e6)
  • use in-memory cache for environment API key lookups (#2520) (d644360)

Reverts

Build System

  • deps-dev: bump @babel/core in /evaluation/typescript (#2647) (f46f50e)
  • deps-dev: bump postcss from 8.5.15 to 8.5.18 in /ui/dashboard (#2726) (c67d591)
  • deps-dev: bump postcss from 8.5.8 to 8.5.10 in /ui/dashboard (#2558) (b652653)
  • deps-dev: bump svgo from 3.3.2 to 3.3.3 in /ui/dashboard (#2438) (1232279)
  • deps-dev: bump svgo from 3.3.3 to 3.3.4 in /ui/dashboard (#2713) (a415c5a)
  • deps-dev: bump vite from 7.3.1 to 7.3.2 in /ui/dashboard (#2516) (25f3839)
  • deps-dev: bump vite from 7.3.3 to 7.3.5 in /ui/dashboard (#2645) (b33654c)
  • deps-ui: upgrade React to v19 and React Router to v7 (#2502) (17fd2a5)
  • deps: bump @babel/core from 7.29.0 to 7.29.7 in /ui/dashboard (#2649) (ff185c8)
  • deps: bump @babel/plugin-transform-modules-systemjs (#2570) (1616cf6)
  • deps: bump axios from 1.12.0 to 1.13.5 in /ui/dashboard (#2399) (2b3e389)
  • deps: bump axios from 1.14.0 to 1.15.0 in /ui/dashboard (#2533) (76fad2c)
  • deps: bump axios from 1.15.2 to 1.16.0 in /ui/dashboard (#2602) (932fa91)
  • deps: bump axios from 1.16.1 to 1.18.0 in /ui/dashboard (#2706) (463f502)
  • deps: bump benc-uk/workflow-dispatch in the dependencies group (#2603) (68b4bc5)
  • deps: bump diff from 5.2.0 to 5.2.2 in /ui/dashboard (#2361) (1aa6c17)
  • deps: bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 (#2415) (d6134ce)
  • deps: bump filippo.io/edwards25519 in /hack/delete-e2e-data-mysql (#2416) (3e1a048)
  • deps: bump flatted from 3.3.3 to 3.4.2 in /evaluation/typescript (#2471) (9a122ce)
  • deps: bump flatted from 3.3.3 to 3.4.2 in /ui/dashboard (#2470) (4ad402a)
  • deps: bump follow-redirects in /ui/dashboard (#2538) (a4df7df)
  • deps: bump form-data from 4.0.5 to 4.0.6 in /ui/dashboard (#2648) (1528290)
  • deps: bump github.com/slack-go/slack from 0.21.0 to 0.23.1 (#2579) (6c9e6a2)
  • deps: bump go.opentelemetry.io/otel (#2557) (b5e3e4c)
  • deps: bump golang.org/x/crypto (#2693) (b6f7adc)
  • deps: bump golang.org/x/crypto in /hack/create-e2e-accounts (#2692) (0d73975)
  • deps: bump golang.org/x/crypto in /hack/delete-e2e-data-mysql (#2695) (8672ae8)
  • deps: bump golang.org/x/crypto in /hack/delete-e2e-data-postgres (#2694) (edfd637)
  • deps: bump golang.org/x/net in /hack/delete-e2e-data-mysql (#2681) (9be57f4)
  • deps: bump golang.org/x/net in /hack/delete-redis-retry-keys (#2682) (04eab89)
  • deps: bump google.golang.org/grpc (#2467) (ff1de07)
  • deps: bump google.golang.org/grpc (#2715) (1a9de21)
  • deps: bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#2468) (451e0f9)
  • deps: bump google.golang.org/grpc from 1.82.0 to 1.82.1 (#2717) (e1180c6)
  • deps: bump google.golang.org/grpc in /hack/delete-e2e-data-mysql (#2466) (cab2570)
  • deps: bump i18next-http-backend in /ui/dashboard (#2553) (261351a)
  • deps: bump js-cookie from 3.0.5 to 3.0.7 in /ui/dashboard (#2590) (73afedc)
  • deps: bump js-yaml from 4.1.1 to 4.2.0 in /evaluation/typescript (#2646) (7dd5105)
  • deps: bump js-yaml from 4.2.0 to 4.3.0 in /evaluation/typescript (#2718) (e1002ab)
  • deps: bump js-yaml from 4.2.0 to 4.3.0 in /ui/dashboard (#2716) (3353ba9)
  • deps: bump lodash from 4.17.21 to 4.17.23 in /ui/dashboard (#2366) (7b61d86)
  • deps: bump lodash from 4.17.21 to 4.18.1 in /ui/dashboard (#2508) (0ccc1bb)
  • deps: bump lodash in /evaluation/typescript (#2367) (c15769b)
  • deps: bump lodash in /evaluation/typescript (#2509) (51582eb)
  • deps: bump minor dependencies (#2498) (1556228)
  • deps: bump react-router from 7.16.0 to 7.18.0 in /ui/dashboard (#2714) (b635b7b)
  • deps: bump rollup from 4.45.1 to 4.59.0 in /ui/dashboard (#2430) (7f74051)
  • deps: bump shell-quote in /evaluation/typescript (#2629) (16e4512)
  • deps: bump shell-quote in /evaluation/typescript (#2719) (bf965df)
  • deps: bump the dependencies group (#2567) (b29fc5d)
  • deps: bump the dependencies group (#2605) (2e2c243)
  • deps: bump the dependencies group across 1 directory with 20 updates (#2596) (6c93366)
  • deps: bump the dependencies group across 1 directory with 33 updates (#2724) (ee2fd9f)
  • deps: bump the dependencies group across 1 directory with 5 updates (#2511) (9e1f606)
  • deps: bump the dependencies group in /ui/dashboard with 7 updates (#2513) (8a8695b)
  • deps: bump the dependencies group with 10 updates (#2604) (bc64be9)
  • deps: bump the dependencies group with 12 updates (#2512) (8ee6bc0)
  • deps: bump the dependencies group with 13 updates (#2671) (06cfaea)
  • deps: bump the dependencies group with 14 updates (#2386) (e3593c6)
  • deps: bump the dependencies group with 17 updates (#2729) (f5e0809)
  • deps: bump the dependencies group with 21 updates (#2433) (8725a0c)
  • deps: bump the dependencies group with 21 updates (#2497) (0e9f119)
  • deps: bump the dependencies group with 3 updates (#2728) (39a5c87)
  • deps: bump the dependencies group with 4 updates (#2432) (914f043)
  • deps: bump the dependencies group with 4 updates (#2565) (b39eb15)
  • deps: bump the dependencies group with 4 updates (#2670) (e8d9dab)
  • deps: bump the dependencies group with 6 updates (#2385) (44637bb)
  • ui: bump uuid from 10.0.0 to 14.0.0 (#2555) (fd416c5)