Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-06-21 09:09:11 +00:00
parent 760dc77214
commit 49abdb108a
116 changed files with 2945 additions and 873 deletions

View File

@ -2,6 +2,934 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 16.1.0 (2023-06-21)
### Added (224 changes)
- [Initiate the process of group wiki indexing](gitlab-org/gitlab@9bd405f4f5caceda6c069ff893c4a03c2369c435) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120171)) **GitLab Enterprise Edition**
- [Add copy reference and email address actions in work items](gitlab-org/gitlab@d4ef682430f4025e8df8a07681fa95de1066b95f) ([merge request](gitlab-org/gitlab!122932)) **GitLab Enterprise Edition**
- [Implement group-level dependency list export API](gitlab-org/gitlab@dce970d363a4ed422d99af8ef00e1b7299941379) ([merge request](gitlab-org/gitlab!123397)) **GitLab Enterprise Edition**
- [Add runner status column](gitlab-org/gitlab@a80e35eb6eff575325535344d18e1749d61b95b2) ([merge request](gitlab-org/gitlab!123798))
- [Add a guideline to configure dnsmasq for Pages](gitlab-org/gitlab@87f95e8d2f17ee695f11e52b27e502bf32d21678) ([merge request](gitlab-org/gitlab!123802))
- [Add GeoJSON support for viewing files](gitlab-org/gitlab@05e09bb9f7166ae03c59c43075ef04a45f7b3558) ([merge request](gitlab-org/gitlab!123012))
- [Introduce find_changed_paths with merge_commit_diff_mode](gitlab-org/gitlab@d773f966e8a57ecb360dc58c0935b2be288b11c4) ([merge request](gitlab-org/gitlab!123501))
- [Added new component + imoplemented @anna_vovchenko notes](gitlab-org/gitlab@c28e6f60eb1edafc82bb3388c6dce304dcd15a74) ([merge request](gitlab-org/gitlab!121063))
- [Added not_aimed_for_deletion filter for namespace-project](gitlab-org/gitlab@ffd598efe9287db2becb3287b45e66cdcf4d5447) ([merge request](gitlab-org/gitlab!123153))
- [Adding monthly metric for ci builds (28d)](gitlab-org/gitlab@378537cbaa1dd6b6887059d7d833b413dc13ff75) ([merge request](gitlab-org/gitlab!122227))
- [Show fixed list of audit events in listbox](gitlab-org/gitlab@f9935b6c262bd1fa3968ea3477e037bb86cf385b) ([merge request](gitlab-org/gitlab!123181)) **GitLab Enterprise Edition**
- [Add `object_attributes.name` to `pipeline_hooks`](gitlab-org/gitlab@f5ea19c8d29d6d22ab20999b23d9612e731b77d4) ([merge request](gitlab-org/gitlab!123639))
- [Add Add-on purchase API services](gitlab-org/gitlab@8e0c5b0a795c7c2981486b5813a677c744c3fc27) ([merge request](gitlab-org/gitlab!123382)) **GitLab Enterprise Edition**
- [Add limit_changes to PlanLimits](gitlab-org/gitlab@4b415da0eba13004887336fc5f42ba7495785783) ([merge request](gitlab-org/gitlab!122868))
- [Update audit event streams with collapsible UI](gitlab-org/gitlab@f9c2e2abd38b9af5b810a3d58d7a1b42c92eb97a) ([merge request](gitlab-org/gitlab!122746)) **GitLab Enterprise Edition**
- [Allow PAT creation for instance service accounts](gitlab-org/gitlab@8b8a0f8602a8feb9797e537816357eb389fdc3e1) ([merge request](gitlab-org/gitlab!122816)) **GitLab Enterprise Edition**
- [Add popular user fields to GraphQL](gitlab-org/gitlab@e015bf5d5f7dc123c494fed4e809648f66091170) ([merge request](gitlab-org/gitlab!123679))
- [User role badges for work item notes](gitlab-org/gitlab@cc7fd2ed78d5946aacd3d9bde9000646f94d0b3b) ([merge request](gitlab-org/gitlab!123469))
- [Fix overflow margin on productivity analytics filter bar](gitlab-org/gitlab@284b9f256eb6a89bbf9ad4641ef7fea8ed322d43) ([merge request](gitlab-org/gitlab!123729)) **GitLab Enterprise Edition**
- [Add ci_job_annotations table](gitlab-org/gitlab@cbde15832db39815fc813dbd306a0c2d4d2a9205) by @KyleFromKitware ([merge request](gitlab-org/gitlab!117319))
- [Add API endpoint to get single SAML/SCIM identity](gitlab-org/gitlab@e09a816c8462180fe43c00d64b20afe85981f590) ([merge request](gitlab-org/gitlab!123591)) **GitLab Enterprise Edition**
- [Add state data suport for the new component](gitlab-org/gitlab@0a81c403c783699b73ed3f8184ee291e9151e388) ([merge request](gitlab-org/gitlab!121060))
- [Add Add-on purchase API services](gitlab-org/gitlab@d7691ae550da5c20eb9fc73bcc1e6f0dee926258) ([merge request](gitlab-org/gitlab!123387)) **GitLab Enterprise Edition**
- [Added service and mutation to set user namespace commit email](gitlab-org/gitlab@937ddb53e35c7e3e0468d73e4ee65c7f8b989d34) by @zillemarco ([merge request](gitlab-org/gitlab!108236))
- [Add branch_type validations](gitlab-org/gitlab@8de296ff9f9b4ad2f1d72215a972aaf64bd90f87) ([merge request](gitlab-org/gitlab!122224)) **GitLab Enterprise Edition**
- [Implement package pipelines endpoint](gitlab-org/gitlab@bf410d4ed067cdd263bdcaf0a9acaeb942efacca) ([merge request](gitlab-org/gitlab!117539))
- [Add upgrade status to runner managers](gitlab-org/gitlab@4623dfbadea633062000d6ca5a7afa4d8022e6c8) ([merge request](gitlab-org/gitlab!122474)) **GitLab Enterprise Edition**
- [Add monthly metrics definition for unlink quick action](gitlab-org/gitlab@002d698160f469fb25779c7908e8db87d31972fc) ([merge request](gitlab-org/gitlab!123485))
- [Track GitLab realm in Code Suggest access token](gitlab-org/gitlab@1c223e88a48c4afbeb656ff195af7864d39fd442) ([merge request](gitlab-org/gitlab!123613))
- [Add information to runner manager details](gitlab-org/gitlab@a3a05fa7173310f3a7325b1403d902451fc4a65b) ([merge request](gitlab-org/gitlab!121829))
- [Allow to delete UserAchievements](gitlab-org/gitlab@aee950537ea7fefe1d683c7cfcdd73b5726f9b64) by @Taucher2003 ([merge request](gitlab-org/gitlab!123221))
- [Restore index for contribution analytics](gitlab-org/gitlab@c0309cb13bce73e0a36bd11fcaa0b98df63213ad) ([merge request](gitlab-org/gitlab!123610))
- [Add API to mark migrations as successful](gitlab-org/gitlab@01588fe91f88d2812b851dac688456ae79f849d7) ([merge request](gitlab-org/gitlab!123408))
- [Seed default organization in development and production databases](gitlab-org/gitlab@fdff7390f07a732bc81e5710237295f95219ed92) ([merge request](gitlab-org/gitlab!122458))
- [Implement rudimentary check to prevent sending secrets to the AI](gitlab-org/gitlab@4690eea2f50823e507b164eb36bb0216875593d4) ([merge request](gitlab-org/gitlab!123034)) **GitLab Enterprise Edition**
- [Add promote_to quick action for work items](gitlab-org/gitlab@872d47ecc33f57f2b2014c1b164d1d3236f27614) ([merge request](gitlab-org/gitlab!122911))
- [Clean up ci_vueify_inherited_group_variables feature flag](gitlab-org/gitlab@f7b0828882b595f3adc1f796823bd2d39a70ee5a) ([merge request](gitlab-org/gitlab!123490))
- [Default enable comment_on_files flag](gitlab-org/gitlab@3bd00d3b0facf976b64912f1e2f77109d2dd5d73) ([merge request](gitlab-org/gitlab!123515))
- [Add vacuum type to vaccum activity view](gitlab-org/gitlab@a0d9c20d8670d96a3da7839cbdea4cc53169bfa1) ([merge request](gitlab-org/gitlab!123353))
- [Add third party alert](gitlab-org/gitlab@8fc75859c88714eb2bfe26d5cf7703ba7c40ea07) ([merge request](gitlab-org/gitlab!123377)) **GitLab Enterprise Edition**
- [Add Telegram notification integrations](gitlab-org/gitlab@9a35900cd0762cfd5fdad13992604ddf4193b85d) ([merge request](gitlab-org/gitlab!122879))
- [Allow users to access agent through `user_access` keyword](gitlab-org/gitlab@7b82e8949f21ea35f968cbbee0592fd8680c1e92) ([merge request](gitlab-org/gitlab!123479))
- [Cron job to delete unconfirmed users after N days](gitlab-org/gitlab@63a187d47f6da353ba4514650bbbbeb99c356325) ([merge request](gitlab-org/gitlab!122600))
- [Re-run background migration for PersonalAccessToken#expires_at](gitlab-org/gitlab@fc2cfd008a0f3270f427a2927c4aa84c19ff6cd3) ([merge request](gitlab-org/gitlab!123002))
- [Support dotnet nuget api-key option](gitlab-org/gitlab@0b3a1e151bdbdfab6159fa03fcbaf6f799db23c6) ([merge request](gitlab-org/gitlab!121564))
- [Add ExplainTool to GitLab Chat & add authorization check](gitlab-org/gitlab@9fee27f4b03e98ec45f8f4a51eda54df07e7f6b0) ([merge request](gitlab-org/gitlab!123370)) **GitLab Enterprise Edition**
- [Update Vulnerability::Reads#dismissal_reason if it exists](gitlab-org/gitlab@460c5bf223aa215aa15710f4e594c75fa64afe79) ([merge request](gitlab-org/gitlab!122590)) **GitLab Enterprise Edition**
- [Add unlink quick actions for issues](gitlab-org/gitlab@bc7f434be4a1d41f61dd62da05c0384013e3c5cf) ([merge request](gitlab-org/gitlab!122765))
- [Add migration to delete duplicate npm packages](gitlab-org/gitlab@b4044dd30087cb436733d45ac99196b74ed9ea4a) ([merge request](gitlab-org/gitlab!114695))
- [Add pipeline url to webhook payload](gitlab-org/gitlab@ac44cb478976474548c0659c821c6fe823a90a3d) by @sbansal1999 ([merge request](gitlab-org/gitlab!123241))
- [Add project_compliance_standards_adherence table](gitlab-org/gitlab@92cec0421b1815bcc4d366632cde5a6b3e2c612f) ([merge request](gitlab-org/gitlab!122293))
- [Refactor: user profile page to Vue](gitlab-org/gitlab@721ef4aba61e61a1e2e7d605fffc26945b336dbd) ([merge request](gitlab-org/gitlab!122402))
- [Add tracking for bundled JetBrains plugin](gitlab-org/gitlab@5db44f83614f32fbb56d150f1289ad738396c676) ([merge request](gitlab-org/gitlab!122955))
- [Add note contributor and access level](gitlab-org/gitlab@854f9b08e125c6c24098f91fc637c6da11b8baac) ([merge request](gitlab-org/gitlab!122164))
- [Patch Rails.cache for Redis Cluster compatibility](gitlab-org/gitlab@ef87b590dc72ece47c4647f02e212c839938b20d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119724))
- [Add ExplainCode LLM Agent Tool](gitlab-org/gitlab@28926d769cdee222deb46141503df62c5bef309f) ([merge request](gitlab-org/gitlab!122785)) **GitLab Enterprise Edition**
- [Add basic default system prompt to LLM Agent](gitlab-org/gitlab@f4a19f0f0b265e9858938a5d83027195939ac7c5) ([merge request](gitlab-org/gitlab!123021)) **GitLab Enterprise Edition**
- [Enable anti-spam for notes](gitlab-org/gitlab@069487ba8d2ae424eaa7c84b35714d438cf94468) ([merge request](gitlab-org/gitlab!122257))
- [Show detected licenses with their names](gitlab-org/gitlab@0d9a4afa1aee862491eeece387eb24bbbb526bea) ([merge request](gitlab-org/gitlab!121151)) **GitLab Enterprise Edition**
- [Add BigInt `dependencyProxyTotalSizeBytes` field](gitlab-org/gitlab@02248f474edbe7e679646f9b2aadecf2410cd31b) ([merge request](gitlab-org/gitlab!121959))
- [Add top border style and size to display label colour in board header](gitlab-org/gitlab@34ccc914faf7364fc839c8563150257ff4cd1dcd) ([merge request](gitlab-org/gitlab!121807)) **GitLab Enterprise Edition**
- [Add permission checks for tools](gitlab-org/gitlab@f4d6c141308f50addef52abcf9ad34895b220256) ([merge request](gitlab-org/gitlab!122211))
- [Track unique users viewing an analytics dashboard](gitlab-org/gitlab@3d9fe03cd2a792f21787d2313b3ffe3ecf039891) ([merge request](gitlab-org/gitlab!122182)) **GitLab Enterprise Edition**
- [Add workItemUpdated GraphQL subscription](gitlab-org/gitlab@e88c1065f7cc7ca4d2f6627ff49f2425fb184f06) ([merge request](gitlab-org/gitlab!112050))
- [Add omniauthv2-shibboleth provider documentation](gitlab-org/gitlab@718b1237487906cc2cd772a428350fada541379b) by @lukaskoenen ([merge request](gitlab-org/gitlab!121235))
- [Improve table editing in content editor](gitlab-org/gitlab@7db91845a92d129e8a0f8212240160280620f190) ([merge request](gitlab-org/gitlab!121371))
- [Expose the prepared_at attribute ot the api](gitlab-org/gitlab@b98efb6c581e6f58da21b5e0a0b836de3f515125) ([merge request](gitlab-org/gitlab!122001))
- [Replace foreign keys to use the partitioned table](gitlab-org/gitlab@dfa57d19c7ac0656fae73a2f2419adf27324265c) ([merge request](gitlab-org/gitlab!121718))
- [Adds authorize endpoint for pacakges/ml_models](gitlab-org/gitlab@5655d6c9d204206537c781876748912f9a6c0b71) ([merge request](gitlab-org/gitlab!121027))
- [Add docs for configuring encrypted SSL keys for Puma](gitlab-org/gitlab@2190d855deac39673aeef43129d7a5ebd4afd521) ([merge request](gitlab-org/gitlab!122996))
- [Add delete note action visibility rspec](gitlab-org/gitlab@5d5a5ce5ac2b0c691a0bba9a1b4661287c529692) ([merge request](gitlab-org/gitlab!119302))
- [Add standards adherence tab to compliance report](gitlab-org/gitlab@50e1957e8a0c091a0ff94b22f39ae2d89354f527) ([merge request](gitlab-org/gitlab!122374)) **GitLab Enterprise Edition**
- [Support multiple license keys in development or test](gitlab-org/gitlab@967e626d80049b3412addc2dfff5de9dfb08a7ae) ([merge request](gitlab-org/gitlab!122951))
- [Add database structure for add-ons](gitlab-org/gitlab@6bdb1dcb7c7a2851037bfbcc05833eff1779c59d) ([merge request](gitlab-org/gitlab!122662))
- [Google cloud logging streaming strategy](gitlab-org/gitlab@e6f33020e78b4827f3fdf3ef63968dbb130a119d) ([merge request](gitlab-org/gitlab!122243)) **GitLab Enterprise Edition**
- [Refactor activate service](gitlab-org/gitlab@40eb9bf1e2e88667945de3f16f025b6b14357f60) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121708)) **GitLab Enterprise Edition**
- [Author role badge in work item notes](gitlab-org/gitlab@bc6c17fb3cde283b6b405a5929a43f48371441c7) ([merge request](gitlab-org/gitlab!121968))
- [Defers sidekiq jobs if database health check signals to stop](gitlab-org/gitlab@dfa4605e448d592a546b083523d1c4219a967998) ([merge request](gitlab-org/gitlab!121277))
- [Add doc for docker thread issue on old OS](gitlab-org/gitlab@6f360cefb51145f1745fbde1b9329dbe995178f6) ([merge request](gitlab-org/gitlab!122696))
- [Adds migration and backfill migration](gitlab-org/gitlab@9b67007dae978a73196303f6cb32e4078e8d18c7) ([merge request](gitlab-org/gitlab!121562)) **GitLab Enterprise Edition**
- [Create routing table for ci_builds](gitlab-org/gitlab@73f21ae3e0c1182ca66a8894ec90099fdc4ec347) ([merge request](gitlab-org/gitlab!120873))
- [Audit events for google cloud logging configurations](gitlab-org/gitlab@35bf9c0695330ae2df1ff5652e840913e39eef3b) ([merge request](gitlab-org/gitlab!122025)) **GitLab Enterprise Edition**
- [Add enterprise columns to users](gitlab-org/gitlab@38d9b0281f3d95573526b88f3f3c430a03c27a84) ([merge request](gitlab-org/gitlab!121549))
- [Add new jsonb column to store settings for default branch protection](gitlab-org/gitlab@5f426d5bfef13de59ae67e94eabb00380a81430d) ([merge request](gitlab-org/gitlab!120139))
- [Add local_reference (Merge Request ID) to commit template](gitlab-org/gitlab@dbdfd0ccfa14eb341b50d52545a022ecd9b3878c) by @zadkiel ([merge request](gitlab-org/gitlab!121186))
- [Store arkose scores in trust score table](gitlab-org/gitlab@8466c007de736f8a884fefc189982c782c4d473f) ([merge request](gitlab-org/gitlab!117853)) **GitLab Enterprise Edition**
- [Add routes, controller and view to](gitlab-org/gitlab@9b2ed5022a1504e67017d0b87a26a4de73215009) ([merge request](gitlab-org/gitlab!120489)) **GitLab Enterprise Edition**
- [Add security bot comment for policy violations in MRs](gitlab-org/gitlab@4c675c56e9162271f0dc0f51314c1c58c8bdaddc) ([merge request](gitlab-org/gitlab!121732)) **GitLab Enterprise Edition**
- [Add admin_vulnerability to custom roles](gitlab-org/gitlab@ceaacf4b3dc7d297988902d6a001072092c9a6ab) ([merge request](gitlab-org/gitlab!121534)) **GitLab Enterprise Edition**
- [Add new columns to scan_result_policies table](gitlab-org/gitlab@0c64ad3b597df7925060fe0099233466b1d21b80) ([merge request](gitlab-org/gitlab!122239))
- [Add snippet url to webhook payload](gitlab-org/gitlab@9d0c4c5e9f04b7fb9831bd8a936f35dfc15d01f7) by @sbansal1999 ([merge request](gitlab-org/gitlab!122579))
- [Log event name when yaml definition doesnt exist](gitlab-org/gitlab@fd2f7781f507a5e83c7533dbead27d6739697b0a) ([merge request](gitlab-org/gitlab!122154))
- [Add FIPS mode support to DAST CI template](gitlab-org/gitlab@deab49585741d9b1bdd5c1d5cbaa6f27bf4d905b) ([merge request](gitlab-org/gitlab!117929)) **GitLab Enterprise Edition**
- [Ability to add description in uploaded design](gitlab-org/gitlab@f45f376e4964425446e7f13493e943c42faceee6) ([merge request](gitlab-org/gitlab!118788))
- [Show health badge on Environments index page](gitlab-org/gitlab@57577fc77fad94d856a6e63991c1cbb01334725f) ([merge request](gitlab-org/gitlab!122188))
- [Add `findingReportsComparer` field to MR GraphQL type](gitlab-org/gitlab@7d5fa988e1a4405d270b320442e4e327696e04e2) ([merge request](gitlab-org/gitlab!122339)) **GitLab Enterprise Edition**
- [Add a GraphQL type for the audit event definitions](gitlab-org/gitlab@b951bfda9591927c6d32233ea73e5b6ffcee1cad) ([merge request](gitlab-org/gitlab!121375))
- [Support touch_last_downloaded_at in Packages::Npm::MetadataCache](gitlab-org/gitlab@f063d01fb62635e282fd8a74d34ab123616d6fc6) ([merge request](gitlab-org/gitlab!122642)) **GitLab Enterprise Edition**
- [Add table for the dependency proxy packages settings](gitlab-org/gitlab@83535384f970efb68c399f490064e3620abbed17) ([merge request](gitlab-org/gitlab!120894))
- [Remove ai_redis_cache flag](gitlab-org/gitlab@1503e0f6c1eb8b4d9e7757668a76be0a831ae891) ([merge request](gitlab-org/gitlab!122721)) **GitLab Enterprise Edition**
- [Enable deleting_account_disabled_for_users by default](gitlab-org/gitlab@62b2b716160a4ce06a66fde0f5aeed06200a635a) ([merge request](gitlab-org/gitlab!122640))
- [Add validation on `organizations.path`](gitlab-org/gitlab@e0aa805247354647df2e7dfa2d02b06cd4b47f90) ([merge request](gitlab-org/gitlab!122623))
- [Add background migration to backfill root storage statistics fork sizes](gitlab-org/gitlab@834032de584f6c7c9da7c29054c2f1ab93377a85) ([merge request](gitlab-org/gitlab!120916))
- [Audit event for merge request merged deletion started](gitlab-org/gitlab@324eefb44cc360ba9337d6f98f15069989b9bc20) ([merge request](gitlab-org/gitlab!121594)) **GitLab Enterprise Edition**
- [Adds frontend toggle for Model experiments](gitlab-org/gitlab@499318a761f7c149ecf908652b8ef701fdf6f4f7) ([merge request](gitlab-org/gitlab!121653))
- [Geo: Add verification for design repositories](gitlab-org/gitlab@9c04d9e52fcf8c1e86610c3a51e4779d342cac18) ([merge request](gitlab-org/gitlab!122181)) **GitLab Enterprise Edition**
- [Adds visualizations to ProjectType](gitlab-org/gitlab@30387f2850d18b3a4e1304c5dae7a3a9a8523b83) ([merge request](gitlab-org/gitlab!121275)) **GitLab Enterprise Edition**
- [Add upgrade status to RunnerManager in GraphQL](gitlab-org/gitlab@8caeaa1e9a922acb719453866d93e1180a6e2dbb) ([merge request](gitlab-org/gitlab!121825)) **GitLab Enterprise Edition**
- [feat: New REST endpoint for project access list of ci job token](gitlab-org/gitlab@c8ae951a1994755b713b4fb244ff1f3f666919fc) by @gerardo-navarro ([merge request](gitlab-org/gitlab!119675))
- [Add MR throughput to value streams dashboard](gitlab-org/gitlab@4dad16b96322959006de4527c5d9cbe4c164e2a2) ([merge request](gitlab-org/gitlab!121622)) **GitLab Enterprise Edition**
- [Add Group Service Accounts API](gitlab-org/gitlab@1c81cc4798bdf1b9b6864bf6458c494296f659c8) ([merge request](gitlab-org/gitlab!121598)) **GitLab Enterprise Edition**
- [Show the dismissal reason in finding modal](gitlab-org/gitlab@be5cd9f3271d0b66c750e712cc71d46f984643ca) ([merge request](gitlab-org/gitlab!122073)) **GitLab Enterprise Edition**
- [Add Settings to delete unconfirmed users](gitlab-org/gitlab@278b937d6c2d34b66ff5f3dca3a9ce350ef58ceb) ([merge request](gitlab-org/gitlab!122276))
- [Adding table for instance streaming headers](gitlab-org/gitlab@1391775f1658cdcd273d95f6bf165ca754caefe8) ([merge request](gitlab-org/gitlab!120997))
- [Support creating one project token on trial](gitlab-org/gitlab@c10a305b05ee1bb3257092d9d5a06d5612f8a76e) ([merge request](gitlab-org/gitlab!113111)) **GitLab Enterprise Edition**
- [Add worker to trigger CreateMetadataCacheService](gitlab-org/gitlab@53b499eff8dad78f7f82969fb4550d79e71df2ef) ([merge request](gitlab-org/gitlab!121714))
- [Fail product analytics initialization after 2 sidekiq failures](gitlab-org/gitlab@81f018df0f98d14f4e899dfc49c4680ac8c701ee) ([merge request](gitlab-org/gitlab!122208)) **GitLab Enterprise Edition**
- [Get associated agent info on environment page](gitlab-org/gitlab@6797e310a7790c69198c42e00ec5421278168567) ([merge request](gitlab-org/gitlab!122190))
- [Add audit events for issue creation by project access tokens](gitlab-org/gitlab@bfb3f817c47cb8e53c9df87a13b39778283809a2) ([merge request](gitlab-org/gitlab!121485)) **GitLab Enterprise Edition**
- [Add Nuget package description to information returned with a package](gitlab-org/gitlab@5d668b0f7e4c9baeec046c38444cc14e5af135b2) ([merge request](gitlab-org/gitlab!120100))
- [Add unique index on merge_request_diff_llm_summaries](gitlab-org/gitlab@cb8fd406cb5294a75d3c9fb5407597f86c5ee54e) ([merge request](gitlab-org/gitlab!122300))
- [Adds policy for read_model_experiments](gitlab-org/gitlab@17633101453fea423441447613c0764520226c52) ([merge request](gitlab-org/gitlab!121654))
- [Adds model for model_experiments_access_level](gitlab-org/gitlab@90d0c084a9f0f4190acff0c0210b4811ef83c6df) ([merge request](gitlab-org/gitlab!121650))
- [Add delete option to selected approvers](gitlab-org/gitlab@f21ecf29f05b83d93aa3c9bd0a341b89f708cffc) ([merge request](gitlab-org/gitlab!120884)) **GitLab Enterprise Edition**
- [Adds services to handle MlModel package creation](gitlab-org/gitlab@6cccdcb137ca6b55250d22b67953b03ef4ccd41b) ([merge request](gitlab-org/gitlab!121247))
- [Remove :admin_mode_for_api FF](gitlab-org/gitlab@272ae721fda5b126a40b141202e77899c0195b76) by @TrueKalix ([merge request](gitlab-org/gitlab!116255))
- [Cells: Store databases and gitlab schema configuration in YAML](gitlab-org/gitlab@f027557fd5c6f9e728abaa9ddf21b5c6d88ccc14) ([merge request](gitlab-org/gitlab!120484))
- [Allow variables in cache:policy field](gitlab-org/gitlab@484666c5f7a665d627aebc3d891de3ec81d60c3d) by @renehernandez ([merge request](gitlab-org/gitlab!120381))
- [Implement diffLlmSummaries property for MergeRequestType](gitlab-org/gitlab@99caf319f6d4d1f3a4c4803e9cb8c8956382dcf2) ([merge request](gitlab-org/gitlab!121656)) **GitLab Enterprise Edition**
- [Add artifacts bulk delete](gitlab-org/gitlab@dd5c9616dc02f1bc3814bdd08a073bcb3f36b016) ([merge request](gitlab-org/gitlab!121900))
- [Expose DORA scores via GraphQL](gitlab-org/gitlab@2541dc48e65da9a2ed917dc8d4d06447668c1473) ([merge request](gitlab-org/gitlab!120979)) **GitLab Enterprise Edition**
- [Expand runner details with system id and contact](gitlab-org/gitlab@2a63b19d5558588fb3365b046311351945583257) ([merge request](gitlab-org/gitlab!121400))
- [Cleanup human user type logic](gitlab-org/gitlab@57c8c30dd6961c2f7232c746cc43146fc945913c) ([merge request](gitlab-org/gitlab!121528))
- [Add links to vulnerability bulk status updates error message](gitlab-org/gitlab@62c052188055089e9a4cf314362e1da82894cb85) ([merge request](gitlab-org/gitlab!121227)) **GitLab Enterprise Edition**
- [Add service_desk_enabled to service_desk_settings](gitlab-org/gitlab@e443d085018402987a142d34b008ab295bab1358) ([merge request](gitlab-org/gitlab!121811))
- [Add migration for new column on app settings](gitlab-org/gitlab@0b6dc45785a20b823c61963715255b9d63644a7c) ([merge request](gitlab-org/gitlab!120977))
- [Cleanup artefacts from notes.id bigint migration](gitlab-org/gitlab@7db9953ed48fb3a8ed6ef5b89a5684e704d92a89) ([merge request](gitlab-org/gitlab!120206))
- [Adds new MlModel package type](gitlab-org/gitlab@78c51ee97be1eb38b696e4a0bc1eb6f4c8a2ecb3) ([merge request](gitlab-org/gitlab!120741))
- [Deterministic ordering of value streams](gitlab-org/gitlab@aecd3f6a39b5662ea47b66f1da15db57d9024019) ([merge request](gitlab-org/gitlab!121962))
- [Update mutation for google cloud logging configuration](gitlab-org/gitlab@55684a61f4225a1a81a8578d7ea2c725d5acac97) ([merge request](gitlab-org/gitlab!121237)) **GitLab Enterprise Edition**
- [Add option to allow developer push if there are no branches](gitlab-org/gitlab@d756f0c5ce6a99b5d20a9a73aa2122ac3a379fb1) ([merge request](gitlab-org/gitlab!118729))
- [Document Flux Receiver integration from agentk](gitlab-org/gitlab@939ef0689ae5c8c20476b89d247b2e8f93c78226) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121645))
- [Remove openai_moderation feature flag](gitlab-org/gitlab@618a41de303d58a7c441833f10b4b94ff4512b87) ([merge request](gitlab-org/gitlab!121871)) **GitLab Enterprise Edition**
- [Removes circuit_breaker FF](gitlab-org/gitlab@676754448aa8cda89a413bd599dc7a24787d2138) ([merge request](gitlab-org/gitlab!121236))
- [Add DesignManagementRegistry to registrable_type.rb](gitlab-org/gitlab@ba0d27c09490bd177a252c6fc606acbbd581fc9f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121591)) **GitLab Enterprise Edition**
- [Add dismissal_reason:smallint to vulnerability_reads](gitlab-org/gitlab@438bef2cdfcbd48c6bba85d39eec8f1ab20a2a81) ([merge request](gitlab-org/gitlab!121535))
- [Add a counter metric when job is deferred](gitlab-org/gitlab@57b6ba006d48542afb3b9dd61915bf60d8386549) ([merge request](gitlab-org/gitlab!121525))
- [Add award emoji to GraphQL note type](gitlab-org/gitlab@b5518aea8d1c576145dc2dee1a4fed4c1386d766) ([merge request](gitlab-org/gitlab!116196))
- [Add subtitles on storage usage quotas](gitlab-org/gitlab@c05a5f6d81577ff8b05c596802239616cd3c5a10) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121748)) **GitLab Enterprise Edition**
- [Ensure the backfilling of prepared_at is completed](gitlab-org/gitlab@23ba2f402c5b1b26b645403869b47216dc5572e2) ([merge request](gitlab-org/gitlab!120692))
- [Add internal note feature to work items](gitlab-org/gitlab@486140011d7abe166194fb5100d5a733f5b96ad1) ([merge request](gitlab-org/gitlab!121120))
- [Add REST endpoint to delete project from job token scope allowlist](gitlab-org/gitlab@9d752658e19a69196c8c18a20d991603da5af58e) ([merge request](gitlab-org/gitlab!119687))
- [Support Cluster Agent ID in Environment Create mutation](gitlab-org/gitlab@f9deb1098d2d2c7db1cea3590168750a38d31814) ([merge request](gitlab-org/gitlab!121356))
- [Add initial SummarizeReviewService and docs update](gitlab-org/gitlab@a1a8183b823a14bd359a86a58b09b09922b3872a) ([merge request](gitlab-org/gitlab!120542)) **GitLab Enterprise Edition**
- [Implements sort for a CI Catalog Resource](gitlab-org/gitlab@298dedaca79301910d30a8cc95e3b4918f9063b3) ([merge request](gitlab-org/gitlab!118802))
- [Logs additional data for Jira integration](gitlab-org/gitlab@fcdd0fdbab8630dc024304f0f427820c955216db) ([merge request](gitlab-org/gitlab!121411)) **GitLab Enterprise Edition**
- [Support ClickUp as an issue tracker](gitlab-org/gitlab@aec7df56ccb00164400b5eacac47f95e44c89bd1) by @daniel.vijge ([merge request](gitlab-org/gitlab!120732))
- [Add API to create JWT tokens for code suggestions](gitlab-org/gitlab@1b82707be8f8ba49f3a70ecfc7f37296b7b203c2) ([merge request](gitlab-org/gitlab!120892)) **GitLab Enterprise Edition**
- [Finalize user type migration](gitlab-org/gitlab@5889b8e79e9f53fadca9a3613e7592fe84bc4d8f) ([merge request](gitlab-org/gitlab!121516))
- [Support updating plan limit enforcement_limit](gitlab-org/gitlab@b62864c0243e21d4cb363e8c3c0743171cf2e175) ([merge request](gitlab-org/gitlab!121507)) **GitLab Enterprise Edition**
- [Add runner managers count to runner details](gitlab-org/gitlab@0b297f8121a1e54c95d524334f5d2e5d8d4e8ad7) ([merge request](gitlab-org/gitlab!121267))
- [Add API support for plan limit notification limits](gitlab-org/gitlab@24f687fc05d477b5bdc528512939f0d99dd6a874) ([merge request](gitlab-org/gitlab!121044)) **GitLab Enterprise Edition**
- [Add audit events for activities performed by a project access token](gitlab-org/gitlab@afbfe064332da8941d9a6fdefc120a2f3ac2da64) ([merge request](gitlab-org/gitlab!120927)) **GitLab Enterprise Edition**
- [Destroy mutation for google cloud logging configuration](gitlab-org/gitlab@2c7beeb8f85ee9540bc2ba46c8ae6d75f489cc60) ([merge request](gitlab-org/gitlab!121243)) **GitLab Enterprise Edition**
- [Add in-memory TimeToMerge virtual VSA stage](gitlab-org/gitlab@9ca1befffefc2847d5f993cea6cd1c587a94abba) ([merge request](gitlab-org/gitlab!117986)) **GitLab Enterprise Edition**
- [Allow expanding and collapsing references](gitlab-org/gitlab@858d286e5b9430a989ef8800660220ab0d6d88ff) ([merge request](gitlab-org/gitlab!117749))
- [Add ability to read_vulnerability to custom roles](gitlab-org/gitlab@0a40343fe96ab8510887e540fa57c44b510ca7de) ([merge request](gitlab-org/gitlab!120704)) **GitLab Enterprise Edition**
- [Persist gists import failures](gitlab-org/gitlab@2ef9cb6ed175baf3603fe1d9ef90961baa66882f) ([merge request](gitlab-org/gitlab!120346))
- [Added aggregation lease column in application settings](gitlab-org/gitlab@7ef56af2f5e1d0d6b6a853bb3270d04d073960f3) ([merge request](gitlab-org/gitlab!120988))
- [Allow 'wiki' to be set as default project view](gitlab-org/gitlab@0b4e812530796811345f07935e069c399f93ab11) by @jsbittner ([merge request](gitlab-org/gitlab!116276))
- [New REST endpoint for allowlist of CI_JOB_TOKEN access settings](gitlab-org/gitlab@c752c77409d159285ddf3197851566868988775e) by @gerardo-navarro ([merge request](gitlab-org/gitlab!118495))
- [Allow escaping code block](gitlab-org/gitlab@2358e98d40171b07d9d1c4c4658466428474bd9d) ([merge request](gitlab-org/gitlab!121314))
- [Set up no-op VSD aggregation job](gitlab-org/gitlab@a3bc10b227b8f39068a915038cc9f5a63b8e8e42) ([merge request](gitlab-org/gitlab!120748))
- [Support Cluster Agent ID in Environment Update mutation](gitlab-org/gitlab@e6a93cc6913abe3d6465fa2075475cc037c5f97e) ([merge request](gitlab-org/gitlab!121115))
- [Expose createNote permission in work items](gitlab-org/gitlab@ef02b04b08481df99fd731563701d765b96d1955) ([merge request](gitlab-org/gitlab!121329))
- [Enables "terms-as-tokens" prop on filter bar in Plan Analytics pages](gitlab-org/gitlab@7b21fd97dbdc95356b172c4a3a8aeb7de537d7a0) ([merge request](gitlab-org/gitlab!121170))
- [Asynchronously recreate Tanuki Bot records](gitlab-org/gitlab@6f70fba28ca9eb8d59b04221aad050f655facd5f) ([merge request](gitlab-org/gitlab!117800)) **GitLab Enterprise Edition**
- [Add "locked" field to create runner form](gitlab-org/gitlab@0c873c8469c6ac2688a49863733b9041612222ad) ([merge request](gitlab-org/gitlab!121250))
- [Add backend support to filter issues by label](gitlab-org/gitlab@93694fa3d8099eba7c68e6714bb8a0255a778ead) ([merge request](gitlab-org/gitlab!120597)) **GitLab Enterprise Edition**
- [Store telesign risk score in trust score table](gitlab-org/gitlab@d482735884755931f5d8eefd5dfed8ec0f3a18b8) ([merge request](gitlab-org/gitlab!119191)) **GitLab Enterprise Edition**
- [Add placeholder for issue url in service desk email](gitlab-org/gitlab@a98255052d05a4aba100924098a7fb12ef8f6f96) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121117))
- [Google cloud logging configuration create api](gitlab-org/gitlab@0ec4531742b87112a0bc4e0d0dd8889d001a5a27) ([merge request](gitlab-org/gitlab!120723)) **GitLab Enterprise Edition**
- [Expose cluster agent of the environment](gitlab-org/gitlab@834c6865f1d2fc8fc82d8400301bc4e184720bc4) ([merge request](gitlab-org/gitlab!120955))
- [Silent Mode: Block many outbound HTTP requests](gitlab-org/gitlab@48bca046866009434b6965c5a3b5a6c78ffeec54) ([merge request](gitlab-org/gitlab!120392))
- [Add snowplow configuration URL to project settings](gitlab-org/gitlab@bde85c608f685ddaae3b36c7af3292fd9d8aa8e1) ([merge request](gitlab-org/gitlab!119560))
- [Add audit events schema definitions](gitlab-org/gitlab@5588f067619f86d3ae6aa1b2f73ae77a0d1c127d) ([merge request](gitlab-org/gitlab!121093)) **GitLab Enterprise Edition**
- [Add audit events schema definitions](gitlab-org/gitlab@012150ca82a754f91bc01a198ee28cefa6bf7b5c) ([merge request](gitlab-org/gitlab!121201)) **GitLab Enterprise Edition**
- [Add audit events schema definitions](gitlab-org/gitlab@750a0c14094c1b2787ef4d01e53fb665028ec9ac) ([merge request](gitlab-org/gitlab!121202)) **GitLab Enterprise Edition**
- [Add audit events schema definitions](gitlab-org/gitlab@ad5c544d57837833c1720b70dcd2a43c0c522447) ([merge request](gitlab-org/gitlab!121194)) **GitLab Enterprise Edition**
- [Add cancel button when editing broadcast message](gitlab-org/gitlab@b5de17926ae2f84bf6edddc10bda0d1ef5cf1c38) ([merge request](gitlab-org/gitlab!121041))
- [Implement npm group level endpoints: CRUD tags and security audit](gitlab-org/gitlab@31c86fb5d5ecbd0fc6f90b5903a730ee79803bd0) ([merge request](gitlab-org/gitlab!120900))
- [Fix bug where diff note will sometimes not create for whitespace](gitlab-org/gitlab@eafe67a1d701ef67cf78a52d8d7ffa281c5b0add) ([merge request](gitlab-org/gitlab!115708))
- [Show shared agents in deployment projects](gitlab-org/gitlab@0ca0bedae4302ba73143090696c257222c4a0e64) ([merge request](gitlab-org/gitlab!120643))
- [Add personal namespace code suggestions settings](gitlab-org/gitlab@fcba3bde58c8302e97403c90d34601d16d68879a) ([merge request](gitlab-org/gitlab!121079)) **GitLab Enterprise Edition**
- [Add vertrex project id to the DB](gitlab-org/gitlab@8ad5e6f3191db3562834ad7e3b1af3d5c5db0165) ([merge request](gitlab-org/gitlab!120837))
- [Add audit events schema definitions](gitlab-org/gitlab@93a80828cdba2e13194ec0284b126974f387dd5c) ([merge request](gitlab-org/gitlab!121106)) **GitLab Enterprise Edition**
- [Introduce Delete environment mutation](gitlab-org/gitlab@68fb58fba21fd009ef5ebd296ee9e5ac504d5b76) ([merge request](gitlab-org/gitlab!120658))
- [Add user preference for Project Overview buttons](gitlab-org/gitlab@bf73301b6dbd7d6967bee6852c67b75056c35702) ([merge request](gitlab-org/gitlab!119946))
- [Add DAST audit events schema definitions](gitlab-org/gitlab@7cb7b4cadab685e943e25a64e6d7a27a5ed3d21e) ([merge request](gitlab-org/gitlab!120802)) **GitLab Enterprise Edition**
- [feat: New REST api endpoint to patch CI_JOB_TOKEN access settings](gitlab-org/gitlab@c31ebbe2a48c98fe372f428c37e3306531d4892f) by @gerardo-navarro ([merge request](gitlab-org/gitlab!118357))
- [Add finalization migration for emails_enabled](gitlab-org/gitlab@e0cce0f169b4ce9e4f1bd5f9eff0b8a5372ae6fe) by @joe-snyder ([merge request](gitlab-org/gitlab!112201))
- [Add API for deployment frequency forecasting](gitlab-org/gitlab@8297bba3c095c97cd46ba7f372b64e3c0110fa95) ([merge request](gitlab-org/gitlab!120481)) **GitLab Enterprise Edition**
- [Add `group_id` column to `dependency_list_exports` table](gitlab-org/gitlab@41f63df14179002e62c5a7398fdb93958b44dfa7) ([merge request](gitlab-org/gitlab!120729))
- [Default enable domain_verification_operation feature flag](gitlab-org/gitlab@89c82c38b4bd3ff1c149262a714556d0e63f48e8) ([merge request](gitlab-org/gitlab!120992)) **GitLab Enterprise Edition**
- [Adds CI information to candidate detail](gitlab-org/gitlab@e7730095130aeecac6f20d91cd6444e19a2b930c) ([merge request](gitlab-org/gitlab!119788))
- [Defer Sidekiq jobs from server middleware and FF](gitlab-org/gitlab@8b26ca0cf4f763dc34aec7faaf134f15d5b198de) ([merge request](gitlab-org/gitlab!120606))
- [Add Search Migrations Admin API](gitlab-org/gitlab@899a34bc47078a67f89b965f5be16f09f7195c45) ([merge request](gitlab-org/gitlab!120751)) **GitLab Enterprise Edition**
- [View description diff in system notes](gitlab-org/gitlab@1a4c6052282701d7d22803f8b601598a056961fc) ([merge request](gitlab-org/gitlab!118747))
- [Remove mock from setWorkItemMetadata for assign/unassign to user](gitlab-org/gitlab@4ff594c666a9e257292ada67c07899d329a2d8bf) ([merge request](gitlab-org/gitlab!119286))
- [Associate organization with namespaces](gitlab-org/gitlab@483c81d4e3fb455d7b0cc9f66f21d826e78c37e5) ([merge request](gitlab-org/gitlab!120822))
- [Improve accessibility of creating tables](gitlab-org/gitlab@034c266a4a49efd631b0cc8426f3c5b33200a8d6) ([merge request](gitlab-org/gitlab!120515))
- [Add new feature flag type called `worker`](gitlab-org/gitlab@875f1222a9bf6642450182c79b958f9ef749e8e7) ([merge request](gitlab-org/gitlab!120590))
- [Save filter with "show pipeline ID"](gitlab-org/gitlab@a55f22600fdcec9239e42fa8832e7a993fdd31d7) ([merge request](gitlab-org/gitlab!117841))
- [Add exclude_metrics to Value Stream Dashboard YAML config](gitlab-org/gitlab@8fa30caf74cd0dd6c3a1af673c90651e4eaf48de) ([merge request](gitlab-org/gitlab!120537)) **GitLab Enterprise Edition**
- [Calculate and store storage sizes of forks in root storage statistics](gitlab-org/gitlab@989221c0382e2b5ac23f49f5415719c370726b8f) ([merge request](gitlab-org/gitlab!120774))
- [Add support for custom mappings on prometheus integrations](gitlab-org/gitlab@e11b5ebb078a4fdd31404f703298fc8b01cfe034) ([merge request](gitlab-org/gitlab!120055))
- [Implement package metadata endpoint on the group level](gitlab-org/gitlab@17973fa73686836e3a78d0f81cee409638dc48a1) ([merge request](gitlab-org/gitlab!119073))
- [Environment Update GraphQL Mutation](gitlab-org/gitlab@a30be2ee991ee80915eac59cff28a79e5facecf2) ([merge request](gitlab-org/gitlab!120561))
- [Enable work items type quick action](gitlab-org/gitlab@9802d0da4f4eea6dbfd9fed3a6b1963d7857909b) ([merge request](gitlab-org/gitlab!120839))
- [Add audit events schema definitions](gitlab-org/gitlab@8c20ecb957509c79736e24127ad63e6ce2713c18) ([merge request](gitlab-org/gitlab!120805)) **GitLab Enterprise Edition**
- [[Audit Events] Synchronous database index addition](gitlab-org/gitlab@49cdd7e4b9584985615c08749d1306951c747b80) ([merge request](gitlab-org/gitlab!120599)) **GitLab Enterprise Edition**
- [Support password reset from any verified email](gitlab-org/gitlab@94069d38c9cd63202cc21e7febfaaad596052c0d) ([merge request](gitlab-org/gitlab!119231))
- [Add HLL counter for users that create a dashboard](gitlab-org/gitlab@ecee89037f8307c562b70f86a5667b427d951fee) ([merge request](gitlab-org/gitlab!119790)) **GitLab Enterprise Edition**
- [Add support for `/.well-known/change-password` URL](gitlab-org/gitlab@f51bcb5a895439628b8ee49cc7dc59033026cc47) ([merge request](gitlab-org/gitlab!119630))
### Fixed (205 changes)
- [Do not diff paths changed in merge commits](gitlab-org/gitlab@3b6af49e6d9f05712c3245364dde4513516843da) ([merge request](gitlab-org/gitlab!123947)) **GitLab Enterprise Edition**
- [Change work item add note permission to `createNote`](gitlab-org/gitlab@9235b1442795985e9e83293592094f2ce457521f) ([merge request](gitlab-org/gitlab!121357))
- [Prevent creating custom stage in VSA with same name as default stage](gitlab-org/gitlab@1b0fd5cd452cae89addc578adf4541366e2af80c) ([merge request](gitlab-org/gitlab!123844)) **GitLab Enterprise Edition**
- [Add repository size limit check during import](gitlab-org/gitlab@4788c56de1a32a8b249addbe4c5b63e9854fe0a2) ([merge request](gitlab-org/gitlab!122814)) **GitLab Enterprise Edition**
- [Display all VSA errors on UI upon value stream form validation](gitlab-org/gitlab@f25a1dcc6173be6c559d9aa5b5f058405b732230) ([merge request](gitlab-org/gitlab!123710)) **GitLab Enterprise Edition**
- [Include and process visibility_level](gitlab-org/gitlab@d84016acfb13fb223fdc75193de22356fb65d8f1) ([merge request](gitlab-org/gitlab!122754))
- [Fix some vulnerability report filter placeholders](gitlab-org/gitlab@e3de8f951dc2178a37199a7046a734fe3f4da207) ([merge request](gitlab-org/gitlab!123922)) **GitLab Enterprise Edition**
- [Support groups_claim for SAML with multiple providers](gitlab-org/gitlab@9139c38dc74e36e9c6f24f756ae2668ad245c306) ([merge request](gitlab-org/gitlab!122499))
- [Fix: Centered the position of the badge](gitlab-org/gitlab@59143396b65846607743b678fc3b7abfce86f7af) by @imrishabh18 ([merge request](gitlab-org/gitlab!123701))
- [Fix VSD drilldown links with a custom relative_url_root](gitlab-org/gitlab@904bab1cfeeae65f402837e80fa24cc312f23b85) ([merge request](gitlab-org/gitlab!122769)) **GitLab Enterprise Edition**
- [Fix OIDC account linking from profile](gitlab-org/gitlab@52e23d9f4e676714032c40bc8f22a2e0220c3f22) ([merge request](gitlab-org/gitlab!123055)) **GitLab Enterprise Edition**
- [Fix roadmap filtering for nested epics](gitlab-org/gitlab@5e113e577caa87ce6e02876700a7bd0a54060b89) ([merge request](gitlab-org/gitlab!123624)) **GitLab Enterprise Edition**
- [Fix scroll top position for anchor links with new navigation](gitlab-org/gitlab@da3b88eb53312427755ae048ff2d4faecd1669dc) ([merge request](gitlab-org/gitlab!123871))
- [Revert change to cache and image into default](gitlab-org/gitlab@1fc7e17f5a1ec7035bd5982c64182dca9f76e870) ([merge request](gitlab-org/gitlab!123870))
- [Use a `run_after_commit` to enqueue Geo::VerificationWorker](gitlab-org/gitlab@51a821682b8ede7c2340239780f92162d457f1c0) ([merge request](gitlab-org/gitlab!123857)) **GitLab Enterprise Edition**
- [Update checkpoint data_type](gitlab-org/gitlab@e1b6aad63dd5534081a46d1e4074053dc47a1e30) ([merge request](gitlab-org/gitlab!123196))
- [Mark bulk cron workers as idempotent](gitlab-org/gitlab@a320d41fd40baf2f9d675c3132cea95837d2330b) ([merge request](gitlab-org/gitlab!123620)) **GitLab Enterprise Edition**
- [Repair blob index for projects with mismatched index_status](gitlab-org/gitlab@bb39b3c0b17e43e9f0c9d6d0d8a1a7f13da37736) ([merge request](gitlab-org/gitlab!121579)) **GitLab Enterprise Edition**
- [Fix resize handle glitch in markdown editor](gitlab-org/gitlab@348211948b49428dc9ca890f58dbffed5cc405be) ([merge request](gitlab-org/gitlab!123819))
- [Draft note timeline border fix](gitlab-org/gitlab@0f959c2d91ce509b79283234bdc0bf99f63e488b) ([merge request](gitlab-org/gitlab!123789))
- [Fix "empty" approval rules when user_ids or group_ids provided](gitlab-org/gitlab@954485c03469c0c9c02b2094fe28e13f7770b471) ([merge request](gitlab-org/gitlab!123779)) **GitLab Enterprise Edition**
- [Exclude authors from valid metadata check when uploading symbol package](gitlab-org/gitlab@5fabce9d19621e0477985f4e7392a31af2d89f0b) ([merge request](gitlab-org/gitlab!123394))
- [Fix space is added before quick action issue](gitlab-org/gitlab@7eb128353851602c969874ebf2213eddc3c0288a) ([merge request](gitlab-org/gitlab!123754))
- [Fix bottom border radius of comment form](gitlab-org/gitlab@5874dd10be9d88af6ba89d0c2d27668dfd1a0969) ([merge request](gitlab-org/gitlab!123760))
- [Move compliance metrics to govern stage](gitlab-org/gitlab@3ae52bb770277013828aded046b007f4b9a06e6d) ([merge request](gitlab-org/gitlab!123611)) **GitLab Enterprise Edition**
- [Fix group creation validation error on trials](gitlab-org/gitlab@78d58b3853416eb38d305156f7001674f2c6bc78) ([merge request](gitlab-org/gitlab!123709)) **GitLab Enterprise Edition**
- [Do not run bulk cron indexer when cluster is unhealthy](gitlab-org/gitlab@38c2975e813f4ec26c45b4ce2ade7f8e97908aad) ([merge request](gitlab-org/gitlab!123675)) **GitLab Enterprise Edition**
- [Add SAML message if branches are unauthorized](gitlab-org/gitlab@7b993270627fa0029ba025b0d974811b26eed397) ([merge request](gitlab-org/gitlab!121879)) **GitLab Enterprise Edition**
- [Productivity Analytics: Remove extra space in search bar](gitlab-org/gitlab@7d93087fb202a43b34d36fed511a1d57f1397938) by @tejaskarelia17 ([merge request](gitlab-org/gitlab!123358))
- [Fix size of collapsible section buttons in navigation sidebar](gitlab-org/gitlab@d7551b007ff76a69691a9ea3855cccffde7d0b22) ([merge request](gitlab-org/gitlab!123540))
- [Fix autocomplete members of group via group share in projects](gitlab-org/gitlab@8f47562830023fd4e4695f106e438cd9ccc973ff) ([merge request](gitlab-org/gitlab!123438))
- [Fix flaky work item notes actions test](gitlab-org/gitlab@b121d5cc62e89f7deb0a40c6e42dce6f0d800a91) ([merge request](gitlab-org/gitlab!123643))
- [Allow user to add empty CI variable in the UI](gitlab-org/gitlab@589c16db4585286dcf549cccc82ee0598eec290b) ([merge request](gitlab-org/gitlab!123009))
- [Ensure project path is trimmed upon project creation](gitlab-org/gitlab@be63d5246b77a99c2b0391060b65831c305f7e5d) ([merge request](gitlab-org/gitlab!122512))
- [Fix validation in UI when updating notes](gitlab-org/gitlab@656bdef027059fba5ade76fe45ba253e37294c3d) ([merge request](gitlab-org/gitlab!122033))
- [Fix roadmap filters for subepics](gitlab-org/gitlab@1a41972c4c9daba489c43a7ba6fff93596b42640) ([merge request](gitlab-org/gitlab!123070)) **GitLab Enterprise Edition**
- [Remove duplicate package names before insert](gitlab-org/gitlab@c8cfde910ab0c3eef49f307efde685946338129b) ([merge request](gitlab-org/gitlab!123542))
- [Include update quick action errors in note creation](gitlab-org/gitlab@c40cfe36622a3c37a2786f5a593fe43456c1f2ec) ([merge request](gitlab-org/gitlab!122489))
- [Fix approval rules for a project with no protected branches](gitlab-org/gitlab@c1e7df596ab3f284b430e150e8588978aeddf7ac) ([merge request](gitlab-org/gitlab!123159))
- [Geo: don't create state records when not on Geo](gitlab-org/gitlab@61aaffcc3ad0ce1a24b7c0131257ff4a2947fa1d) ([merge request](gitlab-org/gitlab!123242))
- [Hide runner cost factor fields for runners](gitlab-org/gitlab@b5816d70dc06dc8098180b7377e51e1981b574e2) ([merge request](gitlab-org/gitlab!123399)) **GitLab Enterprise Edition**
- [New Sidebar: Fix early ellipsis cut-off](gitlab-org/gitlab@61a99312aaff1ba6abddce5ae1d85ce9d6b55001) ([merge request](gitlab-org/gitlab!122076))
- [Fix rendering of imported file comments](gitlab-org/gitlab@4915a55348b13a5bfaa2654aa9de5c7064e9fd0a) ([merge request](gitlab-org/gitlab!123481))
- [Upgrade prometheus-client-mmap to v0.24.4](gitlab-org/gitlab@bf0a9d2dfcb2c1cea2d3368780e8b66c55498f16) ([merge request](gitlab-org/gitlab!123461))
- [Downgrade gprc gem from v1.55.0 to v1.42.0](gitlab-org/gitlab@b899702f585290b6a64c4762bf2bf2dffbd114c5) ([merge request](gitlab-org/gitlab!123411))
- [Fix cherry picks for forks](gitlab-org/gitlab@a9287fdb40819720a80fa4d3bdfc668e38a94dc2) ([merge request](gitlab-org/gitlab!123429))
- [Fix typo in project variable](gitlab-org/gitlab@6996e431675aaf22a79ee326710dc08d4ea75dbe) ([merge request](gitlab-org/gitlab!123388)) **GitLab Enterprise Edition**
- [Handle GRPC::Core::CallError exception](gitlab-org/gitlab@26e96344fc1c955c7c18379a91c03f63c52d2abc) ([merge request](gitlab-org/gitlab!123390)) **GitLab Enterprise Edition**
- [Add custom nuget version sorter](gitlab-org/gitlab@9a1deeedb09fae3b88b76b99f1f80623f24cbda0) ([merge request](gitlab-org/gitlab!122484))
- [Updated the spec file](gitlab-org/gitlab@0215ddce3e29da690309019a737220c873f37ddd) by @imrishabh18 ([merge request](gitlab-org/gitlab!122799))
- [Fix flaky usage_data_spec.rb test failure](gitlab-org/gitlab@a68b1505eeba48408802e46927adc32af98e7d55) ([merge request](gitlab-org/gitlab!123233))
- [Make sure escaped nodes work well with HTML](gitlab-org/gitlab@203596c51933d6c06cc816ea441a5ef76ac5d70c) ([merge request](gitlab-org/gitlab!123216))
- [Ignore selection if not in a table cell](gitlab-org/gitlab@d5d80f91b72491138cc92d0bf4270bdd3d65cdff) ([merge request](gitlab-org/gitlab!123178))
- [Fix docs link](gitlab-org/gitlab@6d5df8c8c96fb0077cd00e12ba5333055657f00e) ([merge request](gitlab-org/gitlab!123197))
- [Prevent GitHub Import to progress worker when import fails](gitlab-org/gitlab@58e5f9efdc9447c7f839481eed49c718ffc4d092) ([merge request](gitlab-org/gitlab!122141))
- [Fix styling of checklists in content editor](gitlab-org/gitlab@83a089c2c312544068c3c230789569b5672036a5) ([merge request](gitlab-org/gitlab!123172))
- [Fix navigation scrolling unresolvable discussion](gitlab-org/gitlab@8e4f492086dd08dcdf4d73d2e8907eb647e52935) ([merge request](gitlab-org/gitlab!123369))
- [Refactor how HEAD ref is checked for indexing blobs](gitlab-org/gitlab@b75cf968064a64a71fe15c15132b0b12aeaee736) ([merge request](gitlab-org/gitlab!122912)) **GitLab Enterprise Edition**
- [Fix stuck VSA consistency worker](gitlab-org/gitlab@6f162cc1ed99eca90e1823b0850ad3de2d87592a) ([merge request](gitlab-org/gitlab!123158)) **GitLab Enterprise Edition**
- [Fix issues with pasting html in content editor](gitlab-org/gitlab@bf1b28aa8f7fedc2555c8beba21c807533c0e4f0) ([merge request](gitlab-org/gitlab!121600))
- [Fix scoped roadmap loading error and layout](gitlab-org/gitlab@02fd293557a9b43a4eac32fb6ca0b99d101a22cc) ([merge request](gitlab-org/gitlab!122439)) **GitLab Enterprise Edition**
- [Fix issue with pipes in tables](gitlab-org/gitlab@75cfef169be2f95222400ee4e8c2ac6605e5ef26) ([merge request](gitlab-org/gitlab!122925))
- [Trim whitespace on invite member lookups](gitlab-org/gitlab@390671951288ed7ea916a1f284442df6a6bb457d) ([merge request](gitlab-org/gitlab!123078))
- [Fix wrong argument error](gitlab-org/gitlab@105807d4fba439f6538fd9fbb8673c04d561edf4) ([merge request](gitlab-org/gitlab!123050)) **GitLab Enterprise Edition**
- [Fix broadcast messages expiring cache](gitlab-org/gitlab@8da2b3d6a8bc8cec6ab01fb63e047a72d746af1a) ([merge request](gitlab-org/gitlab!122123))
- [Fix placeholder note visibilty after note posted with quick action](gitlab-org/gitlab@836cac550c305bc4f7ddaa8dc9dc3a06935b4191) ([merge request](gitlab-org/gitlab!123003))
- [Use awardEmojiToggle mutation instead of workItemUpdate](gitlab-org/gitlab@b5e63ab90bf9623cd61a94f1adb9d28a125b55ee) ([merge request](gitlab-org/gitlab!121257)) **GitLab Enterprise Edition**
- [Fix incoming emails body encoding](gitlab-org/gitlab@007e2af811464c639620280a3b829f6ad176c787) ([merge request](gitlab-org/gitlab!123020))
- [Fix polling of notes for Epics](gitlab-org/gitlab@07a29c2ec2d23c392401472c1bf2a43c4abd8a03) ([merge request](gitlab-org/gitlab!123014)) **GitLab Enterprise Edition**
- [Fix explore topic path to render non ASCII characters](gitlab-org/gitlab@335c6b28ad6e4b917214a331a939fa49b50a26be) ([merge request](gitlab-org/gitlab!122970))
- [Fix 500 error for URI with invalid encoding](gitlab-org/gitlab@36e67f886ea86123269042864a67a75cfd32db51) ([merge request](gitlab-org/gitlab!122863))
- [Fix typo in CodeSuggestionsAlert](gitlab-org/gitlab@61d830f05bc03e48365b6d6966d64af067faa475) by @bbodenmiller ([merge request](gitlab-org/gitlab!122991)) **GitLab Enterprise Edition**
- [Fix image diff discussions in merge requests](gitlab-org/gitlab@7ec99322b1312fc3c83fd6cc085ef3a3748ef171) ([merge request](gitlab-org/gitlab!122953))
- [Fix documentation link for policy violation bot comment](gitlab-org/gitlab@9da4942297d68bed853ee9e845269fd5a97c6fdc) ([merge request](gitlab-org/gitlab!122934)) **GitLab Enterprise Edition**
- [Fixed promote label dialog title styles](gitlab-org/gitlab@ca39e3afde2c87dabe3ddf8f804ffd5bcefb325b) by @catinbag ([merge request](gitlab-org/gitlab!122568))
- [Extend internal note color behind editor on replies](gitlab-org/gitlab@4d4c5dc955ef7a349bd2153486bfd0a09acc32af) ([merge request](gitlab-org/gitlab!121814))
- [Fixed internal server error when sorting timelogs](gitlab-org/gitlab@4bd4f208de5b5856a94a3c7e71046aca3e5c20b3) by @zillemarco ([merge request](gitlab-org/gitlab!121832))
- [Fix work item note dark mode UI bugs](gitlab-org/gitlab@662e0fb0a3137cd82dde0ac3dda4c36eeead370b) ([merge request](gitlab-org/gitlab!122730))
- [Fix filtering board by Started milestone](gitlab-org/gitlab@41db3c2e09bd070f6facb72d581d1fa3447a69dd) ([merge request](gitlab-org/gitlab!122827))
- [Fix: user profile time localization issue](gitlab-org/gitlab@0a2288deb18a8d3ae02d3af0e6847d9fe966cd51) ([merge request](gitlab-org/gitlab!122296))
- [Fix LDAP tls_options not working](gitlab-org/gitlab@e6a10982d558e61ab2a39d28952e6a72824579a4) ([merge request](gitlab-org/gitlab!122789))
- [Fix Haskell syntax highlighting](gitlab-org/gitlab@fa4ab65109204d35654a981f78f00774eb125cb6) ([merge request](gitlab-org/gitlab!122291))
- [Allow customers to change payment method](gitlab-org/gitlab@437844f115beb5c8f44f900f83c3babdcfc49ae1) ([merge request](gitlab-org/gitlab!122307)) **GitLab Enterprise Edition**
- [This MR fixes deletion of severity filter](gitlab-org/gitlab@970d166d08dd08a66f5087cbb17310fa81af5ede) ([merge request](gitlab-org/gitlab!122535)) **GitLab Enterprise Edition**
- [Fix approval group lookup within user namespaces](gitlab-org/gitlab@ae571e63d2e5756f5e35e87f0bfff0e169439043) ([merge request](gitlab-org/gitlab!122478)) **GitLab Enterprise Edition**
- [Display errors in UI correctly with creating notes](gitlab-org/gitlab@5872453d5263b7d190366f4154e29f281102906d) ([merge request](gitlab-org/gitlab!121475))
- [Check partial image names when validating default branch image](gitlab-org/gitlab@2b92262425f681b598a23e3acf11bd5439dec39d) ([merge request](gitlab-org/gitlab!98131)) **GitLab Enterprise Edition**
- [Fix clusterAgentId not being passed with query](gitlab-org/gitlab@0b3aa97460ec7d9effe848015430405ee169d166) ([merge request](gitlab-org/gitlab!122246)) **GitLab Enterprise Edition**
- [Introduce sidekiq job delay for sync scan finding approval rules](gitlab-org/gitlab@4cb59b9e066126cae7b6b14b067bacf5549cbcf5) ([merge request](gitlab-org/gitlab!122471)) **GitLab Enterprise Edition**
- [Remove unnecessary unscoped style](gitlab-org/gitlab@63da20051e2fb079a3d3f4c8c2ea52fdc0a899d6) ([merge request](gitlab-org/gitlab!122720))
- [Resolve duplicate merge req iids during GitHubImport](gitlab-org/gitlab@df8f89817c1e3013f551264c055733044b5c5524) ([merge request](gitlab-org/gitlab!122027))
- [Fix SSO subsriptions from falling out of the onboarding and checkout](gitlab-org/gitlab@498285e91b907d172969fbc4567a7fc271f2043b) ([merge request](gitlab-org/gitlab!122520)) **GitLab Enterprise Edition**
- [Fix Spring not working with macOS](gitlab-org/gitlab@e0c4aca4f185f8d28029e9db01e0e80897d39f59) ([merge request](gitlab-org/gitlab!122412))
- [Fix consistency VSA check worker](gitlab-org/gitlab@eccb4657bbfe4e9add0789143f6ba52cd1e674e7) ([merge request](gitlab-org/gitlab!122624)) **GitLab Enterprise Edition**
- [Fix avatar lookups by commit email on network graph](gitlab-org/gitlab@1c607b383de8e891e5a84f96b2da1600264940c0) ([merge request](gitlab-org/gitlab!121130))
- [Fix keyboard shortcuts for OKRs](gitlab-org/gitlab@617611e85284a7cfccb9e3dfc2c05520af71481b) ([merge request](gitlab-org/gitlab!122617))
- [Prevent admins from blocking/banning/deleting themselves in abuse report](gitlab-org/gitlab@db3560d45d6f3816797d9c685b3ff34518e7db21) ([merge request](gitlab-org/gitlab!120861))
- [Fix memory leak in CI config includes entry](gitlab-org/gitlab@782064167e696837a70f09ef5ab4ca76ff956293) ([merge request](gitlab-org/gitlab!122462))
- [Align clear icon in tree list search](gitlab-org/gitlab@3207292427518e47c47bbb3138e0383cead4e8b3) ([merge request](gitlab-org/gitlab!122531))
- [Fix alignment of chevron icon](gitlab-org/gitlab@a2c521efaa33609b457d118d596914db199c8558) ([merge request](gitlab-org/gitlab!122530))
- [Fix positioning of MR sidebar at bottom of page](gitlab-org/gitlab@71fc1fd37f7eaf566bb8a610d9706ddeff7adc66) ([merge request](gitlab-org/gitlab!122509))
- [Fix LDAP custom attribute support](gitlab-org/gitlab@ce7360e859a08c7ac0041d9c0d49f91ce8077b15) ([merge request](gitlab-org/gitlab!122496))
- [Declare the markdown API endpoint a readonly operation](gitlab-org/gitlab@54260dbf47512aab6b9d655742a978bd8e3ff2b5) by @atomic-committen ([merge request](gitlab-org/gitlab!122046))
- [Remove ineffective cache call](gitlab-org/gitlab@ccb1494929dd0c216536d4574e966e1cf3ffa611) ([merge request](gitlab-org/gitlab!122350))
- [Revert ReleasesResolver and add VersionsResolver](gitlab-org/gitlab@42ad4a92d394a0604cb7aa7abc894f06c86b5016) ([merge request](gitlab-org/gitlab!122411))
- [Set KasCookie only when the environment page is loaded](gitlab-org/gitlab@6e7cfa4a06433d2bf2e40ee873502a5d79aedd14) ([merge request](gitlab-org/gitlab!122408))
- [Fix serialization of pull_requests in Bitbucket Server Import](gitlab-org/gitlab@23160ea9a09b85c5aaaad302c5a184bed5df84e9) ([merge request](gitlab-org/gitlab!122376))
- [Add worker to sync scan result policies for a given project](gitlab-org/gitlab@80d999e8cccda83450637134525b749ba8211831) ([merge request](gitlab-org/gitlab!121287)) **GitLab Enterprise Edition**
- [Fixed a small layout issue in the project settings page](gitlab-org/gitlab@876a657ae83a1fc56286fea08b8bb8980c35aeed) by @zillemarco ([merge request](gitlab-org/gitlab!122355))
- [Fix invite members trigger initialization](gitlab-org/gitlab@634c3ee582f342214f428b91cc5928c5fb31af69) ([merge request](gitlab-org/gitlab!122053)) **GitLab Enterprise Edition**
- [Fix: mr description edited tooltip locale](gitlab-org/gitlab@30361350d076b22c3e0d543790529a134607b6d0) ([merge request](gitlab-org/gitlab!121795))
- [Persist name when toggling VSA create templates](gitlab-org/gitlab@4e73bbfc9f965d722f4b4c7c0dad1ec0c41d0e2d) ([merge request](gitlab-org/gitlab!121596)) **GitLab Enterprise Edition**
- [Fix for old navigation no term issue](gitlab-org/gitlab@f4dbef43636e14b0a99de60ae906826620002eea) ([merge request](gitlab-org/gitlab!118358))
- [Cast artifact sizes to numbers before adding them](gitlab-org/gitlab@db54f1cb8f43a3af9e13d4a6d1aec8422bb98e99) ([merge request](gitlab-org/gitlab!122146))
- [Fix background migration progress report on multi-db](gitlab-org/gitlab@f00ad5e445ea22bf3b58f043086c164933d5e344) ([merge request](gitlab-org/gitlab!121251))
- [This MR fix layout shift](gitlab-org/gitlab@511503f9f86ceb2acdd186a1e6c8542450415eed) ([merge request](gitlab-org/gitlab!121739)) **GitLab Enterprise Edition**
- [Load whats new tab when no items present](gitlab-org/gitlab@b59b8bc23ef72424acac676ada8204ddb1ff1ec7) ([merge request](gitlab-org/gitlab!121390))
- [Add space between signature and tags](gitlab-org/gitlab@c75ee9d378096c98131e2ce5d38b1125bcd97ea9) ([merge request](gitlab-org/gitlab!122180))
- [Delete Project and related data in ES if use_elasticsearch? is false](gitlab-org/gitlab@edc91a94136840f9b45655a7e851c8974f1ebb0c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121839)) **GitLab Enterprise Edition**
- [GitLab Admins should bypass Group SSO enforcement](gitlab-org/gitlab@f6b354af112e5bda0f44feeb6e26c7b5351376a2) ([merge request](gitlab-org/gitlab!122169)) **GitLab Enterprise Edition**
- [Add validation for length of push rules regex fields](gitlab-org/gitlab@a8d7cbf8e0a0307285500d6af3eff0d14c04cfc2) ([merge request](gitlab-org/gitlab!122168))
- [Fixed typo on Container registry Azure Object Storage](gitlab-org/gitlab@f2e90cc3ce713b044f6ea17066d86dcb594caa2b) by @zillemarco ([merge request](gitlab-org/gitlab!122160))
- [Fix NoMethoError on importing notes from Github](gitlab-org/gitlab@bec1c843a3469ab6a75aa6c73715207fee35124a) ([merge request](gitlab-org/gitlab!121152))
- [Add pagination to protected environments](gitlab-org/gitlab@0faa43a986ee86628d7d817b741d17293f01968a) ([merge request](gitlab-org/gitlab!121934)) **GitLab Enterprise Edition**
- [Work around macOS forking issues with grpc gem update](gitlab-org/gitlab@8f2c220fda8b074d22a89eb6eb53eb2294dd28db) ([merge request](gitlab-org/gitlab!122115))
- [Show epic and issue dropdown when logged out](gitlab-org/gitlab@f4f9a712abf6198aa9cb3a143bd22c28e7591d51) ([merge request](gitlab-org/gitlab!121197))
- [Handle invalid MIME in HotlinkingDetector](gitlab-org/gitlab@4e4d0901ed2b95957cf6ecd67d327c7c74c37efa) ([merge request](gitlab-org/gitlab!122064))
- [Do not requeue the indexing worker if failures occur](gitlab-org/gitlab@3465f320592c554e3edc27647edd589db5920fec) ([merge request](gitlab-org/gitlab!122100)) **GitLab Enterprise Edition**
- [Autofocus input in gitlab chat](gitlab-org/gitlab@175678b7a9ab5294080148b9f02f53900e3e598d) ([merge request](gitlab-org/gitlab!121875))
- [Fix is_blocked_by for epic links](gitlab-org/gitlab@fa5f533dcc401897b0eab5963a11a597f043898e) ([merge request](gitlab-org/gitlab!121702)) **GitLab Enterprise Edition**
- [Add `DRAWER_Z_INDEX` to CRM editor drawer](gitlab-org/gitlab@e215064e08aa466e61636d7f6b175adfdc0cc628) ([merge request](gitlab-org/gitlab!122021))
- [Null error on VulnerabilityStateTransitionType.author](gitlab-org/gitlab@74a61b7f0ff45294248ef75900b3b0b34da166c9) ([merge request](gitlab-org/gitlab!122013)) **GitLab Enterprise Edition**
- [Fix: issuable list item time locale issue](gitlab-org/gitlab@22bde41b3200bc292490fd6c8a3f0d8c0b413f39) ([merge request](gitlab-org/gitlab!121971))
- [Show Not Found page if admin/group integration does not exist](gitlab-org/gitlab@f09c94b34930cffd67f692e90b5d35a630d5b68b) ([merge request](gitlab-org/gitlab!121927))
- [Fix alignment of issue fields on small screens](gitlab-org/gitlab@60ff709b820231bdaf2045b8c999f8bc4a506ff4) ([merge request](gitlab-org/gitlab!121569))
- [Fix 500 error for domain verification](gitlab-org/gitlab@61dd65acf335f43b859b7339e3d164ccdd42044b) ([merge request](gitlab-org/gitlab!121430)) **GitLab Enterprise Edition**
- [Fix MR approval rules sync when disabling scan result policy](gitlab-org/gitlab@a860b62fdec4aa3020f0ba6fc7a646dd259ba4cc) ([merge request](gitlab-org/gitlab!121888)) **GitLab Enterprise Edition**
- [Fix border radius in send message button](gitlab-org/gitlab@5f308e80c24e66c1c9f5ec9dd0cd62d1ec18ae82) ([merge request](gitlab-org/gitlab!121884))
- [Fix caching issue on vulnerability report](gitlab-org/gitlab@62d7edccdf5d44bd3c8d3b129bc7e3c9ac0df869) ([merge request](gitlab-org/gitlab!120626)) **GitLab Enterprise Edition**
- [Add check for project visibility](gitlab-org/gitlab@01d7ff3ab19591415e1786c12fd0914e0c241eda) ([merge request](gitlab-org/gitlab!121716))
- [GitLab Chat: fix overflow](gitlab-org/gitlab@83c2769545b41fd271c98e53a75b62b4fbd099b6) ([merge request](gitlab-org/gitlab!121850))
- [Add Metrics Dashboard menu](gitlab-org/gitlab@a0aaf219656c4dd55b357c016cba5c5086f66a2b) ([merge request](gitlab-org/gitlab!121742))
- [Fixes JiraIssueKey extractor regex format bug](gitlab-org/gitlab@79501c65965cfdfa6ad7cfc6fba02e9ba7f45be3) ([merge request](gitlab-org/gitlab!121833))
- [Add space between project runner buttons](gitlab-org/gitlab@caf89f367067fc69ddda8bc5ae12428a60362906) ([merge request](gitlab-org/gitlab!121687))
- [Fix: MR widget timeago locale issue](gitlab-org/gitlab@52f4c2c1da7cb3b43ca63e9e2d7635c9cd7b4d34) ([merge request](gitlab-org/gitlab!121625))
- [Fix GraphQL error for VulnerabilityType](gitlab-org/gitlab@7236635fcd123ec8a6a2f14cdc9044ee6dc590b5) ([merge request](gitlab-org/gitlab!121787)) **GitLab Enterprise Edition**
- [Files preview: Fix double border at the top](gitlab-org/gitlab@c6d1a2f92b2dc209e6b7899ffa44ee30573e3c55) ([merge request](gitlab-org/gitlab!121815))
- [Fix error creating import for unresolvable host](gitlab-org/gitlab@3764f8c437e72304f15c44f72e9ded5c1dfb2ea6) ([merge request](gitlab-org/gitlab!120948))
- [Fix Sidekiq crash when gitlab.yml contains UTF-8 characters](gitlab-org/gitlab@fd43fcc1cff253f58ef6489a88c9f14b659abcb8) ([merge request](gitlab-org/gitlab!121782))
- [Fix feedback link in GitLab chat](gitlab-org/gitlab@359d67b01803a8a83767b91209a49bd31a0f65d4) ([merge request](gitlab-org/gitlab!121746))
- [Cleanup packages_delete_orphaned_dependencies_worker FF](gitlab-org/gitlab@67f3bdf02962bc857c3d41b405f2062a883ab1a4) ([merge request](gitlab-org/gitlab!121726))
- [Fix FileTree component height](gitlab-org/gitlab@357bf919ba658612c1e69ca0059c008ccc6e31ec) ([merge request](gitlab-org/gitlab!118378))
- [Update Users API](gitlab-org/gitlab@3cf8758b92aacf73a6ad261522cf84278875a710) ([merge request](gitlab-org/gitlab!121700))
- [Gracefully handle TooManyIps exception](gitlab-org/gitlab@da3fb60664eaf8633c5d9bc607a8e901344898c1) ([merge request](gitlab-org/gitlab!121439))
- [Add default standard code for Jira exceptions](gitlab-org/gitlab@13b673c647035c80304c1ef487bf36a8ec79e1bb) ([merge request](gitlab-org/gitlab!121630))
- [Added state transition](gitlab-org/gitlab@93af30ee9dbc2ac67a83ac75dec0dd67c0da2206) ([merge request](gitlab-org/gitlab!119526)) **GitLab Enterprise Edition**
- [Update drawers to use .content-wrapper for height offset](gitlab-org/gitlab@edc19b2a6f95abd8b2f313619de4fb352ba395d0) ([merge request](gitlab-org/gitlab!121618))
- [Fix URL anchor](gitlab-org/gitlab@2ef5fa76fe6c77022cc13950c8a9c0832485b26f) ([merge request](gitlab-org/gitlab!121310))
- [Disable browse button when job has no metadata.gz](gitlab-org/gitlab@21f9a54c73a435d7d2fee1985aea340b7b3b739c) ([merge request](gitlab-org/gitlab!119409))
- [Proper handle null values returned from BitBucket Cloud API](gitlab-org/gitlab@5056b850eec4a8ba1267c265925ca94c4c90893a) ([merge request](gitlab-org/gitlab!120501))
- [Handle exception for binary files blame](gitlab-org/gitlab@f49df49031f59c083797900f5e93b13d760555d2) ([merge request](gitlab-org/gitlab!121530))
- [Add a validation for branch name on push](gitlab-org/gitlab@d5496d1cbf591d6c962a62c76661341aacadaf51) ([merge request](gitlab-org/gitlab!121541))
- [Add a migration to reindex all project wikis to fix wrong values](gitlab-org/gitlab@42f50c6a999effb0648b8bfefd4427d6312b8606) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120972)) **GitLab Enterprise Edition**
- [Fix keyboard accessibility in content editor](gitlab-org/gitlab@26ec4775397cee59292cc0d6b49e1d8277dd1d79) ([merge request](gitlab-org/gitlab!121038))
- [Fixes the regex issue](gitlab-org/gitlab@c51f26b4c6e0d94aea1294f898a14cdc93d1aac4) ([merge request](gitlab-org/gitlab!121523))
- [Fix commits list date format](gitlab-org/gitlab@37e9d96c42d66a93b112ef33668c335fa9d9c2e0) ([merge request](gitlab-org/gitlab!121510))
- [Enable task list in milestone description](gitlab-org/gitlab@3a06fe0cf7628db495009442f1e1b83802ce3ed5) by @gerardo-navarro ([merge request](gitlab-org/gitlab!118927))
- [Include members shared into project ancestors in MR assignee dropdown](gitlab-org/gitlab@5722555c7d7501e60bf00ac2ea3a2568b0455902) ([merge request](gitlab-org/gitlab!121234))
- [Fix participants detection for system notes](gitlab-org/gitlab@30e9861338ad4add897e9b93d9c1ffba00fd63f8) ([merge request](gitlab-org/gitlab!120883))
- [Removes additional details from audit event message](gitlab-org/gitlab@e5ced2cec8abc132c29301bc6ee71a81459d32b9) ([merge request](gitlab-org/gitlab!121398)) **GitLab Enterprise Edition**
- [Fix the greedy regex](gitlab-org/gitlab@f3f7b4d4599461ebf597ded9d9ff43bc68e535b6) ([merge request](gitlab-org/gitlab!120995))
- [Fix Value steam analytics label search for large groups](gitlab-org/gitlab@e0f145d70997b8dc6151456342eb6cedac385642) ([merge request](gitlab-org/gitlab!121289))
- [Removing release link from error tracking details info](gitlab-org/gitlab@fc4cf9819de5f98e81702ebc06564c5743a0bd85) ([merge request](gitlab-org/gitlab!120786))
- [Fix OKR progress tooltip typo](gitlab-org/gitlab@7d623f1c17e21fec9e60a7bf99bbcf7da6cd5fca) ([merge request](gitlab-org/gitlab!121110))
- [Fixed project label in leave modal](gitlab-org/gitlab@14bee37d02cbc156fe2cd9e40dcea006716c492e) ([merge request](gitlab-org/gitlab!121264))
- [Fix domain edit page when auto_ssl failed](gitlab-org/gitlab@b95f4e5e8c8389ea0bf8dc9e9907fd77a9ae4230) ([merge request](gitlab-org/gitlab!121246)) **GitLab Enterprise Edition**
- [Include members shared into project ancestors in issue assignee dropdown](gitlab-org/gitlab@ecbecff2075fbbacacbb5780e66367fadb8e1bdd) ([merge request](gitlab-org/gitlab!121239))
- [Update top spacing for layout page and content wrapper](gitlab-org/gitlab@6b9d8446c02af6ebe526b9e0affab4e679ade81f) ([merge request](gitlab-org/gitlab!120553))
- [Handle relative timestamps on blame streaming](gitlab-org/gitlab@624fbe1e6be22c4fd366f930efe433d091deff3c) ([merge request](gitlab-org/gitlab!120460))
- [Load merge request via merge request links](gitlab-org/gitlab@d3bb974e0a0a0418952bc9213cee9c825b259b17) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117321)) **GitLab Enterprise Edition**
- [Queue projects for indexing when missing from the index](gitlab-org/gitlab@f478928b70344f3a537e2af0b95acb6c701fe221) ([merge request](gitlab-org/gitlab!121096)) **GitLab Enterprise Edition**
- [Support adding emoji for multiple users](gitlab-org/gitlab@5707675186c997ccefd46060ee036600591df323) ([merge request](gitlab-org/gitlab!121109)) **GitLab Enterprise Edition**
- [Fix SSO onboarding completion failure](gitlab-org/gitlab@14f0203a39fb9c3a683d77dfe426ecbdb3fecfe8) ([merge request](gitlab-org/gitlab!118831)) **GitLab Enterprise Edition**
- [Fix the wi description alignment when the FF is off](gitlab-org/gitlab@278c9a713bb6a37b3ea1382e14d5e98cdee0e123) ([merge request](gitlab-org/gitlab!121116))
- [Sync Elastic documents if repo/wiki permission gets changed in Project](gitlab-org/gitlab@a84bd8099afec77a56ee4230b851ec07c68a2709) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120687)) **GitLab Enterprise Edition**
- [Use fixed custom hook fallback error message](gitlab-org/gitlab@57e217163c31f56ea26a067c63b5fa58f56b062e) ([merge request](gitlab-org/gitlab!120959))
- [Fix GroupActivityCard relative metric links](gitlab-org/gitlab@69836246c92a6e655b54dbb95a31f87522bd90d8) ([merge request](gitlab-org/gitlab!120789)) **GitLab Enterprise Edition**
- [Updated line color for linear regression forecast](gitlab-org/gitlab@cb8948bde952c0b92660fcb4776fd3b5dd869b03) ([merge request](gitlab-org/gitlab!121089)) **GitLab Enterprise Edition**
- [Add missing encoding for tag related fields](gitlab-org/gitlab@4ad982a95d658ec01e1cda519c739d8f3113e5cb) ([merge request](gitlab-org/gitlab!120627))
- [Update approvals_service to filter dismissed vulnerabilities](gitlab-org/gitlab@39faaf4560581913374447d583458f3f27c02ce1) ([merge request](gitlab-org/gitlab!120747)) **GitLab Enterprise Edition**
- [Makes roadmap current day indicator & timeline locale aware](gitlab-org/gitlab@abfe81843c669fe8f511eec834c76448d83d2de0) ([merge request](gitlab-org/gitlab!121032)) **GitLab Enterprise Edition**
- [List projects pending delete from subgroups](gitlab-org/gitlab@ece7891d0da6d33ae3b780ec22369e0cd6868df6) ([merge request](gitlab-org/gitlab!120981))
- [Delete issue email participant entry when someone unsubs](gitlab-org/gitlab@b21392b0a69835415ad2179cce5ae43117e091ab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120724))
- [Fix issue link in work item breadcrumb](gitlab-org/gitlab@24120308246093978c634a4f11d078a5f172ba48) ([merge request](gitlab-org/gitlab!120961))
- [Fix the work item focus description border](gitlab-org/gitlab@68ece4127d813699c82a69910abd3b3e88cb33df) ([merge request](gitlab-org/gitlab!120960))
- [Show policy edit button only when access is available](gitlab-org/gitlab@017c0ad9c9fa0b044c3fb42a37b473ef2587947b) ([merge request](gitlab-org/gitlab!120621)) **GitLab Enterprise Edition**
- [Fix permission for security policies target development projects](gitlab-org/gitlab@20870d55440e5ec9f2f3bc35975a7088d51e9e8b) ([merge request](gitlab-org/gitlab!118511)) **GitLab Enterprise Edition**
- [Update TeleSignClient services to handle timeout errors](gitlab-org/gitlab@ffe3c7f847553af5e2845a364b4ff7ae5c9f445d) ([merge request](gitlab-org/gitlab!120236)) **GitLab Enterprise Edition**
- [Use the hidden field to hide the merge_requests created by banned users](gitlab-org/gitlab@63f065c45d2510a4deb613913db1709f1e80f438) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120706)) **GitLab Enterprise Edition**
- [Fix snippets_access_level usage in Project Create Service](gitlab-org/gitlab@de07658ef68b18bf06be4247601ffa24c163ebd6) by @Taucher2003 ([merge request](gitlab-org/gitlab!120673))
- [Fix alignment of user profile info in Safari](gitlab-org/gitlab@ae89f642245ae90a769907a37e656b55053f07e0) ([merge request](gitlab-org/gitlab!120902))
- [New MR widget: Fix border-top](gitlab-org/gitlab@c23d375d8de0308c7a50014cf75c8b45e1647035) ([merge request](gitlab-org/gitlab!120874))
- [Fix width checkbox column in vulnerability report](gitlab-org/gitlab@ea67d91bc60c4a29e82ed814d3f4153b34ef49a4) ([merge request](gitlab-org/gitlab!120728)) **GitLab Enterprise Edition**
- [Adding JobKind: BUILD to failed jobs query](gitlab-org/gitlab@032938b4eb0de2ef2c9174d16bc63a79584b60fb) ([merge request](gitlab-org/gitlab!120652))
- [Enable members_with_shared_group_access feature flag by default](gitlab-org/gitlab@181b00d2a3f75cc4e494ba1a6d25e1462d9d11cc) ([merge request](gitlab-org/gitlab!119627))
### Changed (307 changes)
- [Migrate GlDropdown to GlCollapsibleListbox](gitlab-org/gitlab@41b9a5cc1fd7e74459de0eada0e4638e21aee8df) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!123238))
- [Improve stacked achievements](gitlab-org/gitlab@f9a69fd6665d9ddd29086c83c78e9d31a131a635) ([merge request](gitlab-org/gitlab!123362))
- [Support variables expansion in `id_tokens:aud`](gitlab-org/gitlab@8b0840c718ae55ac4d3427f3e3612c251f46eb7a) by @thomasgl-orange ([merge request](gitlab-org/gitlab!122668))
- [Swap primary key with bigint column for ci_pipeline_variables](gitlab-org/gitlab@8a4e3044b14ed2e6e25f4738939465cae23b1be9) ([merge request](gitlab-org/gitlab!120823))
- [Add streaming content type header info to docs](gitlab-org/gitlab@fc820edcc251ca94f3ffd03bb39b7a713a32abcb) ([merge request](gitlab-org/gitlab!124008)) **GitLab Enterprise Edition**
- [Add disabled text to multi file snippet add button](gitlab-org/gitlab@c8ca90f440c347f80f5a45914193ba1a8ff3722b) by @catinbag ([merge request](gitlab-org/gitlab!123211))
- [Add prefix to feed and incoming mail tokens](gitlab-org/gitlab@00e2c990f86716d9c10974c997b4091491df0f33) ([merge request](gitlab-org/gitlab!123424))
- [Updates BBM docs](gitlab-org/gitlab@c1b034d544e7235f0782271af6887f3986a82ef8) ([merge request](gitlab-org/gitlab!123201))
- [Add feature flag for global snippet search](gitlab-org/gitlab@628b004517627f8552a972bd066d5db10e2b098d) ([merge request](gitlab-org/gitlab!123668))
- [Update delete confirmation modal for runner groups](gitlab-org/gitlab@3553a218b616451c9b708cb4071721321a73a9c1) ([merge request](gitlab-org/gitlab!123662))
- [Add highlight color to reply form if comment is highlighted](gitlab-org/gitlab@81f61e711399b5fb5951749078472e492f84f298) ([merge request](gitlab-org/gitlab!123626))
- [Update Redis documentation to include Sentinel auth](gitlab-org/gitlab@87a3ec60b97080bf10aac1a9aee26d49fbf8732a) ([merge request](gitlab-org/gitlab!123867))
- [Add `branch_type` support to scan result policies](gitlab-org/gitlab@e47d8e51ffaab5e369541de1a335e9f9f7a64545) ([merge request](gitlab-org/gitlab!122762)) **GitLab Enterprise Edition**
- [Fix VSD failure on first day of month](gitlab-org/gitlab@8e48a8e8f997761eb747fdd97cacf13d51780116) ([merge request](gitlab-org/gitlab!123734)) **GitLab Enterprise Edition**
- [This MR adds timezone dropdown for sep](gitlab-org/gitlab@3d59c3ed543e9a998109f7eb98ad444c536350f6) ([merge request](gitlab-org/gitlab!122646)) **GitLab Enterprise Edition**
- [Add Uknown license to Scan Result Policies](gitlab-org/gitlab@7078a13854d3570a8ab3960bdda13cf3512cf6b9) ([merge request](gitlab-org/gitlab!123565)) **GitLab Enterprise Edition**
- [Hide tooltip on view summary button on mouseout](gitlab-org/gitlab@4ef1af3ec2707e5e68eeb17ada15ad68ae9a8cd4) ([merge request](gitlab-org/gitlab!122671))
- [Updated status icons for project runners](gitlab-org/gitlab@9cc7eb639ed399b0a79611750e7f4226b150feb6) by @catinbag ([merge request](gitlab-org/gitlab!123235))
- [Migrate GlDropdown to GlCollapsibleListbox](gitlab-org/gitlab@5e9b3402c82c2f025734eae6bb3311c8fd5bc914) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!123240))
- [Update status for when there](gitlab-org/gitlab@aa2c20844b7b9fbdfc74d1fe3a15f62d22fdb382) ([merge request](gitlab-org/gitlab!123820)) **GitLab Enterprise Edition**
- [Hide toggle comments button on MR creation view](gitlab-org/gitlab@f284a220e8292eb9cadcb8ce8098211287397a61) ([merge request](gitlab-org/gitlab!123689))
- [Correct background in input fields in login pages](gitlab-org/gitlab@1edd1c3ba42c57f3720a142f78f8089e1a2abcfe) ([merge request](gitlab-org/gitlab!123670))
- [Release Security Reports V2](gitlab-org/gitlab@070e030ff396271445ec7e41f8d62f86fb67e617) ([merge request](gitlab-org/gitlab!122433))
- [Show writable forks in WebIDE modal](gitlab-org/gitlab@37e4fa2f02762a6f35ab14adc101b37473ea40a1) ([merge request](gitlab-org/gitlab!122452))
- [Add tanuki-ai icon to dropdown items and buttons](gitlab-org/gitlab@86597afbce102f72bde325ae831b89db56044e80) ([merge request](gitlab-org/gitlab!123547))
- [Design comments visual update](gitlab-org/gitlab@f8f12a9f44b7367132536d87f9eaa1a6de40ee2e) ([merge request](gitlab-org/gitlab!123771))
- [Check for root namespace before creating add-on purchase](gitlab-org/gitlab@1bd3217961b898c02d0e0b8cb77384981008ae44) ([merge request](gitlab-org/gitlab!123778)) **GitLab Enterprise Edition**
- [Used namespaced tranlsations in shared/access_tokens](gitlab-org/gitlab@1b9a896389c64c980fd90d0b10398dd5087ed5d7) by @catinbag ([merge request](gitlab-org/gitlab!123361))
- [Add a feature flag to disable at all mention](gitlab-org/gitlab@80f0131078f42b267e97eea6753dace46fb961e8) ([merge request](gitlab-org/gitlab!110586))
- [Check spam only for merge requests from public projects](gitlab-org/gitlab@ba35f08f41c8327430cc1112eaff39d9a8b9487d) ([merge request](gitlab-org/gitlab!123695))
- [Add timezone support for scan execution policies](gitlab-org/gitlab@72355d66df3fb43b9bb1c897df75b282ab2f0b94) ([merge request](gitlab-org/gitlab!122658)) **GitLab Enterprise Edition**
- [Add snowplow tracking to SSO registration](gitlab-org/gitlab@ca53148715d7a6feb58404327f5acf45c2ccaa1d) ([merge request](gitlab-org/gitlab!122893))
- [Replaced hardcoded sizes on the Blame page](gitlab-org/gitlab@3b9afdd960cc46a09f831c9c450ba8c7325d39c3) by @catinbag ([merge request](gitlab-org/gitlab!123236))
- [Add a preparing state before any other MR states](gitlab-org/gitlab@97aece047cedf28eea86db86869fecd5a6b624d6) ([merge request](gitlab-org/gitlab!120770))
- [Update the issue identifier logic](gitlab-org/gitlab@f64d3caca36da964bcf7288121b2c6da09b8fcac) ([merge request](gitlab-org/gitlab!123645))
- [Add 24h timeline graph to error tracking UI](gitlab-org/gitlab@dfa13683203bab794f92cc4062fa55c811a1ae30) ([merge request](gitlab-org/gitlab!123058))
- [Remove aggregation from HLL counter](gitlab-org/gitlab@53b8627e7aaf92aba3b6113eb8fa51a009547149) ([merge request](gitlab-org/gitlab!121499))
- [Migrate merge request actions to Vue](gitlab-org/gitlab@15d9d85d943236c6b7038894cd844b43803635f6) ([merge request](gitlab-org/gitlab!117298))
- [Make migrations skipped in production a no-op](gitlab-org/gitlab@d34c4a7bb827911787cde8c59df211ba8df4114b) ([merge request](gitlab-org/gitlab!123212))
- [Remove rejecting additional attributes in security policies YAML](gitlab-org/gitlab@f66c0ca5b2b58abb3428bff619bbdef886f66e45) ([merge request](gitlab-org/gitlab!123567)) **GitLab Enterprise Edition**
- [Replace keep artifacts checkbox with toggle](gitlab-org/gitlab@4153ca775ae67be0040f291f513e17d36b7311e7) ([merge request](gitlab-org/gitlab!123562))
- [Move default into framework name](gitlab-org/gitlab@3c446777e9489aa6f8c9409bcfb63ce5f3014d98) ([merge request](gitlab-org/gitlab!123440)) **GitLab Enterprise Edition**
- [Create the `down` method](gitlab-org/gitlab@e762bf895854bfd543b755cb96eecfd369db8a05) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114518)) **GitLab Enterprise Edition**
- [Update prometheus-client-mmap to v0.24.5](gitlab-org/gitlab@f259b0c7d0dc444c8b96749527a05a412459db0a) ([merge request](gitlab-org/gitlab!123549))
- [Remove combined namespace read only git message](gitlab-org/gitlab@b25ff1d18069fb9d043fed131d6522e3ae2e37c0) ([merge request](gitlab-org/gitlab!123545)) **GitLab Enterprise Edition**
- [Update dependency auto-build-image to v1.34.0](gitlab-org/gitlab@a066fee9db8571335f0cd0314235f5f5b9aa71b9) ([merge request](gitlab-org/gitlab!123543))
- [Enable new navigation per default for logged-in users](gitlab-org/gitlab@907f649dc75e2351ac11dea13fdca81678e9dad7) ([merge request](gitlab-org/gitlab!123541))
- [LFS: Make batch requests to return presigned URLs by default](gitlab-org/gitlab@d8aafde1b8cecd45e4e48ede96a0b69fe74c696d) ([merge request](gitlab-org/gitlab!123537))
- [Use GitLab Mono over JetBrains Mono](gitlab-org/gitlab@405ed1a757f54fa2de2e8acff15d660a2fd38e06) ([merge request](gitlab-org/gitlab!123056))
- [Update Purchased Storage Card on Usage Quotas page](gitlab-org/gitlab@a1428b08dc9997d52f27d315c2ab1f388e18e175) ([merge request](gitlab-org/gitlab!122505))
- [Migrate WebIDELink to GlDisclosureDropdown](gitlab-org/gitlab@d69e858ddcb24d63123343a327e252f01ec1b275) ([merge request](gitlab-org/gitlab!122772))
- [Reduce height of images in design management section](gitlab-org/gitlab@85e22fce781e751610565f73fe56123adfdc6d1a) ([merge request](gitlab-org/gitlab!123436))
- [Add dependency list into security and compliance](gitlab-org/gitlab@76f507c28225eec9752a1bf087b468a55386886d) ([merge request](gitlab-org/gitlab!120896)) **GitLab Enterprise Edition**
- [Clicking on the label focus on password field](gitlab-org/gitlab@4938ad9ced031e2b48780841eba1a30400543c79) ([merge request](gitlab-org/gitlab!122763))
- [Migrate dropdown to new dropdown component](gitlab-org/gitlab@b4dd12ab223e4cc8bb2a3cc260966d31b23238b8) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!122218))
- [Switch to GraphQL in Environment setting page](gitlab-org/gitlab@9f2b97b51df2719c893bff35d6ab72d9ba66826a) ([merge request](gitlab-org/gitlab!123482))
- [Delete index_unique_project_authorizations_on_project_id_user_id index](gitlab-org/gitlab@5e6a56d3da93b64e514abdd0e3cbfd0afc90d099) ([merge request](gitlab-org/gitlab!119642))
- [Delete index_members_on_source_id_and_source_type index](gitlab-org/gitlab@97b7616b221427b6b8acd7effc741d3d65b0056c) ([merge request](gitlab-org/gitlab!119433))
- [Migrate issues dropdowns to gl-disclosure-dropdown](gitlab-org/gitlab@2120abf92c0d8d9f22518a4fb23eadd0427e9f37) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!122558))
- [Migrate dropdown to new dropdown component](gitlab-org/gitlab@8183e94a948cc4977071437db8758b06f44547ee) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121951))
- [Update typo in markdown doc link parser](gitlab-org/gitlab@76788e04e9c2fe184d0d7d97e7f759806768d02d) ([merge request](gitlab-org/gitlab!123453))
- [Use reply icon for comments](gitlab-org/gitlab@fdbcf95133c3bc9d37aaf98d9656183124c12fe2) ([merge request](gitlab-org/gitlab!122255))
- [This MR updates select all button](gitlab-org/gitlab@8a5d5c3d310377d03fb7ef9c8d94773553d70070) ([merge request](gitlab-org/gitlab!121870)) **GitLab Enterprise Edition**
- [Add SCIM identities to User API response](gitlab-org/gitlab@6422d576e0fd3d6b078d84ac627adf6df4578d42) ([merge request](gitlab-org/gitlab!120203)) **GitLab Enterprise Edition**
- [Remove feature flag search_rate_limited_scopes](gitlab-org/gitlab@89f00a79777f7c0408cb12d762ee4597b09f66cb) ([merge request](gitlab-org/gitlab!123448))
- [Update Search/NamespacedClass cop](gitlab-org/gitlab@d9b21d247bbe4d4cdf44311c38f31ef78a2979b1) ([merge request](gitlab-org/gitlab!123446)) **GitLab Enterprise Edition**
- [Downgrade ffi-yajl gem from v2.5.0 to v2.3.4](gitlab-org/gitlab@6af437afc42f1558955ea790e3304d9ee5647d16) ([merge request](gitlab-org/gitlab!123425))
- [style: Adjust the width of status column in admin jobs table](gitlab-org/gitlab@7534852fcf034d6a17969cf8dcad1264d3c35a42) by @gerardo-navarro ([merge request](gitlab-org/gitlab!123415))
- [Add UI control to switch between Zoekt and Elasticsearch](gitlab-org/gitlab@27718666eadbb0ba0f07d0da8dd213d21df16156) ([merge request](gitlab-org/gitlab!121728))
- [Remove `realtime_approvals` feature flag](gitlab-org/gitlab@572f0c8e5d1990ca043b69594894929e8e908923) ([merge request](gitlab-org/gitlab!121460))
- [Updates storage enforcement banners to use MiB labels](gitlab-org/gitlab@47ab78cd5161a29af9a9ece58328db5fbd56b9a2) ([merge request](gitlab-org/gitlab!120287))
- [Used gitlab-ui classes in Feature flag form](gitlab-org/gitlab@74f8cd633fc289310e7d8c8f03fcc19119c3fed2) by @catinbag ([merge request](gitlab-org/gitlab!123373))
- [Apply `without_count: true` to the `group/{id}/audit_events` API](gitlab-org/gitlab@961b1d2af7487c7400fc460c4e220dc1081a16ae) ([merge request](gitlab-org/gitlab!122851)) **GitLab Enterprise Edition**
- [Add custom language highlighting](gitlab-org/gitlab@825fd1e97df582b9f2654fc248c15e073d78d82b) ([merge request](gitlab-org/gitlab!122661))
- [Migrate GlDropdown to GlCollapsibleListbox](gitlab-org/gitlab@341b0109fb2dbf8766d8a6833b21c9d5e7052ed4) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!123234))
- [Disable Prometheus metrics in GraphQL generic tracer](gitlab-org/gitlab@53671d4993cbf27a246fcb73c5274aa886ae1c6c) ([merge request](gitlab-org/gitlab!123228))
- [Migrate user_action_dropdown.vue to GlDisclosureDropdown](gitlab-org/gitlab@1ef094b09df3ae7cb5c40ebef869378fbbd15afd) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!123220)) **GitLab Enterprise Edition**
- [Update "New Group Name" to "New group name" on trial form](gitlab-org/gitlab@0854fd325ff5b7c460d430da1b9ca7399e1ba4f6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123074)) **GitLab Enterprise Edition**
- [Allow writing text in angle brackets](gitlab-org/gitlab@79a32c7592119ea03847b036494fd87abcb38c4f) ([merge request](gitlab-org/gitlab!123215))
- [Migrate generic checkbox to Pajamas component](gitlab-org/gitlab@19c07c03335a3c7cb0c8f8a38f9b22a5e053457b) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!123213)) **GitLab Enterprise Edition**
- [Used gitlab-ui classes for time-ago in pipelines list](gitlab-org/gitlab@bff61a873015455d32f8871f5ffb7714bb449b1b) by @catinbag ([merge request](gitlab-org/gitlab!122551))
- [Enable invalid_scan_result_policy_prevents_merge by default](gitlab-org/gitlab@7dd40d5e0da095f47ff52df359313425b2247530) ([merge request](gitlab-org/gitlab!123127)) **GitLab Enterprise Edition**
- [Update copy around linking of groups](gitlab-org/gitlab@4275ab2f35846ab46c4434367327925656229b26) ([merge request](gitlab-org/gitlab!123000))
- [Add fk to schema validations](gitlab-org/gitlab@29c2f12a2612df5c78be4bb2a81299bcf5ebd152) ([merge request](gitlab-org/gitlab!122079))
- [Add VulnerabilityDetails::NamedListType to GraphQL](gitlab-org/gitlab@e827785cf839db36d679bba0615a84af9b70cb95) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121587)) **GitLab Enterprise Edition**
- [Update language from MWPS to auto-merge](gitlab-org/gitlab@5ca7aef65a521c446cb02a7e8810e13ae11c0d48) ([merge request](gitlab-org/gitlab!123092))
- [Normalization of vertical and horizontal space](gitlab-org/gitlab@ff645e2b064ea583d1e2d21dad6a8d4152357593) ([merge request](gitlab-org/gitlab!122913))
- [Update variables table layout](gitlab-org/gitlab@014bd0acf72b7c9dcb123de19b0e62ccabb72456) ([merge request](gitlab-org/gitlab!120974))
- [Remove adding compliance frameworks for personal](gitlab-org/gitlab@e704ce834999b06f7959021213bf562fb00d0573) ([merge request](gitlab-org/gitlab!122969)) **GitLab Enterprise Edition**
- [Set default project scope based on user permissions](gitlab-org/gitlab@6e80f8eacffc7a080ad00f30449b4cced16b4211) ([merge request](gitlab-org/gitlab!122234))
- [Update streaming audit event page styles](gitlab-org/gitlab@e1bc625e30b8d10a08528125668cca730c78cdf1) ([merge request](gitlab-org/gitlab!122387)) **GitLab Enterprise Edition**
- [Remove Feature Flag for Deployments API breaking change](gitlab-org/gitlab@91e56c13e0269d693330ed2eaf4a826f4d2438a3) ([merge request](gitlab-org/gitlab!122734))
- [Add PAT Prefix Pattern](gitlab-org/gitlab@5da5d3d77701159e623532f0b8bb759db2bae0ca) ([merge request](gitlab-org/gitlab!120693))
- [Allow the MR Widget to redeploy](gitlab-org/gitlab@1174551c26b135f8df7de9fc1dcb2fa35234ec94) ([merge request](gitlab-org/gitlab!123077))
- [Re-organize BBM docs](gitlab-org/gitlab@ba3d8fe1a9ec894f9e36b7bc19001cfa31792bf5) ([merge request](gitlab-org/gitlab!122513))
- [Refactored paginated_table_with_search_and_tabs_spec.js](gitlab-org/gitlab@9871848dc02fd71ae40b3de8ae538eee3b306239) by @catinbag ([merge request](gitlab-org/gitlab!123065))
- [Geo Replicables - SSF Resync Action](gitlab-org/gitlab@380e33ca540a7ac1fdf20498b85e950e7f05201a) ([merge request](gitlab-org/gitlab!122251)) **GitLab Enterprise Edition**
- [Update parser gem to 3.2.2.1](gitlab-org/gitlab@9bad3e799750636d62418e4704e7db277f0f434b) ([merge request](gitlab-org/gitlab!123049))
- [This MR adds select all option](gitlab-org/gitlab@788880481ef4d68fc72fb015fc7c2105bc402074) ([merge request](gitlab-org/gitlab!122007)) **GitLab Enterprise Edition**
- [Add `branch_type` support to scan execution policies](gitlab-org/gitlab@95753095d925a46d9f25b884e6a412918a4bfc34) ([merge request](gitlab-org/gitlab!121679)) **GitLab Enterprise Edition**
- [Add tooltip to lock icon in issues and merge requests](gitlab-org/gitlab@bdfb334ee330a880376e56246fb38b8145bc5043) ([merge request](gitlab-org/gitlab!122779))
- [Add concurrent index for ci_pipeline_variables](gitlab-org/gitlab@efbd5e105ca961bf4d0319e592643c9dc545386a) ([merge request](gitlab-org/gitlab!120950))
- [Enable scan_result_policy_latest_completed_pipeline by default](gitlab-org/gitlab@a716b8e645e5cb129cff7aa9e7cb5e7227183395) ([merge request](gitlab-org/gitlab!123015)) **GitLab Enterprise Edition**
- [Use Content Editor in Epic descriptions](gitlab-org/gitlab@b7e70978a23f1494bd7f74218d83b813093dbd81) ([merge request](gitlab-org/gitlab!121686)) **GitLab Enterprise Edition**
- [Improve merge requests dashboard titles](gitlab-org/gitlab@da9b167c1f646d0efe1f868377634a86ba737472) ([merge request](gitlab-org/gitlab!121919))
- [Hide new nav callout for new users](gitlab-org/gitlab@b10debf86e208285c5c5749c237af05e1418dbae) ([merge request](gitlab-org/gitlab!122695))
- [Add text generated by AI warning to test suggestion](gitlab-org/gitlab@ec420a3bc34a930463ac11a7f1fd71c2ceabf394) ([merge request](gitlab-org/gitlab!122822))
- [Update compliance violation report ui styling](gitlab-org/gitlab@04e3312d0631a9324b33da3c7884969a1658fe6d) ([merge request](gitlab-org/gitlab!122965)) **GitLab Enterprise Edition**
- [Set PG13 for check-migrations job](gitlab-org/gitlab@c0358c8078250a45fd55e1839655ce7183decaa4) ([merge request](gitlab-org/gitlab!122949))
- [Adding Secure Files integrity check](gitlab-org/gitlab@27cfefdb8e398a8b8425cd3f51232c2a271a4bac) ([merge request](gitlab-org/gitlab!122504))
- [Add version format 2 to package metadata sync](gitlab-org/gitlab@585c9a7e8df937683330b7ec3cd01df9818b7752) ([merge request](gitlab-org/gitlab!120027)) **GitLab Enterprise Edition**
- [Allow Secure Files to be disabled at instance-level](gitlab-org/gitlab@3fb25da2d480f977f0636b50e7c619ec3544aee1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122691))
- [Remove link icon from file gutter](gitlab-org/gitlab@607dcc72a3f218a88fdae1c0a43258dd6c5cb0e7) ([merge request](gitlab-org/gitlab!122946))
- [Use tanuki-ai icon for AI features](gitlab-org/gitlab@e17b5a50ffa7604d28032d98a94386275bc03362) ([merge request](gitlab-org/gitlab!122895))
- [Changes bytes notation](gitlab-org/gitlab@76631882c76006d0a8c7f52b251a37fabff5f7d7) ([merge request](gitlab-org/gitlab!121752))
- [Added triggers for RootNameStatistics Update](gitlab-org/gitlab@de4c5355dd5c91ed5d4b0f607ed5bf4630ffee69) ([merge request](gitlab-org/gitlab!122844)) **GitLab Enterprise Edition**
- [Revert adding ci_secure_files to consolidated object storage](gitlab-org/gitlab@7bb4923edae9a1117c8e05d4a9a6e02dca02adf6) ([merge request](gitlab-org/gitlab!122905))
- [Updated value stream dashboard vulnerability links](gitlab-org/gitlab@cebc9ac521c5e252dd47d60092b78d343edeeb99) ([merge request](gitlab-org/gitlab!122904)) **GitLab Enterprise Edition**
- [Migrate bulk issues edit dropdowns to GlCollapsibleListbox](gitlab-org/gitlab@87a2074c954b3d7b6f42e012765ef2fce80e6483) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!122567))
- [This MR adds new protected branches dropdown](gitlab-org/gitlab@9c7635c7e6e8b7ef1ee7ee10d30ca3a3e97cbddc) ([merge request](gitlab-org/gitlab!122386)) **GitLab Enterprise Edition**
- [This MR updates select all button](gitlab-org/gitlab@00b904524d2f80967f8186a2971cd1a54b6ca0da) ([merge request](gitlab-org/gitlab!121904)) **GitLab Enterprise Edition**
- [Update dast mixin profile requests](gitlab-org/gitlab@89f0485e4b9f07a4502c94785a4f92d7f16ffb98) ([merge request](gitlab-org/gitlab!121810)) **GitLab Enterprise Edition**
- [Improve UI for Candidate CI info](gitlab-org/gitlab@73bdd360fcf8eca908778958c390e16c91de0f09) ([merge request](gitlab-org/gitlab!121681))
- [Enable cluster agent tokens limit in API by default](gitlab-org/gitlab@f403d742d7562028294c22372d84204a6e285319) ([merge request](gitlab-org/gitlab!122848))
- [Update dependency auto-deploy-image to v2.50.0](gitlab-org/gitlab@51ceac3292f72a537cdbb2fbe2eeea7e3a1d590f) ([merge request](gitlab-org/gitlab!122751))
- [Remove adding compliance frameworks for personal](gitlab-org/gitlab@6896044524d177a04e0fcdc07273df26ccc40f2c) ([merge request](gitlab-org/gitlab!121901)) **GitLab Enterprise Edition**
- [Adding Secure Files object storage migration rake task](gitlab-org/gitlab@0a8c9606cf127fbd72d180ecfa949fe6a0563ae2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122475))
- [Move masked variable regex warning to help text](gitlab-org/gitlab@8c1d34364314a21a802ca9e1f122fd406f07adfb) ([merge request](gitlab-org/gitlab!122131))
- [Don't set pagination for recursive tree calls](gitlab-org/gitlab@76d701bcc6dc6d4f1aefc0b12f70dec55be0eb2a) ([merge request](gitlab-org/gitlab!122791))
- [Use latest completed pipeline for security policy comparison](gitlab-org/gitlab@fe4cbc3fac118ee6a3510838f31bdc2be144051c) ([merge request](gitlab-org/gitlab!122048)) **GitLab Enterprise Edition**
- [Avoid slow queries in redundant pipelines service](gitlab-org/gitlab@60cfbf25c4a279dd5e0a7de8f4f20666289f0268) ([merge request](gitlab-org/gitlab!122764))
- [Swap PG 14 to be default, and 13 to be nightly](gitlab-org/gitlab@700acda3b4fe38dd864af7e046b943325756bb65) ([merge request](gitlab-org/gitlab!119344))
- [Combine sign-in text together - part 1/2](gitlab-org/gitlab@9998eba30afefed3ac37f38b9f33aeec0065cd27) ([merge request](gitlab-org/gitlab!122110))
- [Rename ci/cd minutes to compute in purchase pages](gitlab-org/gitlab@40e2f9e4dc48c21b06691a9ada4bc0ab6b4db12e) ([merge request](gitlab-org/gitlab!122601)) **GitLab Enterprise Edition**
- [Changes storage magnitude notation](gitlab-org/gitlab@6435eb7b68a5bbb8f9efcb6157c6729ae0a6a2cc) ([merge request](gitlab-org/gitlab!120333))
- [Archive projects toggle behind a feature flag](gitlab-org/gitlab@a3d5126247a54a94e335d0bbb6ec50aae47d9bc8) ([merge request](gitlab-org/gitlab!122332))
- [Validate presence of `PersonalAccessToken#expires_at`](gitlab-org/gitlab@91b7733a5b939580e680bc71af525e3c6c55b733) ([merge request](gitlab-org/gitlab!121370))
- [Removed translation scope from "Learn more" buttons](gitlab-org/gitlab@7a00a09612a7ce6ecb444c4490cd5875c266310f) by @catinbag ([merge request](gitlab-org/gitlab!122693))
- [Remove in progress text](gitlab-org/gitlab@60a7a73940326e0beb5e1e368fdfb64a0a968f53) ([merge request](gitlab-org/gitlab!122650))
- [Adds an Elastic migration helper for creating a new index](gitlab-org/gitlab@0166a696029c6b593efa247d1cc914257a43be4e) ([merge request](gitlab-org/gitlab!122183)) **GitLab Enterprise Edition**
- [Add warning to issue description modal](gitlab-org/gitlab@52e897b8174b3fd40f3011f77619cef471116148) ([merge request](gitlab-org/gitlab!122361))
- [Tweaked visual styles and reoganized some files](gitlab-org/gitlab@10a0f2dda1fcbca98dd47a2a707508ca8efdb66c) ([merge request](gitlab-org/gitlab!121037))
- [Update Admin settings for compute usage](gitlab-org/gitlab@aa93508b534632d07694550c7b821d1b8b0564f9) ([merge request](gitlab-org/gitlab!122613)) **GitLab Enterprise Edition**
- [Revert to using SearchService for user autocomplete](gitlab-org/gitlab@95cd097985f47b1d3cbe42f06a81fed3b9d70069) ([merge request](gitlab-org/gitlab!122289))
- [Display completed training urls](gitlab-org/gitlab@ad59dd1b42fa66c0c9ba8e858b3be3cc26807c7b) ([merge request](gitlab-org/gitlab!122366)) **GitLab Enterprise Edition**
- [Reshedule links related migration with](gitlab-org/gitlab@8f84c5dce446494689114a9eb93e656051c0f70c) ([merge request](gitlab-org/gitlab!121404))
- [[Audit Events] Provide all audit events under a group via the API](gitlab-org/gitlab@794911016bb0294a5cf0229374298f2a0caa20a7) ([merge request](gitlab-org/gitlab!115898)) **GitLab Enterprise Edition**
- [Add option to not show banner broadcast message in CLI](gitlab-org/gitlab@f87b9bf9f487fcb44a248e3937107c2fa80e8703) ([merge request](gitlab-org/gitlab!122000))
- [Branches: Branch item update](gitlab-org/gitlab@546c5e551ac1f56231c5bea4af5b5ee10376e779) ([merge request](gitlab-org/gitlab!119637))
- [Update usage charts to use compute terminology](gitlab-org/gitlab@9ffd5f636fefed33d226f913225d8fd0671be04a) ([merge request](gitlab-org/gitlab!122015)) **GitLab Enterprise Edition**
- [Shows Model experiments menu only if enabled](gitlab-org/gitlab@a4511879d2a1565245c7b946763a7f91c0c81398) ([merge request](gitlab-org/gitlab!121670))
- [Refactors api endpoints to use can?](gitlab-org/gitlab@2eac573e620680a72b2f9ed3322b135101bb7956) ([merge request](gitlab-org/gitlab!121665))
- [Refactors Controllers to use can?](gitlab-org/gitlab@cd8cc880d74005ad248e83c8f06fe93ae50801c5) ([merge request](gitlab-org/gitlab!121661))
- [Moved user_dismissed_before? helper method to EE helper](gitlab-org/gitlab@1cf50abb8b6e961899a11dc9b50011f3f095c83d) ([merge request](gitlab-org/gitlab!122464)) **GitLab Enterprise Edition**
- [Update runners empty state](gitlab-org/gitlab@5b35637cbc24abd91aed79cb3c2ec3f4560fcd1c) ([merge request](gitlab-org/gitlab!122313))
- [Adding secure files settings to consolidated object storage](gitlab-org/gitlab@9539b2e0afc9bae95d2907dd0d922ae98d10b1fd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122250))
- [Make ci badge design compliant](gitlab-org/gitlab@8432817e55c6bab7fd13ff76b8573942a77bd00a) ([merge request](gitlab-org/gitlab!121876))
- [Return 503 instead of 429 when Gitaly returns ResourceExhausted](gitlab-org/gitlab@e2166630f2820f62cbd82854382b0e95794bf010) ([merge request](gitlab-org/gitlab!122427))
- [Lock net-http version to v0.1.1](gitlab-org/gitlab@61c50b226ad046aa88dd86186be59a1e6876b255) ([merge request](gitlab-org/gitlab!122240))
- [Add header for scan execution policy scanner dropdown](gitlab-org/gitlab@a662a67bdce9fd14673d55c19958320107c2e7e6) ([merge request](gitlab-org/gitlab!122044)) **GitLab Enterprise Edition**
- [Add runner group count to the runner list](gitlab-org/gitlab@713a56d8c51d2bff988e729f6004385ae0dab3d8) ([merge request](gitlab-org/gitlab!122166))
- [Replaced js-dropdown-input-field with data-testid](gitlab-org/gitlab@5985a9b5e0819dfbd963961fcae35f1322861c8d) by @catinbag ([merge request](gitlab-org/gitlab!122384))
- [UI updates on summarize comments and description](gitlab-org/gitlab@252e97aedd18ae231efe98a989d574e7c20df80c) ([merge request](gitlab-org/gitlab!122103))
- [Update license schema max values](gitlab-org/gitlab@bf28c5b7a9c055cf4f90313537f983f731ee5e04) ([merge request](gitlab-org/gitlab!121312)) **GitLab Enterprise Edition**
- [Remove hide_create_issue_resolve_all feature flag](gitlab-org/gitlab@dd33b1e5022ac8c18277be3250010748299ca964) ([merge request](gitlab-org/gitlab!120037))
- [Ensure instance admins can admin service accounts](gitlab-org/gitlab@e0890414b57239955369e3cb07e6b6c560447f32) ([merge request](gitlab-org/gitlab!122358)) **GitLab Enterprise Edition**
- [Use issue/MR sticky header titles to link to top of page](gitlab-org/gitlab@77732d730e1ff505b00007715e97fd509589bc99) ([merge request](gitlab-org/gitlab!122356))
- [Convert the LDAP sign-in form to Pajamas](gitlab-org/gitlab@573cfe261ad62d26c2ffda1cdd0102a2be6f897a) ([merge request](gitlab-org/gitlab!121877))
- [Rename analyze to analytics in product analytics metrics](gitlab-org/gitlab@83c120121f19bf7b69af56f85e47095fb2d164d1) ([merge request](gitlab-org/gitlab!122326)) **GitLab Enterprise Edition**
- [Changed the class name .header-search-new to .header-search](gitlab-org/gitlab@1829ac29415c39ce7600326952f8c13a75cb11f0) ([merge request](gitlab-org/gitlab!122083))
- [Replace spinner with skeleton loader in explain vulnerability drawer](gitlab-org/gitlab@e0cd4743a68f7e3440aa178da15de5c54fab6af7) ([merge request](gitlab-org/gitlab!122236))
- [Display tags and "run untagged jobs" as required](gitlab-org/gitlab@ec1f1e2150def04fb4469da619952dc18839ab5d) ([merge request](gitlab-org/gitlab!121677))
- [Refresh runner update form](gitlab-org/gitlab@9667a85b9cc8f35e60cdb775de6d6132b5a6b7ea) ([merge request](gitlab-org/gitlab!121543))
- [Update vulnerability drawer to match others](gitlab-org/gitlab@7a9c4c92816d048aebde4a46931944dd9e7688ee) ([merge request](gitlab-org/gitlab!121873))
- [Update compliance violation report ui styling](gitlab-org/gitlab@facdb533888e23264d9a5c978749acca5df8361d) ([merge request](gitlab-org/gitlab!121780)) **GitLab Enterprise Edition**
- [Make MigrateSharedVulnerabilityIdentifiers use slow iteration](gitlab-org/gitlab@caf057c89b6bd1d90358faafe76175c4381c2939) ([merge request](gitlab-org/gitlab!121377))
- [General improvements in the 2FA form](gitlab-org/gitlab@2ff040e330da909ebde8a6a59ca2cc50430635cc) ([merge request](gitlab-org/gitlab!122247))
- [Update UI text for LFS setting](gitlab-org/gitlab@b6a3d9192a7380f7f0737b681a3f7bea91574bf7) ([merge request](gitlab-org/gitlab!121863))
- [Update Puma to v6.3.0](gitlab-org/gitlab@2239116b91c0b2f17bb3d4e9e762c00c38336720) ([merge request](gitlab-org/gitlab!122200))
- [Set status check back to pending on retry](gitlab-org/gitlab@f21ca69cfe97f5ba4dfde409382de343da3d5ffe) ([merge request](gitlab-org/gitlab!113926))
- [Remove `dashboard_saml_reauth_support` feature flag](gitlab-org/gitlab@760ae39af43d3666a4fc1cd815689e76872a6359) ([merge request](gitlab-org/gitlab!122210)) **GitLab Enterprise Edition**
- [Remove namespace select after group create fails during trial creation](gitlab-org/gitlab@72cf6b93f9f152ea609e5ddddb237124d5896443) ([merge request](gitlab-org/gitlab!121158)) **GitLab Enterprise Edition**
- [Geo Replicables - SSF Filtering Support](gitlab-org/gitlab@542e05160d17c2c64bd437262c85c21d878ef691) ([merge request](gitlab-org/gitlab!122126)) **GitLab Enterprise Edition**
- [Don't include archived projects by default](gitlab-org/gitlab@9dc61c5067c76fdd859acddadbbf98932d37a849) ([merge request](gitlab-org/gitlab!121981))
- [Increase padding between epic title and swimlane](gitlab-org/gitlab@d36496b5531289e51b9a9f5b81b01bc3b71b7c59) ([merge request](gitlab-org/gitlab!122017)) **GitLab Enterprise Edition**
- [Update the JiraCoonect app error message](gitlab-org/gitlab@8026cd5848fdb307f234a9201630be54cbfda745) ([merge request](gitlab-org/gitlab!121983))
- [Explain code: Highlight selected code lines](gitlab-org/gitlab@74c078090b327cf00f7b91d8dd438f60d56308ce) ([merge request](gitlab-org/gitlab!121830))
- [Raise the permissions of the group-level APIs to owner](gitlab-org/gitlab@93472e2c1c62cd969ae66c08f1816bff34538a22) ([merge request](gitlab-org/gitlab!118360))
- [Add info about obsolete migrations to elastic rake tasks](gitlab-org/gitlab@42062af3c976ebd004b7fcf593a0f07fb248a3a2) ([merge request](gitlab-org/gitlab!122111)) **GitLab Enterprise Edition**
- [Add database index on members](gitlab-org/gitlab@5bd79758e947bc3bd6c46611ad190b42c689c359) ([merge request](gitlab-org/gitlab!117642))
- [Update spacing of commits list](gitlab-org/gitlab@8a91dbd4751feffb67b6f015624ecb56e9d48375) ([merge request](gitlab-org/gitlab!122129))
- [Remove the feature flag npm_group_level_endpoints](gitlab-org/gitlab@ddd1bbbe5ceedba1ebd63ec378db1f0f73a45ed8) ([merge request](gitlab-org/gitlab!121837))
- [Enforce a character limit of 2 in autocomplete search](gitlab-org/gitlab@e26a1a8b97fd6eff7f7f93fdfa41b7234a3ad15f) ([merge request](gitlab-org/gitlab!117628))
- [Use GraphQl to update environment info](gitlab-org/gitlab@05a690fea82d90126a0faa2d5d57edeb5f5eede1) ([merge request](gitlab-org/gitlab!121869))
- [Remove single tab from admin mode](gitlab-org/gitlab@1e682812d4e7f72581c1407119903e4f216c7359) ([merge request](gitlab-org/gitlab!118337))
- [Simplify and bring uniformity to sign-in language](gitlab-org/gitlab@7e8e3f19e1b1faa22eabfed8d5b54c32d971fea9) ([merge request](gitlab-org/gitlab!122094))
- [Change the TanukiBot's distance function](gitlab-org/gitlab@d9f975a7400c439f36a0b2e4e13dddec7850f524) ([merge request](gitlab-org/gitlab!122089)) **GitLab Enterprise Edition**
- [Adding Drawio offline support](gitlab-org/gitlab@df0eb15fa6d807c2f4e4b106ca340e540329b262) by @ChevronTango ([merge request](gitlab-org/gitlab!116281))
- [Convert the CROWD sign-in form to Pajamas](gitlab-org/gitlab@23f6f5670066b3d186b3b6ad8e0af0c5cb8f720a) ([merge request](gitlab-org/gitlab!122085))
- [Add feedback link to summarized comments](gitlab-org/gitlab@aa0c217981d18052879a4c51a1343abfb68aed25) ([merge request](gitlab-org/gitlab!122066))
- [Added missing unit tests for dismissed before callout methods](gitlab-org/gitlab@9ccbc7e8d181bca4d2f24ae708ca6330229cf6db) ([merge request](gitlab-org/gitlab!122049))
- [Adds minimum value validation for plan limits](gitlab-org/gitlab@827e5a106316fac8a03c0db977c558eb122bcc66) ([merge request](gitlab-org/gitlab!122026))
- [Add click actions to card titles pointing to corresponding tabs](gitlab-org/gitlab@a9e7212151a619d62075b68bdafa669884ab28ee) by @daelmo ([merge request](gitlab-org/gitlab!118818)) **GitLab Enterprise Edition**
- [Only show code suggestions alert after new nav alert is dismissed](gitlab-org/gitlab@dcd650c56b99286729b57207b8083cdbefcfb0dd) ([merge request](gitlab-org/gitlab!121988)) **GitLab Enterprise Edition**
- [Add Info icons to metric labels in the Value Stream Dashboard](gitlab-org/gitlab@29896955fe79ad418b015b2367f32261fcb4d7f2) ([merge request](gitlab-org/gitlab!122099)) **GitLab Enterprise Edition**
- [Use GraphQl to update environment info](gitlab-org/gitlab@fb0507abb5ba8e1f7c2bd627d8e2b3365f6eea91) ([merge request](gitlab-org/gitlab!121503))
- [Uses relative path for projects inside Usage Quotas](gitlab-org/gitlab@607da3ca6238357eb93c328d4b2d32abd99ccdee) ([merge request](gitlab-org/gitlab!116679)) **GitLab Enterprise Edition**
- [Update ci minutes settings to compute](gitlab-org/gitlab@847e9a5485104804bbf5824171b8dd399f03e29e) ([merge request](gitlab-org/gitlab!121361)) **GitLab Enterprise Edition**
- [Error Tracking - various fixes around stacktrace file path](gitlab-org/gitlab@5c022958537a2eff92f911d4db39c171ab2ed769) ([merge request](gitlab-org/gitlab!121691))
- [Feature flag cleanup](gitlab-org/gitlab@94ab06578ee774a7425061ae555b94e0a90fe47b) ([merge request](gitlab-org/gitlab!121820)) **GitLab Enterprise Edition**
- [Migrate checkbox to be pajamas compliant](gitlab-org/gitlab@edc1991c906bd5352ab033f3c2333f2ab3d230df) ([merge request](gitlab-org/gitlab!121424))
- [Update checkbox to use pajamas](gitlab-org/gitlab@a5b5d9d0b31d6184e420d3711ac229a920aad054) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121316))
- [Update Nokogiri to v1.15.2](gitlab-org/gitlab@0a72fce6cb4472fbb3bf1e5810bb27af3afcc316) ([merge request](gitlab-org/gitlab!121426))
- [Use GraphQl to update environment info](gitlab-org/gitlab@dde3a71dd61281bb57ed9b75914443554d23fedc) ([merge request](gitlab-org/gitlab!121444))
- [Nav Switch Context fix focus](gitlab-org/gitlab@d7b3ffbf1d841de04a17159d06e79613a10b6957) ([merge request](gitlab-org/gitlab!121930))
- [GitLab Chat: Adding empty state](gitlab-org/gitlab@2c4cc6a27ed33e3603858c607fcb7b4379541cc7) ([merge request](gitlab-org/gitlab!121703))
- [Update grpc to v1.55.0](gitlab-org/gitlab@7ad293af70c26e970bfaf7b198db79f326df6e8b) ([merge request](gitlab-org/gitlab!121899))
- [Add CRUD instance level audit event streaming destinations](gitlab-org/gitlab@ad0474a82e3f9555c6059d9d09440e1310a9d0c9) ([merge request](gitlab-org/gitlab!119891)) **GitLab Enterprise Edition**
- [Update summarize comments UI](gitlab-org/gitlab@d1267cdf4af76b380b116f9bd59d83fa50d0c2f7) ([merge request](gitlab-org/gitlab!121574))
- [Cleaned runner header](gitlab-org/gitlab@957bb772cef0999218d0c06f211d7713364d3acc) by @catinbag ([merge request](gitlab-org/gitlab!120545))
- [Modify storage limit to use admin controlled value](gitlab-org/gitlab@e7338921c08358954e9f8d6dd0e615fdf5699755) ([merge request](gitlab-org/gitlab!118198)) **GitLab Enterprise Edition**
- [Expose namespace root repository size for admins in API](gitlab-org/gitlab@08875cb5a52b40013344b9770bbecb8fcb1655c3) ([merge request](gitlab-org/gitlab!121175))
- [Add new Markdown editor to Topic descriptions](gitlab-org/gitlab@e02fcf3c07d4a6dcd1c714060edd1883d01ee877) ([merge request](gitlab-org/gitlab!119734))
- [Add links to commit refs](gitlab-org/gitlab@7ffbf68cbc823b2a8dcb25a5c18ef39592230846) ([merge request](gitlab-org/gitlab!121580))
- [Rename GroupProjectsController file](gitlab-org/gitlab@9fc722d97cebf6f8a0ec7c0ac2c4adb7d606c3b6) ([merge request](gitlab-org/gitlab!119772)) **GitLab Enterprise Edition**
- [Edit file: Remove background from tabs](gitlab-org/gitlab@ec52c1dfd99a6d0b6d579f2c96b127cb031c9b35) ([merge request](gitlab-org/gitlab!121816))
- [GitLab Chat: Add ability to increase height of text field](gitlab-org/gitlab@e446468e213213cb16821a375cc03ecf5725fc8a) ([merge request](gitlab-org/gitlab!121238)) **GitLab Enterprise Edition**
- [Redirect new topic form to the topics list](gitlab-org/gitlab@18e7a266eac91aeed1d7d2071f01bccac58179f2) ([merge request](gitlab-org/gitlab!121482))
- [Release Geo secondary Git over SSH redesign](gitlab-org/gitlab@43d4fe9a1037c3cdb903f11283436e183f545001) ([merge request](gitlab-org/gitlab!121793)) **GitLab Enterprise Edition**
- [Remove Open beta messaging for error tracking](gitlab-org/gitlab@f4233302e1e62b21e35eeb6c3f58bf99e5ad2c48) ([merge request](gitlab-org/gitlab!121476))
- [Geo Sites - Order Replicable Types](gitlab-org/gitlab@486d8cc6dd7443e3ab090494f5cc26188f636915) ([merge request](gitlab-org/gitlab!121182)) **GitLab Enterprise Edition**
- [Bump commonmarker gem to 0.23.9](gitlab-org/gitlab@8e1e42367373c39aaaf88570af368282983b0d83) ([merge request](gitlab-org/gitlab!121602))
- [Convert Abuse Reports Actions Dropdown into Drawer](gitlab-org/gitlab@fd6411934762220b486efa792740c597c4feb9a0) ([merge request](gitlab-org/gitlab!117884))
- [Disable Service Desk activation if issue tracker is disabled](gitlab-org/gitlab@ee5fddcf2074c87eb18b6b00c2ba2f55f5771d6f) ([merge request](gitlab-org/gitlab!121393))
- [Fix inputs, events and buttons in edit escalation policies form](gitlab-org/gitlab@d9afb762506f19dba95a01e7a731ea4cb076d36c) by @daelmo ([merge request](gitlab-org/gitlab!119018)) **GitLab Enterprise Edition**
- [GitLab Chat: increase line-height for better readability](gitlab-org/gitlab@d9dc296e082a91d0ae607ac0dd0ee375807a5a10) ([merge request](gitlab-org/gitlab!121699))
- [GitLab Chat: Change alignment of sources](gitlab-org/gitlab@7abd2230613143fbbc1f968ac49f5926de4ad18b) ([merge request](gitlab-org/gitlab!121688))
- [Update the circuit breaker notifier](gitlab-org/gitlab@5928009794719b3eb8c814b434a2765b2ff9fe53) ([merge request](gitlab-org/gitlab!121671))
- [Update gitlab-labkit & pg_query](gitlab-org/gitlab@0aa42cdbcacd5f02f1fc1450b01df0c806803a05) ([merge request](gitlab-org/gitlab!121504))
- [Add query for compressed package metadata](gitlab-org/gitlab@efd9457adba06bc69730455ada9daac2313a6f22) ([merge request](gitlab-org/gitlab!119607)) **GitLab Enterprise Edition**
- [Update compliance framework ui styling](gitlab-org/gitlab@078c89f22f1f17d886cc4237b01bc60246dafe73) ([merge request](gitlab-org/gitlab!121617)) **GitLab Enterprise Edition**
- [GitLab Chat: Change loading animation of AI replies](gitlab-org/gitlab@c3934d9998d64cd0d74c0e8d48cd024976526926) ([merge request](gitlab-org/gitlab!121255)) **GitLab Enterprise Edition**
- [Align GitLab chat drawer headers](gitlab-org/gitlab@9bed5e59e50cfe87d9ff4febc545a740e2a776c2) ([merge request](gitlab-org/gitlab!121274))
- [Use GraphQl to update environment info](gitlab-org/gitlab@a9a5818b79c5ab5ba8301e3abd1c068957d6e06f) ([merge request](gitlab-org/gitlab!121091))
- [Tanuki Bot: Improve chat message appearance](gitlab-org/gitlab@38cbcc89b77336dc9cdb193c2a5aa6bf4f98644a) ([merge request](gitlab-org/gitlab!121245))
- [Create the `down` method](gitlab-org/gitlab@06bc71f3302cfb0f1445e6eed53bd0a2495c82b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114518)) **GitLab Enterprise Edition**
- [Add brute force migration back](gitlab-org/gitlab@000b6dbefd0de95e72b6a6ca7f0fefb26498c544) ([merge request](gitlab-org/gitlab!121077)) **GitLab Enterprise Edition**
- [Add projects_ids to set_runner_associated_projects audit event](gitlab-org/gitlab@649a295c048413ceedb443e77b0416663ad8736a) ([merge request](gitlab-org/gitlab!121521)) **GitLab Enterprise Edition**
- [Update checkbox to use pajamas](gitlab-org/gitlab@2b16aa862b716e541cfc177c78b3154e93fd706a) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121321))
- [This MR migrates legacy GlDropdown](gitlab-org/gitlab@ddc75aca04500d17e1dc0499a7dbf402a44e2b00) ([merge request](gitlab-org/gitlab!121309)) **GitLab Enterprise Edition**
- [Built-in dashboards go above custom ones](gitlab-org/gitlab@cfcf22a025627ad76f4f0eee51e733c37cd5eedf) ([merge request](gitlab-org/gitlab!121508)) **GitLab Enterprise Edition**
- [Log Sidekiq job_status as deferred for deferred](gitlab-org/gitlab@c5fc729fff98c111997679c503722154f0dfa9b3) ([merge request](gitlab-org/gitlab!121501))
- [Migrate GlDropdown to GlListbox in severity filter](gitlab-org/gitlab@62eddfccf83024362d0dd27e1285b677a285f5ae) ([merge request](gitlab-org/gitlab!120510)) **GitLab Enterprise Edition**
- [Update dependency auto-build-image to v1.33.0](gitlab-org/gitlab@c4836f7b71bf31a5ef400ba4a8e7902e7d8c5327) ([merge request](gitlab-org/gitlab!121473))
- [Use info variant for impersonation alert](gitlab-org/gitlab@256f602ef9960764b652664db0042ffe92f7aad1) ([merge request](gitlab-org/gitlab!121465))
- [Limit the number of agent tokens created](gitlab-org/gitlab@bb7fee08c5e492894282f904b33299a6fb784cb7) ([merge request](gitlab-org/gitlab!120825))
- [Defers loading of package assets on package details page](gitlab-org/gitlab@00335da7c2352833a57ca4f2d65f3d875785a3ff) ([merge request](gitlab-org/gitlab!120828))
- [Enable and remove user_spam_scores feature flag](gitlab-org/gitlab@8faddf7cd36a164e73322e81da219785e341d864) ([merge request](gitlab-org/gitlab!121440))
- [Use GraphQl to get environment info](gitlab-org/gitlab@84f8ae6ce6d9be3b2963429f9facad4ac2586324) ([merge request](gitlab-org/gitlab!120642))
- [Upgrade prometheus-client-mmap to v0.24.3](gitlab-org/gitlab@b31645b01ea9023b1923fb92913a3f22eee67901) ([merge request](gitlab-org/gitlab!121423))
- [Updates "Submit" button with "Create runner"](gitlab-org/gitlab@9856bc7135793fedd18a04808ed619009ce3e038) ([merge request](gitlab-org/gitlab!121376))
- [Change defer_sidekiq_jobs FF delimiter to _](gitlab-org/gitlab@2d80b6a1d66a05c7167d226f1ca0d91b1b5ceb03) ([merge request](gitlab-org/gitlab!121387))
- [Revisited MR empty state](gitlab-org/gitlab@67199d0ad6d90f172a29321ce24b1096fb354555) by @catinbag ([merge request](gitlab-org/gitlab!120541))
- [This MR migrates legacy GlDropdown](gitlab-org/gitlab@9bb0cde661021b30552aac4071660391cacdf054) ([merge request](gitlab-org/gitlab!120457)) **GitLab Enterprise Edition**
- [Remove "already signed in" message on redirect](gitlab-org/gitlab@896492e7cbe5cd47b198688bafe19206eb86887c) ([merge request](gitlab-org/gitlab!120002))
- [This MR migrates legacy GlDropdown](gitlab-org/gitlab@987817ab2743e6cfce1f7ff2bad0940f632fa238) ([merge request](gitlab-org/gitlab!121067)) **GitLab Enterprise Edition**
- [Update form submit to use pajamas](gitlab-org/gitlab@c036ec03c4566e32a9b26dfe83b0c9b30b6b2c60) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121330))
- [Add AsciiDoc include for remote URI](gitlab-org/gitlab@019765c67c89bd5d4cdc7680afa34cade625b757) ([merge request](gitlab-org/gitlab!82689))
- [Update checkbox to use pajamas](gitlab-org/gitlab@580f49725e4030790d5d2c59df03eb01f92d5c07) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121322))
- [Update checkbox to use pajamas](gitlab-org/gitlab@2eeb3b82ab0939bec61ddaf1bb822d41743d236e) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121320))
- [Update checkbox to use pajamas](gitlab-org/gitlab@cfd383decb94e36b0e41ff180a3f7c905b880c69) by @ShaneMaglangit ([merge request](gitlab-org/gitlab!121315))
- [Introduce parallelised BitBucket Server Importer](gitlab-org/gitlab@3a4e253a010f41ac531bffbdb95df95b1be772fb) ([merge request](gitlab-org/gitlab!120931))
- [Abuse report worker excludes users in paid groups](gitlab-org/gitlab@162ba962ab5d991c7ba96826f13ec846240755c2) ([merge request](gitlab-org/gitlab!121295))
- [Make small updates to GitLab chat UI](gitlab-org/gitlab@ef8ee1c1a4f39ebf16d0ca5426eed6ec0a5a2129) ([merge request](gitlab-org/gitlab!121193))
- [Make ci_runners_stale_machines_cleanup_worker job run more frequently](gitlab-org/gitlab@118b4686fb21f87b5922c9d2acdc3b6e596fe5ac) ([merge request](gitlab-org/gitlab!121254))
- [Show explain vuln based on experimental and 3rd party API toggles](gitlab-org/gitlab@e2d94262dc6dc3f7ff3e5e297051a6d72399f393) ([merge request](gitlab-org/gitlab!119648)) **GitLab Enterprise Edition**
- [Update filter feature flag docs](gitlab-org/gitlab@3ed957ba49d1976e8354a162b8a67e91eeceaf25) ([merge request](gitlab-org/gitlab!121195))
- [Upgrade to Puma v6.2.2](gitlab-org/gitlab@07a8c9553f6b5af1929bd0a5449a529fa5bc448d) ([merge request](gitlab-org/gitlab!119135))
- [Adding ci_secure_files to backup rake task](gitlab-org/gitlab@4a79ec5cf8a8848b4cb8431bcb1f5fbed561ac59) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121142))
- [Move flash message for unverified domains to local messages](gitlab-org/gitlab@a60ee27388a41564c6956d4c0fac9164ee537aa0) by @dannyelcf ([merge request](gitlab-org/gitlab!120794))
- [Update doorkeeper-openid_connect to v1.8.7](gitlab-org/gitlab@68e7fd062384ed492cc52cf6279616b6daa9a0ef) ([merge request](gitlab-org/gitlab!121143))
- [Update default value for code_suggestions settings](gitlab-org/gitlab@5a152059d274f08bdfa0bac0e112387fc848cdf6) ([merge request](gitlab-org/gitlab!121126))
- [Adjust the correlation id constraint check value in abuse trust scores](gitlab-org/gitlab@b626b8f6349b7039656ece90ad62937b5d22f23a) ([merge request](gitlab-org/gitlab!120868))
- [Update gitlab-pages](gitlab-org/gitlab@ef279c345af039ef71e1b720893e1742d0988242) ([merge request](gitlab-org/gitlab!121121))
- [Add moderation status to spamlogs index](gitlab-org/gitlab@d2d701202ad2452c613667f50af153eb09d35ae9) ([merge request](gitlab-org/gitlab!120810))
- [Update grpc gem to v1.54.2](gitlab-org/gitlab@5b9062832119599bf31ecca35e8fea74a9c1fe24) ([merge request](gitlab-org/gitlab!114025))
- [Rename Packages::Package#original_build_info to last_build_info](gitlab-org/gitlab@9a1984f8ec63c45b42b60d499dfb308774304721) ([merge request](gitlab-org/gitlab!121055))
- [Migrate status filter to collapsible listbox](gitlab-org/gitlab@57f1b34990371da3e700f21f57cf922506d415ba) ([merge request](gitlab-org/gitlab!120320)) **GitLab Enterprise Edition**
- [Improve branches and tags in commit view](gitlab-org/gitlab@315032135818aacacf0ff703db8c4d9d4873dd73) ([merge request](gitlab-org/gitlab!120766))
- [Ensure experimental settings are enabled](gitlab-org/gitlab@5b5fc97f8caaddcb56e5de4dba87f333ad350276) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119829)) **GitLab Enterprise Edition**
- [Prepare the async index for ci_pipeline_variables](gitlab-org/gitlab@1fc81daf7182592a955ad667c56f865e686d7add) ([merge request](gitlab-org/gitlab!120946))
- [Log rails response length](gitlab-org/gitlab@cd158c29963b03689a0a0adba63d5bece0edc657) ([merge request](gitlab-org/gitlab!104032))
- [Add pipeline_ref and pipeline_sha claims to Ci::JwtV2](gitlab-org/gitlab@b6ec94b3ed232f8c5c6d68c5a19aaa91086614cf) ([merge request](gitlab-org/gitlab!117923))
- [Add pre and post import validation to gists import](gitlab-org/gitlab@e755aa376ce9830ad9e862d39051a80a1ae6f07c) ([merge request](gitlab-org/gitlab!119667))
- [Shows header of MlExpeirmentIndex on empty state](gitlab-org/gitlab@5cc217e1a4e836d3fc166e5a8851a4d0b525aa14) ([merge request](gitlab-org/gitlab!120482))
- [Improve tests to fit admin mode](gitlab-org/gitlab@9435c88f60d192144a6b456812997785828c0611) by @TrueKalix ([merge request](gitlab-org/gitlab!118514))
- [Add allow_account_deletion to ApplicationSettings](gitlab-org/gitlab@87f12670d4a81d5fdf4381f99caeba6201ef24ee) by @zhzhang93 ([merge request](gitlab-org/gitlab!117832)) **GitLab Enterprise Edition**
- [Issuables Designs: Comments actions improvements](gitlab-org/gitlab@0a9c66b7ccdec48b95579f55631ed8ef2ad676ab) ([merge request](gitlab-org/gitlab!120254))
- [Allow adding prometheus-type integrations to HttpIntegrations](gitlab-org/gitlab@9abe707160905447feb302e421d25223e874b4e7) ([merge request](gitlab-org/gitlab!120046))
- [Add filter by component names for](gitlab-org/gitlab@2e58af20ec4e4adfc2cb9c0a7e4df25964f7017b) ([merge request](gitlab-org/gitlab!120302)) **GitLab Enterprise Edition**
- [Visually align Source Editor toolbar](gitlab-org/gitlab@0a1b0d3886c7a943b8bdfd47a79596881563036f) ([merge request](gitlab-org/gitlab!119029))
- [Restructure and extend scan result policy drawer](gitlab-org/gitlab@ca567f17765e5dc8d4dd28738928b7b6c60b18f6) ([merge request](gitlab-org/gitlab!119738)) **GitLab Enterprise Edition**
- [Do not return group of current project in list of transfer locations](gitlab-org/gitlab@14970fc540cd76fd42d1ecf2f600ce591954ab4a) ([merge request](gitlab-org/gitlab!120618))
- [Rollout of commit_committer_name_check_ff](gitlab-org/gitlab@35af1d7beb56d9f785167220e5b20027eb965259) by @zhzhang93 ([merge request](gitlab-org/gitlab!120582))
- [Remove the feature flag packages_display_last_pipeline](gitlab-org/gitlab@2345ce457b7e6012ff84cd4fee0c980e5662eeac) ([merge request](gitlab-org/gitlab!120584))
- [Update dependency auto-deploy-image to v2.49.0](gitlab-org/gitlab@90ead937a82c157c17a3cb6ec2b7fda2b1e571e8) ([merge request](gitlab-org/gitlab!120388))
- [Update required node version to 18.16.0 or later](gitlab-org/gitlab@eda64d17840f90d8c9457f5cf23cf23ea2803bad) ([merge request](gitlab-org/gitlab!106898))
### Deprecated (1 change)
- [Deprecate the `project_fingerprint` field and return `uuid`](gitlab-org/gitlab@03c2116629e1d5b2888389bb854e6374001f4695) ([merge request](gitlab-org/gitlab!120858)) **GitLab Enterprise Edition**
### Removed (32 changes)
- [Remove `confidence` from vulnerability issue](gitlab-org/gitlab@1e9cc2c21d000be03409d364732e21f48dbbbef1) ([merge request](gitlab-org/gitlab!123718)) **GitLab Enterprise Edition**
- [Migration squash for all migrations from 14.10](gitlab-org/gitlab@b7fbcab89d810fb82c7e9b54d9ff2e65a3914ab7) ([merge request](gitlab-org/gitlab!120364))
- [Remove deprecated metrics embeds from GFM](gitlab-org/gitlab@894c77351a4e174ac0f8ba043fbc5fabfe1b99c2) ([merge request](gitlab-org/gitlab!116730))
- [Re-implement sidekiq learn gitlab worker removal migration](gitlab-org/gitlab@d55e1d85f7ec49918884d157bdf8654849bc19c6) ([merge request](gitlab-org/gitlab!123081))
- [Drop project_wiki_repository_states table](gitlab-org/gitlab@8be6b458f4b580a00bdd453f379568abcff52cbc) ([merge request](gitlab-org/gitlab!122936))
- [Cleanup PK conversion for few notes related tables](gitlab-org/gitlab@34f1f97e4faa22613d3f15ecc6b836f826dba441) ([merge request](gitlab-org/gitlab!123108))
- [Drop WebauthnRegistration#u2f_registration_id column](gitlab-org/gitlab@2c51e2649e08438dc20013444d8262ee8eea22a8) ([merge request](gitlab-org/gitlab!122873))
- [Remove explicit locking for retrying jobs](gitlab-org/gitlab@e37f3990be6aed72e9fba5ac8b8fce7fcb40e7b9) ([merge request](gitlab-org/gitlab!122737))
- [Remove synchronize_fork feature flag](gitlab-org/gitlab@8fa6c333ef50cf0cf1157e0622d099735f1c9538) ([merge request](gitlab-org/gitlab!121812))
- [Remove temporary index on oauth_access_tokens](gitlab-org/gitlab@db31fdf8d65ebb1ea5fb68adac5a29879c9473b1) ([merge request](gitlab-org/gitlab!122682))
- [Remove Usage Quotas Storage Inline Alert](gitlab-org/gitlab@d1b3965c84f5357f3498bce5d6565714c0f9b7c8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122444)) **GitLab Enterprise Edition**
- [Stop showing package size on package registry details page](gitlab-org/gitlab@86017e817c55b21d8050e0fa12cfa3ecd97f9e12) ([merge request](gitlab-org/gitlab!122501))
- [Cleanup super_sidebar_nav feature flag](gitlab-org/gitlab@c742606d1ba7b4eeb5074c83931ff5404728b190) ([merge request](gitlab-org/gitlab!122480))
- [Remove metric files from db importers](gitlab-org/gitlab@d1fb6f9276e521043261da3fd41c267586fe03ca) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121997))
- [Remove unnecessary index on events async](gitlab-org/gitlab@a9c71cfbf418e3dc2302e549149da5edd6bf0c75) ([merge request](gitlab-org/gitlab!122368))
- [Remove incorrect enterprise users metrics](gitlab-org/gitlab@dc066d727ad1c68e24fe134acd00c2f4d04bbfe5) ([merge request](gitlab-org/gitlab!121719)) **GitLab Enterprise Edition**
- [Remove not used routes](gitlab-org/gitlab@cd144ac568a73b7a58c0694834a20bb8ca259bca) ([merge request](gitlab-org/gitlab!121989)) **GitLab Enterprise Edition**
- [Remove commits count from daily commits header](gitlab-org/gitlab@ac91410bdffb0d1c33f15ea22c48952c3015d9d1) ([merge request](gitlab-org/gitlab!121831))
- [Clean metrics/dashboard/* workers and update specs](gitlab-org/gitlab@d6aaa1662ba200358abeaf8f35d815c8c74aea2b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121626))
- [Remove external_note_author_service_desk feature flag](gitlab-org/gitlab@79fb45a43a61d0d0bbe3d0b8b9118284bde03fb4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121944))
- [Remove ClearSharedRunnersMinutesWorker and related](gitlab-org/gitlab@0504ad85228e88e0f0ce8431f02a124b8b251008) ([merge request](gitlab-org/gitlab!120054))
- [Ignore message in Vulnerabilities::Finding](gitlab-org/gitlab@3b34e2f1cd580ccc9bfd9b24c75bb038d18fe68f) ([merge request](gitlab-org/gitlab!121214)) **GitLab Enterprise Edition**
- [Remove keyboard shortcuts for deprecated Metrics](gitlab-org/gitlab@2e8571f8d1801d68c91274ded4754f741fbff2f4) ([merge request](gitlab-org/gitlab!121069))
- [Remove file_md5 from debian component files](gitlab-org/gitlab@d8b486c3b48a0e9160f1ea6dabf542ac6da04d31) by @sathieu ([merge request](gitlab-org/gitlab!116385))
- [Delete Monitor Metrics settings UI](gitlab-org/gitlab@4bc2fb974c4cf478a2784a6cd35fd9abc2581af9) ([merge request](gitlab-org/gitlab!118068))
- [Remove project_ci_cd_settings#opt_in_jwt column](gitlab-org/gitlab@9ae5255550d643a7b0f93929f9a8f2f4a6bdd81d) ([merge request](gitlab-org/gitlab!121540))
- [Remove links to Metrics in Environments](gitlab-org/gitlab@7658e376cf4e896daa170e6e9d169d8dfec85b76) ([merge request](gitlab-org/gitlab!121043))
- [GraphQL: Remove Mutation.ciCdSettingsUpdate mutation](gitlab-org/gitlab@f957615ec4b8a7e7d59af4e2f096630034d7ee52) ([merge request](gitlab-org/gitlab!121419))
- [Delete Metrics form navigation](gitlab-org/gitlab@3f95bb475bd36115482a21ba8a6944ef3ff00950) ([merge request](gitlab-org/gitlab!121058))
- [Drop time_format_in_24h column](gitlab-org/gitlab@f5eadddc242504e48e5914e7a80db5e1d2a0af3d) ([merge request](gitlab-org/gitlab!121148))
- [Remove use of vulnerabilities[].message](gitlab-org/gitlab@3ab3efb17de2f0d94d0f9764f4522371b1fea401) ([merge request](gitlab-org/gitlab!119960)) **GitLab Enterprise Edition**
- [Remove puma worker killer](gitlab-org/gitlab@8ef0e7b5913fffdc1a991f0b2e56de857fa6c337) ([merge request](gitlab-org/gitlab!118645))
### Security (23 changes)
- [Fixes typo on project error tracking spec](gitlab-org/gitlab@6707d238d80a1ba4498a5c1777c361a19ffd6dbe)
- [Fixes typo on rake tasks documentation](gitlab-org/gitlab@b7d7b1c3b56508dd813c4877e022b272d708a0dc)
- [Fixes typo on Ci::JobArtifact model](gitlab-org/gitlab@7864d89fb25e4cf2a727fcea368c3a5b70e4b806)
- [Use recently renamed PathTraversal instead of Utils.check_path_traversal](gitlab-org/gitlab@157850cc1e9a1851c4682c8805a64240ef7a96da) ([merge request](gitlab-org/gitlab!122683))
- [Fix XSS in Abuse Reports form action](gitlab-org/gitlab@0a2df7926f0ec48d74106039baf5ff115fad2e00) ([merge request](gitlab-org/gitlab!122683))
- [Import source owners with maintainer access if importer is a maintainer](gitlab-org/gitlab@29a2ee9f19c938bbbb65539d84accdbeb33f3d99) ([merge request](gitlab-org/gitlab!122683))
- [Set IP in ActionContoller filter before IP enforcement is evaluated](gitlab-org/gitlab@f56d3c01c362b091648b5b2e2ea97825961e22e3) ([merge request](gitlab-org/gitlab!122683))
- [Improve ambiguous_ref? logic to include heads and tags](gitlab-org/gitlab@eefffa4b1a4453c387fb9d3698414f43399e2c34) ([merge request](gitlab-org/gitlab!122683))
- [Check for register_project_runners permission at service level](gitlab-org/gitlab@104ae4a29c8234b8d9fa535a0825ebe457d6a90e) ([merge request](gitlab-org/gitlab!122215))
- [Reject NPM metadata requests with invalid package_name](gitlab-org/gitlab@11909cc38d46fe7ea425f453731df0a4b2f63046) ([merge request](gitlab-org/gitlab!122683))
- [Filter inaccessible issuable notes when exporting project](gitlab-org/gitlab@ee98d3967b816c207c6acaf6705faa918db3168c) ([merge request](gitlab-org/gitlab!122683))
- [Escape the source branch link correctly](gitlab-org/gitlab@b7579d13629f188c53fa1a0636964314707c79c6) ([merge request](gitlab-org/gitlab!122683))
- [Ignore user-defined diff paths in diff notes](gitlab-org/gitlab@cbbb561940d8bc7061f90ead84b15c3f4f389eeb) ([merge request](gitlab-org/gitlab!122683))
- [Block tag names that are prepended with refs/tags/, due to conflicts](gitlab-org/gitlab@1bde58ab1ef37d6e44cffc5d175e6824726d86c9) ([merge request](gitlab-org/gitlab!122683))
- [Resolve Overall Project Vulnerability Disclosure](gitlab-org/gitlab@d5b9e2b29610adf81830f167d5bad0fe37b12f35) ([merge request](gitlab-org/gitlab!122683))
- [Fix DoS (zip bomb) on test report artifacts](gitlab-org/gitlab@f8c4c3dd6cfac40373ea2a9697090283d3849d8f) ([merge request](gitlab-org/gitlab!122683))
- [Use UntrustedRegexp to protect FrontMatter filter](gitlab-org/gitlab@a7185525542e857d0f86a55e8cd6ac172b29ed85) ([merge request](gitlab-org/gitlab!122683))
- [Use UntrustedRegexp to protect InlineDiff filter](gitlab-org/gitlab@20e2b59a406ef919e43318a966c214c7ead194d5) ([merge request](gitlab-org/gitlab!122683))
- [Use UntrustedRegexp to protect MathFilter regex](gitlab-org/gitlab@c4a1fa8ba3339fc5f45f3abcdf6fb506c6ce3d8b) ([merge request](gitlab-org/gitlab!122683))
- [Validate description bytesize in labels](gitlab-org/gitlab@d1bc5826ac02198e610736cba2ff16bc9a61f3e4) ([merge request](gitlab-org/gitlab!122683))
- [Prevent primary email returned as verified on unsaved change](gitlab-org/gitlab@81407748304d0efed871fb3145dba173f156b665) ([merge request](gitlab-org/gitlab!122683))
- [Fix arbitary file read via filename param](gitlab-org/gitlab@77eb0e3a2477039111e6fc44c0ae2e76a79bf202) ([merge request](gitlab-org/gitlab!121570))
- [Add temp flag to prevent inserting unapproved content](gitlab-org/gitlab@acc4c5a898d0f9162a188307aa2083f18dfe84d1) ([merge request](gitlab-org/gitlab!117455)) **GitLab Enterprise Edition**
### Performance (12 changes)
- [Remove inline_haml_diff_line_rendering feature flag](gitlab-org/gitlab@6fa20f34c57af86b7df85b69c1a163497532c9bf) ([merge request](gitlab-org/gitlab!123352))
- [Add cross-slot pipeline functionality](gitlab-org/gitlab@7d1b5fe532286b7cf56decd9c1d6d426b92415b4) ([merge request](gitlab-org/gitlab!120251))
- [Remove project_statistics_bulk_increment feature flag](gitlab-org/gitlab@492943d297e003ac0af3576fccb127775fc4bd18) ([merge request](gitlab-org/gitlab!122620))
- [Improve group issues query for Reporters and above](gitlab-org/gitlab@ac5da236042db9e9c1bbe277554915f1f7177867) ([merge request](gitlab-org/gitlab!122423))
- [Exclude deleted projects from scan execution rule](gitlab-org/gitlab@70cf972b76e24ac0ba7f83ec81a52f899bfd94e0) ([merge request](gitlab-org/gitlab!120614))
- [LFS: Serve pre-signed URLs in `/lfs/objects/batch`](gitlab-org/gitlab@964a1410c2ce64ce3f2086f8be4ef098d950091a) ([merge request](gitlab-org/gitlab!122221))
- [Remove the join query for global search of blobs](gitlab-org/gitlab@268e4889344939e3cc24f0b2ef32c1f5e10a6202) ([merge request](gitlab-org/gitlab!121026)) **GitLab Enterprise Edition**
- [Optimize ci_access_authorized_for? query](gitlab-org/gitlab@801539bda7d9e5e66a7d85e2f3bca18abfc9574c) ([merge request](gitlab-org/gitlab!121967))
- [Submit JiraConnect::SyncBranchWorker in batches](gitlab-org/gitlab@2ff97db90dfceb529fcdc56bd3f07e5a3d55c6ea) ([merge request](gitlab-org/gitlab!120866))
- [Enable and remove the FF ci_batch_project_includes_context](gitlab-org/gitlab@9f19f2638abc9a5ee9a93460da7bbec977d23558) ([merge request](gitlab-org/gitlab!121378))
- [Remove project_id from join query in project search for blob](gitlab-org/gitlab@d3915b25a0bb7350a0952831a824c6d9254a85dd) ([merge request](gitlab-org/gitlab!116949)) **GitLab Enterprise Edition**
- [Async remove 'merge_requests_state_id_temp_index'](gitlab-org/gitlab@0f5a690a3b675bd60d1d79d5bdd650a72b997244) ([merge request](gitlab-org/gitlab!120348))
### Other (98 changes)
- [Refactor from link_type to resource_link](gitlab-org/gitlab@a85cf053c404feb6f0e2eaf10fc0e6d0c93a581b) by @FromTheStackAndBack ([merge request](gitlab-org/gitlab!122263))
- [Replace issues health status sorting indexes Async](gitlab-org/gitlab@b18912036f6fb2b3ec93a03b848b6fc392dcf8c9) ([merge request](gitlab-org/gitlab!123860))
- [Remove progress bar from subscription flow](gitlab-org/gitlab@701e723ebce6c8b4e0ea77dde6a02717de7f60bf) ([merge request](gitlab-org/gitlab!123704)) **GitLab Enterprise Edition**
- [Add work_item_type_id closed_at index on issues table](gitlab-org/gitlab@eed0cf2fccefb098fded6cd94166d8d9aba04c3b) ([merge request](gitlab-org/gitlab!123706))
- [Bump gitlab_quality-test_tooling gem version](gitlab-org/gitlab@7fab012858b5dd9608af9658b3a62b7bf9db6a72) ([merge request](gitlab-org/gitlab!123815))
- [Finalize conversion for FKs targeting p_ci_builds](gitlab-org/gitlab@c80313a63bf016106b121fb985f1f25c23b50f65) ([merge request](gitlab-org/gitlab!123799))
- [Remove feature flag ci_job_artifacts_backlog_work](gitlab-org/gitlab@89c34dfb2b228880968a9dda3e337185e4756472) ([merge request](gitlab-org/gitlab!123736))
- [Move namespace errors to the namespace name input](gitlab-org/gitlab@178dfc44fa1b95af7e89917d0c7a3f7c834418e7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123084)) **GitLab Enterprise Edition**
- [Update merge train error messaging with link to docs](gitlab-org/gitlab@101f978a4e0e8fbbac9e11696312116f39f89ee7) by @missy-davies ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123664)) **GitLab Enterprise Edition**
- [Replace foreign keys to use the partitioned table](gitlab-org/gitlab@7d13bfacc19904dd6b401be4fb2c0bbff4687129) ([merge request](gitlab-org/gitlab!123355))
- [Remove `branch_rules` feature flag](gitlab-org/gitlab@01aee17b602889ec8a2e7598059b42a0b0223759) ([merge request](gitlab-org/gitlab!123368))
- [Remove feature flag "inherit_approval_rules_on_creation"](gitlab-org/gitlab@a0afaca745a928fc98fa641add9dceb62f38295e) ([merge request](gitlab-org/gitlab!123532))
- [Roll-out direct upload artifacts to final location](gitlab-org/gitlab@9c18ebe6aa91df2bb0ea272a5c70e7216cc56558) ([merge request](gitlab-org/gitlab!123615))
- [Error Tracking: Remove ingestion API](gitlab-org/gitlab@b9a92b5f06f401bd22c745f2ca311daefa75e0d5) ([merge request](gitlab-org/gitlab!123139))
- [Remove use_traversal_ids_groups_finder feature flag](gitlab-org/gitlab@3b671807fe578e360f7614658dc8316a0d49f832) ([merge request](gitlab-org/gitlab!123502))
- [Validate foreign keys targeting p_ci_builds](gitlab-org/gitlab@69d4ee660ebb10da92e2e580cfec6dbb8f5bb3ee) ([merge request](gitlab-org/gitlab!122087))
- [Fine tune over limit email notification worker](gitlab-org/gitlab@21cf3a3e7ce3499ebb84fea6bd00cb787b25a056) ([merge request](gitlab-org/gitlab!122950)) **GitLab Enterprise Edition**
- [Revert "Merge branch '382033-force-partition-attach' into 'master'"](gitlab-org/gitlab@192ce74aafa92a946e00a96140ca684fd7292999) ([merge request](gitlab-org/gitlab!122584))
- [Remove use_pipeline_over_multikey feature flag](gitlab-org/gitlab@3c2718cadc3431d830747077951b5c61f376e754) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118884))
- [Add version note related to design description](gitlab-org/gitlab@b492ccc8db77e59a0f310439eebd4b08c59d44d4) ([merge request](gitlab-org/gitlab!123061))
- [Add feature flag to disable cancel redundant pipelines](gitlab-org/gitlab@e36d96296b10599290c691b47e6831473c56533f) ([merge request](gitlab-org/gitlab!123032))
- [Documentation for deferring sidekiq using db health status](gitlab-org/gitlab@d1d75b58da103ff1a2c014494f74afc517b11d19) ([merge request](gitlab-org/gitlab!119190))
- [Usage data related scopes use the work_item_types table](gitlab-org/gitlab@3cbb7baf45ca881da0b5c2c94a4708dcc7d7c520) ([merge request](gitlab-org/gitlab!121297))
- [Increase coverage for different UI states](gitlab-org/gitlab@56484e6be1de3a12cef17f32f348e57a63c51eb8) ([merge request](gitlab-org/gitlab!122731)) **GitLab Enterprise Edition**
- [Remove spec violations and refactor test](gitlab-org/gitlab@50fffaa75075d95847f7348ed79797bda5ce618e) ([merge request](gitlab-org/gitlab!122663)) **GitLab Enterprise Edition**
- [Error Tracking: Consolidate Clickhouse specific feature flag](gitlab-org/gitlab@1da5c11ed84fccee870f2cef5198240c8d084286) ([merge request](gitlab-org/gitlab!122869))
- [Update Gitlab Shell version to 14.23.0](gitlab-org/gitlab@6688aaf525290118badc3af36c2e2304abf1a3a2) ([merge request](gitlab-org/gitlab!122728))
- [Swap notes.id to bigint for GitLab.com](gitlab-org/gitlab@98c7cb5b58def24939d6b71847f4e177f3f44402) ([merge request](gitlab-org/gitlab!119705))
- [Migrate tags sort dropdown to GlCollapsibleListbox](gitlab-org/gitlab@f88b2f4e0a2164b96ee5d9671b630fa6bdb7d332) ([merge request](gitlab-org/gitlab!122451))
- [Update `grape` gem to version 1.7.0](gitlab-org/gitlab@1c4ffb02f7cc78a0962e7569452bc8881ca2f724) ([merge request](gitlab-org/gitlab!112854))
- [Remove unused 'hideProjects' prop and its related refs](gitlab-org/gitlab@d456f5ae5282e4649c2ddc2322c299b62f75e1c7) by @asadath1395 ([merge request](gitlab-org/gitlab!120242))
- [Remove vm modification violation](gitlab-org/gitlab@58c39bd1f592c919d208b49294022fd570fb6190) ([merge request](gitlab-org/gitlab!122101)) **GitLab Enterprise Edition**
- [Remove `super_sidebar_peek` feature flag](gitlab-org/gitlab@fba87b177f9c499b0501b1e784db05820cfc6500) ([merge request](gitlab-org/gitlab!120048))
- [Remove `ci_multi_doc_yaml` FF](gitlab-org/gitlab@e98758d0c9d38f1d1b218e125b7290357dc3d19d) ([merge request](gitlab-org/gitlab!122463))
- [Refactor test to solve spec violations](gitlab-org/gitlab@5a6c91841267e6ce56f9b0120b3684f18c4af2f8) ([merge request](gitlab-org/gitlab!122482)) **GitLab Enterprise Edition**
- [Remove flag `always_perform_delayed_deletion`](gitlab-org/gitlab@f8e1d95c532d679be32556f2759f27ae9cfdab66) ([merge request](gitlab-org/gitlab!120476))
- [Fix typo of "superseded"](gitlab-org/gitlab@8ee6260c4e1c9c59179cf79822e1fe7126a39f2b) ([merge request](gitlab-org/gitlab!122669))
- [Add default database values for user_preferences table](gitlab-org/gitlab@b22ffb759010b655293a87e887e902f4bd752629) ([merge request](gitlab-org/gitlab!122467))
- [Add path attribute to organizations](gitlab-org/gitlab@e2a90f07686b1a78ae38c3f22d489fbf5e8d4a96) ([merge request](gitlab-org/gitlab!122050))
- [Add default database value for notified_of_own_activity column](gitlab-org/gitlab@1ec12d72c68125ff610f8f16209ab40042998c43) ([merge request](gitlab-org/gitlab!122473))
- [Improve test suite performance](gitlab-org/gitlab@a0f0e07f869dd2157530503da1c31299bb40759f) ([merge request](gitlab-org/gitlab!121854)) **GitLab Enterprise Edition**
- [Remove broadcast_messages.namespace_id column](gitlab-org/gitlab@b2261ff947d7c00e5e3cb0db26a0b9f2e03ba34c) ([merge request](gitlab-org/gitlab!122425))
- [Update Epics API for Grape 1.7 compatibility](gitlab-org/gitlab@21f63f21652264ac0758c241ee97236bb5409e50) ([merge request](gitlab-org/gitlab!122061)) **GitLab Enterprise Edition**
- [Add instance-level switch for Code Suggestions for SM](gitlab-org/gitlab@794706dc7249b5891cbe076797ed5a98e20f5984) ([merge request](gitlab-org/gitlab!122106))
- [Remove the feature_flag separate_elastic_wiki_indexer_for_project](gitlab-org/gitlab@8a611212098c9c4e461b64873e0e80cd3801c41d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122093)) **GitLab Enterprise Edition**
- [Clean up tofa* db columns](gitlab-org/gitlab@520923059e9cfa6825f50587eb853d63c1d28759) ([merge request](gitlab-org/gitlab!121205))
- [Update Gitlab Shell version to 14.22.0](gitlab-org/gitlab@8e72d44d7c8ce4dda967b9f67d978b1ee22b8143) ([merge request](gitlab-org/gitlab!122281))
- [Fix followup issues in ZeroShot Agent](gitlab-org/gitlab@804e8db2a3e1342e3e59516262a6d63cf2f5f249) ([merge request](gitlab-org/gitlab!121697)) **GitLab Enterprise Edition**
- [Adding cells blueprint FAQ section](gitlab-org/gitlab@47bd6d7428204fef33e93d55a28683cab5d41f40) ([merge request](gitlab-org/gitlab!122113))
- [Remove authorize_groups_query_without_column_cache feature flag](gitlab-org/gitlab@072b83c9828b301fab98ddc33032e352deda7f0e) ([merge request](gitlab-org/gitlab!122130))
- [Synchronously remove `merge_requests_state_id_temp_index`](gitlab-org/gitlab@17d5ed064cb3d3eee2262c1576d8c07418a6ac4f) ([merge request](gitlab-org/gitlab!120116))
- [Exposing db health check methods from sidekiq workers](gitlab-org/gitlab@c7be1d142807242b06ad82549ea91498500fddff) ([merge request](gitlab-org/gitlab!121261))
- [Ensure sso signup through signin onboards](gitlab-org/gitlab@ba6bbbb66e15bf69b53c1c30a55613057c79eaed) ([merge request](gitlab-org/gitlab!121567)) **GitLab Enterprise Edition**
- [Cleanup sync_approval_rules_from_findings feature flag](gitlab-org/gitlab@b11fa359dc6f65829cc2d5388dccd362aae9ee57) ([merge request](gitlab-org/gitlab!121385)) **GitLab Enterprise Edition**
- [Add Code Suggestions token into AppSettings](gitlab-org/gitlab@a0457639b5e597fd1daabb49829796c16e3466b1) ([merge request](gitlab-org/gitlab!121505))
- [Remove password_reset_any_verified_email FF](gitlab-org/gitlab@a935d28f3decf8f6873d5b0a6f405f2687d0f99f) ([merge request](gitlab-org/gitlab!122038))
- [Update Releases API for Grape 1.7 compatibility](gitlab-org/gitlab@cd07be55e7d895de9edd231799a27ebfbed4c4f1) ([merge request](gitlab-org/gitlab!121705))
- [Don't fire queries to find gitlab_schema of table](gitlab-org/gitlab@b21bf39529e5e6a4d2da6d58674c84bda1e6cc2c) ([merge request](gitlab-org/gitlab!120838))
- [Remove `default_pat_expiration` FF](gitlab-org/gitlab@562058077c8110706719c8c68e6abf734cfc3df1) ([merge request](gitlab-org/gitlab!121611))
- [Part 3: issues.issue_type column related scopes updated](gitlab-org/gitlab@71d90c8b8639e369137607e592548b2ffc50a743) ([merge request](gitlab-org/gitlab!121302))
- [Remove feature flag for hiding Monitor Metrics visibility setting](gitlab-org/gitlab@b21668ef837ec09ab2c4ec6f40dda74979573d62) ([merge request](gitlab-org/gitlab!120856))
- [Use .gl-rounded-top-base for card header](gitlab-org/gitlab@837157a24ef9f6016626f4580027e6eb56d29455) ([merge request](gitlab-org/gitlab!121881))
- [Remove legacy CI predefined variables](gitlab-org/gitlab@1d34fe194e9d3e46c72c51e7be601a0e15b04d12) ([merge request](gitlab-org/gitlab!121582))
- [Adds model_registry feature flag](gitlab-org/gitlab@e58b3cbda12a453b5b07ad3ca7026a0eaae0eff4) ([merge request](gitlab-org/gitlab!120096))
- [Prevent BitBucket Cloud Import from importing duplicated items](gitlab-org/gitlab@0f512e0db118d2baa6bb694d4eb736218dc1c49d) ([merge request](gitlab-org/gitlab!120490))
- [Remove GitHubImport deprecated workers](gitlab-org/gitlab@de1e97176f0eb8e61712b6474464c7218764f666) ([merge request](gitlab-org/gitlab!121383))
- [Remove unique index on organizations.name](gitlab-org/gitlab@414ba9236010e945097a4f7b96e1108c49107a3d) ([merge request](gitlab-org/gitlab!121668))
- [Update ResetSkippedJobsService to support multiple jobs](gitlab-org/gitlab@496141501a9208cbf58b351d5b7502c08b491120) ([merge request](gitlab-org/gitlab!121754))
- [Make API::Release::Links tests faster](gitlab-org/gitlab@c5d09172658efb6b6dfb1cb0709f004f6d7f3e8a) ([merge request](gitlab-org/gitlab!121731))
- [Use utility classes instead of custom CSS rules](gitlab-org/gitlab@1c307be35226014a029d2fea9dbb13db6ffce766) ([merge request](gitlab-org/gitlab!121727))
- [Update Epics API for Grape 1.7 compatibility](gitlab-org/gitlab@cb66be7abebeb67009587b3b3edc05036a27d8c2) ([merge request](gitlab-org/gitlab!121694)) **GitLab Enterprise Edition**
- [Use listbox in activity_filter](gitlab-org/gitlab@4276420df10f9582219b1318eb7afea4184d420f) ([merge request](gitlab-org/gitlab!120885)) **GitLab Enterprise Edition**
- [Add async indexes for VSA tables](gitlab-org/gitlab@eb96f86bc01b90957e4b1576a048e2cba99a7a84) ([merge request](gitlab-org/gitlab!121669))
- [Add store labels to all Rails.cache metrics](gitlab-org/gitlab@b9c365f6956a6a768949d93be2de3d348d9ac5e7) ([merge request](gitlab-org/gitlab!121477))
- [Fix async index creation for long tables](gitlab-org/gitlab@1f1bd0d91c7071dccd6a5b5b785a5cfaf676dade) ([merge request](gitlab-org/gitlab!121513))
- [Backfill resource link events](gitlab-org/gitlab@5c963222efd137bb780f073cc36031b68780fced) ([merge request](gitlab-org/gitlab!118605))
- [Remove the fix DORA frequency calculation FF](gitlab-org/gitlab@d68819a4db5f219b09e0644304ad9bef7258ac11) ([merge request](gitlab-org/gitlab!121253)) **GitLab Enterprise Edition**
- [Cleanup remove_scan_result_policy_transaction feature flag](gitlab-org/gitlab@1f5a415ce91eba6dd5d65b3b8fb619c5af655985) ([merge request](gitlab-org/gitlab!121386)) **GitLab Enterprise Edition**
- [Update Gitlab Shell version to 14.21.0](gitlab-org/gitlab@1e4b1af9e8e61ac308135916accc49638cfa53ef) ([merge request](gitlab-org/gitlab!121498))
- [Remove temp index on issues.issue_type for incidents](gitlab-org/gitlab@0c6f05379e175ac72caafa37b5777608fe164731) ([merge request](gitlab-org/gitlab!121466))
- [Fix cross-slot request counting methodology](gitlab-org/gitlab@7263503c5b9a8b74330c6f8f5904632e4be6c04f) ([merge request](gitlab-org/gitlab!121340))
- [Create temporary index for system_note_metadata](gitlab-org/gitlab@9e40dda50006b237ce325943911952ba43d7f4b0) ([merge request](gitlab-org/gitlab!119019))
- [Polish the trials form and reduce code duplication](gitlab-org/gitlab@1cc4fee75ab3a91c22e18d19a47179e75c76cc6a) ([merge request](gitlab-org/gitlab!120536)) **GitLab Enterprise Edition**
- [Remove invalid protected_environment_deploy_access_levels groups](gitlab-org/gitlab@f2e84e41343980a1f7144e396739b5747933eb88) ([merge request](gitlab-org/gitlab!121222))
- [Remove record_issue_and_mr_assignee_events FF](gitlab-org/gitlab@34631281e872701fc2545a766f7ae202bbb46596) ([merge request](gitlab-org/gitlab!121224))
- [Remove batched_migrations_parallel_execution flag](gitlab-org/gitlab@82c9e529e35f62b3213dfc3d84d5dfc89a5ddc4b) ([merge request](gitlab-org/gitlab!120808))
- [Remove remaining "wip" logic from spec](gitlab-org/gitlab@53cd5abc3b1d00ebf14904fa385b7ef967fc684d) ([merge request](gitlab-org/gitlab!120667))
- [Add empty structure for LLM Agents](gitlab-org/gitlab@c2805826afe7e5e8449217a68841d263e84406ee) ([merge request](gitlab-org/gitlab!121122)) **GitLab Enterprise Edition**
- [Add cluster_agent_id FK to environments](gitlab-org/gitlab@3a52fd517f0dacfbb1ad3293b91e6919d944b92b) ([merge request](gitlab-org/gitlab!120954))
- [Prepare index_issues_on_work_item_type_id index in Gitlab.com](gitlab-org/gitlab@264b214780ed8c1245ac2d96d057778e48ddc736) ([merge request](gitlab-org/gitlab!121092))
- [Use listbox in cluster_filter](gitlab-org/gitlab@d3f45d244ef03010082a651a0ac97feed754cf40) ([merge request](gitlab-org/gitlab!120304)) **GitLab Enterprise Edition**
- [Remove optional runner token encryption for groups and projects](gitlab-org/gitlab@bec351e4799646c553c25b2d6756eaecd94136be) ([merge request](gitlab-org/gitlab!120099))
- [Enable password_reset_any_verified_email by default](gitlab-org/gitlab@642b406efa447b28ca913607ad6a42dcbbba3279) ([merge request](gitlab-org/gitlab!120971))
- [Document pass_user_identities_to_ci_jwt usage](gitlab-org/gitlab@77fed479073e984589712cafad78f3d6912ddb56) by @joe-snyder ([merge request](gitlab-org/gitlab!118231))
- [Prepare FKs for converting notes.id to bigint](gitlab-org/gitlab@dfaad30daa3d3964371b4bca705202eda7ae7955) ([merge request](gitlab-org/gitlab!120816))
- [Remove use_traversal_ids_for_ancestor_scopes feature flag](gitlab-org/gitlab@f65d0b8212759de7686d4b02f8c45fea615c52a3) ([merge request](gitlab-org/gitlab!120559))
- [Migrate custom CSS to utility classes](gitlab-org/gitlab@a67999317bec111d523c763fc865665d4ded0aaf) ([merge request](gitlab-org/gitlab!120745)) **GitLab Enterprise Edition**
- [Remove the vsa_group_and_project_parity FF](gitlab-org/gitlab@d090818bdedb0e220928d8e456cf36c8bce81f42) ([merge request](gitlab-org/gitlab!120727)) **GitLab Enterprise Edition**
## 16.0.5 (2023-06-16)
### Fixed (1 change)

View File

@ -1 +1 @@
ffe58a872e23fb61c0804662d2090b5a17b0e551
ea7cb1c24ee7c867d19e2329fd115c9be73532cd

View File

@ -13,7 +13,7 @@ gem 'bundler-checksum', '~> 0.1.0', path: 'vendor/gems/bundler-checksum', requir
# NOTE: When incrementing the major or minor version here, also increment activerecord_version
# in vendor/gems/attr_encrypted/attr_encrypted.gemspec until we resolve
# https://gitlab.com/gitlab-org/gitlab/-/issues/375713
gem 'rails', '~> 6.1.7.2'
gem 'rails', '~> 7.0.4.3'
gem 'bootsnap', '~> 1.16.0', require: false
@ -363,7 +363,7 @@ gem 'snowplow-tracker', '~> 0.8.0'
# Metrics
gem 'webrick', '~> 1.8.1', require: false
gem 'prometheus-client-mmap', '~> 0.25', require: 'prometheus/client'
gem 'prometheus-client-mmap', '~> 0.26', require: 'prometheus/client'
gem 'warning', '~> 1.3.0'
@ -517,7 +517,7 @@ gem 'spamcheck', '~> 1.3.0'
gem 'gitaly', '~> 16.1.0-rc2'
# KAS GRPC protocol definitions
gem 'kas-grpc', '~> 0.1.0'
gem 'kas-grpc', '~> 0.2.0'
gem 'grpc', '~> 1.42.0'

View File

@ -2,18 +2,18 @@
{"name":"CFPropertyList","version":"3.0.5","platform":"ruby","checksum":"a78551cd4768d78ebca98488c27e33652ef818be64697a54676d34e6434674a4"},
{"name":"RedCloth","version":"4.3.2","platform":"ruby","checksum":"1ee7bc55c8dcec92cf7741a2132a9a6cd19e4b884fbc1b3aca23e1a4fcd92d55"},
{"name":"acme-client","version":"2.0.11","platform":"ruby","checksum":"edf6da9f3c5dbe3ab0c6738eb3b97978b7a60e3500445480d2a72fcc610089de"},
{"name":"actioncable","version":"6.1.7.2","platform":"ruby","checksum":"7af0fda230fba5a8c8d28afff02b6e56e7871269b5799f2bc1c4f5a4f29134f9"},
{"name":"actionmailbox","version":"6.1.7.2","platform":"ruby","checksum":"76bbf2b0561244dd6fe85c6c31d30edf574b0a976a6c492d48bbeb91b266ea2f"},
{"name":"actionmailer","version":"6.1.7.2","platform":"ruby","checksum":"444281dcbceb946cf26e42016601de389995c53bcec21597ae8ad0a2c26d4de6"},
{"name":"actionpack","version":"6.1.7.2","platform":"ruby","checksum":"ea471bc6dbfc793fc3632623807439f58424565f705f747aa6c85875b1365e30"},
{"name":"actiontext","version":"6.1.7.2","platform":"ruby","checksum":"d237909c98bfc529c8db2895f5e74add2f3cb8e4040e09fad964c46052e4a8cb"},
{"name":"actionview","version":"6.1.7.2","platform":"ruby","checksum":"ea03ef64da97b295ee498b95a1183ab738ec422a6e7deaf1dbd05502d17ce581"},
{"name":"activejob","version":"6.1.7.2","platform":"ruby","checksum":"bfa6eef35d855ddfa1686ea46f13e9db384a7d0cb04557ba51a274e2b9a49146"},
{"name":"activemodel","version":"6.1.7.2","platform":"ruby","checksum":"1217e806dc3c2b48ccf69cdf8a5ec8e6e2af56390faf102cb75e43278e3fc15a"},
{"name":"activerecord","version":"6.1.7.2","platform":"ruby","checksum":"07f2f05fdd97cdd6fc520a261cb3c921ce5071db7aa32e81e8922c0ad6a8c9cc"},
{"name":"actioncable","version":"7.0.4.3","platform":"ruby","checksum":"aa70062c2f2c55cc64fc6aa233223c37c7bc7f1cdbc1a5200cfa2ae4a18934f8"},
{"name":"actionmailbox","version":"7.0.4.3","platform":"ruby","checksum":"bca54fd1779f9851a6391d4ecc0bc7cb1c3b5249ba93b38755f5b34856061438"},
{"name":"actionmailer","version":"7.0.4.3","platform":"ruby","checksum":"7e4c382c589997a25253c61d1e5978cb81dbf1978ad35a557580167f7a504f84"},
{"name":"actionpack","version":"7.0.4.3","platform":"ruby","checksum":"adf30cb429332085b25509ec17541d9108468cb3246eae8f4e0bb0e9268660b1"},
{"name":"actiontext","version":"7.0.4.3","platform":"ruby","checksum":"8f21e30c0eec9ce9c9277388efd836b53a3955e4756efd226e4b8c644960065f"},
{"name":"actionview","version":"7.0.4.3","platform":"ruby","checksum":"df24eeab4db187c791218039e1c3ccbf84e765b7887fdb08628bb98ff51120c1"},
{"name":"activejob","version":"7.0.4.3","platform":"ruby","checksum":"7c74f0fb4e7a8abfbc91a9375c4da4d988c08918c78d5e2d77b44f8aa4e3aa23"},
{"name":"activemodel","version":"7.0.4.3","platform":"ruby","checksum":"3b511cfc2f37fca76eb25ba191d302f6dd5afd12ef80fb897b1f99d55ed7b07a"},
{"name":"activerecord","version":"7.0.4.3","platform":"ruby","checksum":"bb91f8c1ce5de7008d6190a50d899e9117b0b638df44b298246be92f224a8b07"},
{"name":"activerecord-explain-analyze","version":"0.1.0","platform":"ruby","checksum":"5debb11fe23f35b91953a80677d80ba9284ee737fd9d148c1d7603ce45217f7b"},
{"name":"activestorage","version":"6.1.7.2","platform":"ruby","checksum":"c3a27b42e7b40a1733b26ca86d83836575ed1437896a581e63d37d1500db6c30"},
{"name":"activesupport","version":"6.1.7.2","platform":"ruby","checksum":"22eb2a7bb30ff7495de3920955839e62ca1de347185ffb15f70a0773a6c0f292"},
{"name":"activestorage","version":"7.0.4.3","platform":"ruby","checksum":"9930c676ffc4d193a44efe696346e7b3eb344ff4d898878d9ed7ccde6757f8ca"},
{"name":"activesupport","version":"7.0.4.3","platform":"ruby","checksum":"571ed0fac8510f1fc8a1d66aa070d07ea269913bf9ef50960a8044536358a096"},
{"name":"acts-as-taggable-on","version":"9.0.0","platform":"ruby","checksum":"5a409be0eae125b7b02c1a7316264b40d4a583584a13d4ea4a6d82acdb351b86"},
{"name":"addressable","version":"2.8.1","platform":"ruby","checksum":"bc724a176ef02118c8a3ed6b5c04c39cf59209607ffcce77b91d0261dbadedfa"},
{"name":"aes_key_wrap","version":"1.1.0","platform":"ruby","checksum":"b935f4756b37375895db45669e79dfcdc0f7901e12d4e08974d5540c8e0776a5"},
@ -50,8 +50,8 @@
{"name":"backport","version":"1.2.0","platform":"ruby","checksum":"912c7dfdd9ee4625d013ddfccb6205c3f92da69a8990f65c440e40f5b2fc7f75"},
{"name":"base32","version":"0.3.2","platform":"ruby","checksum":"532e9b19c5dd1fce281df67fc93a803ebd5d26426a93f6dda6612769bc46fe2c"},
{"name":"batch-loader","version":"2.0.1","platform":"ruby","checksum":"93f711df78d316ee0440a7a45daba4f5418d0ee2b5f58f60c9ea038424e7a89d"},
{"name":"bcrypt","version":"3.1.16","platform":"java","checksum":"2925a1546fa8e85bdb1b10f1fc95c4e1ea15992ada16adea4af82b0978ed662c"},
{"name":"bcrypt","version":"3.1.16","platform":"ruby","checksum":"0b8bf031ba81aa76c0f10c5a8dac779b6035d84b09af1dbb2b1a32a7e360210b"},
{"name":"bcrypt","version":"3.1.18","platform":"java","checksum":"5464e06c00cb6bd3ff982feef4cb7f1efc9b302753cbaf12e73512d8f401f2d2"},
{"name":"bcrypt","version":"3.1.18","platform":"ruby","checksum":"154de0b0b089e56d5980c5037ad85fc9554cfbf4996538673c1ddbc9b61b1f11"},
{"name":"benchmark","version":"0.2.0","platform":"ruby","checksum":"5f7087b794613abdd3ac9c13f4351f65b164bcb15ced2ad29508e365f9b28c77"},
{"name":"benchmark-ips","version":"2.11.0","platform":"ruby","checksum":"1eaa89841073895af0ee7ff72eb069e5c7dda01c6d6a8b3e79e363bace596dec"},
{"name":"benchmark-malloc","version":"0.2.0","platform":"ruby","checksum":"37c68f0435261634026f584d79956a35325a3027e3e6b4cc8d7575aa10537e6b"},
@ -322,7 +322,7 @@
{"name":"kaminari-actionview","version":"1.2.2","platform":"ruby","checksum":"1330f6fc8b59a4a4ef6a549ff8a224797289ebf7a3a503e8c1652535287cc909"},
{"name":"kaminari-activerecord","version":"1.2.2","platform":"ruby","checksum":"0dd3a67bab356a356f36b3b7236bcb81cef313095365befe8e98057dd2472430"},
{"name":"kaminari-core","version":"1.2.2","platform":"ruby","checksum":"3bd26fec7370645af40ca73b9426a448d09b8a8ba7afa9ba3c3e0d39cdbb83ff"},
{"name":"kas-grpc","version":"0.1.0","platform":"ruby","checksum":"b219c79b7bddf1f3ac6a78119e25b0b52c0c29608b3a80c75929c47f32a50dda"},
{"name":"kas-grpc","version":"0.2.0","platform":"ruby","checksum":"b9a3f787ec9198819034ec358d73b9a3f374d4dd001d673fdaa650eb5ec99a1e"},
{"name":"knapsack","version":"1.21.1","platform":"ruby","checksum":"82f70422adebcacec1b514f6ebff65265fc85d836e3c320718a160d8ac41cf14"},
{"name":"kramdown","version":"2.3.2","platform":"ruby","checksum":"cb4530c2e9d16481591df2c9336723683c354e5416a5dd3e447fa48215a6a71c"},
{"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"},
@ -452,11 +452,11 @@
{"name":"premailer","version":"1.16.0","platform":"ruby","checksum":"03e4402c448e6bae13fb5f6301a8bde4f3508e1bff90ae7c0972c7be94694786"},
{"name":"premailer-rails","version":"1.10.3","platform":"ruby","checksum":"7cdcb97027866f7a81c490c6d15ada7f39666b5f6375f0821b7e97e0483b112f"},
{"name":"proc_to_ast","version":"0.1.0","platform":"ruby","checksum":"92a73fa66e2250a83f8589f818b0751bcf227c68f85916202df7af85082f8691"},
{"name":"prometheus-client-mmap","version":"0.25.0","platform":"aarch64-linux","checksum":"0548954d183b0749ecd0983ea5e046a22137ae8accd5c86c64bc6d0ec57ef5c6"},
{"name":"prometheus-client-mmap","version":"0.25.0","platform":"arm64-darwin","checksum":"3d5e5665d9de0488cf09663c5a2583470ab726cead90011b1b11571057507157"},
{"name":"prometheus-client-mmap","version":"0.25.0","platform":"ruby","checksum":"d75dc28326633d780dc43f93be610253fab654ab35f876138cd35080b54fa092"},
{"name":"prometheus-client-mmap","version":"0.25.0","platform":"x86_64-darwin","checksum":"c33859d23a5f925a76a79d63b50d94e5e181b4ed03b0f8836d23208aec655446"},
{"name":"prometheus-client-mmap","version":"0.25.0","platform":"x86_64-linux","checksum":"2ea418c3ac327d28506d01898d9fa9cae967317244c39ebdb34680ac6cb0c1e9"},
{"name":"prometheus-client-mmap","version":"0.26.0","platform":"aarch64-linux","checksum":"07f5bc884bd79f47668f92ce425a722a15db107c4389b7390ed67cb3897d39f3"},
{"name":"prometheus-client-mmap","version":"0.26.0","platform":"arm64-darwin","checksum":"b830b992bac97df6584e22ef52a5c41adcd94d72f586910d0b84192fb84fde1a"},
{"name":"prometheus-client-mmap","version":"0.26.0","platform":"ruby","checksum":"84dcb1c34cf9fbe638d686a431e77e4cec0ddf78b496231c4f1a27e84de1ad78"},
{"name":"prometheus-client-mmap","version":"0.26.0","platform":"x86_64-darwin","checksum":"41028cd826378dfc87beeaa674b636b5989dcdb30ceb1c1a7a1b712535558c12"},
{"name":"prometheus-client-mmap","version":"0.26.0","platform":"x86_64-linux","checksum":"3f2e42863d5f7a8bbd323f7bd7df0ce2ceab6df91e280703c735cfe5680d1eb2"},
{"name":"pry","version":"0.14.2","platform":"java","checksum":"fd780670977ba04ff7ee32dabd4d02fe4bf02e977afe8809832d5dca1412862e"},
{"name":"pry","version":"0.14.2","platform":"ruby","checksum":"c4fe54efedaca1d351280b45b8849af363184696fcac1c72e0415f9bdac4334d"},
{"name":"pry-byebug","version":"3.10.1","platform":"ruby","checksum":"c8f975c32255bfdb29e151f5532130be64ff3d0042dc858d0907e849125581f8"},
@ -476,14 +476,14 @@
{"name":"rack-oauth2","version":"1.21.3","platform":"ruby","checksum":"4e72a79dd6a866692e84422a552b27c38a5a1918ded06661e04910f2bbe676ba"},
{"name":"rack-protection","version":"2.2.2","platform":"ruby","checksum":"fd41414dbabbec274af0bdb1f72a48504449de4d979782c9af38cbb5dfff3299"},
{"name":"rack-proxy","version":"0.7.6","platform":"ruby","checksum":"8704c5009bb60eb16dacf4bcc5e067a8484e668321e8443534bb58ded320c2a8"},
{"name":"rack-test","version":"2.0.2","platform":"ruby","checksum":"adadd0e957f63a34199a9fdf905a920a0b0a50795735095b4ac4bd3c13385466"},
{"name":"rack-test","version":"2.1.0","platform":"ruby","checksum":"0c61fc61904049d691922ea4bb99e28004ed3f43aa5cfd495024cc345f125dfb"},
{"name":"rack-timeout","version":"0.6.3","platform":"ruby","checksum":"1754892eacc124d405e7f1145731ec9b7421ebd1bee5d51ddc18b72c204d0ab3"},
{"name":"rails","version":"6.1.7.2","platform":"ruby","checksum":"d50796f4106fe1793e048e80e11bc9aee4af1674c94a24ebe7f7b411217befac"},
{"name":"rails","version":"7.0.4.3","platform":"ruby","checksum":"5b675b237abb7328020002d06cc6c9003a09cde4b4774f989bfa440c6e93e2ed"},
{"name":"rails-controller-testing","version":"1.0.5","platform":"ruby","checksum":"741448db59366073e86fc965ba403f881c636b79a2c39a48d0486f2607182e94"},
{"name":"rails-dom-testing","version":"2.0.3","platform":"ruby","checksum":"b140c4f39f6e609c8113137b9a60dfc2ecb89864e496f87f23a68b3b8f12d8d1"},
{"name":"rails-html-sanitizer","version":"1.5.0","platform":"ruby","checksum":"bf326075e8a968cd882c30b15a4c9100059be3af2356093dc68324ec3bd9ea79"},
{"name":"rails-i18n","version":"7.0.3","platform":"ruby","checksum":"e3158e98c5332d129fd5131f171ac575eb30dbb8919b21595382b08850cf2bd3"},
{"name":"railties","version":"6.1.7.2","platform":"ruby","checksum":"5390d8aade88fb7452de6798c2385b21cff74219e49989b6b1b484e387b3a356"},
{"name":"railties","version":"7.0.4.3","platform":"ruby","checksum":"98cb3dd00bedf8857810c806933cf28ff0f3a94304f2be25b4ae4ea0c38ad770"},
{"name":"rainbow","version":"3.1.1","platform":"ruby","checksum":"039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a"},
{"name":"rake","version":"13.0.6","platform":"ruby","checksum":"5ce4bf5037b4196c24ac62834d8db1ce175470391026bd9e557d669beeb19097"},
{"name":"rb-fsevent","version":"0.11.2","platform":"ruby","checksum":"43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe"},
@ -507,7 +507,7 @@
{"name":"regexp_property_values","version":"1.0.0","platform":"ruby","checksum":"162499dc0bba1e66d334273a059f207a61981cc8cc69d2ca743594e7886d080f"},
{"name":"representable","version":"3.2.0","platform":"ruby","checksum":"cc29bf7eebc31653586849371a43ffe36c60b54b0a6365b5f7d95ec34d1ebace"},
{"name":"request_store","version":"1.5.1","platform":"ruby","checksum":"07a204d161590789f2b1d27f9f0eadcdecd6d868cb2f03240250e1bc747df78e"},
{"name":"responders","version":"3.0.0","platform":"ruby","checksum":"a267b281582802d04cf0968dbc7d60df0d48384915934b3bf9018f811dc3f7dc"},
{"name":"responders","version":"3.0.1","platform":"ruby","checksum":"613fe28e498987f4feaa3230aa6313ca4bd5f0563a3da83511b0dd6cd8f47292"},
{"name":"rest-client","version":"2.1.0","platform":"ruby","checksum":"35a6400bdb14fae28596618e312776c158f7ebbb0ccad752ff4fa142bf2747e3"},
{"name":"rest-client","version":"2.1.0","platform":"x64-mingw32","checksum":"7cd156496196d90b7d8f5b8de521ef67d8a9e03f06862da80b9b5912ab05a470"},
{"name":"rest-client","version":"2.1.0","platform":"x86-mingw32","checksum":"fb543caf36cb555c05c6186aeb1273c6a1b059896e4cfd394e7269b20c40ca01"},
@ -694,5 +694,5 @@
{"name":"xpath","version":"3.2.0","platform":"ruby","checksum":"6dfda79d91bb3b949b947ecc5919f042ef2f399b904013eb3ef6d20dd3a4082e"},
{"name":"yajl-ruby","version":"1.4.3","platform":"ruby","checksum":"8c974d9c11ae07b0a3b6d26efea8407269b02e4138118fbe3ef0d2ec9724d1d2"},
{"name":"yard","version":"0.9.26","platform":"ruby","checksum":"30594aa05cf737aa725c73444c7be3d54a443d0e258e1503da4eb1a0822cf963"},
{"name":"zeitwerk","version":"2.6.6","platform":"ruby","checksum":"bb397b50c31127f8dab372fa9b21da1e7c453c5b57da172ed858136c6283f826"}
{"name":"zeitwerk","version":"2.6.7","platform":"ruby","checksum":"61767a6158480df290d0d2a3fd860d8ba3a28ba113837668ee94b657716a1409"}
]

View File

@ -105,68 +105,74 @@ GEM
acme-client (2.0.11)
faraday (>= 1.0, < 3.0.0)
faraday-retry (~> 1.0)
actioncable (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
actioncable (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
actionmailbox (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
mail (>= 2.7.1)
actionmailer (6.1.7.2)
actionpack (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activesupport (= 6.1.7.2)
net-imap
net-pop
net-smtp
actionmailer (7.0.4.3)
actionpack (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activesupport (= 7.0.4.3)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (6.1.7.2)
actionview (= 6.1.7.2)
activesupport (= 6.1.7.2)
rack (~> 2.0, >= 2.0.9)
actionpack (7.0.4.3)
actionview (= 7.0.4.3)
activesupport (= 7.0.4.3)
rack (~> 2.0, >= 2.2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.1.7.2)
actionpack (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
actiontext (7.0.4.3)
actionpack (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (6.1.7.2)
activesupport (= 6.1.7.2)
actionview (7.0.4.3)
activesupport (= 7.0.4.3)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (6.1.7.2)
activesupport (= 6.1.7.2)
activejob (7.0.4.3)
activesupport (= 7.0.4.3)
globalid (>= 0.3.6)
activemodel (6.1.7.2)
activesupport (= 6.1.7.2)
activerecord (6.1.7.2)
activemodel (= 6.1.7.2)
activesupport (= 6.1.7.2)
activemodel (7.0.4.3)
activesupport (= 7.0.4.3)
activerecord (7.0.4.3)
activemodel (= 7.0.4.3)
activesupport (= 7.0.4.3)
activerecord-explain-analyze (0.1.0)
activerecord (>= 4)
pg
activestorage (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activesupport (= 6.1.7.2)
activestorage (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activesupport (= 7.0.4.3)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7.2)
activesupport (7.0.4.3)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
acts-as-taggable-on (9.0.0)
activerecord (>= 6.0, < 7.1)
addressable (2.8.1)
@ -246,7 +252,7 @@ GEM
backport (1.2.0)
base32 (0.3.2)
batch-loader (2.0.1)
bcrypt (3.1.16)
bcrypt (3.1.18)
benchmark (0.2.0)
benchmark-ips (2.11.0)
benchmark-malloc (0.2.0)
@ -872,7 +878,7 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
kas-grpc (0.1.0)
kas-grpc (0.2.0)
grpc (~> 1.0)
knapsack (1.21.1)
rake
@ -1160,7 +1166,7 @@ GEM
coderay
parser
unparser
prometheus-client-mmap (0.25.0)
prometheus-client-mmap (0.26.0)
rb_sys (~> 0.9)
pry (0.14.2)
coderay (~> 1.1)
@ -1197,24 +1203,23 @@ GEM
rack
rack-proxy (0.7.6)
rack
rack-test (2.0.2)
rack-test (2.1.0)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (6.1.7.2)
actioncable (= 6.1.7.2)
actionmailbox (= 6.1.7.2)
actionmailer (= 6.1.7.2)
actionpack (= 6.1.7.2)
actiontext (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activemodel (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
rails (7.0.4.3)
actioncable (= 7.0.4.3)
actionmailbox (= 7.0.4.3)
actionmailer (= 7.0.4.3)
actionpack (= 7.0.4.3)
actiontext (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activemodel (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
bundler (>= 1.15.0)
railties (= 6.1.7.2)
sprockets-rails (>= 2.0.0)
railties (= 7.0.4.3)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@ -1227,12 +1232,13 @@ GEM
rails-i18n (7.0.3)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
railties (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
rb-fsevent (0.11.2)
@ -1271,7 +1277,7 @@ GEM
uber (< 0.2.0)
request_store (1.5.1)
rack (>= 1.4)
responders (3.0.0)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
rest-client (2.1.0)
@ -1660,7 +1666,7 @@ GEM
nokogiri (~> 1.8)
yajl-ruby (1.4.3)
yard (0.9.26)
zeitwerk (2.6.6)
zeitwerk (2.6.7)
PLATFORMS
ruby
@ -1818,7 +1824,7 @@ DEPENDENCIES
json_schemer (~> 0.2.18)
jwt (~> 2.5)
kaminari (~> 1.2.2)
kas-grpc (~> 0.1.0)
kas-grpc (~> 0.2.0)
knapsack (~> 1.21.1)
kramdown (~> 2.3.1)
kubeclient (~> 4.11.0)
@ -1881,7 +1887,7 @@ DEPENDENCIES
pg_query (~> 4.2.1)
png_quantizator (~> 0.2.1)
premailer-rails (~> 1.10.3)
prometheus-client-mmap (~> 0.25)
prometheus-client-mmap (~> 0.26)
pry-byebug
pry-rails (~> 0.3.9)
pry-shell (~> 0.6.1)
@ -1892,7 +1898,7 @@ DEPENDENCIES
rack-oauth2 (~> 1.21.3)
rack-proxy (~> 0.7.6)
rack-timeout (~> 0.6.3)
rails (~> 6.1.7.2)
rails (~> 7.0.4.3)
rails-controller-testing
rails-i18n (~> 7.0)
rainbow (~> 3.0)

View File

@ -11,8 +11,6 @@ require File.expand_path('config/application', __dir__)
relative_url_conf = File.expand_path('config/initializers/relative_url', __dir__)
require relative_url_conf if File.exist?("#{relative_url_conf}.rb")
require File.expand_path('config/initializers/01_active_record_database_tasks_configuration_flag.rb', __dir__)
Gitlab::Application.load_tasks
Knapsack.load_tasks if defined?(Knapsack)

View File

@ -1,5 +1,5 @@
<script>
import scheduleSvg from '@gitlab/svgs/dist/illustrations/schedule-md.svg?raw';
import SCHEDULE_MD_SVG_URL from '@gitlab/svgs/dist/illustrations/schedule-md.svg?url';
import { GlEmptyState, GlLink, GlSprintf } from '@gitlab/ui';
import { helpPagePath } from '~/helpers/help_page_helper';
import { s__ } from '~/locale';
@ -20,15 +20,13 @@ export default {
],
createNew: s__('PipelineSchedules|Create a new pipeline schedule'),
},
SCHEDULE_MD_SVG_URL,
components: {
GlEmptyState,
GlLink,
GlSprintf,
},
computed: {
scheduleSvgPath() {
return `data:image/svg+xml;utf8,${encodeURIComponent(scheduleSvg)}`;
},
schedulesHelpPath() {
return helpPagePath('ci/pipelines/schedules');
},
@ -37,7 +35,7 @@ export default {
</script>
<template>
<gl-empty-state
:svg-path="scheduleSvgPath"
:svg-path="$options.SCHEDULE_MD_SVG_URL"
:primary-button-text="$options.i18n.createNew"
primary-button-link="#"
>

View File

@ -7,7 +7,7 @@ export const RENDER_ERROR_MSG = __(
'The map can not be displayed because there was an error loading the GeoJSON file.',
);
export const OPEN_STREET_TILE_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
export const OPEN_STREET_TILE_URL = 'https://tile.openstreetmap.org/{z}/{x}/{y}.png';
export const ICON_CONFIG = { iconUrl, iconRetinaUrl, shadowUrl };
export const MAP_ATTRIBUTION = __('Map data from');
export const OPEN_STREET_COPYRIGHT_LINK =

View File

@ -0,0 +1,89 @@
import Markdown from '~/vue_shared/components/markdown/non_gfm_markdown.vue';
export default {
title: 'vue_shared/non_gfm_markdown',
component: Markdown,
parameters: {
docs: {
description: {
component: `
This component is designed to render the markdown, which is **not** the GitLab Flavored Markdown.
It renders the code snippets the same way GitLab Flavored Markdown code snippets are rendered
respecting the user's preferred color scheme and featuring a copy-code button.
This component can be used to render client-side markdown that doesn't have GitLab-specific markdown elements such as issue links.
`,
},
},
},
};
const Template = (args, { argTypes }) => ({
components: { Markdown },
props: Object.keys(argTypes),
template: '<markdown v-bind="$props" />',
});
const textWithCodeblock = `
#### Here is the text with the code block.
\`\`\`javascript
function sayHi(name) {
console.log('Hi ' + name || 'Mark');
}
\`\`\`
It *can* have **formatting** as well
`;
export const OneCodeBlock = Template.bind({});
OneCodeBlock.args = { markdown: textWithCodeblock };
const textWithMultipleCodeBlocks = `
#### Here is the text with the code block.
\`\`\`javascript
function sayHi(name) {
console.log('Hi ' + name || 'Mark');
}
\`\`\`
Note that the copy buttons are appearing independently
\`\`\`yaml
stages:
- build
- test
- deploy
\`\`\`
`;
export const MultipleCodeBlocks = Template.bind({});
MultipleCodeBlocks.args = { markdown: textWithMultipleCodeBlocks };
const textUndefinedLanguage = `
#### Here is the code block with no language provided.
\`\`\`
function sayHi(name) {
console.log('Hi ' + name || 'Mark');
}
\`\`\`
`;
export const UndefinedLanguage = Template.bind({});
UndefinedLanguage.args = { markdown: textUndefinedLanguage };
const textCodeOneLiner = `
#### Here is the text with the one-liner code block.
Note that copy button rendering is ok.
\`\`\`javascript
const foo = 'bar';
\`\`\`
`;
export const CodeOneLiner = Template.bind({});
CodeOneLiner.args = { markdown: textCodeOneLiner };

View File

@ -0,0 +1,120 @@
<script>
/*
This component is designed to render the markdown, which is **not** the GitLab Flavored Markdown.
It renders the code snippets the same way GitLab Flavored Markdown code snippets are rendered
respecting the user's preferred color scheme and featuring a copy-code button.
This component can be used to render client-side markdown that doesn't have GitLab-specific markdown elements such as issue links.
*/
import { marked } from 'marked';
import CodeBlockHighlighted from '~/vue_shared/components/code_block_highlighted.vue';
import SafeHtml from '~/vue_shared/directives/safe_html';
import { sanitize } from '~/lib/dompurify';
import { markdownConfig } from '~/lib/utils/text_utility';
import { __ } from '~/locale';
import ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';
export default {
components: {
CodeBlockHighlighted,
ModalCopyButton,
},
directives: {
SafeHtml,
},
props: {
markdown: {
type: String,
required: true,
},
},
data() {
return {
hoverMap: {},
};
},
computed: {
markdownBlocks() {
// we use lexer https://marked.js.org/using_pro#lexer
// to get an array of tokens that marked npm module uses.
// We will use these tokens to override rendering of some of them
// with our vue components
const tokens = marked.lexer(this.markdown);
// since we only want to differentiate between code and non-code blocks
// we want non-code blocks merged together so that the markdown parser could render
// them according to the markdown rules.
// This way we introduce minimum extra wrapper mark-up
const flattenedTokens = [];
for (const token of tokens) {
const lastFlattenedToken = flattenedTokens[flattenedTokens.length - 1];
if (token.type === 'code') {
flattenedTokens.push(token);
} else if (lastFlattenedToken?.type === 'markdown') {
lastFlattenedToken.raw += token.raw;
} else {
flattenedTokens.push({ type: 'markdown', raw: token.raw });
}
}
return flattenedTokens;
},
},
methods: {
getSafeHtml(markdown) {
return sanitize(marked.parse(markdown), markdownConfig);
},
setHoverOn(key) {
this.hoverMap = { ...this.hoverMap, [key]: true };
},
setHoverOff(key) {
this.hoverMap = { ...this.hoverMap, [key]: false };
},
isLastElement(index) {
return index === this.markdownBlocks.length - 1;
},
},
safeHtmlConfig: {
ADD_TAGS: ['use', 'gl-emoji', 'copy-code'],
},
i18n: {
copyCodeTitle: __('Copy code'),
},
fallbackLanguage: 'text',
};
</script>
<template>
<div>
<template v-for="(block, index) in markdownBlocks">
<div
v-if="block.type === 'code'"
:key="`code-${index}`"
:class="{ 'gl-relative': true, 'gl-mb-4': !isLastElement(index) }"
data-testid="code-block-wrapper"
@mouseenter="setHoverOn(`code-${index}`)"
@mouseleave="setHoverOff(`code-${index}`)"
>
<modal-copy-button
v-if="hoverMap[`code-${index}`]"
:title="$options.i18n.copyCodeTitle"
:text="block.text"
class="gl-absolute gl-top-3 gl-right-3 gl-z-index-1 gl-transition-duration-medium"
/>
<code-block-highlighted
class="gl-border gl-rounded-0! gl-p-4 gl-mb-0 gl-overflow-y-auto"
:language="block.lang || $options.fallbackLanguage"
:code="block.text"
/>
</div>
<div
v-else
:key="`text-${index}`"
v-safe-html:[$options.safeHtmlConfig]="getSafeHtml(block.raw)"
:class="{ 'non-gfm-markdown-block': true, 'gl-mb-4': !isLastElement(index) }"
data-testid="non-code-markdown"
></div>
</template>
</div>
</template>

View File

@ -82,7 +82,7 @@ class Import::BaseController < ApplicationController
# rubocop: disable CodeReuse/ActiveRecord
def find_already_added_projects(import_type)
current_user.created_projects.where(import_type: import_type).with_import_state
current_user.created_projects.inc_routes.where(import_type: import_type).with_import_state
end
# rubocop: enable CodeReuse/ActiveRecord

View File

@ -3,7 +3,7 @@
module CalendarHelper
def calendar_url_options
{ format: :ics,
feed_token: current_user.try(:feed_token),
feed_token: generate_feed_token(:ics),
due_date: Issue::DueNextMonthAndPreviousTwoWeeks.name,
sort: 'closest_future_date' }
end

View File

@ -0,0 +1,12 @@
# frozen_string_literal: true
module FeedTokenHelper
def generate_feed_token(type)
feed_token = current_user&.feed_token
return unless feed_token
final_path = "#{current_request.path}.#{type}"
digest = OpenSSL::HMAC.hexdigest("SHA256", feed_token, final_path)
"#{User::FEED_TOKEN_PREFIX}#{digest}-#{current_user.id}"
end
end

View File

@ -2,6 +2,6 @@
module RssHelper
def rss_url_options
{ format: :atom, feed_token: current_user.try(:feed_token) }
{ format: :atom, feed_token: generate_feed_token(:atom) }
end
end

View File

@ -15,6 +15,9 @@ module Abuse
validates :score, presence: true
validates :source, presence: true
scope :order_created_at_asc, -> { order(created_at: :asc) }
scope :order_created_at_desc, -> { order(created_at: :desc) }
before_create :assign_correlation_id
after_commit :remove_old_scores
@ -25,12 +28,13 @@ module Abuse
end
def remove_old_scores
count = user.trust_scores_for_source(source).count
user_scores = Abuse::UserTrustScore.new(user)
count = user_scores.trust_scores_for_source(source).count
return unless count > MAX_EVENTS
TrustScore.delete(
user.trust_scores_for_source(source)
.order(created_at: :asc)
user_scores.trust_scores_for_source(source)
.order_created_at_asc
.limit(count - MAX_EVENTS)
)
end

View File

@ -0,0 +1,39 @@
# frozen_string_literal: true
module Abuse
class UserTrustScore
def initialize(user)
@user = user
end
def spammer?
spam_score > Abuse::TrustScore::SPAMCHECK_HAM_THRESHOLD
end
def spam_score
user_scores.spamcheck.average(:score) || 0.0
end
def telesign_score
user_scores.telesign.order_created_at_desc.first&.score || 0.0
end
def arkose_global_score
user_scores.arkose_global_score.order_created_at_desc.first&.score || 0.0
end
def arkose_custom_score
user_scores.arkose_custom_score.order_created_at_desc.first&.score || 0.0
end
def trust_scores_for_source(source)
user_scores.where(source: source)
end
private
def user_scores
Abuse::TrustScore.where(user_id: @user.id)
end
end
end

View File

@ -792,6 +792,14 @@ class Note < ApplicationRecord
true
end
# Use attributes.keys instead of attribute_names to filter out the fields that are skipped during export:
#
# - note_html
# - cached_markdown_version
def attribute_names_for_serialization
attributes.keys
end
private
def trigger_note_subscription?

View File

@ -2279,30 +2279,6 @@ class User < ApplicationRecord
namespace_commit_emails.find_by(namespace: project.root_namespace)
end
def spammer?
spam_score > Abuse::TrustScore::SPAMCHECK_HAM_THRESHOLD
end
def spam_score
abuse_trust_scores.spamcheck.average(:score) || 0.0
end
def telesign_score
abuse_trust_scores.telesign.order(created_at: :desc).first&.score || 0.0
end
def arkose_global_score
abuse_trust_scores.arkose_global_score.order(created_at: :desc).first&.score || 0.0
end
def arkose_custom_score
abuse_trust_scores.arkose_custom_score.order(created_at: :desc).first&.score || 0.0
end
def trust_scores_for_source(source)
abuse_trust_scores.where(source: source)
end
def abuse_metadata
{
account_age: account_age_in_days,
@ -2355,7 +2331,8 @@ class User < ApplicationRecord
private
def block_or_ban
if spammer? && account_age_in_days < 7
user_scores = Abuse::UserTrustScore.new(self)
if user_scores.spammer? && account_age_in_days < 7
ban_and_report
else
block

View File

@ -30,7 +30,7 @@ module Packages
attr_reader :package_name, :project
def metadata_content
metadata.payload.to_json
::API::Entities::NpmPackage.represent(metadata.payload).to_json
end
strong_memoize_attr :metadata_content

View File

@ -546,15 +546,15 @@ module Gitlab
app.config.assets.precompile << LOOSE_APP_ASSETS
end
# This empty initializer forces the :let_zeitwerk_take_over initializer to run before we load
# This empty initializer forces the :setup_main_autoloader initializer to run before we load
# initializers in config/initializers. This is done because autoloading before Zeitwerk takes
# over is deprecated but our initializers do a lot of autoloading.
# See https://gitlab.com/gitlab-org/gitlab/issues/197346 for more details
initializer :move_initializers, before: :load_config_initializers, after: :let_zeitwerk_take_over do
initializer :move_initializers, before: :load_config_initializers, after: :setup_main_autoloader do
end
# We need this for initializers that need to be run before Zeitwerk is loaded
initializer :before_zeitwerk, before: :let_zeitwerk_take_over, after: :prepend_helpers_path do
initializer :before_zeitwerk, before: :setup_main_autoloader, after: :prepend_helpers_path do
Dir[Rails.root.join('config/initializers_before_autoloader/*.rb')].sort.each do |initializer|
load_config_initializer(initializer)
end
@ -627,7 +627,7 @@ module Gitlab
# [0]: https://github.com/rails/rails/commit/94d81c3c39e3ddc441c3af3f874e53b197cf3f54
# [1]: https://salsa.debian.org/ruby-team/rails/-/commit/5663e598b41dc4e2058db22e1ee0d678e5c483ba
#
ActiveRecord::Base.yaml_column_permitted_classes = config.active_record.yaml_column_permitted_classes
ActiveRecord.yaml_column_permitted_classes = config.active_record.yaml_column_permitted_classes
# on_master_start yields immediately in unclustered environments and runs
# when the primary process is done initializing otherwise.

View File

@ -1,16 +0,0 @@
# frozen_string_literal: true
# Backported from Rails 7.0
# Initial support for has_many :through was implemented in https://github.com/rails/rails/pull/41937
# Support for has_one :through was implemented in https://github.com/rails/rails/pull/42079
raise 'DisableJoins patch is only to be used with versions of Rails < 7.0' unless Rails::VERSION::MAJOR < 7
ActiveRecord::Associations::Association.prepend(GemExtensions::ActiveRecord::Association)
# Temporarily allow :disable_joins to accept a lambda argument, to control rollout with feature flags
ActiveRecord::Associations::Association.prepend(GemExtensions::ActiveRecord::ConfigurableDisableJoins)
ActiveRecord::Associations::Builder::HasOne.prepend(GemExtensions::ActiveRecord::Associations::Builder::HasOne)
ActiveRecord::Associations::Builder::HasMany.prepend(GemExtensions::ActiveRecord::Associations::Builder::HasMany)
ActiveRecord::Associations::HasOneThroughAssociation.prepend(GemExtensions::ActiveRecord::Associations::HasOneThroughAssociation)
ActiveRecord::Associations::HasManyThroughAssociation.prepend(GemExtensions::ActiveRecord::Associations::HasManyThroughAssociation)
ActiveRecord::Associations::Preloader::ThroughAssociation.prepend(GemExtensions::ActiveRecord::Associations::Preloader::ThroughAssociation)
ActiveRecord::Base.extend(GemExtensions::ActiveRecord::DelegateCache)

View File

@ -1,37 +0,0 @@
# frozen_string_literal: true
if Rails::VERSION::MAJOR >= 7
raise "Remove `#{__FILE__}`. This is backport of `database_tasks:` Rails 7.x feature."
end
# This backports `database_tasks:` feature to skip running migrations for some databases
# PR: https://github.com/rails/rails/pull/42794/files
module DatabaseTasks
module ActiveRecordDatabaseConfigurations
def configs_for(env_name: nil, name: nil, include_replicas: false)
configs = super
unless include_replicas
if name
configs = nil unless configs&.database_tasks?
else
configs = configs.select do |db_config|
db_config.database_tasks?
end
end
end
configs
end
end
module ActiveRecordDatabaseConfigurationsHashConfig
def database_tasks? # :nodoc:
!replica? && !!configuration_hash.fetch(:database_tasks, true)
end
end
end
ActiveRecord::DatabaseConfigurations.prepend(DatabaseTasks::ActiveRecordDatabaseConfigurations)
ActiveRecord::DatabaseConfigurations::HashConfig.prepend(DatabaseTasks::ActiveRecordDatabaseConfigurationsHashConfig)

View File

@ -26,14 +26,16 @@ module RegisterDateTimeWithTimeZone
#
# When schema dumping, `timestamptz` columns will be output as
# `t.datetime_with_timezone`.
def initialize_type_map(mapping = type_map)
super mapping
class << self
def initialize_type_map(mapping = type_map)
super mapping
register_class_with_precision(
mapping,
'timestamptz',
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID::DateTimeWithTimeZone
)
register_class_with_precision(
mapping,
'timestamptz',
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID::DateTimeWithTimeZone
)
end
end
end

View File

@ -0,0 +1,51 @@
# frozen_string_literal: true
module ActionDispatch
module Journey
class Router
private
# Besides the patche, this method is a duplicate for the original method defined in Rails:
# https://github.com/rails/rails/blob/v7.0.4.2/actionpack/lib/action_dispatch/journey/router.rb#L109-L132
# See https://github.com/rails/rails/issues/47244
def find_routes(req)
path_info = req.path_info
routes = filter_routes(path_info).concat custom_routes.find_all { |r|
r.path.match?(path_info)
}
if req.head?
routes = match_head_routes(routes, req)
else
routes.select! { |r| r.matches?(req) }
end
routes.sort_by!(&:precedence)
routes.map! do |r|
match_data = r.path.match(path_info)
path_parameters = {}
# This is the patch we are adding. This handles routes where `r.matches?` above is true
# but the route does not actually match due to other constraints
#
# Without this line the following error is raised:
#
# NoMethodError:
# undefined method `names' for nil:NilClass
#
# The behavior is covered by spec/initializers/action_dispatch_journey_router_spec.rb
next if match_data.nil?
match_data.names.each_with_index do |name, i|
val = match_data[i + 1]
path_parameters[name.to_sym] = Utils.unescape_uri(val) if val
end
[match_data, path_parameters, r]
end.compact!
routes
end
end
end
end

View File

@ -3,3 +3,24 @@
Gitlab::Database::Migrations::LockRetryMixin.patch!
Gitlab::Database::Migrations::PgBackendPid.patch!
Gitlab::Database::Migrations::RunnerBackoff::ActiveRecordMixin.patch!
# This patch rolls back to Rails 6.1 behavior:
#
# https://github.com/rails/rails/blob/v6.1.4.3/activerecord/lib/active_record/migration.rb#L1044
#
# It fixes the tests that relies on the fact that the same constants have the same object_id.
# For example to make sure that stub_const works correctly.
#
# It overrides the new behavior that removes the constant first:
#
# https://github.com/rails/rails/blob/v7.0.5/activerecord/lib/active_record/migration.rb#L1054
module ActiveRecord
class MigrationProxy
private
def load_migration
require(File.expand_path(filename))
name.constantize.new(name, version)
end
end
end

View File

@ -1,9 +1,5 @@
# frozen_string_literal: true
if Gitlab::Utils.to_boolean(ENV['ENABLE_ACTIVERECORD_EMPTY_PING'], default: true)
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Gitlab::Database::PostgresqlAdapter::EmptyQueryPing)
end
if Gitlab::Utils.to_boolean(ENV['ENABLE_ACTIVERECORD_TYPEMAP_CACHE'], default: true)
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Gitlab::Database::PostgresqlAdapter::TypeMapCache)
end

