renovate[bot]
159d8222f1
chore(deps): update material-ui monorepo
2025-08-08 14:08:06 +00:00
Jaanus Sellin
e43cdcf034
chore: update ux styling for lifecycle charts ( #10481 )
...
Some small ux tweaks to lifecycle charts.
1. Removed vertical lines
2. Styled the legend to have round dots, not square.
<img width="1891" height="656" alt="image"
src="https://github.com/user-attachments/assets/b2c09085-7a2e-4e14-92e0-b3e83edf201d "
/>
2025-08-08 10:25:58 +03:00
Nuno Góis
937cba4c1a
chore: make project list table take less horizontal space ( #10480 )
...
https://linear.app/unleash/issue/2-3761/address-ux-feedback-make-table-take-less-horizontal-space-to-prevent
Addresses UX feedback by making the project list table take less
horizontal space. This should prevent us from having to scroll
horizontally in most cases.
<img width="1103" height="647" alt="image"
src="https://github.com/user-attachments/assets/e5cc22a2-5eda-4cb5-a226-c54993c019ce "
/>
2025-08-08 08:03:02 +01:00
Nuno Góis
57424312b5
chore: timeagocell default fallback ( #10475 )
...
https://linear.app/unleash/issue/2-3759/set-timeagocell-default-fallback-to-never
Sets the default `emptyText` fallback to 'Never'. This should help with
consistency and DRYness.
Also noticed some of our TimeAgoCell `title` properties were redundant,
so I removed them for simplicity.
Examples:
<img width="1268" height="1063" alt="image"
src="https://github.com/user-attachments/assets/b7a8118b-bd73-45bc-8823-fa9f211f9ea9 "
/>
<img width="793" height="366" alt="image"
src="https://github.com/user-attachments/assets/f494e1de-2bbb-46c8-ad87-adc7a1d4ea56 "
/>
2025-08-07 18:05:28 +01:00
dependabot[bot]
456365f2eb
chore(deps): bump tmp from 0.2.3 to 0.2.4 in /frontend ( #10470 )
2025-08-07 07:32:15 -03:00
Nuno Góis
63622618b4
fix: environment name cell ( #10474 )
...
https://linear.app/unleash/issue/2-3758/fix-environment-name-cell-after-the-latest-changes-to-textcell
Noticed the environment name cell acted differently after
[adjusting](https://github.com/Unleash/unleash/pull/10466/files#diff-485a5be6a3a5d639b56c3b29488125db051ce6b8a0e3561368d657d62dee4975R28 )
the span inside TextCell to be `display: inline-flex`.
By wrapping the contents of our TextCell here into a single div we
explicitly declare this to be a single row of elements.
2025-08-07 11:32:06 +01:00
Tymoteusz Czech
98bbf85421
feat: add "cleanup" action to other flag lifecycle stages ( #10471 )
2025-08-07 11:54:33 +02:00
Tymoteusz Czech
ac67a50693
feat: project-level cleanup reminders ( #10464 )
2025-08-07 11:44:08 +02:00
Nuno Góis
54a0f68c9c
chore: add project-list-view-toggle Plausible event ( #10468 )
...
https://linear.app/unleash/issue/2-3754/add-plausible-event-project-list-view-toggle-with-view
Adds a `project-list-view-toggle` Plausible event with a `view` prop so
we can track if and how the new toggle is used.
2025-08-06 13:47:03 +02:00
Nuno Góis
18c9ea1d7d
chore: if flag is disabled automatically revert to showing cards ( #10467 )
...
https://linear.app/unleash/issue/2-3753/fix-if-the-flag-is-disabled-we-should-automatically-revert-back-to
If the flag is disabled we should automatically revert back to showing
cards.
2025-08-06 10:58:07 +00:00
Nuno Góis
44650e4e2f
chore: project list table view ( #10466 )
...
https://linear.app/unleash/issue/2-3740/implement-the-project-list-view
Implements the list (table) view of the projects page.
<img width="1300" height="956" alt="image"
src="https://github.com/user-attachments/assets/603bc9a8-21a9-4888-8804-1be23e2d63ee "
/>
<img width="1300" height="681" alt="image"
src="https://github.com/user-attachments/assets/67f6e8e9-cedf-4a70-ba95-b9c73e8d29a8 "
/>
2025-08-06 11:36:21 +01:00
Tymoteusz Czech
e1b6979627
Feat: filter flags by "last seen at" ( #10449 )
...
This lets users filter features by when they were last reported in metrics.
2025-08-04 14:50:21 +02:00
Nuno Góis
bd5a8539c0
chore: add project list view toggle with respective flag ( #10452 )
...
https://linear.app/unleash/issue/2-3746/add-project-list-view-toggle-with-respective-flag
Adds a project list view toggle hidden behind a feature flag:
`projectListViewToggle`.
This is already part of the persistent project list page state.
Even though the view mode switching logic is in place, this isn't really
doing anything else. We'll leave the actual visual changes (tables) for
a follow up PR.
<img width="1412" height="406" alt="image"
src="https://github.com/user-attachments/assets/793d0bd9-9874-4630-98b4-0ee364f50241 "
/>
2025-08-04 08:53:04 +01:00
Nuno Góis
91f138349e
chore: fix interactive demo steps around constraint values ( #10451 )
...
https://linear.app/unleash/issue/2-3744/fix-interactive-demo-steps-around-constraint-values
I noticed our interactive demo was broken around the constraint value
steps.
This isn't a great fix, but it at least allows us to complete the
interactive demo for now.
2025-08-01 10:56:37 +00:00
Tymoteusz Czech
2629705501
chore: re-generate openapi ( #10450 )
...
Update documentation to replace 'server-side' with 'backend' in API schemas
2025-08-01 05:50:03 -03:00
Nuno Góis
0ac997e63e
chore: overhaul project list pages ( #10447 )
...
https://linear.app/unleash/issue/2-3743/overhaul-project-list-pages
This is essentially scouting work on our project list pages so we have a
better baseline before proceeding with the cards/list view toggle.
Includes refactoring, fixes and visual improvements ensuring better
consistency and alignment with our designs.
Took some liberties, so feel free to tell me I'm wrong.
### Searching
<img width="1224" height="667" alt="image"
src="https://github.com/user-attachments/assets/3f1bf700-7323-4c00-81db-7b57d125810b "
/>
### Search results only in one of the groups
<img width="1216" height="384" alt="image"
src="https://github.com/user-attachments/assets/f67536e3-42de-4371-9725-c38a6fe0889a "
/>
### No results found
<img width="1218" height="347" alt="image"
src="https://github.com/user-attachments/assets/c15c3555-1f37-473e-8a3e-8a549bd24966 "
/>
### Helper text
<img width="334" height="114" alt="image"
src="https://github.com/user-attachments/assets/c9150c9c-22c6-4f73-8989-b9cba4b52793 "
/>
### Title truncation with tooltip
<img width="333" height="192" alt="image"
src="https://github.com/user-attachments/assets/1f88d82d-67b2-4327-9301-808fef1e11ac "
/>
### Archived projects
<img width="1075" height="351" alt="image"
src="https://github.com/user-attachments/assets/87b10618-b7c4-4351-87d3-3e678ddd20ae "
/>
2025-08-01 09:46:48 +01:00
Tymoteusz Czech
ddd503952b
feat: add lifecycle stage filter to project feature toggles ( #10448 )
...
Backend API is already implemented and ready to be used.
[issue/CTO-244](https://linear.app/unleash/issue/CTO-244/filter-by-lifecycle-on-project-page )
2025-08-01 10:22:32 +02:00
Nuno Góis
3338ea4300
chore: clear unknown flags every 24h instead of every 7d ( #10446 )
...
https://linear.app/unleash/issue/2-3738/clear-unknown-flags-every-24h-instead-of-every-7d
Clears unknown flags every 24h instead of every 7d.
This ensures the list stays more relevant by removing stale entries
sooner, allowing users to focus on actively reported unknown flags.
Also includes small improvements, including a new paragraph on the
unknown flags page that better explains the concept of unknown flag
reports.
2025-07-31 11:22:40 +01:00
Thomas Heartman
02d4edbf40
feat: Display example date for date formatting reasons ( #10444 )
...
Adds an example date as a detail of the locale picker, so that the user
can see what effect their chosen locale would have on date formatting:
<img width="436" height="157" alt="image"
src="https://github.com/user-attachments/assets/d5757380-3cda-4857-99d7-bac8866d31f5 "
/>
The example wraps on smaller screens:
<img width="291" height="207" alt="image"
src="https://github.com/user-attachments/assets/e3ef1678-6846-4027-b563-253195e2de99 "
/>
The example date is the **date and time of the very first commit in the
Unleash repo**. By some stroke of luck, it happens to have everything
we're looking for:
- A date that is more than the 12th (to clearly differentiate between
days and months)
- A month that is less than 10 (to show whether leading zeroes are shown
or not)
- An hour that is more than 11 to show whether it's a 24-hour clock or
an AM/PM system
The date string is without a time zone offset because that means it'll
always be interpreted as local time for the user. MDN's [docs on Date
and what happens when you call it with a time
string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format )
state that:
> When the time zone offset is absent, date-only forms are interpreted
as a UTC time and **date-time forms are interpreted as a local time**.
I've checked this by changing my locale. With the timezone offset, the
time changes based on my timezone, but without it, it always shows as
the expected value.
2025-07-31 11:07:32 +02:00
Jaanus Sellin
1d3aea47dc
feat: create flags created vs archived chart ( #10429 )
2025-07-31 10:54:37 +03:00
Nuno Góis
0d0257bbdc
chore: link to events for that flag name ( #10442 )
...
https://linear.app/unleash/issue/2-3737/link-to-events-for-that-flag-name
Adds a link to events for that flag name, in the unknown flags table.
This should help us understand if the flag ever existed in Unleash in
the first place.
<img width="1304" height="803" alt="image"
src="https://github.com/user-attachments/assets/b80c7912-f342-4fd1-b514-6fcafe9f5baf "
/>
2025-07-30 16:19:52 +01:00
Tymoteusz Czech
58bd646db0
add placeholder to flag link ( #10435 )
2025-07-30 12:14:13 +02:00
Thomas Heartman
c73b5c7dc3
Generate orval ( #10440 )
...
Generates new orval schemas after recent changes to Change Requests
2025-07-30 12:13:37 +02:00
Thomas Heartman
c7fe43db71
Update stateTransitions
property in UI to match new API prop ( #10438 )
...
We renamed the property returned from the API, so we also need to update
the UI.
2025-07-30 12:13:19 +02:00
Tymoteusz Czech
a2d179e1f3
Fix: Horizontal hyperscroll on project flag list ( #10436 )
2025-07-30 11:53:25 +02:00
Nuno Góis
32996460df
chore: adapt configuration modal to standard and advanced strategies ( #10434 )
...
https://linear.app/unleash/issue/2-3730/adapt-modal-to-new-standard-and-advanced-strategies-split
Adapts our "add configuration" modal to the new concept of standard and
advanced strategies.
Follow-up to: https://github.com/Unleash/unleash/pull/10433
<img width="984" height="482" alt="image"
src="https://github.com/user-attachments/assets/5af7a087-0bb6-46c3-93d0-f9968ea1928f "
/>
2025-07-30 10:17:03 +01:00
Tymoteusz Czech
3bfed7fb0c
fix: segment row id for modals ( #10437 )
...
Fixing the issue where modal with an active segment (for deletion) can
change which segment it's listing if a new segment that is
alphabetically earlier than the original segment
2025-07-30 11:09:07 +02:00
Nuno Góis
c5b37fc7c2
chore: split standard and advanced strategy types ( #10433 )
...
https://linear.app/unleash/issue/2-3733/update-strategy-types-to-match-the-new-designs
This updates our strategy types page to match the new designs.
Part of this means visually separating what we are considering
"standard" strategies from "advanced" strategies.
<img width="1520" height="981" alt="image"
src="https://github.com/user-attachments/assets/2682013b-d9df-453d-9427-62871e74d46a "
/>
2025-07-30 09:55:51 +01:00
Gastón Fournier
0f565c50e9
feat: rebrand sdk tokens and sdk types ( #10430 )
...
## About the changes
Rebrand SDK tokens and SDK types to make it easier to onboard and use:
**Backend SDK Token**: Intended for server-side SDKs. It can be used to
access:
- The Client Features API (/api/client/features) for fetching all flag
configurations for local evaluation.
- The Frontend API (/api/frontend) for remote evaluation.
**Frontend SDK Token**: Intended for client-side/frontend SDKs. It is
restricted and can only be used to access:
- The Frontend API (/api/frontend) for remote evaluation.
---------
Co-authored-by: Nuno Góis <github@nunogois.com>
2025-07-30 10:24:40 +02:00
unleash-bot[bot]
7830fbb75f
chore(AI): eventGrouping flag cleanup ( #10428 )
2025-07-29 15:20:10 +03:00
Thomas Heartman
d48d1df095
test: Ensure that timestamps in future states aren't shown ( #10426 )
2025-07-29 12:36:57 +02:00
Thomas Heartman
663f30c8db
feat: Timeline for cancelled CRs ( #10421 )
...
Shows the cancelled state in the timeline for cancelled CRs. Extracts
steps into a separate file.
Also, if timestamps are present, it will dynamically show the steps we
have times for for rejected and cancelled CRs.
If we do not have timestamps, it'll use the old behavior for displaying
rejected steps, but does add a new one for cancelled steps, which
includes 'Draft', 'In review', 'Approved', 'Cancelled'.
CRs can be cancelled after:
- In review
- Approved
CRs can be rejected after:
- In review
- Schedule
For other states, use the existing steps. Cancelled and Rejected are
both terminal states, so there's no future steps to show.
Regardless of what we have timestamps for, always show 'Draft', 'In
review' and the final state (Rejected | Cancelled).
## Gallery
Cancellations
<img width="381" height="241" alt="image"
src="https://github.com/user-attachments/assets/a6af70c5-ef09-4aeb-ae53-0e3ff4b25446 "
/>
<img width="396" height="320" alt="image"
src="https://github.com/user-attachments/assets/699c2594-8c0c-44d9-bf50-22a8bdda3d00 "
/>
Rejections
<img width="397" height="244" alt="image"
src="https://github.com/user-attachments/assets/20887a23-e453-49ce-bc5c-738ba4180868 "
/>
<img width="388" height="384" alt="image"
src="https://github.com/user-attachments/assets/e3c5842b-254d-47b8-a8f6-3721643c4223 "
/>
New cancelled steps without timestamps:
<img width="387" height="309" alt="image"
src="https://github.com/user-attachments/assets/5fba979d-cb5b-4aba-b652-7c5ac89a3e37 "
/>
2025-07-29 12:21:30 +02:00
Tymoteusz Czech
8554eee37a
feat: series query warning ( #10413 )
...
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-07-29 10:03:43 +02:00
Nuno Góis
15449e83d3
chore: add feature configuration based on addConfiguration flag ( #10420 )
...
https://linear.app/unleash/issue/2-3729/single-add-configuration-button-based-on-flag
Shows a single "Add configuration" button based on whether the new
`addConfiguration` flag is enabled.
This button then shows our "Add configuration" modal which allows you to
choose how to proceed in terms of your feature flag configuration. Also
updates this modal to better match the latest sketches.
Includes scouting.
### Single "Add configuration" button
<img width="738" height="121" alt="image"
src="https://github.com/user-attachments/assets/9cce7fba-5e0c-42e0-a3d1-8ccc34f730bb "
/>
### Modal
<img width="983" height="663" alt="image"
src="https://github.com/user-attachments/assets/b59abad2-f1cd-4b62-bf2e-9c3b24cbb60e "
/>
2025-07-29 08:27:13 +01:00
Thomas Heartman
0a9d6437c5
Place schedule information first and change color of schedule info ( #10419 )
...
As per UX's requests, this updates the placement and styling of the
schedule information for scheduled change requests. Instead of being
below the "stage entered time" and in "secondary" color, we place it
above that timestamp and in the same color as the stage name.
This change is not behind a flag, so the color change will go out
immediately upon release.
Before:
<img width="244" height="376" alt="image"
src="https://github.com/user-attachments/assets/2c5f380d-8d05-4078-93cc-d451eb9fdabe "
/>
After:
<img width="201" height="333" alt="image"
src="https://github.com/user-attachments/assets/d26c2c6f-5fc9-4db2-b52e-ff26e6f03a61 "
/>
Same for failed/suspended. Before:
<img width="280" height="378" alt="image"
src="https://github.com/user-attachments/assets/71c7a201-dfd7-47f3-a45b-c33a47be1e3c "
/>
After:
<img width="258" height="369" alt="image"
src="https://github.com/user-attachments/assets/9a3ab53f-bda1-4ce5-a127-bceaa3436fef "
/>
2025-07-28 14:45:06 +02:00
Nuno Góis
8258ffcabe
chore: improve project card design ( #10418 )
...
https://linear.app/unleash/issue/2-3728/remove-the-project-card-icon
Removes the project icon from our project cards. This gives us more
space for our project titles.
Also took the chance to better align the "activity" visual component,
since previously it was floating not-quite-in-the-middle of the card.
This is already aligned with UX and ready to go from that standpoint.
<img width="918" height="442" alt="image"
src="https://github.com/user-attachments/assets/1538511e-e70d-4632-9f67-7d6cd146aeca "
/>
2025-07-28 12:57:33 +01:00
Nuno Góis
d278185228
feat: GitHub auth ( #10406 )
...
https://linear.app/unleash/issue/2-3713/show-sign-in-with-github-auth-option-in-unleash
Adds support for a "Sign-in with GitHub" auth option.
Also took this opportunity to slightly improve the design of these
options on our log in screen.
<img width="485" height="429" alt="image"
src="https://github.com/user-attachments/assets/540cb4d5-f5bc-44a0-a7d7-d895d0f22393 "
/>
2025-07-24 15:25:25 +01:00
Thomas Heartman
d2e2378481
Show change request stage timestamps in UI ( #10388 )
...
Adds a timestamp for each state we have time (and that isn't a state
downstream from the current state) in the CR timeline.
<img width="437" height="318" alt="image"
src="https://github.com/user-attachments/assets/a499e73f-c506-46a0-8d1a-7e4eb5ec4f7d "
/>
The timestamp respects the user's preferred locale and uses the `time`
element.
I've used the current name of the API payload's timestamps as it stands
on the enterprise main branch for now. This name is not set in any
schemas yet, so it is likely to change. Because it's not currently
exposed to any users, that will not cause any issues. Name suggestions
are welcome if you have them.
We only show timestamps for states up to and including the current
state. Timestamps for downstream states (such as "approved" if you're in
the "in review" state), will not be shown, even if they exist in the
payload. (There are some decisions to make on whether to include these
in the payload at all or not.)
There's no flags in this PR. They're not necessary If the API payload
doesn't contain the timestamp, we just don't render the timestamp, and
the timeline looks the way it always did:
<img width="447" height="399" alt="image"
src="https://github.com/user-attachments/assets/0062393a-190c-4099-bc16-29f9da82e7ea "
/>
## Bonus work
In the `ChangeRequestTimeline.tsx` file, I've made a few extra changes:
- `createTimelineItem` and `createScheduledTimelineItem` have become
normal React components (`TimelineItem` and `ScheduledTimelineItem`) and
are being called as such (in accordance with [React
recommendations](https://react.dev/reference/rules/react-calls-components-and-hooks#never-call-component-functions-directly )).
- I've updated the subtitles for schedules to also use the time element,
to improve HTML structure.
## Outstanding work
There's a few things that still need to be sorted out (primarily with
UX). Mainly about how we handle scheduled items, which already have time
information. For now, it looks like this:
<img width="426" height="394" alt="image"
src="https://github.com/user-attachments/assets/4bfc4ca2-c738-4954-9251-8d063143371e "
/>
<img width="700" height="246" alt="image"
src="https://github.com/user-attachments/assets/fe688b08-c5c8-40f8-a9d0-fe455e44665f "
/>
2025-07-24 12:42:29 +00:00
Jaanus Sellin
8943cc0a3d
feat: basic flag creation chart ( #10411 )
...
This is partial implementation of flag creation chart. This only shows
the created flags line part, but I need to style it and also add bar
charts in next PRs.
<img width="1498" height="523" alt="image"
src="https://github.com/user-attachments/assets/6d7a3145-95ff-4d31-85dd-47d687527d47 "
/>
2025-07-24 14:45:16 +03:00
Mateusz Kwasniewski
9a768f7bdc
chore: orval update creation trends ( #10409 )
...
Co-authored-by: sjaanus <sellinjaanus@gmail.com>
2025-07-24 13:38:11 +03:00
Mateusz Kwasniewski
049e1ba271
feat: new flags in production explanation ( #10407 )
2025-07-24 11:53:25 +02:00
Nuno Góis
45e5b217aa
fix: add strategy release templates visibility for non Enterprise ( #10401 )
...
https://linear.app/unleash/issue/2-3711/add-strategy-modal-shows-release-templates-section-for-non-enterprise
Fixes a bug for non-Enterprise where release templates were mentioned
(and even linked to) even though they were not available for these
plans. When following the link the result was a page that did not
render.
Also slightly refactors and improves this component.
<img width="870" height="496" alt="image"
src="https://github.com/user-attachments/assets/47499e21-73fc-4ddf-8eed-6146be31b074 "
/>
2025-07-23 20:17:22 +01:00
dependabot[bot]
e89fa7ec6e
chore(deps): bump form-data from 4.0.0 to 4.0.4 in /frontend ( #10403 )
2025-07-23 18:37:42 +02:00
Thomas Heartman
64050121db
Add timestampsInChangeRequestTimeline flag ( #10399 )
...
Adds flag to OSS for the new timestamps in CR timeline capability.
We might not need them in the UI, but might as well add it in case.
2025-07-23 15:33:40 +02:00
Mateusz Kwasniewski
299ed65ef7
feat: New production flags chart ( #10400 )
2025-07-23 15:29:47 +02:00
Mateusz Kwasniewski
0457f5e035
chore: orval generation ( #10398 )
2025-07-23 13:11:26 +02:00
Nuno Góis
e87c51948f
fix: banner form state ( #10397 )
...
https://linear.app/unleash/issue/2-3710/fix-banner-form-state-inconsistencies
Noticed a few inconsistencies with the way the banner form handles
state. This should fix that by ensuring the form's state correctly
reflects prop changes.
2025-07-23 08:36:48 +01:00
Thomas Heartman
bfd82015d1
Fix each child in a list should have a key error. ( #10393 )
...
The console was complaining. I suspect it was because of the wrapping
fragment. So instead of doing everything within react, I switched to
using a standard case statement.
Also: because name is optional and not guaranteed to be unique, let's
use id for the key instead.
2025-07-22 13:03:33 +00:00
Tymoteusz Czech
f54305c8b7
refactor: impact metrics modal - label filtering and UX ( #10377 )
...
Modal for editing a chart now follows design of other parts of the app
more closely.
2025-07-22 10:08:29 +02:00
Tymoteusz Czech
c1df04548d
feat: add impact metrics wildcard label ( #10373 )
2025-07-21 10:50:14 +02:00