Releases: featbit/featbit
v3.3.3
What's Changed
- 📖 doc: Added React SDK link in Readme. by @cosmic-flood in #636
- 🐛 fix: fixed date formatting bug by @cosmos-explorer in #638
- 🧹 refactor: change hour format when displaying date by @cosmos-explorer in #639
Full Changelog: 3.3.2...3.3.3
v3.3.2
What's Changed
- 🖍 style: fix account menu style by @deleteLater in #634
- 🧹 chore: update social login hint by @deleteLater in #633
- 🧹 refactor: align get client feature flags API with streaming response format by @cosmos-explorer in #635
- ✨ feat: global users by @deleteLater in #631
Breaking changes
The API used to retrieve client-side feature flags has a new response format due to changes in pull request #635. This may affect existing integrations that rely on the previous format.
Old Format
[
{
"id":"hello-world",
"variation":"true",
"variationType":"boolean",
"variationId":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"sendToExperiment":false
}
]
New Format
{
"messageType":"data-sync",
"data":{
"eventType":"full",
"userKeyId":"bot-id",
"featureFlags":[
{
"id":"hello-world",
"variation":"true",
"variationType":"boolean",
"variationId":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"matchReason":"flag disabled",
"variationOptions":[
{
"id":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"value":"true"
},
{
"id":"3f02a597-a150-4c3f-83b9-27a2de80c7dc",
"value":"false"
}
],
"sendToExperiment":false,
"timestamp":1712755780494
}
]
}
}
Full Changelog: 3.3.1...3.3.2
v3.3.1
What's Changed
- 🧹 chore: add more redis populating logs by @deleteLater in #615
- 🐛 fix: If the variation name is not short, can't see the full name. by @qixiaojian310 in #616
- 📖 doc: Add awsmfoss certification badge in README.md by @cosmic-flood in #617
- 🖍 style: improve variation item style by @deleteLater in #619
- 🐛 fix: ui is blank if workspaceId is invalid by @deleteLater in #618
- ✨ feat: resource finder by @deleteLater in #620
- 🖍 fix: select organization style by @deleteLater in #624
- ✨ feat: add
variationId
andsendToExperiment
field to get client feature flags API by @cosmos-explorer in #614 - ✨ feat: allow user to use Google and Github to login by @cosmos-explorer in #627
- ✨ feat: add flag key regex validation by @deleteLater in #628
- 🧹 chore: ignore data inconsistent environment when populating secrets cache by @deleteLater in #629
Breaking Change in API Service
- Background: In PR #623 we upgraded some packages to address vulnerabilities. However the new version of
System.IdentityModel.Tokens.Jwt
package introduces a breaking change. - Impact: JWT key (environment variable: Jwt__Key) in the API service now must be longer than 32 characters.
Full Changelog: 3.3.0...3.3.1
v3.3.0
What's Changed
- 🧹 refactor: enhance store availability check by @deleteLater in #602
- ✨ feat: Add ClientHost, ClientIP, EnvId to eval server logs by @wss-alubic in #605
- ✨ feat: add secret cache by @deleteLater in #606
- 🧹 refactor: enhance secret check by @deleteLater in #609
- ✨ feat: allow client SDKs to get incremental flag changes by API by @cosmos-explorer in #613
- 🚀 perf: add store availablility check sentinel by @deleteLater in #610
- 🚀 perf: sampling end user messages by @deleteLater in #612
Breaking Changes
We normalize redis cache keys in PR #603, So after upgrading to v3.3.0, you will need to
- restart the Api service to automatically repopulate the new Redis cache
As for cleaning up the old Redis cache, check out this comment. If you have any questions, feel free to contact us for assistance.
New Contributors
- Thanks for @wss-alubic made his first contribution in #605 ❤️
Full Changelog: 3.2.1...3.3.0
v3.2.1
What's Changed
- 🧹 refactor: unify otel configuration environment variables by @deleteLater in #588
- 📖 doc: add otel integration link by @deleteLater in #589
- 🐛 fix: serilog otel integration by @deleteLater in #590
- 🐛 fix: date formatting in experimentation UI to conform with date-fns by @wss-rbrennan in #592
- 🐛 fix: date formatting in remote config UI to conform with date-fns by @cosmos-explorer in #593
- 📖 doc: add LinkedIn link by @cosmic-flood in #596
- 🐛 fix: when operation is selected, property cannot be selected. by @qixiaojian310 in #583
- 🐛 fix: da-server otel integration by @dsun0720 in #595
- 📖 doc: fix typos by @omahs in #600
- 🧹 refactor: restructure get
currentUserProp
method by @deleteLater in #601
New Contributors
Full Changelog: 3.2.0...3.2.1
v3.2.0
What's Changed
- 📖 doc: add integration links by @cosmic-flood in #572
- 📖 doc: add SDK links by @cosmic-flood in #573
- 🧹refactor: remove the CommonJS warning of moment.js by @qixiaojian310 in #575
- 🖍 styling: adjust the select layout when choose "is one of" in "select operation" by @qixiaojian310 in #578
- 🐛 fix: broken links in UI by @deleteLater in #581
- 🐛 fix: profile menu link by @deleteLater in #585
- ✨ feat: otel integration for backend services by @deleteLater in #584
🎉🎉 Big thanks to @wss-rbrennan for his contribution to the backend services otel integration in PR #584
New Contributors
- Thanks for @qixiaojian310 made his contribution in #575 #578 ❤️
Full Changelog: 3.1.0...3.2.0
v3.1.0
What's Changed
- 🏗 infra: refactor publish-docker-images.yml by @deleteLater in #549
- 🖍 style: add space around flag name by @cosmos-explorer in #551
- ✨ feat: add timestamp filter when getting server side flags and segments by @cosmos-explorer in #556
- 📖 doc: add environment variables for api and evaluation server by @deleteLater in #557
- 🏗 infra: replace REDIS_URL with REDIS_HOST, REDIS_PORT, REDIS_DB by @deleteLater in #555
- 🐛 fix: broken links in get-started page by @deleteLater in #554
- 🖍 style: fix string input style by @deleteLater in #558
- ✨ feat: webhooks by @deleteLater in #533
- ✨ feat: add instruction desctiptor by @deleteLater in #559
- ✨ feat: allow live debugging a webhook by @deleteLater in #561
- ✨ feat: webhook logs by @deleteLater in #562
- ✨ feat: add webhook change description by @deleteLater in #563
- 🖍 style: show webhook delivery time with seconds by @deleteLater in #566
- 🐛 fix: inactive webhooks shouldn't be called by @deleteLater in #567
- ✨ feat: added Node.js instructions to get started page by @cosmos-explorer in #560
- 🐛 fix: run webhook asynchronously by @deleteLater in #569
Full Changelog: 3.0.1...3.1.0
v3.0.1
What's Changed
- 📖 doc: fix broken links in README.md by @deleteLater in #546
- 🏗 infra: support set redis password for services by @dsun0720 in #545
- 🏗 infra: build latest image only if github action runs from main branch by @deleteLater in #547
- 🐛 fix: add missing REDIS_DB parameter by @dsun0720 in #548
Full Changelog: 3.0.0...3.0.1
v2.5.3
Breaking Changes
Full Changelog: 2.5.2...2.5.3
v3.0.0
What's Changed
- 🧹 refactor: rename account to organization by @cosmos-explorer in #530
- 📖 doc: add usage survey by @cosmic-flood in #544
- ✨ feat: workspace by @cosmos-explorer in #534
- 🖍 style: unify nz-select style by @cosmos-explorer in #543
Breaking Changes
- Introduce
Workspace
in PR #534, which is a higher level of organization - Rename account to organization to avoid misconception in PR #530
If you're upgrading from version 2.5.x, please run the following script against your MongoDB:
// PR #534
const workspaceId = UUID()
db.Workspaces.deleteMany({})
db.Workspaces.insertOne(
{
_id: workspaceId,
name: "Default Workspace",
key: "default-workspace",
sso: null,
license: null,
createdAt: new Date(),
updatedAt: new Date()
}
);
const orgCursor = db.Organizations.find({});
orgCursor.forEach(doc => {
db.Organizations.updateOne({ _id: doc._id }, { $set: { workspaceId: workspaceId } });
});
const userCursor = db.Users.find({});
userCursor.forEach(doc => {
db.Users.updateOne({ _id: doc._id }, { $set: { workspaceId: workspaceId } });
});
// PR #530
const policyCursor = db.Policies.find({ "statements.resourceType": "account" });
policyCursor.forEach(doc => {
doc.statements.forEach(statement => {
if (statement.resourceType === "account") {
statement.resourceType = "organization";
statement.resources = statement.resources.map(resource => resource.replace(/^account\//, "organization/"));
}
});
db.Policies.updateOne({ _id: doc._id }, { $set: { statements: doc.statements } });
});
Full Changelog: 2.5.2...3.0.0