View File

@ -1,42 +1,64 @@
# frozen_string_literal: true
# Some polymorphic associations may refer to an object which is not a subclass of ActiveRecord.
# This patch skips preloading of these associations.
#
# For example, a note's noteable can be an Issue, Merge Request, or Commit, where Commit is
# not a subclass of ActiveRecord. When you run something like:
#
# Note.includes(noteable: :assignees).to_a
#
# This patch allows preloading of issues, merge requests, and their assignees while skipping
# commits.
module ActiveRecord
module Associations
class Preloader
def initialize(records: nil, associations: nil)
super()
class Association
class LoaderQuery
# https://gitlab.com/gitlab-org/gitlab/-/issues/385739
module HandlePreloadsForDifferentClassesSeparately
def eql?(other)
scope.klass == other.scope.klass && super
end
@records = records
@associations = associations
end
def hash
[scope.klass, association_key_name, scope.table_name, scope.values_for_queries].hash
end
end
def call
preload(@records, @associations)
end
class NullPreloader
def self.new(*args, **kwargs)
self
prepend HandlePreloadsForDifferentClassesSeparately
end
def self.run
self
module NonActiveRecordPreloader
# https://github.com/rails/rails/blob/v7.0.4.2/activerecord/lib/active_record/associations/preloader/association.rb#L114-L116
def run?
return true unless klass < ActiveRecord::Base
super
end
# https://github.com/rails/rails/blob/v7.0.4.2/activerecord/lib/active_record/associations/preloader/association.rb#L137-L141
def preloaded_records
return [] unless klass < ActiveRecord::Base
super
end
end
def self.preloaded_records
[]
end
prepend NonActiveRecordPreloader
end
module NoCommitPreloader
def preloader_for(reflection, owners)
return NullPreloader if owners.first.association(reflection.name).klass == ::Commit
super
class Branch
module NonActiveRecordPreloader
# https://github.com/rails/rails/blob/v7.0.4.2/activerecord/lib/active_record/associations/preloader/branch.rb#L37-L45
def target_classes
super.delete_if { |klass| !(klass < ActiveRecord::Base) }
end
end
end
prepend NoCommitPreloader
prepend NonActiveRecordPreloader
end
end
end
end

