From 585826cb22ecea5998a2c2a4675735c94bdeedac Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 14 Nov 2023 08:41:52 +0000 Subject: Add latest changes from gitlab-org/gitlab@16-6-stable-ee --- .../add_context_commits_modal/store/actions.js | 2 +- .../abuse_report/components/abuse_report_app.vue | 7 + .../abuse_report/components/abuse_report_notes.vue | 92 + .../components/activity_events_list.vue | 2 +- .../components/graphql/abuse_report.query.graphql | 13 - .../graphql/abuse_report_labels.query.graphql | 11 - .../create_abuse_report_label.mutation.graphql | 10 - .../abuse_report/components/labels_select.vue | 2 +- .../components/notes/abuse_report_discussion.vue | 104 ++ .../components/notes/abuse_report_note.vue | 81 + .../components/notes/abuse_report_note_body.vue | 48 + .../abuse_report/components/report_details.vue | 2 +- .../abuse_report/components/reported_content.vue | 4 +- .../javascripts/admin/abuse_report/constants.js | 2 + .../graphql/abuse_report.query.graphql | 14 + .../graphql/abuse_report_labels.query.graphql | 11 + .../create_abuse_report_label.mutation.graphql | 10 + .../notes/abuse_report_note.fragment.graphql | 30 + .../abuse_report_note_permissions.fragment.graphql | 3 + .../graphql/notes/abuse_report_notes.query.graphql | 18 + .../create_abuse_report_note.mutation.graphql | 18 + .../delete_abuse_report_note.fragment.graphql | 8 + .../update_abuse_report_note.mutation.graphql | 10 + .../admin/background_migrations/index.js | 2 +- .../broadcast_messages/components/message_form.vue | 7 +- .../admin/users/components/actions/index.js | 4 + .../admin/users/components/actions/trust_user.vue | 62 + .../users/components/actions/untrust_user.vue | 56 + .../javascripts/admin/users/components/app.vue | 63 +- .../admin/users/components/user_avatar.vue | 67 - .../admin/users/components/users_table.vue | 142 -- app/assets/javascripts/admin/users/constants.js | 6 +- app/assets/javascripts/alert.js | 2 +- .../components/alerts_settings_form.vue | 2 +- .../analytics/cycle_analytics/store/mutations.js | 4 +- .../analytics/cycle_analytics/store/state.js | 4 +- .../product_analytics/activity_charts_bundle.js | 28 - .../components/activity_chart.vue | 45 - .../analytics/shared/components/metric_tile.vue | 1 + .../components/usage_trends_count_chart.vue | 2 +- .../usage_trends/components/users_chart.vue | 2 +- app/assets/javascripts/api/bulk_imports_api.js | 15 + .../javascripts/badges/components/badge_form.vue | 6 +- .../batch_comments/components/submit_dropdown.vue | 247 ++- .../queries/can_approve.query.graphql | 11 + .../stores/modules/batch_comments/actions.js | 18 +- app/assets/javascripts/behaviors/index.js | 3 - .../javascripts/behaviors/load_startup_css.js | 15 - .../javascripts/behaviors/shortcuts/keybindings.js | 7 + .../behaviors/shortcuts/shortcuts_navigation.js | 2 + .../javascripts/blob/components/blob_header.vue | 21 +- .../components/blob_header_viewer_switcher.vue | 34 + .../javascripts/blob/components/constants.js | 3 + .../filepath_form/components/template_selector.vue | 5 +- .../blob/pipeline_tour_success_modal.vue | 6 +- app/assets/javascripts/boards/boards_util.js | 4 +- .../components/board_add_new_column_form.vue | 1 - .../boards/components/board_card_inner.vue | 7 +- .../boards/components/board_content.vue | 1 - .../javascripts/boards/components/board_list.vue | 19 +- .../boards/components/board_list_header.vue | 3 - .../boards/components/new_board_button.vue | 2 +- app/assets/javascripts/boards/constants.js | 1 + .../javascripts/boards/graphql/cache_updates.js | 7 +- app/assets/javascripts/boards/stores/actions.js | 8 +- app/assets/javascripts/boards/stores/index.js | 15 +- .../branches/components/branch_more_actions.vue | 1 - .../branches/components/delete_branch_modal.vue | 1 - .../ci/admin/jobs_table/admin_jobs_table_app.vue | 3 - .../artifacts/components/job_artifacts_table.vue | 6 +- .../components/details/ci_resource_components.vue | 37 +- .../components/details/ci_resource_details.vue | 6 +- .../components/details/ci_resource_header.vue | 11 +- .../ci/catalog/components/list/catalog_header.vue | 14 +- .../components/list/ci_resources_list_item.vue | 11 +- .../catalog/components/pages/ci_resources_page.vue | 112 ++ .../javascripts/ci/catalog/global_catalog.vue | 10 + .../fragments/catalog_resource.fragment.graphql | 1 - .../queries/get_ci_catalog_resources.query.graphql | 16 + app/assets/javascripts/ci/catalog/index.js | 37 + .../components/ci_variable_drawer.vue | 12 +- .../components/ci_variable_modal.vue | 511 ------ .../components/ci_variable_settings.vue | 28 +- .../components/ci_variable_table.vue | 8 +- .../javascripts/ci/ci_variable_list/constants.js | 2 - .../javascripts/ci/common/pipelines_table.vue | 10 +- .../ci/common/private/job_action_component.vue | 14 +- .../ci/common/private/job_links_layer.vue | 10 +- .../ci/common/private/job_name_component.vue | 2 +- app/assets/javascripts/ci/constants.js | 1 + .../ci/job_details/components/job_header.vue | 6 +- .../ci/job_details/components/log/line_header.vue | 3 +- .../components/sidebar/job_container_item.vue | 4 +- .../components/sidebar/stages_dropdown.vue | 15 +- app/assets/javascripts/ci/job_details/job_app.vue | 2 +- .../javascripts/ci/job_details/store/actions.js | 2 +- .../javascripts/ci/job_details/store/utils.js | 45 +- .../ci/jobs_page/components/job_cells/job_cell.vue | 4 +- .../jobs_page/components/job_cells/status_cell.vue | 6 +- .../javascripts/ci/jobs_page/jobs_page_app.vue | 3 - .../javascripts/ci/pipeline_details/constants.js | 1 - .../graph/components/graph_component.vue | 18 +- .../graph/components/graph_view_selector.vue | 20 +- .../pipeline_details/graph/components/job_item.vue | 6 +- .../graph/components/linked_graph_wrapper.vue | 17 +- .../graph/components/linked_pipeline.vue | 28 +- .../graph/components/linked_pipelines_column.vue | 39 +- .../graph/components/root_graph_layout.vue | 42 +- .../graph/components/stage_column_component.vue | 60 +- .../header/pipeline_details_header.vue | 36 +- .../jobs/components/failed_jobs_table.vue | 6 +- .../ci/pipeline_details/pipeline_details_header.js | 4 + .../ci/pipeline_details/pipeline_shared_client.js | 7 +- .../ci/pipeline_details/pipelines_index.js | 4 - .../components/editor/ci_editor_header.vue | 2 +- .../components/file_nav/branch_switcher.vue | 97 +- .../components/header/pipeline_status.vue | 13 +- .../javascripts/ci/pipeline_editor/options.js | 1 - .../ci/pipeline_editor/pipeline_editor_home.vue | 2 +- .../ci/pipeline_mini_graph/legacy_job_item.vue | 1 - .../pipeline_mini_graph/legacy_pipeline_stage.vue | 13 +- .../linked_pipelines_mini_list.vue | 14 +- .../pipeline_new/components/pipeline_new_form.vue | 2 +- .../components/pipeline_schedules_form.vue | 6 +- .../table/cells/pipeline_schedule_actions.vue | 3 + .../cells/pipeline_schedule_last_pipeline.vue | 7 +- .../components/empty_state/ios_templates.vue | 220 --- .../components/empty_state/no_ci_empty_state.vue | 33 +- .../pipelines_page/components/pipeline_labels.vue | 28 +- .../components/pipeline_status_badge.vue | 11 +- .../components/pipeline_triggerer.vue | 4 - .../javascripts/ci/pipelines_page/constants.js | 3 + .../javascripts/ci/pipelines_page/pipelines.vue | 14 +- .../admin_new_runner/admin_new_runner_app.vue | 4 - .../ci/runner/admin_runners/admin_runners_app.vue | 20 +- .../components/cells/runner_summary_cell.vue | 33 +- .../registration/registration_feedback_banner.vue | 41 - .../registration/registration_instructions.vue | 4 +- .../ci/runner/components/runner_created_at.vue | 72 + .../ci/runner/components/runner_details.vue | 18 +- .../ci/runner/components/runner_header.vue | 29 +- .../ci/runner/components/runner_jobs_table.vue | 6 +- .../ci/runner/components/runner_list_header.vue | 17 + .../runner/components/search_tokens/tag_token.vue | 2 +- .../search_tokens/version_token_config.js | 12 + app/assets/javascripts/ci/runner/constants.js | 7 +- .../edit/runner_fields_shared.fragment.graphql | 5 + .../runner/graphql/list/all_runners.query.graphql | 2 + .../graphql/list/all_runners_count.query.graphql | 10 +- .../show/runner_details_shared.fragment.graphql | 5 + .../runner/graphql/show/runner_jobs.query.graphql | 2 +- .../group_new_runner/group_new_runner_app.vue | 4 - .../ci/runner/group_runners/group_runners_app.vue | 18 +- .../project_new_runner/project_new_runner_app.vue | 4 - .../javascripts/ci/runner/runner_search_utils.js | 10 +- app/assets/javascripts/ci/runner/sentry_utils.js | 2 +- app/assets/javascripts/ci/utils.js | 2 +- .../components/secure_files_list.vue | 2 +- .../components/triggers_list.vue | 8 +- .../javascripts/clusters_list/store/actions.js | 2 +- app/assets/javascripts/commons/gitlab_ui.js | 2 + .../components/suggestions_dropdown.vue | 2 + .../content_editor/content_editor.stories.js | 1 + .../extensions/code_block_highlight.js | 9 + .../content_editor/extensions/copy_paste.js | 40 +- .../javascripts/content_editor/extensions/emoji.js | 4 +- .../content_editor/extensions/html_marks.js | 3 +- .../content_editor/extensions/loading.js | 56 +- .../content_editor/extensions/suggestions.js | 27 +- .../content_editor/extensions/word_break.js | 2 +- .../content_editor/services/content_editor.js | 2 +- .../contribution_event/contribution_event_base.vue | 10 +- ...ustomer_relations_organization.mutation.graphql | 10 + .../graphql/update_organization.mutation.graphql | 10 - .../components/organization_form_wrapper.vue | 4 +- .../custom_emoji/components/delete_item.vue | 2 +- .../components/deploy_freeze_modal.vue | 2 - app/assets/javascripts/deprecated_notes.js | 2 +- .../design_management/components/delete_button.vue | 2 +- .../components/design_notes/design_discussion.vue | 3 +- .../components/design_notes/design_note.vue | 28 +- .../design_notes/design_note_signed_out.vue | 2 +- .../components/design_notes/design_reply_form.vue | 4 +- .../components/design_overlay.vue | 2 +- .../design_management/components/list/item.vue | 17 +- .../javascripts/design_management/pages/index.vue | 6 +- app/assets/javascripts/diffs/components/app.vue | 127 +- .../javascripts/diffs/components/commit_item.vue | 2 +- .../diffs/components/diff_discussions.vue | 7 - .../javascripts/diffs/components/diff_file.vue | 5 - ..._codequality_and_security_reports.query.graphql | 82 + .../get_mr_codequality_reports.query.graphql | 46 - .../diffs/components/shared/findings_drawer.vue | 165 +- .../components/shared/findings_drawer_item.vue | 30 + .../javascripts/diffs/components/tree_list.vue | 140 +- .../diffs/components/tree_list_height.vue | 108 ++ app/assets/javascripts/diffs/constants.js | 1 + app/assets/javascripts/diffs/index.js | 4 +- app/assets/javascripts/diffs/store/actions.js | 13 +- app/assets/javascripts/diffs/store/mutations.js | 7 +- app/assets/javascripts/diffs/store/utils.js | 2 +- app/assets/javascripts/diffs/utils/file_reviews.js | 2 +- .../diffs/utils/sort_findings_by_file.js | 11 +- app/assets/javascripts/editor/constants.js | 5 - app/assets/javascripts/editor/schema/ci.json | 12 +- .../javascripts/emoji/awards_app/store/actions.js | 2 +- app/assets/javascripts/emoji/components/picker.vue | 4 +- app/assets/javascripts/emoji/constants.js | 12 + app/assets/javascripts/emoji/index.js | 107 +- app/assets/javascripts/ensure_data.js | 2 +- app/assets/javascripts/entrypoints/analytics.js | 6 + .../components/confirm_rollback_modal.vue | 2 +- .../environments/components/environment_form.vue | 1 + .../environments/components/environment_item.vue | 2 +- .../environments/components/environments_app.vue | 30 +- .../environments/components/environments_table.vue | 8 +- .../components/kubernetes_overview.vue | 2 +- .../components/kubernetes_status_bar.vue | 16 +- app/assets/javascripts/environments/constants.js | 4 +- .../environments/environment_details/index.vue | 2 +- .../javascripts/environments/graphql/client.js | 1 - .../graphql/queries/environment_app.query.graphql | 2 +- .../queries/flux_helm_release_status.query.graphql | 15 +- .../flux_kustomization_status.query.graphql | 10 +- .../graphql/queries/folder.query.graphql | 2 +- .../environments/graphql/resolvers/base.js | 4 +- .../environments/graphql/resolvers/flux.js | 116 +- .../environments/graphql/resolvers/kubernetes.js | 51 +- .../error_tracking/components/error_details.vue | 6 +- .../feature_flags/components/feature_flags.vue | 1 - .../add_extra_tokens_for_merge_requests.js | 19 +- .../filtered_search/available_dropdown_mappings.js | 23 +- app/assets/javascripts/gfm_auto_complete.js | 2 +- .../components/pages_pipeline_wizard.vue | 2 +- app/assets/javascripts/graphql_shared/constants.js | 1 + .../fragments/issue.fragment.graphql | 1 + .../javascripts/graphql_shared/possible_types.json | 2 + .../queries/groups_autocomplete.query.graphql | 10 + .../javascripts/groups/components/item_actions.vue | 1 - .../groups/settings/init_access_dropdown.js | 2 +- .../components/transfer_locations.vue | 6 +- app/assets/javascripts/header.js | 3 + app/assets/javascripts/header_search/index.js | 2 +- app/assets/javascripts/header_search/init.js | 2 +- app/assets/javascripts/helpers/help_page_helper.js | 2 +- .../javascripts/helpers/init_simple_app_helper.js | 29 +- .../javascripts/ide/components/ide_status_bar.vue | 1 - .../ide/components/jobs/detail/description.vue | 2 - .../javascripts/ide/components/pipelines/list.vue | 2 +- .../javascripts/ide/components/repo_editor.vue | 9 +- app/assets/javascripts/ide/lib/alerts/index.js | 3 +- .../ide/stores/modules/file_templates/getters.js | 3 +- .../ide/stores/modules/terminal/mutations.js | 2 +- app/assets/javascripts/import/constants.js | 12 + .../details/components/bulk_import_details_app.vue | 44 + .../details/components/import_details_app.vue | 38 +- .../details/components/import_details_table.vue | 96 +- .../import_entities/components/import_status.vue | 57 +- .../javascripts/import_entities/constants.js | 53 +- .../import_groups/components/import_status.vue | 83 + .../import_groups/components/import_table.vue | 21 +- .../graphql/services/local_storage_cache.js | 2 +- .../components/advanced_settings.vue | 2 +- .../components/github_organizations_box.vue | 2 +- .../components/github_status_table.vue | 1 - .../components/import_projects_table.vue | 1 - .../components/provider_repo_table_row.vue | 12 +- .../import_projects/store/actions.js | 2 +- .../incidents/components/incidents_list.vue | 3 +- .../edit/components/integration_form.vue | 2 +- .../overrides/components/integration_overrides.vue | 2 +- .../components/invite_groups_modal.vue | 2 +- .../components/invite_members_modal.vue | 80 +- .../components/invite_modal_base.vue | 10 +- .../components/members_token_select.vue | 12 +- .../invite_members/components/project_select.vue | 1 - .../invite_members/init_invite_members_modal.js | 3 + .../invite_members/utils/member_utils.js | 4 + .../issuable/components/locked_badge.vue | 9 +- .../issuable/components/related_issuable_item.vue | 11 +- .../issuable/components/status_badge.vue | 10 +- .../issuable/popover/components/mr_popover.vue | 4 +- .../dashboard/components/issues_dashboard_app.vue | 5 +- app/assets/javascripts/issues/issue.js | 2 + .../issues/list/components/issues_list_app.vue | 12 +- .../components/service_desk_list_app.vue | 5 +- .../issues/show/components/fields/description.vue | 1 - .../issues/show/components/header_actions.vue | 259 +-- .../issues/show/components/issue_header.vue | 10 +- .../issues/show/components/sticky_header.vue | 14 +- .../javascripts/issues/show/utils/parse_data.js | 2 +- .../jira_connect/subscriptions/constants.js | 6 + .../setup_instructions.vue | 58 +- app/assets/javascripts/lib/graphql.js | 14 +- app/assets/javascripts/lib/utils/color_utils.js | 2 +- app/assets/javascripts/lib/utils/common_utils.js | 15 + app/assets/javascripts/lib/utils/constants.js | 3 + .../lib/utils/datetime/timeago_utility.js | 16 +- app/assets/javascripts/lib/utils/forms.js | 22 +- app/assets/javascripts/lib/utils/keys.js | 1 + app/assets/javascripts/main.js | 2 - .../members/components/avatars/group_avatar.vue | 48 +- .../members/components/icons/private_icon.vue | 19 + .../members/components/table/member_source.vue | 20 +- .../members/components/table/members_table.vue | 1 + .../members/components/table/role_dropdown.vue | 70 +- app/assets/javascripts/members/store/actions.js | 5 +- app/assets/javascripts/members/utils.js | 34 +- app/assets/javascripts/merge_request_tabs.js | 7 +- .../merge_requests/components/sticky_header.vue | 37 +- .../milestones/components/milestone_combobox.vue | 206 +-- .../javascripts/milestones/stores/mutations.js | 4 +- .../routes/experiments/index/constants.js | 4 +- .../routes/experiments/show/constants.js | 7 - .../experiments/show/ml_experiments_show.vue | 8 +- .../javascripts/ml/model_registry/apps/index.js | 4 +- .../ml/model_registry/apps/index_ml_models.vue | 61 + .../ml/model_registry/apps/show_ml_model.vue | 59 +- .../model_registry/apps/show_ml_model_version.vue | 16 + .../ml/model_registry/components/model_row.vue | 45 + .../ml/model_registry/components/search_bar.vue | 71 + .../javascripts/ml/model_registry/constants.js | 13 + .../models/index/components/ml_models_index.vue | 49 - .../routes/models/index/components/model_row.vue | 35 - .../ml/model_registry/routes/models/index/index.js | 3 - .../routes/models/index/translations.js | 16 - .../javascripts/ml/model_registry/translations.js | 16 + app/assets/javascripts/mr_notes/init.js | 1 + .../notes/components/comment_field_layout.vue | 8 +- .../notes/components/discussion_locked_widget.vue | 4 +- .../notes/components/discussion_resolve_button.vue | 6 +- .../discussion_resolve_with_issue_button.vue | 2 +- .../notes/components/note_signed_out_widget.vue | 2 +- .../notes/components/noteable_discussion.vue | 4 - .../javascripts/notes/components/noteable_note.vue | 5 + .../notes/components/notes_activity_header.vue | 2 +- app/assets/javascripts/notes/stores/mutations.js | 5 - app/assets/javascripts/observability/client.js | 133 +- .../observability/components/loader/constants.js | 20 + .../observability/components/loader/index.vue | 139 ++ .../components/observability_container.vue | 58 +- .../components/observability_empty_state.vue | 36 + .../provisioned_observability_container.vue | 95 + .../observability/components/skeleton/index.vue | 151 -- app/assets/javascripts/observability/constants.js | 24 +- app/assets/javascripts/organizations/mock_data.js | 27 +- .../organizations/new/components/app.vue | 18 +- .../mutations/create_organization.mutation.graphql | 9 - .../mutations/organization_create.mutation.graphql | 9 + .../organizations/new/graphql/typedefs.graphql | 5 - app/assets/javascripts/organizations/new/index.js | 3 +- .../organizations/profile/preferences/index.js | 41 + .../settings/general/components/app.vue | 14 + .../general/components/organization_settings.vue | 77 + .../mutations/update_organization.mutation.graphql | 9 + .../settings/general/graphql/typedefs.graphql | 5 + .../organizations/settings/general/index.js | 38 + .../shared/components/new_edit_form.vue | 117 +- .../javascripts/organizations/shared/constants.js | 3 + .../graphql/queries/organization.query.graphql | 9 + .../organizations/shared/graphql/resolvers.js | 6 +- .../organizations/users/components/app.vue | 51 + .../users/graphql/organization_users.query.graphql | 17 + .../javascripts/organizations/users/index.js | 29 + .../explorer/components/details_page/tags_list.vue | 1 - .../container_registry/explorer/pages/list.vue | 1 - .../components/list/harbor_list_row.vue | 7 +- .../harbor_registry/pages/details.vue | 1 - .../details/components/app.vue | 2 +- .../details/components/details_title.vue | 2 +- .../components/details/additional_metadata.vue | 5 +- .../components/details/package_files.vue | 5 +- .../components/details/package_history.vue | 2 +- .../components/details/package_title.vue | 1 - .../components/details/package_versions_list.vue | 2 +- .../components/list/package_list_row.vue | 7 +- .../components/list/publish_method.vue | 9 +- .../package_registry/pages/list.vue | 2 +- .../group/components/packages_settings.vue | 13 + .../settings/group/constants.js | 1 + .../package_settings_fields.fragment.graphql | 2 + .../shared/components/package_path.vue | 2 +- .../shared/components/registry_list.vue | 2 +- .../appearances/preview_sign_in/index.js | 3 + .../metrics_and_profiling/index.js | 2 + .../service_usage_data/index.js | 3 - .../javascripts/pages/explore/catalog/index.js | 3 + .../pages/import/bulk_imports/details/index.js | 20 + .../components/bulk_imports_history_app.vue | 39 +- .../pages/import/bulk_imports/history/index.js | 3 +- .../history/components/import_history_app.vue | 14 +- .../organizations/organizations/users/index.js | 3 + .../pages/organizations/settings/general/index.js | 3 + .../javascripts/pages/passwords/new/index.js | 3 + .../pages/profiles/preferences/show/index.js | 2 + .../javascripts/pages/projects/blob/show/index.js | 7 +- .../projects/forks/new/components/fork_form.vue | 50 +- .../javascripts/pages/projects/forks/new/index.js | 2 + .../pages/projects/merge_requests/page.js | 3 +- .../pages/projects/ml/model_versions/show/index.js | 4 + .../pages/projects/ml/models/index/index.js | 4 +- .../pages/projects/ml/models/show/index.js | 2 +- .../projects/product_analytics/graphs/index.js | 3 - .../javascripts/pages/registrations/new/index.js | 2 + app/assets/javascripts/pages/sessions/new/index.js | 2 + app/assets/javascripts/pages/users/index.js | 11 +- app/assets/javascripts/pages/users/show/index.js | 5 - app/assets/javascripts/pages/users/user_tabs.js | 5 +- .../components/performance_bar_app.vue | 5 - app/assets/javascripts/persistent_user_callouts.js | 2 +- .../pipeline_wizard/components/wrapper.vue | 3 +- .../pipeline_wizard/pipeline_wizard.vue | 3 +- .../pipeline_wizard/templates/pages.yml | 20 +- .../profile/edit/components/profile_edit_app.vue | 7 +- .../preferences/components/profile_preferences.vue | 6 +- app/assets/javascripts/profile/profile.js | 8 +- .../commit/components/commit_options_dropdown.vue | 7 +- .../projects/commit/components/form_modal.vue | 2 - .../info/components/commit_box_pipeline_status.vue | 12 +- .../info/init_commit_pipeline_mini_graph.js | 2 +- .../commit_box/info/init_commit_pipeline_status.js | 2 +- .../javascripts/projects/commits/store/actions.js | 2 +- .../projects/default_project_templates.js | 4 + .../new/components/new_project_url_select.vue | 6 +- .../charts/components/statistics_list.vue | 12 +- .../branch_rules/components/view/index.vue | 4 +- .../components/view/protection_row.vue | 1 - .../components/default_branch_selector.vue | 1 - .../projects/settings/init_access_dropdown.js | 3 +- .../settings/repository/branch_rules/app.vue | 2 +- .../branch_rules/components/branch_rule.vue | 4 +- .../components/custom_email_form.vue | 57 +- .../components/custom_email_wrapper.vue | 1 - .../components/service_desk_root.vue | 13 +- .../components/service_desk_setting.vue | 59 +- .../components/service_desk_template_dropdown.vue | 1 - .../custom_email_constants.js | 7 + .../projects/settings_service_desk/index.js | 2 + .../tree/components/commit_pipeline_status.vue | 11 +- .../protected_branches/protected_branch_edit.js | 14 +- .../protected_tags/protected_tag_create.js | 2 +- .../protected_tags/protected_tag_edit.vue | 2 +- .../protected_tags/protected_tag_edit_list.js | 2 +- .../releases/components/app_edit_new.vue | 25 +- .../releases/components/release_block_header.vue | 2 +- .../repository/components/blob_button_group.vue | 7 +- .../repository/components/blob_content_viewer.vue | 17 +- .../repository/components/commit_info.vue | 18 +- .../repository/components/delete_blob_modal.vue | 2 +- .../repository/components/last_commit.vue | 13 +- .../repository/components/table/row.vue | 6 +- .../javascripts/search/sidebar/components/app.vue | 24 +- .../sidebar/components/archived_filter/data.js | 11 +- .../search/sidebar/components/blobs_filters.vue | 7 +- .../search/sidebar/components/issues_filters.vue | 5 +- .../sidebar/components/label_filter/index.vue | 61 +- .../sidebar/components/merge_requests_filters.vue | 7 +- .../sidebar/components/wiki_blobs_filters.vue | 18 + .../javascripts/search/sidebar/constants/index.js | 2 + app/assets/javascripts/search/store/getters.js | 39 +- .../components/training_provider_list.vue | 2 +- app/assets/javascripts/sentry/init_sentry.js | 6 +- app/assets/javascripts/sentry/legacy_index.js | 2 +- .../javascripts/sentry/sentry_browser_wrapper.js | 16 +- app/assets/javascripts/service_ping_consent.js | 35 - .../sessions/new/components/update_email.vue | 4 +- app/assets/javascripts/sessions/new/constants.js | 1 - .../components/assignees/assignee_title.vue | 1 - .../sidebar/components/assignees/assignees.vue | 1 - .../labels/labels_select_vue/dropdown_value.vue | 1 - .../labels_select_widget/dropdown_header.vue | 1 - .../sidebar/components/lock/edit_form.vue | 6 +- .../sidebar/components/lock/issuable_lock_form.vue | 25 +- .../components/move/issuable_move_dropdown.vue | 210 +-- .../participants/sidebar_participants_widget.vue | 3 - .../components/reviewers/reviewer_avatar.vue | 1 - .../sidebar/components/reviewers/reviewers.vue | 7 +- .../severity/sidebar_severity_widget.vue | 4 +- .../sidebar/components/toggle/toggle_sidebar.vue | 10 +- app/assets/javascripts/sidebar/mount_sidebar.js | 3 +- .../javascripts/sidebar/queries/constants.js | 4 +- .../silent_mode_settings/components/app.vue | 10 +- app/assets/javascripts/single_file_diff.js | 5 +- .../snippets/components/snippet_header.vue | 16 +- .../super_sidebar/components/create_menu.vue | 1 - .../super_sidebar/components/flyout_menu.vue | 4 +- .../command_palette/command_palette_items.vue | 2 +- .../global_search/components/global_search.vue | 11 +- .../components/global_search_default_places.vue | 9 +- .../super_sidebar/components/menu_section.vue | 8 +- .../super_sidebar/components/nav_item.vue | 27 +- .../super_sidebar/components/pinned_section.vue | 6 +- .../super_sidebar/components/sidebar_menu.vue | 22 +- .../super_sidebar/components/user_bar.vue | 1 + .../super_sidebar/components/user_menu.vue | 11 +- .../super_sidebar/super_sidebar_bundle.js | 12 +- app/assets/javascripts/super_sidebar/utils.js | 2 +- .../tags/components/delete_tag_modal.vue | 1 - .../terraform/components/init_command_modal.vue | 11 +- .../terraform/components/states_table.vue | 8 +- .../time_tracking/components/timelogs_app.vue | 2 +- .../components/inbound_token_access.vue | 6 - .../components/outbound_token_access.vue | 6 - .../components/token_projects_table.vue | 11 +- .../token_access/graphql/cache_config.js | 14 + app/assets/javascripts/token_access/index.js | 3 +- app/assets/javascripts/tracking/constants.js | 3 + .../tracking/dispatch_snowplow_event.js | 2 +- .../actions/components/user_actions_app.vue | 8 +- .../profile/components/report_abuse_button.vue | 58 - app/assets/javascripts/users/profile/index.js | 23 - .../components/approvals/approvals.vue | 24 +- .../components/approvals/approvals_summary.vue | 2 +- .../components/checks/conflicts.vue | 4 +- .../components/checks/constants.js | 6 + .../components/checks/message.vue | 27 +- .../components/checks/rebase.stories.js | 85 + .../components/checks/rebase.vue | 220 +++ .../components/checks/unresolved_discussions.vue | 39 + .../components/extensions/base.vue | 4 +- .../components/merge_checks.stories.js | 16 +- .../components/merge_checks.vue | 19 +- .../components/mr_widget_pipeline.vue | 16 +- .../components/mr_widget_status_icon.vue | 2 +- .../components/mr_widget_suggest_pipeline.vue | 6 +- .../components/states/ready_to_merge.vue | 118 +- .../components/states/work_in_progress.vue | 4 +- .../components/widget/app.vue | 7 + .../components/widget/dynamic_content.vue | 9 +- .../components/widget/widget.vue | 2 +- .../vue_merge_request_widget/constants.js | 5 +- .../extensions/accessibility/index.js | 123 -- .../extensions/accessibility/index.vue | 154 ++ .../extensions/code_quality/index.vue | 2 +- .../mr_widget_security_reports.vue | 52 +- .../extensions/test_report/index.vue | 4 +- .../vue_merge_request_widget/mixins/approvals.js | 10 +- .../mixins/ready_to_merge.js | 7 - .../vue_merge_request_widget/mr_widget_options.vue | 19 +- .../queries/merge_checks.query.graphql | 5 +- .../alert_details/components/alert_details.vue | 4 +- .../components/sidebar/sidebar_assignees.vue | 8 +- .../components/chronic_duration_input.vue | 2 +- .../vue_shared/components/ci_badge_link.vue | 157 -- .../javascripts/vue_shared/components/ci_icon.vue | 128 +- .../vue_shared/components/diff_stats_dropdown.vue | 122 +- .../components/entity_select/constants.js | 10 + .../components/entity_select/entity_select.vue | 16 +- .../components/entity_select/group_select.vue | 2 +- .../entity_select/organization_select.vue | 150 ++ .../components/entity_select/project_select.vue | 2 +- .../filtered_search_bar_root.vue | 5 +- .../filtered_search_bar/tokens/base_token.vue | 36 +- .../filtered_search_bar/tokens/user_token.vue | 106 +- .../components/form/errors_alert.stories.js | 21 + .../vue_shared/components/form/errors_alert.vue | 42 + .../form/input_copy_toggle_visibility.vue | 16 +- .../components/list_selector/constants.js | 6 + .../components/list_selector/group_item.vue | 55 + .../vue_shared/components/list_selector/index.vue | 193 ++ .../components/list_selector/user_item.vue | 55 + .../vue_shared/components/markdown/header.vue | 2 +- .../components/markdown/markdown_editor.vue | 2 +- .../components/markdown_drawer/utils/fetch.js | 2 +- .../components/notes/noteable_warning.vue | 4 +- .../vue_shared/components/notes/system_note.vue | 25 +- .../source_viewer/components/blame_info.vue | 20 +- .../source_viewer/components/chunk_new.vue | 66 +- .../source_viewer/queries/blame_data.query.graphql | 36 + .../components/source_viewer/source_viewer_new.vue | 122 +- .../vue_shared/components/source_viewer/utils.js | 19 +- .../vue_shared/components/toggle_labels.vue | 1 - .../vue_shared/components/users_table/constants.js | 3 + .../components/users_table/user_avatar.vue | 76 + .../components/users_table/users_table.vue | 110 ++ .../vue_shared/components/web_ide_link.vue | 4 +- .../javascripts/vue_shared/directives/safe_html.js | 2 +- .../vue_shared/gl_feature_flags_plugin.js | 11 +- .../issuable/show/components/issuable_body.vue | 6 + .../issuable/show/components/issuable_header.vue | 2 +- .../show/components/issuable_show_root.vue | 1 + .../issuable/show/components/issuable_title.vue | 17 +- .../webhooks/components/push_events.vue | 8 +- .../work_items/components/notes/system_note.vue | 22 +- .../components/notes/work_item_add_note.vue | 10 +- .../components/notes/work_item_comment_form.vue | 7 +- .../work_items/components/notes/work_item_note.vue | 11 +- .../components/notes/work_item_note_actions.vue | 4 +- .../notes/work_item_note_awards_list.vue | 2 +- .../components/notes/work_item_note_signed_out.vue | 5 +- .../shared/work_item_link_child_contents.vue | 46 +- .../components/shared/work_item_links_menu.vue | 28 - .../components/shared/work_item_token_input.vue | 126 +- .../work_items/components/work_item_actions.vue | 104 +- .../components/work_item_attributes_wrapper.vue | 4 +- .../components/work_item_award_emoji.vue | 17 +- .../components/work_item_created_updated.vue | 2 +- .../components/work_item_description.vue | 10 +- .../components/work_item_description_rendered.vue | 2 +- .../work_items/components/work_item_detail.vue | 132 +- .../work_items/components/work_item_due_date.vue | 2 +- .../work_items/components/work_item_labels.vue | 7 +- .../work_item_links/work_item_children_wrapper.vue | 11 +- .../work_item_links/work_item_link_child.vue | 9 +- .../components/work_item_links/work_item_links.vue | 23 +- .../components/work_item_links/work_item_tree.vue | 16 + .../work_item_links/work_item_tree_children.vue | 6 + .../work_items/components/work_item_milestone.vue | 134 +- .../work_items/components/work_item_notes.vue | 5 +- .../work_items/components/work_item_parent.vue | 58 +- .../work_item_add_relationship_form.vue | 4 +- .../work_item_relationship_list.vue | 6 + .../work_item_relationships.vue | 28 +- .../components/work_item_state_toggle.vue | 131 ++ .../components/work_item_state_toggle_button.vue | 113 -- .../work_items/components/work_item_title.vue | 9 +- .../work_items/components/work_item_todos.vue | 9 +- app/assets/javascripts/work_items/constants.js | 27 +- .../work_items/graphql/award_emoji.query.graphql | 2 +- .../graphql/group_award_emoji.query.graphql | 27 + .../graphql/group_work_items.query.graphql | 17 + .../graphql/project_work_items.query.graphql | 11 +- .../work_items/graphql/work_item.fragment.graphql | 4 +- .../list/components/work_items_list_app.vue | 2 +- .../work_items/pages/create_work_item.vue | 2 +- app/assets/stylesheets/application.scss | 4 - app/assets/stylesheets/application_utilities.scss | 2 + app/assets/stylesheets/components/detail_page.scss | 3 +- app/assets/stylesheets/framework/buttons.scss | 19 - app/assets/stylesheets/framework/diffs.scss | 1 - app/assets/stylesheets/framework/files.scss | 1 + app/assets/stylesheets/framework/header.scss | 9 +- app/assets/stylesheets/framework/highlight.scss | 2 +- app/assets/stylesheets/framework/icons.scss | 87 +- app/assets/stylesheets/framework/layout.scss | 6 - app/assets/stylesheets/framework/mixins.scss | 9 - app/assets/stylesheets/framework/page_header.scss | 8 - app/assets/stylesheets/framework/sidebar.scss | 6 +- app/assets/stylesheets/framework/variables.scss | 18 +- .../page_bundles/_system_note_styles.scss | 59 + app/assets/stylesheets/page_bundles/boards.scss | 6 + app/assets/stylesheets/page_bundles/branches.scss | 4 + app/assets/stylesheets/page_bundles/build.scss | 8 - app/assets/stylesheets/page_bundles/ci_status.scss | 1 + app/assets/stylesheets/page_bundles/issuable.scss | 53 +- .../stylesheets/page_bundles/merge_request.scss | 18 - .../stylesheets/page_bundles/merge_requests.scss | 99 +- app/assets/stylesheets/page_bundles/pipeline.scss | 86 +- app/assets/stylesheets/page_bundles/pipelines.scss | 4 - app/assets/stylesheets/page_bundles/profile.scss | 6 +- app/assets/stylesheets/page_bundles/projects.scss | 8 - app/assets/stylesheets/page_bundles/wiki.scss | 13 +- .../stylesheets/page_bundles/work_items.scss | 25 +- app/assets/stylesheets/pages/commits.scss | 3 +- app/assets/stylesheets/pages/issues.scss | 19 +- app/assets/stylesheets/pages/notes.scss | 42 +- app/assets/stylesheets/print.scss | 1 - app/assets/stylesheets/startup/_cloaking.scss | 15 - app/assets/stylesheets/startup/startup-dark.scss | 1928 -------------------- .../stylesheets/startup/startup-general.scss | 1781 ------------------ app/assets/stylesheets/startup/startup-signin.scss | 852 --------- .../stylesheets/themes/dark_mode_overrides.scss | 12 +- app/assets/stylesheets/themes/theme_blue.scss | 2 +- app/assets/stylesheets/themes/theme_gray.scss | 2 +- app/assets/stylesheets/themes/theme_green.scss | 2 +- app/assets/stylesheets/themes/theme_indigo.scss | 2 +- .../stylesheets/themes/theme_light_blue.scss | 2 +- .../stylesheets/themes/theme_light_gray.scss | 2 +- .../stylesheets/themes/theme_light_green.scss | 2 +- .../stylesheets/themes/theme_light_indigo.scss | 2 +- app/assets/stylesheets/themes/theme_light_red.scss | 2 +- app/assets/stylesheets/themes/theme_red.scss | 2 +- app/assets/stylesheets/tmp_utilities.scss | 32 + app/assets/stylesheets/utilities.scss | 3 - .../projects/ml/models_index_component.rb | 11 +- .../projects/ml/show_ml_model_component.rb | 15 +- .../ml/show_ml_model_version_component.html.haml | 1 + .../projects/ml/show_ml_model_version_component.rb | 32 + app/controllers/acme_challenges_controller.rb | 4 +- app/controllers/admin/abuse_reports_controller.rb | 1 + .../admin/application_settings_controller.rb | 21 +- app/controllers/admin/dashboard_controller.rb | 3 +- app/controllers/admin/spam_logs_controller.rb | 4 +- app/controllers/admin/users_controller.rb | 25 +- app/controllers/application_controller.rb | 2 +- app/controllers/autocomplete_controller.rb | 36 +- app/controllers/base_action_controller.rb | 31 - app/controllers/chaos_controller.rb | 4 +- app/controllers/concerns/creates_commit.rb | 14 +- app/controllers/concerns/issuable_actions.rb | 2 + app/controllers/concerns/render_access_tokens.rb | 1 + app/controllers/concerns/wiki_actions.rb | 6 +- app/controllers/dashboard_controller.rb | 1 + app/controllers/explore/catalog_controller.rb | 20 + .../external_redirect_controller.rb | 36 + .../groups/settings/applications_controller.rb | 2 +- .../groups/settings/ci_cd_controller.rb | 1 - app/controllers/groups/work_items_controller.rb | 7 + app/controllers/groups_controller.rb | 5 + app/controllers/health_controller.rb | 4 +- app/controllers/import/bulk_imports_controller.rb | 8 + .../jira_connect/subscriptions_controller.rb | 2 +- app/controllers/jwt_controller.rb | 8 +- app/controllers/metrics_controller.rb | 4 +- .../oauth/jira_dvcs/authorizations_controller.rb | 86 - .../organizations/organizations_controller.rb | 4 + .../profiles/comment_templates_controller.rb | 2 - app/controllers/profiles/preferences_controller.rb | 1 + app/controllers/profiles_controller.rb | 3 +- app/controllers/projects/application_controller.rb | 13 + app/controllers/projects/artifacts_controller.rb | 6 +- app/controllers/projects/blob_controller.rb | 2 + .../projects/environments_controller.rb | 15 +- app/controllers/projects/group_links_controller.rb | 51 +- app/controllers/projects/incidents_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 6 +- app/controllers/projects/jobs_controller.rb | 30 +- .../projects/merge_requests/drafts_controller.rb | 20 +- .../projects/merge_requests_controller.rb | 22 +- .../projects/ml/model_versions_controller.rb | 24 + app/controllers/projects/ml/models_controller.rb | 31 +- app/controllers/projects/pipelines_controller.rb | 7 +- app/controllers/projects/raw_controller.rb | 3 +- .../projects/repositories_controller.rb | 2 +- .../projects/service_desk_controller.rb | 5 +- .../projects/settings/ci_cd_controller.rb | 1 - app/controllers/projects/tree_controller.rb | 2 + app/controllers/projects/work_items_controller.rb | 1 - app/controllers/projects_controller.rb | 11 +- .../repositories/git_http_client_controller.rb | 4 +- .../repositories/git_http_controller.rb | 10 +- app/controllers/repositories/lfs_api_controller.rb | 4 +- app/controllers/search_controller.rb | 19 +- .../ios_specific_templates_experiment.rb | 32 - .../ci/catalog/resources/versions_finder.rb | 58 + app/finders/ci/runners_finder.rb | 17 + .../data_transfer/mocked_transfer_finder.rb | 27 - app/finders/merge_requests_finder.rb | 11 +- .../organizations/user_organizations_finder.rb | 26 + app/finders/packages/packages_finder.rb | 1 + app/finders/packages/pypi/packages_finder.rb | 11 + app/finders/projects/ml/model_finder.rb | 52 +- app/finders/projects_finder.rb | 14 +- .../user_group_notification_settings_finder.rb | 17 +- app/graphql/mutations/base_mutation.rb | 6 - .../mutations/ci/catalog/resources/create.rb | 36 + .../mutations/ci/catalog/resources/unpublish.rb | 30 + app/graphql/mutations/ci/job/cancel.rb | 2 +- app/graphql/mutations/ci/pipeline/cancel.rb | 2 +- app/graphql/mutations/commits/create.rb | 2 +- .../container_registry/protection/rule/create.rb | 63 + app/graphql/mutations/merge_requests/accept.rb | 4 + .../mutations/namespace/package_settings/update.rb | 10 - app/graphql/mutations/organizations/create.rb | 35 + .../mutations/packages/protection/rule/delete.rb | 40 + app/graphql/mutations/saved_replies/base.rb | 4 - app/graphql/mutations/saved_replies/create.rb | 2 - app/graphql/mutations/saved_replies/destroy.rb | 2 - app/graphql/mutations/saved_replies/update.rb | 2 - .../cycle_analytics/deployment_count_resolver.rb | 2 +- .../cycle_analytics/issue_count_resolver.rb | 2 +- .../resolvers/ci/catalog/resource_resolver.rb | 48 + .../resolvers/ci/catalog/resources_resolver.rb | 54 + .../resolvers/ci/catalog/versions_resolver.rb | 24 + app/graphql/resolvers/ci/runners_resolver.rb | 14 + .../resolvers/concerns/caching_array_resolver.rb | 2 +- .../concerns/work_items/shared_filter_arguments.rb | 7 +- .../container_repository_tags_resolver.rb | 56 +- .../data_transfer/group_data_transfer_resolver.rb | 16 +- .../project_data_transfer_resolver.rb | 16 +- app/graphql/resolvers/group_issues_resolver.rb | 2 +- .../resolvers/issues/base_parent_resolver.rb | 9 +- app/graphql/resolvers/issues_resolver.rb | 7 +- .../resolvers/namespaces/work_items_resolver.rb | 2 +- app/graphql/resolvers/packages_base_resolver.rb | 6 + app/graphql/resolvers/project_issues_resolver.rb | 2 +- app/graphql/resolvers/project_members_resolver.rb | 4 +- .../resolvers/project_milestones_resolver.rb | 1 - .../resolvers/projects/snippets_resolver.rb | 4 +- app/graphql/resolvers/projects_resolver.rb | 42 +- app/graphql/resolvers/saved_reply_resolver.rb | 2 - app/graphql/resolvers/snippets_resolver.rb | 4 +- .../resolvers/users/frecent_groups_resolver.rb | 23 + .../resolvers/users/frecent_projects_resolver.rb | 21 + .../resolvers/users/organizations_resolver.rb | 18 + app/graphql/resolvers/users/snippets_resolver.rb | 4 +- .../resolvers/work_items/linked_items_resolver.rb | 26 +- app/graphql/types/abuse_report_type.rb | 9 + .../analytics/cycle_analytics/value_stream_type.rb | 32 + app/graphql/types/base_argument.rb | 22 - app/graphql/types/base_input_object.rb | 2 + .../types/ci/catalog/resource_scope_enum.rb | 14 + app/graphql/types/ci/catalog/resource_sort_enum.rb | 19 + app/graphql/types/ci/catalog/resource_type.rb | 120 ++ app/graphql/types/ci/pipeline_status_enum.rb | 1 + .../protection/rule_access_level_enum.rb | 17 + .../container_registry/protection/rule_type.rb | 41 + .../types/container_repository_details_type.rb | 3 +- .../data_transfer/project_data_transfer_type.rb | 1 - app/graphql/types/group_member_type.rb | 4 +- app/graphql/types/issuable_state_enum.rb | 5 + .../types/merge_request_review_state_enum.rb | 8 +- app/graphql/types/merge_request_type.rb | 3 +- app/graphql/types/mutation_type.rb | 33 +- .../types/namespace/package_settings_type.rb | 15 +- app/graphql/types/notes/noteable_interface.rb | 2 + .../types/organizations/organization_type.rb | 4 + .../organizations/organization_user_badge_type.rb | 22 + .../types/organizations/organization_user_type.rb | 4 +- app/graphql/types/packages/package_base_type.rb | 10 +- app/graphql/types/packages/protection/rule_type.rb | 5 + app/graphql/types/packages/pypi/metadatum_type.rb | 9 + app/graphql/types/permission_types/abuse_report.rb | 11 + .../types/permission_types/base_permission_type.rb | 2 +- app/graphql/types/permission_types/ci/job.rb | 1 + app/graphql/types/permission_types/ci/pipeline.rb | 1 + app/graphql/types/permission_types/package.rb | 12 + app/graphql/types/project_type.rb | 6 + .../types/projects/detailed_import_status_type.rb | 39 + app/graphql/types/query_type.rb | 22 + .../degradation_type.rb | 3 +- .../report_generation_status_enum.rb | 16 + .../codequality_reports_comparer/report_type.rb | 2 +- .../codequality_reports_comparer/status_enum.rb | 8 +- .../codequality_reports_comparer/summary_type.rb | 2 +- .../security/codequality_reports_comparer_type.rb | 7 +- app/graphql/types/user_interface.rb | 16 +- app/graphql/types/work_items/linked_item_type.rb | 22 +- .../types/work_items/widgets/linked_items_type.rb | 1 + app/helpers/admin/user_actions_helper.rb | 15 + app/helpers/application_helper.rb | 9 +- app/helpers/application_settings_helper.rb | 1 + app/helpers/auth_helper.rb | 11 +- app/helpers/blob_helper.rb | 2 +- app/helpers/ci/catalog/resources_helper.rb | 4 +- app/helpers/ci/pipelines_helper.rb | 11 +- app/helpers/ci/status_helper.rb | 112 +- app/helpers/clusters_helper.rb | 2 +- app/helpers/colors_helper.rb | 12 - app/helpers/dropdowns_helper.rb | 2 +- app/helpers/environment_helper.rb | 48 - app/helpers/environments_helper.rb | 13 +- app/helpers/events_helper.rb | 44 +- app/helpers/graph_helper.rb | 13 - app/helpers/ide_helper.rb | 10 +- app/helpers/members_helper.rb | 11 - app/helpers/merge_requests_helper.rb | 11 +- app/helpers/nav/new_dropdown_helper.rb | 11 + app/helpers/nav_helper.rb | 26 +- app/helpers/notes_helper.rb | 24 +- app/helpers/operations_helper.rb | 2 +- app/helpers/organizations/organization_helper.rb | 21 + app/helpers/preferences_helper.rb | 8 +- app/helpers/projects/pipeline_helper.rb | 2 + app/helpers/projects_helper.rb | 8 +- app/helpers/sidebars_helper.rb | 4 +- app/helpers/sorting_helper.rb | 30 - app/helpers/users/callouts_helper.rb | 24 +- app/helpers/users_helper.rb | 33 +- app/helpers/visibility_level_helper.rb | 10 - app/helpers/vite_helper.rb | 16 - app/helpers/wiki_helper.rb | 8 - app/mailers/emails/issues.rb | 2 +- app/mailers/emails/merge_requests.rb | 2 +- app/mailers/emails/service_desk.rb | 2 - app/models/abuse_report.rb | 16 +- app/models/active_session.rb | 36 +- app/models/activity_pub.rb | 7 + app/models/activity_pub/releases_subscription.rb | 22 + app/models/ai/service_access_token.rb | 10 +- .../analytics/cycle_analytics/value_stream.rb | 6 + app/models/application_setting.rb | 9 +- app/models/application_setting_implementation.rb | 12 +- app/models/bulk_imports/entity.rb | 4 + app/models/bulk_imports/failure.rb | 4 + app/models/ci/bridge.rb | 4 +- app/models/ci/build.rb | 22 +- app/models/ci/build_trace_chunks/redis_base.rb | 6 +- app/models/ci/build_trace_metadata.rb | 2 +- app/models/ci/catalog/components_project.rb | 7 +- app/models/ci/catalog/listing.rb | 49 +- app/models/ci/catalog/resource.rb | 44 +- app/models/ci/catalog/resources/component.rb | 2 + app/models/ci/catalog/resources/version.rb | 96 + app/models/ci/job_artifact.rb | 2 +- app/models/ci/job_token/scope.rb | 5 + app/models/ci/pipeline.rb | 48 +- app/models/ci/ref.rb | 17 +- app/models/ci/runner.rb | 4 + app/models/ci/runner_manager.rb | 21 + app/models/ci/sources/pipeline.rb | 2 +- app/models/ci/stage.rb | 5 + app/models/commit.rb | 8 +- app/models/commit_status.rb | 32 +- .../analytics/cycle_analytics/stage_event_model.rb | 1 + app/models/concerns/can_move_repository_storage.rb | 19 +- app/models/concerns/ci/has_status.rb | 11 +- app/models/concerns/commit_signature.rb | 1 + app/models/concerns/diff_positionable_note.rb | 1 + app/models/concerns/enums/package_metadata.rb | 3 +- app/models/concerns/enums/sbom.rb | 3 +- .../concerns/merge_request_reviewer_state.rb | 3 +- app/models/concerns/repository_storage_movable.rb | 27 +- app/models/concerns/restricted_signup.rb | 1 + .../token_authenticatable_strategies/base.rb | 2 +- .../use_sql_function_for_primary_key_lookups.rb | 39 + app/models/concerns/users/visitable.rb | 39 + app/models/container_repository.rb | 31 +- app/models/deployment.rb | 3 + app/models/environment.rb | 8 + app/models/group.rb | 93 +- app/models/guest.rb | 9 - app/models/integration.rb | 21 +- app/models/integrations/apple_app_store.rb | 6 +- app/models/integrations/asana.rb | 6 +- app/models/integrations/assembla.rb | 4 +- app/models/integrations/bamboo.rb | 6 +- app/models/integrations/base_chat_notification.rb | 4 - app/models/integrations/base_slack_notification.rb | 2 +- app/models/integrations/bugzilla.rb | 6 +- app/models/integrations/buildkite.rb | 12 +- app/models/integrations/campfire.rb | 6 +- app/models/integrations/clickup.rb | 6 +- app/models/integrations/confluence.rb | 4 +- app/models/integrations/custom_issue_tracker.rb | 6 +- app/models/integrations/datadog.rb | 6 +- app/models/integrations/discord.rb | 14 +- app/models/integrations/drone_ci.rb | 12 +- app/models/integrations/emails_on_push.rb | 4 +- app/models/integrations/ewm.rb | 6 +- app/models/integrations/external_wiki.rb | 14 +- .../integrations/gitlab_slack_application.rb | 4 +- app/models/integrations/google_play.rb | 6 +- app/models/integrations/hangouts_chat.rb | 6 +- app/models/integrations/harbor.rb | 26 +- app/models/integrations/irker.rb | 38 +- app/models/integrations/jenkins.rb | 6 +- app/models/integrations/jira.rb | 24 +- app/models/integrations/mattermost.rb | 6 +- .../integrations/mattermost_slash_commands.rb | 4 +- app/models/integrations/microsoft_teams.rb | 6 +- app/models/integrations/mock_ci.rb | 4 +- app/models/integrations/mock_monitoring.rb | 4 +- app/models/integrations/packagist.rb | 4 +- app/models/integrations/pipelines_email.rb | 4 +- app/models/integrations/pivotaltracker.rb | 6 +- app/models/integrations/prometheus.rb | 4 +- app/models/integrations/pumble.rb | 6 +- app/models/integrations/pushover.rb | 4 +- app/models/integrations/redmine.rb | 6 +- app/models/integrations/shimo.rb | 4 +- app/models/integrations/slack.rb | 4 +- app/models/integrations/slack_slash_commands.rb | 4 +- app/models/integrations/squash_tm.rb | 6 +- app/models/integrations/teamcity.rb | 6 +- app/models/integrations/telegram.rb | 6 +- app/models/integrations/unify_circuit.rb | 6 +- app/models/integrations/webex_teams.rb | 6 +- app/models/integrations/youtrack.rb | 6 +- app/models/integrations/zentao.rb | 8 +- app/models/member.rb | 11 +- app/models/members/members/members_with_parents.rb | 105 ++ app/models/members/project_member.rb | 6 + app/models/merge_request.rb | 58 +- .../merge_request_context_commit_diff_file.rb | 1 - app/models/merge_request_diff_commit.rb | 10 +- app/models/ml/candidate.rb | 2 + app/models/ml/model.rb | 14 +- app/models/ml/model_metadata.rb | 13 + app/models/ml/model_version.rb | 19 +- app/models/namespace.rb | 31 +- app/models/namespace_setting.rb | 10 + app/models/network/graph.rb | 20 +- app/models/note.rb | 6 +- app/models/organizations/organization.rb | 4 + app/models/packages/npm/metadata_cache.rb | 6 + app/models/packages/nuget/symbol.rb | 3 + app/models/packages/protection/rule.rb | 8 +- app/models/packages/pypi/metadatum.rb | 16 +- app/models/packages/tag.rb | 7 + app/models/pages/lookup_path.rb | 12 +- app/models/pages_deployment.rb | 17 +- app/models/pages_domain.rb | 22 +- app/models/personal_access_token.rb | 7 +- app/models/project.rb | 96 +- app/models/project_feature_usage.rb | 13 - app/models/project_pages_metadatum.rb | 3 - app/models/project_snippet.rb | 2 + app/models/projects/repository_storage_move.rb | 5 - app/models/protected_branch.rb | 1 + app/models/repository.rb | 8 +- app/models/resource_label_event.rb | 2 +- app/models/service_desk/custom_email_credential.rb | 11 +- app/models/snippet.rb | 1 + app/models/snippet_repository.rb | 5 + app/models/system/broadcast_message.rb | 2 +- app/models/system_note_metadata.rb | 1 + app/models/upload.rb | 2 +- app/models/user.rb | 24 +- app/models/user_custom_attribute.rb | 1 + app/models/user_detail.rb | 23 +- app/models/user_preference.rb | 14 + app/models/users/anonymous.rb | 11 + app/models/users/callout.rb | 7 +- app/models/users/credit_card_validation.rb | 6 + app/models/users/group_visit.rb | 7 + app/models/users/phone_number_validation.rb | 4 + app/models/users/project_visit.rb | 7 + app/models/vs_code/settings/vs_code_setting.rb | 4 +- app/models/wiki_page.rb | 7 +- app/models/work_item.rb | 17 +- app/policies/abuse_report_policy.rb | 1 + .../cycle_analytics/value_stream_policy.rb | 9 + app/policies/base_policy.rb | 2 +- app/policies/ci/build_policy.rb | 2 + app/policies/ci/deployable_policy.rb | 5 +- app/policies/ci/pipeline_policy.rb | 6 +- app/policies/concerns/policy_actor.rb | 4 - .../container_registry/protection/rule_policy.rb | 9 + app/policies/global_policy.rb | 4 - app/policies/group_group_link_policy.rb | 8 + app/policies/group_policy.rb | 1 + app/policies/issue_policy.rb | 5 +- .../group_project_namespace_shared_policy.rb | 1 + app/policies/project_group_link_policy.rb | 4 + app/policies/project_import_state_policy.rb | 5 + app/policies/project_policy.rb | 88 +- app/policies/user_policy.rb | 1 + app/presenters/clusters/cluster_presenter.rb | 2 +- app/presenters/commit_status_presenter.rb | 1 + app/presenters/member_presenter.rb | 9 + app/presenters/ml/model_presenter.rb | 22 +- app/presenters/ml/model_version_presenter.rb | 25 + app/presenters/project_presenter.rb | 23 +- .../projects/security/configuration_presenter.rb | 4 +- app/presenters/user_presenter.rb | 1 - app/serializers/build_details_entity.rb | 2 +- app/serializers/ci/job_entity.rb | 2 +- app/serializers/ci/pipeline_entity.rb | 2 +- app/serializers/deployment_entity.rb | 2 +- .../group_link/group_group_link_entity.rb | 2 +- app/serializers/group_link/group_link_entity.rb | 22 +- .../group_link/project_group_link_entity.rb | 2 +- app/serializers/issue_entity.rb | 6 +- app/serializers/member_entity.rb | 5 + app/serializers/merge_request_noteable_entity.rb | 8 +- app/serializers/merge_request_widget_entity.rb | 8 +- app/serializers/review_app_setup_entity.rb | 2 + app/services/activity_pub/accept_follow_service.rb | 55 + .../activity_pub/inbox_resolver_service.rb | 50 + app/services/activity_pub/third_party_error.rb | 5 + app/services/admin/plan_limits/update_service.rb | 52 +- app/services/auto_merge/base_service.rb | 25 +- app/services/boards/lists/move_service.rb | 7 +- .../batched_relation_export_service.rb | 8 - app/services/bulk_imports/file_download_service.rb | 4 +- app/services/bulk_imports/process_service.rb | 11 +- .../bulk_imports/relation_batch_export_service.rb | 14 +- .../bulk_imports/relation_export_service.rb | 8 - app/services/ci/build_cancel_service.rb | 2 +- app/services/ci/cancel_pipeline_service.rb | 41 +- .../ci/catalog/resources/create_service.rb | 31 + .../ci/catalog/resources/release_service.rb | 46 + .../ci/catalog/resources/validate_service.rb | 26 +- .../catalog/resources/versions/create_service.rb | 111 ++ app/services/ci/destroy_pipeline_service.rb | 2 + app/services/ci/enqueue_job_service.rb | 11 +- .../cancel_redundant_pipelines_service.rb | 2 +- .../ci/pipelines/update_metadata_service.rb | 31 + .../ci/refs/enqueue_pipelines_to_unlock_service.rb | 33 +- app/services/ci/retry_job_service.rb | 4 - .../concerns/update_repository_storage_methods.rb | 4 +- .../protection/create_rule_service.rb | 40 + app/services/draft_notes/publish_service.rb | 4 +- app/services/environments/auto_recover_service.rb | 44 + app/services/git/branch_hooks_service.rb | 1 - .../google_cloud/generate_pipeline_service.rb | 2 +- .../groups/ssh_certificates/create_service.rb | 7 +- .../groups/ssh_certificates/destroy_service.rb | 9 +- .../import/validate_remote_git_endpoint_service.rb | 79 +- .../jira_connect_subscriptions/create_service.rb | 4 +- app/services/members/create_service.rb | 55 +- .../mark_reviewer_reviewed_service.rb | 21 - .../mergeability/check_base_service.rb | 5 + .../mergeability/check_ci_status_service.rb | 2 + .../check_discussions_status_service.rb | 2 + .../mergeability/check_rebase_status_service.rb | 2 + .../mergeability/detailed_merge_status_service.rb | 6 +- .../mergeability/run_checks_service.rb | 2 +- .../merge_requests/push_options_handler_service.rb | 11 +- .../update_reviewer_state_service.rb | 34 + app/services/merge_requests/update_service.rb | 5 + app/services/ml/create_candidate_service.rb | 37 + app/services/ml/create_model_service.rb | 51 + .../ml/experiment_tracking/candidate_repository.rb | 18 +- app/services/ml/find_model_service.rb | 14 + app/services/ml/find_or_create_model_service.rb | 18 +- .../ml/find_or_create_model_version_service.rb | 15 +- .../ml/model_versions/get_model_version_service.rb | 21 + app/services/ml/update_model_service.rb | 16 + app/services/notes/create_service.rb | 6 +- app/services/notification_service.rb | 4 +- app/services/organizations/base_service.rb | 14 + app/services/organizations/create_service.rb | 27 + .../ml_model/create_package_file_service.rb | 3 +- .../packages/npm/create_package_service.rb | 8 + .../packages/nuget/check_duplicates_service.rb | 30 +- .../nuget/extract_metadata_file_service.rb | 12 +- .../packages/nuget/metadata_extraction_service.rb | 15 +- .../packages/nuget/process_package_file_service.rb | 25 +- .../nuget/symbols/create_symbol_files_service.rb | 20 +- .../extract_signature_and_checksum_service.rb | 91 + .../symbols/extract_symbol_signature_service.rb | 63 - .../nuget/update_package_from_metadata_service.rb | 19 +- .../packages/protection/delete_rule_service.rb | 43 + .../packages/pypi/create_package_service.rb | 8 +- app/services/packages/update_tags_service.rb | 3 +- app/services/pages/delete_service.rb | 2 +- .../personal_access_tokens/rotate_service.rb | 9 +- .../gitlab/delete_tags_service.rb | 2 +- .../third_party/delete_tags_service.rb | 2 +- app/services/projects/destroy_service.rb | 19 + app/services/projects/fork_service.rb | 13 +- .../projects/group_links/destroy_service.rb | 33 +- .../projects/group_links/update_service.rb | 8 + app/services/projects/update_pages_service.rb | 13 +- .../projects/update_repository_storage_service.rb | 4 +- app/services/projects/update_service.rb | 15 +- app/services/releases/base_service.rb | 4 + app/services/releases/create_service.rb | 14 +- app/services/releases/destroy_service.rb | 2 + app/services/releases/update_service.rb | 2 + .../resource_access_tokens/create_service.rb | 10 + .../base_synthetic_notes_builder_service.rb | 5 +- .../resource_events/merge_into_notes_service.rb | 2 +- .../ci_configuration/sast_parser_service.rb | 8 +- .../custom_email_verifications/update_service.rb | 6 +- .../service_desk/custom_emails/create_service.rb | 4 +- .../service_desk_settings/update_service.rb | 11 + app/services/spam/spam_action_service.rb | 19 + app/services/system_notes/issuables_service.rb | 2 +- .../users/refresh_authorized_projects_service.rb | 2 + .../users/upsert_credit_card_validation_service.rb | 63 +- app/services/verify_pages_domain_service.rb | 2 +- app/services/vs_code/settings/delete_service.rb | 21 + app/services/web_hook_service.rb | 12 +- app/validators/ip_cidr_array_validator.rb | 25 + app/validators/ip_cidr_validator.rb | 45 + .../json_schemas/activity_pub_follow_payload.json | 53 + .../json_schemas/vulnerability_cvss_vectors.json | 4 +- app/views/admin/abuse_reports/show.html.haml | 1 + .../_account_and_limit.html.haml | 3 +- .../admin/application_settings/_ci_cd.html.haml | 6 +- .../application_settings/_diagramsnet.html.haml | 2 +- .../admin/application_settings/_email.html.haml | 2 +- .../application_settings/_error_tracking.html.haml | 4 +- .../admin/application_settings/_floc.html.haml | 2 +- .../_gitlab_shell_operation_limits.html.haml | 4 +- .../admin/application_settings/_gitpod.html.haml | 2 +- .../_import_export_limits.html.haml | 3 +- .../admin/application_settings/_kroki.html.haml | 2 +- .../application_settings/_localization.html.haml | 4 +- .../admin/application_settings/_outbound.html.haml | 2 +- .../application_settings/_performance.html.haml | 6 +- .../admin/application_settings/_plantuml.html.haml | 2 +- .../_projects_api_limits.html.haml | 4 +- .../_repository_check.html.haml | 2 +- .../_repository_storage.html.haml | 6 +- .../_runner_registrars_form.html.haml | 2 +- .../admin/application_settings/_signin.html.haml | 4 +- .../application_settings/_sourcegraph.html.haml | 2 +- .../admin/application_settings/_spam.html.haml | 4 +- .../admin/application_settings/_terms.html.haml | 2 +- .../admin/application_settings/_usage.html.haml | 24 +- .../admin/application_settings/general.html.haml | 6 +- .../metrics_and_profiling.html.haml | 8 +- .../admin/application_settings/network.html.haml | 26 +- .../application_settings/preferences.html.haml | 10 +- .../admin/application_settings/reporting.html.haml | 2 +- .../application_settings/repository.html.haml | 12 +- .../service_usage_data.html.haml | 29 - .../admin/background_migrations/index.html.haml | 2 +- app/views/admin/dashboard/index.html.haml | 2 +- app/views/admin/dev_ops_report/_score.html.haml | 2 +- app/views/admin/spam_logs/_spam_log.html.haml | 16 +- app/views/admin/topics/_form.html.haml | 4 +- app/views/admin/topics/_topic.html.haml | 2 +- app/views/admin/topics/index.html.haml | 2 +- app/views/admin/users/_users.html.haml | 3 + app/views/admin/users/projects.html.haml | 4 +- app/views/ci/status/_badge.html.haml | 13 - app/views/ci/status/_icon.html.haml | 11 +- .../clusters/clusters/_advanced_settings.html.haml | 2 +- .../clusters/clusters/_deprecation_alert.html.haml | 2 +- .../clusters/_multiple_clusters_message.html.haml | 2 +- app/views/clusters/clusters/_namespace.html.haml | 2 +- .../clusters/_provider_details_form.html.haml | 32 +- .../_cloud_provider_selector.html.haml | 6 +- app/views/clusters/clusters/connect.html.haml | 2 +- .../clusters/clusters/new_cluster_docs.html.haml | 2 +- app/views/clusters/clusters/show.html.haml | 8 +- app/views/clusters/clusters/user/_form.html.haml | 4 +- app/views/dashboard/_projects_head.html.haml | 5 +- app/views/dashboard/todos/_todo.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 16 +- app/views/devise/shared/_sign_in_link.html.haml | 2 +- app/views/devise/shared/_signup_box.html.haml | 75 +- app/views/devise/shared/_signup_box_form.html.haml | 73 + .../shared/_signup_omniauth_provider_list.haml | 5 +- app/views/discussions/_notes.html.haml | 2 +- app/views/events/_event.html.haml | 4 +- app/views/events/_event_scope.html.haml | 2 +- app/views/events/event/_common.html.haml | 4 +- app/views/events/event/_created_project.html.haml | 2 +- app/views/events/event/_design.html.haml | 2 +- app/views/events/event/_note.html.haml | 2 +- app/views/events/event/_private.html.haml | 6 +- app/views/events/event/_push.html.haml | 2 +- app/views/events/event/_wiki.html.haml | 2 +- app/views/explore/catalog/show.html.haml | 3 + .../external_redirect/index.html.haml | 12 + app/views/groups/_home_panel.html.haml | 2 +- ...ort_group_from_another_instance_panel.html.haml | 6 +- .../groups/_import_group_from_file_panel.html.haml | 2 +- app/views/groups/_invite_members_modal.html.haml | 6 +- app/views/groups/projects.html.haml | 15 +- app/views/groups/settings/_export.html.haml | 4 +- .../settings/_git_access_protocols.html.haml | 2 +- app/views/groups/settings/_permissions.html.haml | 3 +- .../_resource_access_token_creation.html.haml | 2 +- .../settings/ci_cd/_auto_devops_form.html.haml | 2 +- app/views/import/bitbucket/status.html.haml | 4 +- app/views/import/bitbucket_server/new.html.haml | 5 +- app/views/import/bitbucket_server/status.html.haml | 4 +- app/views/import/bulk_imports/details.html.haml | 5 + app/views/import/bulk_imports/history.html.haml | 2 +- app/views/import/fogbugz/new.html.haml | 4 +- app/views/import/fogbugz/status.html.haml | 4 +- app/views/import/gitea/new.html.haml | 10 +- app/views/import/gitea/status.html.haml | 5 +- app/views/import/github/new.html.haml | 13 +- app/views/import/github/status.html.haml | 4 +- app/views/import/gitlab_projects/new.html.haml | 6 +- .../import/shared/_new_project_form.html.haml | 4 +- app/views/invites/decline.html.haml | 2 +- app/views/layouts/_head.html.haml | 4 - app/views/layouts/_page.html.haml | 4 +- app/views/layouts/application.html.haml | 4 +- app/views/layouts/devise.html.haml | 6 +- app/views/layouts/devise_empty.html.haml | 4 +- app/views/layouts/fullscreen.html.haml | 4 +- app/views/layouts/minimal.html.haml | 7 +- app/views/layouts/nav/_ask_duo_button.html.haml | 13 - app/views/layouts/nav/_top_bar.html.haml | 2 +- app/views/layouts/signup_onboarding.html.haml | 4 +- app/views/layouts/terms.html.haml | 5 +- .../github_gists_import_errors_email.html.haml | 2 +- .../pages_domain_auto_ssl_failed_email.html.haml | 2 +- .../pages_domain_auto_ssl_failed_email.text.haml | 2 +- .../notify/pages_domain_disabled_email.html.haml | 2 +- .../notify/pages_domain_disabled_email.text.haml | 2 +- .../notify/pages_domain_enabled_email.html.haml | 2 +- .../notify/pages_domain_enabled_email.text.haml | 2 +- ...ages_domain_verification_failed_email.html.haml | 2 +- ...ages_domain_verification_failed_email.text.haml | 2 +- ...s_domain_verification_succeeded_email.html.haml | 2 +- ...s_domain_verification_succeeded_email.text.haml | 2 +- .../organizations/organizations/users.html.haml | 4 + app/views/organizations/settings/general.html.haml | 3 + app/views/profiles/gpg_keys/index.html.haml | 2 +- app/views/profiles/keys/_key.html.haml | 2 +- app/views/profiles/keys/index.html.haml | 2 +- .../personal_access_tokens/index.html.haml | 2 +- app/views/profiles/preferences/show.html.haml | 9 + app/views/profiles/show.html.haml | 6 +- app/views/profiles/two_factor_auths/show.html.haml | 4 +- app/views/projects/_errors.html.haml | 2 +- app/views/projects/_home_panel.html.haml | 8 +- app/views/projects/_import_project_pane.html.haml | 2 +- .../_invite_members_empty_project.html.haml | 2 +- app/views/projects/_invite_members_modal.html.haml | 6 +- .../projects/_service_desk_settings.html.haml | 3 +- app/views/projects/artifacts/_tree_file.html.haml | 2 +- app/views/projects/blob/_editor.html.haml | 4 +- .../projects/blob/_pipeline_tour_success.html.haml | 2 +- app/views/projects/blob/show.html.haml | 3 + .../projects/blob/viewers/_route_map.html.haml | 2 +- .../blob/viewers/_route_map_loading.html.haml | 2 +- .../branch_defaults/_branch_names_fields.html.haml | 2 +- .../_default_branch_fields.html.haml | 2 +- app/views/projects/branch_defaults/_show.html.haml | 2 +- app/views/projects/branch_rules/_show.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 6 +- app/views/projects/branches/_panel.html.haml | 2 +- app/views/projects/ci/builds/_build.html.haml | 10 +- app/views/projects/cleanup/_show.html.haml | 2 +- app/views/projects/commit/_commit_box.html.haml | 4 +- .../projects/commit/_signature_badge.html.haml | 6 +- app/views/projects/commits/_commit.html.haml | 4 +- .../projects/diffs/viewers/_collapsed.html.haml | 3 +- app/views/projects/edit.html.haml | 215 +-- app/views/projects/environments/index.html.haml | 2 +- app/views/projects/feature_flags/new.html.haml | 2 +- .../feature_flags_user_lists/edit.html.haml | 2 +- .../feature_flags_user_lists/new.html.haml | 2 +- app/views/projects/find_file/show.html.haml | 2 +- app/views/projects/forks/index.html.haml | 2 +- app/views/projects/forks/new.html.haml | 1 + .../_generic_commit_status.html.haml | 2 +- app/views/projects/issues/_new_branch.html.haml | 2 +- .../projects/issues/_related_branches.html.haml | 4 +- .../projects/issues/service_desk/_issue.html.haml | 2 +- .../issues/service_desk/_issue_estimate.html.haml | 2 +- app/views/projects/jobs/_header.html.haml | 2 +- .../projects/merge_requests/_nav_btns.html.haml | 9 +- app/views/projects/merge_requests/_page.html.haml | 2 +- .../mirrors/_authentication_method.html.haml | 2 +- .../projects/mirrors/_branch_filter.html.haml | 2 +- app/views/projects/mirrors/_mirror_repos.html.haml | 8 +- .../projects/mirrors/_mirror_repos_form.html.haml | 2 +- .../projects/mirrors/_mirror_repos_list.html.haml | 10 +- .../projects/mirrors/_mirror_repos_push.html.haml | 2 +- .../projects/mirrors/_ssh_host_keys.html.haml | 4 +- .../projects/ml/model_versions/show.html.haml | 6 + app/views/projects/ml/models/index.html.haml | 2 +- app/views/projects/pages/_access.html.haml | 2 +- app/views/projects/pages/_waiting.html.haml | 2 +- app/views/projects/pages/new.html.haml | 7 +- .../projects/pages_domains/_certificate.html.haml | 2 +- app/views/projects/pages_domains/_dns.html.haml | 2 +- .../projects/pages_domains/_helper_text.html.haml | 2 +- .../shared/_create_protected_tag.html.haml | 2 +- .../protected_tags/shared/_dropdown.html.haml | 2 +- .../protected_tags/shared/_index.html.haml | 2 +- app/views/projects/readme_templates/default.md.tt | 5 +- .../projects/runners/_group_runners.html.haml | 2 +- app/views/projects/runners/_runner.html.haml | 3 +- .../settings/access_tokens/_form.html.haml | 2 +- .../settings/ci_cd/_autodevops_form.html.haml | 8 +- .../_merge_request_merge_commit_template.html.haml | 2 +- .../_merge_request_merge_method_settings.html.haml | 6 +- ...ge_request_merge_suggestions_settings.html.haml | 2 +- ...request_pipelines_and_threads_options.html.haml | 3 +- ..._merge_request_squash_commit_template.html.haml | 2 +- ...merge_request_squash_options_settings.html.haml | 2 +- .../settings/merge_requests/show.html.haml | 2 +- .../operations/_alert_management.html.haml | 2 +- app/views/projects/tags/_tag.html.haml | 2 +- app/views/projects/tree/_tree_header.html.haml | 3 +- app/views/projects/tree/show.html.haml | 3 + app/views/projects/usage_quotas/index.html.haml | 2 +- .../shared/_create_protected_branch.html.haml | 15 +- .../protected_branches/shared/_index.html.haml | 2 +- .../shared/_protected_branch.html.haml | 12 +- app/views/pwa/manifest.json.erb | 2 +- app/views/search/show.html.haml | 5 +- app/views/shared/_auto_devops_callout.html.haml | 2 +- ...auto_devops_implicitly_enabled_banner.html.haml | 2 +- app/views/shared/_ci_catalog_badge.html.haml | 1 + .../shared/_commit_message_container.html.haml | 2 +- app/views/shared/_custom_attributes.html.haml | 2 +- app/views/shared/_md_preview.html.haml | 2 +- app/views/shared/_new_nav_announcement.html.haml | 33 - .../_new_nav_for_everyone_announcement.html.haml | 18 + app/views/shared/_project_limit.html.haml | 2 +- ...gistration_features_discovery_message.html.haml | 2 +- .../shared/_remote_mirror_update_button.html.haml | 2 +- app/views/shared/_service_ping_consent.html.haml | 6 +- app/views/shared/access_tokens/_form.html.haml | 2 +- app/views/shared/deploy_tokens/_form.html.haml | 18 +- app/views/shared/deploy_tokens/_index.html.haml | 2 +- .../deploy_tokens/_new_deploy_token.html.haml | 8 +- app/views/shared/deploy_tokens/_table.html.haml | 2 +- app/views/shared/empty_states/_snippets.html.haml | 2 +- .../gitlab_slack_application/_help.html.haml | 2 +- .../_slack_integration_form.html.haml | 2 +- .../mattermost_slash_commands/_help.html.haml | 2 +- .../slack_slash_commands/_help.html.haml | 12 +- app/views/shared/issuable/_assignees.html.haml | 2 +- app/views/shared/issuable/_nav.html.haml | 2 +- app/views/shared/issuable/_search_bar.html.haml | 5 + app/views/shared/issuable/_sidebar.html.haml | 2 +- .../shared/issuable/form/_type_selector.html.haml | 2 +- app/views/shared/milestones/_sidebar.html.haml | 5 +- app/views/shared/notes/_notes_with_form.html.haml | 4 +- app/views/shared/projects/_list.html.haml | 1 + app/views/shared/projects/_project.html.haml | 5 +- .../runners/_shared_runners_description.html.haml | 2 +- app/views/shared/web_hooks/_form.html.haml | 2 +- app/views/shared/wikis/_wiki_directory.html.haml | 4 +- app/views/shared/wikis/show.html.haml | 3 +- app/views/users/_cover_controls.html.haml | 2 - app/views/users/_overview.html.haml | 4 +- app/views/users/_profile_basic_info.html.haml | 4 - app/views/users/show.html.haml | 60 +- app/workers/abuse/spam_abuse_events_worker.rb | 60 + .../projects/releases_subscription_worker.rb | 39 + app/workers/all_queues.yml | 96 +- app/workers/bulk_import_worker.rb | 17 +- app/workers/bulk_imports/entity_worker.rb | 25 +- app/workers/bulk_imports/export_request_worker.rb | 8 +- .../bulk_imports/finish_batched_pipeline_worker.rb | 24 +- app/workers/bulk_imports/pipeline_batch_worker.rb | 84 +- app/workers/bulk_imports/pipeline_worker.rb | 67 +- .../bulk_imports/relation_batch_export_worker.rb | 19 +- app/workers/bulk_imports/relation_export_worker.rb | 28 +- app/workers/bulk_imports/stuck_import_worker.rb | 17 +- app/workers/ci/cancel_pipeline_worker.rb | 2 +- app/workers/ci/initial_pipeline_process_worker.rb | 14 - .../ci/refs/unlock_previous_pipelines_worker.rb | 4 +- .../gitlab/github_import/rescheduling_methods.rb | 3 +- .../concerns/gitlab/github_import/stage_methods.rb | 27 + app/workers/concerns/worker_attributes.rb | 4 +- app/workers/environments/auto_recover_worker.rb | 22 + app/workers/environments/auto_stop_cron_worker.rb | 1 + .../stage/import_attachments_worker.rb | 6 +- .../github_import/stage/import_base_data_worker.rb | 2 - .../stage/import_collaborators_worker.rb | 3 +- .../stage/import_issue_events_worker.rb | 4 +- .../stage/import_issues_and_diff_notes_worker.rb | 4 +- .../stage/import_lfs_objects_worker.rb | 7 +- .../github_import/stage/import_notes_worker.rb | 4 +- .../stage/import_protected_branches_worker.rb | 4 +- .../stage/import_pull_requests_merged_by_worker.rb | 6 +- .../import_pull_requests_review_requests_worker.rb | 6 +- .../stage/import_pull_requests_reviews_worker.rb | 6 +- .../stage/import_pull_requests_worker.rb | 6 +- app/workers/gitlab/import/advance_stage.rb | 6 +- .../jira_import/stage/import_issues_worker.rb | 9 +- app/workers/hashed_storage/base_worker.rb | 24 - app/workers/hashed_storage/migrator_worker.rb | 18 - .../hashed_storage/project_migrate_worker.rb | 18 - .../hashed_storage/project_rollback_worker.rb | 18 - app/workers/hashed_storage/rollbacker_worker.rb | 18 - app/workers/merge_request_cleanup_refs_worker.rb | 2 - .../merge_requests/set_reviewer_reviewed_worker.rb | 21 +- .../packages/cleanup_package_registry_worker.rb | 5 + .../npm/cleanup_stale_metadata_cache_worker.rb | 42 + app/workers/packages/nuget/extraction_worker.rb | 2 +- .../after_import_merge_requests_worker.rb | 21 + app/workers/remove_expired_group_links_worker.rb | 2 +- app/workers/repository_fork_worker.rb | 22 +- .../schedule_merge_request_cleanup_refs_worker.rb | 1 - app/workers/tasks_to_be_done/create_worker.rb | 18 - 1444 files changed, 15010 insertions(+), 12938 deletions(-) create mode 100644 app/assets/javascripts/admin/abuse_report/components/abuse_report_notes.vue delete mode 100644 app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report.query.graphql delete mode 100644 app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report_labels.query.graphql delete mode 100644 app/assets/javascripts/admin/abuse_report/components/graphql/create_abuse_report_label.mutation.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_discussion.vue create mode 100644 app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note.vue create mode 100644 app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note_body.vue create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/abuse_report.query.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/abuse_report_labels.query.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/create_abuse_report_label.mutation.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/abuse_report_note.fragment.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/abuse_report_note_permissions.fragment.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/abuse_report_notes.query.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/create_abuse_report_note.mutation.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/delete_abuse_report_note.fragment.graphql create mode 100644 app/assets/javascripts/admin/abuse_report/graphql/notes/update_abuse_report_note.mutation.graphql create mode 100644 app/assets/javascripts/admin/users/components/actions/trust_user.vue create mode 100644 app/assets/javascripts/admin/users/components/actions/untrust_user.vue delete mode 100644 app/assets/javascripts/admin/users/components/user_avatar.vue delete mode 100644 app/assets/javascripts/admin/users/components/users_table.vue delete mode 100644 app/assets/javascripts/analytics/product_analytics/activity_charts_bundle.js delete mode 100644 app/assets/javascripts/analytics/product_analytics/components/activity_chart.vue create mode 100644 app/assets/javascripts/batch_comments/queries/can_approve.query.graphql delete mode 100644 app/assets/javascripts/behaviors/load_startup_css.js create mode 100644 app/assets/javascripts/ci/catalog/components/pages/ci_resources_page.vue create mode 100644 app/assets/javascripts/ci/catalog/global_catalog.vue create mode 100644 app/assets/javascripts/ci/catalog/graphql/queries/get_ci_catalog_resources.query.graphql create mode 100644 app/assets/javascripts/ci/catalog/index.js delete mode 100644 app/assets/javascripts/ci/ci_variable_list/components/ci_variable_modal.vue delete mode 100644 app/assets/javascripts/ci/pipelines_page/components/empty_state/ios_templates.vue delete mode 100644 app/assets/javascripts/ci/runner/components/registration/registration_feedback_banner.vue create mode 100644 app/assets/javascripts/ci/runner/components/runner_created_at.vue create mode 100644 app/assets/javascripts/ci/runner/components/runner_list_header.vue create mode 100644 app/assets/javascripts/ci/runner/components/search_tokens/version_token_config.js create mode 100644 app/assets/javascripts/crm/organizations/components/graphql/update_customer_relations_organization.mutation.graphql delete mode 100644 app/assets/javascripts/crm/organizations/components/graphql/update_organization.mutation.graphql create mode 100644 app/assets/javascripts/diffs/components/graphql/get_mr_codequality_and_security_reports.query.graphql delete mode 100644 app/assets/javascripts/diffs/components/graphql/get_mr_codequality_reports.query.graphql create mode 100644 app/assets/javascripts/diffs/components/shared/findings_drawer_item.vue create mode 100644 app/assets/javascripts/diffs/components/tree_list_height.vue create mode 100644 app/assets/javascripts/graphql_shared/queries/groups_autocomplete.query.graphql create mode 100644 app/assets/javascripts/import/details/components/bulk_import_details_app.vue create mode 100644 app/assets/javascripts/import_entities/import_groups/components/import_status.vue create mode 100644 app/assets/javascripts/members/components/icons/private_icon.vue create mode 100644 app/assets/javascripts/ml/model_registry/apps/index_ml_models.vue create mode 100644 app/assets/javascripts/ml/model_registry/apps/show_ml_model_version.vue create mode 100644 app/assets/javascripts/ml/model_registry/components/model_row.vue create mode 100644 app/assets/javascripts/ml/model_registry/components/search_bar.vue create mode 100644 app/assets/javascripts/ml/model_registry/constants.js delete mode 100644 app/assets/javascripts/ml/model_registry/routes/models/index/components/ml_models_index.vue delete mode 100644 app/assets/javascripts/ml/model_registry/routes/models/index/components/model_row.vue delete mode 100644 app/assets/javascripts/ml/model_registry/routes/models/index/index.js delete mode 100644 app/assets/javascripts/ml/model_registry/routes/models/index/translations.js create mode 100644 app/assets/javascripts/ml/model_registry/translations.js create mode 100644 app/assets/javascripts/observability/components/loader/constants.js create mode 100644 app/assets/javascripts/observability/components/loader/index.vue create mode 100644 app/assets/javascripts/observability/components/observability_empty_state.vue create mode 100644 app/assets/javascripts/observability/components/provisioned_observability_container.vue delete mode 100644 app/assets/javascripts/observability/components/skeleton/index.vue delete mode 100644 app/assets/javascripts/organizations/new/graphql/mutations/create_organization.mutation.graphql create mode 100644 app/assets/javascripts/organizations/new/graphql/mutations/organization_create.mutation.graphql delete mode 100644 app/assets/javascripts/organizations/new/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/organizations/profile/preferences/index.js create mode 100644 app/assets/javascripts/organizations/settings/general/components/app.vue create mode 100644 app/assets/javascripts/organizations/settings/general/components/organization_settings.vue create mode 100644 app/assets/javascripts/organizations/settings/general/graphql/mutations/update_organization.mutation.graphql create mode 100644 app/assets/javascripts/organizations/settings/general/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/organizations/settings/general/index.js create mode 100644 app/assets/javascripts/organizations/shared/constants.js create mode 100644 app/assets/javascripts/organizations/shared/graphql/queries/organization.query.graphql create mode 100644 app/assets/javascripts/organizations/users/components/app.vue create mode 100644 app/assets/javascripts/organizations/users/graphql/organization_users.query.graphql create mode 100644 app/assets/javascripts/organizations/users/index.js create mode 100644 app/assets/javascripts/pages/admin/application_settings/appearances/preview_sign_in/index.js delete mode 100644 app/assets/javascripts/pages/admin/application_settings/service_usage_data/index.js create mode 100644 app/assets/javascripts/pages/explore/catalog/index.js create mode 100644 app/assets/javascripts/pages/import/bulk_imports/details/index.js create mode 100644 app/assets/javascripts/pages/organizations/organizations/users/index.js create mode 100644 app/assets/javascripts/pages/organizations/settings/general/index.js create mode 100644 app/assets/javascripts/pages/passwords/new/index.js create mode 100644 app/assets/javascripts/pages/projects/ml/model_versions/show/index.js delete mode 100644 app/assets/javascripts/pages/projects/product_analytics/graphs/index.js delete mode 100644 app/assets/javascripts/pages/users/show/index.js create mode 100644 app/assets/javascripts/search/sidebar/components/wiki_blobs_filters.vue delete mode 100644 app/assets/javascripts/service_ping_consent.js create mode 100644 app/assets/javascripts/token_access/graphql/cache_config.js delete mode 100644 app/assets/javascripts/users/profile/components/report_abuse_button.vue delete mode 100644 app/assets/javascripts/users/profile/index.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/checks/constants.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/checks/rebase.stories.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/checks/rebase.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/checks/unresolved_discussions.vue delete mode 100644 app/assets/javascripts/vue_merge_request_widget/extensions/accessibility/index.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/extensions/accessibility/index.vue delete mode 100644 app/assets/javascripts/vue_shared/components/ci_badge_link.vue create mode 100644 app/assets/javascripts/vue_shared/components/entity_select/organization_select.vue create mode 100644 app/assets/javascripts/vue_shared/components/form/errors_alert.stories.js create mode 100644 app/assets/javascripts/vue_shared/components/form/errors_alert.vue create mode 100644 app/assets/javascripts/vue_shared/components/list_selector/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/list_selector/group_item.vue create mode 100644 app/assets/javascripts/vue_shared/components/list_selector/index.vue create mode 100644 app/assets/javascripts/vue_shared/components/list_selector/user_item.vue create mode 100644 app/assets/javascripts/vue_shared/components/source_viewer/queries/blame_data.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/users_table/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/users_table/user_avatar.vue create mode 100644 app/assets/javascripts/vue_shared/components/users_table/users_table.vue delete mode 100644 app/assets/javascripts/work_items/components/shared/work_item_links_menu.vue create mode 100644 app/assets/javascripts/work_items/components/work_item_state_toggle.vue delete mode 100644 app/assets/javascripts/work_items/components/work_item_state_toggle_button.vue create mode 100644 app/assets/javascripts/work_items/graphql/group_award_emoji.query.graphql create mode 100644 app/assets/javascripts/work_items/graphql/group_work_items.query.graphql create mode 100644 app/assets/stylesheets/page_bundles/_system_note_styles.scss delete mode 100644 app/assets/stylesheets/startup/_cloaking.scss delete mode 100644 app/assets/stylesheets/startup/startup-dark.scss delete mode 100644 app/assets/stylesheets/startup/startup-general.scss delete mode 100644 app/assets/stylesheets/startup/startup-signin.scss create mode 100644 app/assets/stylesheets/tmp_utilities.scss create mode 100644 app/components/projects/ml/show_ml_model_version_component.html.haml create mode 100644 app/components/projects/ml/show_ml_model_version_component.rb delete mode 100644 app/controllers/base_action_controller.rb create mode 100644 app/controllers/explore/catalog_controller.rb create mode 100644 app/controllers/external_redirect/external_redirect_controller.rb delete mode 100644 app/controllers/oauth/jira_dvcs/authorizations_controller.rb create mode 100644 app/controllers/projects/ml/model_versions_controller.rb delete mode 100644 app/experiments/ios_specific_templates_experiment.rb create mode 100644 app/finders/ci/catalog/resources/versions_finder.rb delete mode 100644 app/finders/data_transfer/mocked_transfer_finder.rb create mode 100644 app/finders/organizations/user_organizations_finder.rb create mode 100644 app/graphql/mutations/ci/catalog/resources/create.rb create mode 100644 app/graphql/mutations/ci/catalog/resources/unpublish.rb create mode 100644 app/graphql/mutations/container_registry/protection/rule/create.rb create mode 100644 app/graphql/mutations/organizations/create.rb create mode 100644 app/graphql/mutations/packages/protection/rule/delete.rb create mode 100644 app/graphql/resolvers/ci/catalog/resource_resolver.rb create mode 100644 app/graphql/resolvers/ci/catalog/resources_resolver.rb create mode 100644 app/graphql/resolvers/ci/catalog/versions_resolver.rb create mode 100644 app/graphql/resolvers/users/frecent_groups_resolver.rb create mode 100644 app/graphql/resolvers/users/frecent_projects_resolver.rb create mode 100644 app/graphql/resolvers/users/organizations_resolver.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/value_stream_type.rb create mode 100644 app/graphql/types/ci/catalog/resource_scope_enum.rb create mode 100644 app/graphql/types/ci/catalog/resource_sort_enum.rb create mode 100644 app/graphql/types/ci/catalog/resource_type.rb create mode 100644 app/graphql/types/container_registry/protection/rule_access_level_enum.rb create mode 100644 app/graphql/types/container_registry/protection/rule_type.rb create mode 100644 app/graphql/types/organizations/organization_user_badge_type.rb create mode 100644 app/graphql/types/permission_types/abuse_report.rb create mode 100644 app/graphql/types/permission_types/package.rb create mode 100644 app/graphql/types/projects/detailed_import_status_type.rb create mode 100644 app/graphql/types/security/codequality_reports_comparer/report_generation_status_enum.rb create mode 100644 app/models/activity_pub.rb create mode 100644 app/models/activity_pub/releases_subscription.rb create mode 100644 app/models/concerns/use_sql_function_for_primary_key_lookups.rb delete mode 100644 app/models/guest.rb create mode 100644 app/models/members/members/members_with_parents.rb create mode 100644 app/models/ml/model_metadata.rb create mode 100644 app/models/users/anonymous.rb create mode 100644 app/policies/analytics/cycle_analytics/value_stream_policy.rb create mode 100644 app/policies/container_registry/protection/rule_policy.rb create mode 100644 app/policies/group_group_link_policy.rb create mode 100644 app/policies/project_import_state_policy.rb create mode 100644 app/presenters/ml/model_version_presenter.rb create mode 100644 app/services/activity_pub/accept_follow_service.rb create mode 100644 app/services/activity_pub/inbox_resolver_service.rb create mode 100644 app/services/activity_pub/third_party_error.rb create mode 100644 app/services/ci/catalog/resources/create_service.rb create mode 100644 app/services/ci/catalog/resources/release_service.rb create mode 100644 app/services/ci/catalog/resources/versions/create_service.rb create mode 100644 app/services/ci/pipelines/update_metadata_service.rb create mode 100644 app/services/container_registry/protection/create_rule_service.rb create mode 100644 app/services/environments/auto_recover_service.rb delete mode 100644 app/services/merge_requests/mark_reviewer_reviewed_service.rb create mode 100644 app/services/merge_requests/update_reviewer_state_service.rb create mode 100644 app/services/ml/create_candidate_service.rb create mode 100644 app/services/ml/create_model_service.rb create mode 100644 app/services/ml/find_model_service.rb create mode 100644 app/services/ml/model_versions/get_model_version_service.rb create mode 100644 app/services/ml/update_model_service.rb create mode 100644 app/services/organizations/base_service.rb create mode 100644 app/services/organizations/create_service.rb create mode 100644 app/services/packages/nuget/symbols/extract_signature_and_checksum_service.rb delete mode 100644 app/services/packages/nuget/symbols/extract_symbol_signature_service.rb create mode 100644 app/services/packages/protection/delete_rule_service.rb create mode 100644 app/services/vs_code/settings/delete_service.rb create mode 100644 app/validators/ip_cidr_array_validator.rb create mode 100644 app/validators/ip_cidr_validator.rb create mode 100644 app/validators/json_schemas/activity_pub_follow_payload.json delete mode 100644 app/views/admin/application_settings/service_usage_data.html.haml delete mode 100644 app/views/ci/status/_badge.html.haml create mode 100644 app/views/devise/shared/_signup_box_form.html.haml create mode 100644 app/views/explore/catalog/show.html.haml create mode 100644 app/views/external_redirect/external_redirect/index.html.haml create mode 100644 app/views/import/bulk_imports/details.html.haml delete mode 100644 app/views/layouts/nav/_ask_duo_button.html.haml create mode 100644 app/views/organizations/organizations/users.html.haml create mode 100644 app/views/projects/ml/model_versions/show.html.haml create mode 100644 app/views/shared/_ci_catalog_badge.html.haml delete mode 100644 app/views/shared/_new_nav_announcement.html.haml create mode 100644 app/views/shared/_new_nav_for_everyone_announcement.html.haml delete mode 100644 app/views/users/_cover_controls.html.haml create mode 100644 app/workers/abuse/spam_abuse_events_worker.rb create mode 100644 app/workers/activity_pub/projects/releases_subscription_worker.rb create mode 100644 app/workers/environments/auto_recover_worker.rb delete mode 100644 app/workers/hashed_storage/base_worker.rb delete mode 100644 app/workers/hashed_storage/migrator_worker.rb delete mode 100644 app/workers/hashed_storage/project_migrate_worker.rb delete mode 100644 app/workers/hashed_storage/project_rollback_worker.rb delete mode 100644 app/workers/hashed_storage/rollbacker_worker.rb create mode 100644 app/workers/packages/npm/cleanup_stale_metadata_cache_worker.rb create mode 100644 app/workers/projects/import_export/after_import_merge_requests_worker.rb delete mode 100644 app/workers/tasks_to_be_done/create_worker.rb (limited to 'app') diff --git a/app/assets/javascripts/add_context_commits_modal/store/actions.js b/app/assets/javascripts/add_context_commits_modal/store/actions.js index f085b0d0e5e..890db374160 100644 --- a/app/assets/javascripts/add_context_commits_modal/store/actions.js +++ b/app/assets/javascripts/add_context_commits_modal/store/actions.js @@ -1,5 +1,5 @@ import _ from 'lodash'; -import * as Sentry from '@sentry/browser'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import Api from '~/api'; import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; diff --git a/app/assets/javascripts/admin/abuse_report/components/abuse_report_app.vue b/app/assets/javascripts/admin/abuse_report/components/abuse_report_app.vue index 3c46de7c2be..f0540ffa71e 100644 --- a/app/assets/javascripts/admin/abuse_report/components/abuse_report_app.vue +++ b/app/assets/javascripts/admin/abuse_report/components/abuse_report_app.vue @@ -7,6 +7,7 @@ import ReportDetails from './report_details.vue'; import ReportedContent from './reported_content.vue'; import ActivityEventsList from './activity_events_list.vue'; import ActivityHistoryItem from './activity_history_item.vue'; +import AbuseReportNotes from './abuse_report_notes.vue'; const alertDefaults = { visible: false, @@ -24,6 +25,7 @@ export default { ReportedContent, ActivityEventsList, ActivityHistoryItem, + AbuseReportNotes, }, mixins: [glFeatureFlagsMixin()], props: { @@ -96,5 +98,10 @@ export default { /> + + diff --git a/app/assets/javascripts/admin/abuse_report/components/abuse_report_notes.vue b/app/assets/javascripts/admin/abuse_report/components/abuse_report_notes.vue new file mode 100644 index 00000000000..80af7d7400a --- /dev/null +++ b/app/assets/javascripts/admin/abuse_report/components/abuse_report_notes.vue @@ -0,0 +1,92 @@ + + + diff --git a/app/assets/javascripts/admin/abuse_report/components/activity_events_list.vue b/app/assets/javascripts/admin/abuse_report/components/activity_events_list.vue index 8c4c1da28b8..2206e600543 100644 --- a/app/assets/javascripts/admin/abuse_report/components/activity_events_list.vue +++ b/app/assets/javascripts/admin/abuse_report/components/activity_events_list.vue @@ -11,7 +11,7 @@ export default {
-

{{ $options.i18n.activity }}

+

{{ $options.i18n.activity }}

diff --git a/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report.query.graphql b/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report.query.graphql deleted file mode 100644 index f5b075cb9af..00000000000 --- a/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report.query.graphql +++ /dev/null @@ -1,13 +0,0 @@ -query abuseReportQuery($id: AbuseReportID!) { - abuseReport(id: $id) { - labels { - nodes { - id - title - description - color - textColor - } - } - } -} diff --git a/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report_labels.query.graphql b/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report_labels.query.graphql deleted file mode 100644 index 4e724b4db2c..00000000000 --- a/app/assets/javascripts/admin/abuse_report/components/graphql/abuse_report_labels.query.graphql +++ /dev/null @@ -1,11 +0,0 @@ -query abuseReportLabelsQuery($searchTerm: String) { - labels: abuseReportLabels(searchTerm: $searchTerm) { - nodes { - id - title - description - color - textColor - } - } -} diff --git a/app/assets/javascripts/admin/abuse_report/components/graphql/create_abuse_report_label.mutation.graphql b/app/assets/javascripts/admin/abuse_report/components/graphql/create_abuse_report_label.mutation.graphql deleted file mode 100644 index 0781b8e634b..00000000000 --- a/app/assets/javascripts/admin/abuse_report/components/graphql/create_abuse_report_label.mutation.graphql +++ /dev/null @@ -1,10 +0,0 @@ -#import "~/graphql_shared/fragments/label.fragment.graphql" - -mutation createAbuseReportLabel($title: String!, $color: String) { - labelCreate: abuseReportLabelCreate(input: { title: $title, color: $color }) { - label { - ...Label - } - errors - } -} diff --git a/app/assets/javascripts/admin/abuse_report/components/labels_select.vue b/app/assets/javascripts/admin/abuse_report/components/labels_select.vue index 747c9a1a947..d2d143f0460 100644 --- a/app/assets/javascripts/admin/abuse_report/components/labels_select.vue +++ b/app/assets/javascripts/admin/abuse_report/components/labels_select.vue @@ -11,7 +11,7 @@ import DropdownContentsCreateView from '~/sidebar/components/labels/labels_selec import DropdownHeader from '~/sidebar/components/labels/labels_select_widget/dropdown_header.vue'; import DropdownFooter from '~/sidebar/components/labels/labels_select_widget/dropdown_footer.vue'; import DropdownWidget from '~/vue_shared/components/dropdown/dropdown_widget/dropdown_widget.vue'; -import abuseReportLabelsQuery from './graphql/abuse_report_labels.query.graphql'; +import abuseReportLabelsQuery from '../graphql/abuse_report_labels.query.graphql'; export default { components: { diff --git a/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_discussion.vue b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_discussion.vue new file mode 100644 index 00000000000..4d24471fa43 --- /dev/null +++ b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_discussion.vue @@ -0,0 +1,104 @@ + + + diff --git a/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note.vue b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note.vue new file mode 100644 index 00000000000..6da3017e11e --- /dev/null +++ b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note.vue @@ -0,0 +1,81 @@ + + + diff --git a/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note_body.vue b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note_body.vue new file mode 100644 index 00000000000..ab3d7f5fa6c --- /dev/null +++ b/app/assets/javascripts/admin/abuse_report/components/notes/abuse_report_note_body.vue @@ -0,0 +1,48 @@ + + + diff --git a/app/assets/javascripts/admin/abuse_report/components/report_details.vue b/app/assets/javascripts/admin/abuse_report/components/report_details.vue index 10e1dca7f91..89017e6cbd4 100644 --- a/app/assets/javascripts/admin/abuse_report/components/report_details.vue +++ b/app/assets/javascripts/admin/abuse_report/components/report_details.vue @@ -1,8 +1,8 @@ + + diff --git a/app/assets/javascripts/admin/users/components/actions/untrust_user.vue b/app/assets/javascripts/admin/users/components/actions/untrust_user.vue new file mode 100644 index 00000000000..da59833af07 --- /dev/null +++ b/app/assets/javascripts/admin/users/components/actions/untrust_user.vue @@ -0,0 +1,56 @@ + + + diff --git a/app/assets/javascripts/admin/users/components/app.vue b/app/assets/javascripts/admin/users/components/app.vue index a3abd904a6b..b0caffb6ca6 100644 --- a/app/assets/javascripts/admin/users/components/app.vue +++ b/app/assets/javascripts/admin/users/components/app.vue @@ -1,9 +1,15 @@ diff --git a/app/assets/javascripts/admin/users/components/user_avatar.vue b/app/assets/javascripts/admin/users/components/user_avatar.vue deleted file mode 100644 index dd354794cf3..00000000000 --- a/app/assets/javascripts/admin/users/components/user_avatar.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/app/assets/javascripts/admin/users/components/users_table.vue b/app/assets/javascripts/admin/users/components/users_table.vue deleted file mode 100644 index 65737be1e67..00000000000 --- a/app/assets/javascripts/admin/users/components/users_table.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - diff --git a/app/assets/javascripts/admin/users/constants.js b/app/assets/javascripts/admin/users/constants.js index 9cd61d6b1db..73383623aa2 100644 --- a/app/assets/javascripts/admin/users/constants.js +++ b/app/assets/javascripts/admin/users/constants.js @@ -1,9 +1,5 @@ import { s__, __ } from '~/locale'; -export const USER_AVATAR_SIZE = 32; - -export const LENGTH_OF_USER_NOTE_TOOLTIP = 100; - export const I18N_USER_ACTIONS = { edit: __('Edit'), userAdministration: s__('AdminUsers|User administration'), @@ -19,4 +15,6 @@ export const I18N_USER_ACTIONS = { deleteWithContributions: s__('AdminUsers|Delete user and contributions'), ban: s__('AdminUsers|Ban user'), unban: s__('AdminUsers|Unban user'), + trust: s__('AdminUsers|Trust user'), + untrust: s__('AdminUsers|Untrust user'), }; diff --git a/app/assets/javascripts/alert.js b/app/assets/javascripts/alert.js index 4d724b17723..fd20d216385 100644 --- a/app/assets/javascripts/alert.js +++ b/app/assets/javascripts/alert.js @@ -1,7 +1,7 @@ -import * as Sentry from '@sentry/browser'; import Vue from 'vue'; import isEmpty from 'lodash/isEmpty'; import { GlAlert, GlLink, GlSprintf } from '@gitlab/ui'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import { __ } from '~/locale'; export const VARIANT_SUCCESS = 'success'; diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue index fb872243e5e..29156a624fd 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue @@ -13,8 +13,8 @@ import { GlTabs, GlTab, } from '@gitlab/ui'; -import * as Sentry from '@sentry/browser'; import { isEqual, isEmpty, omit } from 'lodash'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; import { PROMO_URL, DOCS_URL_IN_EE_DIR } from 'jh_else_ce/lib/utils/url_utility'; import { diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js b/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js index 4fa88279fe0..d1c8d2c24e7 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js +++ b/app/assets/javascripts/analytics/cycle_analytics/store/mutations.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { formatMedianValues } from '../utils'; -import { PAGINATION_SORT_FIELD_END_EVENT, PAGINATION_SORT_DIRECTION_DESC } from '../constants'; +import { PAGINATION_SORT_DIRECTION_DESC, PAGINATION_SORT_FIELD_DURATION } from '../constants'; import * as types from './mutation_types'; export default { @@ -41,7 +41,7 @@ export default { Vue.set(state, 'pagination', { page, hasNextPage, - sort: sort || PAGINATION_SORT_FIELD_END_EVENT, + sort: sort || PAGINATION_SORT_FIELD_DURATION, direction: direction || PAGINATION_SORT_DIRECTION_DESC, }); }, diff --git a/app/assets/javascripts/analytics/cycle_analytics/store/state.js b/app/assets/javascripts/analytics/cycle_analytics/store/state.js index 3d9b56b043d..f387bf65093 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/store/state.js +++ b/app/assets/javascripts/analytics/cycle_analytics/store/state.js @@ -1,5 +1,5 @@ import { - PAGINATION_SORT_FIELD_END_EVENT, + PAGINATION_SORT_FIELD_DURATION, PAGINATION_SORT_DIRECTION_DESC, } from '~/analytics/cycle_analytics/constants'; @@ -29,7 +29,7 @@ export default () => ({ pagination: { page: null, hasNextPage: false, - sort: PAGINATION_SORT_FIELD_END_EVENT, + sort: PAGINATION_SORT_FIELD_DURATION, direction: PAGINATION_SORT_DIRECTION_DESC, }, predefinedDateRange: null, diff --git a/app/assets/javascripts/analytics/product_analytics/activity_charts_bundle.js b/app/assets/javascripts/analytics/product_analytics/activity_charts_bundle.js deleted file mode 100644 index 91cb48e181b..00000000000 --- a/app/assets/javascripts/analytics/product_analytics/activity_charts_bundle.js +++ /dev/null @@ -1,28 +0,0 @@ -import Vue from 'vue'; -import ActivityChart from './components/activity_chart.vue'; - -export default () => { - const containers = document.querySelectorAll('.js-project-analytics-chart'); - - if (!containers) { - return false; - } - - return containers.forEach((container) => { - const { chartData } = container.dataset; - const formattedData = JSON.parse(chartData); - - return new Vue({ - el: container, - components: { - ActivityChart, - }, - provide: { - formattedData, - }, - render(createElement) { - return createElement('activity-chart'); - }, - }); - }); -}; diff --git a/app/assets/javascripts/analytics/product_analytics/components/activity_chart.vue b/app/assets/javascripts/analytics/product_analytics/components/activity_chart.vue deleted file mode 100644 index 2be9ebda87a..00000000000 --- a/app/assets/javascripts/analytics/product_analytics/components/activity_chart.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/app/assets/javascripts/analytics/shared/components/metric_tile.vue b/app/assets/javascripts/analytics/shared/components/metric_tile.vue index 54dbe329c7a..9e0262b5175 100644 --- a/app/assets/javascripts/analytics/shared/components/metric_tile.vue +++ b/app/assets/javascripts/analytics/shared/components/metric_tile.vue @@ -44,6 +44,7 @@ export default { :animation-decimal-places="decimalPlaces" :class="{ 'gl-hover-cursor-pointer': hasLinks }" tabindex="0" + use-delimiters @click="clickHandler(metric)" /> diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue index 8d7761694d1..247c147609b 100644 --- a/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue @@ -1,8 +1,8 @@ diff --git a/app/assets/javascripts/batch_comments/queries/can_approve.query.graphql b/app/assets/javascripts/batch_comments/queries/can_approve.query.graphql new file mode 100644 index 00000000000..f0c9ef7b3c8 --- /dev/null +++ b/app/assets/javascripts/batch_comments/queries/can_approve.query.graphql @@ -0,0 +1,11 @@ +query userCanApprove($projectPath: ID!, $iid: String!) { + project(fullPath: $projectPath) { + id + mergeRequest(iid: $iid) { + id + userPermissions { + canApprove + } + } + } +} diff --git a/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js b/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js index 070ce38c8aa..d97f11a0acd 100644 --- a/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js +++ b/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js @@ -72,22 +72,20 @@ export const fetchDrafts = ({ commit, getters, state, dispatch }) => }), ); -export const publishSingleDraft = ({ commit, dispatch, getters }, draftId) => { +export const publishSingleDraft = ({ commit, getters }, draftId) => { commit(types.REQUEST_PUBLISH_DRAFT, draftId); service .publishDraft(getters.getNotesData.draftsPublishPath, draftId) - .then(() => dispatch('updateDiscussionsAfterPublish')) .then(() => commit(types.RECEIVE_PUBLISH_DRAFT_SUCCESS, draftId)) .catch(() => commit(types.RECEIVE_PUBLISH_DRAFT_ERROR, draftId)); }; -export const publishReview = ({ commit, dispatch, getters }, noteData = {}) => { +export const publishReview = ({ commit, getters }, noteData = {}) => { commit(types.REQUEST_PUBLISH_REVIEW); return service .publish(getters.getNotesData.draftsPublishPath, noteData) - .then(() => dispatch('updateDiscussionsAfterPublish')) .then(() => commit(types.RECEIVE_PUBLISH_REVIEW_SUCCESS)) .catch((e) => { commit(types.RECEIVE_PUBLISH_REVIEW_ERROR); @@ -96,18 +94,6 @@ export const publishReview = ({ commit, dispatch, getters }, noteData = {}) => { }); }; -export const updateDiscussionsAfterPublish = async ({ dispatch, getters, rootGetters }) => { - await dispatch( - 'fetchDiscussions', - { path: getters.getNotesData.discussionsPath }, - { root: true }, - ); - - dispatch('diffs/assignDiscussionsToDiff', rootGetters.discussionsStructuredByLineCode, { - root: true, - }); -}; - export const updateDraft = ( { commit, getters }, { note, noteText, resolveDiscussion, position, flashContainer, callback, errorCallback }, diff --git a/app/assets/javascripts/behaviors/index.js b/app/assets/javascripts/behaviors/index.js index dc9153e61f7..84ff8fa7f33 100644 --- a/app/assets/javascripts/behaviors/index.js +++ b/app/assets/javascripts/behaviors/index.js @@ -3,7 +3,6 @@ import './autosize'; import initCollapseSidebarOnWindowResize from './collapse_sidebar_on_window_resize'; import initCopyToClipboard from './copy_to_clipboard'; import installGlEmojiElement from './gl_emoji'; -import { loadStartupCSS } from './load_startup_css'; import initCopyAsGFM from './markdown/copy_as_gfm'; import './quick_submit'; import './requires_input'; @@ -13,8 +12,6 @@ import { initGlobalAlerts } from './global_alerts'; import './toggler_behavior'; import './preview_markdown'; -loadStartupCSS(); - installGlEmojiElement(); initCopyAsGFM(); diff --git a/app/assets/javascripts/behaviors/load_startup_css.js b/app/assets/javascripts/behaviors/load_startup_css.js deleted file mode 100644 index dbe9ff8b6e7..00000000000 --- a/app/assets/javascripts/behaviors/load_startup_css.js +++ /dev/null @@ -1,15 +0,0 @@ -export const loadStartupCSS = () => { - // We need to fallback to dispatching `load` in case our event listener was added too late - // or the browser environment doesn't load media=print. - // Do this on `window.load` so that the default deferred behavior takes precedence. - // https://gitlab.com/gitlab-org/gitlab/-/issues/239357 - window.addEventListener( - 'load', - () => { - document - .querySelectorAll('link[media=print]') - .forEach((x) => x.dispatchEvent(new Event('load'))); - }, - { once: true }, - ); -}; diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js index e8c486f6e74..941662635ea 100644 --- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js +++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js @@ -381,6 +381,12 @@ export const PROJECT_FILES_GO_TO_PERMALINK = { defaultKeys: ['y'], }; +export const PROJECT_FILES_GO_TO_COMPARE = { + id: 'projectFiles.goToCompare', + description: __('Compare Branches'), + defaultKeys: ['shift+c'], +}; + export const ISSUABLE_COMMENT_OR_REPLY = { id: 'issuables.commentReply', description: __('Comment/Reply (quoting selected text)'), @@ -606,6 +612,7 @@ const PROJECT_FILES_SHORTCUTS_GROUP = { PROJECT_FILES_OPEN_SELECTION, PROJECT_FILES_GO_BACK, PROJECT_FILES_GO_TO_PERMALINK, + PROJECT_FILES_GO_TO_COMPARE, ], }; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js index d9dc3aae808..4691a4228e6 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js @@ -18,6 +18,7 @@ import { GO_TO_PROJECT_KUBERNETES, GO_TO_PROJECT_ENVIRONMENTS, GO_TO_PROJECT_WEBIDE, + PROJECT_FILES_GO_TO_COMPARE, NEW_ISSUE, } from './keybindings'; import Shortcuts from './shortcuts'; @@ -43,6 +44,7 @@ export default class ShortcutsNavigation extends Shortcuts { [GO_TO_PROJECT_SNIPPETS, () => findAndFollowLink('.shortcuts-snippets')], [GO_TO_PROJECT_KUBERNETES, () => findAndFollowLink('.shortcuts-kubernetes')], [GO_TO_PROJECT_ENVIRONMENTS, () => findAndFollowLink('.shortcuts-environments')], + [PROJECT_FILES_GO_TO_COMPARE, () => findAndFollowLink('.shortcuts-compare')], [GO_TO_PROJECT_WEBIDE, ShortcutsNavigation.navigateToWebIDE], [NEW_ISSUE, () => findAndFollowLink('.shortcuts-new-issue')], ]); diff --git a/app/assets/javascripts/blob/components/blob_header.vue b/app/assets/javascripts/blob/components/blob_header.vue index 699a0491183..5411881a8d2 100644 --- a/app/assets/javascripts/blob/components/blob_header.vue +++ b/app/assets/javascripts/blob/components/blob_header.vue @@ -5,7 +5,7 @@ import userInfoQuery from '../queries/user_info.query.graphql'; import applicationInfoQuery from '../queries/application_info.query.graphql'; import BlobFilepath from './blob_header_filepath.vue'; import ViewerSwitcher from './blob_header_viewer_switcher.vue'; -import { SIMPLE_BLOB_VIEWER } from './constants'; +import { SIMPLE_BLOB_VIEWER, BLAME_VIEWER } from './constants'; import TableOfContents from './table_contents.vue'; export default { @@ -85,6 +85,11 @@ export default { required: false, default: '', }, + showBlameToggle: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -93,9 +98,6 @@ export default { }; }, computed: { - showViewerSwitcher() { - return !this.hideViewerSwitcher && Boolean(this.blob.simpleViewer && this.blob.richViewer); - }, showDefaultActions() { return !this.hideDefaultActions; }, @@ -114,7 +116,7 @@ export default { }, watch: { viewer(newVal, oldVal) { - if (!this.hideViewerSwitcher && newVal !== oldVal) { + if (newVal !== BLAME_VIEWER && newVal !== oldVal) { this.$emit('viewer-changed', newVal); } }, @@ -138,7 +140,14 @@ export default {
- + diff --git a/app/assets/javascripts/blob/components/constants.js b/app/assets/javascripts/blob/components/constants.js index adac4d6408d..bccab09c7a2 100644 --- a/app/assets/javascripts/blob/components/constants.js +++ b/app/assets/javascripts/blob/components/constants.js @@ -11,6 +11,9 @@ export const SIMPLE_BLOB_VIEWER_TITLE = __('Display source'); export const RICH_BLOB_VIEWER = 'rich'; export const RICH_BLOB_VIEWER_TITLE = __('Display rendered file'); +export const BLAME_VIEWER = 'blame'; +export const BLAME_TITLE = __('Display blame info'); + export const BLOB_RENDER_EVENT_LOAD = 'force-content-fetch'; export const BLOB_RENDER_EVENT_SHOW_SOURCE = 'force-switch-viewer'; diff --git a/app/assets/javascripts/blob/filepath_form/components/template_selector.vue b/app/assets/javascripts/blob/filepath_form/components/template_selector.vue index 51c69590796..379d5e38197 100644 --- a/app/assets/javascripts/blob/filepath_form/components/template_selector.vue +++ b/app/assets/javascripts/blob/filepath_form/components/template_selector.vue @@ -2,6 +2,7 @@ import { GlCollapsibleListbox } from '@gitlab/ui'; import SuggestGitlabCiYml from '~/blob/suggest_gitlab_ci_yml/components/popover.vue'; import { __ } from '~/locale'; +import { DEFAULT_CI_CONFIG_PATH, CI_CONFIG_PATH_EXTENSION } from '~/lib/utils/constants'; const templateSelectors = [ { @@ -12,8 +13,8 @@ const templateSelectors = [ }, { key: 'gitlab_ci_ymls', - name: '.gitlab-ci.yml', - pattern: /(.gitlab-ci.yml)/, + name: DEFAULT_CI_CONFIG_PATH, + pattern: CI_CONFIG_PATH_EXTENSION, type: 'gitlab_ci_ymls', }, { diff --git a/app/assets/javascripts/blob/pipeline_tour_success_modal.vue b/app/assets/javascripts/blob/pipeline_tour_success_modal.vue index f3c542c467a..0cc75d28e0b 100644 --- a/app/assets/javascripts/blob/pipeline_tour_success_modal.vue +++ b/app/assets/javascripts/blob/pipeline_tour_success_modal.vue @@ -94,14 +94,12 @@ export default {

diff --git a/app/assets/javascripts/boards/boards_util.js b/app/assets/javascripts/boards/boards_util.js index bf77aa4996c..fd36eea95eb 100644 --- a/app/assets/javascripts/boards/boards_util.js +++ b/app/assets/javascripts/boards/boards_util.js @@ -204,7 +204,8 @@ export function moveItemListHelper(item, fromList, toList) { export function moveItemVariables({ iid, - epicId, + itemId, + epicId = null, fromListId, toListId, moveBeforeId, @@ -225,6 +226,7 @@ export function moveItemVariables({ }; } return { + itemId, epicId, boardId, moveBeforeId, diff --git a/app/assets/javascripts/boards/components/board_add_new_column_form.vue b/app/assets/javascripts/boards/components/board_add_new_column_form.vue index 419d0b41d69..a3c0553d17c 100644 --- a/app/assets/javascripts/boards/components/board_add_new_column_form.vue +++ b/app/assets/javascripts/boards/components/board_add_new_column_form.vue @@ -43,7 +43,6 @@ export default {
0; + }, shouldRenderEpicCountables() { - return this.isEpicBoard && this.item.hasIssues; + return this.isEpicBoard && this.hasChildren; }, shouldRenderEpicProgress() { return this.totalWeight > 0; @@ -396,7 +399,7 @@ export default { item.iid === itemIid); }, async moveBoardItem(variables, newIndex) { - const { fromListId, toListId, iid } = variables; + const { fromListId, toListId, iid, itemId } = variables; this.toListId = toListId; await this.$nextTick(); // we need this next tick to retrieve `toList` from Apollo cache - const itemToMove = this.boardListItems.find((item) => item.iid === iid); + const itemToMove = this.boardListItems.find((item) => item.id === itemId); if (this.shouldCloneCard && this.isItemInTheList(iid)) { return; @@ -445,6 +436,7 @@ export default { ...moveItemVariables({ ...variables, isIssue: !this.isEpicBoard, + epicId: itemId, // for Epic Boards boardId: this.boardId, itemToMove, }), @@ -532,7 +524,8 @@ export default { variables: { ...moveItemVariables({ iid: item.iid, - epicId: item.id, + itemId: item.id, + epicId: item.id, // for Epic Boards fromListId: this.currentList.id, toListId: this.currentList.id, isIssue: !this.isEpicBoard, diff --git a/app/assets/javascripts/boards/components/board_list_header.vue b/app/assets/javascripts/boards/components/board_list_header.vue index 0235edd69ac..bedb3a75a70 100644 --- a/app/assets/javascripts/boards/components/board_list_header.vue +++ b/app/assets/javascripts/boards/components/board_list_header.vue @@ -223,9 +223,6 @@ export default { variables() { return this.countQueryVariables; }, - context: { - isSingleRequest: true, - }, error(error) { setError({ error, diff --git a/app/assets/javascripts/boards/components/new_board_button.vue b/app/assets/javascripts/boards/components/new_board_button.vue index f7914c636cc..96cf0fadd6a 100644 --- a/app/assets/javascripts/boards/components/new_board_button.vue +++ b/app/assets/javascripts/boards/components/new_board_button.vue @@ -38,7 +38,7 @@ export default { diff --git a/app/assets/javascripts/ci/common/private/job_links_layer.vue b/app/assets/javascripts/ci/common/private/job_links_layer.vue index 59260ca3f81..9b3647e9c55 100644 --- a/app/assets/javascripts/ci/common/private/job_links_layer.vue +++ b/app/assets/javascripts/ci/common/private/job_links_layer.vue @@ -1,5 +1,6 @@