From b39512ed755239198a9c294b6a45e65c05900235 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 18 Aug 2022 08:17:02 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-3-stable-ee --- app/assets/images/auth_buttons/jwt_64.png | Bin 2457 -> 824 bytes app/assets/images/auth_buttons/salesforce_64.png | Bin 8774 -> 2012 bytes .../access_tokens/components/expires_at_field.vue | 30 +- .../access_tokens/components/projects_field.vue | 69 - .../components/projects_token_selector.vue | 156 -- .../graphql/queries/get_projects.query.graphql | 1 - app/assets/javascripts/access_tokens/index.js | 57 - .../admin/deploy_keys/components/table.vue | 8 +- .../graphql/queries/get_integrations.query.graphql | 1 - .../shared/components/projects_dropdown_filter.vue | 2 +- app/assets/javascripts/analytics/shared/utils.js | 26 +- .../graphql/fragments/count.fragment.graphql | 1 - app/assets/javascripts/api/analytics_api.js | 3 - app/assets/javascripts/api/groups_api.js | 7 + .../components/navigation_popover.vue | 122 -- app/assets/javascripts/attention_requests/index.js | 73 - .../batch_comments/components/draft_note.vue | 6 +- .../batch_comments/components/review_bar.vue | 28 + .../batch_comments/components/submit_dropdown.vue | 39 +- app/assets/javascripts/batch_comments/i18n.js | 3 + .../stores/modules/batch_comments/actions.js | 5 + .../behaviors/components/json_table.vue | 71 + .../javascripts/behaviors/markdown/marks/strike.js | 29 +- .../behaviors/markdown/nodes/code_block.js | 2 +- .../behaviors/markdown/nodes/task_list_item.js | 44 +- .../javascripts/behaviors/markdown/render_gfm.js | 4 + .../behaviors/markdown/render_json_table.js | 70 + .../behaviors/markdown/render_mermaid.js | 231 --- app/assets/javascripts/blob/blob_links_tracking.js | 25 + app/assets/javascripts/boards/boards_util.js | 4 +- .../components/board_add_new_column_form.vue | 29 +- .../boards/components/board_card_inner.vue | 8 +- .../boards/components/board_content_sidebar.vue | 3 +- .../boards/components/board_list_header.vue | 2 +- .../boards/components/board_settings_sidebar.vue | 5 +- .../graphql/board_blocking_issues.query.graphql | 2 - .../graphql/group_board_members.query.graphql | 2 - .../boards/graphql/lists_issues.query.graphql | 2 - .../graphql/project_board_members.query.graphql | 2 - app/assets/javascripts/boards/stores/mutations.js | 2 +- .../components/triggers_list.vue | 4 +- .../components/ci_admin_variables.vue | 101 ++ .../components/ci_environments_dropdown.vue | 49 +- .../components/ci_group_variables.vue | 104 ++ .../components/ci_variable_modal.vue | 212 +-- .../components/ci_variable_settings.vue | 86 +- .../components/ci_variable_table.vue | 75 +- .../components/legacy_ci_variable_modal.vue | 6 +- .../javascripts/ci_variable_list/constants.js | 59 +- .../graphql/fragments/ci_variable.fragment.graphql | 7 + .../mutations/admin_add_variable.mutation.graphql | 16 + .../admin_delete_variable.mutation.graphql | 16 + .../admin_update_variable.mutation.graphql | 16 + .../mutations/group_add_variable.mutation.graphql | 30 + .../group_delete_variable.mutation.graphql | 30 + .../group_update_variable.mutation.graphql | 30 + .../graphql/queries/group_variables.query.graphql | 17 + .../graphql/queries/variables.query.graphql | 13 + .../ci_variable_list/graphql/resolvers.js | 113 ++ app/assets/javascripts/ci_variable_list/index.js | 29 +- .../javascripts/ci_variable_list/store/utils.js | 6 +- app/assets/javascripts/ci_variable_list/utils.js | 50 + .../clusters_list/components/clusters.vue | 2 +- .../commit/pipelines/pipelines_table.vue | 60 +- .../javascripts/commons/nav/user_merge_requests.js | 21 +- .../components/bubble_menus/formatting.vue | 24 +- .../content_editor/components/content_editor.vue | 9 +- .../components/toolbar_more_dropdown.vue | 11 +- .../content_editor/components/top_toolbar.vue | 2 +- .../components/wrappers/table_cell_base.vue | 2 +- .../components/wrappers/table_of_contents.vue | 55 + .../wrappers/table_of_contents_heading.vue | 25 + .../extensions/code_block_highlight.js | 3 +- .../content_editor/extensions/diagram.js | 7 + .../content_editor/extensions/frontmatter.js | 7 + .../javascripts/content_editor/extensions/image.js | 6 +- .../javascripts/content_editor/extensions/link.js | 5 + .../extensions/reference_definition.js | 29 + .../content_editor/extensions/sourcemap.js | 4 + .../content_editor/extensions/table_of_contents.js | 15 +- .../content_editor/services/content_editor.js | 6 +- .../services/create_content_editor.js | 9 +- .../services/hast_to_prosemirror_converter.js | 82 +- .../content_editor/services/markdown_serializer.js | 36 +- .../services/remark_markdown_deserializer.js | 67 +- .../services/serialization_helpers.js | 56 +- .../services/table_of_contents_utils.js | 67 + .../javascripts/contributors/stores/getters.js | 6 +- app/assets/javascripts/crm/components/form.vue | 20 +- app/assets/javascripts/crm/constants.js | 4 + app/assets/javascripts/crm/contacts/bundle.js | 18 +- .../contacts/components/contact_form_wrapper.vue | 9 +- .../crm/contacts/components/contacts_root.vue | 220 ++- .../graphql/crm_contact_fields.fragment.graphql | 3 +- .../graphql/get_group_contacts.query.graphql | 30 +- .../get_group_contacts_count_by_state.graphql | 11 + .../crm_organization_fields.fragment.graphql | 2 +- .../graphql/get_group_organizations.query.graphql | 1 - .../components/organization_form_wrapper.vue | 27 +- .../cycle_analytics/components/base.vue | 12 +- .../javascripts/cycle_analytics/store/actions.js | 25 +- .../javascripts/cycle_analytics/store/getters.js | 6 - .../cycle_analytics/store/mutation_types.js | 5 +- .../javascripts/cycle_analytics/store/mutations.js | 23 +- .../javascripts/cycle_analytics/store/state.js | 5 +- .../components/design_notes/design_discussion.vue | 1 - .../components/design_notes/design_reply_form.vue | 1 - .../fragments/design_todo_item.fragment.graphql | 2 - .../graphql/fragments/version.fragment.graphql | 1 - .../mutations/upload_design.mutation.graphql | 2 - .../javascripts/design_management/pages/index.vue | 2 +- app/assets/javascripts/diff.js | 3 + .../javascripts/diffs/components/commit_item.vue | 9 +- .../diffs/components/diff_expansion_cell.vue | 85 +- .../javascripts/diffs/components/diff_view.vue | 22 +- app/assets/javascripts/diffs/constants.js | 3 + app/assets/javascripts/diffs/store/actions.js | 12 +- app/assets/javascripts/dropzone_input.js | 17 +- .../components/source_editor_toolbar_button.vue | 1 + .../source_editor_markdown_livepreview_ext.js | 5 +- .../javascripts/editor/graphql/typedefs.graphql | 14 +- app/assets/javascripts/editor/schema/ci.json | 44 +- .../environments/components/environment_item.vue | 2 +- .../components/environments_detail_header.vue | 1 + .../graphql/queries/environment_app.query.graphql | 1 - .../add_extra_tokens_for_merge_requests.js | 19 +- .../issuable_filtered_search_token_keys.js | 4 +- .../components/frequent_items_list_item.vue | 1 + app/assets/javascripts/gfm_auto_complete.js | 74 +- app/assets/javascripts/gitlab_pages/new.js | 39 + .../fragments/blobviewer.fragment.graphql | 7 - .../fragments/iteration.fragment.graphql | 4 - .../javascripts/graphql_shared/possible_types.json | 9 + .../queries/get_user_callouts.query.graphql | 3 - .../components/shared_runners_form.vue | 7 +- .../group_settings/mount_shared_runners.js | 4 +- .../javascripts/groups/components/group_item.vue | 16 +- .../groups/components/group_name_and_path.vue | 215 ++- .../javascripts/groups/components/groups.vue | 2 +- .../groups/components/transfer_group_form.vue | 1 - app/assets/javascripts/groups/constants.js | 29 +- app/assets/javascripts/groups/create_edit_form.js | 10 +- ...s_where_user_can_create_subgroups.query.graphql | 11 + .../javascripts/header_search/components/app.vue | 51 +- app/assets/javascripts/header_search/constants.js | 4 + app/assets/javascripts/header_search/index.js | 11 +- .../ide/components/commit_sidebar/form.vue | 4 +- .../ide/components/file_templates/bar.vue | 7 +- .../ide/components/ide_project_header.vue | 1 + .../javascripts/ide/components/ide_tree_list.vue | 2 +- app/assets/javascripts/ide/lib/common/model.js | 2 +- .../integrations/edit/components/dynamic_field.vue | 7 +- .../edit/components/integration_form.vue | 6 +- .../overrides/components/integration_overrides.vue | 1 + .../components/invite_members_modal.vue | 70 +- .../components/members_token_select.vue | 43 +- .../components/user_limit_notification.vue | 8 - app/assets/javascripts/invite_members/constants.js | 13 +- .../invite_members/init_invite_members_modal.js | 9 +- .../issuable/components/issue_milestone.vue | 4 +- .../issuable/components/related_issuable_item.vue | 51 +- .../issuable/issuable_template_selector.js | 16 +- .../issuable/popover/components/issue_popover.vue | 54 +- .../issuable/popover/queries/issue.query.graphql | 9 + app/assets/javascripts/issues/index.js | 2 +- .../issues/list/components/issues_list_app.vue | 42 +- app/assets/javascripts/issues/list/constants.js | 19 + .../issues/list/queries/issue.fragment.graphql | 4 +- .../components/related_merge_requests.vue | 2 +- .../issues/show/components/description.vue | 9 +- .../issues/show/components/incidents/constants.js | 5 +- .../components/incidents/create_timeline_event.vue | 117 ++ .../components/incidents/timeline_events_form.vue | 157 +- .../components/incidents/timeline_events_item.vue | 100 ++ .../components/incidents/timeline_events_list.vue | 27 +- .../incidents/timeline_events_list_item.vue | 92 -- .../components/incidents/timeline_events_tab.vue | 15 +- .../issues/show/components/incidents/utils.js | 1 + .../jobs/components/environments_block.vue | 16 +- app/assets/javascripts/jobs/components/job_app.vue | 1 + .../jobs/components/job_log_controllers.vue | 94 +- .../components/sidebar_job_details_container.vue | 9 +- .../table/graphql/queries/get_jobs.query.graphql | 4 - .../jobs/components/table/jobs_table_app.vue | 11 +- app/assets/javascripts/labels/labels_select.js | 2 +- app/assets/javascripts/lib/dompurify.js | 37 + app/assets/javascripts/lib/gfm/index.js | 50 + app/assets/javascripts/lib/graphql.js | 1 + app/assets/javascripts/lib/markdown_it.js | 11 + .../lib/prosemirror_markdown_serializer.js | 4 +- app/assets/javascripts/lib/utils/text_markdown.js | 242 ++- app/assets/javascripts/lib/utils/url_utility.js | 25 + app/assets/javascripts/lib/utils/yaml.js | 21 +- app/assets/javascripts/linked_resources/index.js | 11 +- app/assets/javascripts/main.js | 6 - .../components/table/member_action_buttons.vue | 5 +- app/assets/javascripts/members/constants.js | 2 + app/assets/javascripts/merge_conflicts/utils.js | 7 +- .../monitoring/components/charts/time_series.vue | 4 +- app/assets/javascripts/monitoring/stores/utils.js | 64 +- app/assets/javascripts/mr_notes/init_notes.js | 8 +- app/assets/javascripts/notebook/cells/markdown.vue | 2 +- .../notes/components/diff_discussion_header.vue | 28 +- .../javascripts/notes/components/note_actions.vue | 2 +- .../javascripts/notes/components/note_body.vue | 106 +- .../javascripts/notes/components/note_form.vue | 6 +- .../javascripts/notes/components/noteable_note.vue | 3 +- app/assets/javascripts/notes/constants.js | 2 - app/assets/javascripts/notes/stores/mutations.js | 6 +- app/assets/javascripts/notes/utils.js | 2 +- .../components/list_page/cleanup_status.vue | 6 +- .../components/list_page/image_list_row.vue | 2 +- .../dependency_proxy/app.vue | 4 +- .../dependency_proxy/index.js | 8 +- .../infrastructure_registry/list/stores/actions.js | 5 +- .../components/details/package_files.vue | 109 +- .../components/details/package_history.vue | 35 +- .../components/details/package_title.vue | 52 +- .../components/details/pypi_installation.vue | 47 +- .../package_registry/constants.js | 15 + .../destroy_package_file.mutation.graphql | 5 - .../destroy_package_files.mutation.graphql | 5 + .../queries/get_package_details.query.graphql | 4 + .../package_registry/pages/details.vue | 107 +- .../components/container_expiration_policy.vue | 2 +- .../project/components/expiration_dropdown.vue | 30 +- .../project/components/packages_cleanup_policy.vue | 2 +- .../components/packages_cleanup_policy_form.vue | 25 +- .../settings/project/constants.js | 2 +- .../shared/components/settings_block.vue | 6 +- .../shared/constants/package_registry.js | 4 + .../pages/groups/new/components/app.vue | 73 +- .../create_group_description_details.vue | 56 +- app/assets/javascripts/pages/groups/new/index.js | 11 +- .../components/bulk_imports_history_app.vue | 2 +- .../pages/profiles/personal_access_tokens/index.js | 2 - .../pages/projects/ci/secure_files/show/index.js | 3 - .../pages/projects/graphs/charts/index.js | 23 +- .../projects/graphs/components/code_coverage.vue | 42 +- app/assets/javascripts/pages/projects/init_blob.js | 9 +- .../pages/projects/issues/show/index.js | 2 +- .../javascripts/pages/projects/pages/new/index.js | 3 + .../projects/pipeline_schedules/index/index.js | 41 + .../permissions/components/settings_panel.vue | 42 +- .../pages/projects/tags/releases/index.js | 6 - .../javascripts/pages/registrations/new/index.js | 5 + .../pages/sessions/new/email_format_validator.js | 46 + .../pages/shared/wikis/components/wiki_form.vue | 55 +- app/assets/javascripts/persistent_user_callout.js | 4 +- app/assets/javascripts/persistent_user_callouts.js | 1 + .../drawer/cards/first_pipeline_card.vue | 4 +- .../components/editor/ci_editor_header.vue | 4 +- .../pipeline_editor/components/lint/ci_lint.vue | 53 - .../components/pipeline_editor_tabs.vue | 20 - .../components/validate/ci_validate.vue | 20 +- .../javascripts/pipeline_editor/constants.js | 8 +- .../mutations/client/lint_ci.mutation.graphql | 1 - .../mutations/commit_ci_file.mutation.graphql | 2 - app/assets/javascripts/pipeline_editor/index.js | 2 - .../pipeline_new/components/pipeline_new_form.vue | 34 +- .../components/take_ownership_modal.vue | 52 + .../components/widgets/checklist.vue | 9 +- .../pipeline_wizard/pipeline_wizard.vue | 2 +- .../components/graph/job_group_dropdown.vue | 5 +- .../pipelines/components/graph/job_item.vue | 3 + .../components/performance_insights_modal.vue | 9 +- .../pipelines/components/pipeline_tabs.vue | 18 +- .../pipelines_list/empty_state/ci_templates.vue | 14 +- .../pipelines_list/pipeline_multi_actions.vue | 40 +- .../components/test_reports/test_reports.vue | 26 +- .../components/test_reports/test_suite_table.vue | 16 +- .../components/test_reports/test_summary.vue | 55 +- .../components/test_reports/test_summary_table.vue | 54 +- app/assets/javascripts/pipelines/constants.js | 2 +- .../pipelines/mixins/pipelines_mixin.js | 13 +- app/assets/javascripts/pipelines/pipeline_tabs.js | 33 +- .../pipelines/stores/test_reports/actions.js | 1 - .../projects/compare/components/app.vue | 20 +- app/assets/javascripts/projects/compare/index.js | 12 +- .../javascripts/projects/pipelines/charts/index.js | 2 + app/assets/javascripts/projects/project_new.js | 24 + .../branch_rules/components/branch_dropdown.vue | 87 +- .../branch_rules/components/protections/index.vue | 59 + .../components/protections/merge_protections.vue | 46 + .../components/protections/push_protections.vue | 52 + .../settings/branch_rules/components/rule_edit.vue | 44 +- .../settings/components/access_dropdown.vue | 4 +- .../settings/components/transfer_project_form.vue | 94 +- ..._where_user_can_transfer_projects.query.graphql | 24 + .../settings/init_transfer_project_form.js | 22 +- .../javascripts/ref/components/ref_selector.vue | 1 + .../components/add_issuable_form.vue | 7 +- .../components/related_issues_block.vue | 76 +- .../components/related_issues_list.vue | 2 +- .../components/related_issues_root.vue | 9 + app/assets/javascripts/related_issues/constants.js | 10 +- app/assets/javascripts/related_issues/index.js | 51 +- .../releases/components/app_edit_new.vue | 9 +- .../releases/components/asset_links_form.vue | 2 +- .../releases/components/release_block_header.vue | 12 + .../graphql/fragments/release.fragment.graphql | 15 +- .../graphql/queries/all_releases.query.graphql | 88 +- app/assets/javascripts/releases/util.js | 1 + .../reports/components/report_section.vue | 1 - .../repository/components/blob_content_viewer.vue | 74 +- .../repository/components/last_commit.vue | 9 +- app/assets/javascripts/repository/constants.js | 1 - .../repository/queries/blob_info.query.graphql | 1 + app/assets/javascripts/right_sidebar.js | 32 +- .../runner/admin_runners/admin_runners_app.vue | 34 +- .../components/cells/runner_summary_cell.vue | 6 +- .../runner/components/runner_assigned_item.vue | 22 +- .../runner/components/runner_bulk_delete.vue | 149 +- .../components/runner_bulk_delete_checkbox.vue | 59 + .../runner/components/runner_detail.vue | 9 +- .../runner/components/runner_details.vue | 25 +- .../components/runner_filtered_search_bar.vue | 8 +- .../javascripts/runner/components/runner_jobs.vue | 11 +- .../javascripts/runner/components/runner_list.vue | 15 +- .../runner/components/runner_pagination.vue | 67 +- .../runner/components/runner_projects.vue | 22 +- .../runner/components/stat/runner_count.vue | 7 +- .../runner/components/stat/runner_single_stat.vue | 41 + .../runner/components/stat/runner_stats.vue | 74 +- .../runner/components/stat/runner_status_stat.vue | 65 - app/assets/javascripts/runner/constants.js | 3 +- .../edit/runner_fields_shared.fragment.graphql | 1 - .../runner/graphql/list/all_runners.query.graphql | 13 +- .../list/all_runners_connection.fragment.graphql | 13 + .../list/bulk_runner_delete.mutation.graphql | 6 + .../list/group_runner_connection.fragment.graphql | 16 + .../graphql/list/group_runners.query.graphql | 16 +- .../graphql/list/list_item_shared.fragment.graphql | 2 - .../javascripts/runner/graphql/list/local_state.js | 18 +- .../show/runner_details_shared.fragment.graphql | 1 - .../graphql/show/runner_projects.query.graphql | 4 + .../runner/group_runners/group_runners_app.vue | 32 +- .../javascripts/runner/runner_search_utils.js | 71 +- .../security_configuration/components/constants.js | 1 + .../set_status_modal/set_status_modal_wrapper.vue | 10 +- .../sidebar/components/assignees/assignees.vue | 10 +- .../components/assignees/issuable_assignees.vue | 6 - .../components/assignees/sidebar_assignees.vue | 4 - .../assignees/sidebar_assignees_widget.vue | 4 + .../components/assignees/sidebar_participant.vue | 39 +- .../assignees/uncollapsed_assignee_list.vue | 22 +- .../components/attention_requested_toggle.vue | 105 -- .../confidential/sidebar_confidentiality_form.vue | 7 +- .../sidebar_confidentiality_widget.vue | 4 +- .../reviewers/collapsed_reviewer_list.vue | 4 +- .../components/reviewers/reviewer_avatar.vue | 4 +- .../components/reviewers/reviewer_avatar_link.vue | 4 +- .../sidebar/components/reviewers/reviewers.vue | 8 +- .../components/reviewers/sidebar_reviewers.vue | 64 +- .../reviewers/uncollapsed_reviewer_list.vue | 22 +- .../sidebar/components/severity/severity.vue | 8 +- .../components/severity/sidebar_severity.vue | 8 +- app/assets/javascripts/sidebar/mount_sidebar.js | 17 +- .../queries/epic_confidential.query.graphql | 2 - .../sidebar/queries/epic_due_date.query.graphql | 2 - .../queries/epic_participants.query.graphql | 2 - .../sidebar/queries/epic_reference.query.graphql | 2 - .../sidebar/queries/epic_start_date.query.graphql | 2 - .../sidebar/queries/epic_subscribed.query.graphql | 2 - .../sidebar/queries/epic_todo.query.graphql | 2 - .../sidebar/queries/group_milestones.query.graphql | 1 - .../queries/issue_confidential.query.graphql | 2 - .../sidebar/queries/issue_due_date.query.graphql | 2 - .../sidebar/queries/issue_reference.query.graphql | 2 - .../sidebar/queries/issue_subscribed.query.graphql | 2 - .../queries/issue_time_tracking.query.graphql | 2 - .../sidebar/queries/issue_todo.query.graphql | 2 - .../queries/merge_request_milestone.query.graphql | 2 - .../queries/merge_request_reference.query.graphql | 2 - .../queries/merge_request_subscribed.query.graphql | 2 - .../merge_request_time_tracking.query.graphql | 2 - .../queries/merge_request_todo.query.graphql | 2 - .../project_issue_milestone.mutation.graphql | 2 - .../queries/project_issue_milestone.query.graphql | 2 - .../queries/project_milestones.query.graphql | 1 - .../remove_attention_request.mutation.graphql | 7 - .../queries/request_attention.mutation.graphql | 5 - .../sidebar/queries/todo_create.mutation.graphql | 1 - .../queries/todo_mark_done.mutation.graphql | 1 - ...update_merge_request_milestone.mutation.graphql | 2 - .../sidebar/services/sidebar_service.js | 23 - app/assets/javascripts/sidebar/sidebar_bundle.js | 12 +- app/assets/javascripts/sidebar/sidebar_mediator.js | 87 +- .../javascripts/sidebar/stores/sidebar_store.js | 34 - .../fragments/snippet_base.fragment.graphql | 35 - .../surveys/merge_request_experience/app.js | 10 +- .../surveys/merge_request_experience/app.vue | 9 + app/assets/javascripts/task_list.js | 8 + app/assets/javascripts/test_utils/index.js | 2 + app/assets/javascripts/user_popovers.js | 4 +- .../javascripts/visibility_level/constants.js | 10 + .../components/action_buttons.vue | 124 ++ .../components/added_commit_message.vue | 85 +- .../components/approvals/approvals.vue | 11 - .../components/deployment/memory_usage.vue | 18 +- .../components/extensions/README.md | 1 + .../components/extensions/actions.vue | 116 -- .../components/extensions/base.vue | 2 +- .../components/extensions/child_content.vue | 2 +- .../components/extensions/telemetry.js | 30 + .../components/mr_widget_related_links.vue | 34 +- .../components/mr_widget_status_icon.vue | 20 +- .../components/state_container.vue | 55 + .../components/states/commit_edit.vue | 8 +- .../components/states/mr_widget_archived.vue | 4 +- .../states/mr_widget_auto_merge_enabled.vue | 94 +- .../states/mr_widget_auto_merge_failed.vue | 44 +- .../components/states/mr_widget_checking.vue | 4 +- .../components/states/mr_widget_closed.vue | 9 - .../components/states/mr_widget_conflicts.vue | 65 +- .../states/mr_widget_failed_to_merge.vue | 13 +- .../components/states/mr_widget_merged.vue | 168 +- .../components/states/mr_widget_merging.vue | 10 - .../components/states/mr_widget_missing_branch.vue | 8 +- .../states/mr_widget_pipeline_blocked.vue | 2 +- .../components/states/mr_widget_rebase.vue | 141 +- .../components/states/pipeline_failed.vue | 4 +- .../components/states/ready_to_merge.vue | 345 ++-- .../components/states/sha_mismatch.vue | 33 +- .../components/states/squash_before_merge.vue | 9 +- .../components/states/unresolved_discussions.vue | 53 +- .../components/states/work_in_progress.vue | 29 +- .../components/widget/app.vue | 27 + .../components/widget/widget.vue | 158 ++ .../extensions/accessibility/index.js | 9 +- .../extensions/test_report/utils.js | 12 +- .../mixins/ready_to_merge.js | 7 - .../vue_merge_request_widget/mr_widget_options.vue | 50 +- .../queries/states/ready_to_merge.fragment.graphql | 2 - .../stores/get_state_key.js | 2 - .../stores/mr_widget_store.js | 14 - .../components/confirm_danger/confirm_danger.vue | 1 + .../confirm_danger/confirm_danger_modal.vue | 11 +- .../store/modules/filters/actions.js | 4 +- .../vue_shared/components/gitlab_version_check.vue | 3 +- .../vue_shared/components/markdown/header.vue | 95 +- .../vue_shared/components/markdown/toolbar.vue | 12 +- .../components/markdown/toolbar_button.vue | 2 +- .../namespace_select/namespace_select.vue | 61 +- .../vue_shared/components/project_avatar.vue | 13 + .../project_selector/project_list_item.vue | 1 + .../components/rich_timestamp_tooltip.vue | 42 + .../queries/get_issue_assignees.query.graphql | 6 +- .../queries/get_issue_participants.query.graphql | 2 - .../queries/get_issue_timelogs.query.graphql | 1 - .../get_merge_request_reviewers.query.graphql | 26 + .../sidebar/queries/get_mr_assignees.query.graphql | 7 + .../sidebar/queries/get_mr_timelogs.query.graphql | 1 - .../vue_shared/components/source_editor.vue | 10 +- .../components/source_viewer/components/chunk.vue | 5 + .../source_viewer/components/chunk_line.vue | 35 +- .../components/source_viewer/constants.js | 1 + .../source_viewer/plugins/link_dependencies.js | 2 + .../plugins/utils/dependency_linker_util.js | 5 +- .../source_viewer/plugins/utils/gemspec_linker.js | 39 + .../plugins/utils/package_json_linker.js | 13 +- .../components/source_viewer/source_viewer.vue | 2 + .../components/user_avatar/user_avatar_image.vue | 11 +- .../user_avatar/user_avatar_image_new.vue | 12 +- .../components/user_avatar/user_avatar_link.vue | 11 +- .../user_avatar/user_avatar_link_new.vue | 7 +- .../components/user_avatar/user_avatar_list.vue | 2 +- .../components/user_popover/user_popover.vue | 12 + .../components/user_select/user_select.vue | 54 +- .../vue_shared/components/web_ide_link.vue | 30 +- app/assets/javascripts/vue_shared/constants.js | 27 +- .../issuable/list/components/issuable_item.vue | 12 +- .../list/components/issuable_list_root.vue | 6 + .../vue_shared/issuable/list/constants.js | 7 - .../issuable/show/components/issuable_header.vue | 24 +- .../show/components/issuable_show_root.vue | 7 + .../new_namespace/new_namespace_page.vue | 2 +- .../javascripts/whats_new/components/app.vue | 2 +- .../javascripts/whats_new/components/feature.vue | 29 +- .../work_items/components/item_state.vue | 10 +- .../work_items/components/item_title.vue | 5 +- .../work_items/components/work_item_actions.vue | 55 +- .../work_items/components/work_item_assignees.vue | 95 +- .../components/work_item_description.vue | 10 +- .../work_items/components/work_item_detail.vue | 150 +- .../components/work_item_detail_modal.vue | 41 +- .../work_items/components/work_item_labels.vue | 3 +- .../work_items/components/work_item_links/index.js | 16 +- .../components/work_item_links/work_item_links.vue | 269 +++- .../work_item_links/work_item_links_form.vue | 133 +- .../work_item_links/work_item_links_menu.vue | 79 +- .../work_items/components/work_item_state.vue | 7 +- .../work_items/components/work_item_title.vue | 7 +- .../work_items/components/work_item_type_icon.vue | 44 + .../work_items/components/work_item_weight.vue | 40 +- app/assets/javascripts/work_items/constants.js | 44 +- .../change_work_item_parent_link.mutation.graphql | 13 - .../graphql/create_work_item.mutation.graphql | 3 +- .../create_work_item_from_task.mutation.graphql | 2 +- .../local_update_work_item.mutation.graphql | 2 +- .../javascripts/work_items/graphql/provider.js | 28 +- .../work_items/graphql/typedefs.graphql | 26 +- .../graphql/update_work_item.mutation.graphql | 2 +- .../graphql/update_work_item_task.mutation.graphql | 2 +- .../update_work_item_widgets.mutation.graphql | 2 +- .../work_items/graphql/work_item.fragment.graphql | 10 +- .../work_items/graphql/work_item.query.graphql | 6 +- .../graphql/work_item_links.query.graphql | 6 + app/assets/stylesheets/_page_specific_files.scss | 1 - app/assets/stylesheets/components/avatar.scss | 12 +- .../components/batch_comments/review_bar.scss | 2 +- .../components/rich_content_editor.scss | 54 - app/assets/stylesheets/framework/blocks.scss | 83 - app/assets/stylesheets/framework/calendar.scss | 39 - .../stylesheets/framework/contextual_sidebar.scss | 14 +- .../framework/contextual_sidebar_header.scss | 4 +- app/assets/stylesheets/framework/dropdowns.scss | 28 +- app/assets/stylesheets/framework/files.scss | 17 + app/assets/stylesheets/framework/highlight.scss | 58 +- app/assets/stylesheets/framework/mixins.scss | 2 +- .../framework/secondary_navigation_elements.scss | 19 - app/assets/stylesheets/framework/sidebar.scss | 4 +- app/assets/stylesheets/framework/sortable.scss | 2 - app/assets/stylesheets/framework/timeline.scss | 4 + app/assets/stylesheets/framework/typography.scss | 29 + app/assets/stylesheets/framework/variables.scss | 4 - .../stylesheets/framework/vue_transitions.scss | 2 +- app/assets/stylesheets/highlight/common.scss | 31 +- app/assets/stylesheets/highlight/themes/dark.scss | 10 +- .../stylesheets/highlight/themes/monokai.scss | 10 +- app/assets/stylesheets/highlight/themes/none.scss | 10 +- .../highlight/themes/solarized-dark.scss | 10 +- .../highlight/themes/solarized-light.scss | 10 +- app/assets/stylesheets/highlight/white_base.scss | 10 +- app/assets/stylesheets/page_bundles/boards.scss | 4 +- .../page_bundles/escalation_policies.scss | 16 +- app/assets/stylesheets/page_bundles/group.scss | 59 +- .../stylesheets/page_bundles/merge_requests.scss | 32 +- app/assets/stylesheets/page_bundles/pipeline.scss | 18 +- app/assets/stylesheets/page_bundles/profile.scss | 212 +++ .../stylesheets/page_bundles/runner_details.scss | 3 + app/assets/stylesheets/pages/issuable.scss | 2 +- app/assets/stylesheets/pages/issues.scss | 2 +- app/assets/stylesheets/pages/login.scss | 14 + app/assets/stylesheets/pages/merge_requests.scss | 4 +- app/assets/stylesheets/pages/note_form.scss | 9 - app/assets/stylesheets/pages/notes.scss | 10 +- app/assets/stylesheets/pages/profile.scss | 94 -- app/assets/stylesheets/pages/search.scss | 37 +- app/assets/stylesheets/pages/settings_ci_cd.scss | 18 - app/assets/stylesheets/startup/startup-dark.scss | 43 +- .../stylesheets/startup/startup-general.scss | 35 +- app/assets/stylesheets/startup/startup-signin.scss | 177 +- app/assets/stylesheets/themes/_dark.scss | 2 + .../stylesheets/themes/dark_mode_overrides.scss | 16 + app/assets/stylesheets/themes/theme_helper.scss | 8 +- app/channels/awareness_channel.rb | 1 + .../diffs/overflow_warning_component.html.haml | 2 +- app/components/pajamas/avatar_component.html.haml | 12 + app/components/pajamas/avatar_component.rb | 69 + app/components/pajamas/button_component.html.haml | 9 +- app/components/pajamas/button_component.rb | 8 +- app/components/pajamas/checkbox_component.rb | 9 +- .../pajamas/checkbox_tag_component.html.haml | 6 + app/components/pajamas/checkbox_tag_component.rb | 44 + .../checkbox_radio_label_with_help_text.rb | 4 + app/components/pajamas/radio_component.rb | 4 +- .../admin/application_settings_controller.rb | 4 + app/controllers/admin/applications_controller.rb | 1 - .../admin/broadcast_messages_controller.rb | 1 - app/controllers/admin/ci/variables_controller.rb | 4 +- app/controllers/admin/dev_ops_report_controller.rb | 17 +- app/controllers/admin/projects_controller.rb | 4 +- .../admin/runner_projects_controller.rb | 2 +- app/controllers/admin/system_info_controller.rb | 18 +- app/controllers/admin/topics_controller.rb | 20 + app/controllers/admin/usage_trends_controller.rb | 16 +- app/controllers/admin/users_controller.rb | 2 +- app/controllers/autocomplete_controller.rb | 9 +- .../concerns/accepts_pending_invitations.rb | 14 +- app/controllers/concerns/creates_commit.rb | 3 +- app/controllers/concerns/issuable_actions.rb | 16 +- app/controllers/concerns/notes_actions.rb | 3 +- .../concerns/product_analytics_tracking.rb | 37 +- app/controllers/concerns/redis_tracking.rb | 2 +- app/controllers/concerns/uploads_actions.rb | 6 +- app/controllers/groups/boards_controller.rb | 4 +- .../groups/settings/ci_cd_controller.rb | 3 + app/controllers/groups/variables_controller.rb | 2 +- app/controllers/groups_controller.rb | 4 + app/controllers/import/bulk_imports_controller.rb | 10 +- app/controllers/oauth/token_info_controller.rb | 2 +- app/controllers/omniauth_callbacks_controller.rb | 5 +- .../profiles/personal_access_tokens_controller.rb | 6 +- .../profiles/two_factor_auths_controller.rb | 2 +- .../projects/alerting/notifications_controller.rb | 2 - .../analytics/cycle_analytics/stages_controller.rb | 21 + app/controllers/projects/blob_controller.rb | 1 + app/controllers/projects/boards_controller.rb | 4 +- .../projects/ci/pipeline_editor_controller.rb | 1 - .../projects/ci/secure_files_controller.rb | 11 - app/controllers/projects/compare_controller.rb | 2 +- .../projects/feature_flags_controller.rb | 6 +- .../projects/google_cloud/base_controller.rb | 12 + .../google_cloud/configuration_controller.rb | 1 - .../projects/google_cloud/databases_controller.rb | 1 - .../google_cloud/deployments_controller.rb | 7 +- .../google_cloud/gcp_regions_controller.rb | 6 - .../google_cloud/service_accounts_controller.rb | 22 +- app/controllers/projects/incidents_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 16 +- app/controllers/projects/jobs_controller.rb | 6 +- .../projects/merge_requests/diffs_controller.rb | 30 +- .../projects/merge_requests/drafts_controller.rb | 4 +- .../projects/merge_requests_controller.rb | 5 +- app/controllers/projects/milestones_controller.rb | 4 +- app/controllers/projects/mirrors_controller.rb | 4 +- app/controllers/projects/pages_controller.rb | 22 +- .../projects/pipelines/stages_controller.rb | 3 +- .../projects/repositories_controller.rb | 4 +- .../projects/runner_projects_controller.rb | 2 +- .../settings/integration_hook_logs_controller.rb | 2 +- .../projects/settings/integrations_controller.rb | 2 +- .../settings/packages_and_registries_controller.rb | 11 + .../projects/tags/releases_controller.rb | 39 - app/controllers/projects/tree_controller.rb | 1 + app/controllers/projects/variables_controller.rb | 2 +- app/controllers/projects/work_items_controller.rb | 2 +- app/controllers/projects_controller.rb | 30 +- app/controllers/registrations_controller.rb | 1 + .../repositories/git_http_client_controller.rb | 2 +- app/controllers/repositories/lfs_api_controller.rb | 12 +- .../repositories/lfs_locks_api_controller.rb | 4 +- app/controllers/search_controller.rb | 19 +- app/controllers/sessions_controller.rb | 4 +- app/controllers/uploads_controller.rb | 12 +- .../users/namespace_callouts_controller.rb | 17 + .../users/project_callouts_controller.rb | 17 + app/controllers/users_controller.rb | 6 +- app/events/groups/group_deleted_event.rb | 16 + app/events/groups/group_path_changed_event.rb | 18 + app/events/groups/group_transfered_event.rb | 17 + app/events/merge_requests/approved_event.rb | 19 + app/events/projects/project_archived_event.rb | 17 + app/events/projects/project_transfered_event.rb | 25 + ...security_reports_mr_widget_prompt_experiment.rb | 4 +- ...o_tutorials_continuous_onboarding_experiment.rb | 4 +- .../deploy_keys_with_write_access_finder.rb | 21 + .../ci/daily_build_group_report_results_finder.rb | 10 +- app/finders/ci/runners_finder.rb | 11 +- app/finders/crm/contacts_finder.rb | 21 +- app/finders/fork_targets_finder.rb | 30 +- .../groups/accepting_project_transfers_finder.rb | 43 + app/finders/groups/user_groups_finder.rb | 4 +- app/finders/issuable_finder.rb | 3 +- app/finders/projects/topics_finder.rb | 7 + app/finders/releases/group_releases_finder.rb | 2 +- app/finders/repositories/changelog_tag_finder.rb | 4 +- app/finders/tags_finder.rb | 2 +- app/graphql/gitlab_schema.rb | 2 + app/graphql/graphql_triggers.rb | 4 + app/graphql/mutations/award_emojis/toggle.rb | 7 +- app/graphql/mutations/ci/job/retry.rb | 11 +- app/graphql/mutations/ci/pipeline/cancel.rb | 1 - app/graphql/mutations/ci/runner/bulk_delete.rb | 56 + app/graphql/mutations/ci/runner/update.rb | 10 +- .../ci/runners_registration_token/reset.rb | 5 +- .../mutations/work_items/update_arguments.rb | 10 +- .../mutations/container_repositories/destroy.rb | 2 + app/graphql/mutations/design_management/move.rb | 19 +- app/graphql/mutations/issues/move.rb | 4 +- app/graphql/mutations/issues/set_confidential.rb | 2 +- app/graphql/mutations/issues/set_severity.rb | 5 +- .../merge_requests/remove_attention_request.rb | 40 - .../mutations/merge_requests/request_attention.rb | 40 - .../mutations/merge_requests/set_reviewers.rb | 52 + .../merge_requests/toggle_attention_requested.rb | 29 - app/graphql/mutations/notes/create/base.rb | 10 +- .../ci_configuration/base_security_analyzer.rb | 14 +- app/graphql/mutations/timelogs/base.rb | 18 + app/graphql/mutations/timelogs/create.rb | 48 + app/graphql/mutations/timelogs/delete.rb | 13 +- app/graphql/mutations/uploads/delete.rb | 37 + app/graphql/mutations/work_items/create.rb | 3 + app/graphql/mutations/work_items/update.rb | 2 + app/graphql/resolvers/ci/config_resolver.rb | 4 +- app/graphql/resolvers/ci/runners_resolver.rb | 2 +- app/graphql/resolvers/ci/template_resolver.rb | 7 +- .../resolvers/crm/contact_state_counts_resolver.rb | 25 + app/graphql/resolvers/crm/contacts_resolver.rb | 21 +- app/graphql/resolvers/environments_resolver.rb | 4 +- .../sentry_detailed_error_resolver.rb | 2 +- app/graphql/resolvers/group_milestones_resolver.rb | 4 + .../resolvers/projects/fork_targets_resolver.rb | 27 + app/graphql/resolvers/projects_resolver.rb | 4 +- app/graphql/resolvers/users_resolver.rb | 2 +- app/graphql/resolvers/work_items_resolver.rb | 2 + app/graphql/types/access_level_type.rb | 8 +- .../analytics/usage_trends/measurement_type.rb | 8 +- .../types/alert_management/domain_filter_enum.rb | 11 +- app/graphql/types/base_field.rb | 4 +- app/graphql/types/board_list_type.rb | 16 +- app/graphql/types/board_type.rb | 16 +- app/graphql/types/ci/analytics_type.rb | 22 +- app/graphql/types/ci/application_setting_type.rb | 2 +- app/graphql/types/ci/build_need_type.rb | 4 +- app/graphql/types/ci/ci_cd_setting_type.rb | 22 +- app/graphql/types/ci/config/config_type.rb | 12 +- app/graphql/types/ci/config/group_type.rb | 6 +- .../types/ci/config/job_restriction_type.rb | 2 +- app/graphql/types/ci/config/job_type.rb | 38 +- app/graphql/types/ci/config/need_type.rb | 2 +- app/graphql/types/ci/config/stage_type.rb | 4 +- app/graphql/types/ci/detailed_status_type.rb | 30 +- app/graphql/types/ci/group_type.rb | 10 +- app/graphql/types/ci/group_variable_type.rb | 25 + app/graphql/types/ci/instance_variable_type.rb | 33 + app/graphql/types/ci/job_artifact_type.rb | 8 +- app/graphql/types/ci/job_token_scope_type.rb | 8 +- app/graphql/types/ci/job_type.rb | 72 +- app/graphql/types/ci/manual_variable_type.rb | 25 + app/graphql/types/ci/pipeline_message_type.rb | 4 +- app/graphql/types/ci/pipeline_type.rb | 72 +- app/graphql/types/ci/project_variable_type.rb | 25 + app/graphql/types/ci/recent_failures_type.rb | 4 +- app/graphql/types/ci/runner_architecture_type.rb | 8 +- app/graphql/types/ci/runner_platform_type.rb | 10 +- app/graphql/types/ci/runner_setup_type.rb | 4 +- app/graphql/types/ci/runner_type.rb | 76 +- app/graphql/types/ci/runner_upgrade_status_enum.rb | 20 + .../types/ci/runner_upgrade_status_type_enum.rb | 20 - app/graphql/types/ci/runner_web_url_edge.rb | 8 +- app/graphql/types/ci/stage_type.rb | 12 +- app/graphql/types/ci/status_action_type.rb | 16 +- app/graphql/types/ci/template_type.rb | 4 +- app/graphql/types/ci/test_case_type.rb | 26 +- app/graphql/types/ci/test_report_summary_type.rb | 8 +- app/graphql/types/ci/test_report_total_type.rb | 14 +- app/graphql/types/ci/test_suite_summary_type.rb | 30 +- app/graphql/types/ci/test_suite_type.rb | 29 +- app/graphql/types/ci/variable_input_type.rb | 13 + app/graphql/types/ci/variable_interface.rb | 31 + app/graphql/types/ci/variable_type.rb | 40 - .../sast/analyzers_entity_input_type.rb | 4 +- .../ci_configuration/sast/analyzers_entity_type.rb | 14 +- .../ci_configuration/sast/entity_input_type.rb | 6 +- .../types/ci_configuration/sast/entity_type.rb | 20 +- .../ci_configuration/sast/options_entity_type.rb | 4 +- app/graphql/types/ci_configuration/sast/type.rb | 18 +- app/graphql/types/commit_action_type.rb | 14 +- app/graphql/types/commit_type.rb | 30 +- .../types/concerns/gitlab_style_deprecations.rb | 5 +- app/graphql/types/countable_connection_type.rb | 2 +- .../types/customer_relations/contact_sort_enum.rb | 21 + .../contact_state_counts_type.rb | 23 + .../types/customer_relations/contact_state_enum.rb | 8 +- .../design_management/design_collection_type.rb | 4 +- .../types/design_management/design_fields.rb | 5 +- .../types/design_management/version_type.rb | 6 +- app/graphql/types/diff_paths_input_type.rb | 4 +- app/graphql/types/diff_refs_type.rb | 6 +- app/graphql/types/diff_stats_summary_type.rb | 8 +- app/graphql/types/diff_stats_type.rb | 6 +- app/graphql/types/environment_type.rb | 12 +- app/graphql/types/evidence_type.rb | 8 +- app/graphql/types/global_id_type.rb | 2 +- app/graphql/types/grafana_integration_type.rb | 10 +- app/graphql/types/group_invitation_type.rb | 2 +- app/graphql/types/group_member_type.rb | 2 +- app/graphql/types/group_type.rb | 19 +- app/graphql/types/invitation_interface.rb | 14 +- app/graphql/types/issue_type.rb | 106 +- app/graphql/types/issue_type_enum.rb | 2 +- app/graphql/types/jira_import_type.rb | 14 +- app/graphql/types/jira_user_type.rb | 14 +- app/graphql/types/label_type.rb | 16 +- app/graphql/types/member_interface.rb | 14 +- app/graphql/types/merge_request_connection_type.rb | 4 +- app/graphql/types/merge_request_type.rb | 157 +- .../merge_requests/detailed_merge_status_enum.rb | 44 + app/graphql/types/metadata/kas_type.rb | 6 +- app/graphql/types/metadata_type.rb | 6 +- app/graphql/types/metrics/dashboard_type.rb | 10 +- .../types/metrics/dashboards/annotation_type.rb | 12 +- app/graphql/types/milestone_stats_type.rb | 8 +- app/graphql/types/milestone_type.rb | 36 +- app/graphql/types/mutation_type.rb | 25 +- app/graphql/types/namespace_type.rb | 41 +- .../types/notes/diff_image_position_input_type.rb | 16 +- .../types/notes/diff_position_base_input_type.rb | 6 +- .../types/notes/diff_position_input_type.rb | 4 +- app/graphql/types/notes/diff_position_type.rb | 24 +- app/graphql/types/notes/discussion_type.rb | 10 +- app/graphql/types/notes/note_type.rb | 28 +- app/graphql/types/packages/package_base_type.rb | 6 +- app/graphql/types/packages/package_details_type.rb | 2 +- app/graphql/types/packages/package_file_type.rb | 2 +- app/graphql/types/permission_types/group_enum.rb | 3 +- app/graphql/types/project_invitation_type.rb | 2 +- app/graphql/types/project_member_type.rb | 2 +- app/graphql/types/project_statistics_type.rb | 26 +- app/graphql/types/project_type.rb | 134 +- app/graphql/types/projects/service_type.rb | 6 +- .../types/projects/services/jira_project_type.rb | 8 +- app/graphql/types/projects/topic_type.rb | 12 +- app/graphql/types/prometheus_alert_type.rb | 2 +- app/graphql/types/query_type.rb | 6 +- app/graphql/types/release_asset_link_type.rb | 16 +- app/graphql/types/release_assets_type.rb | 6 +- app/graphql/types/release_links_type.rb | 26 +- app/graphql/types/release_source_type.rb | 4 +- app/graphql/types/release_type.rb | 36 +- app/graphql/types/repository/blob_type.rb | 88 +- app/graphql/types/repository_type.rb | 18 +- app/graphql/types/resolvable_interface.rb | 10 +- app/graphql/types/snippet_type.rb | 28 +- app/graphql/types/snippets/blob_connection_type.rb | 4 +- app/graphql/types/snippets/blob_type.rb | 22 +- app/graphql/types/subscription_type.rb | 11 +- app/graphql/types/task_completion_status.rb | 4 +- .../types/time_tracking/timelog_category_type.rb | 51 + app/graphql/types/tree/blob_type.rb | 10 +- app/graphql/types/tree/entry_type.rb | 12 +- app/graphql/types/tree/submodule_type.rb | 4 +- app/graphql/types/tree/tree_entry_type.rb | 4 +- app/graphql/types/tree/tree_type.rb | 10 +- app/graphql/types/upload_type.rb | 19 + app/graphql/types/user_callout_type.rb | 4 +- app/graphql/types/user_interface.rb | 8 +- app/graphql/types/user_status_type.rb | 8 +- app/graphql/types/work_item_type.rb | 31 +- app/graphql/types/work_items/type_type.rb | 6 +- app/graphql/types/work_items/widget_interface.rb | 30 +- .../work_items/widgets/assignees_input_type.rb | 16 + .../types/work_items/widgets/assignees_type.rb | 15 +- .../types/work_items/widgets/description_type.rb | 5 +- .../types/work_items/widgets/hierarchy_type.rb | 12 +- .../types/work_items/widgets/labels_type.rb | 27 + .../work_items/widgets/start_and_due_date_type.rb | 25 + .../start_and_due_date_update_input_type.rb | 18 + .../types/work_items/widgets/weight_input_type.rb | 15 - .../types/work_items/widgets/weight_type.rb | 21 - app/helpers/admin/identities_helper.rb | 36 + app/helpers/application_helper.rb | 22 +- app/helpers/avatars_helper.rb | 6 +- app/helpers/badges_helper.rb | 6 +- app/helpers/blob_helper.rb | 16 +- app/helpers/ci/pipeline_editor_helper.rb | 3 +- app/helpers/ci/pipelines_helper.rb | 4 +- app/helpers/ci/runners_helper.rb | 2 +- app/helpers/commits_helper.rb | 9 +- app/helpers/compare_helper.rb | 57 +- app/helpers/dashboard_helper.rb | 4 - app/helpers/environments_helper.rb | 44 +- app/helpers/events_helper.rb | 2 +- app/helpers/favicon_helper.rb | 6 +- app/helpers/form_helper.rb | 44 +- app/helpers/gitlab_script_tag_helper.rb | 4 +- app/helpers/groups/group_members_helper.rb | 9 +- app/helpers/groups_helper.rb | 17 +- app/helpers/instance_configuration_helper.rb | 2 +- .../issuables_description_templates_helper.rb | 29 +- app/helpers/issuables_helper.rb | 10 +- app/helpers/labels_helper.rb | 2 +- app/helpers/markup_helper.rb | 13 +- app/helpers/members_helper.rb | 18 + app/helpers/merge_requests_helper.rb | 60 +- app/helpers/namespaces_helper.rb | 18 - app/helpers/nav/new_dropdown_helper.rb | 2 +- app/helpers/nav/top_nav_helper.rb | 7 - app/helpers/packages_helper.rb | 23 + app/helpers/preferences_helper.rb | 2 +- app/helpers/profiles_helper.rb | 4 - app/helpers/projects/pipeline_helper.rb | 9 +- app/helpers/projects_helper.rb | 59 +- app/helpers/search_helper.rb | 36 +- app/helpers/sorting_helper.rb | 178 +- app/helpers/storage_helper.rb | 86 +- app/helpers/system_note_helper.rb | 1 + app/helpers/tab_helper.rb | 8 +- app/helpers/time_zone_helper.rb | 2 +- app/helpers/todos_helper.rb | 11 +- app/helpers/users_helper.rb | 12 +- app/helpers/webpack_helper.rb | 12 +- app/helpers/wiki_helper.rb | 8 +- app/mailers/abuse_report_mailer.rb | 4 +- app/mailers/emails/admin_notification.rb | 20 +- app/mailers/emails/merge_requests.rb | 7 - app/mailers/emails/projects.rb | 6 +- app/models/application_setting.rb | 4 +- app/models/application_setting_implementation.rb | 2 +- app/models/approval.rb | 3 +- app/models/audit_event.rb | 12 + app/models/authentication_event.rb | 2 +- app/models/blob.rb | 4 +- app/models/blob_viewer/metrics_dashboard_yml.rb | 12 +- app/models/bulk_imports/configuration.rb | 2 +- app/models/bulk_imports/entity.rb | 4 +- app/models/chat_name.rb | 6 +- app/models/ci/bridge.rb | 9 +- app/models/ci/build.rb | 90 +- app/models/ci/build_metadata.rb | 1 + app/models/ci/build_trace_metadata.rb | 4 +- app/models/ci/deleted_object.rb | 4 +- app/models/ci/job_artifact.rb | 67 +- app/models/ci/pipeline.rb | 104 +- app/models/ci/processable.rb | 2 +- app/models/ci/runner.rb | 17 +- app/models/ci/runner_version.rb | 4 +- app/models/ci/secure_file.rb | 6 +- app/models/commit.rb | 2 +- app/models/commit_range.rb | 4 +- app/models/commit_signatures/ssh_signature.rb | 2 +- app/models/compare.rb | 2 +- app/models/concerns/ci/artifactable.rb | 4 +- app/models/concerns/ci/has_status.rb | 4 +- app/models/concerns/ci/metadatable.rb | 10 + app/models/concerns/counter_attribute.rb | 47 +- app/models/concerns/cross_database_modification.rb | 36 +- app/models/concerns/database_event_tracking.rb | 53 + app/models/concerns/diff_positionable_note.rb | 6 +- .../concerns/enums/data_visualization_palette.rb | 22 +- app/models/concerns/enums/sbom.rb | 13 + app/models/concerns/expirable.rb | 5 +- app/models/concerns/featurable.rb | 8 +- .../concerns/integrations/base_data_fields.rb | 17 +- .../concerns/integrations/has_data_fields.rb | 4 +- app/models/concerns/integrations/has_web_hook.rb | 1 + app/models/concerns/issuable.rb | 18 +- app/models/concerns/participable.rb | 8 + .../concerns/project_features_compatibility.rb | 12 + app/models/concerns/prometheus_adapter.rb | 4 +- app/models/concerns/repository_storage_movable.rb | 4 +- app/models/concerns/taskable.rb | 4 +- app/models/concerns/triggerable_hooks.rb | 30 +- .../concerns/vulnerability_finding_helpers.rb | 3 +- .../concerns/x509_serial_number_attribute.rb | 4 +- app/models/container_repository.rb | 44 +- app/models/custom_emoji.rb | 2 +- app/models/customer_relations/contact.rb | 26 + .../customer_relations/contact_state_counts.rb | 42 + app/models/deploy_key.rb | 9 + app/models/deployment.rb | 7 +- app/models/design_management/design.rb | 4 +- app/models/design_management/design_action.rb | 2 +- app/models/environment.rb | 52 +- app/models/event.rb | 49 +- app/models/gpg_key.rb | 2 +- app/models/grafana_integration.rb | 4 +- app/models/group.rb | 20 +- app/models/group_group_link.rb | 17 + app/models/hooks/web_hook.rb | 23 +- app/models/integration.rb | 6 +- app/models/integrations/bamboo.rb | 4 +- app/models/integrations/base_issue_tracker.rb | 4 +- app/models/integrations/base_slash_commands.rb | 2 +- app/models/integrations/buildkite.rb | 2 +- app/models/integrations/datadog.rb | 157 +- app/models/integrations/discord.rb | 39 +- app/models/integrations/emails_on_push.rb | 2 +- app/models/integrations/external_wiki.rb | 11 + app/models/integrations/harbor.rb | 7 +- app/models/integrations/jenkins.rb | 4 +- app/models/integrations/jira.rb | 36 +- app/models/integrations/packagist.rb | 13 +- app/models/integrations/pipelines_email.rb | 4 +- app/models/integrations/prometheus.rb | 4 +- app/models/integrations/pumble.rb | 59 + app/models/integrations/slack.rb | 17 + app/models/integrations/teamcity.rb | 4 +- app/models/issuable_severity.rb | 16 +- app/models/issue.rb | 61 +- app/models/jira_connect_installation.rb | 4 +- app/models/key.rb | 1 + app/models/lfs_object.rb | 2 +- app/models/loose_foreign_keys/deleted_record.rb | 37 +- app/models/member.rb | 12 + app/models/members/group_member.rb | 23 +- app/models/members/last_group_owner_assigner.rb | 4 +- app/models/members/member_role.rb | 9 + app/models/members/project_member.rb | 7 +- app/models/merge_request.rb | 86 +- .../merge_request/approval_removal_settings.rb | 39 + app/models/merge_request/metrics.rb | 3 +- app/models/merge_request_diff.rb | 11 +- app/models/ml.rb | 6 + app/models/ml/candidate.rb | 12 + app/models/ml/candidate_metric.rb | 10 + app/models/ml/candidate_param.rb | 10 + app/models/ml/experiment.rb | 12 + app/models/namespace.rb | 19 +- app/models/namespace/detail.rb | 9 + app/models/namespaces/traversal/linear_scopes.rb | 61 +- app/models/network/graph.rb | 2 +- app/models/note.rb | 18 + app/models/notification_reason.rb | 2 - app/models/oauth_access_token.rb | 11 +- app/models/operations/feature_flag.rb | 2 +- app/models/packages/package.rb | 4 +- app/models/pages_domain.rb | 4 +- .../performance_monitoring/prometheus_dashboard.rb | 8 +- app/models/personal_access_token.rb | 10 +- app/models/preloaders/labels_preloader.rb | 4 +- app/models/project.rb | 61 +- app/models/project_feature.rb | 3 + .../projects/import_export/relation_export.rb | 41 + app/models/projects/topic.rb | 1 + app/models/prometheus_alert.rb | 2 +- app/models/protected_branch.rb | 25 +- app/models/release.rb | 2 +- app/models/release_highlight.rb | 4 +- app/models/repository.rb | 18 +- app/models/sent_notification.rb | 12 +- app/models/serverless/domain_cluster.rb | 2 +- app/models/snippet.rb | 4 +- app/models/snippet_repository.rb | 6 +- app/models/system_note_metadata.rb | 2 +- app/models/terraform/state.rb | 2 +- app/models/todo.rb | 14 +- app/models/u2f_registration.rb | 34 +- app/models/user.rb | 129 +- app/models/user_status.rb | 16 +- app/models/users/callout.rb | 9 +- app/models/users/group_callout.rb | 8 +- app/models/users/project_callout.rb | 21 + app/models/wiki.rb | 10 +- app/models/work_item.rb | 15 +- app/models/work_items/parent_link.rb | 23 + app/models/work_items/type.rb | 16 +- app/models/work_items/widgets/labels.rb | 10 + .../work_items/widgets/start_and_due_date.rb | 9 + app/models/work_items/widgets/weight.rb | 9 - app/policies/ci/runner_policy.rb | 2 + app/policies/deployment_policy.rb | 2 + app/policies/group_policy.rb | 3 +- app/policies/issuable_policy.rb | 4 + .../group_project_namespace_shared_policy.rb | 14 +- .../namespaces/project_namespace_policy.rb | 6 +- app/policies/namespaces/user_namespace_policy.rb | 1 - app/policies/project_hook_policy.rb | 10 + app/policies/project_policy.rb | 27 +- app/policies/system_hook_policy.rb | 8 + .../time_tracking/timelog_category_policy.rb | 7 + app/policies/upload_policy.rb | 5 + app/policies/work_item_policy.rb | 3 + .../analytics/cycle_analytics/stage_presenter.rb | 2 +- app/presenters/ci/build_runner_presenter.rb | 3 +- app/presenters/merge_request_presenter.rb | 13 +- app/presenters/project_hook_presenter.rb | 2 +- app/presenters/project_member_presenter.rb | 22 + app/presenters/project_presenter.rb | 4 +- app/presenters/service_hook_presenter.rb | 2 +- app/presenters/web_hook_log_presenter.rb | 2 +- app/serializers/concerns/user_status_tooltip.rb | 2 +- app/serializers/environment_serializer.rb | 21 +- app/serializers/group_access_token_entity.rb | 26 + app/serializers/group_access_token_serializer.rb | 7 + app/serializers/integrations/project_entity.rb | 1 + app/serializers/issue_entity.rb | 4 + .../merge_request_poll_widget_entity.rb | 13 +- app/serializers/merge_request_user_entity.rb | 4 - app/serializers/personal_access_token_entity.rb | 11 + .../personal_access_token_serializer.rb | 7 + app/serializers/project_access_token_entity.rb | 27 + app/serializers/project_access_token_serializer.rb | 7 + app/serializers/rollout_status_entity.rb | 2 +- app/services/audit_events/build_service.rb | 87 + .../project_recalculate_service.rb | 2 +- app/services/auto_merge/base_service.rb | 1 + app/services/base_count_service.rb | 2 +- app/services/boards/destroy_service.rb | 4 - app/services/boards/lists/move_service.rb | 2 +- app/services/branches/create_service.rb | 84 +- app/services/bulk_imports/create_service.rb | 2 +- app/services/bulk_imports/file_download_service.rb | 9 +- app/services/chat_names/authorize_user_service.rb | 12 +- app/services/ci/archive_trace_service.rb | 4 +- app/services/ci/deployments/destroy_service.rb | 18 + app/services/ci/destroy_pipeline_service.rb | 2 +- app/services/ci/job_artifacts/create_service.rb | 2 + .../ci/job_artifacts/destroy_batch_service.rb | 4 +- app/services/ci/list_config_variables_service.rb | 4 +- app/services/ci/parse_dotenv_artifact_service.rb | 2 +- app/services/ci/register_job_service.rb | 18 + app/services/ci/retry_job_service.rb | 12 +- app/services/ci/runners/assign_runner_service.rb | 10 +- .../ci/runners/bulk_delete_runners_service.rb | 36 + .../process_runner_version_update_service.rb | 27 + .../reconcile_existing_runner_versions_service.rb | 14 +- app/services/ci/runners/register_runner_service.rb | 4 +- .../ci/runners/reset_registration_token_service.rb | 10 +- app/services/ci/runners/unassign_runner_service.rb | 10 +- .../ci/runners/unregister_runner_service.rb | 1 + app/services/ci/stuck_builds/drop_helpers.rb | 12 +- app/services/ci/track_failed_build_service.rb | 49 + app/services/ci/update_build_state_service.rb | 2 +- .../concerns/alert_management/alert_processing.rb | 21 +- .../concerns/work_items/widgetable_service.rb | 2 +- app/services/database/consistency_check_service.rb | 2 +- .../deployments/update_environment_service.rb | 8 +- .../generate_image_versions_service.rb | 2 +- app/services/error_tracking/base_service.rb | 2 +- app/services/google_cloud/base_service.rb | 2 +- .../create_cloudsql_instance_service.rb | 74 + .../google_cloud/enable_cloudsql_service.rb | 23 + .../google_cloud/get_cloudsql_instances_service.rb | 18 + .../setup_cloudsql_instance_service.rb | 80 +- app/services/groups/destroy_service.rb | 13 + .../groups/import_export/export_service.rb | 20 +- .../groups/import_export/import_service.rb | 8 +- app/services/groups/transfer_service.rb | 17 +- app/services/groups/update_service.rb | 28 +- app/services/import/prepare_service.rb | 31 + .../timeline_events/create_service.rb | 20 + .../timeline_events/update_service.rb | 2 +- app/services/issuable/clone/base_service.rb | 1 + .../issuable/common_system_notes_service.rb | 15 +- app/services/issuable/import_csv/base_service.rb | 16 +- app/services/issues/clone_service.rb | 12 +- app/services/issues/create_service.rb | 2 +- app/services/issues/export_csv_service.rb | 36 +- app/services/issues/prepare_import_csv_service.rb | 19 + app/services/issues/update_service.rb | 7 + app/services/jira/requests/base.rb | 8 +- app/services/merge_requests/approval_service.rb | 53 +- app/services/merge_requests/base_service.rb | 18 - .../bulk_remove_attention_requested_service.rb | 28 - app/services/merge_requests/close_service.rb | 1 - .../create_approval_event_service.rb | 11 + .../merge_requests/create_pipeline_service.rb | 3 +- .../execute_approval_hooks_service.rb | 13 + .../handle_assignees_change_service.rb | 4 - .../mergeability/check_base_service.rb | 8 +- .../mergeability/check_broken_status_service.rb | 8 +- .../mergeability/check_ci_status_service.rb | 8 +- .../check_discussions_status_service.rb | 8 +- .../mergeability/check_draft_status_service.rb | 8 +- .../mergeability/check_open_status_service.rb | 8 +- .../mergeability/run_checks_service.rb | 30 +- .../merge_requests/mergeability_check_service.rb | 4 +- app/services/merge_requests/post_merge_service.rb | 1 - .../merge_requests/push_options_handler_service.rb | 2 +- .../merge_requests/remove_approval_service.rb | 1 - .../remove_attention_requested_service.rb | 50 - app/services/merge_requests/reopen_service.rb | 2 - .../merge_requests/request_attention_service.rb | 60 - .../toggle_attention_requested_service.rb | 68 - .../merge_requests/update_assignees_service.rb | 23 +- .../merge_requests/update_reviewers_service.rb | 44 + app/services/merge_requests/update_service.rb | 36 +- app/services/notes/build_service.rb | 8 + app/services/notes/create_service.rb | 24 +- app/services/notes/destroy_service.rb | 3 +- app/services/notes/update_service.rb | 3 +- .../notification_recipients/build_service.rb | 4 - .../builder/attention_requested.rb | 23 - app/services/notification_service.rb | 10 +- .../packages/conan/create_package_file_service.rb | 6 +- .../packages/create_package_file_service.rb | 10 +- .../packages/debian/create_package_file_service.rb | 10 +- .../packages/debian/extract_metadata_service.rb | 8 +- .../packages/npm/create_package_service.rb | 6 +- app/services/projects/alerting/notify_service.rb | 2 +- app/services/projects/create_service.rb | 28 +- app/services/projects/fork_service.rb | 22 +- .../projects/import_export/export_service.rb | 35 +- .../import_export/relation_export_service.rb | 95 ++ .../projects/lfs_pointers/lfs_download_service.rb | 2 +- .../projects/prometheus/alerts/notify_service.rb | 2 +- app/services/projects/transfer_service.rb | 14 + .../projects/update_remote_mirror_service.rb | 10 +- app/services/projects/update_service.rb | 14 + app/services/protected_branches/base_service.rb | 4 + app/services/protected_branches/cache_service.rb | 68 + app/services/protected_branches/create_service.rb | 2 + app/services/protected_branches/destroy_service.rb | 2 +- app/services/protected_branches/update_service.rb | 2 + app/services/releases/create_service.rb | 4 - .../resource_events/change_labels_service.rb | 14 + .../ci_configuration/sast_parser_service.rb | 6 +- app/services/system_note_service.rb | 54 +- app/services/system_notes/issuables_service.rb | 84 +- app/services/system_notes/time_tracking_service.rb | 71 +- app/services/timelogs/base_service.rb | 21 +- app/services/timelogs/create_service.rb | 45 + app/services/timelogs/delete_service.rb | 16 +- app/services/todo_service.rb | 5 - .../todos/destroy/destroyed_issuable_service.rb | 7 +- app/services/topics/merge_service.rb | 64 + app/services/uploads/destroy_service.rb | 51 + .../users/dismiss_namespace_callout_service.rb | 11 + .../users/dismiss_project_callout_service.rb | 11 + app/services/users/update_service.rb | 2 +- app/services/web_hooks/admin_destroy_service.rb | 20 + app/services/web_hooks/destroy_service.rb | 24 +- app/services/web_hooks/log_execution_service.rb | 25 - app/services/webauthn/authenticate_service.rb | 2 + app/services/work_items/create_and_link_service.rb | 19 +- .../work_items/parent_links/create_service.rb | 4 +- .../work_items/parent_links/destroy_service.rb | 4 +- app/services/work_items/update_service.rb | 4 +- .../widgets/assignees_service/update_service.rb | 36 + app/services/work_items/widgets/base_service.rb | 9 +- .../widgets/description_service/update_service.rb | 8 +- .../widgets/hierarchy_service/base_service.rb | 15 +- .../start_and_due_date_service/update_service.rb | 15 + .../widgets/weight_service/update_service.rb | 15 - app/uploaders/avatar_uploader.rb | 4 +- .../design_management/design_v432x230_uploader.rb | 4 +- app/uploaders/favicon_uploader.rb | 8 +- app/uploaders/file_uploader.rb | 4 +- app/uploaders/object_storage.rb | 10 +- .../json_schemas/build_metadata_id_tokens.json | 22 + app/validators/json_schemas/cyclonedx_report.json | 1697 ++++++++++++++++++++ .../admin/application_settings/_ci_cd.html.haml | 2 +- .../application_settings/_default_branch.html.haml | 2 +- .../application_settings/_diff_limits.html.haml | 4 +- .../_repository_storage.html.haml | 2 +- .../_runner_registrars_form.html.haml | 2 +- .../admin/application_settings/_snowplow.html.haml | 2 +- .../admin/application_settings/_usage.html.haml | 4 +- .../application_settings/_whats_new.html.haml | 2 +- .../appearances/_form.html.haml | 2 +- app/views/admin/applications/index.html.haml | 3 - app/views/admin/dashboard/index.html.haml | 2 +- app/views/admin/groups/_form.html.haml | 2 +- app/views/admin/hook_logs/_index.html.haml | 11 - app/views/admin/hooks/edit.html.haml | 4 +- app/views/admin/identities/_identity.html.haml | 28 +- app/views/admin/identities/index.html.haml | 28 +- app/views/admin/labels/_label.html.haml | 2 +- app/views/admin/runners/show.html.haml | 1 + app/views/admin/users/_head.html.haml | 2 +- app/views/ci/variables/_index.html.haml | 7 +- .../clusters/_gitlab_integration_form.html.haml | 2 +- .../_cloud_provider_button.html.haml | 2 +- app/views/dashboard/_groups_head.html.haml | 2 +- app/views/devise/passwords/new.html.haml | 2 +- app/views/devise/registrations/new.html.haml | 1 + app/views/devise/sessions/_new_base.html.haml | 5 +- .../sessions/_new_base_user_login_label.html.haml | 2 +- app/views/devise/sessions/new.html.haml | 5 +- app/views/devise/sessions/two_factor.html.haml | 4 +- app/views/devise/shared/_footer.html.haml | 1 + app/views/devise/shared/_omniauth_box.html.haml | 9 +- app/views/devise/shared/_signup_box.html.haml | 16 +- .../shared/_signup_omniauth_provider_list.haml | 31 +- .../devise/shared/_signup_omniauth_providers.haml | 5 +- app/views/events/event/_push.html.haml | 7 +- app/views/groups/_home_panel.html.haml | 5 +- app/views/groups/_new_group_fields.html.haml | 45 +- app/views/groups/crm/contacts/index.html.haml | 2 +- app/views/groups/dependency_proxies/show.html.haml | 4 +- app/views/groups/milestones/_form.html.haml | 2 +- app/views/groups/new.html.haml | 3 +- app/views/groups/runners/show.html.haml | 14 +- app/views/groups/settings/_advanced.html.haml | 2 +- .../groups/settings/access_tokens/index.html.haml | 2 +- .../settings/ci_cd/_auto_devops_form.html.haml | 2 +- app/views/groups/settings/ci_cd/show.html.haml | 2 +- app/views/import/_githubish_status.html.haml | 6 +- .../layouts/_google_tag_manager_head.html.haml | 19 + app/views/layouts/_snowplow.html.haml | 7 +- app/views/layouts/component_preview.html.haml | 5 + app/views/layouts/devise.html.haml | 78 +- app/views/layouts/group.html.haml | 4 +- .../header/_current_user_dropdown.html.haml | 2 +- .../header/_current_user_dropdown_item.html.haml | 4 +- app/views/layouts/header/_default.html.haml | 23 +- .../header/_storage_enforcement_banner.html.haml | 11 +- app/views/layouts/nav/sidebar/_admin.html.haml | 6 +- app/views/layouts/nav/sidebar/_profile.html.haml | 2 +- app/views/layouts/profile.html.haml | 3 +- app/views/layouts/project.html.haml | 4 +- .../notify/approved_merge_request_email.text.haml | 2 +- ...tention_requested_merge_request_email.html.haml | 2 - ...ttention_requested_merge_request_email.text.erb | 1 - .../notify/closed_merge_request_email.text.haml | 2 +- .../notify/member_access_requested_email.html.haml | 3 +- .../notify/member_invite_accepted_email.html.haml | 9 +- .../notify/member_invite_accepted_email.text.erb | 7 +- .../notify/member_invite_declined_email.html.haml | 12 +- .../notify/merge_request_status_email.text.haml | 2 +- .../merge_request_unmergeable_email.html.haml | 2 +- .../merge_request_unmergeable_email.text.haml | 2 +- .../merge_when_pipeline_succeeds_email.text.haml | 2 +- .../notify/merged_merge_request_email.html.haml | 2 +- .../notify/merged_merge_request_email.text.haml | 2 +- .../new_mention_in_merge_request_email.text.erb | 2 +- app/views/notify/new_merge_request_email.html.haml | 2 +- app/views/notify/new_merge_request_email.text.erb | 2 +- .../unapproved_merge_request_email.text.haml | 2 +- app/views/notify/user_auto_banned_email.html.haml | 9 - app/views/notify/user_auto_banned_email.text.erb | 7 - app/views/profiles/emails/index.html.haml | 39 +- app/views/profiles/keys/index.html.haml | 6 + app/views/profiles/preferences/show.html.haml | 2 +- app/views/profiles/show.html.haml | 2 +- app/views/profiles/two_factor_auths/show.html.haml | 27 +- app/views/projects/_commit_button.html.haml | 2 +- app/views/projects/_home_panel.html.haml | 8 +- app/views/projects/_last_push.html.haml | 6 +- app/views/projects/_new_project_fields.html.haml | 36 +- app/views/projects/_transfer.html.haml | 2 +- app/views/projects/_visibility_modal.html.haml | 4 +- app/views/projects/blob/_editor.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 4 +- app/views/projects/branches/_panel.html.haml | 13 +- app/views/projects/buttons/_remove_tag.html.haml | 2 +- app/views/projects/buttons/_star.html.haml | 4 +- app/views/projects/ci/secure_files/show.html.haml | 3 - ..._user_different_email_signature_badge.html.haml | 2 +- app/views/projects/commits/_commit_list.html.haml | 21 +- app/views/projects/commits/_commits.html.haml | 2 +- app/views/projects/commits/show.html.haml | 5 +- app/views/projects/compare/show.html.haml | 8 +- app/views/projects/diffs/_diffs.html.haml | 2 +- .../google_cloud/configuration/index.html.haml | 2 +- .../google_cloud/databases/index.html.haml | 2 +- .../google_cloud/deployments/index.html.haml | 2 +- .../google_cloud/gcp_regions/index.html.haml | 2 +- .../google_cloud/service_accounts/index.html.haml | 2 +- app/views/projects/graphs/charts.html.haml | 15 +- app/views/projects/hook_logs/_index.html.haml | 11 - app/views/projects/hooks/edit.html.haml | 2 +- app/views/projects/imports/new.html.haml | 18 +- app/views/projects/issues/_new_branch.html.haml | 3 +- .../projects/issues/_related_issues.html.haml | 4 +- .../projects/issues/_work_item_links.html.haml | 2 +- app/views/projects/labels/index.html.haml | 6 +- .../_close_reopen_draft_report_toggle.html.haml | 7 +- app/views/projects/merge_requests/show.html.haml | 13 +- app/views/projects/milestones/_form.html.haml | 2 +- app/views/projects/new.html.haml | 2 +- app/views/projects/pages/_access.html.haml | 8 +- app/views/projects/pages/_header.html.haml | 11 + app/views/projects/pages/_list.html.haml | 69 +- app/views/projects/pages/_no_domains.html.haml | 6 +- app/views/projects/pages/_use.html.haml | 15 +- app/views/projects/pages/_waiting.html.haml | 13 + app/views/projects/pages/disabled.html.haml | 4 + app/views/projects/pages/new.html.haml | 7 + app/views/projects/pages/show.html.haml | 34 +- .../_pipeline_schedule.html.haml | 2 +- .../projects/pipeline_schedules/index.html.haml | 2 + app/views/projects/pipelines/charts.html.haml | 1 + .../projects/project_templates/_template.html.haml | 3 +- .../shared/_create_protected_branch.html.haml | 8 +- .../projects/runners/_group_runners.html.haml | 6 +- .../settings/access_tokens/index.html.haml | 2 +- .../settings/ci_cd/_autodevops_form.html.haml | 2 +- app/views/projects/settings/ci_cd/show.html.haml | 2 +- .../projects/settings/integrations/edit.html.haml | 3 +- .../projects/settings/operations/show.html.haml | 28 +- .../packages_and_registries/cleanup_tags.html.haml | 6 + .../packages_and_registries/show.html.haml | 14 +- .../projects/tags/_edit_release_button.html.haml | 20 +- app/views/projects/tags/_release_link.html.haml | 4 + app/views/projects/tags/_tag.html.haml | 7 +- app/views/projects/tags/releases/edit.html.haml | 19 - app/views/projects/tags/show.html.haml | 13 +- app/views/projects/triggers/_index.html.haml | 2 +- app/views/projects/triggers/_trigger.html.haml | 4 +- app/views/search/_results.html.haml | 2 +- ...auto_devops_implicitly_enabled_banner.html.haml | 2 +- app/views/shared/_broadcast_message.html.haml | 4 +- app/views/shared/_clone_panel.html.haml | 2 +- app/views/shared/_file_highlight.html.haml | 10 +- app/views/shared/_group_form.html.haml | 6 - .../shared/_help_dropdown_forum_link.html.haml | 2 +- app/views/shared/_label_row.html.haml | 4 +- .../shared/_new_project_item_select.html.haml | 4 +- app/views/shared/_ref_switcher.html.haml | 4 +- .../shared/_remote_mirror_update_button.html.haml | 2 +- app/views/shared/_search_settings.html.haml | 2 +- app/views/shared/_sidebar_toggle_button.html.haml | 2 +- app/views/shared/access_tokens/_form.html.haml | 6 +- app/views/shared/access_tokens/_table.html.haml | 2 +- app/views/shared/admin/_admin_note.html.haml | 6 +- app/views/shared/blob/_markdown_buttons.html.haml | 6 +- app/views/shared/deploy_tokens/_form.html.haml | 2 +- app/views/shared/empty_states/_labels.html.haml | 4 +- .../shared/empty_states/_priority_labels.html.haml | 2 +- app/views/shared/empty_states/_topics.html.haml | 2 +- app/views/shared/empty_states/_wikis.html.haml | 2 +- .../shared/empty_states/_wikis_layout.html.haml | 2 +- .../groups/_group_name_and_path_fields.html.haml | 3 +- app/views/shared/groups/_search_form.html.haml | 2 +- app/views/shared/hook_logs/_index.html.haml | 11 + app/views/shared/issuable/_assignees.html.haml | 7 +- app/views/shared/issuable/_form.html.haml | 8 +- .../shared/issuable/_label_dropdown.html.haml | 4 +- .../issuable/_merge_request_assignees.html.haml | 8 - .../issuable/_merge_request_reviewers.html.haml | 8 - .../shared/issuable/_milestone_dropdown.html.haml | 4 +- app/views/shared/issuable/_reviewers.html.haml | 7 +- app/views/shared/issuable/_search_bar.html.haml | 10 - app/views/shared/issuable/_sidebar.html.haml | 10 +- .../shared/issuable/_sidebar_reviewers.html.haml | 2 +- app/views/shared/issuable/form/_metadata.html.haml | 4 +- .../form/_metadata_issuable_assignee.html.haml | 2 +- app/views/shared/issuable/form/_title.html.haml | 2 +- .../shared/issue_type/_details_content.html.haml | 2 +- app/views/shared/labels/_form.html.haml | 10 +- app/views/shared/labels/_nav.html.haml | 4 +- app/views/shared/members/_requests.html.haml | 15 +- app/views/shared/milestones/_form_dates.html.haml | 4 +- app/views/shared/milestones/_header.html.haml | 4 +- app/views/shared/notes/_hints.html.haml | 9 +- app/views/shared/projects/_search_form.html.haml | 2 +- app/views/shared/projects/_topics.html.haml | 12 +- .../_update_protected_branch.html.haml | 2 +- app/views/users/show.html.haml | 17 +- app/workers/all_queues.yml | 96 +- app/workers/archive_trace_worker.rb | 5 - app/workers/build_finished_worker.rb | 9 - app/workers/build_hooks_worker.rb | 6 +- app/workers/ci/build_finished_worker.rb | 3 +- app/workers/ci/cancel_pipeline_worker.rb | 25 + .../process_runner_version_update_worker.rb | 25 + ...concile_existing_runner_versions_cron_worker.rb | 18 +- app/workers/ci/track_failed_build_worker.rb | 26 + app/workers/concerns/waitable_worker.rb | 6 +- app/workers/email_receiver_worker.rb | 3 - app/workers/emails_on_push_worker.rb | 18 +- .../stage/import_issue_events_worker.rb | 28 +- .../merge_requests/create_approval_event_worker.rb | 34 + .../merge_requests/create_approval_note_worker.rb | 32 + .../execute_approval_hooks_worker.rb | 37 + .../resolve_todos_after_approval_worker.rb | 32 + app/workers/new_issue_worker.rb | 10 +- .../pages/invalidate_domain_cache_worker.rb | 8 +- app/workers/post_receive.rb | 1 + app/workers/project_cache_worker.rb | 3 +- .../import_export/relation_export_worker.rb | 26 + app/workers/service_desk_email_receiver_worker.rb | 3 - app/workers/update_project_statistics_worker.rb | 13 +- .../users/deactivate_dormant_users_worker.rb | 36 +- app/workers/x509_issuer_crl_check_worker.rb | 26 +- 1439 files changed, 18644 insertions(+), 9665 deletions(-) delete mode 100644 app/assets/javascripts/access_tokens/components/projects_field.vue delete mode 100644 app/assets/javascripts/access_tokens/components/projects_token_selector.vue delete mode 100644 app/assets/javascripts/attention_requests/components/navigation_popover.vue delete mode 100644 app/assets/javascripts/attention_requests/index.js create mode 100644 app/assets/javascripts/batch_comments/i18n.js create mode 100644 app/assets/javascripts/behaviors/components/json_table.vue create mode 100644 app/assets/javascripts/behaviors/markdown/render_json_table.js delete mode 100644 app/assets/javascripts/behaviors/markdown/render_mermaid.js create mode 100644 app/assets/javascripts/blob/blob_links_tracking.js create mode 100644 app/assets/javascripts/ci_variable_list/components/ci_admin_variables.vue create mode 100644 app/assets/javascripts/ci_variable_list/components/ci_group_variables.vue create mode 100644 app/assets/javascripts/ci_variable_list/graphql/fragments/ci_variable.fragment.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/admin_add_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/admin_delete_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/admin_update_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/group_add_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/group_delete_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/mutations/group_update_variable.mutation.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/queries/group_variables.query.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/queries/variables.query.graphql create mode 100644 app/assets/javascripts/ci_variable_list/graphql/resolvers.js create mode 100644 app/assets/javascripts/ci_variable_list/utils.js create mode 100644 app/assets/javascripts/content_editor/components/wrappers/table_of_contents.vue create mode 100644 app/assets/javascripts/content_editor/components/wrappers/table_of_contents_heading.vue create mode 100644 app/assets/javascripts/content_editor/extensions/reference_definition.js create mode 100644 app/assets/javascripts/content_editor/services/table_of_contents_utils.js create mode 100644 app/assets/javascripts/crm/contacts/components/graphql/get_group_contacts_count_by_state.graphql create mode 100644 app/assets/javascripts/gitlab_pages/new.js delete mode 100644 app/assets/javascripts/graphql_shared/fragments/blobviewer.fragment.graphql delete mode 100644 app/assets/javascripts/graphql_shared/fragments/iteration.fragment.graphql create mode 100644 app/assets/javascripts/groups/queries/search_groups_where_user_can_create_subgroups.query.graphql create mode 100644 app/assets/javascripts/issues/show/components/incidents/create_timeline_event.vue create mode 100644 app/assets/javascripts/issues/show/components/incidents/timeline_events_item.vue delete mode 100644 app/assets/javascripts/issues/show/components/incidents/timeline_events_list_item.vue create mode 100644 app/assets/javascripts/lib/markdown_it.js delete mode 100644 app/assets/javascripts/packages_and_registries/package_registry/graphql/mutations/destroy_package_file.mutation.graphql create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/graphql/mutations/destroy_package_files.mutation.graphql delete mode 100644 app/assets/javascripts/pages/projects/ci/secure_files/show/index.js create mode 100644 app/assets/javascripts/pages/projects/pages/new/index.js delete mode 100644 app/assets/javascripts/pages/projects/tags/releases/index.js create mode 100644 app/assets/javascripts/pages/sessions/new/email_format_validator.js delete mode 100644 app/assets/javascripts/pipeline_editor/components/lint/ci_lint.vue create mode 100644 app/assets/javascripts/pipeline_schedules/components/take_ownership_modal.vue create mode 100644 app/assets/javascripts/projects/settings/branch_rules/components/protections/index.vue create mode 100644 app/assets/javascripts/projects/settings/branch_rules/components/protections/merge_protections.vue create mode 100644 app/assets/javascripts/projects/settings/branch_rules/components/protections/push_protections.vue create mode 100644 app/assets/javascripts/projects/settings/graphql/queries/search_namespaces_where_user_can_transfer_projects.query.graphql create mode 100644 app/assets/javascripts/runner/components/runner_bulk_delete_checkbox.vue create mode 100644 app/assets/javascripts/runner/components/stat/runner_single_stat.vue delete mode 100644 app/assets/javascripts/runner/components/stat/runner_status_stat.vue create mode 100644 app/assets/javascripts/runner/graphql/list/all_runners_connection.fragment.graphql create mode 100644 app/assets/javascripts/runner/graphql/list/bulk_runner_delete.mutation.graphql create mode 100644 app/assets/javascripts/runner/graphql/list/group_runner_connection.fragment.graphql delete mode 100644 app/assets/javascripts/sidebar/components/attention_requested_toggle.vue delete mode 100644 app/assets/javascripts/sidebar/queries/remove_attention_request.mutation.graphql delete mode 100644 app/assets/javascripts/sidebar/queries/request_attention.mutation.graphql delete mode 100644 app/assets/javascripts/snippets/fragments/snippet_base.fragment.graphql create mode 100644 app/assets/javascripts/visibility_level/constants.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/action_buttons.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/extensions/README.md delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/extensions/actions.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/state_container.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/widget/app.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue create mode 100644 app/assets/javascripts/vue_shared/components/rich_timestamp_tooltip.vue create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/queries/get_merge_request_reviewers.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/source_viewer/plugins/utils/gemspec_linker.js create mode 100644 app/assets/javascripts/work_items/components/work_item_type_icon.vue delete mode 100644 app/assets/javascripts/work_items/graphql/change_work_item_parent_link.mutation.graphql delete mode 100644 app/assets/stylesheets/components/rich_content_editor.scss create mode 100644 app/assets/stylesheets/page_bundles/profile.scss create mode 100644 app/assets/stylesheets/page_bundles/runner_details.scss delete mode 100644 app/assets/stylesheets/pages/settings_ci_cd.scss create mode 100644 app/components/pajamas/avatar_component.html.haml create mode 100644 app/components/pajamas/avatar_component.rb create mode 100644 app/components/pajamas/checkbox_tag_component.html.haml create mode 100644 app/components/pajamas/checkbox_tag_component.rb delete mode 100644 app/controllers/projects/ci/secure_files_controller.rb delete mode 100644 app/controllers/projects/tags/releases_controller.rb create mode 100644 app/controllers/users/namespace_callouts_controller.rb create mode 100644 app/controllers/users/project_callouts_controller.rb create mode 100644 app/events/groups/group_deleted_event.rb create mode 100644 app/events/groups/group_path_changed_event.rb create mode 100644 app/events/groups/group_transfered_event.rb create mode 100644 app/events/merge_requests/approved_event.rb create mode 100644 app/events/projects/project_archived_event.rb create mode 100644 app/events/projects/project_transfered_event.rb create mode 100644 app/finders/autocomplete/deploy_keys_with_write_access_finder.rb create mode 100644 app/finders/groups/accepting_project_transfers_finder.rb create mode 100644 app/graphql/mutations/ci/runner/bulk_delete.rb delete mode 100644 app/graphql/mutations/merge_requests/remove_attention_request.rb delete mode 100644 app/graphql/mutations/merge_requests/request_attention.rb create mode 100644 app/graphql/mutations/merge_requests/set_reviewers.rb delete mode 100644 app/graphql/mutations/merge_requests/toggle_attention_requested.rb create mode 100644 app/graphql/mutations/timelogs/base.rb create mode 100644 app/graphql/mutations/timelogs/create.rb create mode 100644 app/graphql/mutations/uploads/delete.rb create mode 100644 app/graphql/resolvers/crm/contact_state_counts_resolver.rb create mode 100644 app/graphql/resolvers/projects/fork_targets_resolver.rb create mode 100644 app/graphql/types/ci/group_variable_type.rb create mode 100644 app/graphql/types/ci/instance_variable_type.rb create mode 100644 app/graphql/types/ci/manual_variable_type.rb create mode 100644 app/graphql/types/ci/project_variable_type.rb create mode 100644 app/graphql/types/ci/runner_upgrade_status_enum.rb delete mode 100644 app/graphql/types/ci/runner_upgrade_status_type_enum.rb create mode 100644 app/graphql/types/ci/variable_input_type.rb create mode 100644 app/graphql/types/ci/variable_interface.rb delete mode 100644 app/graphql/types/ci/variable_type.rb create mode 100644 app/graphql/types/customer_relations/contact_sort_enum.rb create mode 100644 app/graphql/types/customer_relations/contact_state_counts_type.rb create mode 100644 app/graphql/types/merge_requests/detailed_merge_status_enum.rb create mode 100644 app/graphql/types/time_tracking/timelog_category_type.rb create mode 100644 app/graphql/types/upload_type.rb create mode 100644 app/graphql/types/work_items/widgets/assignees_input_type.rb create mode 100644 app/graphql/types/work_items/widgets/labels_type.rb create mode 100644 app/graphql/types/work_items/widgets/start_and_due_date_type.rb create mode 100644 app/graphql/types/work_items/widgets/start_and_due_date_update_input_type.rb delete mode 100644 app/graphql/types/work_items/widgets/weight_input_type.rb delete mode 100644 app/graphql/types/work_items/widgets/weight_type.rb create mode 100644 app/helpers/admin/identities_helper.rb create mode 100644 app/models/concerns/database_event_tracking.rb create mode 100644 app/models/concerns/enums/sbom.rb create mode 100644 app/models/customer_relations/contact_state_counts.rb create mode 100644 app/models/integrations/pumble.rb create mode 100644 app/models/members/member_role.rb create mode 100644 app/models/merge_request/approval_removal_settings.rb create mode 100644 app/models/ml.rb create mode 100644 app/models/ml/candidate.rb create mode 100644 app/models/ml/candidate_metric.rb create mode 100644 app/models/ml/candidate_param.rb create mode 100644 app/models/ml/experiment.rb create mode 100644 app/models/namespace/detail.rb create mode 100644 app/models/users/project_callout.rb create mode 100644 app/models/work_items/widgets/labels.rb create mode 100644 app/models/work_items/widgets/start_and_due_date.rb delete mode 100644 app/models/work_items/widgets/weight.rb create mode 100644 app/policies/project_hook_policy.rb create mode 100644 app/policies/system_hook_policy.rb create mode 100644 app/policies/time_tracking/timelog_category_policy.rb create mode 100644 app/policies/upload_policy.rb create mode 100644 app/serializers/group_access_token_entity.rb create mode 100644 app/serializers/group_access_token_serializer.rb create mode 100644 app/serializers/personal_access_token_entity.rb create mode 100644 app/serializers/personal_access_token_serializer.rb create mode 100644 app/serializers/project_access_token_entity.rb create mode 100644 app/serializers/project_access_token_serializer.rb create mode 100644 app/services/audit_events/build_service.rb create mode 100644 app/services/ci/deployments/destroy_service.rb create mode 100644 app/services/ci/runners/bulk_delete_runners_service.rb create mode 100644 app/services/ci/runners/process_runner_version_update_service.rb create mode 100644 app/services/ci/track_failed_build_service.rb create mode 100644 app/services/google_cloud/create_cloudsql_instance_service.rb create mode 100644 app/services/google_cloud/enable_cloudsql_service.rb create mode 100644 app/services/google_cloud/get_cloudsql_instances_service.rb create mode 100644 app/services/import/prepare_service.rb create mode 100644 app/services/issues/prepare_import_csv_service.rb delete mode 100644 app/services/merge_requests/bulk_remove_attention_requested_service.rb create mode 100644 app/services/merge_requests/create_approval_event_service.rb create mode 100644 app/services/merge_requests/execute_approval_hooks_service.rb delete mode 100644 app/services/merge_requests/remove_attention_requested_service.rb delete mode 100644 app/services/merge_requests/request_attention_service.rb delete mode 100644 app/services/merge_requests/toggle_attention_requested_service.rb create mode 100644 app/services/merge_requests/update_reviewers_service.rb delete mode 100644 app/services/notification_recipients/builder/attention_requested.rb create mode 100644 app/services/projects/import_export/relation_export_service.rb create mode 100644 app/services/protected_branches/cache_service.rb create mode 100644 app/services/timelogs/create_service.rb create mode 100644 app/services/topics/merge_service.rb create mode 100644 app/services/uploads/destroy_service.rb create mode 100644 app/services/users/dismiss_namespace_callout_service.rb create mode 100644 app/services/users/dismiss_project_callout_service.rb create mode 100644 app/services/web_hooks/admin_destroy_service.rb create mode 100644 app/services/work_items/widgets/assignees_service/update_service.rb create mode 100644 app/services/work_items/widgets/start_and_due_date_service/update_service.rb delete mode 100644 app/services/work_items/widgets/weight_service/update_service.rb create mode 100644 app/validators/json_schemas/build_metadata_id_tokens.json create mode 100644 app/validators/json_schemas/cyclonedx_report.json delete mode 100644 app/views/admin/hook_logs/_index.html.haml create mode 100644 app/views/layouts/component_preview.html.haml delete mode 100644 app/views/notify/attention_requested_merge_request_email.html.haml delete mode 100644 app/views/notify/attention_requested_merge_request_email.text.erb delete mode 100644 app/views/notify/user_auto_banned_email.html.haml delete mode 100644 app/views/notify/user_auto_banned_email.text.erb delete mode 100644 app/views/projects/ci/secure_files/show.html.haml delete mode 100644 app/views/projects/hook_logs/_index.html.haml create mode 100644 app/views/projects/pages/_header.html.haml create mode 100644 app/views/projects/pages/_waiting.html.haml create mode 100644 app/views/projects/pages/disabled.html.haml create mode 100644 app/views/projects/pages/new.html.haml create mode 100644 app/views/projects/settings/packages_and_registries/cleanup_tags.html.haml create mode 100644 app/views/projects/tags/_release_link.html.haml delete mode 100644 app/views/projects/tags/releases/edit.html.haml delete mode 100644 app/views/shared/_group_form.html.haml create mode 100644 app/views/shared/hook_logs/_index.html.haml delete mode 100644 app/views/shared/issuable/_merge_request_assignees.html.haml delete mode 100644 app/views/shared/issuable/_merge_request_reviewers.html.haml delete mode 100644 app/workers/archive_trace_worker.rb delete mode 100644 app/workers/build_finished_worker.rb create mode 100644 app/workers/ci/cancel_pipeline_worker.rb create mode 100644 app/workers/ci/runners/process_runner_version_update_worker.rb create mode 100644 app/workers/ci/track_failed_build_worker.rb create mode 100644 app/workers/merge_requests/create_approval_event_worker.rb create mode 100644 app/workers/merge_requests/create_approval_note_worker.rb create mode 100644 app/workers/merge_requests/execute_approval_hooks_worker.rb create mode 100644 app/workers/merge_requests/resolve_todos_after_approval_worker.rb create mode 100644 app/workers/projects/import_export/relation_export_worker.rb (limited to 'app') diff --git a/app/assets/images/auth_buttons/jwt_64.png b/app/assets/images/auth_buttons/jwt_64.png index ca97ae47002..fcfecde23d3 100644 Binary files a/app/assets/images/auth_buttons/jwt_64.png and b/app/assets/images/auth_buttons/jwt_64.png differ diff --git a/app/assets/images/auth_buttons/salesforce_64.png b/app/assets/images/auth_buttons/salesforce_64.png index c8a86a0c515..b562e09c20f 100644 Binary files a/app/assets/images/auth_buttons/salesforce_64.png and b/app/assets/images/auth_buttons/salesforce_64.png differ diff --git a/app/assets/javascripts/access_tokens/components/expires_at_field.vue b/app/assets/javascripts/access_tokens/components/expires_at_field.vue index 147de529eea..5516fd0daf6 100644 --- a/app/assets/javascripts/access_tokens/components/expires_at_field.vue +++ b/app/assets/javascripts/access_tokens/components/expires_at_field.vue @@ -1,7 +1,8 @@