Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
5af83f0772
commit
42d323de78
|
|
@ -21,7 +21,7 @@
|
|||
/doc/administration/redis/ @axil
|
||||
/doc/administration/reference_architectures/ @axil
|
||||
/doc/administration/snippets/ @aqualls
|
||||
/doc/administration/troubleshooting @axil @marcia
|
||||
/doc/administration/troubleshooting @axil @marcia @eread
|
||||
/doc/api/group_activity_analytics.md @msedlakjakubowski
|
||||
/doc/ci/ @marcel.amirault @sselhorn
|
||||
/doc/ci/environments/ @axil
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
/doc/development/value_stream_analytics.md @msedlakjakubowski
|
||||
/doc/gitlab-basics/ @marcia
|
||||
/doc/install/ @axil
|
||||
/doc/integration/ @aqualls
|
||||
/doc/integration/ @aqualls @eread
|
||||
/doc/operations/ @ngaskill @axil
|
||||
/doc/push_rules/ @aqualls
|
||||
/doc/ssh/ @eread
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
/doc/user/analytics/ @msedlakjakubowski @ngaskill
|
||||
/doc/user/application_security @rdickenson
|
||||
/doc/user/clusters/ @marcia
|
||||
/doc/user/compliance/ @rdickenson
|
||||
/doc/user/compliance/ @rdickenson @eread
|
||||
/doc/user/group/ @msedlakjakubowski
|
||||
/doc/user/group/bulk_editing/ @msedlakjakubowski
|
||||
/doc/user/group/devops_adoption/ @msedlakjakubowski
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
/doc/user/group/value_stream_analytics/ @msedlakjakubowski
|
||||
/doc/user/infrastructure/ @marcia
|
||||
/doc/user/packages/ @ngaskill
|
||||
/doc/user/profile/ @msedlakjakubowski
|
||||
/doc/user/profile/ @msedlakjakubowski @eread
|
||||
/doc/user/project/ @aqualls @axil @eread @msedlakjakubowski @ngaskill
|
||||
/doc/user/project/clusters/ @ngaskill
|
||||
/doc/user/project/import/ @ngaskill @msedlakjakubowski
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
/doc/user/project/milestones/ @msedlakjakubowski
|
||||
/doc/user/project/pages/ @axil
|
||||
/doc/user/project/repository/ @aqualls
|
||||
/doc/user/project/settings/ @aqualls
|
||||
/doc/user/project/settings/ @aqualls @eread
|
||||
/doc/user/project/static_site_editor/index.md @aqualls
|
||||
/doc/user/project/web_ide/index.md @aqualls
|
||||
/doc/user/project/wiki/index.md @aqualls
|
||||
|
|
|
|||
|
|
@ -2681,7 +2681,6 @@ Performance/OpenStruct:
|
|||
- 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb'
|
||||
- 'lib/api/wikis.rb'
|
||||
- 'lib/gitlab/ci/ansi2html.rb'
|
||||
- 'lib/gitlab/ci/reports/test_suite_comparer.rb'
|
||||
- 'lib/gitlab/git/diff_collection.rb'
|
||||
- 'lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb'
|
||||
- 'lib/gitlab/testing/request_inspector_middleware.rb'
|
||||
|
|
|
|||
597
CHANGELOG.md
597
CHANGELOG.md
|
|
@ -2,6 +2,603 @@
|
|||
documentation](doc/development/changelog.md) for instructions on adding your own
|
||||
entry.
|
||||
|
||||
## 13.12.0 (2021-05-22)
|
||||
|
||||
### Security (3 changes)
|
||||
|
||||
- Prevent DOS from Chaining in Mermaid. !60382
|
||||
- Report pipeline creation success only when warranted. !60746
|
||||
- Fix XSS vulnerability in shared runner description. !60891
|
||||
|
||||
### Removed (10 changes, 2 of them are from the community)
|
||||
|
||||
- Delete feature flag for usage_data_a_compliance_audit_events_api. !52947
|
||||
- Remove feature flag api_always_use_application_json. !56777
|
||||
- Remove unneeded index on packages_debian_{project,group}_architectures.distribution_id. !59615 (Mathieu Parent)
|
||||
- Delete HipChat service database records. !59769
|
||||
- Set Hipchat metric definitions status to removed. !59779
|
||||
- Remove Legacy Group-Level DORA metrics API. !59858
|
||||
- Remove Alerts service metric. !60149
|
||||
- Remove description_html field from Release Rest API. !61327
|
||||
- Removes multiple_cache_per_job feature flag and associated code. (Laura Montemayor)
|
||||
- Remove support for WIP in merge request title toggle.
|
||||
|
||||
### Fixed (108 changes, 32 of them are from the community)
|
||||
|
||||
- Add warning when locally stored description is out of date. !29438
|
||||
- Disable unsupported task items in Markdown tables. !46060
|
||||
- Flush statistics cache anytime it is updated. !52938
|
||||
- Return an HTML response for a request with the Accept */* header. !56288
|
||||
- Resolve offense Performance/Count. !57007 (Shubham Kumar (@imskr))
|
||||
- Don't show due dates in red if the issue is closed. !57647 (Daniel Ziegenberg <daniel@ziegenberg.at>)
|
||||
- Fix Rails/SaveBang Rubocop offenses for wiki_page models. !57899 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix Rails/SaveBang rubocop offenses in spec/frontend. !57909 (Abdul Wadood @abdulwd)
|
||||
- Fix Rails/SaveBang rubocop offenses in spec/graphql. !57912 (Abdul Wadood @abdulwd)
|
||||
- Resolve RuboCop offenses for Style/RedundantRegexpCharacterClass. !57914 (Shubham Kumar @imskr)
|
||||
- Fixes rubocop offenses Style/RescueStandardError. !57923 (Shubham Kumar (@imskr))
|
||||
- Resolves rubocop offense Style/RedundantFileExtensionInRequire. !57963 (Shubham Kumar (@imskr))
|
||||
- Fix Rails/SaveBang Rubocop offenses for project related models. !57983 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix Rails/SaveBang Rubocop offenses for member models. !57994 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Resolves offenses Style/RaiseArgs. !58009 (Shubham Kumar @imskr)
|
||||
- Resolves offenses Style/RedundantBegin. !58017 (Shubham Kumar (@imskr))
|
||||
- Resolves offenses Security/YAMLLoad. !58042 (Shubham Kumar (@imskr))
|
||||
- Resolves rubocop offenses Rails/WhereEquals. !58067 (Shubham Kumar (@imskr))
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses for merge request module. !58185 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe Rubocop offenses for projects module. !58187 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses for alert management module. !58191 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/graphql/resolvers. !58239 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/ci. !58249 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/database. !58251 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/git. !58254 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/repository. !58308 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/packages. !58370 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/releases. !58384 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/wiki_page. !58388 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/presenters. !58405 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/services/ci. !58411 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix EmptyLineAfterFinalLetItBe offenses in spec/services/feature_flags. !58419 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Fix RSpec/EmptyLineAfterFinalLetItBe rubocop offenses in spec/workers. !58421 (Abdul Wadood @abdulwd)
|
||||
- Prevent loss of timelogs when deleting notes. !58525 (Lee Tickett @leetickett)
|
||||
- Fix multiline comment dragging in Firefox. !58692
|
||||
- Update cached count for "done" todos when deleting todo targets. !58773
|
||||
- Fix light label text color in dark mode. !59088
|
||||
- Fix false positive for codequality mr diff report. !59421
|
||||
- Fix for shell announcement banners. !59482
|
||||
- Reschedule background migration to copy projects.container_registry_enabled to project_features.container_registry_access_level. !59513
|
||||
- Fix images not showing in Jupyter Markdown tables. !59551
|
||||
- Fix paginator of Environment Serializer. !59751
|
||||
- Add generic avatar method for users and groups. !59758
|
||||
- Set Web hook defaults to intended default values. !59814
|
||||
- Fix restrictive permissions for ProjectMembers who are owners. !59844
|
||||
- Users search: fix avatar size. !59883
|
||||
- Fix cascading settings attr writer behavior. !59910
|
||||
- Set a default region to Workhorse S3 client. !59932
|
||||
- Fix invite banner display member count for subgroups page. !59948
|
||||
- Fix LFS push mirroring for mirrors set up a long time ago. !59972
|
||||
- Fix pipeline status when DAG jobs needs manual jobs. !59975
|
||||
- Fix tag matching behavior on New Release page. !60035
|
||||
- Fix bug that prevented searching for group/project members with multiple words. !60051
|
||||
- Fix link to subgroup OAuth application. !60066
|
||||
- Explicitly destroy webhooks and logs before the project deletion. !60122
|
||||
- Upgrade omniauth_openid_connect gem to our own fork. !60181
|
||||
- Fix bug when board card label is clicked. !60327
|
||||
- Align help icon for code quality merge request widget. !60330
|
||||
- Fast destroy job artifacts when destroying a pipeline. !60391
|
||||
- Ensure we never error in web hook logs. !60408
|
||||
- Fix bug where test report was not showing while pipeline was running. !60416
|
||||
- Do not set experiment cookie on self managed and delete existing cookies. !60419
|
||||
- Fix regression in GraphQL field MergeRequest.assignees.webUrl. !60428
|
||||
- Fix usage ping misreporting consolidated object storage settings. !60526
|
||||
- Fixes bug where variables are being filtered that do not have a value but a key. !60538
|
||||
- Fix MR sidebar rendering on mobile. !60552
|
||||
- Fix EnvironmentSerializer preloads unrelated pipelines/builds. !60562
|
||||
- Don't email issue email participants confidential comments. !60594 (Lee Tickett @leetickett)
|
||||
- Resolve Cannot Set Assignee in Boards View for self-managed GitLab with Relative URL. !60711
|
||||
- Check duplicate package regex against version as well as name. !60760
|
||||
- Fix Openshift template to run on main branch. !60811
|
||||
- Fix downloadable artifacts for pipeline. !60836
|
||||
- Fix SMTP errors when delivering service desk thank you emails with SMTP pool enabled. !60843
|
||||
- Fix changelog Dangerfile to convert MR IID to a string before comparison. !60899
|
||||
- Fix due date being randomly set in issue page. !60917
|
||||
- Disable autocomplete for due date in issue sidebar to prevent triggering updates on Chrome. !60973
|
||||
- Remove subscribed field from todos, related issues, and epic issues API. !60981
|
||||
- Fixed quick actions link not showing in diff line comment forms. !61029
|
||||
- Fixes merge request controls not visible when merge request has single commit. !61030
|
||||
- Fixed preview review comment not working with single file diff mode. !61032
|
||||
- Fixed dollar signs in suggestions getting replaced incorrectly. !61041
|
||||
- Fix artifacts dropdown for merge request and commits pipelines tables. !61045
|
||||
- Remove hyphen from Cloudrail CI template name. !61079
|
||||
- Bust the cache for /whats-new. !61081
|
||||
- Fix commit messages text color in dark mode. !61082
|
||||
- Suppress all non-nullable field errors for assignee widget graphql queries to remove assignee fetching error messages in boards. !61091
|
||||
- Correct the 'blocked' scope in 'Member' class. !61108
|
||||
- Preserve user changes in the wiki editor if multiple people edit the page. !61120
|
||||
- Fix multiple assignees checked in boards sidebar. !61227
|
||||
- Fix incorrect issue and merge requests counts with filters. !61230
|
||||
- Fix slack label filter behavior blank. !61236
|
||||
- GithubImport: Fix Review importer when the author does not exist anymore. !61257
|
||||
- Restrict issue creation via API by relevant permissions. !61281
|
||||
- Merge Request API: Treat 0 as a non-assigning sentinel value. !61301
|
||||
- Remove extra padding and margin from merge request widget review app dropdown chevron. !61302
|
||||
- Fix a bug displaying project commit anchors. !61361
|
||||
- Reset Source Editor's layout after Startup CSS. !61426
|
||||
- GithubImporter: Fix "ArgumentError: string contains null byte". !61480
|
||||
- Use correct scope when authorizing with Jira GitHub DVCS connector. !61496
|
||||
- Fix user popover bio overflow. !61555
|
||||
- Hide commit msg for package files without pipeline. !61571
|
||||
- Fix position of note actions. !61594
|
||||
- Inject Feature Flags Limit Value. !61621
|
||||
- Fix services API returning non-existing services. !61646
|
||||
- Fix Jira Connect sign in button style. !61665
|
||||
- Filter out unconnected-to-user members from receiving on access request emails. !61819
|
||||
- Fixed Rails Save Bang offenses in few spec/models/* files. !61862 (Suraj Tripathi @surajtripathy07)
|
||||
- Fix issuable search optimization in PG12. !61880
|
||||
|
||||
### Deprecated (4 changes, 1 of them is from the community)
|
||||
|
||||
- Deprecate Alerts service metric. !59899
|
||||
- Add Managed Prometheus deprecation warning. !60560
|
||||
- Deprecate SetWip GraphQL mutation and add SetDraft mutation. !60803
|
||||
- Add GraphQL field 'Project.topics' and deprecate 'Project.tag_list'. !61250 (Jonas Wälter @wwwjon)
|
||||
|
||||
### Changed (145 changes, 52 of them are from the community)
|
||||
|
||||
- Update admin users to use GitLab UI table by default. !54085
|
||||
- Remove artifact expiry backfill temp index. !54252
|
||||
- Enable the new pipeline form by default. !55250
|
||||
- Add migration to update plans on new post-EoA subscriptions. !55625
|
||||
- Add support for retries to Advanced Search reindexing. !55681
|
||||
- Add missing parts of GraphQL schema to GraphQL documentation. !55944
|
||||
- Update Keyboard shortcut help: adding search, update styling. !56400
|
||||
- Redirect to activity page when accepting invitation. !56695
|
||||
- Add external documentation references in GraphQL. !56704
|
||||
- Send in-product marketing email usage data. !56752
|
||||
- Enable new RPC to destroy wiki pages. !57106
|
||||
- Always resolve GitLab alerts when recovery alert payload is received. !57302
|
||||
- Add gl-badge for badges in pipeline schedules nav. !57937 (Yogi (@yo))
|
||||
- Add gl-badge for badges in jobs page nav. !57938 (Yogi (@yo))
|
||||
- Add gl-badge class for tag's badge. !57939 (Yogi (@yo))
|
||||
- Add gl-badge for badges in MRs and issues nav. !57942 (Yogi (@yo))
|
||||
- Add gl-badge for badges in todos nav. !57943 (Yogi (@yo))
|
||||
- Add gl-badge for badges in admin users nav. !57951 (Yogi (@yo))
|
||||
- Add gl-badge for storage badge in admin groups page. !57954 (Yogi (@yo))
|
||||
- Add gl-badge for badges in milestone drawer. !57964 (Yogi (@yo))
|
||||
- Add gl-badge for badges in snippets nav. !57966 (Yogi (@yo))
|
||||
- Add gl-badge for badges in pipeline page nav. !57970 (Yogi (@yo))
|
||||
- Add gl-badge for badges in project search page nav. !57971 (Yogi (@yo))
|
||||
- Add gl-badge for badges in new MR nav. !57995 (Yogi (@yo))
|
||||
- Apply gl-form-input for fields in ssh keys page. !58000 (Yogi (@yo))
|
||||
- Apply gl-form-input for fields in preferences page. !58004 (Yogi (@yo))
|
||||
- Apply gl-form-input for search field in milestone page. !58007 (Yogi (@yo))
|
||||
- Apply gl-form-input for fields in new project milestone page. !58010 (Yogi (@yo))
|
||||
- Move to btn-confirm from btn-success in emails directory. !58029 (Yogi (@yo))
|
||||
- Move badge to vue component in project badges. !58045 (Yogi (@yo))
|
||||
- Switch to gl-badge in whats new dropdown. !58235 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in create project page. !58299 (Yogi (@yo))
|
||||
- Move to btn-confirm from btn-success in create from template page. !58303 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in gitlab import page. !58304 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in bitbucket import page. !58309 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in fogbugz import page. !58312 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in gitea import page. !58313 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in import page. !58316 (Yogi (@yo))
|
||||
- Add gl-form-input class for fields in phabricator import page. !58318 (Yogi (@yo))
|
||||
- Change text for incident auto-resolve setting to match behavior. !58515
|
||||
- Move license history to gl-table utility class. !58531 (Yogi (@yo))
|
||||
- Add margin top for clear repo check button in admin. !58536 (Yogi (@yo))
|
||||
- Add more padding for whats new badge in drawer. !58544 (Yogi (@yo))
|
||||
- Add pause_ms column to batched_background_migrations and batched_background_migration_jobs. !58583
|
||||
- Geo: Add verification for Terraform States. !58800
|
||||
- Disable automatic setup of alerts for Prometheus cluster integration. !58853
|
||||
- Improve message for :project_not_found error to indicate possible cause. !58945 (Ignacy Moryc @ignacy)
|
||||
- Rename 'no contributions' to 'No contributions' in profile activity graph helper. !59076 (Yogi (@yo))
|
||||
- Center align project home navigation. !59079 (Yogi (@yo))
|
||||
- Move to new GitLab UI for card in health check page. !59081 (Yogi (@yo))
|
||||
- Update to question-o and change color in admin users. !59133 (Yogi (@yo))
|
||||
- Update to question-o from question icon in navbar. !59134 (Yogi (@yo))
|
||||
- Update to question-o from question icon in user stats. !59135 (Yogi (@yo))
|
||||
- Move card in billing page to gl-card utility class. !59138 (Yogi (@yo))
|
||||
- LibreOffice/OpenOffice file extensions in icon map. !59159 (Holzfeind, Daniel Georg)
|
||||
- Export issues sorted by relative position and recompute issue relative position on project import. !59175
|
||||
- Move 2fa recovery codes to GlCard component. !59219 (Yogi (@yo))
|
||||
- Add gl-form-input utility class for pin code field in 2fa. !59220 (Yogi (@yo))
|
||||
- Replace invite banner button with modal trigger. !59260
|
||||
- Resolve Abstract participants dropdown to a shared component. !59358
|
||||
- Make new project ui the only option. !59452
|
||||
- Add space next to spinner in Preview payload button. !59458 (Yogi (@yo))
|
||||
- Add btn-default class in seat link payload button. !59459 (Yogi (@yo))
|
||||
- Add VulnerabiltyFindingEvidenceRequest model. !59539
|
||||
- Add VulnerabiltyFindingEvidenceResponse model. !59563
|
||||
- Add gl-badge utility class for deleted projects tab. !59590 (Yogi (@yo))
|
||||
- Move npm and yarn to new dropdown UI. !59628
|
||||
- Change artifacts download button to a vertical ellipsis menu. !59667
|
||||
- Correct variant of Rebase button in MR widget. !59684
|
||||
- Improve merge message UI text. !59693
|
||||
- Use GlModal for Confirmation of Deploy Key Delete. !59697
|
||||
- Add ability to order cluster token by last used. !59716
|
||||
- Make new issue, merge request, and epic emails more consistent. !59718
|
||||
- Add merge request interaction details to MergeRequest.assignees. !59770
|
||||
- Expose enable_advanced_logs_querying in Environments API. !59772
|
||||
- Increase note actions target size. !59776
|
||||
- Redesign the DevOps Score report. !59856
|
||||
- Bumped image in the CI-Template Jobs/Build.gitlab-ci.yml to 0.6.0. !59882 (Daniel Estermann (@d.esterman))
|
||||
- Expose job and project queued duration in all APIs. !59901
|
||||
- Include installable and/or displayable packages only in package finders. !59921
|
||||
- Log exceptions in Lfs::PushService. !59960
|
||||
- Container Registry Details: split details from tags call. !59969
|
||||
- Add ability to include self in cascading setting lock check. !60031
|
||||
- Remove workhorse_extract_filename_base feature flag. !60070
|
||||
- Support worker_name predicate in Sidekiq queue selector. !60084
|
||||
- Add Gradle Kotlin installations commands. !60097 (Cromefire_ (@cromefire_))
|
||||
- Fix breadcrumbs and navigation in runner details pages. !60129
|
||||
- Improve dropdown and search in the tags page. !60145
|
||||
- Clarify image repository delete actions. !60154
|
||||
- Update RubyGems and NuGet packages to error status upon metadata extraction failure. !60172
|
||||
- Pre-fill user email address after confirming. !60179
|
||||
- Retain timelog spent_at time. !60191 (Lee Tickett @leetickett)
|
||||
- Update button variants to btn-confirm on MR page. !60254
|
||||
- Rename default branch for empty project actions. !60258
|
||||
- Remove visualization feature flag in pipeline editor. !60273
|
||||
- Reorder source_project_id foreign key constraint in merge_requests table. !60313
|
||||
- Update edit file buttons and spacing. !60318
|
||||
- Keep consistent Global Search tab order. !60319
|
||||
- Toggle subscribed state when clicking on icon in collapsed sidebar. !60345
|
||||
- Add a Spamcheck API key application setting. !60385 (jdsalaro)
|
||||
- Change product-marketing-email sending schedule. !60422
|
||||
- Fix copy on webhook admin pages for "Issues events" and "Confidential issues events". !60453
|
||||
- This change captures resizes of the runner installation instructions modal to make it usable on screens. !60588
|
||||
- Create table user_credit_card_validations. !60626
|
||||
- Update error tracking settings to use better copy and correct colors. !60627
|
||||
- Add sha256 to package file API payload. !60631
|
||||
- Github Importer: Add Cache to Pull Request Reviews importer. !60668
|
||||
- Add username and password fields for Advanced Search. !60710
|
||||
- Migrate DevOps Score empty state to Vue. !60715
|
||||
- Adds field authorization to pipeline fields. !60754
|
||||
- Change conan token expiration from 1 hour to 24 hours. !60763
|
||||
- Remove mobsf service for mobsf SAST job. !60770
|
||||
- Polish the "What's new" UI. !60804 (Kev @KevSlashNull)
|
||||
- Disable web-hooks that fail repeatedly. !60837
|
||||
- Add slack integration individual usage ping. !60847
|
||||
- Extend branch support for Static Site Editor. !60848
|
||||
- Store slice multiplier and max slices running for reindex in DB. !60861
|
||||
- Keep new prometheus cluster integration in sync with old cluster application. !60877
|
||||
- Validate release description length. !60892
|
||||
- i18n: Show translation levels for each language in the UI. !60905
|
||||
- Add kubernetes_agent_proxy_request to usage ping. !60978
|
||||
- Validate CI pipeline jobs dependencies. !60999
|
||||
- Update appearance of "Enable shared runners for this project" toggle in Project > Settings > CI/CD. !61043
|
||||
- Add offset and limit to branch names resolver. !61061
|
||||
- Require 3 or more characters in search term when searching groups in Jira Connect app. !61099
|
||||
- Enforce .git suffix when importing git repo. !61115
|
||||
- Improve field descriptions in the Jira integration form. !61205
|
||||
- Migrate 'tags' to 'topics' for project in the database context. !61237 (Jonas Wälter @wwwjon)
|
||||
- Rename master to main in views placeholders. !61252
|
||||
- Make pipeline retry endpoint async. !61270
|
||||
- Add relations export request when Bulk Import is initiated. !61365
|
||||
- Fix :focus styles for What's New. !61398
|
||||
- Add body to finding evidence requests. !61408
|
||||
- Make semgrep generally available. !61412
|
||||
- clicking backdrop closes modal for What's New. !61420
|
||||
- Scroll to the top of a diff file when it is collapsed. !61432
|
||||
- Wiki: Use FindAllCommits RPC to list page versions. !61459
|
||||
- Allows masking ~ character. !61517 (Thomas Dallmair)
|
||||
- Backfill clusters_integration_elastic_stack.enabled. !61521
|
||||
- Update rails project template to rails 6.1. !61547
|
||||
- Add body to finding evidence responses. !61631
|
||||
- Support warning in pipeline creation by default. !61803
|
||||
- Make find_remote_root_refs_inmemory feature flag enabled by default. !61824
|
||||
- Add link to email notifying of MR changing draft status. !61891
|
||||
- Remove success variant for primary button in upload file modal. (Yogi (@yo))
|
||||
|
||||
### Performance (63 changes, 1 of them is from the community)
|
||||
|
||||
- Make MergeService idempotent. !55368
|
||||
- Speed up save on New/Edit Release page. !57000
|
||||
- Cache path lookups for namespaces. !57027
|
||||
- Cache project tag list. !57031
|
||||
- Linear traversal query for Namespace#ancestors. !57137
|
||||
- Set traversal_ids for every namespace. !57318
|
||||
- Resolve admin_group_member group policy n+1. !58948
|
||||
- Optimize AvailableLabelsService for multiple labels search. !59032
|
||||
- Reduce number of SQL queries when creating SystemNotes. !59102
|
||||
- Enable pagination in the CompareController. !59162
|
||||
- Fix N+1 for commits with pipelines. !59234
|
||||
- Improve diff_files endpoint performance. !59489
|
||||
- Create the merge request pipeline asynchronously on push. !59624
|
||||
- Optimize CI Settings page to reduce N+1 queries. !59625
|
||||
- Linear traversal query for Namespace#descendants. !59632
|
||||
- Remove unnecessary validation avoiding N+1 queries when building integrations. !59635
|
||||
- Improve the packages finder helper SQL queries when handling deploy tokens. !59739
|
||||
- Improve shifting of positions when creating issues. !59745
|
||||
- Remove the longer_count_cache_validity_period feature flag. !59746
|
||||
- Recreate index for deployments updated_at and finished_at. !59771
|
||||
- Exclude build dependency calculation when creating the pipeline. !59810
|
||||
- Improve pagination of users in the admin panel. !59884
|
||||
- Prevent loading of cohorts data in the admin users list. !59890
|
||||
- Avoid loading user objects when bulk updating todos. !59909
|
||||
- Fix N+1 queries in namespace#any_project_has_container_registry_tags?. !59916
|
||||
- Replace OpenStruct with Struct in project_level_stage_adapter.rb. !59956 (Amit Patel @amit.savani)
|
||||
- Recalculate assigned open issues count after cache invalidation. !59961
|
||||
- Improve performance of LFS integrity checks. !59991
|
||||
- Add new service to handle add_spent_time to MRs. !60043
|
||||
- Stop exposing artifacts on pipelines.json. !60126
|
||||
- Improve the Maven API file endpoints response time when a non existing package is requested. !60142
|
||||
- Fix three N+1s in Releases API entity generation. !60189
|
||||
- Remove string duplication in BlobStitcher. !60406
|
||||
- Delete all label links asynchronously when issuable gets destroyed. !60487
|
||||
- Fix releases API N+1 in sorted_links usage. !60561
|
||||
- Refactor notification recipients builder for watchers. !60572
|
||||
- Remove N+1 query from Issue::Metrics#record. !60589
|
||||
- Fix repeating SQL queries when changing labels for a resource. !60718
|
||||
- Fine tune a few queries found in GroupMembers#index. !60857
|
||||
- Fix N+1 problem in CustomEmojiFilter. !60910
|
||||
- Create partial indexes for pending/running builds. !60942
|
||||
- Stop exposing has_downloadable_artifacts in pipelines.json. !60950
|
||||
- Improve performance of project issues API. !60981
|
||||
- Include other cols in index for pending builds. !60997
|
||||
- Remove unnecessary query from close_issue method. !61087
|
||||
- Partial index optimization for namespaces id. !61098
|
||||
- Decrease load time of project select dropdowns. !61117
|
||||
- Apply rate-limiting to webhook executions. !61151
|
||||
- Update grape-path-helpers to v1.6.3. !61196
|
||||
- Improve the performance of Release LIST v4 API endpoint by short-interval caching. !61223
|
||||
- Ensure iid is set before skipping ci pipeline. !61231
|
||||
- Stop exposing artifacts in pipelines.json. !61253
|
||||
- Ensure project iid is set before saving pipeline from web terminal. !61311
|
||||
- Sync traversal path of namespaces. !61329
|
||||
- Enable notification settings recipient refactor by default. !61443
|
||||
- Tie-breaker in Deployment Finder should respect the original sort direction. !61444
|
||||
- Improve memory consumption of issuable APIs. !61561
|
||||
- Fix environment filter of Deployments Finder. !61564
|
||||
- Optimize merge request permission check for references. !61591
|
||||
- Introduced granular control to Monaco tag. !61690
|
||||
- Apply rate-limit cache to branches endpoint. !61723
|
||||
- Enforce updated_at ordering in Deployment API for performance optimization. !61870
|
||||
- Resolve Remove `subscribed` from GraphQL boards list query. !61881
|
||||
|
||||
### Added (114 changes, 16 of them are from the community)
|
||||
|
||||
- Commit author for suggestions is note author. !39940
|
||||
- Report summarized Gitaly Apdex via usage ping. !47040
|
||||
- Allow disabling build stage for Auto Devops. !48638 (Shane Davidson @shanekdavidson)
|
||||
- Allow access to registry API of the current project using the job token. !49750 (Mathieu Parent)
|
||||
- Integrate with the Spamcheck anti-spam engine. !52385
|
||||
- Add generating Speedscope flamegraphs for a request. !53288
|
||||
- Add collapsible section shortcut to markdown controls. !54938
|
||||
- Add Terraform Module Registry. !55018
|
||||
- Clear group open issues count cache when bulk updating issues state. !56386
|
||||
- Add options for Slack and Mattermost label filter behavior. !56657
|
||||
- Create packages_helm_file_metadata table. !57017 (Mathieu Parent)
|
||||
- Add "previously merged commits" dropdown in merge request compare dropdown. !57026
|
||||
- Add specific rate limits for Package Registry (Package API). !57029 (Jonas Wälter @wwwjon)
|
||||
- Expose merge request timelogs via GraphQL. !57322 (Lee Tickett @leetickett)
|
||||
- Automate deactivation of dormant users for self-managed instances. !57778
|
||||
- Add indexes for cleanup policies on container_repositories and container_expiration_policies. !58123
|
||||
- Add CI runner counts to usage ping. !58197
|
||||
- Add snoplow tracking to Releases API. !58221
|
||||
- Add ConfigureSecretDetection graphql mutation. !58230
|
||||
- Adds access token endpoints to OpenAPI. !58620 (jimcser)
|
||||
- Add sorting for group and project packages type. !58657
|
||||
- Add more fields to the GraphQL blob type. !58906
|
||||
- Add commmit_pipeline_path to CreateCommit mutation. !58931
|
||||
- Add cascading namespace setting database migration helper. !58940
|
||||
- Add application setting for What's new. !59011 (Jonas Wälter @wwwjon)
|
||||
- Create "projects/import-remote" to import a project using a remote object storage to fetch the exported project
|
||||
. !59033
|
||||
- Add support to destroy iteration cadences in GraphQL. !59060
|
||||
- Remove feature flag from invite members banner. !59203
|
||||
- Send email to oncall rotation participants and project owners when user is removed. !59331
|
||||
- Improve errors reporting for board lists update. !59549
|
||||
- Add autocomplete to milestone description. !59564 (Jonas Wälter @wwwjon)
|
||||
- Add "active" filter to deploy tokens API. !59582 (Devin Christensen)
|
||||
- Implement Sidekiq queue re-routing in the application. !59604
|
||||
- Added type field into Issues API. !59648 (Raimund Hook @stingrayza)
|
||||
- Expose KAS metadata through GraphQL - enabled, version and externalUrl. !59696
|
||||
- Support board issue filtering by iids in GraphQL. !59703
|
||||
- Add note about SSH key title being public information. !59726
|
||||
- Add missing data to CiJob type. !59805
|
||||
- Add link to documentation in empty pipeline test reports. !59812
|
||||
- Add table to store Security Orchestration Policy Schedules. !59842
|
||||
- Add code owners metric to DevOps adoption page. !59874
|
||||
- Search projects by topic via API. !59900
|
||||
- Remove pages_serve_with_zip_file_protocol feature flag. !59908
|
||||
- Implement variables for pipeline workflow rules. !59970
|
||||
- Add Group relations export models. !59976
|
||||
- Add Group relations export API. !59978
|
||||
- Added tracking to diff view settings. !59979
|
||||
- Remove pages_update_legacy_storage feature flag. !60005
|
||||
- Remove pages_serve_from_legacy_storage feature flag. !60010
|
||||
- Add project_id foreign key to timelogs. !60040 (Lee Tickett @leetickett)
|
||||
- Lazy load artifacts on pipelines list page. !60058
|
||||
- Create database table dast_site_profiles_pipelines. !60090
|
||||
- Allow issueSetDueDate GraphQL mutation to accept null values. !60139
|
||||
- Introduce limit to number of registered runners. !60157
|
||||
- Add isuable time tracking report. !60161 (Lee Tickett @leetickett)
|
||||
- Add internal API support for updating issue types on issues. !60173
|
||||
- Allow merge request search via GraphQL. !60190 (Lee Tickett @leetickett)
|
||||
- Add CI template field to project GraphQL type. !60276
|
||||
- Keep latest pipeline artifact forever. !60400
|
||||
- Expose user permissions on JobType. !60427
|
||||
- Add description and roll_over columns to iterations_cadences. !60436
|
||||
- Populate timelogs.project_id. !60439 (Lee Tickett @leetickett)
|
||||
- Add Ci::Build graphql mutations. !60443
|
||||
- Ensure highlighting limits are documented, configurable, and monitorable. !60445
|
||||
- Add semgrep to SAST config UI. !60460
|
||||
- Add ability to swap revisions when comparing. !60491
|
||||
- Add status_changed_at to deployments webhooks. !60518
|
||||
- Show a random predefined message while MR merging is in progress. !60521
|
||||
- Add ability to view graph by job dependency. !60522
|
||||
- Show Deploy Boards for Environments in Folders. !60525
|
||||
- Allow frontend to observe Prometheus metrics. !60633
|
||||
- Add setting to allow or disallow duplicates for generic packages. !60664
|
||||
- Add Escalation policies and rule tables. !60685
|
||||
- Add support for create, updating, and filtering issues based on issue type in REST API. !60687
|
||||
- Improve logging in e-mail receiver processing. !60692
|
||||
- Allow migrating scheduled and retried Sidekiq jobs to new queues. !60724
|
||||
- Add support for creating/modifying different issue types via GraphQL API. !60747
|
||||
- Add Maven to Package Graphql types. !60808
|
||||
- Add API to set credit card validation timestamp for user. !60828
|
||||
- Add asset links to release keyword. !60896
|
||||
- Application setting for FloC participation (disabled by default). !60933
|
||||
- Add API endpoint for deleting a package file. !60970
|
||||
- Show total group counts in admin users table. !60998
|
||||
- Package: group and project graphql types - add search. !61001
|
||||
- Add missing status type and enum to package graphql type. !61002
|
||||
- Expose blob plain data in GraphQL. !61016
|
||||
- Lazy load artifacts dropdown in pipelines merge request widget. !61055
|
||||
- Remove feature flag from upgrade link in user menu. !61057
|
||||
- Show unit report attachments in the pipeline test report. !61075
|
||||
- Add Elastic Stack cluster integration. !61077
|
||||
- Implement bulk import for all groups on the page. !61097
|
||||
- Add shared_visible_only option to project's groups API. !61118
|
||||
- Add external status check responses. !61135
|
||||
- Add more attributes to the blob GraphQL API. !61155
|
||||
- Add complete field to indicate if a pipeline/job is complete. !61209 (Cong Chen @gentcys)
|
||||
- Add stuck field to CiJob. !61247
|
||||
- Add option to remove labels on issue close in the REST and GraphQL API. !61286
|
||||
- Ban user state and UI. !61292
|
||||
- Enable by default scheduled execution of batched background migrations. !61316
|
||||
- Enable by default automatic optimization of batched background migrations. !61317
|
||||
- Improve UX of the award emoji picker. !61384
|
||||
- Add semgrep to Secure-Binaries and update support docs. !61411
|
||||
- Add cron worker for cleaning up unit test tables. !61463
|
||||
- Redirect to the last visited epic board. !61474
|
||||
- Implement wildcard support for pipeline include file paths. !61507
|
||||
- Add DS_EXCLUDED_ANALYZERS var to Dependency Scanning template. !61529
|
||||
- Add fields to graphQL version type. !61567
|
||||
- Add pipeline editor drawer for introduction to CI. !61620
|
||||
- Add nuget metadata type to Package GraphQl type. !61695
|
||||
- Add repository diskPath parameter to GraphQL API. !61725
|
||||
- Upgrade Pages to v1.39.0. !61756
|
||||
- Add 3 stage pipeline template. !61762
|
||||
- Email users about SSH keys that are expired or expiring soon. !61812
|
||||
- Observe limit to hours setting in timelog report. !61849 (Lee Tickett @leetickett)
|
||||
|
||||
### Other (122 changes, 38 of them are from the community)
|
||||
|
||||
- Enable Content-Security-Policy header by default. !56923
|
||||
- Fix Rails/SaveBang Rubocop offenses for user related models. !57901 (Huzaifa Iftikhar @huzaifaiftikhar)
|
||||
- Externalise strings in _abuse.html.haml. !57968 (nuwe1)
|
||||
- Externalise Strings in /application_settings/_gitaly.html.haml. !57976 (nuwe1)
|
||||
- Externalise strings in application_settings/_plantuml.html.haml. !58023 (nuwe1)
|
||||
- Externalise strings in /application_settings/_prometheus.html.haml. !58030 (nuwe1)
|
||||
- Externalize strings in /application_settings/_signin.html.haml. !58066 (nuwe1)
|
||||
- Externalize strings in application_settings/_spam.html.haml. !58076 (nuwe1)
|
||||
- Externalize strings in application_settings/_terminal.html.haml. !58081 (nuwe1)
|
||||
- Eternalize strings in application_settings/_usage.html.haml. !58088 (nuwe1)
|
||||
- Externalise strings in /admin/users/_form.html.haml. !58096 (nuwe1)
|
||||
- Externalize strings in admin/users/_profile.html.haml. !58106 (nuwe1)
|
||||
- Externalise strings in users/_projects.html.haml. !58110 (nuwe1)
|
||||
- Externalise strings in users/edit.html.haml. !58117 (nuwe1)
|
||||
- Externalize strings in users/projects.html.haml. !58122 (nuwe1)
|
||||
- Externalize strings in /users/show.html.haml. !58126 (nuwe1)
|
||||
- Externalize strings in appearances/_form.html.haml. !58135 (nuwe1)
|
||||
- Externalise strings in appearances/preview_sign_in.html.haml. !58138 (nuwe1)
|
||||
- Externalize strings in /background_jobs/show.html.haml. !58141 (nuwe1)
|
||||
- Externalize strings in broadcast_messages/_form.html.haml. !58143 (nuwe1)
|
||||
- Externalize strings in requests_profiles/index.html.haml. !58161 (nuwe1)
|
||||
- Externalizes strings in runners/show.html.haml. !58166 (nuwe1)
|
||||
- Externalises strings in spam_logs/index.html.haml. !58170 (nuwe1)
|
||||
- Externalise strings in confirmations/new.html.haml. !58173 (nuwe1)
|
||||
- Externalize strings in _confirmation_instructions_secondary.html.haml. !58216 (nuwe1)
|
||||
- Externalize strings in reset_password_instructions.html.haml. !58224 (nuwe1)
|
||||
- Externalise strings in reset_password_instructions.text.erb. !58226 (nuwe1)
|
||||
- Externalize strings in unlock_instructions.text.erb. !58229 (nuwe1)
|
||||
- Externalise strings in shared/_links.erb. !58278 (nuwe1)
|
||||
- Externalize strings in milestones/_header_title.html.haml. !58300 (nuwe1)
|
||||
- Externalize strings in milestones/new.html.haml. !58311 (nuwe1)
|
||||
- Externalize strings in viewers/_changelog.html.haml. !58446 (nuwe1)
|
||||
- Externalize strings in viewers/_contributing.html.haml. !58447 (nuwe1)
|
||||
- Externalize strings in viewers/_download.html.haml. !58450 (nuwe1)
|
||||
- Externalize strings in viewers/_license.html.haml. !58452 (nuwe1)
|
||||
- Externalise-strings-in-viewers/_readme.html.haml. !58456 (nuwe1)
|
||||
- Remove the global default branch feature flag. !59024
|
||||
- Review and revise custom issue tracker UI text. !59277
|
||||
- Add specs ensuring all metric definition key paths are present in Usage Ping structure. !59314
|
||||
- Review and revise EWM integration UI text. !59386
|
||||
- Review UI text and docs for Flowdock integration. !59388
|
||||
- Align UI of Merge Conflicts app with our design system. !59400
|
||||
- Prepare to convert PK type for ci_build_needs. !59467
|
||||
- Upgrade Bootstrap to v4.5.3. !59501
|
||||
- Review UI text and docs - Google Chat. !59518
|
||||
- Make Sentry processors for GitLab-internal error tracking compatible with new version of Sentry gem. !59565
|
||||
- Upgrades the final few bootstrap buttons. !59641
|
||||
- Remove the enabled by default feature flag for maven group level improvements. !59748
|
||||
- Initialize int8 migration for ci_job_artifacts. !59786
|
||||
- Do not require invited users to confirm their email address. !59790
|
||||
- Update GitLab Runner Helm Chart to 0.28.0. !59802
|
||||
- Update Create:Code Review metrics definitions. !59816
|
||||
- Update Metrics Definitions for Runner. !59824
|
||||
- Add group_level? and instance_level? helpers to Service model. !59838 (Amit Patel @amit.savani)
|
||||
- Update UI text for confluence integration. !59839
|
||||
- Revise project access tokens UI text. !59878
|
||||
- Remove usage_data_track_quickactions feature flag. !59914
|
||||
- Update, organize, and improve analytics metrics definition files. !59926
|
||||
- Add --ee option to Usage Metric Definition generator to fill correct tier and distribution. !59942
|
||||
- Initialize conversion of ci_sources_pipelines.source_job_id to bigint. !59951
|
||||
- Review and revise YouTrack integration UI text. !59998
|
||||
- Review UI text for pipeline error messages. !60018
|
||||
- Drop Vulnerabilities without backing Finding. !60023
|
||||
- Remove feature flags from known events. !60053
|
||||
- Update KaTeX integration to v0.13.0. !60071
|
||||
- Update Bugzilla integration UI text. !60080
|
||||
- Drop Jira proxy setting columns. !60123
|
||||
- Add index to support execution time order for batched migration jobs. !60133
|
||||
- Remove gldropdown_tags feature flag. !60153
|
||||
- Update active branch icon in IDE to conform to the Pajamas design guide. !60168 (Andreas Resch @reschandreas)
|
||||
- Add migration to swap partitioned web_hook_logs. !60184
|
||||
- Update UI links to docs. !60247
|
||||
- Add index to batched migration jobs status. !60248
|
||||
- Initialize int8 migration for ci_builds. !60265
|
||||
- Update GitLab Shell to v13.18.0. !60288
|
||||
- Remove not_issuable_queries feature flag. !60321
|
||||
- Remove optimized_timebox_queries feature flag. !60326
|
||||
- Initialize conversion of ci_build_trace_chunks.build_id to bigint. !60346
|
||||
- Add user availability status to status modal and settings. !60351
|
||||
- Align UI text for CI integrations with each other. !60352
|
||||
- Update 5 min app metric defintions. !60364
|
||||
- Initialize conversion of ci_builds_runner_session.build_id to bigint. !60366
|
||||
- Update instance_auto_devops_enabled metric team metadata. !60374
|
||||
- Update AWS deploy templates metrics. !60377
|
||||
- Remove graphql_release_data, graphql_milestone_stats, and graphql_releases_page feature flags. !60390
|
||||
- Remove invite_members_version_b experiment. !60426
|
||||
- Remove feature flag for pipeline status in pipeline editor. !60463
|
||||
- Review and revise project integration descriptions. !60510
|
||||
- Validate foreign key on GroupHooks. !60527
|
||||
- Bump capybara gem version. !60532
|
||||
- Remove unused :auto_create_cluster_management_project feature flag. !60550
|
||||
- Refactor Webex Teams integration settings text. !60565
|
||||
- Removed feature flag for Pipeline editor merged YAML tab. !60659
|
||||
- Invalid invite tokens should redirect to the GitLab product. !60666
|
||||
- Remove search_track_unique_users feature flag. !60706
|
||||
- Prepare devops adoption database structure for migration. !60733
|
||||
- Remove optimize_shifting_relative_positions feature flag. !60792
|
||||
- updating hover state to match other pipeline graph buttons. !60801 (Matt Saddington @mattsaddo)
|
||||
- Make RecalculateProjectAuthorizations background migration no-op. !60825
|
||||
- Create database structure to support project value streams. !60925
|
||||
- Remove invalidated CI Syntax Templates Experiment. !60937
|
||||
- Update messages when user cannot directly push code to project. !61071
|
||||
- Remove feature flags related with tracking using Redis HyperLogLog for code review events. !61078
|
||||
- Merge branch 'mo-update-artifact-documentation' into 'master'. !61084
|
||||
- Update projects approval rules Usage Data metrics. !61106
|
||||
- Add issue tracker integrations help text. !61158
|
||||
- Update checkbox styles in "Group" -> "Settings" -> "General" -> "Permissions, LFS, 2FA". !61294
|
||||
- Update usage ping metrics for group configure. !61373
|
||||
- Decrease space between invite and import members buttons to align with Pajamas spacing. !61396
|
||||
- Update button styles, spacing, variants and responsive behavior for the Tags page. !61413
|
||||
- Remove sort_diffs feature flag. !61440
|
||||
- Reschedule DropInvalidVulnerabilities and track jobs. !61491
|
||||
- Geo: Remove released feature flag `geo_package_file_verification`. !61568
|
||||
- Remove update merge request related feature flags. !61569
|
||||
- Fix inconsistent cancel merge train button label. !61597
|
||||
- Updating button variant and adding tooltip for the SSH delete key button. !61626
|
||||
- Add draft column to merge_requests table. !61681
|
||||
- Lowers the z-indexing of the pipeline drawer. !61683
|
||||
- Update temporary NuGet packages to have processing status. !61724
|
||||
- Log additional package extraction errors. !61745
|
||||
- Remove issuable destroy service related FFs. !61764
|
||||
- Change wording for design management upload. !61782
|
||||
|
||||
|
||||
## 13.11.4 (2021-05-14)
|
||||
|
||||
### Fixed (3 changes)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<issuable-time-tracker
|
||||
:issuable-id="activeBoardItem.id.toString()"
|
||||
:time-estimate="activeBoardItem.timeEstimate"
|
||||
:time-spent="activeBoardItem.totalTimeSpent"
|
||||
:human-time-estimate="activeBoardItem.humanTimeEstimate"
|
||||
|
|
|
|||
|
|
@ -13,13 +13,17 @@ export default {
|
|||
GlLoadingIcon,
|
||||
GlTable,
|
||||
},
|
||||
inject: ['issuableId', 'issuableType'],
|
||||
inject: ['issuableType'],
|
||||
props: {
|
||||
limitToHours: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: false,
|
||||
},
|
||||
issuableId: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return { report: [], isLoading: true };
|
||||
|
|
|
|||
|
|
@ -13,6 +13,12 @@ export default {
|
|||
components: {
|
||||
IssuableTimeTracker,
|
||||
},
|
||||
props: {
|
||||
issuableId: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mediator: new Mediator(),
|
||||
|
|
@ -51,6 +57,7 @@ export default {
|
|||
<template>
|
||||
<div class="block">
|
||||
<issuable-time-tracker
|
||||
:issuable-id="issuableId"
|
||||
:time-estimate="store.timeEstimate"
|
||||
:time-spent="store.totalTimeSpent"
|
||||
:human-time-estimate="store.humanTimeEstimate"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import { GlIcon, GlLink, GlModal, GlModalDirective } from '@gitlab/ui';
|
||||
import { IssuableType } from '~/issue_show/constants';
|
||||
import { s__, __ } from '~/locale';
|
||||
import eventHub from '../../event_hub';
|
||||
import TimeTrackingCollapsedState from './collapsed_state.vue';
|
||||
|
|
@ -27,6 +28,7 @@ export default {
|
|||
directives: {
|
||||
GlModal: GlModalDirective,
|
||||
},
|
||||
inject: ['issuableType'],
|
||||
props: {
|
||||
timeEstimate: {
|
||||
type: Number,
|
||||
|
|
@ -51,6 +53,11 @@ export default {
|
|||
default: false,
|
||||
required: false,
|
||||
},
|
||||
issuableId: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
/*
|
||||
In issue list, "time-tracking-collapsed-state" is always rendered even if the sidebar isn't collapsed.
|
||||
The actual hiding is controlled with css classes:
|
||||
|
|
@ -94,6 +101,12 @@ export default {
|
|||
showHelpState() {
|
||||
return Boolean(this.showHelp);
|
||||
},
|
||||
isTimeReportSupported() {
|
||||
return (
|
||||
[IssuableType.Issue, IssuableType.MergeRequest].includes(this.issuableType) &&
|
||||
this.issuableId
|
||||
);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
eventHub.$on('timeTracker:updateData', this.update);
|
||||
|
|
@ -167,21 +180,23 @@ export default {
|
|||
:time-estimate-human-readable="humanTimeEstimate"
|
||||
:limit-to-hours="limitToHours"
|
||||
/>
|
||||
<gl-link
|
||||
v-if="hasTimeSpent"
|
||||
v-gl-modal="'time-tracking-report'"
|
||||
data-testid="reportLink"
|
||||
href="#"
|
||||
class="btn-link"
|
||||
>{{ __('Time tracking report') }}</gl-link
|
||||
>
|
||||
<gl-modal
|
||||
modal-id="time-tracking-report"
|
||||
:title="__('Time tracking report')"
|
||||
:hide-footer="true"
|
||||
>
|
||||
<time-tracking-report :limit-to-hours="limitToHours" />
|
||||
</gl-modal>
|
||||
<template v-if="isTimeReportSupported">
|
||||
<gl-link
|
||||
v-if="hasTimeSpent"
|
||||
v-gl-modal="'time-tracking-report'"
|
||||
data-testid="reportLink"
|
||||
href="#"
|
||||
class="btn-link"
|
||||
>{{ __('Time tracking report') }}</gl-link
|
||||
>
|
||||
<gl-modal
|
||||
modal-id="time-tracking-report"
|
||||
:title="__('Time tracking report')"
|
||||
:hide-footer="true"
|
||||
>
|
||||
<time-tracking-report :limit-to-hours="limitToHours" :issuable-id="issuableId" />
|
||||
</gl-modal>
|
||||
</template>
|
||||
<transition name="help-state-toggle">
|
||||
<time-tracking-help-state v-if="showHelpState" />
|
||||
</transition>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import { IssuableType } from '~/issue_show/constants';
|
||||
import { parseBoolean } from '~/lib/utils/common_utils';
|
||||
import timeTracker from './components/time_tracking/time_tracker.vue';
|
||||
|
||||
|
|
@ -8,7 +9,14 @@ export default class SidebarMilestone {
|
|||
|
||||
if (!el) return;
|
||||
|
||||
const { timeEstimate, timeSpent, humanTimeEstimate, humanTimeSpent, limitToHours } = el.dataset;
|
||||
const {
|
||||
timeEstimate,
|
||||
timeSpent,
|
||||
humanTimeEstimate,
|
||||
humanTimeSpent,
|
||||
limitToHours,
|
||||
id,
|
||||
} = el.dataset;
|
||||
|
||||
// eslint-disable-next-line no-new
|
||||
new Vue({
|
||||
|
|
@ -16,6 +24,9 @@ export default class SidebarMilestone {
|
|||
components: {
|
||||
timeTracker,
|
||||
},
|
||||
provide: {
|
||||
issuableType: IssuableType.Milestone,
|
||||
},
|
||||
render: (createElement) =>
|
||||
createElement('timeTracker', {
|
||||
props: {
|
||||
|
|
@ -24,6 +35,7 @@ export default class SidebarMilestone {
|
|||
humanTimeEstimate,
|
||||
humanTimeSpent,
|
||||
limitToHours: parseBoolean(limitToHours),
|
||||
issuableId: id.toString(),
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -383,8 +383,13 @@ function mountTimeTrackingComponent() {
|
|||
new Vue({
|
||||
el,
|
||||
apolloProvider,
|
||||
provide: { issuableId: id, issuableType },
|
||||
render: (createElement) => createElement(SidebarTimeTracking, {}),
|
||||
provide: { issuableType },
|
||||
render: (createElement) =>
|
||||
createElement(SidebarTimeTracking, {
|
||||
props: {
|
||||
issuableId: id.toString(),
|
||||
},
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
@import 'framework/selects';
|
||||
@import 'framework/sidebar';
|
||||
@import 'framework/contextual_sidebar_header';
|
||||
@import 'framework/contextual_sidebar';
|
||||
@import 'framework/contextual_sidebar_refactoring/contextual_sidebar';
|
||||
@import 'framework/tables';
|
||||
@import 'framework/notes';
|
||||
@import 'framework/tabs';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
body:not(.sidebar-refactoring) {
|
||||
@import 'contextual_sidebar_base';
|
||||
}
|
||||
|
||||
body.sidebar-refactoring {
|
||||
@import 'contextual_sidebar_variant';
|
||||
}
|
||||
|
|
@ -175,10 +175,6 @@
|
|||
overflow: auto;
|
||||
}
|
||||
|
||||
.with-performance-bar .nav-sidebar {
|
||||
top: $header-height + $performance-bar-height;
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items {
|
||||
display: none;
|
||||
padding-bottom: 8px;
|
||||
|
|
@ -0,0 +1,383 @@
|
|||
.page-with-contextual-sidebar {
|
||||
transition: padding-left $sidebar-transition-duration;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
padding-left: $contextual-sidebar-collapsed-width;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
padding-left: $contextual-sidebar-width;
|
||||
}
|
||||
|
||||
.issues-bulk-update.right-sidebar.right-sidebar-expanded .issuable-sidebar-header {
|
||||
padding: 10px 0 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.page-with-icon-sidebar {
|
||||
@include media-breakpoint-up(md) {
|
||||
padding-left: $contextual-sidebar-collapsed-width;
|
||||
}
|
||||
}
|
||||
|
||||
.settings-avatar {
|
||||
background-color: $white;
|
||||
|
||||
svg {
|
||||
fill: $gl-text-color-secondary;
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin collapse-contextual-sidebar-content {
|
||||
|
||||
@include context-header-collapsed;
|
||||
|
||||
.sidebar-top-level-items > li {
|
||||
.sidebar-sub-level-items {
|
||||
&:not(.flyout-list) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-icon-container {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.toggle-sidebar-button {
|
||||
padding: 16px;
|
||||
width: $contextual-sidebar-collapsed-width - 1px;
|
||||
|
||||
.collapse-text,
|
||||
.icon-chevron-double-lg-left {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.icon-chevron-double-lg-right {
|
||||
display: block;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar {
|
||||
transition: width $sidebar-transition-duration, left $sidebar-transition-duration;
|
||||
position: fixed;
|
||||
z-index: 600;
|
||||
width: $contextual-sidebar-width;
|
||||
top: $header-height;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: linear-gradient($purple-200, $orange-200);
|
||||
box-shadow: inset -1px 0 0 $border-color;
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
&:not(.sidebar-collapsed-desktop) {
|
||||
@media (min-width: map-get($grid-breakpoints, sm)) and (max-width: map-get($grid-breakpoints, sm)) {
|
||||
box-shadow: inset -1px 0 0 $border-color, 2px 1px 3px $dropdown-shadow-color;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin collapse-contextual-sidebar {
|
||||
width: $contextual-sidebar-collapsed-width;
|
||||
|
||||
.nav-sidebar-inner-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.badge.badge-pill:not(.fly-out-badge),
|
||||
.nav-item-name {
|
||||
@include gl-sr-only;
|
||||
}
|
||||
|
||||
.sidebar-top-level-items > li > a {
|
||||
min-height: 45px;
|
||||
}
|
||||
|
||||
.fly-out-top-item {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.avatar-container {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-collapsed-desktop {
|
||||
@include collapse-contextual-sidebar;
|
||||
}
|
||||
|
||||
&.sidebar-expanded-mobile {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
white-space: nowrap;
|
||||
|
||||
a {
|
||||
transition: padding $sidebar-transition-duration;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 12px $gl-padding;
|
||||
color: $gl-text-color-secondary;
|
||||
}
|
||||
|
||||
.nav-item-name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
&.active {
|
||||
> a {
|
||||
font-weight: $gl-font-weight-bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
left: (-$contextual-sidebar-width);
|
||||
}
|
||||
|
||||
.nav-icon-container {
|
||||
display: flex;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.fly-out-top-item {
|
||||
display: none;
|
||||
}
|
||||
|
||||
svg {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
@media (min-width: map-get($grid-breakpoints, md)) and (max-width: map-get($grid-breakpoints, xl) - 1px) {
|
||||
&:not(.sidebar-expanded-mobile) {
|
||||
@include collapse-contextual-sidebar;
|
||||
@include collapse-contextual-sidebar-content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar-inner-scroll {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items {
|
||||
display: none;
|
||||
padding-bottom: 8px;
|
||||
|
||||
> li {
|
||||
a {
|
||||
padding: 8px 16px 8px 40px;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: $link-active-background;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: $link-active-background;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-top-level-items {
|
||||
margin-bottom: 60px;
|
||||
|
||||
> li {
|
||||
> a {
|
||||
@include media-breakpoint-up(sm) {
|
||||
margin-right: 1px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $gl-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.is-showing-fly-out {
|
||||
> a {
|
||||
margin-right: 1px;
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items {
|
||||
@include media-breakpoint-up(sm) {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
min-width: 150px;
|
||||
margin-top: -1px;
|
||||
padding: 4px 1px;
|
||||
background-color: $white;
|
||||
box-shadow: 2px 1px 3px $dropdown-shadow-color;
|
||||
border: 1px solid $gray-darker;
|
||||
border-left: 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -30px;
|
||||
bottom: -30px;
|
||||
left: -10px;
|
||||
right: -30px;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
&.is-above {
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.divider {
|
||||
height: 1px;
|
||||
margin: 4px -1px;
|
||||
padding: 0;
|
||||
background-color: $dropdown-divider-bg;
|
||||
}
|
||||
|
||||
> .active {
|
||||
box-shadow: none;
|
||||
|
||||
> a {
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
padding: 8px 16px;
|
||||
color: $gl-text-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: $gray-darker;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.badge.badge-pill {
|
||||
background-color: $inactive-badge-background;
|
||||
color: $gl-text-color-secondary;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: $link-active-background;
|
||||
|
||||
> a {
|
||||
margin-left: 4px;
|
||||
// Subtract width of left border on active element
|
||||
padding-left: $gl-padding-12;
|
||||
}
|
||||
|
||||
.badge.badge-pill {
|
||||
font-weight: $gl-font-weight-bold;
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items:not(.is-fly-out-only) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&.active > a:hover,
|
||||
&.is-over > a {
|
||||
background-color: $link-hover-background;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Collapsed nav
|
||||
|
||||
.toggle-sidebar-button,
|
||||
.close-nav-button {
|
||||
@include side-panel-toggle;
|
||||
}
|
||||
|
||||
.toggle-sidebar-button,
|
||||
.close-nav-button {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: $contextual-sidebar-width - 1px;
|
||||
border-top: 1px solid $border-color;
|
||||
|
||||
svg {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.icon-chevron-double-lg-right {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.collapse-text {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sidebar-collapsed-desktop {
|
||||
@include collapse-contextual-sidebar-content;
|
||||
}
|
||||
|
||||
.fly-out-top-item {
|
||||
> a {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.fly-out-badge {
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.fly-out-top-item-name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
// Mobile nav
|
||||
|
||||
.close-nav-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
.close-nav-button {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.toggle-sidebar-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile-overlay {
|
||||
display: none;
|
||||
|
||||
&.mobile-nav-open {
|
||||
display: block;
|
||||
position: fixed;
|
||||
background-color: $black-transparent;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: $zindex-dropdown-menu;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -135,3 +135,7 @@
|
|||
#modal-peek-pg-queries-content {
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.with-performance-bar .nav-sidebar {
|
||||
top: $header-height + $performance-bar-height !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ module NavHelper
|
|||
def page_with_sidebar_class
|
||||
class_name = page_gutter_class
|
||||
class_name << 'page-with-contextual-sidebar' if defined?(@left_sidebar) && @left_sidebar
|
||||
class_name << 'sidebar-refactoring' if Feature.enabled?(:sidebar_refactor, current_user, default_enabled: :yaml)
|
||||
class_name << 'page-with-icon-sidebar' if collapsed_sidebar? && @left_sidebar
|
||||
class_name -= ['right-sidebar-expanded'] if defined?(@right_sidebar) && !@right_sidebar
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
class WebHook < ApplicationRecord
|
||||
include Sortable
|
||||
|
||||
MAX_FAILURES = 100
|
||||
FAILURE_THRESHOLD = 3 # three strikes
|
||||
INITIAL_BACKOFF = 10.minutes
|
||||
MAX_BACKOFF = 1.day
|
||||
|
|
@ -75,6 +76,14 @@ class WebHook < ApplicationRecord
|
|||
update!(recent_failures: 0, disabled_until: nil, backoff_count: 0)
|
||||
end
|
||||
|
||||
def backoff!
|
||||
update!(disabled_until: next_backoff.from_now, backoff_count: backoff_count.succ.clamp(0, MAX_FAILURES))
|
||||
end
|
||||
|
||||
def failed!
|
||||
update!(recent_failures: recent_failures + 1) if recent_failures < MAX_FAILURES
|
||||
end
|
||||
|
||||
# Overridden in ProjectHook and GroupHook, other webhooks are not rate-limited.
|
||||
def rate_limit
|
||||
nil
|
||||
|
|
|
|||
|
|
@ -0,0 +1,80 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AuthorizedProjectUpdate
|
||||
class ProjectRecalculateService
|
||||
# Service for refreshing all the authorizations to a particular project.
|
||||
include Gitlab::Utils::StrongMemoize
|
||||
BATCH_SIZE = 1000
|
||||
|
||||
def initialize(project)
|
||||
@project = project
|
||||
end
|
||||
|
||||
def execute
|
||||
refresh_authorizations if needs_refresh?
|
||||
ServiceResponse.success
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :project
|
||||
|
||||
def needs_refresh?
|
||||
user_ids_to_remove.any? ||
|
||||
authorizations_to_create.any?
|
||||
end
|
||||
|
||||
def current_authorizations
|
||||
strong_memoize(:current_authorizations) do
|
||||
project.project_authorizations
|
||||
.pluck(:user_id, :access_level) # rubocop: disable CodeReuse/ActiveRecord
|
||||
end
|
||||
end
|
||||
|
||||
def fresh_authorizations
|
||||
strong_memoize(:fresh_authorizations) do
|
||||
result = []
|
||||
|
||||
Projects::Members::EffectiveAccessLevelFinder.new(project)
|
||||
.execute
|
||||
.each_batch(of: BATCH_SIZE, column: :user_id) do |member_batch|
|
||||
result += member_batch.pluck(:user_id, 'MAX(access_level)') # rubocop: disable CodeReuse/ActiveRecord
|
||||
end
|
||||
|
||||
result
|
||||
end
|
||||
end
|
||||
|
||||
def user_ids_to_remove
|
||||
strong_memoize(:user_ids_to_remove) do
|
||||
(current_authorizations - fresh_authorizations)
|
||||
.map {|user_id, _| user_id }
|
||||
end
|
||||
end
|
||||
|
||||
def authorizations_to_create
|
||||
strong_memoize(:authorizations_to_create) do
|
||||
(fresh_authorizations - current_authorizations).map do |user_id, access_level|
|
||||
{
|
||||
user_id: user_id,
|
||||
access_level: access_level,
|
||||
project_id: project.id
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def refresh_authorizations
|
||||
ProjectAuthorization.transaction do
|
||||
if user_ids_to_remove.any?
|
||||
ProjectAuthorization.where(project_id: project.id, user_id: user_ids_to_remove) # rubocop: disable CodeReuse/ActiveRecord
|
||||
.delete_all
|
||||
end
|
||||
|
||||
if authorizations_to_create.any?
|
||||
ProjectAuthorization.insert_all(authorizations_to_create)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -13,9 +13,27 @@ module Projects
|
|||
end
|
||||
|
||||
group_link.destroy.tap do |link|
|
||||
link.group.refresh_members_authorized_projects
|
||||
if Feature.enabled?(:use_specialized_worker_for_project_auth_recalculation)
|
||||
refresh_project_authorizations_asynchronously(link.project)
|
||||
|
||||
# Until we compare the inconsistency rates of the new specialized worker and
|
||||
# the old approach, we still run AuthorizedProjectsWorker
|
||||
# but with some delay and lower urgency as a safety net.
|
||||
link.group.refresh_members_authorized_projects(
|
||||
blocking: false,
|
||||
priority: UserProjectAccessChangedService::LOW_PRIORITY
|
||||
)
|
||||
else
|
||||
link.group.refresh_members_authorized_projects
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def refresh_project_authorizations_asynchronously(project)
|
||||
AuthorizedProjectUpdate::ProjectRecalculateWorker.perform_async(project.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ class WebHookService
|
|||
|
||||
REQUEST_BODY_SIZE_LIMIT = 25.megabytes
|
||||
GITLAB_EVENT_HEADER = 'X-Gitlab-Event'
|
||||
MAX_FAILURES = 100
|
||||
|
||||
attr_accessor :hook, :data, :hook_name, :request_options
|
||||
|
||||
|
|
@ -144,10 +143,9 @@ class WebHookService
|
|||
if response.success? || response.redirection?
|
||||
hook.enable!
|
||||
elsif response.internal_server_error?
|
||||
next_backoff = hook.next_backoff
|
||||
hook.update!(disabled_until: next_backoff.from_now, backoff_count: hook.backoff_count + 1)
|
||||
hook.backoff!
|
||||
else
|
||||
hook.update!(recent_failures: hook.recent_failures + 1) if hook.recent_failures < MAX_FAILURES
|
||||
hook.failed!
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,4 +2,5 @@
|
|||
|
||||
%style
|
||||
= Rails.application.assets_manifest.find_sources("themes/#{user_application_theme_css_filename}.css").first.to_s.html_safe if user_application_theme_css_filename
|
||||
= Rails.application.assets_manifest.find_sources("startup/startup-#{startup_filename}.css").first.to_s.html_safe
|
||||
- if sidebar_refactor_disabled?
|
||||
= Rails.application.assets_manifest.find_sources("startup/startup-#{startup_filename}.css").first.to_s.html_safe
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
- page_classes = page_class << @html_class
|
||||
- page_classes = page_classes.flatten.compact
|
||||
- body_classes = [user_application_theme, user_tab_width, @body_class, client_class_list]
|
||||
- body_classes << 'sidebar-refactoring' if sidebar_refactor_enabled?
|
||||
|
||||
!!! 5
|
||||
%html{ lang: I18n.locale, class: page_classes }
|
||||
= render "layouts/head"
|
||||
%body{ class: "#{user_application_theme} #{user_tab_width} #{@body_class} #{client_class_list}", data: body_data }
|
||||
%body{ class: body_classes, data: body_data }
|
||||
= render "layouts/init_auto_complete" if @gfm_form
|
||||
= render "layouts/init_client_detection_flags"
|
||||
= render 'peek/bar'
|
||||
|
|
|
|||
|
|
@ -4,4 +4,5 @@
|
|||
":human-time-estimate" => "issue.humanTimeEstimate",
|
||||
":human-time-spent" => "issue.humanTimeSpent",
|
||||
":limit-to-hours" => "timeTrackingLimitToHours",
|
||||
":issuable-id" => "issue.id",
|
||||
"root-path" => "#{root_url}" }
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@
|
|||
time_spent: @milestone.total_time_spent,
|
||||
human_time_estimate: @milestone.human_total_time_estimate,
|
||||
human_time_spent: @milestone.human_total_time_spent,
|
||||
id: @milestone.id,
|
||||
limit_to_hours: Gitlab::CurrentSettings.time_tracking_limit_to_hours.to_s } }
|
||||
|
||||
= render_if_exists 'shared/milestones/weight', milestone: milestone
|
||||
|
|
|
|||
|
|
@ -39,6 +39,15 @@
|
|||
:weight: 1
|
||||
:idempotent: true
|
||||
:tags: []
|
||||
- :name: authorized_projects:authorized_project_update_project_recalculate
|
||||
:worker_name: AuthorizedProjectUpdate::ProjectRecalculateWorker
|
||||
:feature_category: :authentication_and_authorization
|
||||
:has_external_dependencies:
|
||||
:urgency: :high
|
||||
:resource_boundary: :unknown
|
||||
:weight: 1
|
||||
:idempotent: true
|
||||
:tags: []
|
||||
- :name: auto_devops:auto_devops_disable
|
||||
:worker_name: AutoDevops::DisableWorker
|
||||
:feature_category: :auto_devops
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AuthorizedProjectUpdate
|
||||
class ProjectRecalculateWorker
|
||||
include ApplicationWorker
|
||||
include Gitlab::ExclusiveLeaseHelpers
|
||||
|
||||
feature_category :authentication_and_authorization
|
||||
urgency :high
|
||||
queue_namespace :authorized_projects
|
||||
|
||||
deduplicate :until_executing, including_scheduled: true
|
||||
idempotent!
|
||||
|
||||
def perform(project_id)
|
||||
project = Project.find_by_id(project_id)
|
||||
return unless project
|
||||
|
||||
in_lock(lock_key(project), ttl: 10.seconds) do
|
||||
AuthorizedProjectUpdate::ProjectRecalculateService.new(project).execute
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def lock_key(project)
|
||||
"#{self.class.name.underscore}/#{project.root_namespace.id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
282
bin/changelog
282
bin/changelog
|
|
@ -1,282 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Generate a changelog entry file in the correct location.
|
||||
#
|
||||
# Automatically stages the file and amends the previous commit if the `--amend`
|
||||
# argument is used.
|
||||
|
||||
require 'optparse'
|
||||
require 'yaml'
|
||||
|
||||
INVALID_TYPE = -1
|
||||
|
||||
module ChangelogHelpers
|
||||
Abort = Class.new(StandardError)
|
||||
Done = Class.new(StandardError)
|
||||
|
||||
MAX_FILENAME_LENGTH = 99 # GNU tar has a 99 character limit
|
||||
|
||||
def capture_stdout(cmd)
|
||||
output = IO.popen(cmd, &:read)
|
||||
fail_with "command failed: #{cmd.join(' ')}" unless $?.success?
|
||||
output
|
||||
end
|
||||
|
||||
def fail_with(message)
|
||||
raise Abort, "\e[31merror\e[0m #{message}"
|
||||
end
|
||||
end
|
||||
|
||||
class ChangelogOptionParser
|
||||
extend ChangelogHelpers
|
||||
|
||||
Options = Struct.new(
|
||||
:amend,
|
||||
:author,
|
||||
:dry_run,
|
||||
:force,
|
||||
:merge_request,
|
||||
:title,
|
||||
:type,
|
||||
:ee
|
||||
)
|
||||
|
||||
Type = Struct.new(:name, :description)
|
||||
TYPES = [
|
||||
Type.new('added', 'New feature'),
|
||||
Type.new('fixed', 'Bug fix'),
|
||||
Type.new('changed', 'Feature change'),
|
||||
Type.new('deprecated', 'New deprecation'),
|
||||
Type.new('removed', 'Feature removal'),
|
||||
Type.new('security', 'Security fix'),
|
||||
Type.new('performance', 'Performance improvement'),
|
||||
Type.new('other', 'Other')
|
||||
].freeze
|
||||
TYPES_OFFSET = 1
|
||||
|
||||
class << self
|
||||
def parse(argv)
|
||||
options = Options.new
|
||||
|
||||
parser = OptionParser.new do |opts|
|
||||
opts.banner = "Usage: #{__FILE__} [options] [title]\n\n"
|
||||
|
||||
# Note: We do not provide a shorthand for this in order to match the `git
|
||||
# commit` interface
|
||||
opts.on('--amend', 'Amend the previous commit') do |value|
|
||||
options.amend = value
|
||||
end
|
||||
|
||||
opts.on('-f', '--force', 'Overwrite an existing entry') do |value|
|
||||
options.force = value
|
||||
end
|
||||
|
||||
opts.on('-m', '--merge-request [integer]', Integer, 'Merge request ID') do |value|
|
||||
options.merge_request = value
|
||||
end
|
||||
|
||||
opts.on('-n', '--dry-run', "Don't actually write anything, just print") do |value|
|
||||
options.dry_run = value
|
||||
end
|
||||
|
||||
opts.on('-u', '--git-username', 'Use Git user.name configuration as the author') do |value|
|
||||
options.author = git_user_name if value
|
||||
end
|
||||
|
||||
opts.on('-t', '--type [string]', String, "The category of the change, valid options are: #{TYPES.map(&:name).join(', ')}") do |value|
|
||||
options.type = parse_type(value)
|
||||
end
|
||||
|
||||
opts.on('-e', '--ee', 'Generate a changelog entry for GitLab EE') do |value|
|
||||
options.ee = value
|
||||
end
|
||||
|
||||
opts.on('-h', '--help', 'Print help message') do
|
||||
$stdout.puts opts
|
||||
raise Done.new
|
||||
end
|
||||
end
|
||||
|
||||
parser.parse!(argv)
|
||||
|
||||
# Title is everything that remains, but let's clean it up a bit
|
||||
options.title = argv.join(' ').strip.squeeze(' ').tr("\r\n", '')
|
||||
|
||||
options
|
||||
end
|
||||
|
||||
def read_type
|
||||
read_type_message
|
||||
|
||||
type = TYPES[$stdin.getc.to_i - TYPES_OFFSET]
|
||||
assert_valid_type!(type)
|
||||
|
||||
type.name
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def parse_type(name)
|
||||
type_found = TYPES.find do |type|
|
||||
type.name == name
|
||||
end
|
||||
type_found ? type_found.name : INVALID_TYPE
|
||||
end
|
||||
|
||||
def read_type_message
|
||||
$stdout.puts "\n>> Please specify the index for the category of your change:"
|
||||
TYPES.each_with_index do |type, index|
|
||||
$stdout.puts "#{index + TYPES_OFFSET}. #{type.description}"
|
||||
end
|
||||
$stdout.print "\n?> "
|
||||
end
|
||||
|
||||
def assert_valid_type!(type)
|
||||
unless type
|
||||
raise Abort, "Invalid category index, please select an index between 1 and #{TYPES.length}"
|
||||
end
|
||||
end
|
||||
|
||||
def git_user_name
|
||||
capture_stdout(%w[git config user.name]).strip
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class ChangelogEntry
|
||||
include ChangelogHelpers
|
||||
|
||||
attr_reader :options
|
||||
|
||||
def initialize(options)
|
||||
@options = options
|
||||
end
|
||||
|
||||
def execute
|
||||
assert_feature_branch!
|
||||
assert_title! unless editor
|
||||
assert_new_file!
|
||||
|
||||
# Read type from $stdin unless is already set
|
||||
options.type ||= ChangelogOptionParser.read_type
|
||||
assert_valid_type!
|
||||
|
||||
$stdout.puts "\e[32mcreate\e[0m #{file_path}"
|
||||
$stdout.puts contents
|
||||
|
||||
unless options.dry_run
|
||||
write
|
||||
amend_commit if options.amend
|
||||
end
|
||||
|
||||
if editor
|
||||
system("#{editor} '#{file_path}'")
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def contents
|
||||
yaml_content = YAML.dump(
|
||||
'title' => title,
|
||||
'merge_request' => options.merge_request,
|
||||
'author' => options.author,
|
||||
'type' => options.type
|
||||
)
|
||||
remove_trailing_whitespace(yaml_content)
|
||||
end
|
||||
|
||||
def write
|
||||
File.write(file_path, contents)
|
||||
end
|
||||
|
||||
def editor
|
||||
ENV['EDITOR']
|
||||
end
|
||||
|
||||
def amend_commit
|
||||
fail_with "git add failed" unless system(*%W[git add #{file_path}])
|
||||
|
||||
Kernel.exec(*%w[git commit --amend])
|
||||
end
|
||||
|
||||
def assert_feature_branch!
|
||||
return unless branch_name == 'master'
|
||||
|
||||
fail_with "Create a branch first!"
|
||||
end
|
||||
|
||||
def assert_new_file!
|
||||
return unless File.exist?(file_path)
|
||||
return if options.force
|
||||
|
||||
fail_with "#{file_path} already exists! Use `--force` to overwrite."
|
||||
end
|
||||
|
||||
def assert_title!
|
||||
return if options.title.length > 0 || options.amend
|
||||
|
||||
fail_with "Provide a title for the changelog entry or use `--amend`" \
|
||||
" to use the title from the previous commit."
|
||||
end
|
||||
|
||||
def assert_valid_type!
|
||||
return unless options.type && options.type == INVALID_TYPE
|
||||
|
||||
fail_with 'Invalid category given!'
|
||||
end
|
||||
|
||||
def title
|
||||
if options.title.empty?
|
||||
last_commit_subject
|
||||
else
|
||||
options.title
|
||||
end
|
||||
end
|
||||
|
||||
def last_commit_subject
|
||||
capture_stdout(%w[git log --format=%s -1]).strip
|
||||
end
|
||||
|
||||
def file_path
|
||||
base_path = File.join(
|
||||
unreleased_path,
|
||||
branch_name.gsub(/[^\w-]/, '-'))
|
||||
|
||||
# Add padding for .yml extension
|
||||
base_path[0..MAX_FILENAME_LENGTH - 5] + '.yml'
|
||||
end
|
||||
|
||||
def unreleased_path
|
||||
path = File.join('changelogs', 'unreleased')
|
||||
path = File.join('ee', path) if ee?
|
||||
|
||||
path
|
||||
end
|
||||
|
||||
def ee?
|
||||
options.ee
|
||||
end
|
||||
|
||||
def branch_name
|
||||
@branch_name ||= capture_stdout(%w[git symbolic-ref --short HEAD]).strip
|
||||
end
|
||||
|
||||
def remove_trailing_whitespace(yaml_content)
|
||||
yaml_content.gsub(/ +$/, '')
|
||||
end
|
||||
end
|
||||
|
||||
if $0 == __FILE__
|
||||
begin
|
||||
options = ChangelogOptionParser.parse(ARGV)
|
||||
ChangelogEntry.new(options).execute
|
||||
rescue ChangelogHelpers::Abort => ex
|
||||
$stderr.puts ex.message
|
||||
exit 1
|
||||
rescue ChangelogHelpers::Done
|
||||
exit
|
||||
end
|
||||
end
|
||||
|
||||
# vim: ft=ruby
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Reschedule background migration to copy projects.container_registry_enabled
|
||||
to project_features.container_registry_access_level
|
||||
merge_request: 59513
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Optimize AvailableLabelsService for multiple labels search
|
||||
merge_request: 59032
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fix repeating SQL queries when changing labels for a resource.
|
||||
merge_request: 60718
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Preserve user changes in the wiki editor if multiple people edit the page
|
||||
merge_request: 61120
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Validate foreign key on GroupHooks
|
||||
merge_request: 60527
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove update merge request related feature flags
|
||||
merge_request: 61569
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Resolve admin_group_member group policy n+1
|
||||
merge_request: 58948
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fix N+1 queries in namespace#any_project_has_container_registry_tags?
|
||||
merge_request: 59916
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Reduce number of SQL queries when creating SystemNotes
|
||||
merge_request: 59102
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Optimize CI Settings page to reduce N+1 queries
|
||||
merge_request: 59625
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Improve memory consumption of issuable APIs
|
||||
merge_request: 61561
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Improve performance of project issues API
|
||||
merge_request: 60981
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove subscribed field from todos, related issues, and epic issues API
|
||||
merge_request: 60981
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Automate deactivation of dormant users for self-managed instances
|
||||
merge_request: 57778
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Delete feature flag for usage_data_a_compliance_audit_events_api
|
||||
merge_request: 52947
|
||||
author:
|
||||
type: removed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fast destroy job artifacts when destroying a pipeline
|
||||
merge_request: 60391
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add ability to swap revisions when comparing
|
||||
merge_request: 60491
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fix N+1 for commits with pipelines
|
||||
merge_request: 59234
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Redirect to activity page when accepting invitation
|
||||
merge_request: 56695
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Change conan token expiration from 1 hour to 24 hours
|
||||
merge_request: 60763
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add link to documentation in empty pipeline test reports
|
||||
merge_request: 59812
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Return an HTML response for a request with the Accept */* header
|
||||
merge_request: 56288
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add VulnerabiltyFindingEvidenceRequest model
|
||||
merge_request: 59539
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add VulnerabiltyFindingEvidenceResponse model
|
||||
merge_request: 59563
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove search_track_unique_users feature flag
|
||||
merge_request: 60706
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Expose job and project queued duration in all APIs
|
||||
merge_request: 59901
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Use correct scope when authorizing with Jira GitHub DVCS connector
|
||||
merge_request: 61496
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove feature flags from known events
|
||||
merge_request: 60053
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add status_changed_at to deployments webhooks
|
||||
merge_request: 60518
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Make new project ui the only option
|
||||
merge_request: 59452
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add body to finding evidence requests
|
||||
merge_request: 61408
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add body to finding evidence responses
|
||||
merge_request: 61631
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add external status check responses
|
||||
merge_request: 61135
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add indexes for cleanup policies on container_repositories and container_expiration_policies
|
||||
merge_request: 58123
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Allow issue type change for incidents
|
||||
merge_request: 61363
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fix N+1 problem in CustomEmojiFilter
|
||||
merge_request: 60910
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Optimize merge request permission check for references
|
||||
merge_request: 61591
|
||||
author:
|
||||
type: performance
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Migrate DevOps Score empty state to Vue
|
||||
merge_request: 60715
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Redesign the DevOps Score report
|
||||
merge_request: 59856
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add isuable time tracking report
|
||||
merge_request: 60161
|
||||
author: Lee Tickett @leetickett
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add asset links to release keyword
|
||||
merge_request: 60896
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Updating button variant and adding tooltip for the SSH delete key button.
|
||||
merge_request: 61626
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Decrease space between invite and import members buttons to align with Pajamas
|
||||
spacing
|
||||
merge_request: 61396
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Update button variants and alignment to align with the Pajamas Design System
|
||||
and modify the avatar layout to have better flow.
|
||||
merge_request: 61504
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Update edit file buttons and spacing
|
||||
merge_request: 60318
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Update button styles, spacing, variants and responsive behavior for the Tags
|
||||
page.
|
||||
merge_request: 61413
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Show total group counts in admin users table
|
||||
merge_request: 60998
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Enforce .git suffix when importing git repo
|
||||
merge_request: 61115
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Delete HipChat service database records
|
||||
merge_request: 59769
|
||||
author:
|
||||
type: removed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Change wording for design management upload
|
||||
merge_request: 61782
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Align help icon for code quality merge request widget
|
||||
merge_request: 60330
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Fix inconsistent cancel merge train button label
|
||||
merge_request: 61597
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add sorting for group and project packages type
|
||||
merge_request: 58657
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: 'Package: group and project graphql types - add search'
|
||||
merge_request: 61001
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add missing status type and enum to package graphql type
|
||||
merge_request: 61002
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add nuget metadata type to Package GraphQl type
|
||||
merge_request: 61695
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add Maven to Package Graphql types
|
||||
merge_request: 60808
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add DS_EXCLUDED_ANALYZERS var to Dependency Scanning template
|
||||
merge_request: 61529
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add shared_visible_only option to project's groups API
|
||||
merge_request: 61118
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove visualization feature flag in pipeline editor
|
||||
merge_request: 60273
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Update admin users to use GitLab UI table by default
|
||||
merge_request: 54085
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add "active" filter to deploy tokens API
|
||||
merge_request: 59582
|
||||
author: Devin Christensen
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Update appearance of "Enable shared runners for this project" toggle in Project > Settings > CI/CD
|
||||
merge_request: 61043
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove not_issuable_queries feature flag
|
||||
merge_request: 60321
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Track usage of the resolve conflict UI
|
||||
merge_request: 61654
|
||||
author:
|
||||
type: other
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add setting to allow or disallow duplicates for generic packages
|
||||
merge_request: 60664
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Store slice multiplier and max slices running for reindex in DB
|
||||
merge_request: 60861
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add support for retries to Advanced Search reindexing
|
||||
merge_request: 55681
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove pages_update_legacy_storage feature flag
|
||||
merge_request: 60005
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add pipeline editor drawer for introduction to CI
|
||||
merge_request: 61620
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Add snoplow tracking to Releases API
|
||||
merge_request: 58221
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: 'Container Registry Details: split details from tags call'
|
||||
merge_request: 59969
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
title: Remove Alerts service metric
|
||||
merge_request: 60149
|
||||
author:
|
||||
type: removed
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue