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

82 Commits

Author SHA1 Message Date
andreas-unleash
74c760bf4c
chore: remove changeRequestConflictHandling flag (#6364)
What it says on the tin

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2024-02-28 10:16:35 +02:00
andreas-unleash
9101c39eb7
chore: remove scheduledConfigurationChanges flag (#6360)
What is says on the box

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2024-02-27 14:57:34 +02:00
Mateusz Kwasniewski
20a9e1d725
refactor: remove unused components and rename new (#6357) 2024-02-27 12:22:47 +01:00
Mateusz Kwasniewski
c049374a25
chore: remove new strategy configuration flag (#6335) 2024-02-27 11:23:49 +01:00
Jaanus Sellin
03929e3031
feat: project applications UI (#6260)
![image](https://github.com/Unleash/unleash/assets/964450/a1129857-820c-4e93-ac59-ef5f4743d774)
2024-02-19 09:50:53 +02:00
Thomas Heartman
a8fa1ae347
fix: hide warnings that you'll overwrite changes on CRs that are already applied (#6214)
The current approach uses adds an extra parameter to the components and
passes it through from the parent components. It's never a lot of
levels, so it feels alright, but it's feels like a bit of a code smell.
I wonder if it would make sense to use a context for each change
request? 🤔

Supersedes: https://github.com/Unleash/unleash/pull/6181
2024-02-16 12:41:14 +08:00
Thomas Heartman
64a6af2858
feat: show info on what would be deleted (#6235)
This PR updates the way we show deleted strategies in the CR UI. Instead
of showing just the strategy name and a diff on hover, we show the same
strategy config as we do for new and updated strategies.

This makes it easier to see what you have deleted.

In doing so, it also fixes two issues:
1. inconsistent border radius for segment changes listed. Due to an
override in `frontend/src/themes/theme.ts`, these would get a border
radius of `theme.shape.borderRadiusLarge` instead of
`theme.shape.borderRadiusMedium`. It does this by adding a class and
making the selector more specific.
2. The background was unset for the strategy rollout box and constraint
item boxes.

It looks like this:

<img width="728" alt="image"
src="https://github.com/Unleash/unleash/assets/17786332/7cba28ac-0454-444d-8cfa-f46543ccf2dc">

<img width="728" alt="image"
src="https://github.com/Unleash/unleash/assets/17786332/832be653-3def-4afc-b72f-36fcd76ad83d">

Or with more kinds of strategies:
<img width="454" alt="image"
src="https://github.com/Unleash/unleash/assets/17786332/f18e5482-7d2e-4cbd-8177-9de6dfb10307">


Note: I'm happy to isolate the color changes to a separate PR if that's
preferable.
2024-02-16 04:13:40 +00:00
Thomas Heartman
2ab99624d2
feat: show env var conflicts in change requests (#6182)
This PR adds showing of env variant conflicts in change requests.

This is a simple solution that only compares the total state of
variants. We *could* potentially do a modified version where we show
each and every variant as its own property. Because variants have to be
unique by name and because their names can't be changed after their
creation, we could create a map of variant name to their data.

<img width="1105" alt="image"
src="https://github.com/Unleash/unleash/assets/17786332/0c67f958-6c4e-453a-9791-0e132fb1f23e">
2024-02-14 10:12:19 +09:00
Thomas Heartman
b77f3129f2
feat: show segment conflicts in crs (#6138)
This PR updates the diff calculation to work with both strategy changes
and segment changes. It also adds the corresponding segment change
conflict overview to segment updates.

<img width="1225" alt="image"
src="https://github.com/Unleash/unleash/assets/17786332/688a57a5-5cd7-4b0a-bd1e-df63189594d8">
2024-02-09 16:25:01 +09:00
Thomas Heartman
73c4c62ea3
chore: track metrics for how many CRs are moved into next state with conflicts (#6109)
Use React's context to track how many CRs are moved into their next
state with conflicts present.

This PR wraps environment change requests and change request overviews
in a change request plausible context that contains a
`willOverwriteStrategyChanges` property. This property is updated by the
diff calculation if there are any conflicts and then read by the
`changeState` function in the `useChangeRequestApi` hook.

As long as at least one of the strategies in the CR contain conflicts,
it will be marked as overwriting changes.
2024-02-05 18:27:11 +09:00
Thomas Heartman
99b8fa2943
refactor: take chatgpt's suggestions for diff calc algorithm (#6086)
We had to make some updates to let the compiler know about the types and
fix an issue with nested objects not being compared as objects (instead
as strings), but this saves us a few lines and is hopefully more
readable.
2024-02-01 19:57:09 +09:00
Jaanus Sellin
e4ca8a3e6c
feat: track search bar events (#6021)
Adding tracking for 2 views, when users use the new search. 

For features view and project view.
2024-01-24 14:23:23 +02:00
Thomas Heartman
01318b11ea
fix: show the updated value instead of the snapshot value (#5989)
This PR fixes a bug in the displayed value of the conflict list so that
it shows the value it would update to instead of the snapshot value.

In doing so, it updates the logic of the algorithm to:

1. if the snapshot value and the current value are the same, it's not a
conflict (it's an intended change)
2. If the snapshot value differs from the current value, it is a
conflict if and only if the value in the change differs from the current
value. Otherwise, it's not a conflict.

The new test cases are:
- it shows a diff for a property if the snapshot and live version differ
for that property and the changed value is different from the live
version
- it does not show a diff for a property if the live version and the
change have the same value, even if the snapshot differs from the live
version
- it does not show a diff for a property if the snapshot and the live
version are the same
2024-01-24 12:39:41 +04:00
Thomas Heartman
f7c8180145
Chore: omit snapshot property from event payload (#5972)
This PR hides the "snapshot" data from the diff overview we show in the
UI in a change request.
2024-01-22 11:13:49 +04:00
Thomas Heartman
0bb709a718
feat: show changes that would be overwritten in change request overview UI (#5964)
This PR adds a first, rough iteration of what it could look like to show
changes that would be overwritten by applying a PR.

The changes are listed in a table (semantically; looks more like a list
visually) and show the property, the current live value and the version
that you have in your changes. The changes are hidden by default, but
can be shown by expanding a details element.

@nicolaesocaciu Suggested that we merge this version for now and iterate
on the design later.

Here's what it looks like closed:

![image](https://github.com/Unleash/unleash/assets/17786332/3a641642-0537-4e7a-aeca-b3d3df6b8e31)

Here's what it looks like with a typical change load:

![image](https://github.com/Unleash/unleash/assets/17786332/b7aa7265-d1c7-4b6b-a9a2-f58cb966f25c)


Here's what it looks like if you change more or less every property
changed:

![image](https://github.com/Unleash/unleash/assets/17786332/4d94ab69-86ed-4c3e-be6a-6890c654e37e)
2024-01-22 11:13:38 +04:00
Thomas Heartman
01a38becb3
fix: handle title diffing correctly in strategy change diffs (#5971)
A strategy title can be either an empty string or undefined on the
type we use in the frontend. In the snapshot it can be an empty
string, null (presumably), and undefined.

This change updates the diffing logic to handle the various title diff
cases correctly. It also updates the type used for the snapshot to
reflect this.
2024-01-19 18:56:46 +04:00
Thomas Heartman
c69137a1ee
feat: add algorithm to detect what strategy changes would be overwritten by applying a CR (#5963)
This change adds an algorithm with tests for detecting what changes
would be overwritten by applying a CR.

Test cases:
- It compares strategies regardless of order of keys in the objects.
This ensures that two strategies with the same content but different
order of keys are compared correctly.
- It treats `undefined` or missing segments in old config as equal to
`[]` in change
- It treats `undefined` or missing strategy variants in old config and
change as equal to `[]`
- It lists changes in a sorted list with the correct values
- It ignores object order on nested objects. Similar to the first
point, this does order-insensitive comparison for nested objects (such
as params and constraints).
2024-01-19 13:08:08 +04:00
Fredrik Strand Oseberg
967ee13e62
fix: add symbols as constraint ids (#5913)
This PR adds uuids as ids using a symbol in order to make sure we only
use this to keep internal order in the viritual DOM. This makes us able
to have predictable mutable lists on the frontend, and makes it easy to
not pass this property along to the backend.
2024-01-16 13:47:04 +01:00
Thomas Heartman
39145e2617
refactor: use union types for change request types (#5870)
This changes the two interfaces IChangeRequest and
IChangeRequestSchedule to be union types instead of interfaces. It also
extracts the constituents of those union types into proper types
themselves (so that they can be used in function type signatures etc).
It also updates the type names.

This turned out to be more work than I had imagined, but I think the end
result pays off, giving us more type safety and control.

I wanted to use just `ChangeRequest` for the IChangeRequest type, but
that caused issues due to naming collisions with the `ChangeRequest`
component that we have, causing tests to fail. I've named it
`ChangeRequestType` as a potential solution, but suggestions are
welcome.

The relevant changes are in
`frontend/src/component/changeRequest/changeRequest.types.ts`.
Everything else is updated references and some necessary refactoring to
respect the new types.
2024-01-12 13:15:43 +05:30
Nuno Góis
b496990f79
chore: add no unused imports biome rule (#5855)
Adds a Biome rule for "no unused imports", which is something we
sometimes have trouble catching.

We're adding this as a warning for now. It is safely and easily fixable
with `yarn lint:fix`.


![image](https://github.com/Unleash/unleash/assets/14320932/fd84dea8-6b20-4ba5-bfd8-047b9dcf2bff)

![image](https://github.com/Unleash/unleash/assets/14320932/990bb0b0-760a-4c5e-8136-d957e902bf0b)
2024-01-11 12:44:05 +00:00
Fredrik Strand Oseberg
2a723ea9e8
fix: remove empty variants when changing tabs (#5850)
This PR makes a change to how variants work in the new setup. Variants
will now:

* Be removed if you change tab or unmount the component and it has no
name
* Moved StrategyVariants into a separate component to isolate this
change
* Add error handling around onSubmit and only trigger feedback if it's
successful
2024-01-11 10:43:29 +01:00
Fredrik Strand Oseberg
049c5b9afa
feat: variant name change on create (#5742)
This PR refactores the StrategyVariants component to be passed in from
the outside to the new form component. This allows us to pass in the
StrategyVariants with an "editable" property in the create form which we
use to determine the editable state of the name input field. If the
editable field is not passed in we keep the old behavior.

Notable changes:
* StrategyVariants is now passed in from the outside, allowing us to
define different props at call time
* Added tests for the new behavior, and for keeping the old behavior
(such as in edit strategy)
* Added tracking
2024-01-02 13:53:04 +01:00
andreas-unleash
12100b3912
fix: add padding to warning banner (#5720)
Closes #
[1-1830](https://linear.app/unleash/issue/1-1830/potential-conflict-warning-add-padding-8px)

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-12-21 14:58:17 +02:00
andreas-unleash
e0f83347ab
fix: hide variant diff if no change in ChangeRequestOverview (#5715)
Closes #
[1-1813](https://linear.app/unleash/issue/1-1813/do-not-show-variants-table-in-change-request-when-no-variant-change)

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-12-21 10:39:18 +02:00
Fredrik Strand Oseberg
864ae4530b
Feat/new strategy configuration header (#5655)
This PR adds more information to the header of the strategy according to
the new designs:

<img width="1298" alt="Skjermbilde 2023-12-15 kl 13 31 26"
src="https://github.com/Unleash/unleash/assets/16081982/73a3bc6b-c78b-4f24-b9f3-8a4b2c14e39c">
2023-12-15 14:09:47 +01:00
Fredrik Strand Oseberg
9dbb7ea9a9
feat: add initial setup for tabs (#5586)
This PR sets up the initial tab structure for the new strategy form
2023-12-11 13:39:21 +01:00
Thomas Heartman
a0a15416c4
feat: display potential conflicts in existing change requests (#5521)
This update displays schedule conflicts in active change requests (any
CR that isn't applied, canceled, or rejected).


![image](https://github.com/Unleash/unleash/assets/17786332/181c6c0a-f5de-4eed-9093-ac0109e1e8f3)
2023-12-04 13:33:28 +01:00
andreas-unleash
02451baaf2
feat: hide change actions when change request is scheduled (#5514)
Added 'Scheduled' state to the check for non-pending change requests

Closes #
[1-1680](https://linear.app/unleash/issue/1-1680/remove-edit-change-ui-when-cr-is-scheduled)
<img width="868" alt="Screenshot 2023-11-30 at 11 54 44"
src="https://github.com/Unleash/unleash/assets/104830839/8e6afec5-1353-4030-b49b-4a8f3eaee5f6">

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-11-30 12:52:29 +02:00
andreas-unleash
8ffc92af5b
fix: Only show strategy variant changes if there is a diff in the variants (#5353)
What it says on the box

Closes #
[1-1652](https://linear.app/unleash/issue/1-1652/remove-the-variants-from-change-request-page-when-not-modified)

![Screenshot 2023-11-16 at 11 26
05](https://github.com/Unleash/unleash/assets/104830839/8f25b82c-4dbc-46fb-bdd6-0e0049659c72)

![Screenshot 2023-11-16 at 11 25
46](https://github.com/Unleash/unleash/assets/104830839/e6366622-3a50-4a0e-bba2-6c1d34e64077)

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-11-22 09:50:03 +02:00
Mateusz Kwasniewski
af50fc2fd3
feat: visualize dependencies managment in change requests (#4978) 2023-10-10 10:36:13 +02:00
Nuno Góis
4167a60588
feat: biome lint frontend (#4903)
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome
to the frontend as well.


![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65)

Added a few `biome-ignore` to speed up the process but we may want to
check and fix them in the future.
2023-10-02 13:25:46 +01:00
Fredrik Strand Oseberg
d3e01d84d9
fix: account for array length (#4849)
Small fix to account for array length in conditional check
2023-09-27 15:12:01 +02:00
Fredrik Strand Oseberg
cefbf01934
feat: visualize feature variants on cr (#4809)
Adds a view over feature strategy variants on addStrategy or
editStrategy action
2023-09-22 16:17:41 +02:00
Nuno Góis
b4ef343d22
refactor: clean up some unused imports (#4597)
Should help cleaning up some of these:


![image](https://github.com/Unleash/unleash/assets/14320932/f0bcee80-1ec8-4935-b167-dc8e8b92cda2)
2023-09-01 15:32:15 +01:00
Jaanus Sellin
b2aa3ea049
feat: change request ui updates (#4574) 2023-08-27 20:35:27 +03:00
Mateusz Kwasniewski
cc62db46fb
feat: archive toggles in change request UI (#4563) 2023-08-25 13:38:57 +02:00
Mateusz Kwasniewski
f881103701
fix: diff component for ordering (#4552) 2023-08-23 12:17:59 +02:00
Mateusz Kwasniewski
3227e30f12
feat: Change request reject UI (#4489) 2023-08-15 09:08:26 +02:00
Jaanus Sellin
12dfb1f3eb
feat: add margin for segment constraints (#4481) 2023-08-11 14:07:41 +02:00
Mateusz Kwasniewski
c1fe43fe64
fix: diff no changes (#4480) 2023-08-11 12:31:23 +02:00
Jaanus Sellin
0e4485d0fc
feat: segment constraints in UI (#4472) 2023-08-10 20:12:17 +03:00
Jaanus Sellin
c1314a8ee8
feat: delete segment from CR (#4469) 2023-08-10 15:56:15 +03:00
Thomas Heartman
fe0c7087de
Add name with change info to segment changes (1-1230-update-name-change) (#4459)
Extract and reuse the component that we use for strategy name changes.

## Discussion points:

This impl only shows the new name in the second field (editing segment).
Should we show it in both? Why do we have both? Do we have UI designs
for this?


![image](https://github.com/Unleash/unleash/assets/17786332/5521b1f1-1688-4063-9a16-ec17e4811e91)
2023-08-09 16:15:14 +02:00
Thomas Heartman
2531819222
fix: CR strategy name changes code (#4449)
This change addresses two things that were done in
https://github.com/Unleash/unleash/pull/4004 and that I believe to be
bugs.

1. It shows the previous strategy name also if there was no previous
title. So if there was no previous title, it'll show the strategy name
with a strikethrough and then the new title (see the discussion
section).
2. It changes a `span` component to a [`del`
component](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del).
I believe the
span was erroneously changed from a `s` component (strikethrough
component) in the linked PR (based on a comment on the PR). This
caused the strikethrough to not be there anymore. However, the `del`
component is semantically more correct and reintroduces the
strikethrough, so it is a better change.
3. It uses [`ins`
elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins)
for names that have changed.

Finally, it removes a redundant pair of curly braces.

How it looks now:


![image](https://github.com/Unleash/unleash/assets/17786332/a9947619-056d-4cd8-8b44-8a562c83ba40)


## Discussion

Regarding point 1: It might be that we don't want to show a
strikethrough through the name of the strategy if there was no previous
title. In that case, the changes related to the first point should be
removed. If we do that, it looks like this:


![image](https://github.com/Unleash/unleash/assets/17786332/aeb6c86c-d283-4703-96e6-c4302d252417)

It makes it harder (impossible, actually) to see when a custom title was
added, but that might be what we want.

But maybe the solution is to also use `ins` elements for new data. That
way the difference is visible (and semantically correct):

![image](https://github.com/Unleash/unleash/assets/17786332/ef13a745-9f9c-4b1a-886f-a7917eb12190)
2023-08-09 12:47:02 +00:00
Thomas Heartman
e7ae1ff714
Feat(#4209): add conflict marker to segment changes (#4447)
In doing so, we extract the shared conflict marker component from the
feature change and reuse it for both feature and segment changes.

Here's what it looks like:

![image](https://github.com/Unleash/unleash/assets/17786332/4a67aa7a-1953-488f-8bcb-6aac006d53e9)


Update: also straightened out the borders of the conflict warning:


![image](https://github.com/Unleash/unleash/assets/17786332/153799f3-cff2-4aa0-8fb0-8e31d1052b9f)
2023-08-08 12:36:45 +00:00
Thomas Heartman
18b5161ade
chore(#4209): minor front-end fixes (#4437)
This PR fixes links to segments from change requests and the bottom
border radius for segment change boxes.

Old border radius:

![image](https://github.com/Unleash/unleash/assets/17786332/e2485e8c-9dab-4fbc-8604-6abd48e13be1)


New border radius: 

![image](https://github.com/Unleash/unleash/assets/17786332/2e2f54b0-37c0-4cec-9902-14b43827beaf)
2023-08-07 13:39:24 +00:00
Jaanus Sellin
7a32eacecb
feat: segments in pending CR screen (#4420) 2023-08-04 15:34:03 +03:00
andreas-unleash
579b08be27
fix: UI improvements on CR reorder strategy (#4375)
- make the blocks that hold the constraints full width
- remove the margin-top and margin-bottom from the parent div + increase
the gap: 20px on this parent div
- remove the margin-bottom from the constraints containers
- add the strategies in a div and add a margin-bottom: 8px

![Screenshot 2023-07-31 at 15 05
51](https://github.com/Unleash/unleash/assets/104830839/68c32324-99c3-4fab-99f0-bde1bf2b43e7)

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-07-31 16:25:06 +03:00
andreas-unleash
988a3a57e8
feat: Change Request on Reorder UI (#4249)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->
Change request UI for reordering strategies with variants
## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-07-25 14:12:35 +03:00
Jaanus Sellin
54654c6368
feat: change CR strategy title and name behaviour (#4004) 2023-06-19 13:33:12 +03:00