1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-08-04 13:48:56 +02:00
Commit Graph

14155 Commits

Author SHA1 Message Date
Gastón Fournier
0f565c50e9
feat: rebrand sdk tokens and sdk types (#10430)
## About the changes
Rebrand SDK tokens and SDK types to make it easier to onboard and use:

**Backend SDK Token**: Intended for server-side SDKs. It can be used to
access:

- The Client Features API (/api/client/features) for fetching all flag
configurations for local evaluation.
- The Frontend API (/api/frontend) for remote evaluation.

**Frontend SDK Token**: Intended for client-side/frontend SDKs. It is
restricted and can only be used to access:

- The Frontend API (/api/frontend) for remote evaluation.

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2025-07-30 10:24:40 +02:00
Gastón Fournier
3479aa8b2c
docs: change absolute url to relative (#10432)
This makes it easier to navigate inside the preview site (cause it stays
in the preview instead of jumping to the docs website), and it also
helps detecting broken links if we change the landing page (since the
one in docs.getunleash.io will still exist).
2025-07-29 18:20:15 +02:00
unleash-bot[bot]
7830fbb75f
chore(AI): eventGrouping flag cleanup (#10428) 2025-07-29 15:20:10 +03:00
Gastón Fournier
7479720f58
chore: better logging of failed tokens (#10425)
When querying invalid tokens we might catch them for a while to reduce
database load. Being able to identify the token can help understanding
what's going on or the client using that token

Log looks like:
```
[INFO] /services/api-token-service.ts - Token default:development.3ef3... rate limited until: Tue Jul 29 2025 09:53:47 GMT+0000 (Coordinated Universal Time)
```
2025-07-29 12:48:41 +02:00
Thomas Heartman
d48d1df095
test: Ensure that timestamps in future states aren't shown (#10426) 2025-07-29 12:36:57 +02:00
renovate[bot]
7950b8c5bc
chore(deps): update dependency superagent to v10.2.2 (#10422)
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [superagent](https://redirect.github.com/ladjs/superagent) | [`10.2.1`
-> `10.2.2`](https://renovatebot.com/diffs/npm/superagent/10.2.1/10.2.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/superagent/10.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/superagent/10.2.1/10.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ladjs/superagent (superagent)</summary>

###
[`v10.2.2`](https://redirect.github.com/forwardemail/superagent/releases/tag/v10.2.2)

[Compare
Source](https://redirect.github.com/ladjs/superagent/compare/v10.2.1...v10.2.2)

- fix: fixed ci
[`5c2b13d`](https://redirect.github.com/ladjs/superagent/commit/5c2b13d)
- fix: fixed README badge
[`28167d1`](https://redirect.github.com/ladjs/superagent/commit/28167d1)
- fix: drop node v14 from ci
[`2ed5ac6`](https://redirect.github.com/ladjs/superagent/commit/2ed5ac6)
- Revert "fix: fixed ci"
[`583939f`](https://redirect.github.com/ladjs/superagent/commit/583939f)
- Revert "fix: remove husky folder"
[`17e059b`](https://redirect.github.com/ladjs/superagent/commit/17e059b)
- fix: remove husky folder
[`1633f64`](https://redirect.github.com/ladjs/superagent/commit/1633f64)
- fix: fixed ci
[`6409480`](https://redirect.github.com/ladjs/superagent/commit/6409480)
- fix: added package lock
[`57d6b35`](https://redirect.github.com/ladjs/superagent/commit/57d6b35)
- feat: fix formidable v3 compatibility with PassThrough bridge for
multipart parsing
[`c40db6d`](https://redirect.github.com/ladjs/superagent/commit/c40db6d)
- fix: fixed package version
[`fe58239`](https://redirect.github.com/ladjs/superagent/commit/fe58239)

***

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40My41IiwidXBkYXRlZEluVmVyIjoiNDEuNDMuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 10:29:02 +00:00
Thomas Heartman
663f30c8db
feat: Timeline for cancelled CRs (#10421)
Shows the cancelled state in the timeline for cancelled CRs. Extracts
steps into a separate file.

Also, if timestamps are present, it will dynamically show the steps we
have times for for rejected and cancelled CRs.

If we do not have timestamps, it'll use the old behavior for displaying
rejected steps, but does add a new one for cancelled steps, which
includes 'Draft', 'In review', 'Approved', 'Cancelled'.

CRs can be cancelled after:
- In review
- Approved

CRs can be rejected after:
- In review
- Schedule

For other states, use the existing steps. Cancelled and Rejected are
both terminal states, so there's no future steps to show.

Regardless of what we have timestamps for, always show 'Draft', 'In
review' and the final state (Rejected | Cancelled).

## Gallery

Cancellations
<img width="381" height="241" alt="image"
src="https://github.com/user-attachments/assets/a6af70c5-ef09-4aeb-ae53-0e3ff4b25446"
/>


<img width="396" height="320" alt="image"
src="https://github.com/user-attachments/assets/699c2594-8c0c-44d9-bf50-22a8bdda3d00"
/>


Rejections 
<img width="397" height="244" alt="image"
src="https://github.com/user-attachments/assets/20887a23-e453-49ce-bc5c-738ba4180868"
/>


<img width="388" height="384" alt="image"
src="https://github.com/user-attachments/assets/e3c5842b-254d-47b8-a8f6-3721643c4223"
/>


New cancelled steps without timestamps:
<img width="387" height="309" alt="image"
src="https://github.com/user-attachments/assets/5fba979d-cb5b-4aba-b652-7c5ac89a3e37"
/>
2025-07-29 12:21:30 +02:00
renovate[bot]
216e5411ca
chore(deps): update dependency wait-on to v8.0.4 (#10424)
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [wait-on](https://redirect.github.com/jeffbski/wait-on) | [`8.0.3` ->
`8.0.4`](https://renovatebot.com/diffs/npm/wait-on/8.0.3/8.0.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/wait-on/8.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wait-on/8.0.3/8.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>jeffbski/wait-on (wait-on)</summary>

###
[`v8.0.4`](https://redirect.github.com/jeffbski/wait-on/releases/tag/v8.0.4)

[Compare
Source](https://redirect.github.com/jeffbski/wait-on/compare/v8.0.3...v8.0.4)

Update dependencies including axios@1.11.0 which also updated
form-data@4.0.4

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40My41IiwidXBkYXRlZEluVmVyIjoiNDEuNDMuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 09:40:55 +00:00
renovate[bot]
04bd3cd82e
chore(deps): update dependency supertest to v7.1.3 (#10423)
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [supertest](https://redirect.github.com/ladjs/supertest) | [`7.0.0` ->
`7.1.3`](https://renovatebot.com/diffs/npm/supertest/7.0.0/7.1.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/supertest/7.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/supertest/7.0.0/7.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ladjs/supertest (supertest)</summary>

###
[`v7.1.3`](https://redirect.github.com/ladjs/supertest/compare/v7.1.2...0cf2ec375f1aeed4eac257e51b1d81263452337c)

[Compare
Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.2...v7.1.3)

###
[`v7.1.2`](https://redirect.github.com/ladjs/supertest/compare/v7.1.1...29c3267d31740bee7af17144703045f836e59405)

[Compare
Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.1...v7.1.2)

###
[`v7.1.1`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.1)

[Compare
Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.0...v7.1.1)

- Merge pull request
[#&#8203;858](https://redirect.github.com/ladjs/supertest/issues/858)
from ByteOPCode/master
[`f553845`](https://redirect.github.com/ladjs/supertest/commit/f553845)
- feat: update superagent version
[`d37d197`](https://redirect.github.com/ladjs/supertest/commit/d37d197)

###
[`v7.1.0`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.0)

[Compare
Source](https://redirect.github.com/ladjs/supertest/compare/v7.0.0...v7.1.0)

- Merge pull request
[#&#8203;852](https://redirect.github.com/ladjs/supertest/issues/852)
from alxndrsn/econnreset
[`de045d4`](https://redirect.github.com/ladjs/supertest/commit/de045d4)
- Merge pull request
[#&#8203;845](https://redirect.github.com/ladjs/supertest/issues/845)
from ikonst/master
[`be0d5c7`](https://redirect.github.com/ladjs/supertest/commit/be0d5c7)
- Merge pull request
[#&#8203;854](https://redirect.github.com/ladjs/supertest/issues/854)
from alxndrsn/commitlint
[`35ac86f`](https://redirect.github.com/ladjs/supertest/commit/35ac86f)
- fix(dev): commitlint dev dependency & config
[`e67fcb2`](https://redirect.github.com/ladjs/supertest/commit/e67fcb2)
- fix: avoid server re-use race conditions
[`96c06e3`](https://redirect.github.com/ladjs/supertest/commit/96c06e3)
- test: fix test failure due to localhost being also ipv6
[`92079a0`](https://redirect.github.com/ladjs/supertest/commit/92079a0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40My41IiwidXBkYXRlZEluVmVyIjoiNDEuNDMuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 09:38:50 +00:00
Tymoteusz Czech
8554eee37a
feat: series query warning (#10413)
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-07-29 10:03:43 +02:00
Nuno Góis
15449e83d3
chore: add feature configuration based on addConfiguration flag (#10420)
https://linear.app/unleash/issue/2-3729/single-add-configuration-button-based-on-flag

Shows a single "Add configuration" button based on whether the new
`addConfiguration` flag is enabled.

This button then shows our "Add configuration" modal which allows you to
choose how to proceed in terms of your feature flag configuration. Also
updates this modal to better match the latest sketches.

Includes scouting.

### Single "Add configuration" button
<img width="738" height="121" alt="image"
src="https://github.com/user-attachments/assets/9cce7fba-5e0c-42e0-a3d1-8ccc34f730bb"
/>

### Modal
<img width="983" height="663" alt="image"
src="https://github.com/user-attachments/assets/b59abad2-f1cd-4b62-bf2e-9c3b24cbb60e"
/>
2025-07-29 08:27:13 +01:00
Thomas Heartman
0a9d6437c5
Place schedule information first and change color of schedule info (#10419)
As per UX's requests, this updates the placement and styling of the
schedule information for scheduled change requests. Instead of being
below the "stage entered time" and in "secondary" color, we place it
above that timestamp and in the same color as the stage name.

This change is not behind a flag, so the color change will go out
immediately upon release.

Before:

<img width="244" height="376" alt="image"
src="https://github.com/user-attachments/assets/2c5f380d-8d05-4078-93cc-d451eb9fdabe"
/>

After:
<img width="201" height="333" alt="image"
src="https://github.com/user-attachments/assets/d26c2c6f-5fc9-4db2-b52e-ff26e6f03a61"
/>

Same for failed/suspended. Before:
<img width="280" height="378" alt="image"
src="https://github.com/user-attachments/assets/71c7a201-dfd7-47f3-a45b-c33a47be1e3c"
/>

After:

<img width="258" height="369" alt="image"
src="https://github.com/user-attachments/assets/9a3ab53f-bda1-4ce5-a127-bceaa3436fef"
/>
2025-07-28 14:45:06 +02:00
Nuno Góis
8258ffcabe
chore: improve project card design (#10418)
https://linear.app/unleash/issue/2-3728/remove-the-project-card-icon

Removes the project icon from our project cards. This gives us more
space for our project titles.

Also took the chance to better align the "activity" visual component,
since previously it was floating not-quite-in-the-middle of the card.

This is already aligned with UX and ready to go from that standpoint.

<img width="918" height="442" alt="image"
src="https://github.com/user-attachments/assets/1538511e-e70d-4632-9f67-7d6cd146aeca"
/>
2025-07-28 12:57:33 +01:00
Melinda Fekete
a6397c51ab
docs: organize feature flags using projects and environments guide (#10402) 2025-07-28 13:33:59 +02:00
Thomas Heartman
08930e2081
Fix broken markdown link in api-overview doc. (#10417)
It was missing a closing `]`.
2025-07-25 15:27:35 +02:00
Github Actions Bot
fa39ebe5df 7.0.6 2025-07-25 12:27:35 +00:00
Github Actions Bot
038f66efd0 docs: Update CHANGELOG.md 2025-07-25 12:27:25 +00:00
Melinda Fekete
b354c4dda3
docs: update OpenAPI Edge name (#10415)
Change the tag of Edge to Unleash Edge in the OpenAPI spec to help with
search relevance in the docs
2025-07-25 12:41:06 +02:00
Nuno Góis
d278185228
feat: GitHub auth (#10406)
https://linear.app/unleash/issue/2-3713/show-sign-in-with-github-auth-option-in-unleash

Adds support for a "Sign-in with GitHub" auth option.

Also took this opportunity to slightly improve the design of these
options on our log in screen.

<img width="485" height="429" alt="image"
src="https://github.com/user-attachments/assets/540cb4d5-f5bc-44a0-a7d7-d895d0f22393"
/>
2025-07-24 15:25:25 +01:00
Thomas Heartman
d2e2378481
Show change request stage timestamps in UI (#10388)
Adds a timestamp for each state we have time (and that isn't a state
downstream from the current state) in the CR timeline.

<img width="437" height="318" alt="image"
src="https://github.com/user-attachments/assets/a499e73f-c506-46a0-8d1a-7e4eb5ec4f7d"
/>

The timestamp respects the user's preferred locale and uses the `time`
element.

I've used the current name of the API payload's timestamps as it stands
on the enterprise main branch for now. This name is not set in any
schemas yet, so it is likely to change. Because it's not currently
exposed to any users, that will not cause any issues. Name suggestions
are welcome if you have them.

We only show timestamps for states up to and including the current
state. Timestamps for downstream states (such as "approved" if you're in
the "in review" state), will not be shown, even if they exist in the
payload. (There are some decisions to make on whether to include these
in the payload at all or not.)

There's no flags in this PR. They're not necessary If the API payload
doesn't contain the timestamp, we just don't render the timestamp, and
the timeline looks the way it always did:
<img width="447" height="399" alt="image"
src="https://github.com/user-attachments/assets/0062393a-190c-4099-bc16-29f9da82e7ea"
/>


## Bonus work

In the `ChangeRequestTimeline.tsx` file, I've made a few extra changes:
- `createTimelineItem` and `createScheduledTimelineItem` have become
normal React components (`TimelineItem` and `ScheduledTimelineItem`) and
are being called as such (in accordance with [React
recommendations](https://react.dev/reference/rules/react-calls-components-and-hooks#never-call-component-functions-directly)).
- I've updated the subtitles for schedules to also use the time element,
to improve HTML structure.

## Outstanding work

There's a few things that still need to be sorted out (primarily with
UX). Mainly about how we handle scheduled items, which already have time
information. For now, it looks like this:

<img width="426" height="394" alt="image"
src="https://github.com/user-attachments/assets/4bfc4ca2-c738-4954-9251-8d063143371e"
/>

<img width="700" height="246" alt="image"
src="https://github.com/user-attachments/assets/fe688b08-c5c8-40f8-a9d0-fe455e44665f"
/>
2025-07-24 12:42:29 +00:00
Jaanus Sellin
8943cc0a3d
feat: basic flag creation chart (#10411)
This is partial implementation of flag creation chart. This only shows
the created flags line part, but I need to style it and also add bar
charts in next PRs.

<img width="1498" height="523" alt="image"
src="https://github.com/user-attachments/assets/6d7a3145-95ff-4d31-85dd-47d687527d47"
/>
2025-07-24 14:45:16 +03:00
Github Actions Bot
89f843fd0d 7.0.5 2025-07-24 11:05:44 +00:00
Github Actions Bot
29cddac05f docs: Update CHANGELOG.md 2025-07-24 11:05:34 +00:00
Gastón Fournier
ad605e42c7
chore(security): upgrade on-headers transitive dep (#10410) 2025-07-24 12:45:54 +02:00
Mateusz Kwasniewski
9a768f7bdc
chore: orval update creation trends (#10409)
Co-authored-by: sjaanus <sellinjaanus@gmail.com>
2025-07-24 13:38:11 +03:00
dependabot[bot]
f9ede12535
chore(deps): bump form-data from 4.0.0 to 4.0.4 (#10408) 2025-07-24 12:11:02 +02:00
Mateusz Kwasniewski
049e1ba271
feat: new flags in production explanation (#10407) 2025-07-24 11:53:25 +02:00
Nuno Góis
45e5b217aa
fix: add strategy release templates visibility for non Enterprise (#10401)
https://linear.app/unleash/issue/2-3711/add-strategy-modal-shows-release-templates-section-for-non-enterprise

Fixes a bug for non-Enterprise where release templates were mentioned
(and even linked to) even though they were not available for these
plans. When following the link the result was a page that did not
render.

Also slightly refactors and improves this component.

<img width="870" height="496" alt="image"
src="https://github.com/user-attachments/assets/47499e21-73fc-4ddf-8eed-6146be31b074"
/>
2025-07-23 20:17:22 +01:00
Gastón Fournier
0e015d6686
chore(security): remove coveralls dependency (#10405)
## About the changes
We've been using vitest for coverage and we use a github action to push
results to coveralls, so this should work just fine

Unlocks form-data to be able to fix
https://github.com/Unleash/unleash/security/dependabot/267

Also, removing coverage from PRs to avoid running tests twice
2025-07-23 20:40:00 +02:00
Gastón Fournier
4854b35cb1
chore(security): upgrade to newer node version (#10404)
## About the changes
Upgrade node to latest version to solve
[CVE-2025-27210](https://nodejs.org/en/blog/vulnerability/july-2025-security-releases)

Closes #10380
2025-07-23 18:49:06 +02:00
dependabot[bot]
e89fa7ec6e
chore(deps): bump form-data from 4.0.0 to 4.0.4 in /frontend (#10403) 2025-07-23 18:37:42 +02:00
dependabot[bot]
86b4bea838
chore(deps): bump form-data from 4.0.1 to 4.0.4 in /website (#10392) 2025-07-23 18:12:12 +02:00
Thomas Heartman
64050121db
Add timestampsInChangeRequestTimeline flag (#10399)
Adds flag to OSS for the new timestamps in CR timeline capability.

We might not need them in the UI, but might as well add it in case.
2025-07-23 15:33:40 +02:00
Mateusz Kwasniewski
299ed65ef7
feat: New production flags chart (#10400) 2025-07-23 15:29:47 +02:00
Mateusz Kwasniewski
0457f5e035
chore: orval generation (#10398) 2025-07-23 13:11:26 +02:00
Nuno Góis
e87c51948f
fix: banner form state (#10397)
https://linear.app/unleash/issue/2-3710/fix-banner-form-state-inconsistencies

Noticed a few inconsistencies with the way the banner form handles
state. This should fix that by ensuring the form's state correctly
reflects prop changes.
2025-07-23 08:36:48 +01:00
Nuno Góis
65ea41d601
chore: AI flag cleanup better support advanced flag names (#10396)
https://linear.app/unleash/issue/2-3709/improve-support-for-advanced-flag-names-in-ai-flag-cleanup

Improves support for advanced flag names in AI flag cleanup.

This is something I noticed when it tried to run against
https://github.com/Unleash/unleash/issues/10395 — The dot (.) broke the
previous logic.
2025-07-22 17:39:16 +01:00
Melinda Fekete
f363a1eba7
Add search priority for auto-generated pages (#10386) 2025-07-22 18:16:24 +02:00
Nuno Góis
b663696bd4
chore: AI flag cleanup reports errors back to issue (#10381)
https://linear.app/unleash/issue/2-3706/ai-flag-cleanup-reports-errors-back-to-issue

Reports AI flag cleanup errors back to the issue.
2025-07-22 16:21:56 +01:00
Gastón Fournier
57ec5ce876
chore: remove unkonwn flags (#10389)
We're iterating over the keys of experimental and checking if they're
enabled:
e140ab63e1/src/lib/util/flag-resolver.ts (L26)
which leads to this big list of unknown flags

This comes from our report:
<img width="1461" height="1042" alt="image"
src="https://github.com/user-attachments/assets/9579f351-e5e9-42ad-a141-b5cde83a41b8"
/>
2025-07-22 16:49:42 +02:00
Thomas Heartman
bfd82015d1
Fix each child in a list should have a key error. (#10393)
The console was complaining. I suspect it was because of the wrapping
fragment. So instead of doing everything within react, I switched to
using a standard case statement.

Also: because name is optional and not guaranteed to be unique, let's
use id for the key instead.
2025-07-22 13:03:33 +00:00
Mateusz Kwasniewski
d7f98945a3
chore: Lifecycle graphs flag (#10390) 2025-07-22 14:34:27 +02:00
Gastón Fournier
020e9a49ef
chore: don't fail if array is not ordered properly (#10391)
Spotted it here:
https://github.com/Unleash/unleash/actions/runs/16443263365/job/46468801248
<img width="928" height="584" alt="image"
src="https://github.com/user-attachments/assets/5e430b91-2664-4a79-9f13-cf6da4640046"
/>

where the sort order is different.
2025-07-22 14:30:56 +02:00
Gastón Fournier
e140ab63e1
fix: flaky delete stale session (#10387)
When deleting stale sessions, we sort them by createdAt. If both
sessions are created with the same createdAt, there's a chance we get a
different sort order and we end up with the wrong order:
https://github.com/Unleash/unleash/actions/runs/16438565746/job/46453700977

I think adding 10ms between inserts should be enough (1ms should do,
but this gives me more confidence and doesn't hurt that much)

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-07-22 11:42:14 +00:00
Melinda Fekete
dc81f81b54
docs: guide for managing feature flags in code (#10344) 2025-07-22 11:47:09 +02:00
Tymoteusz Czech
f54305c8b7
refactor: impact metrics modal - label filtering and UX (#10377)
Modal for editing a chart now follows design of other parts of the app
more closely.
2025-07-22 10:08:29 +02:00
Nuno Góis
51f8244a5d
chore: emit CLIENT_METRICS event after sifting (#10376)
https://linear.app/unleash/issue/2-3705/only-emit-client-metrics-after-sifting-metrics

Only emits the `CLIENT_METRICS` event after metric sifting.

This ensures the event is emitted only for valid metrics tied to known
flags, instead of all flags included in the metrics payload.

See:
https://github.com/Unleash/unleash/pull/10375#discussion_r2218974109
2025-07-21 15:40:02 +01:00
Nuno Góis
8f0c0ccef3
chore: sift metrics on both endpoints (#10375)
https://linear.app/unleash/issue/2-3696/report-unknown-flags-when-sent-to-the-bulk-metrics-endpoint

Unifies metrics sifting logic across both metrics endpoints:
- `/metrics`
- `/metrics/bulk`

This PR improves consistency between the `/metrics` and `/metrics/bulk`
endpoints by introducing a shared `siftMetrics` method, now used within
`registerBulkMetrics`. Both endpoints already call this method at the
end of their respective logic flows, ensuring that metrics are sifted in
the same way regardless of the path taken.

While the primary goal was to enable reporting of unknown flags via the
`/metrics/bulk` endpoint, this change also improves bulk processing by
consistently dropping invalid or unknown flags before insertion, just
like in the regular `/metrics` endpoint.
2025-07-21 12:40:41 +01:00
Tymoteusz Czech
c1df04548d
feat: add impact metrics wildcard label (#10373) 2025-07-21 10:50:14 +02:00
Melinda Fekete
253c2d71b3
docs: prioritize search results (#10369) 2025-07-18 17:09:35 +02:00