From ae1d18f00207f7938d0e3a49ae9232fd998077e0 Mon Sep 17 00:00:00 2001 From: deleteLater Date: Thu, 8 Oct 2026 22:48:16 +0800 Subject: [PATCH 1/2] Prepare release 1.1.10 --- README.md | 6 ++++++ release/description.md | 48 +++++++++++++++++++++++++----------------- release/package.json | 2 +- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 960d36a..0f8109e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # FeatBit Server-Side SDK for Python +> **Important upgrade notice:** Versions **1.1.8 and 1.1.9** contain a streaming +> regression that can stop flag updates after the first heartbeat, leaving +> applications evaluating cached values. Online streaming users should upgrade to +> **1.1.10** as soon as it is available and update pinned dependencies or lock files. +> See [issue #18](https://github.com/featbit/featbit-python-sdk/issues/18). + ## Introduction This is the Python Server-Side SDK for the 100% open-source feature flags management platform [FeatBit](https://github.com/featbit/featbit). diff --git a/release/description.md b/release/description.md index 34fafee..27b9a49 100644 --- a/release/description.md +++ b/release/description.md @@ -1,26 +1,36 @@ +version: 1.1.10 -version: 1.1.9 +## Important upgrade notice -## Break changes +Versions 1.1.8 and 1.1.9 contain a streaming regression: the first server +`pong` reply can close the WebSocket without reconnecting, stopping subsequent +flag updates while applications continue evaluating cached values. -- Runtime evaluation methods no longer raise `ValueError` solely because a - supplied fallback has an unsupported type. If evaluation cannot produce a - flag value, the original fallback object is returned unchanged and the SDK - logs a diagnostic message. This intentional behavior change keeps runtime - SDK failures from escaping into application request paths. +Users running online streaming mode should upgrade to 1.1.10 as soon as it is +available. Update pinned dependencies and lock files as needed. -## New features +```shell +pip install --upgrade 'fb-python-sdk>=1.1.10' +``` -- expose the stable variation ID in evaluation details -- add data-update status change listeners +## Fixes and behavior changes -## Updates +- Fix streaming stopping after the first ping/pong exchange. +- Process only `data-sync` messages; ignore other message types, including `pong`. +- Log and skip malformed JSON, invalid data-sync payloads, processing exceptions, + and unsuccessful data application without closing the WebSocket or triggering + reconnection from these message-handling paths. +- Include message contents in error logs to aid diagnosis. -- support and test CPython versions 3.13 and 3.14 -- align the supported Python range with 3.10 through 3.14 -- require urllib3 1.26.5 or newer and lower than 3 -- handle Python versions 3.12.x -- make client, WebSocket, event, and notice shutdown deterministic and idempotent -- isolate runtime event and shutdown failures from application code -- add concurrency, memory-retention, thread-lifecycle, and live-service audit tools -- exclude the test package from production wheels +These changes intentionally replace the invalid-message close behavior introduced +in 1.1.8. Skipped updates are not automatically retried by this change, and +rejected data-sync messages do not explicitly change the data-update status. + +See [issue #18](https://github.com/featbit/featbit-python-sdk/issues/18) and +[PR #19](https://github.com/featbit/featbit-python-sdk/pull/19). + +## Validation + +- Full unit test suite: 92 passed on CPython 3.12. +- Local live-service check passed: flag changes continued to reach the SDK after + the first heartbeat, with the data-update status remaining `OK`. diff --git a/release/package.json b/release/package.json index 1f9b3b1..1ef9f24 100644 --- a/release/package.json +++ b/release/package.json @@ -1,3 +1,3 @@ { - "version":"1.1.9" + "version":"1.1.10" } From 578a9523b702be09303043b7d46d12b9f03d7fce Mon Sep 17 00:00:00 2001 From: deleteLater Date: Thu, 8 Oct 2026 23:07:58 +0800 Subject: [PATCH 2/2] Simplify release notes --- release/description.md | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/release/description.md b/release/description.md index 27b9a49..d590c76 100644 --- a/release/description.md +++ b/release/description.md @@ -1,36 +1,7 @@ -version: 1.1.10 +## Bug Fixes -## Important upgrade notice +- Fix a streaming regression introduced in 1.1.8 where flag updates stopped shortly after startup, leaving applications evaluating stale values. Flag updates now continue normally. (#18, #19) -Versions 1.1.8 and 1.1.9 contain a streaming regression: the first server -`pong` reply can close the WebSocket without reconnecting, stopping subsequent -flag updates while applications continue evaluating cached values. +Users running online streaming mode with **1.1.8 or 1.1.9** should upgrade to **1.1.10** as soon as it is available and update pinned dependencies or lock files as needed. -Users running online streaming mode should upgrade to 1.1.10 as soon as it is -available. Update pinned dependencies and lock files as needed. - -```shell -pip install --upgrade 'fb-python-sdk>=1.1.10' -``` - -## Fixes and behavior changes - -- Fix streaming stopping after the first ping/pong exchange. -- Process only `data-sync` messages; ignore other message types, including `pong`. -- Log and skip malformed JSON, invalid data-sync payloads, processing exceptions, - and unsuccessful data application without closing the WebSocket or triggering - reconnection from these message-handling paths. -- Include message contents in error logs to aid diagnosis. - -These changes intentionally replace the invalid-message close behavior introduced -in 1.1.8. Skipped updates are not automatically retried by this change, and -rejected data-sync messages do not explicitly change the data-update status. - -See [issue #18](https://github.com/featbit/featbit-python-sdk/issues/18) and -[PR #19](https://github.com/featbit/featbit-python-sdk/pull/19). - -## Validation - -- Full unit test suite: 92 passed on CPython 3.12. -- Local live-service check passed: flag changes continued to reach the SDK after - the first heartbeat, with the data-update status remaining `OK`. +**Full Changelog**: https://github.com/featbit/featbit-python-sdk/compare/v1.1.9...v1.1.10