1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-06 00:07:44 +01:00
Commit Graph

810 Commits

Author SHA1 Message Date
Nuno Góis
328fac39a2
fix: console errors from highlight component and tag key prop placement (#8669)
Addressing some oversights that led to browser console errors.

This PR fixes console errors related to the recently introduced
highlight component (#8643) and tag row component in the new flag
metadata panel (#8663).
2024-11-06 11:09:33 +00:00
Nuno Góis
38bd50dc8a
refactor: introduce a highlight reusable component (#8643)
Follow-up to: https://github.com/Unleash/unleash/pull/8642

Introduces a reusable `Highlight` component that leverages the Context
API pattern, enabling highlight effects to be triggered from anywhere in
the application.

This update refactors the existing highlight effect in the event
timeline to use the new Highlight component and extends the
functionality to include the Unleash AI experiment, triggered by its
entry in the "New in Unleash" section.
2024-11-05 09:21:19 +00:00
Jaanus Sellin
ca307b2bab
feat: archived label tooltip correct format (#8610)
![image](https://github.com/user-attachments/assets/7f18236f-28c5-439a-969f-d2b1e08b60da)
2024-10-31 13:28:35 +02:00
Jaanus Sellin
90ed7b6079
feat: archived row styling (#8608)
1. Added badge
2. Added archived row styling. Button not clickable and gray


![image](https://github.com/user-attachments/assets/a15a3b1d-4caa-448b-a9ed-b60de4115cb7)
2024-10-31 12:30:00 +02:00
Mateusz Kwasniewski
b7b5a8ae48
fix: stretch strategies underlying root cause (#8520) 2024-10-23 16:24:15 +02:00
Tymoteusz Czech
f4abf5308a
test(navigation): snapshot sidebar for different plans (#8507)
Test navigation element by snapshot for all plans
2024-10-22 09:13:59 +00:00
Thomas Heartman
cb0a26941b
fix: wrap the UserAvatar component in forwardRef (#8461)
This fixes another one of the warnings we have in our tests and is
probably a sane change to make anyway.
2024-10-16 14:58:34 +02:00
Nuno Góis
9a98f86077
chore: make the Unleash AI chat resizable (#8456)
https://linear.app/unleash/issue/2-2840/make-the-unleash-ai-chat-window-resizable

This PR makes the Unleash AI chat resizable, providing users with a
flexible way to adjust the chat window's size.

Implements a reusable `Resizable` wrapper component that allows
configuration of:
 - Minimum, maximum, and default sizes.
- Customizable resize handlers for each edge and corner of the
container.
 - Optional resize event callbacks.

Double-clicking any resize handler maximizes the container along that
axis (or both, if it's a corner). If the container is already maximized,
double-clicking again will revert it to the default size.
2024-10-16 09:15:40 +01:00
Thomas Heartman
6ba87d1436
chore: fix invalid dom nesting (#8451)
This PR fixes all `invalidDomNesting` errors we're getting in our tests.
The culprit was the `Badge` icon we use, which wrapped its children in a
div. When that's used as a child of a `p` tag, that'd cause this to
trigger.

What I've done is to change the wrapping element to a span instead. The
Badge itself uses an `display: inline-flex`, so divs and spans should be
treated the same, meaning there's no visual change for this.
2024-10-16 08:33:47 +02:00
Thomas Heartman
abef5deaef
chore: remove all deprecated imports of act (#8398)
don't use `act` from `react-dom`. Instead, use act from `react`
directly, as advised by the deprecation notice.

This PR fixes all of the deprecated import warnings, updates some
testing libraries we use (and tests), and fixes one or two other
warnings.
2024-10-15 13:53:26 +02:00
Tymoteusz Czech
f5a2a18ffc
Add environment types environment order (#8447) 2024-10-15 11:00:31 +02:00
Tymoteusz Czech
178940ce7f
fix: environments route should be hidden from menu for open-source (#8397) 2024-10-09 15:45:02 +03:00
Tymoteusz Czech
48eee2043f
Frontend for additional environments (#8378) 2024-10-08 12:59:41 +00:00
Thomas Heartman
6655b2d961
feat: create page for when you have no projects (#8285)
This adds a front end fallback screen for when you have no projects.


![image](https://github.com/user-attachments/assets/1e6e0a63-968a-43cf-84ee-9a67d9f0ca91)
2024-09-27 10:41:25 +02:00
Nuno Góis
d161fb49ee
chore: implement event grouping in the event timeline (#8254)
https://linear.app/unleash/issue/2-2663/implement-event-grouping-when-multiple-events-happen-in-a-short-period

This PR introduces a grouping logic for timeline events, enhancing the
way events are displayed when they occur close to each other.

We also updated and refactored components to support handling groups of
events rather than individual events.

Also includes some minor code cleanups and optimizations as part of
general refactoring efforts (scouting).


![image](https://github.com/user-attachments/assets/eed74ddd-017c-430d-b919-3cb7e257052d)

---------

Co-authored-by: David Leek <david@getunleash.io>
2024-09-26 14:48:52 +01:00
Mateusz Kwasniewski
e33f71a8f4
feat: highlighting flags chart (#8237) 2024-09-25 08:36:30 +02:00
Mateusz Kwasniewski
87b997698b
feat: placeholder flag metrics chart (#8197) 2024-09-20 11:05:53 +02:00
Jaanus Sellin
b6e22d6178
feat: new onboarding welcome screen logic (#8110)
1. We will not show grid until 2 flags exist
2. Now new feature creation button will be always displayed on top with
different style
3. Moved some text around


![image](https://github.com/user-attachments/assets/6cfc2152-b52d-479c-8a2e-988c9e8b79ad)
2024-09-06 13:15:28 +03:00
Jaanus Sellin
01fb748c01
feat: connection status bubble (#8099)
Fully working cycle


![image](https://github.com/user-attachments/assets/cf20788b-29fa-4489-91e7-7db9f592da9b)
2024-09-05 13:56:25 +03:00
Jaanus Sellin
29af716952
chore: remove operator upgrade alert (#8053)
This was introduced in v4.9 and most likely people have upgraded
already. Removing.
2024-09-03 12:18:19 +03:00
Tymoteusz Czech
79fccbd8f3
refactor: ts checking conditionallyrender props (#7840)
Fix issues found by TS checking after removing ConditionallyRender
2024-08-30 13:39:11 +02:00
Tymoteusz Czech
a918590d1e
fix: boolean logic for feature last seen toolbar (#8016) 2024-08-30 13:23:08 +02:00
gitar-bot[bot]
031a2e805a
[Gitar] Cleaning up stale flag: timeAgoRefactor with value true (#7997)
Co-authored-by: Gitar <noreply@gitar.co>
Co-authored-by: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
2024-08-28 11:12:27 +00:00
Tymoteusz Czech
742504793c
refactor: make avatar group more customizable (#7989) 2024-08-27 14:37:45 +02:00
gitar-bot[bot]
4615ff40ce
[Gitar] Cleaning up stale flag: resourceLimits with value true (#7964)
[![Gitar](https://raw.githubusercontent.com/gitarcode/.github/main/assets/gitar-banner.svg)](https://gitar.co)
  
  ---
This automated PR was generated by [Gitar](https://gitar.co). View
[docs](https://gitar.co/docs).

---------

Co-authored-by: Gitar <noreply@gitar.co>
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2024-08-22 13:20:53 +02:00
Jaanus Sellin
4a4dafcc3f
chore: remove create feature component (#7959)
After we implemented new feature flag creation flow, this are not used
anymore.

Creation is now handled by **CreateFeatureDialog**.

Also edit component can be minified, because it does not need so many
fields anymore.
2024-08-22 11:30:41 +03:00
Tymoteusz Czech
6c5ce52470
Refactor: Remove react-timeago (#7943)
Remove dependency 🫡
2024-08-21 12:03:03 +02:00
Tymoteusz Czech
0d97f8b7c1
fix: react-timeago issue (#7936) 2024-08-20 14:03:05 +02:00
Thomas Heartman
8e2ae6c6c7
fix: update the customer success email for limits (#7933)
The previously used email address doesn't actually exist 😳 It was taken
from the sketches and we just never verified it.
2024-08-20 11:58:25 +02:00
Tymoteusz Czech
b9ea24be8d
fix: orphaned token label only for items without projects (#7901)
Orphaned token label was incorrectly assigned.
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2024-08-16 10:58:44 +02:00
Tymoteusz Czech
f2e2952c31
fix: projects archive search (#7898)
Filter projects when searching
2024-08-15 16:19:29 +02:00
Thomas Heartman
dad30a08f0
fix: cap number of collaborators displayed (#7879)
Caps the number of collaborators to display to a constant (currently
set to 99).

Above that, it'll always show "+99".

However, we also add a tooltip that shows you a prettified version of
the extra collaborators (using the `millify` package that we already use
for metrics)

Screenies:

< 1000 collaborators:

![image](https://github.com/user-attachments/assets/b030e77e-e23d-4cac-a1d1-7841a4ba86e7)


1000 - 1M collaborators:

![image](https://github.com/user-attachments/assets/b72ca22e-513d-4d69-b78d-c675951c894a)

1M+ collaborators:

![image](https://github.com/user-attachments/assets/6341e87d-17da-4359-bce3-e31df637cd5c)

Update, it now shows the total number of collaborators instead of the
overflow:

![image](https://github.com/user-attachments/assets/67a459c5-91b8-475d-b0e3-c5c19aaf62d7)
2024-08-14 13:27:05 +00:00
Tymoteusz Czech
f2b7e0278d
Projects archive UI (#7842)
Closes
[issue/1-2666](https://linear.app/unleash/issue/1-2666/archived-projects-view)
2024-08-13 14:33:11 +02:00
Thomas Heartman
245bdeae1e
chore: generate orval for event creators (#7823)
Updates our orval config to include event creator data
2024-08-12 15:07:26 +02:00
Thomas Heartman
fa96ff1450
fix: display feature naming patterns in dialog (#7837)
Updates the dialog form template to include a `namingPattern` prop that
can be used to display the naming pattern of whatever the form is used
for.

Also updates the create feature dialog to display the naming pattern in
the current project.

The naming pattern component re-uses the pattern that we have in place
for feature naming patterns, but puts it in an expandable dialog
instead.

Screenies:

Naming pattern closed:

![image](https://github.com/user-attachments/assets/145e4268-1aa0-4c1b-8f08-97857447e2f5)


![image](https://github.com/user-attachments/assets/1613c846-e7d4-41c8-a1c8-a66ab87b6e5f)



Naming pattern open:

![image](https://github.com/user-attachments/assets/1aa37162-500b-4b83-926f-07aa777e8017)
2024-08-12 13:56:07 +02:00
Tymoteusz Czech
cb4e447d69
fix: show environments page as enterprise feature (#7796)
Not available with menu, URL only, and actions are not working with OSS
and Pro.
2024-08-08 10:03:02 +02:00
Thomas Heartman
0284daf2ba
fix: Avoid collaborators being smooshed together (#7741)
Fixes an issue where the collaborator component would be smooshed
together when you have too many collaborators and too many flag tab
items.

The primary things I have done are:
1. Limit the amount of collaborators we show to 6 instead of 8. I
believe the number 8 was arbitrary, so let's go with 6 for now.
2. Instead of using a fixed gap, use a separator element that grows up
to a certain limit. I've added a `Separator` component, which is an
empty div with flex-grow. It feels like you should be able to do that
with gap too, but I can't think of how right now.
3. Don't allow collaborator component text (or avatars) to wrap. We
don't have a lot of space in this header, so let's keep it tight.

Additionally, I've added the `className` prop to the AvatarGroup
component so that it can be styled externally. I also cleaned up some
naming that was left in while I was at it.

Before:

![image](https://github.com/user-attachments/assets/98525a23-c086-433a-8f60-3e281805409f)


After:

![image](https://github.com/user-attachments/assets/559f8975-9cbe-4260-ba5a-409a303375ed)
2024-08-05 10:33:10 +02:00
Thomas Heartman
993d87516d
fix: show "System" for system users, instead of "User ID n" where n is the project's number in the order. (#7734)
Fixes a bug introduced with the new tooltips where the system user was
shown as "User ID n" instead of "System". The "n" in this case is
actually the user's index number in the list of project owners
(including duplicates).

There's a few things happening: 
1. Change the object for system owners: use `name` instead of
`description`. At the same time, remove the `description` property
completely because it's not used at the moment.
2. Remove the assignnment of `id: objectId(user)` to the user sent to
the User Avatar component. This was a leftover from when we split out
the AvatarGroup component, and is not something we use anymore.

Before:

![image](https://github.com/user-attachments/assets/bd348daf-c81e-4ea9-b8a9-f10af71a0da7)

After:

![image](https://github.com/user-attachments/assets/d147f7c7-d683-43ac-9ee2-6116f155dad6)
2024-08-02 11:29:31 +00:00
Tymoteusz Czech
8aa812e0f5
feat: Orphaned tokens - new API tokens list icon (#7693)
Moving warning icon from "projects" column, to left icon.
2024-08-01 14:31:42 +00:00
Thomas Heartman
f1e95108d1
Wip: split out avatar group; use same tooltip for all avatars (#7681)
Extracts the Avatar Group component into a `common` component and adds a
standard tooltip to all avatars.

Relates to linear issue 1-2606

This is a suggestion / proof of concept for how we can solve it. While I
think we can merge this as is, I'd also be happy to take any discussions
on other ways to approach it etc.

## Why are these changes made together?

Because extracting the avatar group without adding the new tooltip data
made the existing tooltip misbehave (it'd show up in the top left of the
screen, not synced to the avatar in any way).

I probably could have (and still can if you think it's prudent) split it
out such that the avatar gets a standardized tooltip first (and disable
it for the group card avatars), and split out the avatars in a
follow-up. Happy to do that if you think it's better.

## What does this mean? 

It used to be that we had no consistent way of dealing with avatars and
tooltips. Some places had them, some places didn't. This change makes it
so that all avatars that we can show tooltips for will get the same
tooltip.

Previously, we had at least 4 different ways of dealing with tooltips:
- The HTML tooltip (that would be standardized with this PR) in the
project flags table

![image](https://github.com/user-attachments/assets/91098d31-a5e3-4091-9125-332fe5d106fd)
- The "title" that you'd get on your user avatar

![image](https://github.com/user-attachments/assets/39062b61-db8c-4bd5-9fa3-3ecc9bc192ee)
- The group card list tooltip

![image](https://github.com/user-attachments/assets/0d4a696a-e944-446c-8bff-4dcec02d8afb)
- And sometimes you'd get nothing at all

![image](https://github.com/user-attachments/assets/8975afaf-9ca1-4eb6-b443-9ab94b52bbd8)

with this change, we'll always show the same kind of tooltip if we can:


![image](https://github.com/user-attachments/assets/974c592c-c844-4b65-8a55-05e84d3df130)

## What goes in the tooltip? 

We use the `UserAvatar` component for a fair few different things and I
didn't want to extract separate components for all the different use
cases. Instead, I wanted to get an overview over what we use it for and
what is relevant info to show.

I found all the places we used it and tried to form an opinion. 

This tooltip will work with a user's email, name, username, and id. If
there is no user (such as for empty avatars and avatars displaying only
"+n" for remaining members), we show no tooltip.

Following the example set by the group card avatars, we'll try to use
email or username (in that order) as the main bit of text. If the user
has an email or a username and also a name, the name will be used as
secondary text.

If the user does not have an email or username, but has a name, we'll
use the name as the main text.

If the user does not have an email, a username, or a name, we'll try to
show "User ID: N" if they have an id.

If they do not have a username, a name, an email, or an ID, we bail out
and show nothing.

## Why can you disable the tooltip?

In some cases, you might want to disable the tooltip because you have
more information to feed into it. An example of that is in the project
flags table, where we want to show more information in cases where the
user is 'unknown':


![image](https://github.com/user-attachments/assets/758b4e86-e934-47e3-91ce-ce900f76bc54)


## Additional fixes

This PR also adds a few lines of CSS to fix a minor avatar layout bug.

Before:

![image](https://github.com/user-attachments/assets/0150efbf-c51a-40bb-898f-7ddd3565ce21)


After:

![image](https://github.com/user-attachments/assets/f337cf68-c572-4610-b1de-a27749325da8)
2024-08-01 10:45:24 +02:00
Tymoteusz Czech
b585ead6df
fix: avoid react key warnings in tables (#7694)
Refactoring to get rid of `A props object containing a "key" prop is being spread into JSX` warning
2024-07-30 13:09:12 +02:00
Thomas Heartman
3a3aaad37d
feat: Use a toggling button for impression data on/off (#7682)
Instead of using a dropdown list for impression data, this PR introduces
a new config button that is a switch type button. It will be filled
(contained) when impression data is on and will be outlined when
impression data is off.

Off:

![image](https://github.com/user-attachments/assets/4710c8aa-a853-43c3-bf3b-86dbbf1a2779)


On:

![image](https://github.com/user-attachments/assets/08316155-83d1-45a2-941f-1c49c254a02b)
2024-07-29 08:05:35 +00:00
Jaanus Sellin
4df8fd3810
feat: redirect to new feature flag creation (#7679)
Currently found only one instance that is using `create-toggle`. So
changed behaviour for that.
2024-07-26 14:27:02 +03:00
Thomas Heartman
c7bb6c5179
fix: prevent long project names from blowing out the form (#7673)
This change prevents long project names from blowing the form out of
proportion.

To do so, it:
1. sets `whitespace: no-wrap` on the button labels. Judging by the other
styles, this was the intention all along, but it didn't really come up
until now.

2. It also sets the label width for projects to 30ch,so that you'll get
to see quite a bit of the project name before it gets cut off.

It would be possible to set a dynamic width for this button based on the
longest project name, but I'm not sure it adds much value, so I'm
leaning towards keeping it simple.

Here's what the dynamic width would look like:

``` tsx
    const projectButtonLabelWidth = useMemo(() => {
        const longestProjectName = projects.reduce(
            (prev: number, type: { name: string }) =>
                prev >= type.name.length ? prev : type.name.length,
            0,
        );
        return `${Math.min(longestProjectName, 30)}ch`;
    }, [projects]);
```

What it looks like:

![image](https://github.com/user-attachments/assets/51bca3f6-aeb3-4a41-b57e-5ebd9baa3ef6)
2024-07-26 11:39:43 +02:00
Thomas Heartman
c0d7be040d
fix: make config dropdown list generic over values (#7676)
This PR makes the config dropdown list generic over its values, so that
you can pass stuff that isn't strings.

It also updates the existing impression data button to use booleans
instead.
2024-07-26 11:38:29 +02:00
Thomas Heartman
6e34ae4ada
fix: project icon sizing and color (#7672)
This PR fixes the project icon sizing and color in the create feature
form. However, it includes a little more cleanup work.

1. I've switched out the previous project icon with a new one. The
difference? The old one had lots of whitespace around it, which made
sizing it awkward.
2. I've added a wrapping Icon component to common. The idea was taken
from this thread on the MUI GitHub about how to make imported icons
behave consistently with MUI icons.
3. Because I've switched the icon and added a new component, I've also
gone and updated the other places we used the old icon, so that we're
consistent about the usage.

In create dialog form:

![image](https://github.com/user-attachments/assets/9b5caed7-cd50-437b-82bb-1d7ccbfaac3f)

Updated icon in:
Project card component

![image](https://github.com/user-attachments/assets/4ce809f4-4083-4554-ac4c-3597d9bf42df)


Project creation form

![image](https://github.com/user-attachments/assets/4227416f-a56d-41ed-96a4-99b71a11dbf7)


Sidebar and command bar (it's actually larger here, but maybe that's
okay? Previous project was kinda small):

![image](https://github.com/user-attachments/assets/72b8aa2e-6970-4c11-9a4d-250648b44ad9)

(Previous sidebar and command bar):

![image](https://github.com/user-attachments/assets/bcef9208-9819-4742-87a1-3a20d50d741c)


I'd be willing to leave the sidebar and command bar for now if we think
it's better to leave them using the same size as previously, but we can
talk about that. I think it's better in the sidebar; undecided about the
command bar.

Bonus changes: I fixed some typos
2024-07-26 10:26:16 +02:00
Thomas Heartman
dc37503b7d
fix: Capitalize input labels (#7667)
This change makes it so that all form input labels start with a
capital letter, regardless of the data we use to generate them.

Also fixes a leftover toggle -> flag renaming.
2024-07-25 12:27:46 +00:00
Thomas Heartman
eb7208025f
chore: create shared dialog form template (#7663)
This PR extracts the dialog form that we created for the new project
form into a shared component in the `common` folder.

Most of the code has been lifted and shifted, but there's been some
minor adjustments along the way. The main file is
`frontend/src/component/common/DialogFormTemplate/DialogFormTemplate.tsx`.
Everything else is just cleanup.
2024-07-25 13:41:09 +02:00
Jaanus Sellin
647ba7b9cb
feat: separate command bar and search hotkeys (#7651)
Currently, the command bar and search hotkeys are conflicting. I am now
separating them and assigning search an extra modifier key: Shift.
2024-07-24 12:46:03 +03:00
Thomas Heartman
e2b90ae91d
fix: add workaround for tooltip (#7649)
This PR adds the UI part of feature flag collaborators. Collaborators are hidden on windows smaller than size XL because we're not sure how to deal with them in those cases yet.
2024-07-24 09:33:29 +00:00