View File

@ -0,0 +1,40 @@
# frozen_string_literal: true
# Monkey patch to fix errors like `undefined method 'getutc' for Date' seen
# during Rails 7 upgrade:
#
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90907#note_1253684870 and
# https://github.com/rails/rails/issues/46341#issuecomment-1406391573
if Rails.gem_version >= Gem::Version.new('7.0.5')
raise "Remove `#{__FILE__}`. This is backport of https://github.com/rails/rails/pull/46365"
end
module ActiveRecord
module ConnectionAdapters
module PostgreSQL
module OID # :nodoc:
class TimestampWithTimeZone < DateTime # :nodoc:
def type
real_type_unless_aliased(:timestamptz)
end
def cast_value(value)
return if value.blank?
time = super
return time unless time.acts_like?(:time)
# While in UTC mode, the PG gem may not return times back in "UTC" even if they were provided to
# Postgres in UTC. We prefer times always in UTC, so here we convert back.
if is_utc?
time.getutc
else
time.getlocal
end
end
end
end
end
end
end

View File

@ -16,8 +16,8 @@ Rails.application.configure do
callbacks &&
callbacks.send(:chain).size == 1 &&
callbacks.first.kind == :around &&
callbacks.first.raw_filter.is_a?(Proc) &&
callbacks.first.raw_filter.source_location.first.ends_with?('lib/active_job/railtie.rb')
callbacks.first.filter.is_a?(Proc) &&
callbacks.first.filter.source_location.first.ends_with?('lib/active_job/railtie.rb')
end
if active_job_railtie_callback?

