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

859 Commits

Author SHA1 Message Date
Mateusz Kwasniewski
6f7f48a361
Revert "chore: use logger instead of console.error" (#10153)
Reverts Unleash/unleash#10150
2025-06-17 17:20:39 +02:00
Gastón Fournier
0bad9101fc
chore: use logger instead of console.error (#10150) 2025-06-17 15:37:57 +02:00
Mateusz Kwasniewski
02876a1c08
feat: expose impact metrics (#10151) 2025-06-17 14:17:46 +02:00
Mateusz Kwasniewski
d2b9751e01
feat: translate impact metrics to prom format (#10147) 2025-06-17 11:52:41 +02:00
Christopher Kolstad
c165e87d74
chore: now expose IFeatureUsageInfo to override telemetry checking (#10149)
Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-06-17 11:27:47 +02:00
Christopher Kolstad
c13ab85b1c
feat: report hostedBy and licenseType (#10141)
Added two new fields to FeatureInfo (what gets reported as telemetry)
reporting license type and hostedBy. Will be overriden in Enterprise.
2025-06-13 12:44:21 +00:00
Christopher Kolstad
b70f862f93
fix: md5 is deprecated and fails FEDRAMP. Replace with sha256 (#10125)
#10121 points out that we're using md5 functions still. This PR updates
our migrations to no longer use md5 at all (so if you haven't run the
migrations, you won't get email hashes until you get to the included
migration with this PR). If you've already run the migrations, we'll
drop the existing `email_hash varchar(32)` column and replace it with a
`email_hash TEXT` column.

We're also replacing the md5 function with `encode(sha256(email),
'hex')`. encode has been supported since PG10, sha256 came with PG11.

Do we want an index on the email_hash? I wasn't sure, but if we want to
do lookup we probably should have an index on it (though not a unique
one)
2025-06-13 09:41:40 +02:00
Gastón Fournier
37a125f0b5
feat: ability to query users with pagination (#10130)
Made a few QoL improvements:
- Don't use default export for class
- Move users store to a feature package (didn't move the interface as it
might be referenced elsewhere)
- Add types for query builders (and ts-expect-error when needed)
2025-06-12 17:43:22 +02:00
Tymoteusz Czech
4e48d90ed8
fix: use technicalDebt property from backend (#10111)
Frontend should load `technicaDebt` from backend instead of
re-calculating it.
2025-06-12 16:50:29 +02:00
Tymoteusz Czech
a5e5ea0436
feat: update backend to include technicalDebt field (#10088)
Deprecate `health` for a more descriptive `technicalDebt` in project-related services and schemas.
2025-06-06 16:27:41 +02:00
Gastón Fournier
bdb763c9d5
chore!: remove deprecated default env from new installs (#10080)
**BREAKING CHANGE**: DEFAULT_ENV changed from `default` (should not be
used anymore) to `development`

## About the changes
- Only delete default env if the install is fresh new.
- Consider development the new default. The main consequence of this
change is that the default is no longer considered `type=production`
environment but also for frontend tokens due to this assumption:
724c4b78a2/src/lib/schema/api-token-schema.test.ts (L54-L59)
(I believe this is mostly due to the [support for admin
tokens](https://github.com/Unleash/unleash/pull/10080#discussion_r2126871567))
- `feature_toggle_update_total` metric reports `n/a` in environment and
environment type as it's not environment specific
2025-06-06 12:02:21 +02:00
Gastón Fournier
f1c2706db7
chore: prepare to remove default env (#10087)
Use DEFAULT_ENV instead of just 'default'
2025-06-06 09:20:16 +02:00
David Leek
1aadbb3641
chore(apitoken)!: remove ILegacyApiTokenCreate (#10072) 2025-06-04 11:41:37 +02:00
Christopher Kolstad
8d7a0fdd7f
chore(adminapi)!: Remove deprecated project overview (#10069)
BREAKING CHANGE: As part of the preparation for a new major (7.0) this
removes /api/admin/projects/{projectId} endpoint. It has been deprecated
since 5.8, and we don't use it anymore in our frontend.
2025-06-04 09:59:36 +02:00
Gastón Fournier
5019f4fcbc
chore!: removing userId strategy for new installations of Unleash (#9800)
This removes a strategy that was already deprecated, but only for new
installations.

I tested starting with an installation with this strategy being used and
then updating, and I was still able to edit the strategy, so this should
not impact current users.

On a fresh install the strategy is no longer available.

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2025-06-04 09:30:13 +02:00
Christopher Kolstad
8050f25add
chore(adminapi)!: Remove feature variant endpoints (#10071)
BREAKING CHANGE: This removes the
GET /api/admin/projects/{project}/features/{featureName}/variants 
PATCH /api/admin/projects/{project}/features/{featureName}/variants 
PUT /api/admin/projects/{project}/features/{featureName}/variants
endpoints

Users should move to environment or strategy specific variant methods
rather than feature level variant methods.
2025-06-04 09:09:52 +02:00
Mateusz Kwasniewski
0819b2cf32
chore: remove link flags (#10076) 2025-06-03 13:47:24 +02:00
Mateusz Kwasniewski
68660e1e1f
chore: remove flag removeInactiveApplications (#10075) 2025-06-03 13:22:11 +02:00
Nuno Góis
6d70265edd
chore: clean up project related tech debt (#10065)
https://linear.app/unleash/issue/2-3581/remove-project-related-legacy-code

Identified some clean up opportunities during deprecated endpoint
removal, mostly related to project insights.
2025-06-03 09:21:55 +01:00
Gastón Fournier
63bf01d211
chore: print out 10 unknown flag names (#10062)
- Move logs, and replace a debug log with just the info log while adding
appName to it
- Print out at most 10 invalid flag names
2025-05-30 12:24:41 +02:00
Jaanus Sellin
d8c83fb824
fix: do not allow creating cr for same environment (#10010)
If there are two concurrent requests to create or edit change requests,
two separate ones may be created in parallel. The UI does not currently
handle this scenario, and if additional changes are made, they might be
added to a random existing change request—resulting in a messy and
unpredictable state.

This PR adds a unique index to the `change_requests` table 
```
on (created_by, project, environment)
WHERE state NOT IN ('Applied', 'Cancelled', 'Rejected', 'Scheduled').
```

In the extremely rare case where such conflicting data already exists in
a database, the migration will automatically cancel one of the
conflicting change requests.
2025-05-30 08:20:11 +03:00
Nuno Góis
eef32b7cf5
chore!: remove deprecated put project groups roles endpoint (#10059)
https://linear.app/unleash/issue/2-3361/remove-put-apiadminprojectsprojectidgroupsgroupidrolesroleid

Removes PUT
`/api/admin/projects/{projectId}/groups/{groupId}/roles/{roleId}` which
was deprecated in v5.5.
Also cleans up related code.
2025-05-29 14:03:59 +01:00
Nuno Góis
1f4aa0ed34
chore!: remove deprecated delete project groups roles endpoint (#10036)
https://linear.app/unleash/issue/2-3362/remove-delete-apiadminprojectsprojectidgroupsgroupidrolesroleid

Removes DELETE
`/api/admin/projects/{projectId}/groups/{groupId}/roles/{roleId}` which
was deprecated in v5.5.
Also cleans up related code.
2025-05-28 12:11:17 +01:00
Nuno Góis
a419b8e098
chore: prefer searchEvents over deprecated methods (#10031)
https://linear.app/unleash/issue/2-3577/prefer-the-new-searchevents-method-over-deprecated-methods

We should favor our new `searchEvents` method over the other deprecated
methods. This PR removes these deprecated methods, replaces them with
the new `searchEvents` and `searchEventsCount` methods, and marks the
old endpoints as deprecated.

Follow-up to: https://github.com/Unleash/unleash/pull/10030
2025-05-27 16:19:10 +01:00
Jaanus Sellin
2879ce9dd6
fix: make revision id not be so reactive (#10032)
Unleash is being too reactive to events inside Unleash. We should not
update etag if feature is created or tag is added to feature.

This PR adds this condition and adds test for it.
2025-05-27 16:16:26 +03:00
Nuno Góis
290ef6ca40
chore!: remove deprecated POST events search endpoint (#10030)
https://linear.app/unleash/issue/2-3368/remove-post-apiadmineventssearch-deprecated-in-610

Removes POST `/api/admin/events/search` which was deprecated in v6.1.
Also cleans up related code.
2025-05-27 09:12:36 +01:00
Nuno Góis
e52fcd11e0
chore!: remove deprecated POST ui-config endpoint (#10027)
https://linear.app/unleash/issue/2-3472/remove-post-apiadminui-config-deprecated-in-690

Removes POST `/api/admin/ui-config` which was deprecated in v6.9.
Also cleans up related code.
2025-05-26 10:22:16 +01:00
Gastón Fournier
27781fea47
chore: remove console.log and reuse package scripts (#10025)
Make `start:dev` re-use `dev:backend`, the only difference is start:dev
runs a clean before running
2025-05-23 12:24:03 +02:00
Jaanus Sellin
5fb718efcd
feat: custom metrics poc (#10018)
Now we can receive custom metrics, return those for UI and have extra
prometheus endpoint for it.

---------

Co-authored-by: Christopher Kolstad <chriswk@getunleash.io>
2025-05-21 16:55:30 +03:00
Thomas Heartman
9955267d39
Chore(1-3753)!: block deletion of context fields in use (#10005)
Blocks deletion of context fields that are in use and updates the
"active usage" count to exclude use in archived flags.

- Before allowing you to delete a context field, checks if it is in use
by any strategies. If so, returns a 409 error.
- Updates what we count as "in use" to exclude flags that have been
archived.

BREAKING CHANGE: Context fields can no longer be deleted if they are in
use by active (non-archived) flags.
2025-05-19 13:02:01 +02:00
Tymoteusz Czech
b0954f213c
chore: remove flagsReleaseManagementUI and flagsOverviewSearch flags (#10011)
Removing the `flagsReleaseManagementUI` and `flagsOverviewSearch`
feature flags - we're keeping these enabled.
2025-05-16 15:13:32 +02:00
Christopher Kolstad
b681702b77
task: migrate tests to vitest
Vitest Pros:
* Automated failing test comments on github PRs
* A nice local UI with incremental testing when changing files (`yarn
test:ui`)
* Also nicely supported in all major IDEs, click to run test works (so
we won't miss what we had with jest).
* Works well with ESM

Vitest Cons:
* The ESBuild transformer vitest uses takes a little longer to transform
than our current SWC/jest setup, however, it is possible to setup SWC as
the transformer for vitest as well (though it only does one transform,
so we're paying ~7-10 seconds instead of ~ 2-3 seconds in transform
phase).
* Exposes how slow our tests are (tongue in cheek here)
2025-05-16 11:19:10 +02:00
Nuno Góis
4d1b44818f
chore: remove filterExistingFlagNames feature flag (#9957)
https://linear.app/unleash/issue/2-3564/remove-filterexistingflagnames-feature-flag

We're removing the `filterExistingFlagNames` feature flag since we've
decided we want this to be the default behavior.

We don't need to rush to merge it, just in case we need to disable this
for any reason. However it should also be pretty easy to just revert if
needed.

Changes in tests are a bit tricky since they assumed the previous
behavior where we always registered metrics, even for non existing flag
names. `cachedFeatureNames` is also memoized with a TTL of 10s, so the
easiest way to overcome this was to override `cachedFeatureNames` to
return what we expected. As long as they return the same flag names that
we expect, we're able to register their metrics.

Let me know if you can think of a better approach.
2025-05-16 08:52:27 +01:00
Thomas Heartman
082a03afd7
Fix(1-3485)/handle deleted constraints (#9999)
Improves handling of constraints in use that have been deleted.

This change implments a few small changes on both the front and the back
end on how we deal with constraints that have been deleted.

The most important change is on the back end, in the
`/constraints/validate` endpoint. We used to throw here if the
constraint couldn't be found, but the only reason we wanted to look for
the constraint in the db was to check for legal values. Now, instead,
we'll allow you to pass a constraint field that doesn't exist in the
database. We'll still check the values against the operator for
validity, we just don't control legal values anymore (because there
aren't any).

On the front end, we improve the handling by showing the deleted context
filed in the dropdown, both when the selector dropdown is closed and
when it is open. However, if you change the context field, we remove the
deleted field from the list. This seems like a sensible tradeoff. Means
you can't select it if you've deselected it.
2025-05-15 13:08:54 +02:00
Tymoteusz Czech
4d92d54f9a
feat: track last seen clients using bulk update (#9981)
Let's not update `lastSeen` in the db on each client call
2025-05-15 13:06:54 +02:00
Gastón Fournier
abe160eb7d
feat: Unleash v7 ESM migration (#9877)
We're migrating to ESM, which will allow us to import the latest
versions of our dependencies.

Co-Authored-By: Christopher Kolstad <chriswk@getunleash.io>
2025-05-14 09:47:12 +02:00
Nuno Góis
e7da79d974
refactor: clean up dead code after removing deprecated project role access endpoint (#9949)
https://linear.app/unleash/issue/2-3363/remove-post-apiadminprojectsprojectidroleroleidaccess-deprecated-in

Cleans up dead code after removing POST
`/api/admin/projects/{projectId}/role/{roleId}/access` which was
deprecated in v5.5.

Should only be merged after the Enterprise PR.
2025-05-13 13:52:13 +01:00
Fredrik Strand Oseberg
94c73bbc5d
feat: event log environment filter (#9979)
Add Environment Filter to Event Log
2025-05-13 13:45:22 +02:00
Nuno Góis
c0c7005859
refactor: remove deprecated post project role access endpoint (#9948)
https://linear.app/unleash/issue/2-3363/remove-post-apiadminprojectsprojectidroleroleidaccess-deprecated-in

Removes POST `/api/admin/projects/{projectId}/role/{roleId}/access`
which was deprecated in v5.5.
Also cleans up related code.

Needs follow up PRs.
2025-05-13 12:28:44 +01:00
Tymoteusz Czech
57d11ae6b3
feat: link templates applied on flags (#9976) 2025-05-13 13:16:26 +02:00
Nuno Góis
0429c1985a
refactor: remove deprecated get archive featured by project endpoint (#9938)
https://linear.app/unleash/issue/2-3367/remove-get-apiadminarchivefeaturesprojectid-deprecated-in-4110

Removes GET `/api/admin/archive/features/{projectId}` which was
deprecated in v4.11.
Also cleans up related code.

I leveraged our search features endpoint where needed, since that's what
we're using now in our UI (to see archived features you filter by
archived=true).

Builds on top of https://github.com/Unleash/unleash/pull/9924 — Since
they're both related.
2025-05-13 12:09:52 +01:00
Nuno Góis
42b6fc810e
refactor: remove deprecated GET archive features endpoint (#9924)
https://linear.app/unleash/issue/2-3366/remove-get-apiadminarchivefeatures-deprecated-in-4100

Removes GET `/api/admin/archive/features` which was deprecated in v4.10.
Also cleans up related code.

May include some slight scouting.

**P.S.** Should we merge this into main, or is there a `v7` branch we
should be targeting instead?
2025-05-13 11:45:03 +01:00
Mateusz Kwasniewski
410142cb42
feat: make all feature toggle service write methods transactional (#9973) 2025-05-13 12:16:20 +02:00
Tymoteusz Czech
309816ca38
feat: add getProjectLinkTemplates method (#9971)
Add `getProjectLinkTemplates` method to ProjectStore and corresponding
test. Ideally this should be in a read-model, but let's finish link
templates end to end
2025-05-13 11:21:18 +02:00
Mateusz Kwasniewski
9c05e56c4a
refactor: simplify feature toggle service deps (#9964) 2025-05-13 09:42:37 +02:00
Mateusz Kwasniewski
d175a5705a
feat: Import feature links (#9958) 2025-05-12 13:59:18 +02:00
Tymoteusz Czech
520d708978
fix: ensure linkTemplates defaults to an empty array if not provided 2025-05-12 13:21:06 +02:00
Mateusz Kwasniewski
5708acb5b7
feat: export feature links (#9954) 2025-05-12 12:07:00 +02:00
Tymoteusz Czech
f55ea5f387
chore: remove embedProxy flag (#9874)
Clean up old flags
2025-05-12 10:28:31 +02:00
Mateusz Kwasniewski
e414c4446d
feat: remove instances older than 1 day not 2 days (#9944) 2025-05-09 13:58:52 +02:00