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

14650 Commits

Author SHA1 Message Date
Melinda Fekete
302c6a3e54
docs: impact metrics (#11001) 2025-11-20 15:42:55 +01:00
Thomas Heartman
c29983d810
fix: handle invalid permissions in role creation (#11003)
The `create` and `update` role methods used to blindly accept any
incoming permissions, but if the permissions don't exist in the
database, then the database would throw, yielding a 500 error to the
user.

To fix this, we can validate that all the permissions exist before we
try to add the incoming permissions.

The http error only manifests in enterprise, but the fix requires
modifying the access service. Therefore, I've added the tests to the
access service too, such that if you break something, then you don't
need to wait for it to propagate to enterprise.

---------

Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-11-20 12:32:49 +00:00
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
Jaanus Sellin
ccbf375a13
feat: add safeguard events (#10994) 2025-11-19 10:10:44 +02: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
Nuno Góis
f06eabf7e6
chore: export default metrics register (#10989)
https://linear.app/unleash/issue/2-4035/avoid-prom-client-dependency-in-enterprise-cloud

This exports the default metrics register so consumers can tap into it
if needed.
2025-11-17 13:40:13 +00:00
David Leek
7fdc0df9f2
fix(frontend): use extendedUsageMetrics flag in metrics UI (#10987) 2025-11-17 13:32:45 +01:00
renovate[bot]
84e47c6d8f
chore(deps): update dependency js-yaml to v4.1.1 [security] (#10986)
This PR contains the following updates:

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

### GitHub Vulnerability Alerts

####
[CVE-2025-64718](https://redirect.github.com/nodeca/js-yaml/security/advisories/GHSA-mh29-5h37-fv8m)

### Impact

In js-yaml 4.1.0 and below, it's possible for an attacker to modify the
prototype of the result of a parsed yaml document via prototype
pollution (`__proto__`). All users who parse untrusted yaml documents
may be impacted.

### Patches

Problem is patched in js-yaml 4.1.1.

### Workarounds

You can protect against this kind of attack on the server by using `node
--disable-proto=delete` or `deno` (in Deno, pollution protection is on
by default).

### References


https://cheatsheetseries.owasp.org/cheatsheets/Prototype_Pollution_Prevention_Cheat_Sheet.html

---

### Release Notes

<details>
<summary>nodeca/js-yaml (js-yaml)</summary>

###
[`v4.1.1`](https://redirect.github.com/nodeca/js-yaml/blob/HEAD/CHANGELOG.md#411---2025-11-12)

[Compare
Source](https://redirect.github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

##### Security

- Fix prototype pollution issue in yaml merge (<<) operator.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-15 10:51:07 +00:00
Melinda Fekete
54a68f63f1
docs: add auto-generated MCP docs (#10984) 2025-11-14 16:47:13 +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
Jaanus Sellin
8c6efeb48d
chore: fix safeguards schema (#10982) 2025-11-14 13:30:35 +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
Jaanus Sellin
ba25d7ada9
chore: fix transitionCondition (#10981) 2025-11-14 13:01:13 +02:00
Jaanus Sellin
25c4f6fa3b
chore: update schema to match reality (#10979) 2025-11-14 09:11:22 +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
Jaanus Sellin
9de82e87f2
chore: start validating getFeature endpoint (#10975) 2025-11-14 08:47:31 +02:00
Jaanus Sellin
06b9d1939b
fix: add missing nested types (#10976) 2025-11-13 13:41:23 +02:00
Mateusz Kwasniewski
71099247e7
feat: delete safeguard button (#10974) 2025-11-13 12:01:53 +01:00
Jaanus Sellin
684a0ff48c
feat: add safeguards schema to oss (#10972)
TypeScript throws `TS7056` because the schema object becomes too large
for the compiler to fully serialize when using deep literal inference.
Splitting the components object and explicitly reconstructing the type
prevents the error while preserving correct type inference.
2025-11-13 09:30:15 +00:00
Thomas Heartman
1795e68a67
test: add extra test to ensure we don't return a disabled variant (#10968)
Adds a test to ensure that the `getAll` method of the flag resolver
doesn't return the disabled variant if a flag is defined as a boolean in
the settings.

We have some places in the UI where we check `if
(uiConfig.flags.<flagname>) {...}`. If one of these flags were suddenly
returned as the disabled variant instead of `false`, then it'd be
impossible to turn it off.

As such, to maintain backwards compatibility and adhere to the principle
of least surprise, I'd like to add this test to ensure this doesn't
change going forward.
2025-11-13 10:18:36 +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
89a3578826
fix: allow external flag resolver to override false experiments with variants in getAll (#10966)
Fixes a bug / uncovered edge case in the flag resolver in Unleash:
If a local experiment was defined as false (the typical default value),
then that flag could only ever be returned as a boolean from the
`ui-config` endpoint. In other words, even if the external resolver has
a variant for that flag, the UI would never get the variant.

The fix is to not just check `isEnabled` for false flags, but instead:
- use `getVariant`
- then check `variant.enabled` (in which case we have a variant and can
return it)
- else check `variant.feature_enabled`, falling back to `isEnabled` only
if `feature_enabled` is null/undefined.
2025-11-12 12:00:27 +01:00
Gastón Fournier
6732278e65
Revert "chore: upgrade swagger-parser" (#10965)
Reverts Unleash/unleash#10946 also impacting
https://github.com/bricks-software/unleash-enterprise/pull/639

Swagger parser resulted in an increase in the memory baseline or at
least seems to be the culprit, due to loading ajv validations upfront.
2025-11-12 09:27:01 +01:00
Simon Hornby
c5f0b50b30
chore: slightly simpler quick start setup (#10933)
Co-authored-by: Melinda Fekete <melinda.fekete@getunleash.io>
2025-11-11 17:10:27 +02: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
6f02edce2d
chore: move delta diffing to a different feature flag (#10962)
Move delta diffing to a different feature flag
2025-11-11 10:55:37 +00: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
Jaanus Sellin
96118836d5
chore: remove release plans from getFeature endpoint (#10955) 2025-11-10 15:06:21 +02:00
Mateusz Kwasniewski
529726decf
feat: safeguard form draft (#10954) 2025-11-10 13:56:54 +01:00
Gastón Fournier
142b5a5d95
chore: decrease log level of acquire job lock (#10952)
This was done in order to debug the functionality, now it serves no
purpose
2025-11-10 10:38:15 +00:00
Mateusz Kwasniewski
8da2fa83cc
feat: milestone progression keyboard navigation (#10950) 2025-11-10 11:11:22 +01:00
Thomas Heartman
1cab7eaa78
chore: replace deprecated getDefaultVariant with defaultVariant (#10944)
Updates the flag resolver and other references to the unleash client's
deprecated `getDefaultVariant` to instead point to the `defaultVariant`
property instead, as described by the deprecation notice:


46bf068d26/src/variant.ts (L55-L60)
2025-11-10 11:11:00 +01:00