View File

@ -31,8 +31,6 @@ class ObjectStoreSettings
object_store['proxy_download'] = false if object_store['proxy_download'].nil?
object_store['storage_options'] ||= {}
# Convert upload connection settings to use string keys, to make Fog happy
object_store['connection']&.deep_stringify_keys!
object_store
end
@ -131,8 +129,7 @@ class ObjectStoreSettings
main_config = settings['object_store']
common_config = main_config.slice('enabled', 'connection', 'proxy_download', 'storage_options')
# Convert connection settings to use string keys, to make Fog happy
common_config['connection']&.deep_stringify_keys!
# These are no longer configurable if common config is used
common_config['direct_upload'] = true
common_config['storage_options'] ||= {}

View File

@ -0,0 +1,17 @@
# frozen_string_literal: true
class DropMessageFromVulnerabilityOccurrences < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
remove_column :vulnerability_occurrences, :message
end
def down
unless column_exists?(:vulnerability_occurrences, :message)
add_column :vulnerability_occurrences, :message, :text # rubocop:disable Migration/SchemaAdditionMethodsNoPost
end
add_check_constraint(:vulnerability_occurrences, 'char_length(message) <= 3000', 'check_df6dd20219')
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildPendingStatesToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_build_pending_states, :ci_builds,
name: :fk_861cd17da3_p, reverse_lock_order: true
rename_constraint :ci_build_pending_states, :temp_fk_861cd17da3_p, :fk_861cd17da3_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_build_pending_states, :ci_builds,
name: :temp_fk_861cd17da3_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_build_pending_states, :fk_861cd17da3_p, :temp_fk_861cd17da3_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_build_pending_states, :p_ci_builds, name: :fk_861cd17da3_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildTraceChunksToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_build_trace_chunks, :ci_builds,
name: :fk_89e29fa5ee_p, reverse_lock_order: true
rename_constraint :ci_build_trace_chunks, :temp_fk_89e29fa5ee_p, :fk_89e29fa5ee_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_build_trace_chunks, :ci_builds,
name: :temp_fk_89e29fa5ee_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_build_trace_chunks, :fk_89e29fa5ee_p, :temp_fk_89e29fa5ee_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_build_trace_chunks, :p_ci_builds, name: :fk_89e29fa5ee_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiUnitTestFailuresToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_unit_test_failures, :ci_builds,
name: :fk_9e0fc58930_p, reverse_lock_order: true
rename_constraint :ci_unit_test_failures, :temp_fk_9e0fc58930_p, :fk_9e0fc58930_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_unit_test_failures, :ci_builds,
name: :temp_fk_9e0fc58930_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_unit_test_failures, :fk_9e0fc58930_p, :temp_fk_9e0fc58930_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_unit_test_failures, :p_ci_builds, name: :fk_9e0fc58930_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiSourcesPipelinesToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_sources_pipelines, :ci_builds,
name: :fk_be5624bf37_p, reverse_lock_order: true
rename_constraint :ci_sources_pipelines, :temp_fk_be5624bf37_p, :fk_be5624bf37_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_sources_pipelines, :ci_builds,
name: :temp_fk_be5624bf37_p,
column: [:source_partition_id, :source_job_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_sources_pipelines, :fk_be5624bf37_p, :temp_fk_be5624bf37_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_sources_pipelines, :p_ci_builds, name: :fk_be5624bf37_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiResourcesToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_resources, :ci_builds,
name: :fk_e169a8e3d5_p, reverse_lock_order: true
rename_constraint :ci_resources, :temp_fk_e169a8e3d5_p, :fk_e169a8e3d5_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_resources, :ci_builds,
name: :temp_fk_e169a8e3d5_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :nullify,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_resources, :fk_e169a8e3d5_p, :temp_fk_e169a8e3d5_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_resources, :p_ci_builds, name: :fk_e169a8e3d5_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildReportResultsToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_build_report_results, :ci_builds,
name: :fk_rails_16cb1ff064_p, reverse_lock_order: true
rename_constraint :ci_build_report_results, :temp_fk_rails_16cb1ff064_p, :fk_rails_16cb1ff064_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_build_report_results, :ci_builds,
name: :temp_fk_rails_16cb1ff064_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_build_report_results, :fk_rails_16cb1ff064_p, :temp_fk_rails_16cb1ff064_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_build_report_results, :p_ci_builds, name: :fk_rails_16cb1ff064_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildNeedsToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_build_needs, :ci_builds,
name: :fk_rails_3cf221d4ed_p, reverse_lock_order: true
rename_constraint :ci_build_needs, :temp_fk_rails_3cf221d4ed_p, :fk_rails_3cf221d4ed_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_build_needs, :ci_builds,
name: :temp_fk_rails_3cf221d4ed_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_build_needs, :fk_rails_3cf221d4ed_p, :temp_fk_rails_3cf221d4ed_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_build_needs, :p_ci_builds, name: :fk_rails_3cf221d4ed_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildsRunnerSessionToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_builds_runner_session, :ci_builds,
name: :fk_rails_70707857d3_p, reverse_lock_order: true
rename_constraint :ci_builds_runner_session, :temp_fk_rails_70707857d3_p, :fk_rails_70707857d3_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_builds_runner_session, :ci_builds,
name: :temp_fk_rails_70707857d3_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_builds_runner_session, :fk_rails_70707857d3_p, :temp_fk_rails_70707857d3_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_builds_runner_session, :p_ci_builds, name: :fk_rails_70707857d3_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiPendingBuildsToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_pending_builds, :ci_builds,
name: :fk_rails_725a2644a3_p, reverse_lock_order: true
rename_constraint :ci_pending_builds, :temp_fk_rails_725a2644a3_p, :fk_rails_725a2644a3_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_pending_builds, :ci_builds,
name: :temp_fk_rails_725a2644a3_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_pending_builds, :fk_rails_725a2644a3_p, :temp_fk_rails_725a2644a3_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_pending_builds, :p_ci_builds, name: :fk_rails_725a2644a3_p)
end
end

