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

14578 Commits

Author SHA1 Message Date
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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=validator&package-manager=npm_and_yarn&previous-version=13.11.0&new-version=13.15.20)](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
Mateusz Kwasniewski
8b95cb5386
fix: update splash nonexistent user (#10873) 2025-10-27 16:49:58 +01:00
Mateusz Kwasniewski
01c0d56277
chore: starting after time (#10872) 2025-10-27 16:05:32 +01:00
Mateusz Kwasniewski
31e78d7536
refactor: milestone progression natural key (#10869) 2025-10-27 15:14:52 +01:00
Jaanus Sellin
0e1de4c511
chore: increase performance of application upsert (#10870)
This is our most longest running database query. Takes most time to
execute overall.

<img width="2233" height="381" alt="Screenshot from 2025-10-27 15-29-33"
src="https://github.com/user-attachments/assets/241abb84-1606-40b4-9a1c-bc706a1f7e20"
/>
2025-10-27 16:11:18 +02:00
Jaanus Sellin
a0c296ee3b
chore: bulk add instances once every 10 seconds (#10871)
This is most executed method by far and almost always hits db layer. We
should make it less frequent.
2025-10-27 16:11:00 +02:00
Jaanus Sellin
8db708369d
feat: warning when empty segment (#10868) 2025-10-27 14:46:51 +02:00
Christopher Kolstad
07758a4267
chore(build): Bump Yarn to 4.10.3 (#10865) 2025-10-27 12:58:24 +01:00
Alex Casalboni
131a741a35
Update unleash.github.io link (integrations) (#10867)
## About the changes
unleash.github.io doesn't exist anymore, so I'm updating the domain to
docs.getunleash.io

FYI @melindafekete
2025-10-27 11:14:04 +01:00
Mateusz Kwasniewski
bbee498b3e
feat: fake impact metrics improvements (#10866) 2025-10-27 10:43:53 +01:00
Thomas Heartman
0ba7954207
chore: Support border collapsing for an arbitrary number of filters (#10862)
Allows using an arbitrary number of styled chips with successful border
collapsing.

Before:
<img width="682" height="126" alt="image"
src="https://github.com/user-attachments/assets/80d66a5a-e0d7-461f-9be4-4a75579a7ff2"
/>

<img width="634" height="134" alt="image"
src="https://github.com/user-attachments/assets/5d42be62-c4db-49a2-8c36-6f941f742f5f"
/>


After:
<img width="647" height="166" alt="image"
src="https://github.com/user-attachments/assets/43a2fcf8-2a56-41a3-ad84-381a6adfc947"
/>

<img width="641" height="131" alt="image"
src="https://github.com/user-attachments/assets/cb38bae1-77e0-4c8b-b12f-4e4fa8250a34"
/>
2025-10-24 15:18:39 +00:00