Thomas Heartman
4490fe785d
Update the design of change request filters to be one contiguous element ( #10857 )
...
Removes spacing between the filters, making them stick together.
This is in prep for adding a new set of filters, which will make each
group visually separated.
Also handles the bolding of text that happens when a filter is selected
by a little css `::before` trick.
Before:
<img width="367" height="199" alt="image"
src="https://github.com/user-attachments/assets/107e5f8d-a59b-46c9-ab86-18b240d3eb15 "
/>
After:
<img width="379" height="179" alt="image"
src="https://github.com/user-attachments/assets/a02f2810-33a6-40fe-837f-3a3b01243da9 "
/>
2025-10-24 10:56:46 +02:00
Fredrik Strand Oseberg
0e26f463e9
feat: show draft automation inline in release plans ( #10856 )
2025-10-24 09:34:01 +02:00
Fredrik Strand Oseberg
737c8648fb
refactor: polish progression edit form UI ( #10853 )
2025-10-23 15:04:29 +02:00
Jaanus Sellin
9b4a729944
chore: generate orval ( #10852 )
2025-10-23 15:46:02 +03:00
Thomas Heartman
e8dc64393e
chore: replace hand-crafted schemas with orval-generated schemas ( #10849 )
...
They're mostly the same content, however, so nothing much should change.
The `optional` title is already handled in the UI.
2025-10-23 14:29:44 +02:00
Fredrik Strand Oseberg
32a950763b
fix: show draft badges for milestone progression changes ( #10851 )
2025-10-23 13:19:48 +02:00
Fredrik Strand Oseberg
c5ac1ef81f
refactor: improve type safety in milestone progression components ( #10848 )
2025-10-23 10:53:32 +02:00
Thomas Heartman
5f51756fcc
chore: Fix global change requests table scaling ( #10842 )
...
Assigns more reasonable sizes and scaling to the change requests table.
Once the window gets too narrow, it'll result in a horizontal overflow.
<img width="1527" height="498" alt="image"
src="https://github.com/user-attachments/assets/a2697d51-fa6d-42c1-9b46-7e2d70a183d8 "
/>
<img width="1269" height="492" alt="image"
src="https://github.com/user-attachments/assets/f2d1c916-06dd-449e-8bb8-f3895457d975 "
/>
<img width="1070" height="510" alt="image"
src="https://github.com/user-attachments/assets/765f09f1-214f-46c9-a65b-3a7a2c71aeeb "
/>
<img width="967" height="503" alt="image"
src="https://github.com/user-attachments/assets/ca3bd439-12b1-4438-9028-96d473ef6b29 "
/>
<img width="896" height="507" alt="image"
src="https://github.com/user-attachments/assets/e2b07de9-8100-466f-ac62-b9078e0bb060 "
/>
2025-10-23 08:51:26 +00:00
Thomas Heartman
527d94d0fc
chore: never wrap other text fields in global change requests table ( #10841 )
...
Prevents text wraps in the wrapping columns of the table:
- Title
- environment
- status
Also prevents the change request badge cells (change request badges in
tables, such as the project CR table) from wrapping.
Before:
<img width="1054" height="302" alt="image"
src="https://github.com/user-attachments/assets/a4f30661-c680-47ef-82f0-49c01293712b "
/>
<details>
<summary>In extreme cases</summary>
<img width="3024" height="20820" alt="image"
src="https://github.com/user-attachments/assets/05a7c636-cabe-4e4e-9a9d-5e8a60d380ca "
/>
</details>
After:
<img width="1071" height="501" alt="image"
src="https://github.com/user-attachments/assets/64990be7-d338-4878-8fd2-678e1bf6c341 "
/>
and when it's wide enough to not horizontally scroll:
<img width="1136" height="493" alt="image"
src="https://github.com/user-attachments/assets/9757c019-0848-4abd-ae51-10679b0e58f4 "
/>
## Note: bug introduced (but fix is coming)
This does introduce a rendering bug in Chrome, however, where the
columns will take up all the width that they can without being
truncated:
<img width="1545" height="395" alt="image"
src="https://github.com/user-attachments/assets/b247c37a-277c-48f4-a64a-29c95b6d6dd4 "
/>
This does not happen in Firefox. However, it can be fixed by specifying
a max width for the columns. I'll fix this in the next PR.
2025-10-23 08:42:08 +00:00
Thomas Heartman
feed9ea3c9
chore: show avatars in cross-project change requests table. ( #10838 )
...
Updates the CR table cell to show the avatar (again). This applies both
to the project-based table and the global table.
Also adds a truncator to the created by cell, to avoid weird name
stacking.
Because the truncator already has a popup functionality on truncation,
we disable it for the avatars.
To make it compile, I've manually updated the types based on the
schemas. I'll regenerate them at a later date. The fields that were
marked as nullable are typically not nullable (although often they may
not be required) in our schemas, so I'll take it out for now. If we find
that we *are* returning null there, it still shouldn't cause any
problems for the UI, so it's a low risk fix that can be done later if
necessary.
Before:
<img width="1816" height="157" alt="image"
src="https://github.com/user-attachments/assets/37f0b742-4113-45ed-a867-f62913bcf99f "
/>
<img width="1255" height="126" alt="image"
src="https://github.com/user-attachments/assets/786ba01d-1e16-4b4f-b34a-d1157571b9be "
/>
After:
<img width="1789" height="146" alt="image"
src="https://github.com/user-attachments/assets/2a838804-89c5-42c8-a43c-64c1b93c4e01 "
/>
<img width="1320" height="72" alt="image"
src="https://github.com/user-attachments/assets/b04ca1d1-8334-40b4-bfba-46d803dd1cda "
/>
2025-10-23 07:44:11 +00:00
Mateusz Kwasniewski
e1d21adc9f
fix: long descriptions ( #10845 )
2025-10-23 08:50:49 +02:00
Nuno Góis
8ba35507cd
chore: add edge instances to instance stats ( #10839 )
...
https://linear.app/unleash/issue/2-3979/add-edge-instances-to-self-reported-instance-stats
Adds edge instances to instance stats.
2025-10-22 16:40:43 +01:00
Mateusz Kwasniewski
0919b7b925
refactor: update/create progression to change progression ( #10843 )
2025-10-22 15:40:30 +02:00
Fredrik Strand Oseberg
866441a1b6
feat: change request progression view ( #10835 )
2025-10-22 12:27:24 +02:00
Thomas Heartman
b9d81e5f59
chore: align text to cell top ( #10837 )
...
First part of UI refactoring for the change requests table: align
content to the top of the cell to facilitate scanning the table.
To facilitate this, I've mad the paginated table stylable by adding a
class name.
Before:
<img width="1810" height="1500" alt="image"
src="https://github.com/user-attachments/assets/febc9471-5d57-4afa-a9b0-0d22044fcd92 "
/>
After:
<img width="1809" height="1326" alt="image"
src="https://github.com/user-attachments/assets/e6aea2e9-0f1d-42f9-bd09-ad7317acbd4e "
/>
2025-10-21 14:08:03 +02:00
renovate[bot]
14b4809c8e
chore(deps): update dependency vite to v5.4.21 [security] ( #10834 )
...
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [vite](https://vite.dev )
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite ))
| [`5.4.20` ->
`5.4.21`](https://renovatebot.com/diffs/npm/vite/5.4.20/5.4.21 ) |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
### GitHub Vulnerability Alerts
####
[CVE-2025-62522](https://redirect.github.com/vitejs/vite/security/advisories/GHSA-93m4-6634-74q7 )
### Summary
Files denied by
[`server.fs.deny`](https://vitejs.dev/config/server-options.html#server-fs-deny )
were sent if the URL ended with `\` when the dev server is running on
Windows.
### Impact
Only apps that match the following conditions are affected:
- explicitly exposes the Vite dev server to the network (using --host or
[`server.host` config
option](https://vitejs.dev/config/server-options.html#server-host ))
- running the dev server on Windows
### Details
`server.fs.deny` can contain patterns matching against files (by default
it includes `.env`, `.env.*`, `*.{crt,pem}` as such patterns). These
patterns were able to bypass by using a back slash(`\`). The root cause
is that `fs.readFile('/foo.png/')` loads `/foo.png`.
### PoC
```shell
npm create vite@latest
cd vite-project/
cat "secret" > .env
npm install
npm run dev
curl --request-target /.env\ http://localhost:5173
```
<img width="1593" height="616" alt="image"
src="https://github.com/user-attachments/assets/36212f4e-1d3c-4686-b16f-16b35ca9e175 "
/>
---
### Release Notes
<details>
<summary>vitejs/vite (vite)</summary>
###
[`v5.4.21`](https://redirect.github.com/vitejs/vite/releases/tag/v5.4.21 )
[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v5.4.20...v5.4.21 )
Please refer to
[CHANGELOG.md](https://redirect.github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md )
for details.
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "" in timezone Europe/Madrid,
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE0My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 08:00:01 +00:00
Nuno Góis
1b60ed5df8
chore: show edge instances in license info ( #10810 )
...
https://linear.app/unleash/issue/2-3981/show-edge-instances-in-license-information-in-unleash
Show edge instances in license info.
Adapts to new logic, so resources are only shown if they are present.
2025-10-20 14:49:41 +01:00
Mateusz Kwasniewski
f37fde2a27
feat: release plan cr conflict ( #10831 )
2025-10-20 15:39:06 +02:00
Thomas Heartman
ca4ec203c6
feat: display median calculation ( #10763 )
...
Adds the median calculation to the new flags in production widget and
allows the median to take batched data into account:
<img width="1288" height="530" alt="image"
src="https://github.com/user-attachments/assets/5052dad1-03fa-4ce6-8626-ff4f6a5d818f "
/>
To achieve this, it was necessary to extract the data aggregation method
from the NewProductionFlagsChart component, so that we could use the
data (to calculate the median) at a higher level in the tree. Because
the data is now passed around outside of the chart component, I've also
updated the `ChartDataResult` type to a proper union type that contains
the state and the data.
2025-10-20 11:49:42 +00:00
Thomas Heartman
b18b128e52
feat: add median per week calculation for the new flags in production widget ( #10829 )
2025-10-20 12:17:18 +02:00
Mateusz Kwasniewski
0fda3e7cf1
feat: delete milestone progression with CR ( #10828 )
2025-10-17 14:49:03 +02:00
Jaanus Sellin
c8ca11aebb
feat: add billing invoices skeletons ( #10827 )
...
Since we load directly from Stripe, it takes a little time. Good to have
skeletons.
<img width="2151" height="1587" alt="Screenshot from 2025-10-17
15-32-10"
src="https://github.com/user-attachments/assets/be767ea1-b95f-4ef3-abf6-e8302e7092fd "
/>
2025-10-17 15:40:36 +03:00
Jaanus Sellin
faad097915
feat: overages should be rouned down to nearest integer ( #10826 )
2025-10-17 15:09:52 +03:00
Jaanus Sellin
adb1d200ea
feat: only show detailed billing for consumption and payg ( #10825 )
2025-10-17 14:11:19 +03:00
Jaanus Sellin
3f9a726db6
refactor: move invoice logic into separate file/function ( #10824 )
...
Extract calculateEstimateTotals and some utility functions.
2025-10-17 14:11:14 +03:00
Jaanus Sellin
aec793ddc7
feat: calculate the esimtate invoice numbers ( #10823 )
2025-10-17 13:24:09 +03:00
Gastón Fournier
91ecf2fabd
chore: remove uuid from the frontend ( #10808 )
...
Frontend only of: https://github.com/Unleash/unleash/pull/10806
## About the changes
This PR drops the uuid package from node modules and replaces it with
standard randomUUID usage that is available from 14.17 onwards, and we
have a minimum requirement of node 20 at Unleash.
[Node.js
crypto](https://nodejs.org/api/crypto.html#cryptorandomuuidoptions )
[Web
crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID )
Co-authored-by: Anastasiia Hladina <anastasiia.hladina@gmail.com>
2025-10-17 10:31:48 +02:00
Jaanus Sellin
e9d2b30603
feat: add taxes to invoices ( #10821 )
2025-10-17 09:49:09 +03:00
Fredrik Strand Oseberg
795b674133
feat: add change request support for updating milestone progressions ( #10819 )
2025-10-16 16:52:02 +02:00
Jaanus Sellin
022226dd43
chore: generate orval ( #10820 )
2025-10-16 16:11:39 +03:00
Tymoteusz Czech
b81691b89e
feat: invoices ui improvements ( #10813 )
2025-10-16 12:30:01 +00:00
Fredrik Strand Oseberg
045ef5a20e
refactor: consolidate release plan change request dialogs ( #10817 )
2025-10-16 13:55:52 +02:00
Thomas Heartman
9096340afb
refactor: split the stat card widget into its own component ( #10815 )
...
Prepares it for being shared between the new flags in production and the
archived to created ration sections.
The card in question is this one:
<img width="310" height="177" alt="image"
src="https://github.com/user-attachments/assets/66549601-36cd-4ccc-b175-79bd049ed1d4 "
/>
2025-10-16 13:53:32 +02:00
Fredrik Strand Oseberg
154dc6f5eb
feat: add change request support for milestone progressions ( #10814 )
2025-10-16 11:57:28 +02:00
Thomas Heartman
2cc1bf978b
chore: add todo note with flag to remember a refactor ( #10811 )
...
So that we remember to revisit this line when we remove the flag.
2025-10-16 09:53:58 +02:00
Thomas Heartman
07c947949e
fix: populate all weeks in charts ( #10800 )
...
When selecting a date range, the chart now shows you the entire range,
even if there's only data for parts of it.
This ensures that both the new flags in production chart and the created
vs archived chart show the same period and not two different ones (other
charts can be updated later).
Before:
<img width="2356" height="1536" alt="image"
src="https://github.com/user-attachments/assets/11912a2f-7a68-4405-acfa-d98d0eb69cf8 "
/>
After:
<img width="1294" height="963" alt="image"
src="https://github.com/user-attachments/assets/e932665c-9f7c-4b4e-9e14-34a1e6e71a69 "
/>
It also ensures that the 4 week batching works the same for both charts.
For line charts, only the dates with data will be rendered as a line.
For the bar chart, dates without data can still be hovered and show
empty (zero) data.
<img width="1341" height="447" alt="image"
src="https://github.com/user-attachments/assets/531266ca-02e3-4402-9b29-ce4259274e0c "
/>
<img width="1304" height="448" alt="image"
src="https://github.com/user-attachments/assets/42a0bbe9-c701-4f3f-8b10-9ef7017a9b9f "
/>
Also prevents us from showing the wrong period if there is no data for
the selected project
Before:
<img width="1292" height="960" alt="image"
src="https://github.com/user-attachments/assets/6d61a653-7bee-43d9-9c25-5d5bdb29a803 "
/>
After:
<img width="1295" height="507" alt="image"
src="https://github.com/user-attachments/assets/91994094-cd0d-495e-a41f-f92b6b7d72c9 "
/>
Finally, it happily graphs multiple projects at their individual data
points in time:
<img width="1314" height="537" alt="image"
src="https://github.com/user-attachments/assets/d382d919-fda4-4c35-8d8e-2e66dd3bed66 "
/>
2025-10-16 09:52:33 +02:00
Nuno Góis
4ff41fa6a9
chore: add warning about release plans in import-export ( #10805 )
...
https://linear.app/unleash/issue/2-3965/add-a-note-if-were-exporting-that-we-dont-understand-release-plans-in
Adds a warning about release plans in import/export.
It's not trivial to know every flag that will be exported in every
scenario, and whether they have release plans, so our logic here is
"have you configured release templates?"
<img width="706" height="516" alt="image"
src="https://github.com/user-attachments/assets/68ba8618-9887-491c-b46e-256b45700d74 "
/>
<img width="732" height="503" alt="image"
src="https://github.com/user-attachments/assets/086e37d4-78ae-4647-93a2-5d1845c2758a "
/>
2025-10-15 14:44:30 +01:00
Nuno Góis
f3ab70aeca
chore: add alert about release plans when cloning flag ( #10802 )
...
https://linear.app/unleash/issue/2-3966/cloning-a-feature-will-not-clone-release-plans
Adds an alert when cloning a feature flag with a release plan.
Requires the `featureReleasePlans` feature flag.
<img width="1162" height="568" alt="image"
src="https://github.com/user-attachments/assets/325db586-14b9-4ce4-9d7c-6f680017c6ac "
/>
2025-10-15 14:17:34 +01:00
Mateusz Kwasniewski
10c30751d3
feat: improve permission messaging ( #10804 )
2025-10-15 14:33:53 +02:00
Jaanus Sellin
e83d92975c
fix: now showing either payg or consumption ( #10803 )
...
1. Make it show either payg or consumption.
2. Add paid tag.
2025-10-15 10:32:51 +00:00
Jaanus Sellin
bffec9bc4d
feat: align billing page design with figma ( #10801 )
...
1. Splitting main row and usage row, as they have so much different
logic already now.
2. Main lines, keep only included, remove quantity
3. Add correct headers for usage lines
4. Add current consumption also as number
Old design
<img width="1502" height="906" alt="image"
src="https://github.com/user-attachments/assets/ab4fdca9-1a04-4381-88a6-9ce643f71d78 "
/>
New design
<img width="1502" height="906" alt="Screenshot from 2025-10-15 10-36-16"
src="https://github.com/user-attachments/assets/2607a91d-22de-4f72-9e59-d2212b1f5888 "
/>
2025-10-15 08:28:51 +00:00
Nuno Góis
715119741b
fix: hide enable strategy dialog when there are release plans ( #10796 )
...
https://linear.app/unleash/issue/2-3953/fix-enable-environment-modal-when-there-are-release-plans
Prevents the "environment needs at least one enabled strategy" dialog
from showing up if you have added a release plan.
This relies on the new `featureReleasePlans` feature flag.
PS: Maybe we should revisit this dialog in the future. We don't usually
see it, and maybe it should trigger the new "add strategy" modal?
<img width="684" height="399" alt="image"
src="https://github.com/user-attachments/assets/2f8213db-22b4-4618-b8e2-15eca096d465 "
/>
2025-10-15 09:21:23 +01:00
Tymoteusz Czech
38bb9b3bfc
feat: enhance billing invoice components ( #10799 )
...
## About the changes
- Hide "included usage" column if an invoice doesn't have any items that
have lines with `limit`
- Minor component types refactors
- Only open (extend accordion) for the first invoice on the list
2025-10-15 10:00:59 +03:00
Mateusz Kwasniewski
61a82673e9
feat: changing milestone progression url ( #10795 )
2025-10-14 15:57:28 +02:00
Tymoteusz Czech
b5d1f6e075
chore: remove legacy flag UI ( #10781 )
2025-10-14 11:00:51 +02:00
Tymoteusz Czech
7efd707dee
Fix: invoice page debugging ( #10791 )
2025-10-14 08:01:38 +00:00
Fredrik Strand Oseberg
bc740bbe2f
feat: add milestone progression UI with projected start times ( #10790 )
2025-10-13 17:02:30 +02:00
David Leek
e890968048
feat: apply strategy suggestion directly when clicked ( #10779 )
2025-10-13 12:20:49 +02:00
Fredrik Strand Oseberg
0edbc7d595
feat: add inline editing for milestone progressions ( #10777 )
2025-10-13 11:53:45 +02:00
Jaanus Sellin
0d252558c4
feat: add new dates and plan price ( #10774 )
...
<img width="2159" height="1617" alt="image"
src="https://github.com/user-attachments/assets/478ea289-dc0f-439e-92e4-a22fa44a0650 "
/>
2025-10-10 13:44:58 +03:00