View File

@ -0,0 +1,37 @@
# frozen_string_literal: true
class ReplaceOldFkCiBuildTraceMetadataToBuildsV2 < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
def up
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_build_trace_metadata, :ci_builds,
name: :fk_rails_aebc78111f_p, reverse_lock_order: true
rename_constraint :ci_build_trace_metadata, :temp_fk_rails_aebc78111f_p, :fk_rails_aebc78111f_p
end
end
def down
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_build_trace_metadata, :ci_builds,
name: :temp_fk_rails_aebc78111f_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_build_trace_metadata, :fk_rails_aebc78111f_p, :temp_fk_rails_aebc78111f_p
end
private
def new_foreign_key_exists?
foreign_key_exists?(:ci_build_trace_metadata, :p_ci_builds, name: :fk_rails_aebc78111f_p)
end
end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
class ReplaceOldFkCiJobArtifactsToBuilds < Gitlab::Database::Migration[2.1]
include Gitlab::Database::MigrationHelpers::WraparoundAutovacuum
disable_ddl_transaction!
def up
return unless should_run?
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_job_artifacts, :ci_builds,
name: :fk_rails_c5137cb2c1_p, reverse_lock_order: true
rename_constraint :ci_job_artifacts, :temp_fk_rails_c5137cb2c1_p, :fk_rails_c5137cb2c1_p
end
end
def down
return unless should_run?
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_job_artifacts, :ci_builds,
name: :temp_fk_rails_c5137cb2c1_p,
column: [:partition_id, :job_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_job_artifacts, :fk_rails_c5137cb2c1_p, :temp_fk_rails_c5137cb2c1_p
end
private
def should_run?
can_execute_on?(:ci_job_artifacts, :ci_builds)
end
def new_foreign_key_exists?
foreign_key_exists?(:ci_job_artifacts, :p_ci_builds, name: :fk_rails_c5137cb2c1_p)
end
end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
class ReplaceOldFkCiRunningBuildsToBuilds < Gitlab::Database::Migration[2.1]
include Gitlab::Database::MigrationHelpers::WraparoundAutovacuum
disable_ddl_transaction!
def up
return unless should_run?
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_running_builds, :ci_builds,
name: :fk_rails_da45cfa165_p, reverse_lock_order: true
rename_constraint :ci_running_builds, :temp_fk_rails_da45cfa165_p, :fk_rails_da45cfa165_p
end
end
def down
return unless should_run?
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_running_builds, :ci_builds,
name: :temp_fk_rails_da45cfa165_p,
column: [:partition_id, :build_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_running_builds, :fk_rails_da45cfa165_p, :temp_fk_rails_da45cfa165_p
end
private
def should_run?
can_execute_on?(:ci_running_builds, :ci_builds)
end
def new_foreign_key_exists?
foreign_key_exists?(:ci_running_builds, :p_ci_builds, name: :fk_rails_da45cfa165_p)
end
end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
class ReplaceOldFkCiJobVariablesToBuilds < Gitlab::Database::Migration[2.1]
include Gitlab::Database::MigrationHelpers::WraparoundAutovacuum
disable_ddl_transaction!
def up
return unless should_run?
return if new_foreign_key_exists?
with_lock_retries do
remove_foreign_key_if_exists :ci_job_variables, :ci_builds,
name: :fk_rails_fbf3b34792_p, reverse_lock_order: true
rename_constraint :ci_job_variables, :temp_fk_rails_fbf3b34792_p, :fk_rails_fbf3b34792_p
end
end
def down
return unless should_run?
return unless new_foreign_key_exists?
add_concurrent_foreign_key :ci_job_variables, :ci_builds,
name: :temp_fk_rails_fbf3b34792_p,
column: [:partition_id, :job_id],
target_column: [:partition_id, :id],
on_update: :cascade,
on_delete: :cascade,
validate: true,
reverse_lock_order: true
switch_constraint_names :ci_job_variables, :fk_rails_fbf3b34792_p, :temp_fk_rails_fbf3b34792_p
end
private
def should_run?
can_execute_on?(:ci_job_variables, :ci_builds)
end
def new_foreign_key_exists?
foreign_key_exists?(:ci_job_variables, :p_ci_builds, name: :fk_rails_fbf3b34792_p)
end
end

View File

@ -0,0 +1 @@
0503c864e706c1255a9dbb27d7d83fe2be7e9b8690bb26bbbe327654a090cc90

View File

@ -0,0 +1 @@
2cfb38d13f843e13b770e1598bb221555e09c05b785c30989626857a0dc396e8

View File

@ -0,0 +1 @@
f7917d437de6d3cc76c183c6682bf18b545ed5b10c2c1212dac46be6f5dfa505

View File

@ -0,0 +1 @@
cdd264bae9968d1a54cdbd2a848161070c91e4fd25b55de072b4822d99bf9b09

View File

@ -0,0 +1 @@
c846d009e014869a969ba637440bc7d8ea9482aac12a567e888dd69582c8467e

View File

@ -0,0 +1 @@
39c8125b1d159ff84627cd897830dcbe7be87fe0675b6f6582380019de7d05e5

View File

@ -0,0 +1 @@
d16c032a8dfaecb6fc61f00b273b539cf0ba6a27b36e6b8119e66c9ee323f4a1

View File

@ -0,0 +1 @@
c0a830c3fac01580d2e938fbbd618d6b28fba7f721bffb7861d4c2ac0206e862

View File

@ -0,0 +1 @@
9ae676e0670c484b7ba385901d654eb6d05a9cedc550ee124121f0974158e2b3

View File

@ -0,0 +1 @@
1fb33bd7af08a6213447e1f87531d4e285b69092ff5181276de0dfa9d1f40cc0

View File

@ -0,0 +1 @@
fa58b6885924405f9556340ffc2625da5f94f4b68942bcca4927adc0fc74ebd7

View File

@ -0,0 +1 @@
fa1729c74f96263143b15e9a08fd4bf723dd55a75ee295ff7390020030fc1355

View File

@ -0,0 +1 @@
ca9564bcb051593478180c42c107be4f49a31df4a15ada3cba52a5779754b812

View File

@ -0,0 +1 @@
2ba72a003cb2a6560caa1351dc46113f370a59767c629127da6f7bfe43b8cbde

View File

@ -24315,7 +24315,6 @@ CREATE TABLE vulnerability_occurrences (
vulnerability_id bigint,
details jsonb DEFAULT '{}'::jsonb NOT NULL,
description text,
message text,
solution text,
cve text,
location jsonb,
@ -24323,7 +24322,6 @@ CREATE TABLE vulnerability_occurrences (
uuid_convert_string_to_uuid uuid DEFAULT '00000000-0000-0000-0000-000000000000'::uuid NOT NULL,
CONSTRAINT check_4a3a60f2ba CHECK ((char_length(solution) <= 7000)),
CONSTRAINT check_ade261da6b CHECK ((char_length(description) <= 15000)),
CONSTRAINT check_df6dd20219 CHECK ((char_length(message) <= 3000)),
CONSTRAINT check_f602da68dd CHECK ((char_length(cve) <= 48400))
);
@ -37564,7 +37562,7 @@ ALTER TABLE ONLY boards_epic_board_recent_visits
ADD CONSTRAINT fk_rails_c4dcba4a3e FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_job_artifacts
ADD CONSTRAINT fk_rails_c5137cb2c1_p FOREIGN KEY (partition_id, job_id) REFERENCES ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ADD CONSTRAINT fk_rails_c5137cb2c1_p FOREIGN KEY (partition_id, job_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY project_settings
ADD CONSTRAINT fk_rails_c6df6e6328 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
@ -37678,7 +37676,7 @@ ALTER TABLE ONLY merge_request_reviewers
ADD CONSTRAINT fk_rails_d9fec24b9d FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_running_builds
ADD CONSTRAINT fk_rails_da45cfa165_p FOREIGN KEY (partition_id, build_id) REFERENCES ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ADD CONSTRAINT fk_rails_da45cfa165_p FOREIGN KEY (partition_id, build_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY resource_link_events
ADD CONSTRAINT fk_rails_da5dd8a56f FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE;
@ -37930,7 +37928,7 @@ ALTER TABLE ONLY board_project_recent_visits
ADD CONSTRAINT fk_rails_fb6fc419cb FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_job_variables
ADD CONSTRAINT fk_rails_fbf3b34792_p FOREIGN KEY (partition_id, job_id) REFERENCES ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ADD CONSTRAINT fk_rails_fbf3b34792_p FOREIGN KEY (partition_id, job_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY packages_nuget_metadata
ADD CONSTRAINT fk_rails_fc0c19f5b4 FOREIGN KEY (package_id) REFERENCES packages_packages(id) ON DELETE CASCADE;
@ -37986,15 +37984,6 @@ ALTER TABLE product_analytics_events_experimental
ALTER TABLE ONLY ci_builds_metadata
ADD CONSTRAINT temp_fk_e20479742e_p FOREIGN KEY (partition_id, build_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID;
ALTER TABLE ONLY ci_job_artifacts
ADD CONSTRAINT temp_fk_rails_c5137cb2c1_p FOREIGN KEY (partition_id, job_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY ci_running_builds
ADD CONSTRAINT temp_fk_rails_da45cfa165_p FOREIGN KEY (partition_id, build_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY ci_job_variables
ADD CONSTRAINT temp_fk_rails_fbf3b34792_p FOREIGN KEY (partition_id, job_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY user_follow_users
ADD CONSTRAINT user_follow_users_followee_id_fkey FOREIGN KEY (followee_id) REFERENCES users(id) ON DELETE CASCADE;

View File

@ -20,6 +20,12 @@ participating-stages: ["~section::ops", "~section::dev"]
In FY23-Q2, the Monitor:Observability team developed and shipped a [ClickHouse data platform](https://gitlab.com/groups/gitlab-org/-/epics/7772) to store and query data for Error Tracking and other observability features. Other teams have also begun to incorporate ClickHouse into their current or planned architectures. Given the growing interest in ClickHouse across product development teams, it is important to have a cohesive strategy for developing features using ClickHouse. This will allow teams to more efficiently leverage ClickHouse and ensure that we can maintain and support this functionality effectively for SaaS and self-managed customers.
### Use Cases
Many product teams at GitLab are considering ClickHouse when developing new features and to improve performance of existing features.
During the start of the ClickHouse working group, we [documented existing and potential use cases](https://gitlab.com/groups/gitlab-com/-/epics/2075#use-cases) and found that there was interest in ClickHouse from teams across all DevSecOps stage groups.
### Goals
As ClickHouse has already been selected for use at GitLab, our main goal now is to ensure successful adoption of ClickHouse across GitLab. It is helpful to break down this goal according to the different phases of the product development workflow.
@ -29,29 +35,18 @@ As ClickHouse has already been selected for use at GitLab, our main goal now is
1. Launch: Support ClickHouse-backed features for SaaS and self-managed.
1. Improve: Successfully scale our usage of ClickHouse.
### Non-Goals
## Proposals
The following are links to proposals in the form of blueprints that address technical challenges to using ClickHouse across a wide variety of features.
1. Scalable data ingestion pipeline.
1. [Scalable data ingestion pipeline](../clickhouse_ingestion_pipeline/index.md).
- How do we ingest large volumes of data from GitLab into ClickHouse either directly or by replicating existing data?
1. Supporting ClickHouse for self-managed installations.
- For which use-cases and scales does it make sense to run ClickHouse for self-managed and what are the associated costs?
- How can we best support self-managed installation of ClickHouse for different types/sizes of environments?
- Consider using the [Opstrace ClickHouse operator](https://gitlab.com/gitlab-org/opstrace/opstrace/-/tree/main/clickhouse-operator) as the basis for a canonical distribution.
- Consider exposing Clickhouse backend as [GitLab Plus](https://gitlab.com/groups/gitlab-org/-/epics/308) to combine benefits of using self-managed instance and GitLab-managed database.
- Should we develop abstractions for querying and data ingestion to avoid requiring ClickHouse for small-scale installations?
1. Abstraction layer for features to leverage both ClickHouse or PostreSQL.
1. [Abstraction layer](../clickhouse_read_abstraction_layer/index.md) for features to leverage both ClickHouse and PostgreSQL.
- What are the benefits and tradeoffs? For example, how would this impact our automated migration and query testing?
1. Security recommendations and secure defaults for ClickHouse usage.
Note that we are still formulating proposals and will update the blueprint accordingly.
## Best Practices
Best practices and guidelines for developing performant and scalable features using ClickHouse are located in the [ClickHouse developer documentation](../../../development/database/clickhouse/index.md).
Best practices and guidelines for developing performant, secure, and scalable features using ClickHouse are located in the [ClickHouse developer documentation](../../../development/database/clickhouse/index.md).
## Cost and maintenance analysis

View File

@ -15,9 +15,9 @@ GitLab provides GPU-enabled runners only on Linux. For more information about ho
The following machine types are available for GPU-enabled runners on Linux x86-64.
| Runner Tag | vCPUs | Memory | Storage | GPU |
|----------------------------------------|-------|--------|---------|------------------------------------|
| `saas-linux-medium-amd64-gpu-standard` | 4 | 16 GB | 50 GB | 1 Nvidia Tesla T4 GPU (or similar) |
| Runner Tag | vCPUs | Memory | Storage | GPU |
|----------------------------------------|-------|--------|---------|--------------------------------|
| `saas-linux-medium-amd64-gpu-standard` | 4 | 16 GB | 50 GB | 1 Nvidia Tesla T4 (or similar) |
## Container images with GPU drivers

View File

@ -12,7 +12,7 @@ the Google Cloud Platform. This solution uses an
developed by GitLab for the [custom executor](https://docs.gitlab.com/runner/executors/custom.html).
These SaaS runners are in [Beta](../../../policy/experiment-beta-support.md#beta)
and aren't recomended for production workloads.
and aren't recommended for production workloads.
We want to keep iterating to get Windows runners in a stable state and
[generally available](../../../policy/experiment-beta-support.md#generally-available-ga).

View File

@ -97,7 +97,7 @@ For features that use the embedding database, additional setup is needed.
Feature.enable(:ai_redis_cache)
```
1. Ensure that your current branch is up-to-date with `master`.
1. Ensure that your current branch is up-to-date with `master`.
1. To access the GitLab Chat interface, in the lower-left corner of any page, select **Help** and **Ask GitLab Chat**.
#### Tips for local development
@ -170,6 +170,22 @@ Feature.enable(:anthropic_experimentation)
Gitlab::CurrentSettings.update!(anthropic_api_key: <insert API key>)
```
### Testing GitLab Chat with predefined questions
Because success of answers to user questions in GitLab Chat heavily depends on toolchain and prompts of each tool, it's common that even a minor change in a prompt or a tool impacts processing of some questions. To make sure that a change in the toolchain doesn't break existing functionality, you can use following commands to validate answers to some predefined questions:
1. Rake task which iterates through questions defined in CSV file and checks tools used for evaluating each question.
```ruby
rake gitlab:llm:zero_shot:test:questions[<issue_url>]
```
1. RSpec which iterates through resource-specific questions on predefined resources:
```ruby
ANTHROPIC_API_KEY='<key>' REAL_AI_REQUEST=1 rspec ee/spec/lib/gitlab/llm/chain/agents/zero_shot/executor_spec.rb
```
## Experimental REST API
Use the [experimental REST API endpoints](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/api/ai/experimentation) to quickly experiment and prototype AI features.

View File

@ -139,7 +139,10 @@ Each user has a long-lived feed token that does not expire. This token allows au
- RSS readers to load a personalized RSS feed.
- Calendar applications to load a personalized calendar.
This token is visible in those feed URLs. You cannot use this token to access any other data.
You cannot use this token to access any other data.
The user-scoped feed token can be used for all feeds, however feed and calendar URLs are generated
with a different token that is only valid for one feed.
Anyone who has your token can read activity and issue RSS feeds or your calendar feed as if they were you, including confidential issues. If that happens, [reset the token](../user/profile/contributions_calendar.md#reset-the-user-activity-feed-token).

View File

@ -364,20 +364,6 @@ This alternative ensures the compliance pipeline does not re-start the parent pi
## Troubleshooting
### Cannot remove compliance framework from a project
Because of a [known issue](https://gitlab.com/gitlab-org/gitlab/-/issues/390626), if you move a project, its compliance
framework becomes orphaned and can't be removed. To manually remove a compliance framework from a project, run the
following GraphQL mutation with your project's ID:
```graphql
mutation {
projectSetComplianceFramework(input: {projectId: "gid://gitlab/Project/1234567", complianceFrameworkId: null}) {
errors
}
}
```
### Compliance jobs are overwritten by target repository
If you use the `extends` statement in a compliance pipeline configuration, compliance jobs are overwritten by the target repository job. For example,

View File

@ -27,6 +27,8 @@ module API
end
helpers do
include Gitlab::Utils::StrongMemoize
params :package_name do
requires :package_name, type: String, file_path: true, desc: 'Package name',
documentation: { example: 'mypackage' }
@ -51,6 +53,12 @@ module API
def generate_metadata_service(packages)
::Packages::Npm::GenerateMetadataService.new(params[:package_name], packages)
end
def metadata_cache
::Packages::Npm::MetadataCache
.find_by_package_name_and_project_id(params[:package_name], project.id)
end
strong_memoize_attr :metadata_cache
end
params do
@ -202,8 +210,14 @@ module API
not_found!('Packages') if packages.empty?
present ::Packages::Npm::PackagePresenter.new(generate_metadata_service(packages).execute),
with: ::API::Entities::NpmPackage
if endpoint_scope == :project && Feature.enabled?(:npm_metadata_cache, project) &&
metadata_cache&.file&.exists?
metadata_cache.touch_last_downloaded_at
present_carrierwave_file!(metadata_cache.file)
else
present ::Packages::Npm::PackagePresenter.new(generate_metadata_service(packages).execute),
with: ::API::Entities::NpmPackage
end
end
end

View File

@ -30,6 +30,7 @@ module Gitlab
DEPLOY_TOKEN_HEADER = 'HTTP_DEPLOY_TOKEN'
RUNNER_TOKEN_PARAM = :token
RUNNER_JOB_TOKEN_PARAM = :token
PATH_DEPENDENT_FEED_TOKEN_REGEX = /\A#{User::FEED_TOKEN_PREFIX}(\h{64})-(\d+)\z/
# Check the Rails session for valid authentication details
def find_user_from_warden
@ -54,7 +55,7 @@ module Gitlab
token = current_request.params[:feed_token].presence || current_request.params[:rss_token].presence
return unless token
User.find_by_feed_token(token) || raise(UnauthorizedError)
find_feed_token_user(token) || raise(UnauthorizedError)
end
def find_user_from_bearer_token
@ -277,6 +278,30 @@ module Gitlab
PersonalAccessToken.find_by_token(password)
end
def find_feed_token_user(token)
find_user_from_path_feed_token(token) || User.find_by_feed_token(token)
end
def find_user_from_path_feed_token(token)
glft = token.match(PATH_DEPENDENT_FEED_TOKEN_REGEX)
return unless glft
# make sure that user id uses decimal notation
user_id = glft[2].to_i(10)
digest = glft[1]
user = User.find_by_id(user_id)
return unless user
feed_token = user.feed_token
our_digest = OpenSSL::HMAC.hexdigest("SHA256", feed_token, current_request.path)
return unless ActiveSupport::SecurityUtils.secure_compare(digest, our_digest)
user
end
def parsed_oauth_token
Doorkeeper::OAuth::Token.from_request(current_request, *Doorkeeper.configuration.access_token_methods)
end

View File

@ -145,7 +145,7 @@ module Gitlab
# Database configured. Returns true even if the database is shared
def self.has_config?(database_name)
ActiveRecord::Base.configurations
.configs_for(env_name: Rails.env, name: database_name.to_s, include_replicas: true)
.configs_for(env_name: Rails.env, name: database_name.to_s, include_hidden: true)
.present?
end

View File

@ -39,7 +39,7 @@ module Gitlab
@load_balancer = load_balancer
end
def select_all(arel, name = nil, binds = [], preparable: nil)
def select_all(arel, name = nil, binds = [], preparable: nil, async: false)
if arel.respond_to?(:locked) && arel.locked
# SELECT ... FOR UPDATE queries should be sent to the primary.
current_session.write!

View File

@ -285,7 +285,7 @@ module Gitlab
def pool
ActiveRecord::Base.connection_handler.retrieve_connection_pool(
@configuration.connection_specification_name,
role: ActiveRecord::Base.writing_role,
role: ActiveRecord.writing_role,
shard: ActiveRecord::Base.default_shard
) || raise(::ActiveRecord::ConnectionNotEstablished)
end

View File

@ -1,25 +0,0 @@
# frozen_string_literal: true
# This patch will be included in the next Rails release: https://github.com/rails/rails/pull/42368
raise 'This patch can be removed' if Rails::VERSION::MAJOR > 6
# rubocop:disable Gitlab/ModuleWithInstanceVariables
module Gitlab
module Database
module PostgresqlAdapter
module EmptyQueryPing
# ActiveRecord uses `SELECT 1` to check if the connection is alive
# We patch this here to use an empty query instead, which is a bit faster
def active?
@lock.synchronize do
@connection.query ';'
end
true
rescue PG::Error
false
end
end
end
end
end
# rubocop:enable Gitlab/ModuleWithInstanceVariables

View File

@ -31,7 +31,7 @@ module Gitlab
def list_agent_config_files(project:)
request = Gitlab::Agent::ConfigurationProject::Rpc::ListAgentConfigFilesRequest.new(
repository: repository(project),
gitaly_address: gitaly_address(project)
gitaly_info: gitaly_info(project)
)
stub_for(:configuration_project)
@ -42,9 +42,11 @@ module Gitlab
def send_git_push_event(project:)
request = Gitlab::Agent::Notifications::Rpc::GitPushEventRequest.new(
project: Gitlab::Agent::Notifications::Rpc::Project.new(
id: project.id,
full_path: project.full_path
event: Gitlab::Agent::Event::GitPushEvent.new(
project: Gitlab::Agent::Event::Project.new(
id: project.id,
full_path: project.full_path
)
)
)
@ -62,13 +64,13 @@ module Gitlab
def repository(project)
gitaly_repository = project.repository.gitaly_repository
Gitlab::Agent::Modserver::Repository.new(gitaly_repository.to_h)
Gitlab::Agent::Entity::GitalyRepository.new(gitaly_repository.to_h)
end
def gitaly_address(project)
def gitaly_info(project)
connection_data = Gitlab::GitalyClient.connection_data(project.repository_storage)
Gitlab::Agent::Modserver::GitalyAddress.new(connection_data)
Gitlab::Agent::Entity::GitalyInfo.new(connection_data)
end
def kas_endpoint_url

View File

@ -1,7 +1,42 @@
# frozen_string_literal: true
require 'forwardable'
module GitlabSettings
class Options
extend Forwardable
def_delegators :@options,
:count,
:deep_stringify_keys,
:deep_symbolize_keys,
:default_proc,
:dig,
:each_key,
:each_pair,
:each_value,
:each,
:empty?,
:fetch_values,
:fetch,
:filter,
:keys,
:length,
:map,
:member?,
:merge,
:reject,
:select,
:size,
:slice,
:stringify_keys,
:symbolize_keys,
:transform_keys,
:transform_values,
:value?,
:values_at,
:values
# Recursively build GitlabSettings::Options
def self.build(obj)
case obj
@ -26,11 +61,52 @@ module GitlabSettings
@options[key.to_s] = self.class.build(value)
end
def key?(name)
@options.key?(name.to_s) || @options.key?(name.to_sym)
def key?(key)
@options.key?(key.to_s)
end
alias_method :has_key?, :key?
# Some configurations use the 'default' key, like:
# https://gitlab.com/gitlab-org/gitlab/-/blob/c4d5c77c87494bb320fa7fdf19b0e4d7d52af1d1/spec/support/helpers/stub_configuration.rb#L96
# But since `default` is also a method in Hash, this can be confusing and
# raise an exception instead of returning nil, as expected in some places.
# To avoid that, we use #default always as a possible internal key
def default
@options['default']
end
# For backward compatibility, like:
# https://gitlab.com/gitlab-org/gitlab/-/blob/adf67e90428670aaa955731f3bdeafb8b3a874cd/lib/gitlab/database/health_status/indicators/patroni_apdex.rb#L58
def with_indifferent_access
to_hash.with_indifferent_access
end
def dup
self.class.build(to_hash)
end
def merge(other)
self.class.build(to_hash.merge(other.deep_stringify_keys))
end
def merge!(other)
@options = to_hash.merge(other.deep_stringify_keys)
end
def deep_merge(other)
self.class.build(to_hash.deep_merge(other.deep_stringify_keys))
end
def deep_merge!(other)
@options = to_hash.deep_merge(other.deep_stringify_keys)
end
def is_a?(klass)
return true if klass == Hash
super(klass)
end
def to_hash
@options.deep_transform_values do |option|
case option
@ -43,23 +119,27 @@ module GitlabSettings
end
alias_method :to_h, :to_hash
def dup
self.class.build(to_hash)
end
# Don't alter the internal keys
def stringify_keys!
error_msg = "Warning: Do not mutate #{self.class} objects"
raise "#{error_msg}: `#{__method__}`" unless Rails.env.production?
def merge(other)
self.class.build(to_hash.merge(other.deep_stringify_keys))
end
Gitlab::AppLogger.warn(error_msg, method: __method__)
def deep_merge(other)
self.class.build(to_hash.deep_merge(other.deep_stringify_keys))
to_hash.deep_stringify_keys
end
alias_method :deep_stringify_keys!, :stringify_keys!
def is_a?(klass)
return true if klass == Hash
# Don't alter the internal keys
def symbolize_keys!
error_msg = "Warning: Do not mutate #{self.class} objects"
raise "#{error_msg}: `#{__method__}`" unless Rails.env.production?
super(klass)
Gitlab::AppLogger.warn(error_msg, method: __method__)
to_hash.deep_symbolize_keys
end
alias_method :deep_symbolize_keys!, :symbolize_keys!
def method_missing(name, *args, &block)
name_string = +name.to_s
@ -70,7 +150,14 @@ module GitlabSettings
return self[name_string]
end
return @options.public_send(name, *args, &block) if @options.respond_to?(name) # rubocop: disable GitlabSecurity/PublicSend
if @options.respond_to?(name)
error_msg = "Calling a hash method on #{self.class}"
raise "#{error_msg}: `#{name}`" unless Rails.env.production?
Gitlab::AppLogger.warn(error_msg, method: name)
return @options.public_send(name, *args, &block) # rubocop: disable GitlabSecurity/PublicSend
end
raise ::GitlabSettings::MissingSetting, "option '#{name}' not defined"
end

View File

@ -142,7 +142,7 @@ namespace :gitlab do
desc 'This adjusts and cleans db/structure.sql - it runs after db:schema:dump'
task :clean_structure_sql do |task_name|
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
structure_file = ActiveRecord::Tasks::DatabaseTasks.dump_filename(db_config.name)
structure_file = ActiveRecord::Tasks::DatabaseTasks.schema_dump_path(db_config)
schema = File.read(structure_file)

View File

@ -25,10 +25,7 @@ namespace :gitlab do
task validate_config: :environment do
original_db_config = ActiveRecord::Base.connection_db_config # rubocop:disable Database/MultipleDatabases
# The include_replicas: is a legacy name to fetch all hidden entries (replica: true or database_tasks: false)
# Once we upgrade to Rails 7.x this should be changed to `include_hidden: true`
# Ref.: https://github.com/rails/rails/blob/f2d9316ba965e150ad04596085ee10eea4f58d3e/activerecord/lib/active_record/database_configurations.rb#L48
db_configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, include_replicas: true)
db_configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, include_hidden: true)
db_configs = db_configs.reject(&:replica?)
# The `pg_control_system()` is not enough to properly discover matching database systems

View File

@ -9653,6 +9653,9 @@ msgstr ""
msgid "CiCatalog|Mark project as a CI/CD Catalog resource. %{linkStart}What is the CI/CD Catalog?%{linkEnd}"
msgstr ""
msgid "CiCatalog|No release available"
msgstr ""
msgid "CiCatalog|Page %{currentPage} of %{totalPage}"
msgstr ""

View File

@ -62,8 +62,8 @@
"@gitlab/web-ide": "0.0.1-dev-20230620122149",
"@mattiasbuelens/web-streams-adapter": "^0.1.0",
"@popperjs/core": "^2.11.2",
"@rails/actioncable": "6.1.4-7",
"@rails/ujs": "6.1.4-7",
"@rails/actioncable": "7.0.4-3",
"@rails/ujs": "7.0.4-3",
"@snowplow/browser-plugin-client-hints": "^3.9.0",
"@snowplow/browser-plugin-form-tracking": "^3.9.0",
"@snowplow/browser-plugin-ga-cookies": "^3.9.0",

View File

@ -1,8 +1,8 @@
diff --git a/node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js b/node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js
index 2176247..1a83d48 100644
index d428163..010eaa5 100644
--- a/node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js
+++ b/node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js
@@ -265,11 +265,6 @@ Released under the MIT license
@@ -281,11 +281,6 @@ Released under the MIT license
try {
response = JSON.parse(response);
} catch (error) {}

View File

@ -222,13 +222,13 @@ RSpec.describe Groups::ChildrenController, feature_category: :groups_and_project
control = ActiveRecord::QueryRecorder.new { get_list }
_new_project = create(:project, :public, namespace: group)
expect { get_list }.not_to exceed_query_limit(control).with_threshold(expected_queries_per_project)
expect { get_list }.not_to exceed_query_limit(control).with_threshold(expected_queries_per_project + 1)
end
context 'when rendering hierarchies' do
# When loading hierarchies we load the all the ancestors for matched projects
# in 2 separate queries
let(:extra_queries_for_hierarchies) { 2 }
# in 3 separate queries
let(:extra_queries_for_hierarchies) { 3 }
def get_filtered_list
get :index, params: { group_id: group.to_param, filter: 'filter' }, format: :json

View File

@ -59,7 +59,7 @@ RSpec.describe Projects::DesignManagement::Designs::ResizedImageController, feat
end
it 'sets appropriate caching headers' do
expect(response.header['Cache-Control']).to eq('private')
expect(response.header['Cache-Control']).to eq('max-age=0, private, must-revalidate')
expect(response.header['ETag']).to be_present
end
end

View File

@ -1809,7 +1809,7 @@ RSpec.describe Projects::IssuesController, :request_store, feature_category: :te
create(:user_status, user: second_discussion.author)
expect { get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issue.iid } }
.not_to exceed_query_limit(control)
.not_to exceed_query_limit(control).with_threshold(9)
end
context 'when user is setting notes filters' do

View File

@ -328,7 +328,7 @@ RSpec.describe Projects::PipelinesController, feature_category: :continuous_inte
expect do
get_pipeline_html
expect(response).to have_gitlab_http_status(:ok)
end.not_to exceed_all_query_limit(control)
end.not_to exceed_all_query_limit(control).with_threshold(3)
end
end

View File

@ -61,10 +61,15 @@ RSpec.describe 'Dashboard Issues filtering', :js, feature_category: :team_planni
auto_discovery_link = find('link[type="application/atom+xml"]', visible: false)
auto_discovery_params = CGI.parse(URI.parse(auto_discovery_link[:href]).query)
expect(params).to include('feed_token' => [user.feed_token])
feed_token_param = params['feed_token']
expect(feed_token_param).to match([Gitlab::Auth::AuthFinders::PATH_DEPENDENT_FEED_TOKEN_REGEX])
expect(feed_token_param.first).to end_with(user.id.to_s)
expect(params).to include('milestone_title' => [''])
expect(params).to include('assignee_username' => [user.username.to_s])
expect(auto_discovery_params).to include('feed_token' => [user.feed_token])
feed_token_param = auto_discovery_params['feed_token']
expect(feed_token_param).to match([Gitlab::Auth::AuthFinders::PATH_DEPENDENT_FEED_TOKEN_REGEX])
expect(feed_token_param.first).to end_with(user.id.to_s)
expect(auto_discovery_params).to include('milestone_title' => [''])
expect(auto_discovery_params).to include('assignee_username' => [user.username.to_s])
end

View File

@ -47,10 +47,7 @@ RSpec.describe Clusters::AgentTokensFinder do
context 'when filtering by an unrecognised status' do
subject(:execute) { described_class.new(agent, user, status: 'dummy').execute }
it 'raises an error' do
# 'dummy' is not a valid status as defined in the AgentToken status enum
expect { execute.count }.to raise_error(ActiveRecord::StatementInvalid)
end
it { is_expected.to be_empty }
end
context 'when user does not have permission' do

View File

@ -0,0 +1,157 @@
import { nextTick } from 'vue';
import Markdown from '~/vue_shared/components/markdown/non_gfm_markdown.vue';
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import CodeBlockHighlighted from '~/vue_shared/components/code_block_highlighted.vue';
import ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';
describe('NonGitlabMarkdown', () => {
let wrapper;
const createComponent = ({ propsData = {} } = {}) => {
wrapper = shallowMountExtended(Markdown, {
propsData,
});
};
const codeBlockContent = 'stages:\n - build\n - test\n - deploy\n';
const codeBlockLanguage = 'yaml';
const nonCodeContent =
"Certainly! Here's an updated GitLab CI/CD configuration in YAML format that includes Kubernetes deployment:";
const testMarkdownWithCodeBlock = `${nonCodeContent}\n\n\`\`\`${codeBlockLanguage}\n${codeBlockContent}\n\`\`\`\n\nIn this updated configuration, we have added a \`deploy\` job that deploys the Python app to a Kubernetes cluster. The \`script\` section of the job includes commands to authenticate with GCP, set the project and zone, configure kubectl to use the GKE cluster, and deploy the application using a deployment.yaml file.\n\nNote that you will need to modify this configuration to fit your specific deployment needs, including replacing the placeholders (\`<PROJECT_ID>\`, \`<COMPUTE_ZONE>\`, \`<CLUSTER_NAME>\`, and \`<COMPUTE_REGION>\`) with your GCP and Kubernetes deployment information, and creating the deployment.yaml file with your Kubernetes deployment configuration.`;
const codeOnlyMarkdown = `\`\`\`${codeBlockLanguage}\n${codeBlockContent}\n\`\`\``;
const markdownWithMultipleCodeSnippets = `${testMarkdownWithCodeBlock}\n${testMarkdownWithCodeBlock}`;
const codeBlockNoLanguage = `
\`\`\`
const foo = 'bar';
\`\`\`
`;
const findCodeBlock = () => wrapper.findComponent(CodeBlockHighlighted);
const findCopyCodeButton = () => wrapper.findComponent(ModalCopyButton);
const findCodeBlockWrapper = () => wrapper.findByTestId('code-block-wrapper');
const findMarkdownBlock = () => wrapper.findByTestId('non-code-markdown');
describe('rendering markdown without code snippet', () => {
beforeEach(() => {
createComponent({ propsData: { markdown: nonCodeContent } });
});
it('should render non-code content', () => {
const markdownBlock = findMarkdownBlock();
expect(markdownBlock.exists()).toBe(true);
expect(markdownBlock.text()).toBe(nonCodeContent);
});
it('should not render code block', () => {
const codeBlock = findCodeBlock();
expect(codeBlock.exists()).toBe(false);
});
});
describe('rendering code snippet without other markdown', () => {
beforeEach(() => {
createComponent({ propsData: { markdown: codeOnlyMarkdown } });
});
it('should not render non-code content', () => {
const markdownBlock = findMarkdownBlock();
expect(markdownBlock.exists()).toBe(false);
});
it('should render code block', () => {
const codeBlock = findCodeBlock();
expect(codeBlock.exists()).toBe(true);
});
});
describe('rendering code snippet with no language specified', () => {
beforeEach(() => {
createComponent({ propsData: { markdown: codeBlockNoLanguage } });
});
it('should render code block', () => {
const codeBlock = findCodeBlock();
expect(codeBlock.exists()).toBe(true);
expect(codeBlock.props('language')).toBe('text');
});
});
describe.each`
markdown | codeBlocksCount | markdownBlocksCount
${testMarkdownWithCodeBlock} | ${1} | ${2}
${markdownWithMultipleCodeSnippets} | ${2} | ${3}
${codeOnlyMarkdown} | ${1} | ${0}
${nonCodeContent} | ${0} | ${1}
`(
'extracting tokens in markdownBlocks computed',
({ markdown, codeBlocksCount, markdownBlocksCount }) => {
beforeEach(() => {
createComponent({ propsData: { markdown } });
});
it('should create correct number of tokens', () => {
const findAllCodeBlocks = () => wrapper.findAllByTestId('code-block-wrapper');
const findAllMarkdownBlocks = () => wrapper.findAllByTestId('non-code-markdown');
expect(findAllCodeBlocks()).toHaveLength(codeBlocksCount);
expect(findAllMarkdownBlocks()).toHaveLength(markdownBlocksCount);
});
},
);
describe('rendering markdown with multiple code snippets', () => {
beforeEach(() => {
createComponent({ propsData: { markdown: markdownWithMultipleCodeSnippets } });
});
it('should render code block with correct props', () => {
const codeBlock = findCodeBlock();
expect(codeBlock.exists()).toBe(true);
expect(codeBlock.props()).toEqual(
expect.objectContaining({
language: codeBlockLanguage,
code: codeBlockContent,
}),
);
expect(wrapper.findAllComponents(CodeBlockHighlighted)).toHaveLength(2);
});
it('should not show copy code button', () => {
const copyCodeButton = findCopyCodeButton();
expect(copyCodeButton.exists()).toBe(false);
});
it('should render non-code content', () => {
const markdownBlock = findMarkdownBlock();
expect(markdownBlock.exists()).toBe(true);
expect(markdownBlock.text()).toContain(nonCodeContent);
});
describe('copy code button', () => {
beforeEach(() => {
const codeBlock = findCodeBlockWrapper();
codeBlock.trigger('mouseenter');
});
it('should render only one copy button per code block', () => {
const copyCodeButtons = wrapper.findAllComponents(ModalCopyButton);
expect(copyCodeButtons).toHaveLength(1);
});
it('should render code block button with correct props', () => {
const copyCodeButton = findCopyCodeButton();
expect(copyCodeButton.exists()).toBe(true);
expect(copyCodeButton.props()).toEqual(
expect.objectContaining({
text: codeBlockContent,
title: 'Copy code',
}),
);
});
it('should hide code block button on mouseleave', async () => {
const codeBlock = findCodeBlockWrapper();
codeBlock.trigger('mouseleave');
await nextTick();
const copyCodeButton = findCopyCodeButton();
expect(copyCodeButton.exists()).toBe(false);
});
});
});
});

View File

@ -590,12 +590,13 @@ RSpec.describe ApplicationHelper do
it 'adds custom form builder to options and calls `form_for`' do
options = { html: { class: 'foo-bar' } }
expected_options = options.merge({ builder: ::Gitlab::FormBuilders::GitlabUiFormBuilder, url: '/root' })
expected_options = options.merge({ builder: ::Gitlab::FormBuilders::GitlabUiFormBuilder })
expect do |b|
helper.gitlab_ui_form_for(user, options, &b)
end.to yield_with_args(::Gitlab::FormBuilders::GitlabUiFormBuilder)
expect(helper).to have_received(:form_for).with(user, expected_options)
expect(helper).to have_received(:form_for).with(user, a_hash_including(expected_options))
end
end
@ -722,19 +723,19 @@ RSpec.describe ApplicationHelper do
it 'uses print stylesheet when feature flag disabled' do
stub_feature_flags(remove_startup_css: false)
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" media="print" href="/stylesheets/test.css" />')
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" href="/stylesheets/test.css" media="print" />')
end
it 'uses regular stylesheet when feature flag enabled' do
stub_feature_flags(remove_startup_css: true)
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" media="all" href="/stylesheets/test.css" />')
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" href="/stylesheets/test.css" media="all" />')
end
it 'uses regular stylesheet when no_startup_css param present' do
allow(helper.controller).to receive(:params).and_return({ no_startup_css: '' })
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" media="all" href="/stylesheets/test.css" />')
expect(helper.stylesheet_link_tag_defer('test')).to eq( '<link rel="stylesheet" href="/stylesheets/test.css" media="all" />')
end
end

View File

@ -8,7 +8,10 @@ RSpec.describe CalendarHelper do
it "includes the current_user's feed_token" do
current_user = create(:user)
allow(helper).to receive(:current_user).and_return(current_user)
expect(helper.calendar_url_options).to include feed_token: current_user.feed_token
feed_token = helper.calendar_url_options[:feed_token]
expect(feed_token).to match(Gitlab::Auth::AuthFinders::PATH_DEPENDENT_FEED_TOKEN_REGEX)
expect(feed_token).to end_with(current_user.id.to_s)
end
end

View File

@ -0,0 +1,28 @@
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe FeedTokenHelper, feature_category: :system_access do
describe '#generate_feed_token' do
context 'with type :atom' do
let(:current_user) { build(:user, feed_token: 'KNOWN VALUE') }
it "returns the current_user's atom feed_token" do
allow(helper).to receive(:current_user).and_return(current_user)
allow(helper).to receive(:current_request).and_return(instance_double(ActionDispatch::Request, path: 'url'))
expect(helper.generate_feed_token(:atom))
# The middle part is the output of OpenSSL::HMAC.hexdigest("SHA256", 'KNOWN VALUE', 'url.atom')
.to eq("glft-a8cc74ccb0de004d09a968705ba49099229b288b3de43f26c473a9d8d7fb7693-#{current_user.id}")
end
end
context 'when signed out' do
it "returns nil" do
allow(helper).to receive(:current_user).and_return(nil)
expect(helper.generate_feed_token(:atom)).to be_nil
end
end
end
end

View File

@ -8,7 +8,10 @@ RSpec.describe RssHelper do
it "includes the current_user's feed_token" do
current_user = create(:user)
allow(helper).to receive(:current_user).and_return(current_user)
expect(helper.rss_url_options).to include feed_token: current_user.feed_token
feed_token = helper.rss_url_options[:feed_token]
expect(feed_token).to match(Gitlab::Auth::AuthFinders::PATH_DEPENDENT_FEED_TOKEN_REGEX)
expect(feed_token).to end_with(current_user.id.to_s)
end
end

View File

@ -1,288 +0,0 @@
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'DisableJoins' do
let(:primary_model) do
Class.new(ApplicationRecord) do
self.table_name = '_test_primary_records'
def self.name
'TestPrimary'
end
end
end
let(:bridge_model) do
Class.new(ApplicationRecord) do
self.table_name = '_test_bridge_records'
def self.name
'TestBridge'
end
end
end
let(:secondary_model) do
Class.new(ApplicationRecord) do
self.table_name = '_test_secondary_records'
def self.name
'TestSecondary'
end
end
end
context 'passing disable_joins as an association option' do
context 'when the association is a bare has_one' do
it 'disallows the disable_joins option' do
expect do
primary_model.has_one :test_bridge, disable_joins: true
end.to raise_error(ArgumentError, /Unknown key: :disable_joins/)
end
end
context 'when the association is a belongs_to' do
it 'disallows the disable_joins option' do
expect do
bridge_model.belongs_to :test_secondary, disable_joins: true
end.to raise_error(ArgumentError, /Unknown key: :disable_joins/)
end
end
context 'when the association is has_one :through' do
it 'allows the disable_joins option' do
primary_model.has_one :test_bridge
bridge_model.belongs_to :test_secondary
expect do
primary_model.has_one :test_secondary, through: :test_bridge, disable_joins: true
end.not_to raise_error
end
end
context 'when the association is a bare has_many' do
it 'disallows the disable_joins option' do
expect do
primary_model.has_many :test_bridges, disable_joins: true
end.to raise_error(ArgumentError, /Unknown key: :disable_joins/)
end
end
context 'when the association is a has_many :through' do
it 'allows the disable_joins option' do
primary_model.has_many :test_bridges
bridge_model.belongs_to :test_secondary
expect do
primary_model.has_many :test_secondaries, through: :test_bridges, disable_joins: true
end.not_to raise_error
end
end
end
context 'querying has_one :through when disable_joins is set' do
before do
create_tables(<<~SQL)
CREATE TABLE _test_primary_records (
id serial NOT NULL PRIMARY KEY);
CREATE TABLE _test_bridge_records (
id serial NOT NULL PRIMARY KEY,
primary_record_id int NOT NULL,
secondary_record_id int NOT NULL);
CREATE TABLE _test_secondary_records (
id serial NOT NULL PRIMARY KEY);
SQL
primary_model.has_one :test_bridge, anonymous_class: bridge_model, foreign_key: :primary_record_id
bridge_model.belongs_to :test_secondary, anonymous_class: secondary_model, foreign_key: :secondary_record_id
primary_model.has_one :test_secondary,
through: :test_bridge, anonymous_class: secondary_model, disable_joins: -> { joins_disabled_flag }
primary_record = primary_model.create!
secondary_record = secondary_model.create!
bridge_model.create!(primary_record_id: primary_record.id, secondary_record_id: secondary_record.id)
end
context 'when disable_joins evaluates to true' do
let(:joins_disabled_flag) { true }
it 'executes separate queries' do
primary_record = primary_model.first
query_count = ActiveRecord::QueryRecorder.new { primary_record.test_secondary }.count
expect(query_count).to eq(2)
end
end
context 'when disable_joins evalutes to false' do
let(:joins_disabled_flag) { false }
it 'executes a single query' do
primary_record = primary_model.first
query_count = ActiveRecord::QueryRecorder.new { primary_record.test_secondary }.count
expect(query_count).to eq(1)
end
end
end
context 'querying has_many :through when disable_joins is set' do
before do
create_tables(<<~SQL)
CREATE TABLE _test_primary_records (
id serial NOT NULL PRIMARY KEY);
CREATE TABLE _test_bridge_records (
id serial NOT NULL PRIMARY KEY,
primary_record_id int NOT NULL);
CREATE TABLE _test_secondary_records (
id serial NOT NULL PRIMARY KEY,
bridge_record_id int NOT NULL);
SQL
primary_model.has_many :test_bridges, anonymous_class: bridge_model, foreign_key: :primary_record_id
bridge_model.has_many :test_secondaries, anonymous_class: secondary_model, foreign_key: :bridge_record_id
primary_model.has_many :test_secondaries, through: :test_bridges, anonymous_class: secondary_model,
disable_joins: -> { disabled_join_flag }
primary_record = primary_model.create!
bridge_record = bridge_model.create!(primary_record_id: primary_record.id)
secondary_model.create!(bridge_record_id: bridge_record.id)
end
context 'when disable_joins evaluates to true' do
let(:disabled_join_flag) { true }
it 'executes separate queries' do
primary_record = primary_model.first
query_count = ActiveRecord::QueryRecorder.new { primary_record.test_secondaries.first }.count
expect(query_count).to eq(2)
end
end
context 'when disable_joins evalutes to false' do
let(:disabled_join_flag) { false }
it 'executes a single query' do
primary_record = primary_model.first
query_count = ActiveRecord::QueryRecorder.new { primary_record.test_secondaries.first }.count
expect(query_count).to eq(1)
end
end
end
context 'querying STI relationships' do
let(:child_bridge_model) do
Class.new(bridge_model) do
def self.name
'ChildBridge'
end
end
end
let(:child_secondary_model) do
Class.new(secondary_model) do
def self.name
'ChildSecondary'
end
end
end
before do
create_tables(<<~SQL)
CREATE TABLE _test_primary_records (
id serial NOT NULL PRIMARY KEY);
CREATE TABLE _test_bridge_records (
id serial NOT NULL PRIMARY KEY,
primary_record_id int NOT NULL,
type text);
CREATE TABLE _test_secondary_records (
id serial NOT NULL PRIMARY KEY,
bridge_record_id int NOT NULL,
type text);
SQL
primary_model.has_many :child_bridges, anonymous_class: child_bridge_model, foreign_key: :primary_record_id
child_bridge_model.has_one :child_secondary, anonymous_class: child_secondary_model, foreign_key: :bridge_record_id
primary_model.has_many :child_secondaries, through: :child_bridges, anonymous_class: child_secondary_model, disable_joins: true
primary_record = primary_model.create!
parent_bridge_record = bridge_model.create!(primary_record_id: primary_record.id)
child_bridge_record = child_bridge_model.create!(primary_record_id: primary_record.id)
secondary_model.create!(bridge_record_id: child_bridge_record.id)
child_secondary_model.create!(bridge_record_id: parent_bridge_record.id)
child_secondary_model.create!(bridge_record_id: child_bridge_record.id)
end
it 'filters correctly by the STI type across multiple queries' do
primary_record = primary_model.first
query_recorder = ActiveRecord::QueryRecorder.new do
expect(primary_record.child_secondaries.count).to eq(1)
end
expect(query_recorder.count).to eq(2)
end
end
context 'querying polymorphic relationships' do
before do
create_tables(<<~SQL)
CREATE TABLE _test_primary_records (
id serial NOT NULL PRIMARY KEY);
CREATE TABLE _test_bridge_records (
id serial NOT NULL PRIMARY KEY,
primaryable_id int NOT NULL,
primaryable_type text NOT NULL);
CREATE TABLE _test_secondary_records (
id serial NOT NULL PRIMARY KEY,
bridgeable_id int NOT NULL,
bridgeable_type text NOT NULL);
SQL
primary_model.has_many :test_bridges, anonymous_class: bridge_model, foreign_key: :primaryable_id, as: :primaryable
bridge_model.has_one :test_secondaries, anonymous_class: secondary_model, foreign_key: :bridgeable_id, as: :bridgeable
primary_model.has_many :test_secondaries, through: :test_bridges, anonymous_class: secondary_model, disable_joins: true
primary_record = primary_model.create!
primary_bridge_record = bridge_model.create!(primaryable_id: primary_record.id, primaryable_type: 'TestPrimary')
nonprimary_bridge_record = bridge_model.create!(primaryable_id: primary_record.id, primaryable_type: 'NonPrimary')
secondary_model.create!(bridgeable_id: primary_bridge_record.id, bridgeable_type: 'TestBridge')
secondary_model.create!(bridgeable_id: nonprimary_bridge_record.id, bridgeable_type: 'TestBridge')
secondary_model.create!(bridgeable_id: primary_bridge_record.id, bridgeable_type: 'NonBridge')
end
it 'filters correctly by the polymorphic type across multiple queries' do
primary_record = primary_model.first
query_recorder = ActiveRecord::QueryRecorder.new do
expect(primary_record.test_secondaries.count).to eq(1)
end
expect(query_recorder.count).to eq(2)
end
end
def create_tables(table_sql)
ApplicationRecord.connection.execute(table_sql)
bridge_model.reset_column_information
secondary_model.reset_column_information
end
end

View File

@ -6,6 +6,15 @@ RSpec.describe 'OmniAuth::Strategies::SAML', type: :strategy do
let(:idp_sso_target_url) { 'https://login.example.com/idp' }
let(:strategy) { [OmniAuth::Strategies::SAML, { idp_sso_target_url: idp_sso_target_url }] }
before do
mock_session = {}
allow(mock_session).to receive(:enabled?).and_return(true)
allow(mock_session).to receive(:loaded?).and_return(true)
env('rack.session', mock_session)
end
describe 'POST /users/auth/saml' do
it 'redirects to the provider login page', :aggregate_failures do
post '/users/auth/saml'

View File

@ -0,0 +1,36 @@
# frozen_string_literal: true
require 'spec_helper'
# Adds a missing test to provide full coverage for the patch
RSpec.describe 'ActionDispatch::Journey::Router Patch', feature_category: :database do
before do
load Rails.root.join('config/initializers/action_dispatch_journey_router.rb')
end
describe '#find_routes' do
context 'when a route has additional constrains' do
it 'does not raise an error' do
stub_const('PagesController', Class.new(ApplicationController))
set = ActionDispatch::Routing::RouteSet.new
set.draw do
get "*namespace_id/:project_id/bar",
to: "pages#show",
constraints: {
namespace_id: %r{(?!api/)[a-zA-Z0-9_\\]+},
project_id: /[a-zA-Z0-9]+/
}
get "/api/foo/bar", to: "pages#index"
end
params = set.recognize_path("/api/foo/bar", method: :get)
expect(params[:controller]).to eq('pages')
expect(params[:action]).to eq('index')
end
end
end
end

View File

@ -0,0 +1,20 @@
# frozen_string_literal: true
require 'spec_helper'
# A missing test to provide full coverage for the patch
RSpec.describe 'ActiveRecord PostgreSQL Timespamp With Timezone', feature_category: :database do
before do
load Rails.root.join('config/initializers/activerecord_postgresql_timestamp_with_timezone_patches.rb')
end
describe '#cast_value' do
it 'returns local time' do
timestamp = ActiveRecord::ConnectionAdapters::PostgreSQL::OID::TimestampWithTimeZone.new
allow(ActiveRecord).to receive(:default_timezone).and_return(:local)
expect(timestamp.cast_value(DateTime.now)).not_to be_utc
end
end
end

View File

@ -181,7 +181,7 @@ RSpec.describe Gitlab::Auth::AuthFinders, feature_category: :system_access do
set_header('HTTP_ACCEPT', 'application/atom+xml')
end
context 'when feed_token param is provided' do
context 'when old format feed_token param is provided' do
it 'returns user if valid feed_token' do
set_param(:feed_token, user.feed_token)
@ -206,7 +206,44 @@ RSpec.describe Gitlab::Auth::AuthFinders, feature_category: :system_access do
end
end
context 'when rss_token param is provided' do
context 'when path-dependent format feed_token param is provided' do
let_it_be(:feed_user, freeze: true) { create(:user, feed_token: 'KNOWN VALUE').tap(&:feed_token) }
# The middle part is the output of OpenSSL::HMAC.hexdigest("SHA256", 'KNOWN VALUE', 'url.atom')
let(:feed_token) { "glft-a8cc74ccb0de004d09a968705ba49099229b288b3de43f26c473a9d8d7fb7693-#{feed_user.id}" }
it 'returns user if valid feed_token' do
set_param(:feed_token, feed_token)
expect(find_user_from_feed_token(:rss)).to eq feed_user
end
it 'returns nil if valid feed_token and disabled' do
allow(Gitlab::CurrentSettings).to receive_messages(disable_feed_token: true)
set_param(:feed_token, feed_token)
expect(find_user_from_feed_token(:rss)).to be_nil
end
it 'returns exception if token has same HMAC but different user ID' do
set_param(:feed_token, "glft-a8cc74ccb0de004d09a968705ba49099229b288b3de43f26c473a9d8d7fb7693-#{user.id}")
expect { find_user_from_feed_token(:rss) }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
it 'returns exception if token has wrong HMAC but same user ID' do
set_param(:feed_token, "glft-aaaaaaaaaade004d09a968705ba49099229b288b3de43f26c473a9d8d7fb7693-#{feed_user.id}")
expect { find_user_from_feed_token(:rss) }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
it 'returns exception if user does not exist' do
set_param(:feed_token, "glft-a8cc74ccb0de004d09a968705ba49099229b288b3de43f26c473a9d8d7fb7693-#{non_existing_record_id}")
expect { find_user_from_feed_token(:rss) }.to raise_error(Gitlab::Auth::UnauthorizedError)
end
end
context 'when old format rss_token param is provided' do
it 'returns user if valid rss_token' do
set_param(:rss_token, user.feed_token)

View File

@ -1,43 +0,0 @@
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::Database::PostgresqlAdapter::EmptyQueryPing do
describe '#active?' do
let(:adapter_class) do
Class.new do
include Gitlab::Database::PostgresqlAdapter::EmptyQueryPing
def initialize(connection, lock)
@connection = connection
@lock = lock
end
end
end
subject { adapter_class.new(connection, lock).active? }
let(:connection) { double(query: nil) }
let(:lock) { double }
before do
allow(lock).to receive(:synchronize).and_yield
end
it 'uses an empty query to check liveness' do
expect(connection).to receive(:query).with(';')
subject
end
it 'returns true if no error was signaled' do
expect(subject).to be_truthy
end
it 'returns false when an error occurs' do
expect(lock).to receive(:synchronize).and_raise(PG::Error)
expect(subject).to be_falsey
end
end
end

View File

@ -13,7 +13,7 @@ RSpec.describe Gitlab::Database::PostgresqlAdapter::TypeMapCache do
describe '#initialize_type_map' do
it 'caches loading of types in memory' do
recorder_without_cache = ActiveRecord::QueryRecorder.new(skip_schema_queries: false) { initialize_connection.disconnect! }
expect(recorder_without_cache.log).to include(a_string_matching(/FROM pg_type/)).twice
expect(recorder_without_cache.log).to include(a_string_matching(/FROM pg_type/)).exactly(4).times
recorder_with_cache = ActiveRecord::QueryRecorder.new(skip_schema_queries: false) { initialize_connection.disconnect! }
@ -33,7 +33,7 @@ RSpec.describe Gitlab::Database::PostgresqlAdapter::TypeMapCache do
recorder = ActiveRecord::QueryRecorder.new(skip_schema_queries: false) { initialize_connection(other_config).disconnect! }
expect(recorder.log).to include(a_string_matching(/FROM pg_type/)).twice
expect(recorder.log).to include(a_string_matching(/FROM pg_type/)).exactly(4).times
end
end
@ -44,7 +44,7 @@ RSpec.describe Gitlab::Database::PostgresqlAdapter::TypeMapCache do
connection = initialize_connection
recorder = ActiveRecord::QueryRecorder.new(skip_schema_queries: false) { connection.reload_type_map }
expect(recorder.log).to include(a_string_matching(/FROM pg_type/)).once
expect(recorder.log).to include(a_string_matching(/FROM pg_type/)).exactly(3).times
end
end

View File

@ -103,7 +103,7 @@ RSpec.describe Gitlab::Database, feature_category: :database do
before do
# CI config might not be configured
allow(ActiveRecord::Base.configurations).to receive(:configs_for)
.with(env_name: 'test', name: 'ci', include_replicas: true)
.with(env_name: 'test', name: 'ci', include_hidden: true)
.and_return(ci_db_config)
end

View File

@ -77,8 +77,8 @@ RSpec.describe Gitlab::Kas::Client do
let(:request) { instance_double(Gitlab::Agent::ConfigurationProject::Rpc::ListAgentConfigFilesRequest) }
let(:response) { double(Gitlab::Agent::ConfigurationProject::Rpc::ListAgentConfigFilesResponse, config_files: agent_configurations) }
let(:repository) { instance_double(Gitlab::Agent::Modserver::Repository) }
let(:gitaly_address) { instance_double(Gitlab::Agent::Modserver::GitalyAddress) }
let(:repository) { instance_double(Gitlab::Agent::Entity::GitalyRepository) }
let(:gitaly_info) { instance_double(Gitlab::Agent::Entity::GitalyInfo) }
let(:agent_configurations) { [double] }
@ -89,16 +89,16 @@ RSpec.describe Gitlab::Kas::Client do
.with('example.kas.internal', :this_channel_is_insecure, timeout: described_class::TIMEOUT)
.and_return(stub)
expect(Gitlab::Agent::Modserver::Repository).to receive(:new)
expect(Gitlab::Agent::Entity::GitalyRepository).to receive(:new)
.with(project.repository.gitaly_repository.to_h)
.and_return(repository)
expect(Gitlab::Agent::Modserver::GitalyAddress).to receive(:new)
expect(Gitlab::Agent::Entity::GitalyInfo).to receive(:new)
.with(Gitlab::GitalyClient.connection_data(project.repository_storage))
.and_return(gitaly_address)
.and_return(gitaly_info)
expect(Gitlab::Agent::ConfigurationProject::Rpc::ListAgentConfigFilesRequest).to receive(:new)
.with(repository: repository, gitaly_address: gitaly_address)
.with(repository: repository, gitaly_info: gitaly_info)
.and_return(request)
expect(stub).to receive(:list_agent_config_files)
@ -112,7 +112,8 @@ RSpec.describe Gitlab::Kas::Client do
describe '#send_git_push_event' do
let(:stub) { instance_double(Gitlab::Agent::Notifications::Rpc::Notifications::Stub) }
let(:request) { instance_double(Gitlab::Agent::Notifications::Rpc::GitPushEventRequest) }
let(:project_param) { instance_double(Gitlab::Agent::Notifications::Rpc::Project) }
let(:event_param) { instance_double(Gitlab::Agent::Event::GitPushEvent) }
let(:project_param) { instance_double(Gitlab::Agent::Event::Project) }
let(:response) { double(Gitlab::Agent::Notifications::Rpc::GitPushEventResponse) }
subject { described_class.new.send_git_push_event(project: project) }
@ -122,12 +123,16 @@ RSpec.describe Gitlab::Kas::Client do
.with('example.kas.internal', :this_channel_is_insecure, timeout: described_class::TIMEOUT)
.and_return(stub)
expect(Gitlab::Agent::Notifications::Rpc::Project).to receive(:new)
expect(Gitlab::Agent::Event::Project).to receive(:new)
.with(id: project.id, full_path: project.full_path)
.and_return(project_param)
expect(Gitlab::Agent::Notifications::Rpc::GitPushEventRequest).to receive(:new)
expect(Gitlab::Agent::Event::GitPushEvent).to receive(:new)
.with(project: project_param)
.and_return(event_param)
expect(Gitlab::Agent::Notifications::Rpc::GitPushEventRequest).to receive(:new)
.with(event: event_param)
.and_return(request)
expect(stub).to receive(:git_push_event)

View File

@ -258,6 +258,11 @@ RSpec.describe Gitlab::RackAttack::Request do
valid_token = SecureRandom.base64(ActionController::RequestForgeryProtection::AUTHENTICITY_TOKEN_LENGTH)
other_token = SecureRandom.base64(ActionController::RequestForgeryProtection::AUTHENTICITY_TOKEN_LENGTH)
before do
allow(session).to receive(:enabled?).and_return(true)
allow(session).to receive(:loaded?).and_return(true)
end
where(:session, :env, :expected) do
{} | {} | false
{} | { 'HTTP_X_CSRF_TOKEN' => valid_token } | false

View File

@ -13,6 +13,11 @@ RSpec.describe Gitlab::RequestForgeryProtection, :allow_forgery_protection do
}
end
before do
allow(env['rack.session']).to receive(:enabled?).and_return(true)
allow(env['rack.session']).to receive(:loaded?).and_return(true)
end
it 'logs to /dev/null' do
expect(ActiveSupport::Logger).to receive(:new).with(File::NULL)

Some files were not shown because too many files have changed in this diff Show More