New Features
Improved Granularity in Custom Project Roles
Now you can enjoy enhanced permissions for project roles, allowing you to view project configuration details without the capability to edit these permissions. This improvement brings more control and flexibility to project management.
Search with Filters/Operators
We've introduced an advanced search functionality on both the project and global features pages. This feature enables full-text searches of feature names and descriptions, supports multiple keywords, and includes various filters like Created Date, Project, Segment, State, and Tags. This enhancement is designed to streamline the process of finding and filtering features, making your searches more efficient and effective.
Segment Usage Detection in Change Requests
In our latest update, we've added protection against the deletion of segments that are currently used in open change requests. This means that as long as the change request remains open, the segments in use are safe from deletion, regardless of the status of change requests in the project. Additionally, the segments screen now provides information on segment usage in change requests, along with the existing usage in strategies, enhancing your project management and oversight capabilities.
Deprecations
Edge bulk metrics endpoint
The edge bulk metrics endpoint (/edge/metrics
) is deprecated and turned off by default.
This endpoint is only used by Edge, but to keep metrics you should upgrade your Edge installations to 17.0.0 or newer (17.1.0 is out). Get the latest Edge here. If you cannot upgrade Edge you must start Unleash with the environment variable UNLEASH_EXPERIMENTAL_EDGE_BULK_METRICS
set to true
to keep /edge/metrics
enabled.
Thank you for your continued support and feedback. We hope you enjoy these new features and improvements.
Full log:
- 6914a2723 - 5.9.0
- 54feffa9d - docs: Update CHANGELOG.md
- 542acd30a - docs: simplify Python tutorial (#6073)
- bb02ffd8c - feat: A/B test search feedback variants (#6085)
- 79e86e1ac - feat: project health widget (#6092)
- fcb8bf691 - chore: scheduled created-by migrations metrics (#6089)
- 884bc8674 - chore: add documentation to search filters/operators (#6088)
- 0f901bbe1 - fix: fix skeleton not appearing on feature toggle list (#6093)
- 67f8a3ccc - docs: change "time burden" to "time investment" (#6079)
- 4635c4882 - chore: revert docusaurus-plugin-openapi-docs (#6091)
- a9d1bdb4b - fix: freezing navigation (#6090)
- 5417662f5 - chore: add metrics for conflict creation detection (#6022)
- d77e5391e - refactor: FlagsChart and FlagsProjectChart components (#6087)
- bc95ed654 - docs: add academy links and banners (#6083)
- ccf165568 - docs: make navbar separators partially transparent (#6084)
- 55474124a - fix: we want to build docs on PRs related to docs
- 0c95cd3f5 - fix(deps): update dependency docusaurus-plugin-openapi-docs to v2.0.4 (#5819)
- ebd53a6ef - fix: disable building docs (old)
- e6ccd8373 - refactor: LineChart component (#6072)
- f298d7d51 - feat: scheduler overrun protection (#6082)
- 73322f12f - chore: remove detectSegmentUsageInChangeRequests flag (#6080)
- d7eb950f3 - chore: remove featureSearchAPI flag (#6081)
- aae1d0576 - feat: add project flags component (#6070)
- c6a230302 - chore: remove featureSearchFrontend flag (#6066)
- b2c127c05 - docs: fix navbar styling issues: GitHub icon, button background, hidden text (#6078)
- c9ac4916e - feat: executive dashboard responsive grid (#6069)
- ccc41dca4 - feat: scheduler init jitter (#6071)
- 55b2bb481 - feat: expose project time to production for project flag trends (#6068)
- 82e84ec14 - feat: migration for health and time_to_production in flag trends (#6067)
- 38df2e183 - fix: add instanceName to license display (#6065)
- 3ff19f3eb - improve:schedule-execution-failed-email (#6051)
- febd01a57 - chore: update database migration ADR (#6036)
- 7d6d4064a - feat: connect dashboard static widgets to data (#6062)
- 832884b4f - fix: admin token should be passed forward from controllers (#5960)
- 2643ac135 - feat: add CR id to plausible events (#6035)
- 46fb40ca0 - fix: dashboard layout (#6063)
- 9d2c65c9c - chore: events created by userid migration (#6027)
- 6f4f8661c - docs: update nav bar (#6045)
- 1d5d7ee57 - fix: updating links across the React docs (#6054)
- c08ac86c5 - chore: filter on token username and user id in SQL instead (#6061)
- 8a7e65eaa - refactor: cleanup fix for persistent set (#6060)
- c1046079d - chore: actions modal form (#6057)
- 7da923251 - refactor: add temporary ts-expect-error to setGlobalStore in setHiddenEnvironments
- cdb42b3f7 - chore: remove drew as a codeowner for docs (#6056)
- bbebd293e - chore: add a migration that removes incorrectly set sysuserid (#6032)
- e652af49a - chore: default the data migration flag for createdbyuserid to false (#6048)
- ce219f1b7 - fix: hidden envs (#6050)
- 4a2d1b036 - fix: return 400 when enabling env of archived toggle (#6049)
- a1fa5a421 - feat: flag trends db migration (#6044)
- 61c6583e2 - Feat/dashboard chart tooltip (#6038)
- 4a025a4b4 - feat: flag widget (#6047)
- 9b281ca50 - feat: stale flags count per project (#6043)
- 6ee4d2724 - fix: actions table UI improvements (#6042)
- 32dd377c3 - fix: Use knex whereLike instead of whereRaw to fix escaping (#6041)
- 32484460e - chore: project actions table (#6039)
- 00b3cbaa8 - Dashboard API hook (#5990)
- 9ac1c88bd - feat: new user widget (#6037)
- c7f13aec0 - chore: implement created_by_user_id in features (#5994)
- 8ab4aa3d0 - feat: user trends migration (#6030)
- 0045fcbcd - chore: replace systemUser -1 with new -1337 system user (#5999)
- 8f3275ee4 - chore: change users image_url column to text (#6031)
- 89bea0d53 - fix: clone variants (featureEnv and strategy) when cloning an env (#6026)
- 41351a694 - refactor: Instance stats service composition root (#6029)
- b0ecfd4d3 - feat: add plausible change-requests-conflicts (#6024)
- 936fa44ec - Shorter nav names for tutorials while maintaining SEO titles (#6028)
- 17d826ddf - task: Add banner encouraging edge upgrade (#6018)
- 3acdfc2cf - task: Make /edge/metrics toggleable by toggle (#6003)
- 1f7c7940b - Feature Flags with Python Tutorial (#6016)
- e4ca8a3e6 - feat: track search bar events (#6021)
- 331033408 - fix: flag resolver get variant (#6020)
- cee2500a4 - feat(2-1879): add enabled to action sets (#6023)
- 5d1d42874 - chore: project actions tab (#6009)
- e087f4226 - Docs: Getting Started Self-Hosting unleash (#6019)
- 01318b11e - fix: show the updated value instead of the snapshot value (#5989)
- 13a9b1bc1 - fix: project settings title (#6011)
- e3fb3fd0b - fix: variant stickiness fix node client (#6017)
- 7413a1ee1 - chore: add support for project and environment in PermissionGuard (#6008)
- 68eb3dec0 - fix: upgrade unleash-client to v5.3.0 (#5800)
- 3957abf0f - docs: Minor typos (#6014)
- ab24264df - docs: spelling and grammar (#6007)
- e9d49d68f - Docs/license keys (#5959)
- 9f550331c - chore: validate all tables have primary keys (#6005)
- 82ac5a47a - chore: This helps output the migrations being applied (#6004)
- 156ba39b4 - fix: strategy screen re-rendering table bug (#6006)
- 0515b424c - docs: Added the new more fine-grained project permissions to the docs (#6000)
- cc5a4cbe3 - fix: add unleash to default email sender string (#6002)
- db93ab57f - chore: remove flagResolver option (#6001)
- f63581c03 - fix: enabled lock check (#5997)
- 48ef88b4f - test: variant edit corner cases (#5998)
- 0b1d565da - chore: add logs (#5996)
- 3fd735ac7 - fix: move useEffect before renders (#5995)
- 5305c868e - fix: update stickiness between tabs (#5991)
- 8458619d8 - Small typo fix. (#5993)
- 0847c2e52 - chore: add new action hooks (#5992)
- b6a219dd3 - docs/improve website README.md with local docs server installation step (#5956)
- 8256c2eaf - task: Use fine-grained project permissions in frontend (#5974)
- b7483e898 - chore: generate frontend openapi types (#5988)
- fd91cd177 - fix: don't use kebab-case for properties (#5979)
- 60d2176ef - feat: add option to use variants with feedback (#5986)
- c5afa8ff1 - fix: unauthorized disable feature (#5982)
- 055bab8e7 - feat: include number of flags chart (#5987)
- 8ba5cdced - feat: add action states (#5983)
- c9b99f41c - feat: number of flags component (#5984)
- 312a40ce1 - refactor: prefer 'span' to 'div' in the badge element (#5981)
- ec1439e17 - Feat: dashboard users chart frontend (#5980)
- edf3cad09 - fix: add keys to the features cell component (#5978)
- f7c818014 - Chore: omit snapshot property from event payload (#5972)
- 0bb709a71 - feat: show changes that would be overwritten in change request overview UI (#5964)
- 8f4780c52 - chore(deps): update dependency vite to v5.0.12 [security] (#5977)
- 01a38becb - fix: handle title diffing correctly in strategy change diffs (#5971)
- 5253482f6 - refactor: add typesafe wrappers for prom client metrics (#5969)
- 77fcc9e84 - fix: incoming webhooks form UI adjustments (#5973)
- 7b30ab09d - Fix email template scheduled change conflict (#5957)
- dda0fd3fd - Fix: losing redirect on provider login (#5970)
- 84e341bbb - feat: show select all button when more than 1 item (#5965)
- 8164b2efb - 5.8.2
- 31a9a75b1 - docs: Update CHANGELOG.md
- a096b2a48 - fix: store redirect to localStorage to avoid loss of redirect (#5929)
- 4ee2acb3a - fix: add more comprehensive metrics for feedback (#5967)
- 3dc12a5e1 - fix: create tokens createByUserId (#5968)
- c69137a1e - feat: add algorithm to detect what strategy changes would be overwritten by applying a CR (#5963)
- 228d99454 - fix: feature toggle update total needs 4 labels (#5946) (#5966)
- b00909db3 - test: show array param decoder (#5955)
- 22037cb0f - fix: normalize hours back to prevent freezing UI (#5953)
- 277e3e0af - chore(deps): update react-router monorepo to v6.21.2 (#5961)
- bf6586164 - chore(deps): update dependency @tanstack/react-table to v8.11.4 (#5958)
- b64f8ad80 - React examples doc with images and relative links (#5921)
- 1fd7749ae - fix: prevent jumping columns in search view (#5950)
- 80bc4e05a - chore: add types to pat middleware (#5951)
- 105747293 - fix: show pagination when enough items (#5948)
- 3dd188e77 - refactor: shared url_safe_basic constant (#5952)
- b91df6199 - chore: re use extract user methods (#5947)
- 605125fbb - feat: add primary keys to missing tables (#5943)
- 5b56fac66 - Chore inc webhooks modal form (#5938)
- 4b02d6aa9 - Executive Dashboard page setup (#5949)
- d3215335c - feat: metrics periods expressed in days (#5928)
- f5cf118b1 - fix: precise selected all chips check (#5945)
- 567099a15 - fix: table loader (#5937)
- 86b5f108d - fix: feature toggle update total needs 4 labels (#5946)
- 043beca61 - docs: add deprecation notice to Admin tokens (#5909)
- fa72ced1e - feat: added more granular project permissions (#5932)
- 77985ec0f - chore(deps): update actions/cache action to v4 (#5941)
- ceaaf3d0f - feat: admin token calls get an admin token user (#5924)
- 6a5ce1f2a - chore(deps): update lycheeverse/lychee-action action to v1.9.1 (#5935)
- 242d2e5f2 - chore : upgrade jsdom to 23 (#5934)
- 1392b1072 - fix(import): making all imports relative and removing baseUrl (#5847)
- 60813acb0 - fix: make the conflcit email template button conditionally render (#5931)
- 1deee1031 - Feat/disabled strategies (#5930)
- ee08bd8d4 - chore(deps): update dependency @types/supertest to v6 (#5926)
- 5fb2ac805 - fix: select default application based on timespan (#5927)
- bbaf57484 - chore: add flag to experimental.ts (#5925)
- 2b1111044 - feat: added killswitch for admin tokens (#5905)
- 6a55964ce - fix: metrics apps should be selected from the longest time span (#5923)
- f61750a75 - chore(deps): update dependency debounce to v2 (#5901)
- 16691d72d - refactor: metrics in feature oriented architecture (#5919)
- aee470a7d - chore(deps): update actions/setup-node action to v4 (#5891)
- 9d32bf53e - fix: refactor autosave to use the id to resolve the constraint (#5917)
- 5f4fe2072 - chore(deps): update dependency @types/node to v18.19.6 (#5920)
- 04e55831e - chore: add another system user for admin tokens (#5915)
- d2366a8aa - fix: improve SSO default role resolution (#5916)
- 3bebc11fb - feat: adjust height on applications list in metrics (#5918)
- 9f7203057 - Updated scheduled-change-conflict (#5908)
- f6c062486 - feat: prevent double daily metrics insert (#5906)
- 967ee13e6 - fix: add symbols as constraint ids (#5913)
- af4c3a86d - fix: should not import archived child and parent (#5912)
- 9989688d3 - chore: missing export (#5911)
- 2ddc56927 - chore: centralize events service creation (#5910)
- f22efdfdd - chore(deps): update actions/upload-artifact action to v4 (#5892)
- 317e0e7ec - feat: event types for actions (#5907)
- aeb9c85f1 - chore: delete unnecessary column permission_id (#5413)
- dfeaea8ee - feat: hours back feature metrics tracking (#5904)
- 3b5b1ec02 - chore: add tokens column to incoming webhooks table (#5903)
- 9d370ad85 - Fix/autosave on delete (#5899)
- 6e234727e - chore: align with system user in db (#5893)
- 4564c9792 - chore: remove system user's email in db. (#5849)
- 65eb8956e - feat: Prometheus last day metrics (#5878)
- 6cfb7b4fb - feat: feature metrics table timezone (#5880)
- 9ac8a466a - feat: select all applications (#5897)
- 3e186f198 - chore: remove schedulers (#5895)
- 1c84a8117 - fix: include custom root roles in user access overview (#5898)
- 0ba37e862 - feat: list all root roles in SSO config (#5887)
- 9d839299e - fix: differentiated interval and initial schedule call (#5896)
- 22acadf4c - fix: role form sluggishness (#5888)
- ebd673e9f - fix: use the new method (#5894)
- f7b285d34 - feat: add undo (#5879)
- 0ab42ab45 - fix(deps): update dependency json-schema-to-ts to v2.12.0 (#5890)
- f3f3e2780 - chore(deps): update dependency @types/node to v18.19.5 (#5889)
- d1ea95948 - chore(deps): update react-router monorepo to v6.21.1 (#5886)
- c6ff93151 - chore(deps): update lycheeverse/lychee-action action to v1.9.0 (#5885)
- 03ee50628 - chore(deps): update dependency vitest to v1.1.3 (#5884)
- d68563f5d - chore(deps): update dependency vite to v5.0.11 (#5883)
- a4c116128 - chore: fix lints on main (#5877)
- 8eb5a53ad - feat: metrics calculation limit (#5853)
- 8ae267ea2 - feat: show suspended schedules in timeline (#5873)
- c816ffd49 - feat: aggregate metrics for the same timestamp (#5876)
- a88763283 - feat: show suspended schedule states in review status (#5872)
- aecc0b54a - feat: show suspended states in change request badge (#5871)
- 5a3bb1ffc - Biome1.5.1 (#5867)
- e27a578fa - feat: separate UI flag and backend flag for extended metrics (#5875)
- b1d7c2712 - docs: add a note about suspended change request schedules (#5874)
- 39145e261 - refactor: use union types for change request types (#5870)
- 6ba4591c7 - feat: select multiple apps (#5860)
- e3fc4b51f - chore(deps): update dependency vanilla-jsoneditor to ^0.21.0 (#5869)
- 5dd580866 - chore(deps): update dependency ssh2 to v1.15.0 (#5868)
- 6c5ae6662 - chore(deps): update dependency orval to v6.23.0 (#5863)
- 3c26c785e - fix(deps): update dependency @slack/web-api to v6.11.1 (#5865)
- 0210bbba5 - chore(deps): update dependency replace-in-file to v7.1.0 (#5864)
- af7b9f543 - chore(deps): update material-ui monorepo (#5862)
- f93dedef3 - chore(deps): update dependency vitest to v1.1.2 (#5861)
- 79d438ac4 - feat: add automated actions tables (#5857)
- be579ba63 - chore: update orval schemas (#5858)
- b496990f7 - chore: add no unused imports biome rule (#5855)
- 98fd3ce06 - chore: Delete silly-file (#5856)
- 7af91c7e9 - chore: incoming webhooks table (#5837)
- 6ae6193d3 - chore: remove unused event (#5854)
- 42bc52258 - chore: wait for post to finish instead of waiting a fixed time (#5851)
- 3779a6f0f - Revert "chore: align the system user defined in
core.ts
with the one created in the migration (#5845)" (#5852) - 2a723ea9e - fix: remove empty variants when changing tabs (#5850)
- 3a2d4ae60 - feat: daily metrics display (#5836)
- ca3b4c505 - feat: Metrics api returning daily data (#5830)
- 0b5ac19d9 - chore: align the system user defined in
core.ts
with the one created in the migration (#5845) - 623b9b127 - chore: validate import data using api (#5848)
- 2bff3f010 - chore(deps): update material-ui monorepo (#4403)
- 17d5ac4db - docs: remove white background from images + zoomed images (#5846)
- 0b50a4e7c - fix/remove cancel button (#5838)
- 4a2fc8793 - chore(deps): update dependency countries-and-timezones to v3.6.0 (#5843)
- 23f371ebb - chore(deps): update dependency fast-check to v3.15.0 (#5844)
- 044193c36 - chore(deps): update dependency classnames to v2.5.1 (#5842)
- d2331da36 - chore(deps): update dependency @tanstack/react-table to v8.11.3 (#5841)
- b02d2816b - chore(deps): update dependency @codemirror/state to v6.4.0 (#5840)
- 9cf3ae6aa - chore(deps): update akhileshns/heroku-deploy action to v3.13.15 (#5839)
- 78fa12260 - Fix/banner placement (#5833)
- 36acef244 - chore(deps): update dependency @testing-library/jest-dom to v6 (#5835)
- e7642c02a - feat: Added bulk metrics support under /api/client/metrics/bulk path (#5779)
- dcf539f4f - fix(deps): update dependency nodemailer to v6.9.8 (#5832)
- e6c7f4478 - 5.8.1
- 2ffeecc7c - docs: Update CHANGELOG.md
- aca4f85c4 - cherry-pick : plausible on top of feedback (#5827)
- d6afe69a0 - Fix/constraint accordion autosave (#5825)
- d71108526 - feat: read extended metrics from more than 48 hours (#5822)
- 10c3acd27 - chore: adapt integrations layout for incoming webhooks (#5828)
- 336eab9c5 - feat: allow slack-app and webhook to listen to schedule suspended events (#5821)
- 204e1288c - feat: include environment type label in feature_toggle_update metrics (#5823)
- d770f624e - refactor: move plausible context on top of feedback (#5824)
- 17fe26463 - chore: remove redundant linting check, lint before test (#5826)
- 92ae2235a - chore(deps): update dependency @biomejs/biome to v1.4.1 (#5709)
- 2c0c4e70e - feat: Schedule daily metrics deletion (#5807)
- 920e80c17 - chore: add schedule suspended event type (#5820)
- 51e2d3ed4 - chore(deps): update dependency node to v18.19.0 (#4957)
- dff3da11c - chore(deps): update dependency whatwg-fetch to v3.6.20 (#5818)
- e8ffea392 - chore: add
reason
column to change request schedule table (#5802) - 721a85de2 - chore(deps): update dependency vitest to v1.1.1 (#5817)
- 80cbdab91 - chore(deps): update dependency sass to v1.69.7 (#5816)
- b173d8f1a - chore(deps): update dependency vite-tsconfig-paths to v4.2.3 (#5815)
- 0956954aa - chore(deps): update dependency @types/react-table to v7.7.19 (#5814)
- a98a18160 - chore(deps): update dependency sass to v1.69.6 (#5812)
- a13ad5045 - chore(deps): update dependency ts-node to v10.9.2 (#5813)
- cb5ed951e - docs: describe frontend API tokens (#5784)
- 6d4a727bd - fix: remove unsued metric 'optimal304DiffingCounter' (#5810)
- dcb8b5b5a - chore(deps): update actions/github-script action to v7 (#5539)
- 03f5e0eb7 - fix: import test wait should be between import and page load (#5811)
- 24b202ef0 - feat: include environment type label in feature_toggle_update metrics (#5809)
- 2590b4eae - React v3 updates from offsite (#5787)
- 77f697810 - chore(deps): bump follow-redirects from 1.15.3 to 1.15.4 in /docker (#5794)
- 97dc19713 - chore(deps): bump follow-redirects from 1.15.3 to 1.15.4 (#5795)
- c9805298e - chore(deps): bump follow-redirects from 1.15.2 to 1.15.4 in /frontend (#5796)
- c81f3c394 - chore(deps): bump follow-redirects from 1.15.2 to 1.15.4 in /website (#5797)
- a1b04e4b8 - feat: Aggregate daily metrics (#5804)
- adc47fd77 - feat: add db metrics for environment-store (#5808)
- eb7882e2e - feat: add automated actions flag (#5805)
- 99b165741 - feat: daily metrics db migration (#5791)
- 24b4e8dcb - chore: incoming webhooks description migration (#5803)
- 72f84f038 - feat: overflow email when it's too long (#5801)
- 1333ea7d6 - docs: add redirect for python SDK docs
- 5c0cc48ec - docs: change CNAME for github pages to gh.getunleash.io
- 9f12404e4 - docs: fix typo in helm-charts rewrite
- 82b16bc74 - docs: add raw rewrites for helm chart
- b8231e6dd - docs: added robots.txt
- fbeb5425a - feat: add tooltip to Scheduled badge (#5726)
- a71b513e9 - docs: add image zoom to docs (#5778)
- 43f52c224 - chore(deps): update dependency cypress to v13.6.2 (#5798)
- 51d938654 - chore(deps): update dependency browserslist to v4.22.2 (#5793)
- be0597490 - docs: fix vercel formatting error
- f040e2537 - docs: add helm-charts rewrites
- 472d5fe9f - chore(deps): update dependency @types/react-timeago to v4.1.7 (#5792)
- c8fb31300 - chore: incoming webhook token hooks (#5790)
- 68d7af919 - chore: incoming webhook hooks (#5788)
- 02e230f40 - Docs: Remove Community Party Banner (#5789)
- 8955a9906 - feat: extended metrics options ui (#5786)
- c6f1f44e6 - chore: show new change request diagram for users who are exposed to scheduled CRs (#5777)
- c9eac6edc - chore(deps): update dependency @swc/core to v1.3.102 (#5783)
- 0258ff526 - docs: test helm redirect x3
- e91c9f236 - chore(deps): update dependency @babel/core to v7.23.7 (#5781)
- 7894d6b55 - docs: test helm redirects
- 7fc9913c4 - docs: test helm redirects
- 5717c5e8c - chore(deps): update dependency @testing-library/user-event to v14.5.2 (#5780)
- 093ac9642 - docs: enable clean urls in vercel
- c6ba9603c - fix: demo banner zIndex, display on top (#5776)
- 172421948 - feat: encrypt emails at rest for demo login (#5759)
- 27f70cd06 - bump version to 5.8.0+main
- e769ceab0 - task: Add an X-Unleash-Version header to register response (#5774)
- 3b40a714b - 5.8.0
- d4abf446a - docs: Update CHANGELOG.md