1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-24 20:06:55 +01:00
Commit Graph

6482 Commits

Author SHA1 Message Date
Mateusz Kwasniewski
636a964cca
feat: improve safeguard form styling (#11007) 2025-11-20 13:03:09 +01:00
Jaanus Sellin
9ac45511b7
feat: now safeguard impact metrics are not editable or deletable (#11006) 2025-11-20 13:22:57 +02:00
David Leek
93ea192f8c
feat: frontend for pkce (#11005) 2025-11-20 10:59:48 +01:00
Mateusz Kwasniewski
4890b16b49
feat: improve safeguard threshold field (#11004) 2025-11-19 17:13:03 +01:00
Jaanus Sellin
415978d965
feat: extend milestone status (#11000) 2025-11-19 16:19:53 +02:00
Mateusz Kwasniewski
00166f4875
refactor: milestone progression methods (#11002) 2025-11-19 14:57:53 +01:00
Mateusz Kwasniewski
7ea14b8d22
feat: resume milestone progressions (#10999) 2025-11-19 12:47:47 +01:00
Nuno Góis
416bd27859
chore: show hosting in connected edges (#10995)
https://linear.app/unleash/issue/2-4037/show-hosting-in-connected-edges-edge-observability

Show "hosting" in Connected Edges.

This can be one of:
 - Cloud
 - Self-hosted
 - Unknown

<img width="326" height="691" alt="image"
src="https://github.com/user-attachments/assets/baba1fbb-6f22-46f5-8271-4f4a0c3fcc8a"
/>
2025-11-19 10:41:46 +00:00
Jaanus Sellin
35680f87eb
feat: hide milestone progression on paused state (#10998) 2025-11-19 12:41:18 +02:00
Mateusz Kwasniewski
d3981baf2c
fix: handle no app name impact metric (#10997) 2025-11-19 09:50:56 +01:00
Mateusz Kwasniewski
b2eaff670c
feat: delete safeguard confirmation (#10993) 2025-11-17 16:47:04 +01:00
Mateusz Kwasniewski
29de419e20
refactor: delete safeguard api update (#10992) 2025-11-17 15:53:34 +01:00
Mateusz Kwasniewski
778328aa98
feat: release plan automations paused alert (#10991) 2025-11-17 15:39:05 +01:00
David Leek
7fdc0df9f2
fix(frontend): use extendedUsageMetrics flag in metrics UI (#10987) 2025-11-17 13:32:45 +01:00
Jaanus Sellin
218f0fcdef
feat: add paused state to release plan milestone progression (#10983) 2025-11-14 16:18:15 +02:00
Jaanus Sellin
ca61906e3c
chore: generate orval (#10980) 2025-11-14 13:50:31 +02:00
Nuno Góis
3c392510f1
chore: unique project names validation on creation (#10970)
https://linear.app/unleash/issue/2-4024/we-should-validate-that-new-project-names-are-unique-ui-only

Validates that new project names must be unique.

Covers both:
 - Creating a new project
 - Editing an existing project

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-11-14 11:29:06 +00:00
Thomas Heartman
df3f7c21a5
fix: remove old archived flags tooltip (#10977) 2025-11-14 08:46:37 +01:00
David Leek
3598ed1c87
chore: change release_plans to release-plans in endpoints/hooks (#10978) 2025-11-14 08:30:41 +01:00
Mateusz Kwasniewski
71099247e7
feat: delete safeguard button (#10974) 2025-11-13 12:01:53 +01:00
Mateusz Kwasniewski
de04e816df
feat: adjust safeguard form elements size (#10973) 2025-11-13 10:06:24 +01:00
Simon Hornby
8689afe7be
chore: information message when you have no connected edge enterprise instances (#10969) 2025-11-13 09:32:51 +02:00
Mateusz Kwasniewski
3b07b66712
feat: safeguards form edit and display (#10967) 2025-11-12 21:24:07 +01:00
Thomas Heartman
1fc39ade33
chore: allow custom messages in maintenance mode banner (UI) (#10961)
Updates the maintenance mode banner to accept string variants, allowing
for custom maintenance mode messages.

Because the banner is almost the same as the existing banner component
we have, we can simplify the impl and just reuse the existing banner
instead. The one difference is that the maintenance mode banner used to
be taller. However, after talking to UX, we agreed that the banner
should be the same size, anyway.

<img width="1552" height="120" alt="image"
src="https://github.com/user-attachments/assets/fc9dc8ad-26ba-411a-846e-a79e1b855f37"
/>
2025-11-11 13:37:32 +00:00
Thomas Heartman
b33abf036b
chore: configure the 'maintenanceMode' flag to accept variants (#10956)
Configure the `maintenanceMode` flag type to be `boolean | Variant` and
update the env parsing to allow passing strings from the env.

The [first
impl](3bbfc9e681)
required you to set a full, variant -- stringified as json -- in the
env, but this is both error-prone and not very user friendly.
Additionally, the name of the variant isn't really important, and if
you're passing a string, you probably want it to be true.

As such, the [second
impl](c38357baa4)
updates the env parsing to read the full string value into a
pre-formatted variant if it's not parseable as a boolean.

As such, to set a custom message, you can now do:

```sh
UNLEASH_EXPERIMENTAL_MAINTENANCE_MODE='Custom message from plain env var string' yarn dev
```

With the [updates to the
UI](https://github.com/Unleash/unleash/pull/10961), it'll look a little
something like this:

<img width="388" height="64" alt="image"
src="https://github.com/user-attachments/assets/6b8a174b-d75f-4748-8f1a-1ad4ebce2073"
/>

## Rationale

This allows locking down Unleash instances with a custom message.
Previously, you'd have to use both maintenance mode and a custom banner
for this, but that requires more work to set properly and it shows two
banners, when you really only want the one.
2025-11-11 12:52:49 +01:00
Jaanus Sellin
5d65600864
fix: when adding new milestone progression, prevent default form submit (#10960)
Fixed form submitting the form and reloading page.
2025-11-11 11:04:54 +02:00
Mateusz Kwasniewski
34a34364fb
feat: safeguards api frontend (#10959) 2025-11-10 16:52:07 +01:00
Mateusz Kwasniewski
4479d0478e
feat: safeguard form reads real data (#10957) 2025-11-10 16:13:27 +01:00
Mateusz Kwasniewski
529726decf
feat: safeguard form draft (#10954) 2025-11-10 13:56:54 +01:00
Mateusz Kwasniewski
8da2fa83cc
feat: milestone progression keyboard navigation (#10950) 2025-11-10 11:11:22 +01:00
unleash-bot[bot]
8c56c375c7
chore(AI): trafficBillingDisplay flag cleanup (#10949) 2025-11-10 10:35:33 +02:00
Mateusz Kwasniewski
0bcdf82e37
feat: add safeguard button and borders (#10943) 2025-11-07 13:51:14 +01:00
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