Thomas Heartman
5d1a8ca735
chore: add Change Requests to sidebar and fix command menu icon ( #10932 )
...
Adds the new change request overview to the sidebar and fixes the entry
in the command bar to use the right title and icon.
<img width="441" height="159" alt="image"
src="https://github.com/user-attachments/assets/a3eb4fdd-f440-470b-b42f-539ec53f0aa0 "
/>
<img width="269" height="163" alt="image"
src="https://github.com/user-attachments/assets/a2fdf92d-73c5-4daf-af64-f9f5cfe56834 "
/>
Additionally, standardize the change requests icon. Instead of using a
custom one from a svg, let's use the material icon (which is the same,
just -90deg rotated and flipped around an axis)
This standardization, makes the icon a tiny bit smaller in the new
project modal, but it's the same size (20x20) as the other icons, so I
don't think anyone's gonna notice or care, and I think it's better to
use the basic material icon.
Of course, we could scale it up (and add a `scale` prop to the change
request icon), but I'd rather leave it out for consistency and
simplicity for now.
old:
<img width="835" height="52" alt="image"
src="https://github.com/user-attachments/assets/00dc35f3-a536-4e10-8115-2a0dbde92bb1 "
/>
new:
<img width="823" height="63" alt="image"
src="https://github.com/user-attachments/assets/5870fde1-05c1-43ce-a1c1-7ddc2242fb6b "
/>
As for the scale, I've set it to 1.1, because that makes it damn near
identical on the change request page (where I've also updated the raw
svg to the new icon) (old one on left, new one on right):
<img width="500" height="796" alt="image"
src="https://github.com/user-attachments/assets/fbbbf44f-8f8d-4cb9-b466-4cf3e70bfb1a "
/>
2025-11-06 12:12:58 +00:00
Thomas Heartman
2f25f5fd8a
fix: don't spread props + nest li correctly ( #10923 )
...
Fixes a few errors appearing on the "assign user/group" on the project
settings pages. Namely:
- spreading "key" into props in two places (option list and selected
chips)
- incorrect HTML nesting ([`li`'s only permitted parents are `ul`, `ol`,
and
`menu`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/li#technical_summary ))
- missing key in the list (caused by nesting the `li`)
The renderOption type update is based on a [fix that was added in a more
recent version of
mui](https://github.com/mui/material-ui/pull/42689/files ).
For some reason, the default tag rendering spreads the key in somehow,
so I've had to add a manual `renderTags` prop, and as such extracted the
`getOptionLabel` function. If you know a better way of sorting out the
fact that the `key` prop is spread into the default MUI chips, I'd be
very happy to implement that instead.
2025-11-06 13:05:16 +01:00
Thomas Heartman
7215e6bdfb
Chore: copy change request table improvements to project CR tables ( #10920 )
...
Ports some of the most significant updates from the new global change
request table to the old change request table.
Notably:
- Truncate the title if it's long
- Give more space to the title (especially useful because of the
truncation)
- Vertically align cell content to the top (to make it easy to scan in a
single row)
Before:
Without title truncation (extreme case)
<img width="4612" height="11744" alt="image"
src="https://github.com/user-attachments/assets/60511795-f113-41d1-9073-4c7752a82875 "
/>
Column widths:
<img width="1496" height="212" alt="image"
src="https://github.com/user-attachments/assets/f92c3d2d-1c34-4de9-996c-039160ad9766 "
/>
<img width="919" height="290" alt="image"
src="https://github.com/user-attachments/assets/babce5d3-a92d-4e5d-822a-6123a3a8e698 "
/>
After:
With title truncation:
<img width="1533" height="617" alt="image"
src="https://github.com/user-attachments/assets/4ebfb587-b646-49f2-a087-1b7347a3bb26 "
/>
Column widths:
<img width="1496" height="305" alt="image"
src="https://github.com/user-attachments/assets/d03be365-7df7-4c62-a3b7-d55e115fd6cb "
/>
<img width="933" height="304" alt="image"
src="https://github.com/user-attachments/assets/7cd5df64-5ee5-4a1e-a065-00e7a853ab16 "
/>
2025-11-06 13:05:06 +01:00
Melinda Fekete
28fa4240b7
docs: updates for 7.3 ( #10913 )
2025-11-06 10:56:15 +01:00
Jaanus Sellin
fe2d63ad9b
feat: add safeguards migration ( #10928 )
...
Safeguards migration
2025-11-06 11:03:40 +02:00
Nuno Góis
9e7f68abc3
refactor: clean up dead code after removing newStrategyModal flag ( #10926 )
...
https://linear.app/unleash/issue/2-3885/clean-up-legacy-code
Cleans up dead code after removing the `newStrategyModal` feature flag.
2025-11-06 08:48:01 +00:00
Melinda Fekete
40d917d392
chore: remove custom strategy deprecation warnings from release tempates ( #10929 )
...
Remove two more deprecations for custom stategies
2025-11-06 09:00:01 +01:00
Simon Hornby
94554ed4f8
chore: remove deprecation warnings for custom strategies ( #10924 )
2025-11-05 15:17:11 +02:00
Thomas Heartman
88a42ac849
fix: cap rendered change request title height to 3 lines ( #10922 )
...
Caps the rendered change request title height to 3 lines and makes the
edit button rectangular-ish instead of circular. This will work better
as it can grow arbitrarily tall.
## Title capping
Before:
<img width="753" height="1260" alt="image"
src="https://github.com/user-attachments/assets/8ae278f9-cc97-4803-8c29-4f3fede99b52 "
/>
After:
<img width="1506" height="216" alt="image"
src="https://github.com/user-attachments/assets/c5ca04e9-b1c7-4d36-b023-86f6fbb322db "
/>
## Edit button border fix
Before:
<img width="1441" height="251" alt="image"
src="https://github.com/user-attachments/assets/40df8747-a68f-4d36-af67-888c841cfcad "
/>
After:
<img width="1455" height="247" alt="image"
src="https://github.com/user-attachments/assets/c63380cb-ebe8-481d-a959-087dbf79b9fc "
/>
2025-11-05 13:31:00 +01:00
David Leek
a4885c45a3
chore(frontend): remove unused legacy featureoverview component ( #10921 )
2025-11-05 13:11:58 +01:00
unleash-bot[bot]
1030feee38
chore(AI): envAddStrategySuggestion flag cleanup ( #10916 )
2025-11-05 11:02:42 +01:00
Thomas Heartman
cd0eff35e2
Chore: remove aria-current; group buttons ( #10919 )
...
After some more consideration and reading, I don't think `aria-current`
is the right attribute here. Additionally, `aria-pressed` and
`aria-selected` are also not appropriate here. I can't find a suitable
alternative, so I'm falling back to the first rule of aria: if you don't
know what to do: don't do anything.
As such, I'm falling back to regular html data attributes.
2025-11-05 10:54:31 +01:00
Jaanus Sellin
79e439ea05
fix: hide usage when there is no limit ( #10918 )
2025-11-05 11:37:56 +02:00
Thomas Heartman
85fa04bc75
Chore: Vertically center change request quick filters ( #10917 )
...
Removes top padding that pushes the filters down.
Before:
<img width="683" height="260" alt="image"
src="https://github.com/user-attachments/assets/9eb43413-b988-435f-8ca0-8ee2e5e03a87 "
/>
After:
<img width="553" height="244" alt="image"
src="https://github.com/user-attachments/assets/b1ed623c-f154-43d8-ab31-cc0df374fb19 "
/>
2025-11-05 10:20:55 +01:00
unleash-bot[bot]
11a2860700
chore(AI): newStrategyModal flag cleanup ( #10912 )
...
This PR cleans up the newStrategyModal flag. These changes were
automatically generated by AI and should be reviewed carefully.
Fixes #10911
🧹 AI Flag Cleanup Summary
This change removes the newStrategyModal feature flag, making the new
"Add
strategy" modal the default and only experience for adding strategies to
a
feature.
I've removed the flag checks and the legacy code paths for the old
strategy
menu. The FeatureStrategyMenu component is now simplified to only render
the new
modal experience. I have also removed the flag from backend
configurations and
frontend interfaces.
🚮 Removed
• Feature Flag: newStrategyModal flag definition and configuration from
experimental.ts, server-dev.ts, and uiConfig.ts.
• Conditional Logic: All checks for the newStrategyModal flag in
FeatureStrategyMenu.tsx.
• Legacy Components: The old strategy menu
(LegacyFeatureStrategyMenuCards) and
related dialogs (LegacyReleasePlanReviewDialog) have been removed from
FeatureStrategyMenu.tsx.
• Unused Code: Unused state variables, functions
(openDefaultStrategyCreationModal, openReleasePlans), and imports
related to
the legacy strategy menu have been cleaned up.
🛠 Kept
• New "Add strategy" modal: The new modal for adding strategies is now
the only
implementation. Its user experience is preserved and made default.
📝 Why
The newStrategyModal feature has been completed, and the decision was to
keep
the new user experience. This cleanup removes the complexity of
maintaining two
different UI paths for adding strategies, making the code cleaner and
easier to
maintain.
---------
Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Nuno Góis <github@nunogois.com>
2025-11-05 08:59:18 +00:00
unleash-bot[bot]
8d00eea66a
chore(AI): newUiConfigService flag cleanup ( #10910 )
...
This PR cleans up the newUiConfigService flag. These changes were
automatically generated by AI and should be reviewed carefully.
Fixes #10909
## 🧹 AI Flag Cleanup Summary
This PR removes the `newUiConfigService` feature flag and makes its
functionality permanent. The `UiConfigController` now exclusively uses
the
`UiConfigService` to generate the UI configuration, removing the old,
now-dead
code path.
As a result of this change, several services that were only used in the
old
implementation have been removed from `UiConfigController`, along with
their
associated types and imports, simplifying the controller significantly.
### 🚮 Removed
- **Flag Definitions**
- `newUiConfigService` flag definition from
`src/lib/types/experimental.ts`.
- Development override for `newUiConfigService` in `src/server-dev.ts`.
- **Conditional Logic**
- The `if` block checking for `newUiConfigService` in
`UiConfigController.getUiConfig`.
- **Dead Code**
- The legacy implementation of building the UI config object inside
`UiConfigController`.
- Several unused service dependencies (`VersionService`,
`SettingService`,
`EmailService`, `SessionService`, `MaintenanceService`) and
`IFlagResolver` from
`UiConfigController`.
### 🛠 Kept
- **New `getUiConfig` implementation**
- The `UiConfigController.getUiConfig` method now solely relies on
`UiConfigService` to fetch the UI configuration.
### 📝 Why
The `newUiConfigService` feature flag was fully rolled out and marked as
completed. This cleanup removes the flag and the legacy code path,
simplifying
the `UiConfigController` and making the new UI config service the
standard way
of providing UI configuration.
Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
2025-11-04 15:49:44 +00:00
mohammedlaniyan-unleash
366827de6f
feat: prioritize first production environments in FeatureExposureMetrics ( #10891 )
2025-11-04 11:53:41 +00:00
David Leek
a1ebd0d114
chore: swap edit and copy strategy button order ( #10904 )
2025-11-04 07:50:17 +01:00
dependabot[bot]
8f8e567d30
chore(deps): bump vite from 6.3.6 to 6.4.1 ( #10832 )
2025-11-03 21:08:28 +01:00
Nuno Góis
699f9e6ce2
fix: enterprise edge stats should take into account full month ( #10898 )
...
https://linear.app/unleash/issue/2-3993/fix-enterprise-edge-stats
Fixes Enterprise Edge stats to correctly reflect the average across the
whole month.
Now returns a rounded average with 3 decimal places.
Also includes the average of the last 12 months.
2025-11-03 13:45:38 +00:00
Mateusz Kwasniewski
bbff52eb7b
feat: milestone progression paused at ( #10907 )
2025-11-03 14:08:37 +01:00
Simon Hornby
0afcba27bf
chore: add a flag to deny streaming for non edge connections ( #10905 )
2025-11-03 14:45:23 +02:00
Mateusz Kwasniewski
d452e45f37
chore: safeguards flag ( #10906 )
2025-11-03 12:05:26 +01:00
Gastón Fournier
bf19b62079
feat: ability to disable custom strategies ( #10885 )
...
## About the changes
This adds the ability to disable custom strategy creation and editing by
using two env variables: `UNLEASH_DISABLE_CUSTOM_STRATEGY_CREATION` and
`UNLEASH_DISABLE_CUSTOM_STRATEGY_EDITING`.
Fixes : #9593
This could be useful if you want to remove the ability to create new
custom strategies and rely on the built-in ones
2025-11-03 09:27:15 +01:00
Jaanus Sellin
a52ee10827
feat: align milestone time formatting ( #10903 )
2025-10-31 16:40:28 +02:00
Mateusz Kwasniewski
b21c101439
refactor: extract different milestone button types ( #10901 )
2025-10-31 15:02:36 +01:00
Jaanus Sellin
2458e5d5aa
feat: make milestone progression more clear ( #10899 )
2025-10-31 13:53:05 +00:00
Mateusz Kwasniewski
96f7f2f1bf
refactor: explicit scheduled milestone modelling ( #10900 )
2025-10-31 13:28:37 +01:00
Mateusz Kwasniewski
45fc547049
feat: start now button with background ( #10897 )
2025-10-31 12:24:56 +01:00
Melinda Fekete
d721499bd4
docs: explain that IP allow list is configured by us ( #10896 )
2025-10-31 11:53:30 +01:00
Melinda Fekete
7d2a5d0ed8
docs: add guides overview page ( #10895 )
2025-10-31 09:35:08 +01:00
Melinda Fekete
a14c5c7f57
docs: update private project collaboration mode explanation ( #10892 )
2025-10-30 17:03:16 +01:00
Mateusz Kwasniewski
d089e771da
Revert "feat: milestone without prior automation ( #10893 )" ( #10894 )
2025-10-30 14:58:04 +01:00
Mateusz Kwasniewski
a2c8e80345
feat: milestone without prior automation ( #10893 )
2025-10-30 13:13:06 +00:00
renovate[bot]
f74c1dc482
fix(deps): update dependency normalize-url to v8 ( #10193 )
2025-10-29 14:30:51 +01:00
Gastón Fournier
d715fc6aad
fix(docs): Slack webhook URL documentation link ( #10887 )
...
Updated the Slack webhook URL documentation link to the latest Slack API
documentation.
Fixes : #10731
https://api.slack.com/incoming-webhooks is redirected to
https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/
2025-10-29 13:48:06 +01:00
Gastón Fournier
bcfad0a250
feat: include readiness check option ( #10850 )
...
## About the changes
This introduces a new endpoint to allow users to check for readiness of
Unleash to serve traffic, in particular validating that the DB is up.
It's an opt-in feature that has to be enabled with the environment
variable `CHECK_DB_ON_READY=true` or via the configuration option
`checkDbOnReady`.
Closes #10742
2025-10-29 13:11:23 +01:00
Mateusz Kwasniewski
eb87acd35a
feat: read milestone progressions from snapshot ( #10886 )
2025-10-29 11:57:47 +01:00
Mateusz Kwasniewski
b4208d2cf2
feat: milestone progression borders ( #10884 )
2025-10-29 11:02:53 +01:00
Mateusz Kwasniewski
9a23bc36f8
chore: remove unused events ( #10883 )
2025-10-29 10:29:04 +01:00
Mateusz Kwasniewski
c2ec77ba6e
feat: read only milestone progression in cr ( #10882 )
2025-10-29 09:54:39 +01:00
unleash-bot[bot]
25abe054a4
chore(AI): originMiddlewareRequestLogging flag cleanup ( #10864 )
...
This PR cleans up the originMiddlewareRequestLogging flag. These changes
were automatically generated by AI and should be reviewed carefully.
Fixes #10863
## 🧹 AI Flag Cleanup Summary
This change removes the `originMiddlewareRequestLogging` feature flag
and its
associated code. The flag's outcome was to be discarded, so the logging
it
controlled has been removed from `originMiddleware`.
### 🚮 Removed
- **Flag Definition**
- Removed `originMiddlewareRequestLogging` from the `IFlagKey` type in
`src/lib/types/experimental.ts`.
- Removed the flag from the development server configuration in
`src/server-dev.ts`.
- **Logic**
- Removed the conditional logging of API requests from
`originMiddleware`.
- **Tests**
- Removed the test case for API request logging in
`origin-middleware.test.ts`.
- Removed the flag setup from the test configuration.
### 🛠 Kept
- **Core functionality**
- The core logic of the `originMiddleware` for emitting `REQUEST_ORIGIN`
metric events for UI and API requests remains unchanged.
### 📝 Why
The `originMiddlewareRequestLogging` feature flag was completed and its
outcome
was 'discarded'. This cleanup removes the flag and the now-dead code
related to
it, simplifying the middleware and tests.
---------
Co-authored-by: unleash-bot <194219037+unleash-bot[bot]@users.noreply.github.com>
Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2025-10-28 18:42:10 +01:00
Mateusz Kwasniewski
0ddf35656c
refactor: Smart time range ( #10881 )
2025-10-28 17:26:12 +01:00
Mateusz Kwasniewski
dc87c125e0
feat: after to at ( #10880 )
2025-10-28 14:59:17 +01:00
Mateusz Kwasniewski
2823c94a38
feat: instant milestone progression prevention ( #10879 )
2025-10-28 13:13:23 +01:00
Mateusz Kwasniewski
2f315545a3
fix: missing await in user splash update ( #10878 )
2025-10-28 09:43:17 +01:00
dependabot[bot]
351b5a4351
chore(deps): bump validator from 13.12.0 to 13.15.20 in /frontend ( #10877 )
2025-10-28 09:37:52 +01:00
dependabot[bot]
5a6c893d60
chore(deps): bump validator from 13.11.0 to 13.15.20 ( #10876 )
...
Bumps [validator](https://github.com/validatorjs/validator.js ) from
13.11.0 to 13.15.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/releases ">validator's
releases</a>.</em></p>
<blockquote>
<h2>13.15.20</h2>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556 ">#2556</a>
<code>isMobilePhone</code>: add <code>ar-QA</code> locale <a
href="https://github.com/WardKhaddour "><code>@WardKhaddour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576 ">#2576</a>
<code>isAlpha</code>/<code>isAlphanuneric</code>: add Indic locales
(<code>ta-IN</code>, <code>te-IN</code>, <code>kn-IN</code>,
<code>ml-IN</code>, <code>gu-IN</code>, <code>pa-IN</code>,
<code>or-IN</code>) <a
href="https://github.com/avadootharajesh "><code>@avadootharajesh</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574 ">#2574</a>
<code>isBase64</code>: improve padding regex <a
href="https://github.com/KrayzeeKev "><code>@KrayzeeKev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584 ">#2584</a>
<code>isVAT</code>: improve <code>FR</code> locale <a
href="https://github.com/iamAmer "><code>@iamAmer</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608 ">#2608</a>
<code>isURL</code>: improve protocol detection. Resolves CVE-2025-56200
<a href="https://github.com/theofidry "><code>@theofidry</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563 ">#2563</a>
<a href="https://github.com/stoneLeaf "><code>@stoneLeaf</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581 ">#2581</a>
<a
href="https://github.com/camillobruni "><code>@camillobruni</code></a></li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/stoneLeaf "><code>@stoneLeaf</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563 ">validatorjs/validator.js#2563</a></li>
<li><a
href="https://github.com/WardKhaddour "><code>@WardKhaddour</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556 ">validatorjs/validator.js#2556</a></li>
<li><a
href="https://github.com/avadootharajesh "><code>@avadootharajesh</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576 ">validatorjs/validator.js#2576</a></li>
<li><a
href="https://github.com/KrayzeeKev "><code>@KrayzeeKev</code></a> made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574 ">validatorjs/validator.js#2574</a></li>
<li><a href="https://github.com/iamAmer "><code>@iamAmer</code></a> made
their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584 ">validatorjs/validator.js#2584</a></li>
<li><a
href="https://github.com/camillobruni "><code>@camillobruni</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581 ">validatorjs/validator.js#2581</a></li>
<li><a href="https://github.com/theofidry "><code>@theofidry</code></a>
made their first contribution in <a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608 ">validatorjs/validator.js#2608</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/validatorjs/validator.js/compare/13.15.15...13.15.20 ">https://github.com/validatorjs/validator.js/compare/13.15.15...13.15.20 </a></p>
<h2>13.15.15</h2>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><code>isMobilePhone</code>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2514 ">#2514</a>
improve <code>el-CY</code> locale <a
href="https://github.com/rezk2ll "><code>@rezk2ll</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2512 ">#2512</a>
improve <code>pt-AO</code> locale <a
href="https://github.com/renaldodev "><code>@renaldodev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2502 ">#2502</a>
improve <code>ar-OM</code> locale <a
href="https://github.com/tomcastro "><code>@tomcastro</code></a></li>
</ul>
</li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2089 ">#2089</a>
<code>isIP</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev "><code>@pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2526 ">#2526</a>
<code>isPassportNumber</code>: improve <code>CA</code> locale <a
href="https://github.com/evanbechtol "><code>@evanbechtol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2491 ">#2491</a>
<code>isBase64</code>: improve validation based on RFC4648 <a
href="https://github.com/aseyfpour "><code>@aseyfpour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2479 ">#2479</a>
<code>isPostalCode</code>: improve <code>FR</code> locale <a
href="https://github.com/Rajput-Balram "><code>@Rajput-Balram</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2088 ">#2088</a>
<code>isBefore</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev "><code>@pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2346 ">#2346</a>
<code>isRgbColor</code>: allow second digit in rgba alpha value <a
href="https://github.com/controlol "><code>@controlol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2453 ">#2453</a>
<code>isIP</code>: improve IPv6 regex <a
href="https://github.com/ShreySinha02 "><code>@ShreySinha02</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2052 ">#2052</a>
<code>isPostalCode</code>: add <code>PK</code> locale <a
href="https://github.com/mateeni-dev "><code>@mateeni-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2529 ">#2529</a>
<code>isPostalCode</code>: improve <code>TW</code> locale <a
href="https://github.com/Crocsx "><code>@Crocsx</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2550 ">#2550</a>
<code>isPassportNumber</code>: improve <code>US</code> locale <a
href="https://github.com/yitzchak-schechter "><code>@yitzchak-schechter</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2553 ">#2553</a>
<code>isUUID</code>: add <code>loose</code> option <a
href="https://github.com/bc-m "><code>@bc-m</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2551 ">#2551</a>
<code>isPostalCode</code>: add <code>BD</code> locale <a
href="https://github.com/tanvirrb "><code>@tanvirrb</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2555 ">#2555</a>
<code>isLicensePlate</code>: improve <code>pt-PT</code> locale <a
href="https://github.com/castrosu "><code>@castrosu</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2372 ">#2372</a>
<a
href="https://github.com/EmersonRabelo "><code>@EmersonRabelo</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2538 ">#2538</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2539 ">#2539</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2540 ">#2540</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2549 ">#2549</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2537 ">#2537</a>
<a href="https://github.com/sgress454 "><code>@sgress454</code></a></li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md ">validator's
changelog</a>.</em></p>
<blockquote>
<h1>13.15.20</h1>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2556 ">#2556</a>
<code>isMobilePhone</code>: add <code>ar-QA</code> locale <a
href="https://github.com/WardKhaddour "><code>@WardKhaddour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2576 ">#2576</a>
<code>isAlpha</code>/<code>isAlphanuneric</code>: add Indic locales
(<code>ta-IN</code>, <code>te-IN</code>, <code>kn-IN</code>,
<code>ml-IN</code>, <code>gu-IN</code>, <code>pa-IN</code>,
<code>or-IN</code>) <a
href="https://github.com/avadootharajesh "><code>@avadootharajesh</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2574 ">#2574</a>
<code>isBase64</code>: improve padding regex <a
href="https://github.com/KrayzeeKev "><code>@KrayzeeKev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2584 ">#2584</a>
<code>isVAT</code>: improve <code>FR</code> locale <a
href="https://github.com/iamAmer "><code>@iamAmer</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2608 ">#2608</a>
<code>isURL</code>: improve protocol detection. Resolves CVE-2025-56200
<a href="https://github.com/theofidry "><code>@theofidry</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2563 ">#2563</a>
<a href="https://github.com/stoneLeaf "><code>@stoneLeaf</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2581 ">#2581</a>
<a
href="https://github.com/camillobruni "><code>@camillobruni</code></a></li>
</ul>
</li>
</ul>
<h1>13.15.15</h1>
<h3>Fixes, New Locales and Enhancements</h3>
<ul>
<li><code>isMobilePhone</code>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2514 ">#2514</a>
improve <code>el-CY</code> locale <a
href="https://github.com/rezk2ll "><code>@rezk2ll</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2512 ">#2512</a>
improve <code>pt-AO</code> locale <a
href="https://github.com/renaldodev "><code>@renaldodev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2502 ">#2502</a>
improve <code>ar-OM</code> locale <a
href="https://github.com/tomcastro "><code>@tomcastro</code></a></li>
</ul>
</li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2089 ">#2089</a>
<code>isIP</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev "><code>@pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2526 ">#2526</a>
<code>isPassportNumber</code>: improve <code>CA</code> locale <a
href="https://github.com/evanbechtol "><code>@evanbechtol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2491 ">#2491</a>
<code>isBase64</code>: improve validation based on RFC4648 <a
href="https://github.com/aseyfpour "><code>@aseyfpour</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2479 ">#2479</a>
<code>isPostalCode</code>: improve <code>FR</code> locale <a
href="https://github.com/Rajput-Balram "><code>@Rajput-Balram</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2088 ">#2088</a>
<code>isBefore</code>: allow usage of option object <a
href="https://github.com/pixelbucket-dev "><code>@pixelbucket-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2346 ">#2346</a>
<code>isRgbColor</code>: allow second digit in rgba alpha value <a
href="https://github.com/controlol "><code>@controlol</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2453 ">#2453</a>
<code>isIP</code>: improve IPv6 regex <a
href="https://github.com/ShreySinha02 "><code>@ShreySinha02</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2052 ">#2052</a>
<code>isPostalCode</code>: add <code>PK</code> locale <a
href="https://github.com/mateeni-dev "><code>@mateeni-dev</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2529 ">#2529</a>
<code>isPostalCode</code>: improve <code>TW</code> locale <a
href="https://github.com/Crocsx "><code>@Crocsx</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2550 ">#2550</a>
<code>isPassportNumber</code>: improve <code>US</code> locale <a
href="https://github.com/yitzchak-schechter "><code>@yitzchak-schechter</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2553 ">#2553</a>
<code>isUUID</code>: add <code>loose</code> option <a
href="https://github.com/bc-m "><code>@bc-m</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2551 ">#2551</a>
<code>isPostalCode</code>: add <code>BD</code> locale <a
href="https://github.com/tanvirrb "><code>@tanvirrb</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2555 ">#2555</a>
<code>isLicensePlate</code>: improve <code>pt-PT</code> locale <a
href="https://github.com/castrosu "><code>@castrosu</code></a></li>
<li><strong>Doc fixes and others:</strong>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2372 ">#2372</a>
<a
href="https://github.com/EmersonRabelo "><code>@EmersonRabelo</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2538 ">#2538</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2539 ">#2539</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2540 ">#2540</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2549 ">#2549</a>
<a href="https://github.com/WikiRik "><code>@WikiRik</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2537 ">#2537</a>
<a href="https://github.com/sgress454 "><code>@sgress454</code></a></li>
</ul>
</li>
</ul>
<h1>13.15.0</h1>
<h3>New Features / Validators</h3>
<ul>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2399 ">#2399</a>
<code>isISO31661Numeric</code> <a
href="https://github.com/RobinvanderVliet "><code>@RobinvanderVliet</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2294 ">#2294</a>
<code>isULID</code> <a
href="https://github.com/arafatkn "><code>@arafatkn</code></a></li>
<li><a
href="https://redirect.github.com/validatorjs/validator.js/pull/2215 ">#2215</a>
<code>isISO15924</code> <a
href="https://github.com/xDivisionByZerox "><code>@xDivisionByZerox</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="30d4fe02c1 "><code>30d4fe0</code></a>
13.15.20</li>
<li><a
href="cbef5088f0 "><code>cbef508</code></a>
fix(isURL): improve protocol detection. Resolves CVE-2025-56200 (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2608 ">#2608</a>)</li>
<li><a
href="6f436be369 "><code>6f436be</code></a>
Fix typo in validators.test.js (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2581 ">#2581</a>)</li>
<li><a
href="3c857088d5 "><code>3c85708</code></a>
Fix: correct French VAT (FR) validation regex and add tests (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2584 ">#2584</a>)</li>
<li><a
href="eee525cd11 "><code>eee525c</code></a>
<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2491 ">#2491</a>
<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2573 ">#2573</a>
Simplify isBase64 to prevent stack overflow (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2574 ">#2574</a>)</li>
<li><a
href="abcc8ecb85 "><code>abcc8ec</code></a>
feat(isAlpha, isAlphanumeric): add support for Indic locales (ta-IN,
te-IN, k...</li>
<li><a
href="72573b3d1d "><code>72573b3</code></a>
Add Qatar phone number validation (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2556 ">#2556</a>)</li>
<li><a
href="243f6c5fe4 "><code>243f6c5</code></a>
docs(isMACAddress): improve ambiguous option description (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2563 ">#2563</a>)</li>
<li><a
href="3847c6f901 "><code>3847c6f</code></a>
maintenance: 2505 release (<a
href="https://redirect.github.com/validatorjs/validator.js/issues/2560 ">#2560</a>)</li>
<li><a
href="9e503840d7 "><code>9e50384</code></a>
feat(isLicensePlate): Updated isLicensePlate to accept real pt-PT
license pla...</li>
<li>Additional commits viewable in <a
href="https://github.com/validatorjs/validator.js/compare/13.11.0...13.15.20 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Unleash/unleash/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-28 09:34:28 +01:00
Mateusz Kwasniewski
9142ebf82c
feat: track change progression ( #10874 )
2025-10-28 09:28:33 +01:00
Melinda Fekete
649e5d8ce5
docs: update segments page ( #10875 )
2025-10-27 18:06:34 +01:00