1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
Commit Graph

6450 Commits

Author SHA1 Message Date
unleash-bot[bot]
547c8ffd58
chore(AI): lifecycleGraphs flag cleanup (#10942)
This PR cleans up the lifecycleGraphs flag. These changes were
automatically generated by AI and should be reviewed carefully.

Fixes #10941

## 🧹 AI Flag Cleanup Summary
This change removes the `lifecycleGraphs` feature flag and makes the
associated
feature permanently available. The lifecycle graphs on the insights page
are now
enabled for all Enterprise users.
### 🚮 Removed
- **Configuration**
- `lifecycleGraphs` flag definition from `IFlagKey` and `flags` object
in
`src/lib/types/experimental.ts`.
- `lifecycleGraphs` flag from `UiFlags` in
`frontend/src/interfaces/uiConfig.ts`.
- `lifecycleGraphs: true` from `src/server-dev.ts` development config.
- **UI**
- The `useUiFlag('lifecycleGraphs')` hook call and associated
conditional
rendering logic in `PerformanceInsights.tsx`.
### 🛠 Kept
- **UI**
- The "New flags in production" and "Flags archived vs flags created"
widgets
are now always shown for Enterprise instances on the Performance
Insights page.
### 📝 Why
The `lifecycleGraphs` feature flag has been fully rolled out and is now
considered a permanent part of the application. This cleanup removes the
obsolete flag and its related conditional logic to simplify the
codebase.

---------

Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-11-07 10:36:49 +00:00
Thomas Heartman
8c626c8f4f
fix: don't clear "implicit" filters when updating table state outside quick filters (#10937)
Fixes bug that would only occur if the first thing you do (when there's
no url query params) on the page is to try to change the sort order or
change the number of results per page.

In those cases, the table state would be replaced with only the new
state from the sorting/page limit (and probably page).

In more specific terms: if you're on the page with no query params, then
that means that you're seeing your open change requests.

But if you tried to change the sorting, say, then the "state" and
"createdBy" filters would be cleared, and you would end up showing "all
change requests ever".

The fix is to spread the implicit table state into the new state before
updating the actual state, such that implicit filters become explicit
when that happens.

## Implicit filters?

So why do we have implicit filters? Partly aesthetic, partly because
that's how it works on github (github.com/pulls), and partly because
that makes it easier to share with coworkers. You just need to go to the
change requests page and copy the url. With no query params, they'll see
their own results instead of yours.
2025-11-07 09:48:16 +01:00
Thomas Heartman
2feb921a26
chore: disable "sortable" column headers for change requests table (#10936)
Makes all columns in the change requests table unsortable. The API
doesn't support sorting yet and it's not entirely clear that we want it
at the moment. As such, make it so that the column headers aren't
interactable to make it less misleading.
2025-11-07 09:48:05 +01:00
Mateusz Kwasniewski
ee6a346ca7
fix: ignore release plans in strategy diffing (#10938) 2025-11-06 15:42:27 +01:00
Thomas Heartman
a116405779
chore: Update "by" to "created by" in the global change request list (#10934)
<img width="132" height="132" alt="image"
src="https://github.com/user-attachments/assets/544bc469-0c3c-4a05-b524-6d9fbfe87215"
/>

Additionally, remove the redundant `id` properties from the column
accessors. They don't seem to have any effect and I didn't see them in
other code.
2025-11-06 14:33:25 +01:00
Thomas Heartman
4e2b39fcf8
chore: Reword "created" to "created by me" (#10935)
Changes the wording on the quick filter to be "created by me" instead of
just "created". This should make it clearer exactly what the filter
does.

Before:
<img width="525" height="141" alt="image"
src="https://github.com/user-attachments/assets/e7f0621a-469d-4967-99a6-66b6b583f20a"
/>


After:
<img width="556" height="145" alt="image"
src="https://github.com/user-attachments/assets/52ee5194-9284-4364-8e33-b56b61e20b32"
/>
2025-11-06 14:33:20 +01:00
Gastón Fournier
3d476c5113
feat: change how we calculate what to show new in Unleash (#10931)
## About the changes
This helps to specify how long to show new in Unleash so we don't forget
to remove it when doing a release. This doesn't mean we should keep this
list forever, but this helps us to keep it clean in the UI at least.

### Tests
We did unit test the logic as follows (manually because it's not an easy
piece of code to test in the UI):
```typescript
test('ui-test', () => {
    const showUntil = '7.3.0';
    expect(lt('6.9.3', showUntil)).toBe(true);
    expect(lt('7.2.3', showUntil)).toBe(true);
    expect(lt('7.3.0', showUntil)).toBe(false);
    expect(lt('7.3.1', showUntil)).toBe(false);
    expect(lt('7.4.0', showUntil)).toBe(false);
    expect(lt('8.0.0', showUntil)).toBe(false);
});
```
2025-11-06 13:13:37 +01:00
Thomas Heartman
5d1a8ca735
chore: add Change Requests to sidebar and fix command menu icon (#10932)
Adds the new change request overview to the sidebar and fixes the entry
in the command bar to use the right title and icon.

<img width="441" height="159" alt="image"
src="https://github.com/user-attachments/assets/a3eb4fdd-f440-470b-b42f-539ec53f0aa0"
/>
<img width="269" height="163" alt="image"
src="https://github.com/user-attachments/assets/a2fdf92d-73c5-4daf-af64-f9f5cfe56834"
/>


Additionally, standardize the change requests icon. Instead of using a
custom one from a svg, let's use the material icon (which is the same,
just -90deg rotated and flipped around an axis)

This standardization, makes the icon a tiny bit smaller in the new
project modal, but it's the same size (20x20) as the other icons, so I
don't think anyone's gonna notice or care, and I think it's better to
use the basic material icon.

Of course, we could scale it up (and add a `scale` prop to the change
request icon), but I'd rather leave it out for consistency and
simplicity for now.

old:
<img width="835" height="52" alt="image"
src="https://github.com/user-attachments/assets/00dc35f3-a536-4e10-8115-2a0dbde92bb1"
/>

new: 
<img width="823" height="63" alt="image"
src="https://github.com/user-attachments/assets/5870fde1-05c1-43ce-a1c1-7ddc2242fb6b"
/>



As for the scale, I've set it to 1.1, because that makes it damn near
identical on the change request page (where I've also updated the raw
svg to the new icon) (old one on left, new one on right):
<img width="500" height="796" alt="image"
src="https://github.com/user-attachments/assets/fbbbf44f-8f8d-4cb9-b466-4cf3e70bfb1a"
/>
2025-11-06 12:12:58 +00:00
Thomas Heartman
2f25f5fd8a
fix: don't spread props + nest li correctly (#10923)
Fixes a few errors appearing on the "assign user/group" on the project
settings pages. Namely:
- spreading "key" into props in two places (option list and selected
chips)
- incorrect HTML nesting ([`li`'s only permitted parents are `ul`, `ol`,
and
`menu`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/li#technical_summary))
- missing key in the list (caused by nesting the `li`)

The renderOption type update is based on a [fix that was added in a more
recent version of
mui](https://github.com/mui/material-ui/pull/42689/files).

For some reason, the default tag rendering spreads the key in somehow,
so I've had to add a manual `renderTags` prop, and as such extracted the
`getOptionLabel` function. If you know a better way of sorting out the
fact that the `key` prop is spread into the default MUI chips, I'd be
very happy to implement that instead.
2025-11-06 13:05:16 +01:00
Thomas Heartman
7215e6bdfb
Chore: copy change request table improvements to project CR tables (#10920)
Ports some of the most significant updates from the new global change
request table to the old change request table.

Notably:
- Truncate the title if it's long
- Give more space to the title (especially useful because of the
truncation)
- Vertically align cell content to the top (to make it easy to scan in a
single row)

Before:

Without title truncation (extreme case)
<img width="4612" height="11744" alt="image"
src="https://github.com/user-attachments/assets/60511795-f113-41d1-9073-4c7752a82875"
/>

Column widths:
<img width="1496" height="212" alt="image"
src="https://github.com/user-attachments/assets/f92c3d2d-1c34-4de9-996c-039160ad9766"
/>
<img width="919" height="290" alt="image"
src="https://github.com/user-attachments/assets/babce5d3-a92d-4e5d-822a-6123a3a8e698"
/>



After:
With title truncation:
<img width="1533" height="617" alt="image"
src="https://github.com/user-attachments/assets/4ebfb587-b646-49f2-a087-1b7347a3bb26"
/>

Column widths:
<img width="1496" height="305" alt="image"
src="https://github.com/user-attachments/assets/d03be365-7df7-4c62-a3b7-d55e115fd6cb"
/>
<img width="933" height="304" alt="image"
src="https://github.com/user-attachments/assets/7cd5df64-5ee5-4a1e-a065-00e7a853ab16"
/>
2025-11-06 13:05:06 +01:00
Melinda Fekete
28fa4240b7
docs: updates for 7.3 (#10913) 2025-11-06 10:56:15 +01:00
Nuno Góis
9e7f68abc3
refactor: clean up dead code after removing newStrategyModal flag (#10926)
https://linear.app/unleash/issue/2-3885/clean-up-legacy-code

Cleans up dead code after removing the `newStrategyModal` feature flag.
2025-11-06 08:48:01 +00:00
Melinda Fekete
40d917d392
chore: remove custom strategy deprecation warnings from release tempates (#10929)
Remove two more deprecations for custom stategies
2025-11-06 09:00:01 +01:00
Simon Hornby
94554ed4f8
chore: remove deprecation warnings for custom strategies (#10924) 2025-11-05 15:17:11 +02:00
Thomas Heartman
88a42ac849
fix: cap rendered change request title height to 3 lines (#10922)
Caps the rendered change request title height to 3 lines and makes the
edit button rectangular-ish instead of circular. This will work better
as it can grow arbitrarily tall.

## Title capping
Before:
<img width="753" height="1260" alt="image"
src="https://github.com/user-attachments/assets/8ae278f9-cc97-4803-8c29-4f3fede99b52"
/>


After:
<img width="1506" height="216" alt="image"
src="https://github.com/user-attachments/assets/c5ca04e9-b1c7-4d36-b023-86f6fbb322db"
/>

## Edit button border fix
Before:
<img width="1441" height="251" alt="image"
src="https://github.com/user-attachments/assets/40df8747-a68f-4d36-af67-888c841cfcad"
/>


After:
<img width="1455" height="247" alt="image"
src="https://github.com/user-attachments/assets/c63380cb-ebe8-481d-a959-087dbf79b9fc"
/>
2025-11-05 13:31:00 +01:00
David Leek
a4885c45a3
chore(frontend): remove unused legacy featureoverview component (#10921) 2025-11-05 13:11:58 +01:00
unleash-bot[bot]
1030feee38
chore(AI): envAddStrategySuggestion flag cleanup (#10916) 2025-11-05 11:02:42 +01:00
Thomas Heartman
cd0eff35e2
Chore: remove aria-current; group buttons (#10919)
After some more consideration and reading, I don't think `aria-current`
is the right attribute here. Additionally, `aria-pressed` and
`aria-selected` are also not appropriate here. I can't find a suitable
alternative, so I'm falling back to the first rule of aria: if you don't
know what to do: don't do anything.

As such, I'm falling back to regular html data attributes.
2025-11-05 10:54:31 +01:00
Jaanus Sellin
79e439ea05
fix: hide usage when there is no limit (#10918) 2025-11-05 11:37:56 +02:00
Thomas Heartman
85fa04bc75
Chore: Vertically center change request quick filters (#10917)
Removes top padding that pushes the filters down.

Before:
<img width="683" height="260" alt="image"
src="https://github.com/user-attachments/assets/9eb43413-b988-435f-8ca0-8ee2e5e03a87"
/>


After:
<img width="553" height="244" alt="image"
src="https://github.com/user-attachments/assets/b1ed623c-f154-43d8-ab31-cc0df374fb19"
/>
2025-11-05 10:20:55 +01:00
unleash-bot[bot]
11a2860700
chore(AI): newStrategyModal flag cleanup (#10912)
This PR cleans up the newStrategyModal flag. These changes were
automatically generated by AI and should be reviewed carefully.

Fixes #10911



🧹 AI Flag Cleanup Summary

This change removes the newStrategyModal feature flag, making the new
"Add
strategy" modal the default and only experience for adding strategies to
a
feature.

I've removed the flag checks and the legacy code paths for the old
strategy
menu. The FeatureStrategyMenu component is now simplified to only render
the new
modal experience. I have also removed the flag from backend
configurations and
frontend interfaces.

🚮 Removed

• Feature Flag: newStrategyModal flag definition and configuration from
experimental.ts, server-dev.ts, and uiConfig.ts.
• Conditional Logic: All checks for the newStrategyModal flag in
FeatureStrategyMenu.tsx.
• Legacy Components: The old strategy menu
(LegacyFeatureStrategyMenuCards) and
related dialogs (LegacyReleasePlanReviewDialog) have been removed from
FeatureStrategyMenu.tsx.
• Unused Code: Unused state variables, functions
(openDefaultStrategyCreationModal, openReleasePlans), and imports
related to
the legacy strategy menu have been cleaned up.

🛠 Kept

• New "Add strategy" modal: The new modal for adding strategies is now
the only
implementation. Its user experience is preserved and made default.

📝 Why

The newStrategyModal feature has been completed, and the decision was to
keep
the new user experience. This cleanup removes the complexity of
maintaining two
different UI paths for adding strategies, making the code cleaner and
easier to
maintain.

---------

Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Nuno Góis <github@nunogois.com>
2025-11-05 08:59:18 +00:00
mohammedlaniyan-unleash
366827de6f
feat: prioritize first production environments in FeatureExposureMetrics (#10891) 2025-11-04 11:53:41 +00:00
David Leek
a1ebd0d114
chore: swap edit and copy strategy button order (#10904) 2025-11-04 07:50:17 +01:00
Nuno Góis
699f9e6ce2
fix: enterprise edge stats should take into account full month (#10898)
https://linear.app/unleash/issue/2-3993/fix-enterprise-edge-stats

Fixes Enterprise Edge stats to correctly reflect the average across the
whole month.

Now returns a rounded average with 3 decimal places.

Also includes the average of the last 12 months.
2025-11-03 13:45:38 +00:00
Mateusz Kwasniewski
d452e45f37
chore: safeguards flag (#10906) 2025-11-03 12:05:26 +01:00
Jaanus Sellin
a52ee10827
feat: align milestone time formatting (#10903) 2025-10-31 16:40:28 +02:00
Mateusz Kwasniewski
b21c101439
refactor: extract different milestone button types (#10901) 2025-10-31 15:02:36 +01:00
Jaanus Sellin
2458e5d5aa
feat: make milestone progression more clear (#10899) 2025-10-31 13:53:05 +00:00
Mateusz Kwasniewski
96f7f2f1bf
refactor: explicit scheduled milestone modelling (#10900) 2025-10-31 13:28:37 +01:00
Mateusz Kwasniewski
45fc547049
feat: start now button with background (#10897) 2025-10-31 12:24:56 +01:00
Mateusz Kwasniewski
d089e771da
Revert "feat: milestone without prior automation (#10893)" (#10894) 2025-10-30 14:58:04 +01:00
Mateusz Kwasniewski
a2c8e80345
feat: milestone without prior automation (#10893) 2025-10-30 13:13:06 +00:00
Mateusz Kwasniewski
eb87acd35a
feat: read milestone progressions from snapshot (#10886) 2025-10-29 11:57:47 +01:00
Mateusz Kwasniewski
b4208d2cf2
feat: milestone progression borders (#10884) 2025-10-29 11:02:53 +01:00
Mateusz Kwasniewski
c2ec77ba6e
feat: read only milestone progression in cr (#10882) 2025-10-29 09:54:39 +01:00
Mateusz Kwasniewski
0ddf35656c
refactor: Smart time range (#10881) 2025-10-28 17:26:12 +01:00
Mateusz Kwasniewski
dc87c125e0
feat: after to at (#10880) 2025-10-28 14:59:17 +01:00
Mateusz Kwasniewski
2823c94a38
feat: instant milestone progression prevention (#10879) 2025-10-28 13:13:23 +01:00
dependabot[bot]
351b5a4351
chore(deps): bump validator from 13.12.0 to 13.15.20 in /frontend (#10877) 2025-10-28 09:37:52 +01:00
Mateusz Kwasniewski
9142ebf82c
feat: track change progression (#10874) 2025-10-28 09:28:33 +01:00
Mateusz Kwasniewski
01c0d56277
chore: starting after time (#10872) 2025-10-27 16:05:32 +01:00
Jaanus Sellin
8db708369d
feat: warning when empty segment (#10868) 2025-10-27 14:46:51 +02:00
Christopher Kolstad
07758a4267
chore(build): Bump Yarn to 4.10.3 (#10865) 2025-10-27 12:58:24 +01:00
Alex Casalboni
131a741a35
Update unleash.github.io link (integrations) (#10867)
## About the changes
unleash.github.io doesn't exist anymore, so I'm updating the domain to
docs.getunleash.io

FYI @melindafekete
2025-10-27 11:14:04 +01:00
Thomas Heartman
0ba7954207
chore: Support border collapsing for an arbitrary number of filters (#10862)
Allows using an arbitrary number of styled chips with successful border
collapsing.

Before:
<img width="682" height="126" alt="image"
src="https://github.com/user-attachments/assets/80d66a5a-e0d7-461f-9be4-4a75579a7ff2"
/>

<img width="634" height="134" alt="image"
src="https://github.com/user-attachments/assets/5d42be62-c4db-49a2-8c36-6f941f742f5f"
/>


After:
<img width="647" height="166" alt="image"
src="https://github.com/user-attachments/assets/43a2fcf8-2a56-41a3-ad84-381a6adfc947"
/>

<img width="641" height="131" alt="image"
src="https://github.com/user-attachments/assets/cb38bae1-77e0-4c8b-b12f-4e4fa8250a34"
/>
2025-10-24 15:18:39 +00:00
Thomas Heartman
1932d21336
chore: Add state filter to UI query; default to open (#10858)
Add an open/closed filter to the global change requests table.

To accomodate this, the PR:
- refactors the previous `ChangeRequestFilters` into its own directory
with additional files for each of the filter groups.
- updates the change request filters to work based on the table state
instead of its own external state (this was fine with only one param,
but would've gotten too complicated with two).


<img width="1108" height="442" alt="image"
src="https://github.com/user-attachments/assets/9cda0cbc-8524-45ce-b201-260e9581a346"
/>
<img width="1101" height="381" alt="image"
src="https://github.com/user-attachments/assets/ab77b17f-5449-4987-9d08-341e856cb7ac"
/>
2025-10-24 12:30:23 +00:00
Jaanus Sellin
7a6c070324
feat: plausible metrics chart (#10859) 2025-10-24 13:44:35 +03:00
Thomas Heartman
47c2bb7376
Chore: update Orval with new state query param (#10860)
Preparing for the UI usage of this.
2025-10-24 12:38:03 +02:00
Thomas Heartman
4490fe785d
Update the design of change request filters to be one contiguous element (#10857)
Removes spacing between the filters, making them stick together.

This is in prep for adding a new set of filters, which will make each
group visually separated.

Also handles the bolding of text that happens when a filter is selected
by a little css `::before` trick.
 
Before:
<img width="367" height="199" alt="image"
src="https://github.com/user-attachments/assets/107e5f8d-a59b-46c9-ab86-18b240d3eb15"
/>

After:
<img width="379" height="179" alt="image"
src="https://github.com/user-attachments/assets/a02f2810-33a6-40fe-837f-3a3b01243da9"
/>
2025-10-24 10:56:46 +02:00
Fredrik Strand Oseberg
0e26f463e9
feat: show draft automation inline in release plans (#10856) 2025-10-24 09:34:01 +02:00