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

4298 Commits

Author SHA1 Message Date
Nuno Góis
88b147ff9a
chore: add quick filter for custom strategies 2025-09-24 11:26:43 +01:00
Mateusz Kwasniewski
efdfb67c9f
feat: histogram impact metric UI (#10684) 2025-09-24 10:53:58 +02:00
Nuno Góis
b4ad9c964f
chore: adjust add strategy modal height (#10677)
https://linear.app/unleash/issue/2-3893/set-a-minimum-height-in-the-release-template-preview-dialog

Adjusts the "add strategy" and "release template preview" modal heights,
ensuring better visual consistency between them.
2025-09-23 16:25:51 +01:00
Nuno Góis
63b0006b46
chore: update strategy cards background color (#10681)
https://linear.app/unleash/issue/2-3895/update-cards-background-color

Updates the strategy cards background color to match the designs.

<img width="985" height="569" alt="image"
src="https://github.com/user-attachments/assets/6b6e1dd3-b811-4841-8858-4046f3c79717"
/>
2025-09-23 13:54:25 +01:00
Thomas Heartman
4dd97b97f4
chore: use paginated table for change request list (#10660)
Adds a paginated table to the change request overview page and
integrates it with the search API hook.

The current implementation still has some rough edges to work out, but
it's getting closer.

There's no sort buttons in this implementation. I've got it working on
the side, but TS is complaining about types not matching up, so I'm
spinning that out to a separate PR.

<img width="1808" height="1400" alt="image"
src="https://github.com/user-attachments/assets/bdee97b7-ee2a-46c0-8460-a8b8e14d3c92"
/>
2025-09-23 12:05:11 +00:00
Thomas Heartman
6be5e6c969
fix: don't call location hook conditionally in CR badge (#10676)
Fixes a bug where I added a conditional hook call in
https://github.com/Unleash/unleash/pull/10651.
2025-09-23 10:46:23 +02:00
Nuno Góis
f36b39b721
chore: update release template preview dialog (#10673)
https://linear.app/unleash/issue/2-3888/update-the-release-templates-preview-dialog-to-match-the-new-designs

Updates the release template preview dialog when using the new "add
strategy" modal, so it better matches the new design.

Used the legacy file pattern to leave the previous modal component
unchanged.

<img width="992" height="467" alt="image"
src="https://github.com/user-attachments/assets/fd000822-c987-47be-b8a4-3f137e0291ec"
/>

<img width="979" height="576" alt="image"
src="https://github.com/user-attachments/assets/02a27d5c-4480-4a49-88ae-0d573ff0f640"
/>
2025-09-22 14:55:24 +01:00
Nuno Góis
a1691fead7
chore: add new strategy icons (#10665)
https://linear.app/unleash/issue/2-3879/add-new-strategy-icons

Adds new strategy icons in the new "add strategy" modal.

<img width="983" height="564" alt="image"
src="https://github.com/user-attachments/assets/dc39379d-f8c0-41ec-9510-61b6115acfa5"
/>

<img width="988" height="565" alt="image"
src="https://github.com/user-attachments/assets/dba642f1-bf37-4e49-906d-dcd88fdaf1e0"
/>
2025-09-22 11:26:52 +01:00
Nuno Góis
2e2840e690
chore: persist strategy filter when going back from release template preview (#10663)
https://linear.app/unleash/issue/2-3878/persist-strategy-filter-when-going-back-from-the-release-template

Persists the strategy filter in the new "add strategy" modal when going
back from the release template preview modal.

This is done by moving the filter to the parent component, so the filter
state persists across these navigations.

Also updates the button text in the release templates preview to say
"Apply template" for consistency, but only if the `newStrategyModal`
flag is enabled.
2025-09-22 10:52:28 +01:00
Mateusz Kwasniewski
7d70f8fc55
fix: encode application name (#10671) 2025-09-19 11:24:17 +02:00
Nuno Góis
af0b3529b7
chore: update strategy cards in new add strategy modal (#10659)
https://linear.app/unleash/issue/2-3867/update-strategy-cards

Updates the new "add strategy" modal strategy cards.

Followed the same logic as before where I took a snapshot of existing
components and prefixed them with `Legacy`.

Does not include the new icons.

<img width="979" height="562" alt="image"
src="https://github.com/user-attachments/assets/8cb45c78-ad67-41f2-a6e2-db48fefbabdb"
/>

<img width="317" height="108" alt="image"
src="https://github.com/user-attachments/assets/fb692ebc-26ad-4331-813a-baaf56d0df7e"
/>
2025-09-12 10:14:21 +01:00
Thomas Heartman
c843518de4
chore: scroll to the top of table when changing page (#10657)
Makes it so that if you change the page in a paginated table, you'll
scroll to the top of the table. Makes the experience more user friendly.

Will only scroll if the top of the table isn't in view already.

Also scrolls to the top of the table when you change the page size
unless: you are on the first page **and** increasing the page size.

The reason for this behavior is:
- we already send you back to page 1 if you change the page size (so it
makes sense to also scroll you to the top)
- if you're increasing the page size because you're at the bottom of the
table, you probably wanna keep your place
- if you're decreasing the page size, you might be below where the
actual table cuts off, so you'll end up at the bottom of the table (or
below the table completely if that's possible on that page)
2025-09-12 10:40:48 +02:00
Tymoteusz Czech
e79fa33647
fix: quick project filters total calculation (#10658) 2025-09-11 16:29:04 +02:00
Tymoteusz Czech
4b42435590
feat(frontend): quick filters on project overview (#10638) 2025-09-11 13:28:59 +02:00
Nuno Góis
be4665f3f1
chore: update release templates empty states in new add strategy modal (#10656)
https://linear.app/unleash/issue/2-3876/update-the-release-templates-section-accordingly

Updates the release templates empty states in the new add strategy modal
to match the new design sketches.

Also fixes a few details in the modal base design.

<img width="989" height="583" alt="image"
src="https://github.com/user-attachments/assets/b3148fe1-eb61-48d5-84cb-3dc4381f7c0c"
/>

<img width="981" height="581" alt="image"
src="https://github.com/user-attachments/assets/54f9a4d7-8cde-4f4b-bc9d-dc7114d7e17f"
/>
2025-09-11 11:19:55 +01:00
Nuno Góis
c0eedba400
chore: small updates to the new add strategy modal design (#10646)
https://linear.app/unleash/issue/2-3877/small-changes-to-match-the-new-designs

This adds 2 changes in our new "add strategy" modal to better align with
our sketches:
- Remove the "Custom strategies" filter: According to the designs,
they're part of the "Advanced strategies" filter;
- Update the project default tooltip in case you don't have access to
the project default strategy configuration;

Here are the design references:

<img width="330" height="148" alt="image"
src="https://github.com/user-attachments/assets/c508e776-5f54-4402-b148-321ea99e1134"
/>

<img width="657" height="371" alt="image"
src="https://github.com/user-attachments/assets/c9d8be22-99a3-46e3-b7a7-a77b94e0aa60"
/>

And this is how it looks like after this PR:

<img width="335" height="116" alt="image"
src="https://github.com/user-attachments/assets/f1e0cbec-d79a-49b6-a8a7-1b15f3f2726e"
/>

<img width="984" height="401" alt="image"
src="https://github.com/user-attachments/assets/7271ab5c-721e-4624-aebe-d3c5d7e402dd"
/>
2025-09-11 10:50:16 +01:00
Thomas Heartman
fabf76e12c
feat: global change requests table (#10650)
Adds basic table layout for the global change requests page and makes
the page accessible at `/change-requests`.

The table is based on the project-based change request table, but with a
slightly different set of columns.

Uses mock data for now. 

There's still some styling to be done for the column widths and handling
narrower screens.

<img width="1386" height="671" alt="image"
src="https://github.com/user-attachments/assets/b24ed625-d3f6-4281-ba44-30744d5063f3"
/>

If the flag is disabled, we render nothing useful.
<img width="1429" height="287" alt="image"
src="https://github.com/user-attachments/assets/289b5707-4389-4c08-bf68-55d63e186ba5"
/>


closes 1-4076
2025-09-11 10:15:57 +03:00
Thomas Heartman
d3e7e67b91
Fix: use locale string for change request time badge. (#10651)
Uses the user's preferred date / time formatting for the scheduled at
time in CR schedule badges.

Before (en-US formatting):
<img width="291" height="58" alt="image"
src="https://github.com/user-attachments/assets/edb04292-4678-4bfd-93a1-8fd2a3f01a1f"
/>

After (ja formatting):
<img width="308" height="106" alt="image"
src="https://github.com/user-attachments/assets/9828355f-0c23-4b8f-bef3-a0173e92c306"
/>
2025-09-11 09:13:26 +02:00
Thomas Heartman
aec3461159
chore: change from "change requests" to "open" in project change request tabs (#10648)
For some reason, the two change request tabs are called "Change
Requests" and "Closed", instead of "Open" and "Closed".

I suspect this may be an error, but this fixes it. 

Before:
<img width="383" height="176" alt="image"
src="https://github.com/user-attachments/assets/faf95827-f384-4187-bc0b-f32b8fbbef41"
/>

After:
<img width="372" height="166" alt="image"
src="https://github.com/user-attachments/assets/67528024-7783-42e3-b014-bad4f7bc871b"
/>
2025-09-10 16:05:22 +02:00
Thomas Heartman
509dd80f86
chore: Update from "toggles" to "flags" (#10647)
Updates the features cell text when you have lots of flags affected.

Looks like we missed this one in a previous renaming attempt.

Before:
<img width="245" height="154" alt="image"
src="https://github.com/user-attachments/assets/922334f4-a0f1-4dee-9d14-3c9b3f77f32c"
/>

After:
<img width="275" height="170" alt="image"
src="https://github.com/user-attachments/assets/7fa0f454-e695-46aa-918b-c22b97e94187"
/>
2025-09-10 16:05:18 +02:00
Nuno Góis
a5adac5d8d
chore: add quick filters to add strategy modal (#10641)
https://linear.app/unleash/issue/2-3868/add-strategy-filters-at-the-top

Adds quick filters to our "add strategy" modal.

`FeatureStrategyMenuCards.tsx` was getting increasingly complex, so this
includes some refactoring.

My quick filters implementation was generic enough that I added
`QuickFilters.tsx` as a common component, maybe we can reuse it in the
future.

<img width="991" height="663" alt="image"
src="https://github.com/user-attachments/assets/352b6d2d-c975-4cb1-9799-163dfb153ccb"
/>

<img width="985" height="358" alt="image"
src="https://github.com/user-attachments/assets/a7d20dab-2774-409f-8940-f0d1a980b819"
/>
2025-09-10 12:14:14 +01:00
Mateusz Kwasniewski
b55a961da0
refactor: centralize pagination options (#10636) 2025-09-09 14:00:55 +02:00
Mateusz Kwasniewski
6198900014
fix: limit reset when no pagination bar (#10634) 2025-09-09 13:18:33 +02:00
Nuno Góis
2cd8135988
chore: new add strategy modal design (#10633)
https://linear.app/unleash/issue/2-3870/new-modal-design

New "add strategy" modal base design.

We're still missing a few details, like the new card design and the
filters at the top, but those will come in follow-up PRs.

### New layout

<img width="986" height="597" alt="image"
src="https://github.com/user-attachments/assets/2bc83117-97a8-4b59-a187-73ef9a7d0469"
/>

### Default strategy tooltip, with a link to the default strategy
settings

<img width="326" height="119" alt="image"
src="https://github.com/user-attachments/assets/45da60cb-088b-4b6e-bead-f9ef13a2540b"
/>

### Default strategy with a custom title

<img width="318" height="163" alt="image"
src="https://github.com/user-attachments/assets/9c9862db-f21d-409f-8dc1-63673f00ba2e"
/>
2025-09-09 10:57:06 +01:00
Tymoteusz Czech
edaea80f0c
refactor: new endpoint for global impact metrics saving (#10631)
Use `impact-metrics/config` for saving global charts.
2025-09-09 09:22:43 +02:00
Nuno Góis
b8cdd1d004
chore: add newStrategyModal flag (#10629)
https://linear.app/unleash/issue/2-3865/add-newstrategymodal-feature-flag

Adds `newStrategyModal` feature flag.

The approach here is to duplicate the existing
`FeatureStrategyMenuCards` into a `LegacyFeatureStrategyMenuCards`.
We'll continue working on the `FeatureStrategyMenuCards` component while
leaving `LegacyFeatureStrategyMenuCards` untouched. Once we're done with
the implementation and remove the flag we can drop the legacy file.

I think it's easier to reduce our add strategy buttons to a single one
right away (like we did with the `addConfiguration` flag in
https://github.com/Unleash/unleash/pull/10420). This allows us to focus
on the end result instead of having to implement things like "clicking
the 'add release template' button should show the modal filtered to only
release templates".

<img width="735" height="126" alt="image"
src="https://github.com/user-attachments/assets/6d10fab2-d091-40f3-9c36-05a6f28f7dda"
/>

<img width="995" height="742" alt="image"
src="https://github.com/user-attachments/assets/a0fb9366-89b5-44e1-a684-47ee30d6d36c"
/>
2025-09-08 12:16:27 +01:00
unleash-bot[bot]
9540ed6e3d
chore(AI): addConfiguration flag cleanup (#10628)
This PR cleans up the addConfiguration flag. These changes were
automatically generated by AI and should be reviewed carefully.

Fixes #10627

## 🧹 AI Flag Cleanup Summary
This change removes the `addConfiguration` feature flag. The feature was
discarded, so this cleanup reverts the UI to its state before the
`addConfiguration` flag was introduced. The primary change is in the
strategy
menu, where the single "Add configuration" button is removed and the
original
"Use template," "Add strategy," and "More" buttons are restored.
### 🚮 Removed
- **Flag Definitions**
- `addConfiguration` flag from `experimental.ts` on the backend.
- `addConfiguration` flag from `uiConfig.ts` on the frontend.
- `addConfiguration: true` from the `server-dev.ts` config.
- **UI Components & Logic**
- The conditional rendering in `FeatureStrategyMenu.tsx` that showed an
"Add
configuration" button.
- The `useUiFlag('addConfiguration')` hook call and its import from
`FeatureStrategyMenu.tsx`.
### 🛠 Kept
- **UI Components & Logic**
- The original set of buttons in `FeatureStrategyMenu.tsx`: "Use
template",
"Add strategy", and a "More strategies" icon button. This was the code
path for
when the flag was disabled.
### 📝 Why
The `addConfiguration` feature flag was marked as completed with the
outcome
"discarded". This cleanup removes the flag and all related code,
preserving only
the intended code path, which is the UI behavior from before the flag
was
introduced.

---------

Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Nuno Góis <github@nunogois.com>
2025-09-08 07:38:10 -03:00
Tymoteusz Czech
82c79a8216
feat: add borders and spacing to feature impact metrics (#10625) 2025-09-05 10:10:25 +00:00
Mateusz Kwasniewski
33d898f684
feat: change flag impact metrics url structure (#10624) 2025-09-05 11:28:35 +02:00
Tymoteusz Czech
29dc6c746d
feat: split impact metrics label filter into sections (#10623) 2025-09-05 09:26:23 +02:00
Mateusz Kwasniewski
4e4950adb7
feat: grid layout for flag impact metrics (#10619) 2025-09-04 15:09:49 +02:00
Mateusz Kwasniewski
4a00792f1e
feat: rename impact metrics fields to match prometheus and grafana (#10616) 2025-09-04 11:51:29 +02:00
Tymoteusz Czech
e96f981816
refactor: LabelFilterItem "select all" functionality (#10610) 2025-09-04 10:03:21 +02:00
Mateusz Kwasniewski
3b1592b329
feat: flag impact metrics use update feature permission (#10615) 2025-09-04 09:58:45 +02:00
Mateusz Kwasniewski
f8990a40ba
feat: edit impact metrics (#10614) 2025-09-03 16:55:34 +02:00
Mateusz Kwasniewski
cc8a950348
feat: delete flag impact metrics (#10613) 2025-09-03 15:58:39 +02:00
Thomas Heartman
295a3abd59
fix: Only show "not enough data" text when there isn't enough data. (#10604)
The previous implementation had a small bug where it would show "not
enough data" even if the graph was loading. This commit fixes that.

While working, I thought that maybe we should keep the current data
while we're fetching new data instead of adding a cover, but all the
other graphs use a cover when loading, so I've not made any changes to
that effect.
2025-09-03 12:23:36 +02:00
Nuno Góis
fb40bb07c4
chore: slight update to unknown flags alert text (#10602)
https://linear.app/unleash/issue/2-3850/update-unknown-flag-alert

Small update to the unknown flags alert text.

<img width="994" height="776" alt="image"
src="https://github.com/user-attachments/assets/a69cdc63-b0f8-4b1b-9323-7cfdb4ba5b31"
/>
2025-09-03 10:17:17 +01:00
Thomas Heartman
778eaa9873
chore: Add a cover for when we don't have enough data to show the chart (#10599)
Adds a cover to the archived vs created flag chart if we don't have
enough data or if the data is loading. Follows the pattern established
in the other analytics charts.

Because the values for a placeholder bar chart are different than for a
placeholder line chart, I've added in actual placeholder values. This
also makes the gives the chart in question two bars per category, even
in the placeholder data, which matches nicely with the actual graph.

Before:
<img width="2272" height="974" alt="image"
src="https://github.com/user-attachments/assets/3336717f-acc8-4d23-a208-138259d6d3c7"
/>


After: 
<img width="1131" height="487" alt="image"
src="https://github.com/user-attachments/assets/5189e323-c636-4089-b4eb-30b231b09b8b"
/>

In context with the other charts: 
<img width="1392" height="1744" alt="image"
src="https://github.com/user-attachments/assets/7809669c-dae8-496b-b89b-0913fab85c17"
/>
2025-09-03 09:02:10 +02:00
Nuno Góis
9a7f2c520a
chore: add server-side search to archived flags (#10600)
https://linear.app/unleash/issue/2-3842/archived-flag-not-showing

Adds server-side search to archived flags.

In the future we'll probably want to dedicate a project to this page, to
bring it up to speed with the flags overview page. In the meantime, this
bandaid fix at least allows us to search outside the 50 results limit.

Also added a small alert to better explain the current behavior: 

<img width="902" height="275" alt="image"
src="https://github.com/user-attachments/assets/ab3da3ca-3408-471a-a74a-abb65e95e012"
/>
2025-09-02 16:44:28 +01:00
Thomas Heartman
c69634fda0
chore: Use custom highlighter for archive:creation chart (#10589)
Uses the same custom highlighter that we've used for the other analytics
charts, but customizes it for the archive : creation ratio chart. Also
removes the color change on hover from the bars.

Because this plugin (or a version of it) is also used in the network
traffic graphs, I've consolidated all the uses into a more configurable
one (because I was mistakenly working in the wrong file).

Before:
<img width="596" height="392" alt="image"
src="https://github.com/user-attachments/assets/d4270a6d-b1c6-47ff-8e98-424d0e7fe089"
/>


After:

<img width="1141" height="476" alt="image"
src="https://github.com/user-attachments/assets/aa10aa87-e111-4a75-8dce-4a2fec7af8ad"
/>
2025-09-02 15:20:12 +02:00
unleash-bot[bot]
dfa89d7d58
chore(AI): reportUnknownFlags flag cleanup (#10596)
This PR cleans up the reportUnknownFlags flag. These changes were
automatically generated by AI and should be reviewed carefully.

Fixes #10595

## 🧹 AI Flag Cleanup Summary
This change removes the `reportUnknownFlags` feature flag and makes its
functionality a permanent part of the application. The "Unknown flags"
feature
is now always enabled.
### 🚮 Removed
- **Flag Definitions**
- Removed `reportUnknownFlags` from `IFlagKey` and `UiFlags` types.
- Removed `reportUnknownFlags` from the experimental flags configuration
in `src/lib/types/experimental.ts`.
- Removed the flag from development and test configurations
(`src/server-dev.ts`, `unknown-flags.e2e.test.ts`).
- **Conditional Logic**
- Removed conditional checks for `reportUnknownFlags` in backend
services
(`UnknownFlagsService`, `ClientMetricsServiceV2`) and API controllers
(`UnknownFlagsController`).
- Removed `useUiFlag('reportUnknownFlags')` and related conditional
rendering from frontend components (`UnknownFlagsTable`,
`FeatureToggleListTable`). The UI elements are now always visible.
- Modified the `useUnknownFlags` hook to always fetch data.
### 🛠 Kept
- **Core Functionality**
- The feature to report and display unknown flags is now always active.
- The "Unknown flags" link is now permanently visible on the feature
flags
overview page.
- Backend logic for processing and storing unknown flags is now always
executed.
### 📝 Why
The `reportUnknownFlags` feature flag was marked as completed with the
feature
being kept. This cleanup removes the flag and its associated conditional
logic,
simplifying the code and making the unknown flags reporting a permanent
feature.

---------

Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Nuno Góis <github@nunogois.com>
2025-09-02 14:18:35 +01:00
Thomas Heartman
5b7f069705
fix: show first date in archived to created chart (#10598)
Ensures that the first date of the data is also shown.

Before:
<img width="1144" height="441" alt="image"
src="https://github.com/user-attachments/assets/33da968a-4f44-4ca9-825e-d19471cff00a"
/>


After:
<img width="1132" height="435" alt="image"
src="https://github.com/user-attachments/assets/65d009d4-5bcb-40d0-abb6-05be81c9a361"
/>
2025-09-02 12:21:01 +00:00
Mateusz Kwasniewski
88d384573f
feat: read feature impact metrics (#10597) 2025-09-02 13:16:57 +02:00
Jaanus
6c11b57c53
fix: remove lifecycle backfill on every startup 2025-09-02 13:55:18 +03:00
Nuno Góis
597456d4b5
chore: make create feature flag button in unknown flags a text button (#10592)
https://linear.app/unleash/issue/2-3835/make-create-feature-flag-a-variant=text-button-instead-of-an-icon

Makes "create feature flag" button in unknown flags a text button.

<img width="1130" height="480" alt="image"
src="https://github.com/user-attachments/assets/2a5cb8f9-d0d1-486e-aaf9-cc02f39a2b6f"
/>
2025-09-02 11:52:43 +01:00
Nuno Góis
ed28d9f2b4
chore: one unknown flag per row (#10590)
https://linear.app/unleash/issue/2-3833/show-one-flag-name-per-row

Groups unknown flags by flag name, showing a single flag name per row.
This greatly simplifies the way we show unknown flags.

Just to be safe, we're limiting the app names we're showing to 20, and
environments per app name to 10.

Required some plumbing.

### Basic example
<img width="1350" height="866" alt="image"
src="https://github.com/user-attachments/assets/ad8ee198-e5f8-45e4-8e3b-f2d8b7701cf9"
/>

### App name search example, with highlight

<img width="367" height="204" alt="image"
src="https://github.com/user-attachments/assets/a1cc27ee-9ca1-4980-a3af-c08302c1d617"
/>
2025-09-02 10:47:02 +01:00
unleash-bot[bot]
547f7ac14e
chore(AI): changeRequestApproverEmails flag cleanup (#10572) 2025-09-02 08:51:00 +02:00
Nuno Góis
9ef81be488
chore: add unknown flags link in flags overview (#10591)
https://linear.app/unleash/issue/2-3834/add-link-to-unknown-flags-in-flags-overview

Adds an "Unknown flags" link on the top right corner of the flags
overview page.

Even though we're planning to remove the flag soon, this is still
controlled by the flag, just in case.

<img width="1370" height="311" alt="image"
src="https://github.com/user-attachments/assets/073725c3-35af-47fb-b7d4-5bc70c0c68cf"
/>
2025-09-01 18:18:07 +01:00
Mateusz Kwasniewski
bc075a4915
chore: orval feature impact metrics (#10588) 2025-09-01 16:10:54 +02:00