summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-06-19 18:08:39 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-06-19 18:08:39 +0000
commitce493944f48fb2ad08a5381a7ed1f37ced637bd1 (patch)
tree565c5c3bf18ce60fd6442d7581fc1af7ba148dd1
parente9ea5bbdf998d0bafe14cfd3d70fa545d8ebed83 (diff)
downloadgitlab-ce-ce493944f48fb2ad08a5381a7ed1f37ced637bd1.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--CHANGELOG.md488
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock4
-rw-r--r--app/assets/javascripts/lib/utils/axios_startup_calls.js47
-rw-r--r--app/assets/javascripts/lib/utils/axios_utils.js3
-rw-r--r--app/controllers/application_controller.rb7
-rw-r--r--app/controllers/concerns/filters_events.rb14
-rw-r--r--app/controllers/dashboard/projects_controller.rb1
-rw-r--r--app/controllers/dashboard_controller.rb1
-rw-r--r--app/controllers/groups_controller.rb1
-rw-r--r--app/controllers/projects/pipelines/tests_controller.rb36
-rw-r--r--app/controllers/projects/pipelines_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb1
-rw-r--r--app/finders/user_recent_events_finder.rb9
-rw-r--r--app/graphql/mutations/merge_requests/update.rb39
-rw-r--r--app/graphql/types/mutation_type.rb1
-rw-r--r--app/graphql/types/namespace_type.rb3
-rw-r--r--app/helpers/application_helper.rb9
-rw-r--r--app/helpers/events_helper.rb56
-rw-r--r--app/models/ci/pipeline.rb5
-rw-r--r--app/models/event_collection.rb5
-rw-r--r--app/models/project.rb1
-rw-r--r--app/models/snippet_input_action.rb7
-rw-r--r--app/policies/concerns/find_group_projects.rb4
-rw-r--r--app/policies/group_policy.rb12
-rw-r--r--app/policies/project_policy.rb2
-rw-r--r--app/serializers/test_suite_entity.rb8
-rw-r--r--app/services/event_create_service.rb15
-rw-r--r--app/services/snippets/update_service.rb3
-rw-r--r--app/views/events/_event.html.haml2
-rw-r--r--app/views/events/event/_design.html.haml11
-rw-r--r--app/views/layouts/_head.html.haml2
-rw-r--r--app/views/layouts/_startup_js.html.haml13
-rw-r--r--app/views/projects/_files.html.haml3
-rw-r--r--app/views/shared/_event_filter.html.haml2
-rw-r--r--changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml5
-rw-r--r--changelogs/unreleased/118613-spam-api-call.yml5
-rw-r--r--changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml5
-rw-r--r--changelogs/unreleased/13049-graphql-resolve-discussion.yml5
-rw-r--r--changelogs/unreleased/17555-custom-text-for-badges.yml5
-rw-r--r--changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml5
-rw-r--r--changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml5
-rw-r--r--changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml5
-rw-r--r--changelogs/unreleased/196544-nodemetrics-size.yml5
-rw-r--r--changelogs/unreleased/196630-commit-tab.yml5
-rw-r--r--changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml5
-rw-r--r--changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml5
-rw-r--r--changelogs/unreleased/197426-error-details-timeago-tooltip.yml5
-rw-r--r--changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml5
-rw-r--r--changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml5
-rw-r--r--changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml5
-rw-r--r--changelogs/unreleased/200016-display-downstream-pipeline-errors.yml5
-rw-r--r--changelogs/unreleased/20069-ci-secrets-rake-task.yml5
-rw-r--r--changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml5
-rw-r--r--changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml5
-rw-r--r--changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml5
-rw-r--r--changelogs/unreleased/207257-specify-asset-types-in-releases.yml5
-rw-r--r--changelogs/unreleased/207990-secret-detection-ci-template.yml5
-rw-r--r--changelogs/unreleased/208412-featurable.yml5
-rw-r--r--changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml5
-rw-r--r--changelogs/unreleased/209025-design-filename-limit-migrations.yml6
-rw-r--r--changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml5
-rw-r--r--changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml5
-rw-r--r--changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml5
-rw-r--r--changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml5
-rw-r--r--changelogs/unreleased/210550-conan-export-tgz.yml5
-rw-r--r--changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml5
-rw-r--r--changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml5
-rw-r--r--changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml5
-rw-r--r--changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml5
-rw-r--r--changelogs/unreleased/212848.yml5
-rw-r--r--changelogs/unreleased/212882-add-cpu-mem-charts.yml5
-rw-r--r--changelogs/unreleased/212882-add-instance-variable.yml5
-rw-r--r--changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml6
-rw-r--r--changelogs/unreleased/213587-ide-ipad-scroll-issue.yml5
-rw-r--r--changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml5
-rw-r--r--changelogs/unreleased/213699-remove-search-results-autocomplete.yml5
-rw-r--r--changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml5
-rw-r--r--changelogs/unreleased/213881-alerts-list-pagination.yml5
-rw-r--r--changelogs/unreleased/213923-add-range-var.yml5
-rw-r--r--changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml5
-rw-r--r--changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml5
-rw-r--r--changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml5
-rw-r--r--changelogs/unreleased/214281-modify-dashboard-title.yml5
-rw-r--r--changelogs/unreleased/214370-add-timezone-setting.yml5
-rw-r--r--changelogs/unreleased/214370-extend-metrics-settings.yml5
-rw-r--r--changelogs/unreleased/214493-invaid-uri.yml5
-rw-r--r--changelogs/unreleased/214556-user-defined-alert-identification.yml5
-rw-r--r--changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml5
-rw-r--r--changelogs/unreleased/215497-add-custom-links-to-panel.yml5
-rw-r--r--changelogs/unreleased/215517-tab-docs-ff.yml5
-rw-r--r--changelogs/unreleased/215618_mutation_to_create_a_commit.yml5
-rw-r--r--changelogs/unreleased/215619_add_mutation_to_create_mr.yml5
-rw-r--r--changelogs/unreleased/215658-add-users-graphql.yml5
-rw-r--r--changelogs/unreleased/215658-graphql-memberships.yml5
-rw-r--r--changelogs/unreleased/215658-root-users-query.yml5
-rw-r--r--changelogs/unreleased/215668-settings-auto-fix.yml5
-rw-r--r--changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml5
-rw-r--r--changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml5
-rw-r--r--changelogs/unreleased/216045-capture-todo-resolution.yml5
-rw-r--r--changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml5
-rw-r--r--changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml5
-rw-r--r--changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml5
-rw-r--r--changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml5
-rw-r--r--changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml5
-rw-r--r--changelogs/unreleased/216145-jira-users-import-endpoint.yml5
-rw-r--r--changelogs/unreleased/216145-project-members-graphql.yml5
-rw-r--r--changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml5
-rw-r--r--changelogs/unreleased/216174-track-mr-usage.yml5
-rw-r--r--changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml5
-rw-r--r--changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml5
-rw-r--r--changelogs/unreleased/216640-insert-image-modal.yml5
-rw-r--r--changelogs/unreleased/216677-track-static-site-editor-initializations.yml5
-rw-r--r--changelogs/unreleased/216678-sse-track-merge-requests.yml5
-rw-r--r--changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml5
-rw-r--r--changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml5
-rw-r--r--changelogs/unreleased/216757-add-tags-count.yml5
-rw-r--r--changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml5
-rw-r--r--changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml5
-rw-r--r--changelogs/unreleased/216797-style-toastui-menus.yml5
-rw-r--r--changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml5
-rw-r--r--changelogs/unreleased/216835-instrument-db-calls.yml6
-rw-r--r--changelogs/unreleased/216865-confirm-leave-site.yml5
-rw-r--r--changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml5
-rw-r--r--changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml5
-rw-r--r--changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml5
-rw-r--r--changelogs/unreleased/216939-remove-async-mr-check-ff.yml5
-rw-r--r--changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml5
-rw-r--r--changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml5
-rw-r--r--changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml6
-rw-r--r--changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml5
-rw-r--r--changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml5
-rw-r--r--changelogs/unreleased/217570-improve-performance-for-blame-api.yml5
-rw-r--r--changelogs/unreleased/217616-fix-note-confidential.yml5
-rw-r--r--changelogs/unreleased/217666-prometheus-api-client.yml5
-rw-r--r--changelogs/unreleased/217670-alerts-count.yml5
-rw-r--r--changelogs/unreleased/217680-health-metric-instrumentation.yml5
-rw-r--r--changelogs/unreleased/217680-health-metrics-instrumentation.yml5
-rw-r--r--changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml5
-rw-r--r--changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml5
-rw-r--r--changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml5
-rw-r--r--changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml5
-rw-r--r--changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml5
-rw-r--r--changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml5
-rw-r--r--changelogs/unreleased/217934-snippet-description-files.yml5
-rw-r--r--changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml5
-rw-r--r--changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml5
-rw-r--r--changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml5
-rw-r--r--changelogs/unreleased/218025-xff-is-a-400-error.yml5
-rw-r--r--changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml5
-rw-r--r--changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml5
-rw-r--r--changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml5
-rw-r--r--changelogs/unreleased/218165-add-note-no-extend-ecs.yml5
-rw-r--r--changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml5
-rw-r--r--changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml5
-rw-r--r--changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml5
-rw-r--r--changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml5
-rw-r--r--changelogs/unreleased/218464-expiration-policy-defaults.yml5
-rw-r--r--changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml5
-rw-r--r--changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml5
-rw-r--r--changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml5
-rw-r--r--changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml5
-rw-r--r--changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml5
-rw-r--r--changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml5
-rw-r--r--changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml5
-rw-r--r--changelogs/unreleased/218733-add-manual-rollout-resource-group.yml6
-rw-r--r--changelogs/unreleased/218757-fix-polling-for-events.yml5
-rw-r--r--changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml5
-rw-r--r--changelogs/unreleased/219002-remove-ghost-column.yml5
-rw-r--r--changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml5
-rw-r--r--changelogs/unreleased/219074-safe-link-validation.yml5
-rw-r--r--changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml5
-rw-r--r--changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml5
-rw-r--r--changelogs/unreleased/219210-column-date-format.yml5
-rw-r--r--changelogs/unreleased/219210-stacked-column-date-format.yml5
-rw-r--r--changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml5
-rw-r--r--changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml5
-rw-r--r--changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml6
-rw-r--r--changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml5
-rw-r--r--changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml5
-rw-r--r--changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml5
-rw-r--r--changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml5
-rw-r--r--changelogs/unreleased/220058.yml5
-rw-r--r--changelogs/unreleased/220144-substitute-variables-in-alerts.yml5
-rw-r--r--changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml5
-rw-r--r--changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml5
-rw-r--r--changelogs/unreleased/220192-fix-pagination-pd.yml5
-rw-r--r--changelogs/unreleased/220195-display-epics-on-swimlanes.yml5
-rw-r--r--changelogs/unreleased/220209-optimize-container-repository-query.yml5
-rw-r--r--changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml5
-rw-r--r--changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml5
-rw-r--r--changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml5
-rw-r--r--changelogs/unreleased/220616-group-code-icons-in-toolbar.yml5
-rw-r--r--changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml5
-rw-r--r--changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml5
-rw-r--r--changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml5
-rw-r--r--changelogs/unreleased/221174-graphql-pagination-bug.yml5
-rw-r--r--changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml5
-rw-r--r--changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml5
-rw-r--r--changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml5
-rw-r--r--changelogs/unreleased/22822-ide-paste-images.yml5
-rw-r--r--changelogs/unreleased/22834-ff-merge-msg.yml5
-rw-r--r--changelogs/unreleased/22868-fix-remove-button-alignment.yml5
-rw-r--r--changelogs/unreleased/23352-editorconfig.yml5
-rw-r--r--changelogs/unreleased/25486-batch-suggestions.yml5
-rw-r--r--changelogs/unreleased/25830-find-file-button.yml5
-rw-r--r--changelogs/unreleased/28154-move-controllers-outside-ee.yml5
-rw-r--r--changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml5
-rw-r--r--changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml5
-rw-r--r--changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml5
-rw-r--r--changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml5
-rw-r--r--changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml5
-rw-r--r--changelogs/unreleased/33185-add-missing-install-instruction.yml5
-rw-r--r--changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml5
-rw-r--r--changelogs/unreleased/37412-update-error-tracking-list-message.yml5
-rw-r--r--changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml5
-rw-r--r--changelogs/unreleased/500-metrics-creation.yml5
-rw-r--r--changelogs/unreleased/Fix-spelling-error.yml5
-rw-r--r--changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml5
-rw-r--r--changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml5
-rw-r--r--changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml5
-rw-r--r--changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml5
-rw-r--r--changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml5
-rw-r--r--changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml5
-rw-r--r--changelogs/unreleased/Remove-findissue-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml5
-rw-r--r--changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml5
-rw-r--r--changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml5
-rw-r--r--changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml5
-rw-r--r--changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml5
-rw-r--r--changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml5
-rw-r--r--changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml5
-rw-r--r--changelogs/unreleased/ab-alert-usage-ping.yml5
-rw-r--r--changelogs/unreleased/ab-cleanup-migrations.yml5
-rw-r--r--changelogs/unreleased/ab-monitor-demo-environments-2.yml5
-rw-r--r--changelogs/unreleased/ab-services-partial-indexes.yml5
-rw-r--r--changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml5
-rw-r--r--changelogs/unreleased/add-doc-custom-validators.yml5
-rw-r--r--changelogs/unreleased/add-experience-level-to-user-preferences.yml5
-rw-r--r--changelogs/unreleased/add-global-plans.yml5
-rw-r--r--changelogs/unreleased/add-group-runners-finder.yml5
-rw-r--r--changelogs/unreleased/add-tags-to-queue-attributes.yml5
-rw-r--r--changelogs/unreleased/add_build_reference.yml5
-rw-r--r--changelogs/unreleased/ajk-GQL-user-mrs.yml5
-rw-r--r--changelogs/unreleased/ajk-design-activity-c.yml5
-rw-r--r--changelogs/unreleased/ajk-design-ref-filter.yml5
-rw-r--r--changelogs/unreleased/ajk-gql-add-mr-author.yml5
-rw-r--r--changelogs/unreleased/ajk-gql-labels.yml5
-rw-r--r--changelogs/unreleased/ajk-gql-lookahead.yml5
-rw-r--r--changelogs/unreleased/ajk-gql-mr-resolvers-split.yml5
-rw-r--r--changelogs/unreleased/ajk-gql-mr-update.yml5
-rw-r--r--changelogs/unreleased/ajk-safe-wiki-event-url.yml5
-rw-r--r--changelogs/unreleased/ak-update-google-auth.yml5
-rw-r--r--changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml5
-rw-r--r--changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml5
-rw-r--r--changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml5
-rw-r--r--changelogs/unreleased/alert-assignee-dropdown.yml5
-rw-r--r--changelogs/unreleased/alert-assignee-list-view.yml5
-rw-r--r--changelogs/unreleased/alert-management-mobile-alignment.yml5
-rw-r--r--changelogs/unreleased/alert-system-notes-tool-tip.yml5
-rw-r--r--changelogs/unreleased/alert-system-notes.yml5
-rw-r--r--changelogs/unreleased/alert-table-classes-hotfix.yml5
-rw-r--r--changelogs/unreleased/allow_skipped.yml5
-rw-r--r--changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml5
-rw-r--r--changelogs/unreleased/asciidoc-alignment-roles.yml5
-rw-r--r--changelogs/unreleased/assign-alerts-sidebar-base.yml5
-rw-r--r--changelogs/unreleased/assign-alerts-sidebar-container-fix.yml5
-rw-r--r--changelogs/unreleased/autodevops-secrets.yml5
-rw-r--r--changelogs/unreleased/aws-guidance.yml5
-rw-r--r--changelogs/unreleased/browse-locked-artifact.yml5
-rw-r--r--changelogs/unreleased/bump_ci_auto_deploy_0_16.yml5
-rw-r--r--changelogs/unreleased/bump_cluster_applications_version.yml5
-rw-r--r--changelogs/unreleased/cablett-email-link.yml5
-rw-r--r--changelogs/unreleased/cablett-merge-request-merged-email-ref.yml5
-rw-r--r--changelogs/unreleased/calebw-update-stuck-runner-message.yml5
-rw-r--r--changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml5
-rw-r--r--changelogs/unreleased/chore-bump-omniauth_openid_connect.yml5
-rw-r--r--changelogs/unreleased/chore-styles-removal.yml5
-rw-r--r--changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml5
-rw-r--r--changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml5
-rw-r--r--changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml5
-rw-r--r--changelogs/unreleased/cngo-improve-header-accessibility.yml5
-rw-r--r--changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml5
-rw-r--r--changelogs/unreleased/create-branch-url.yml5
-rw-r--r--changelogs/unreleased/create-ops-ff-issues-table.yml5
-rw-r--r--changelogs/unreleased/curd-auto-merge-in-transaction.yml5
-rw-r--r--changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml5
-rw-r--r--changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml5
-rw-r--r--changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml5
-rw-r--r--changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml5
-rw-r--r--changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml5
-rw-r--r--changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml5
-rw-r--r--changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml5
-rw-r--r--changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml5
-rw-r--r--changelogs/unreleased/design-view-scrolling-issue-bug.yml5
-rw-r--r--changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml5
-rw-r--r--changelogs/unreleased/docs-firefox-u2f-api.yml5
-rw-r--r--changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml5
-rw-r--r--changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml5
-rw-r--r--changelogs/unreleased/docs-u2f-version-history.yml5
-rw-r--r--changelogs/unreleased/downloadable_reports.yml5
-rw-r--r--changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml5
-rw-r--r--changelogs/unreleased/ee-app-services-1.yml5
-rw-r--r--changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml5
-rw-r--r--changelogs/unreleased/emilyring-remove-tf-plan-name.yml5
-rw-r--r--changelogs/unreleased/emilyring-tf-widget-multiple.yml5
-rw-r--r--changelogs/unreleased/enable-atomic-processing-by-default.yml5
-rw-r--r--changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml5
-rw-r--r--changelogs/unreleased/experimentation-cookie-domain.yml5
-rw-r--r--changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml5
-rw-r--r--changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml5
-rw-r--r--changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml5
-rw-r--r--changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml5
-rw-r--r--changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml5
-rw-r--r--changelogs/unreleased/filter-from-url-query-params-pipeline.yml5
-rw-r--r--changelogs/unreleased/filter-pipelines-by-status.yml5
-rw-r--r--changelogs/unreleased/filter-pipelines-by-tag-name.yml5
-rw-r--r--changelogs/unreleased/fix-atomic-processing-lock-version.yml5
-rw-r--r--changelogs/unreleased/fix-design-notes-filename-duplication.yml5
-rw-r--r--changelogs/unreleased/fix-design-todos-filename-duplication.yml5
-rw-r--r--changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml5
-rw-r--r--changelogs/unreleased/fix-group-transfer-to-subgroup.yml5
-rw-r--r--changelogs/unreleased/fix-invalid-error-tracking-method.yml5
-rw-r--r--changelogs/unreleased/fix-max_import_size.yml5
-rw-r--r--changelogs/unreleased/fix-omniauth-buttons-js.yml5
-rw-r--r--changelogs/unreleased/fix-pagination-link.yml5
-rw-r--r--changelogs/unreleased/fix-runner-hearbeat.yml5
-rw-r--r--changelogs/unreleased/fix-selecting-status-emoji-twice.yml5
-rw-r--r--changelogs/unreleased/fix-typo-issues-limit-settings-template.yml5
-rw-r--r--changelogs/unreleased/fix-vertically-center-action-icon.yml5
-rw-r--r--changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml5
-rw-r--r--changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml5
-rw-r--r--changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml5
-rw-r--r--changelogs/unreleased/fix_mr_note_label_urls.yml5
-rw-r--r--changelogs/unreleased/fix_nil_class_for_bytesize_error.yml5
-rw-r--r--changelogs/unreleased/fix_preconnect_typo.yml5
-rw-r--r--changelogs/unreleased/fj-218516-add-validation-to-move-action.yml5
-rw-r--r--changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml5
-rw-r--r--changelogs/unreleased/fj-add-snippet-file-input-action.yml5
-rw-r--r--changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml5
-rw-r--r--changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml5
-rw-r--r--changelogs/unreleased/fj-add-validations-snippet-input-action.yml5
-rw-r--r--changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml5
-rw-r--r--changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml5
-rw-r--r--changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml5
-rw-r--r--changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml5
-rw-r--r--changelogs/unreleased/fj-fix-import-from-different-types-exports.yml5
-rw-r--r--changelogs/unreleased/fj-fix-single-param-update.yml5
-rw-r--r--changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml5
-rw-r--r--changelogs/unreleased/fj-fix-snippet-import-from-database.yml5
-rw-r--r--changelogs/unreleased/fj-fix-snippet-import-when-fails.yml5
-rw-r--r--changelogs/unreleased/followup-leakyconst-master-check.yml5
-rw-r--r--changelogs/unreleased/fox-comment-icons-commits.yml5
-rw-r--r--changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml5
-rw-r--r--changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml5
-rw-r--r--changelogs/unreleased/gitlab-ui-badge-integration-2.yml5
-rw-r--r--changelogs/unreleased/gl-cluster-applications-json.yml6
-rw-r--r--changelogs/unreleased/id-code-nav-500-error.yml5
-rw-r--r--changelogs/unreleased/id-code-navigation-enable-feature.yml5
-rw-r--r--changelogs/unreleased/improve_issue_labels_api.yml5
-rw-r--r--changelogs/unreleased/improve_storage_move_workflow.yml5
-rw-r--r--changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml5
-rw-r--r--changelogs/unreleased/instance-variables-ui.yml5
-rw-r--r--changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml5
-rw-r--r--changelogs/unreleased/issue-bulk-update.yml5
-rw-r--r--changelogs/unreleased/jc-pick-weighted-repository.yml5
-rw-r--r--changelogs/unreleased/jc-show-all-storages.yml5
-rw-r--r--changelogs/unreleased/jc-ui-repository-storages-weighted.yml5
-rw-r--r--changelogs/unreleased/jc-weighted-repository-storages.yml5
-rw-r--r--changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml6
-rw-r--r--changelogs/unreleased/jdb-mutliline-comment-fe.yml5
-rw-r--r--changelogs/unreleased/jej-api-for-root-groups.yml5
-rw-r--r--changelogs/unreleased/jh-drop_jid_null_constraint.yml5
-rw-r--r--changelogs/unreleased/jh-group_import_status.yml5
-rw-r--r--changelogs/unreleased/jh-group_import_ui_frontend.yml5
-rw-r--r--changelogs/unreleased/jh-rate_limit_project_export.yml5
-rw-r--r--changelogs/unreleased/jira-projects-api-wrapper.yml5
-rw-r--r--changelogs/unreleased/jivanvl-add-snowplow-logs.yml5
-rw-r--r--changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml5
-rw-r--r--changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-11.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-14.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-22.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-28.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-29.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-3.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-30.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-32.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-33.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-34.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-36.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-37.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-38.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-39.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-5.yml5
-rw-r--r--changelogs/unreleased/leaky-constant-fix-9.yml5
-rw-r--r--changelogs/unreleased/lm-change-sorting.yml5
-rw-r--r--changelogs/unreleased/lm-hover-state-sort.yml5
-rw-r--r--changelogs/unreleased/lm-sorting-list.yml5
-rw-r--r--changelogs/unreleased/long-path-mr-bug.yml5
-rw-r--r--changelogs/unreleased/markdown-toolbar-list-style.yml5
-rw-r--r--changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml5
-rw-r--r--changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml5
-rw-r--r--changelogs/unreleased/mg-fix-katex-fonts.yml5
-rw-r--r--changelogs/unreleased/mo-add-build-report-result.yml5
-rw-r--r--changelogs/unreleased/move_migration_to_post_deployment.yml5
-rw-r--r--changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml5
-rw-r--r--changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml5
-rw-r--r--changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml6
-rw-r--r--changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml5
-rw-r--r--changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml5
-rw-r--r--changelogs/unreleased/nfriend-fix-release-button-alignment.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml5
-rw-r--r--changelogs/unreleased/notes-ee-feature.yml5
-rw-r--r--changelogs/unreleased/ntepluhina-fix-note-scrolling.yml5
-rw-r--r--changelogs/unreleased/optimize-milestones-page.yml5
-rw-r--r--changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml5
-rw-r--r--changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml5
-rw-r--r--changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml5
-rw-r--r--changelogs/unreleased/osw-separate-redis-logs.yml6
-rw-r--r--changelogs/unreleased/perf-use-build-stubbed.yml5
-rw-r--r--changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml5
-rw-r--r--changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml5
-rw-r--r--changelogs/unreleased/psi-dark-theme.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-1.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-10.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-11.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-12.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-13.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-14.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-15.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-16.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-17.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-18.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-19.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-2.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-20.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-21.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-22.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-23.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-3.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-4.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-5.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-6.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-7.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-8.yml5
-rw-r--r--changelogs/unreleased/rails-logger-cop-9.yml5
-rw-r--r--changelogs/unreleased/rc-add_dashboard_timezone.yml5
-rw-r--r--changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml5
-rw-r--r--changelogs/unreleased/reduce-repo-size.yml5
-rw-r--r--changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml5
-rw-r--r--changelogs/unreleased/remove-a11y-widget-ff.yml5
-rw-r--r--changelogs/unreleased/remove-redundant-modsecurity-indexes.yml5
-rw-r--r--changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml5
-rw-r--r--changelogs/unreleased/replace-slot-for-vue-3-migration.yml5
-rw-r--r--changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml5
-rw-r--r--changelogs/unreleased/rf-brakeman-to-core.yml5
-rw-r--r--changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml5
-rw-r--r--changelogs/unreleased/rspec-rails-fast-failure-template.yml5
-rw-r--r--changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml5
-rw-r--r--changelogs/unreleased/schedule_storage_move_api.yml5
-rw-r--r--changelogs/unreleased/services-usage-1.yml5
-rw-r--r--changelogs/unreleased/services-usage-2.yml5
-rw-r--r--changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml5
-rw-r--r--changelogs/unreleased/sh-avoid-extra-route-reload.yml5
-rw-r--r--changelogs/unreleased/sh-extend-remember-me-token.yml5
-rw-r--r--changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml5
-rw-r--r--changelogs/unreleased/sh-fix-delete-blob-failure.yml5
-rw-r--r--changelogs/unreleased/sh-fix-issue-219991.yml5
-rw-r--r--changelogs/unreleased/sh-update-workhorse-8-34-0.yml5
-rw-r--r--changelogs/unreleased/sh-workhorse-direct-access-upload.yml5
-rw-r--r--changelogs/unreleased/show-redis-instance-in-performance-bar.yml5
-rw-r--r--changelogs/unreleased/show_build_status_in_branch_list.yml5
-rw-r--r--changelogs/unreleased/show_estimate_on_issues_list.yml5
-rw-r--r--changelogs/unreleased/sidekiq-arguments-logging-tokens.yml5
-rw-r--r--changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml5
-rw-r--r--changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml5
-rw-r--r--changelogs/unreleased/switch-diff-view-fix.yml6
-rw-r--r--changelogs/unreleased/sy-publish-command.yml6
-rw-r--r--changelogs/unreleased/sy-publish-status-ui-fe.yml5
-rw-r--r--changelogs/unreleased/templates-current-folder-fix.yml5
-rw-r--r--changelogs/unreleased/tidy_put_projects_issues_spec.yml5
-rw-r--r--changelogs/unreleased/tr-avoid-alert-refetch.yml5
-rw-r--r--changelogs/unreleased/tr-fix-broken-incident-link.yml5
-rw-r--r--changelogs/unreleased/tr-reword-alert-service.yml5
-rw-r--r--changelogs/unreleased/track-pod-logs-refresh-action.yml5
-rw-r--r--changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml5
-rw-r--r--changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml5
-rw-r--r--changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml5
-rw-r--r--changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml5
-rw-r--r--changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml5
-rw-r--r--changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml5
-rw-r--r--changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml5
-rw-r--r--changelogs/unreleased/update-index-artifacts-expire.yml6
-rw-r--r--changelogs/unreleased/update-validates-hostname-gem.yml5
-rw-r--r--changelogs/unreleased/update-workhorse-version-master.yml5
-rw-r--r--changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml5
-rw-r--r--changelogs/unreleased/vs-fix-account-delete-plural-msg.yml5
-rw-r--r--changelogs/unreleased/xanf-use-new-import-ui-templates.yml5
-rw-r--r--config/routes/pipelines.rb6
-rw-r--r--doc/api/feature_flags.md3
-rw-r--r--doc/api/graphql/reference/gitlab_schema.graphql70
-rw-r--r--doc/api/graphql/reference/gitlab_schema.json201
-rw-r--r--doc/api/graphql/reference/index.md12
-rw-r--r--doc/development/feature_flags/development.md4
-rw-r--r--doc/development/feature_flags/process.md15
-rw-r--r--doc/user/infrastructure/img/terraform_plan_widget_v13_2.pngbin0 -> 42227 bytes
-rw-r--r--doc/user/infrastructure/index.md67
-rw-r--r--doc/user/project/issues/design_management.md32
-rw-r--r--doc/user/project/operations/feature_flags.md174
-rw-r--r--doc/user/project/protected_tags.md2
-rw-r--r--lib/api/pipelines.rb2
-rw-r--r--lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb24
-rw-r--r--lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb15
-rw-r--r--lib/event_filter.rb20
-rw-r--r--lib/gitlab/ci/reports/test_report_summary.rb49
-rw-r--r--lib/gitlab/ci/reports/test_suite_summary.rb45
-rw-r--r--lib/kramdown/converter/commonmark.rb69
-rw-r--r--lib/kramdown/parser/atlassian_document_format.rb381
-rw-r--r--lib/object_storage/direct_upload.rb10
-rw-r--r--locale/gitlab.pot3
-rw-r--r--package.json2
-rw-r--r--public/robots.txt87
-rw-r--r--spec/controllers/dashboard/projects_controller_spec.rb42
-rw-r--r--spec/controllers/dashboard_controller_spec.rb22
-rw-r--r--spec/controllers/groups_controller_spec.rb42
-rw-r--r--spec/controllers/projects/pipelines/tests_controller_spec.rb58
-rw-r--r--spec/controllers/projects_controller_spec.rb37
-rw-r--r--spec/factories/ci/builds.rb6
-rw-r--r--spec/factories/ci/pipelines.rb8
-rw-r--r--spec/factories/events.rb2
-rw-r--r--spec/features/projects/activity/user_sees_design_activity_spec.rb78
-rw-r--r--spec/finders/user_recent_events_finder_spec.rb29
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json24
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md2
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json72
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md8
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json46
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md17
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json24
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md2
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json964
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md220
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json66
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md4
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json22
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md3
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/heading.json91
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/heading.md12
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json46
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md13
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json16
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json13
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json28
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json44
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md6
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json59
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md10
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json42
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md4
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/mention.json44
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/mention.md4
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json151
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md20
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/panel.json117
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/panel.md12
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json28
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md4
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/rule.json9
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/rule.md2
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json56
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md3
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json53
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md2
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/table.json55
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/table.md18
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json40
-rw-r--r--spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md2
-rw-r--r--spec/graphql/mutations/merge_requests/update_spec.rb68
-rw-r--r--spec/graphql/types/namespace_type_spec.rb2
-rw-r--r--spec/helpers/application_helper_spec.rb10
-rw-r--r--spec/helpers/events_helper_spec.rb129
-rw-r--r--spec/javascripts/fly_out_nav_browser_spec.js (renamed from spec/javascripts/fly_out_nav_spec.js)4
-rw-r--r--spec/javascripts/vue_shared/components/tooltip_on_truncate_browser_spec.js (renamed from spec/javascripts/vue_shared/components/tooltip_on_truncate_spec.js)4
-rw-r--r--spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb28
-rw-r--r--spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb15
-rw-r--r--spec/lib/event_filter_spec.rb19
-rw-r--r--spec/lib/gitlab/ci/reports/test_report_summary_spec.rb90
-rw-r--r--spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb79
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml1
-rw-r--r--spec/lib/kramdown/parser/atlassian_document_format_spec.rb77
-rw-r--r--spec/lib/object_storage/direct_upload_spec.rb32
-rw-r--r--spec/models/ci/pipeline_spec.rb33
-rw-r--r--spec/models/event_collection_spec.rb35
-rw-r--r--spec/models/snippet_input_action_spec.rb10
-rw-r--r--spec/policies/group_policy_spec.rb57
-rw-r--r--spec/policies/project_policy_spec.rb22
-rw-r--r--spec/serializers/test_suite_entity_spec.rb56
-rw-r--r--spec/services/event_create_service_spec.rb17
-rw-r--r--spec/services/snippets/update_service_spec.rb12
610 files changed, 7382 insertions, 714 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 196f184f924..da2f5700b3d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,494 +2,6 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
-## 13.1.0 (2020-06-22)
-
-### Removed (4 changes, 2 of them are from the community)
-
-- Remove deprecated dashboard & group milestone pages. !13237
-- Removed UltraAuth integration for OmniAuth. !29330 (Kartikey Tanna)
-- Remove all search autocomplete for groups/projects/other. !31187
-- Remove temporary datepicker position fix as it is no longer required. !31836 (Arun Kumar Mohan)
-
-### Fixed (154 changes, 57 of them are from the community)
-
-- Fix 'Active' checkbox text in Pipeline Schedule form to be a label. !27054 (Jonston Chan)
-- Fix back button when switching MR tabs. !29862 (Lee Tickett)
-- Remove ability to scroll Issue while in Design View. !29881
-- Fix merge request note label URLs. !30428 (Lee Tickett)
-- Fix default path when creating project from group template. !30597 (Lee Tickett)
-- Group authorization refresh to consider shared groups. !31204
-- Fix group transfer service to deny moving group to its subgroup. !31495 (Abhisek Datta)
-- Fix issuable listings with any label filter. !31729
-- Move prepend to last in ee-app-services. !31838 (Rajendra Kadam)
-- Fallback to lowest visibility level in snippet visibility radio. !31847 (Jacopo Beschi @jacopo-beschi)
-- Add class stubs and fix leaky constant alert in query limit helper spec. !31949 (Rajendra Kadam)
-- Remove usage of spam constants in spec. !31959 (Rajendra Kadam)
-- Fix leaky constant issue in uninstall progress service check. !32036 (Rajendra Kadam)
-- Fix leaky constant issue in commit entity spec. !32039 (Rajendra Kadam)
-- Fix leaky constant issue in task completion status spec. !32043 (Rajendra Kadam)
-- Fix leaky constant issue in admin mode migration spec. !32074 (Rajendra Kadam)
-- Fix leaky constant issue in sidekiq middleware server metric spec. !32104 (Rajendra Kadam)
-- Fix leaky constant issue in sidekiq middleware client metric spec. !32108 (Rajendra Kadam)
-- Fix leaky constant issue in path regex spec. !32115 (Rajendra Kadam)
-- Fix leaky constant issue importer and cache headers spec. !32122 (Rajendra Kadam)
-- Fix leaky constant issue in relation factory spec. !32129 (Rajendra Kadam)
-- Fix leaky constant issue in test coverage spec. !32134 (Rajendra Kadam)
-- Prevent emails to user on expiry of impersonation token. !32140
-- Fix leaky constant issue in diff collection spec. !32163 (Rajendra Kadam)
-- Fix leaky constant issue in migration helpers, with lock retries and ignored cols spec. !32170 (Rajendra Kadam)
-- Fix leaky constant issue in factory spec. !32174 (Rajendra Kadam)
-- Fix leaky constant issue in creds factory spec. !32176 (Rajendra Kadam)
-- Use applogger in project import state file. !32182 (Rajendra Kadam)
-- Use applogger in project.rb. !32183 (Rajendra Kadam)
-- Use applogger in chat_team.rb. !32184 (Rajendra Kadam)
-- Use applogger in repository model. !32185 (Rajendra Kadam)
-- Use applogger in build and ssh host key. !32187 (Rajendra Kadam)
-- Use applogger in cache attrs and highest role ruby files. !32189 (Rajendra Kadam)
-- Use applogger in legacy project and namespace. !32190 (Rajendra Kadam)
-- Use applogger in base.rb. !32191 (Rajendra Kadam)
-- Use applogger in usage ping and webhook service. !32192 (Rajendra Kadam)
-- Use applogger in exclusive_lease_guard. !32194 (Rajendra Kadam)
-- Use applogger in groups destroy service and label create service. !32195 (Rajendra Kadam)
-- Use applogger in merge_service.rb. !32196 (Rajendra Kadam)
-- Use applogger in project create service and after import service. !32198 (Rajendra Kadam)
-- Use applogger in update stats service. !32200 (Rajendra Kadam)
-- Use applogger in base attachment service. !32201 (Rajendra Kadam)
-- Use applogger in export service. !32203 (Rajendra Kadam)
-- Use applogger in akismet service. !32205 (Rajendra Kadam)
-- Use applogger in file mover file. !32206 (Rajendra Kadam)
-- Use applogger in commit signature worker. !32207 (Rajendra Kadam)
-- Use applogger in delete user worker. !32209 (Rajendra Kadam)
-- Use applogger in email receiver worker. !32211 (Rajendra Kadam)
-- Use applogger in artifact worker. !32212 (Rajendra Kadam)
-- Use applogger in new note worker. !32213 (Rajendra Kadam)
-- Fix duplicate filename displayed in design todos. !32274 (Arun Kumar Mohan)
-- Add value length validations for instance level variable. !32303
-- Resolve image overflow at releases list panel. !32307
-- Clean up shared/tmp folder after Import/Export. !32326
-- Fix creating release evidence if release is created via UI. !32441
-- GraphQL hasNextPage and hasPreviousPage return correct values. !32476
-- Fix loading and empty state styling for alerts list. !32531
-- Resolve incorrect x-axis padding on the Environments Dashboard. !32533
-- Fix time_tracking help link. !32552
-- Don't display confidential note icon on confidential issue public notes. !32571
-- Update container expiration policy database defaults. !32600
-- Fix rendering of emojis in status tooltips. !32604
-- Hid copy contents button when blob has rendering error. !32632
-- Avoid refresh to show endedAt after mutation. !32636
-- Fix for metrics creation when saving MR. !32668
-- Skip the individual JIRA issues if failed to import vs failing the whole batch. !32673
-- Hide "Import from Jira" option from non-entitled users. !32685
-- Fix broken help link on operations settings page. !32722
-- Allow different in bulk editing issues. !32734
-- Fix whitespace changes overgrowing the diff container. !32774
-- Improve spacing and wrapping of group actions buttons and stats in group list view. !32786
-- Fix "Broadcast Messages" table overflow and button alignment. !32801
-- Fix 404 when downloading a non-archive artifact. !32811
-- Make commits author button confirm to Pajamas specs. !32821
-- Fix filename duplication in design notes in activity feeds. !32823 (Arun Kumar Mohan)
-- Prevent multiple Auto DevOps deployment jobs running concurrently when using manual rollout. !32824
-- Implement displaying downstream pipeline error details. !32844
-- Fix Runner heartbeats that results in considering them offline. !32851
-- Conan package registry support for the conan_export.tgz file. !32866
-- Fix plural message in account deletion section. !32868
-- Fix atomic processing bumping a lock_version. !32914
-- AsciiDoc: Add support for built-in alignment roles. !32928 (mnrvwl)
-- Fix a bug where some Vue apps would be unable to load when DAG tab is disabled. !32966
-- Fix undefined error in Gitlab::Git::Diff. !32967
-- Fix spelling error on Ci::RunnersFinder. !32985 (Arthur de Lapertosa Lisboa)
-- Fix polling for resource events. !33025
-- Fix broken CSS classes inside alert management list. !33038
-- Fix bug in snippet create mutation with non ActiveRecord errors. !33085
-- Fix overflow issue in MR and Issue comments. !33100
-- Fix alignment of button text on the Edit Release page. !33104
-- Deduplicate URL parameters when requesting merge request diffs which causes diffs load to fail. !33117
-- Fix tabbing through form fields in projects/new flow. !33209
-- Fix incorrect commit search results returned when searching with ref. !33216
-- Fix NoMethodError by using the correct method to report exceptions to Sentry. !33260
-- Fix KaTeX font paths. !33338
-- Resolve Fix Incomplete Kubernetes Cluster Status List. !33344
-- Fix auto-merge not running after discussions resolved. !33371
-- Fix bug in snippets updating only file_name or content. !33375
-- Fix invisible emoji modal on Set Status form when clicked the second time. !33398
-- vertically center action icon in the CI pipeline. !33427 (Nathanael Weber)
-- Wrap auto merge parameters update in database transaction. !33471
-- Return 404 response when redirecting request with invalid url. !33492
-- Fix ambiguous string concatenation on CleanupProjectsWithMissingNamespace. !33497
-- Fix snippet repository import edge cases. !33506
-- Rust CI template: Replace --all with --workspace on cargo test. !33517 (Markus Becker)
-- Make markdown textarea links tab-accessible. !33518
-- Pass hard delete option to snippets bulk destroy. !33520
-- Fix CI rules for ECS related jobs. !33527
-- Update GitLab Workhorse to v8.34.0. !33543
-- Fix snippet repository import fail with older export files. !33584
-- Web IDE: Create template files in the folder from which new file request was made. !33585 (Ashesh Vidyut)
-- Improve header acccessibility. !33603
-- Remove non migrated snippets from failed imports. !33621
-- Prevent duplicate issues when importing from CSV. !33626
-- Fix sidebar spacing for alert details. !33630
-- Fix linking alerts to created issues for the Generic alerts intergration. !33647
-- Resolve spacing ux debt on Release assets form field. !33684
-- Fix pagination link header. !33714 (Max Wittig)
-- Fix Value Stream Analytics summary when using non-english locale. !33717
-- Fix bug with variable substitution in alerts. !33772
-- Allow wiki pages with +<> characters in their title to be saved. !33803
-- Fix force_remove_source_branch not working in API. !33804
-- Fix prometheus alerts not being automatically created. !33806
-- Fix pagination for resource label events. !33821
-- Fix relative URL root in wiki_base_path. !33841
-- Return code navigation path for nil diff_refs. !33850
-- Record audit event when an admin creates a new SSH Key for a user via the API. !33859 (Rajendra Kadam)
-- Do not create duplicate issues for exising Alert Management alerts. !33860
-- Add link text to collapsed left sidebar links for screen readers. !33866
-- Update text in error tracking list error message. !33872
-- Adjust wrong column reference for ResetMergeStatus (background job). !33899
-- Fixed dashboard YAML file validaiton for files which do not contain object as root element. !33935
-- Fix design note scrolling. !33939
-- Update validates_hostname gem with support for more TLDs. !34010
-- Update wording of addMultipleToDiscussionWarning. !34088
-- Show all storages in settings. !34093
-- Set author as nullable in snippet GraphQL Type. !34135
-- Fix rendering of very long paths in merge request file tree. !34153
-- Remove not null constraint from events tables. !34190
-- Ensure we always generate a valid wiki event URL. !34191
-- Send information about attached files to the GraphQL mutation. !34221
-- Update issue limits template to use minutes. !34254
-- Add route for the lost-and-found group and update the route of orphaned projects. !34285
-- GraphQL - properly handle pagination of millisecond-precision timestamps. !34352
-- Fix 500 error in BlobController#delete. !34367
-- Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup, a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31. !34399 (verenion)
-- Fix issues with scroll on iOS / iPad OS. !34486
-- Fix order of integrations to be sorted alphabetically. !34501
-- Fix undefined method error. !34522
-- Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API. !34535 (Rajendra Kadam)
-- Removed default artifact name for Terraform template. !34557
-- Footer system message fix.
-- Set experiementation cookie for GitLab domain only.
-- Add DS detection of build.gradle.kts.
-
-### Changed (76 changes, 5 of them are from the community)
-
-- Add a GraphQL endpoint to fetch Jira projects through its REST API. !28190
-- Change legends in monitor dashboards to tabular layout. !30131
-- Move pipelines routing under /-/ scope. !30730
-- Set markdown toolbar to use hyphens for lists. !31426
-- Use sprites for comment icons on Commits. !31696
-- Rate limit project export by user. !31719
-- Reorder diffs compare versions dropdowns. !31770 (Gilang Gumilar)
-- Enable the `in this group` action in the Search dropdown. !31939
-- Externalize i18n strings from ./app/views/shared/_promo.html.haml. !32109 (Gilang Gumilar)
-- Add Usage Ping count for all searches. !32111
-- Add tags_count to container registry api and controller. !32141
-- Externalize i18n strings from ./app/views/shared/milestones/_sidebar.html.haml. !32150 (Gilang Gumilar)
-- Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml. !32162 (Gilang Gumilar)
-- Improve Container Registry UI header. !32424
-- Added node size to cluster index. !32435
-- Update operations metrics settings title and description to make them general. !32494
-- Track merge_requests_users usage data. !32562
-- Adds cluster CPU and Memory to cluster index. !32601
-- Allow the snippet create service to accept an array of files. !32649
-- Move review related controllers/workers outside EE. !32663
-- Move the Members section from settings to the side nav for projects. !32667
-- Show more context in unresolved jump button. !32737
-- Exclude extra.server fields from exceptions_json.log. !32770
-- Improve new/unknown sign-in email styling. !32808
-- Allow the snippet update service to accept an array of files. !32832
-- Add new issue link to email notification header. !32833
-- Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium to 1.7.4. !32931
-- Update artifacts section to show when an artifact is locked. !32992
-- Include tag count in the image repository list. !33027
-- Clean up gitlab-shell install-from-source path. !33057
-- Increase LFS token default time to 2 hours. !33140
-- Add explicit mention of Merge request in Slack message. !33152
-- Expose `release_links.type` via API. !33154
-- Add link_type column to release_links table. !33156
-- Move broadcast notification dismiss button to the top. !33174
-- Remove null constraint for JID in GroupImportState. !33181
-- Added provider type icon to cluster list. !33196
-- Remove search icon from Project find file button. !33198
-- Refine SAST language detection by frameworks. !33226
-- Render Merge request reference as link. !33248
-- Upgrade to Gitaly v13.1.0-rc1. !33302
-- Show disabled suggestion button with tooltip message. !33357
-- Add update validations to SnippetInputAction. !33379
-- Add snippet DB visibility check in spec. !33388 (Jacopo Beschi @jacopo-beschi)
-- Add Hugo logo to project templates. !33402
-- Add GitBook logo to project templates. !33403
-- Add GoMicro logo to project templates. !33404
-- Add Jekyll logo to project templates. !33405
-- Add Hexo logo to project templates. !33406
-- Rename Add Designs button. !33491
-- Add CPU, memory usage charts to self monitoring default dashboard. !33532
-- Add database migrations to design_management_designs.filename to enforce a 255 character limit, and modify any filenames that exceed that limit. !33565
-- Track Sentry error status updates with dedicated actions. !33623
-- Alert Managament: Change sorting order to have newest alerts first. !33642
-- Add blobs field to SnippetType in GraphQL. !33657
-- Format metrics column chart x axis dates. !33681
-- Style ToastUI contextual menus. !33719
-- Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG. !33799
-- Add whether instance has Auto DevOps enabled to usage ping. !33811
-- Update local IP address and domain name allow list input label. !33812
-- Add date time format to the monitor stacked-column chart. !33814
-- Allow Tf Plan to genrate multiple reports. !33867
-- Remove async_merge_request_check_mergeability feature flag. !33917
-- Filter potentially-sensitive Sidekiq arguments from logs and Sentry. !33967
-- Update Static Site Editor toolbar to group inline-code and code-block buttons together. !34006
-- Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS. !34076
-- Add ability to filter self monitoring resource usage charts by instance name. !34084
-- Pick repository storage based on weight. !34095
-- Display error for YAML files that are too large. !34199
-- Change copy of webhooks / integration help text. !34301
-- Update board header icons. !34366
-- Show Redis instance in performance bar. !34377
-- Add secret detection template to Auto DevOps. !34467
-- Add allowed actions to snippet input action. !34499
-- Change from vendor specific to Gitlab. !34576
-- Assign alerts sidebar base.
-
-### Performance (19 changes, 1 of them is from the community)
-
-- Improve performance of commit search by limiting the number of results requested. !32260
-- Add GraphQL lookahead support. !32373
-- Update index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial index for secret_detection. !32584
-- Add index on id and type for Snippets. !32885
-- Use build_stubbed to avoid interacting with the DB in todos helper specs. !32906 (Arun Kumar Mohan)
-- Optimize SQL queries on Milestone index page. !32953
-- Add build report results data model. !32991
-- Adjust condition for partial indexes on services table. !33044
-- Add index to issues and epics on last_edited_by_id. !33075
-- Fix preconnect typo in rel link. !33255
-- Add project_id, user_id, status, ref index to ci_pipelines. !33290
-- Move migration related to ci_builds to post_deployment. !33416
-- Reduce redundant queries for Search API users scope. !33795
-- Speed up boot time in production. !33929
-- Harden CI pipelines usage data queries with an index. !34045
-- Add partial index on locked merge requets. !34127
-- Lazy load commit_date and authored_date on Commit. !34181
-- Optimize container repository for groups query. !34364
-- Enable CI Atomic Processing by default.
-
-### Added (149 changes, 14 of them are from the community)
-
-- Add rake task to verify encrypted data through secrets. !21851
-- User can apply multiple suggestions at the same time. !22439 (Jesse Hall)
-- Resolve Add a button to assign users who have commented on an issue. !23883
-- Resolve Graph code coverage changes over time for a project. !26174
-- Add doc for custom validators in api styleguide. !26734 (Rajendra Kadam)
-- Add Scheduled Job for Monitoring Monitor Group Demo Environments. !27360
-- Add setting to allow merge on skipped pipeline. !27490 (Mathieu Parent)
-- Add dark theme (alpha). !28252
-- Show estimate on issues list. !28271 (Lee Tickett)
-- Make Fixed Email Notification Generally Available. !28338 (jacopo-beschi)
-- Add a link to the `renamed` viewer to fully expand the renamed file (if it's text). !28448
-- Focus and toggle metrics dashboard panels via keyboard. !28603
-- Remove `scoped_approval_rules` feature flag. !28864 (Lee Tickett)
-- Create Group import UI for creating new Groups. !29271
-- Add finder for group-level runners. !29283 (Arthur de Lapertosa Lisboa)
-- Allow customization of badge key_text and key_width. !29381 (Fabian Schneider @fabsrc)
-- Support Workhorse directly uploading files to S3. !29389
-- Add frontend support for multiline comments. !29516
-- Support first_name and last_name attributes in LDAP user sync. !29542
-- Add link to status page detail view for status page published issues. !30249
-- Add metrics dashboard name to document title. !30392
-- Backfill StatusPage::Published incidents and enable a publish quick action for EE. !30906
-- Add missing Merge Request fields. !30935
-- Show build status on branch list. !30948 (Lee Tickett)
-- Add mutation to create commits in GraphQL. !31102
-- Add GraphQL support for authored and assigned Merge Requests. !31227
-- Add usage data metrics for terraform states. !31280
-- Add usage data metrics for terraform reports. !31281
-- Add API endpoint for listing bridge jobs. !31370 (Abhijith Sivarajan)
-- SpamVerdictService can call external spam check endpoint. !31449
-- Move Admin note feature to GitLab Core. !31457 (Rajendra)
-- Add DAG serializer for pipelines controller. !31583
-- Save repository storages in application settings with weights. !31645
-- Add API endpoint for resource milestone events. !31720
-- Show import in progress screen for group imports. !31731
-- Add Verify/FailFast CI template. !31812
-- Improve Add/Remove Issue Labels API. !31864 (Lee Tickett)
-- Add mutation to create a merge request in GraphQL. !31867
-- Add warning popup for Elastic Stack update. !31972
-- Add API support for sharing groups with groups. !32008
-- Add the container expiration policy attribute to the project GraphQL type. !32100
-- Add GraphQL support for project and group labels. !32113
-- Add number of database calls to Prometheus metrics and logs for sidekiq and request. !32131
-- Filter pipelines by status. !32151
-- Filter pipelines based on url query params. !32230
-- Add metrics for Redis usage during Sidekiq job execution. !32265
-- Add filters to merge request fields. !32328
-- Support reading .editorconfig files inside of the Web IDE. !32378
-- [Frontend] Resolvable design discussions. !32399
-- Table index added to `metrics_dashboard_annotations` for future pruning of stale metrics Annotations for metrics dashboards are now checked for valid start and end dates. !32433
-- Enable GitLab-Flavored Markdown processing for design links. !32446
-- Filter Pipelines by Tag Name. !32470
-- Adds sorting by column to alert management list. !32478
-- Add project specific repository storage API. !32493
-- Adapt Limitable for system-wide features. !32574
-- Add application limits to instance level CI/CD variables. !32575
-- Add model for project level security auto-fix settings. !32577
-- Expose Jira imported issues count in GraphQL. !32580
-- Organize alerts by status tabs. !32582
-- Add note to ECS CI template. !32597
-- Add metrics for Redis usage during web requests. !32605
-- Add database and GraphQL support for alert assignees. !32609
-- Set fingerprints and increment events count for Alert Management alerts. !32613
-- Process stuck jira import jobs. !32643
-- Allow user to add custom links to their metrics dashboard panels. !32646
-- Add tags to experimental queue selector attributes. !32651
-- Allow generic endpoint to receive alerts from external Prometheus. !32676
-- Customize the Cloud Native Buildpack builder used with Auto Build. !32691
-- Add timezone display to alert based issue start time. !32702
-- Display dates on metrics dashboards in UTC time zone. !32746
-- Store Todo resolution method. !32753
-- Add experience_level to user_preferences. !32784
-- Remove metrics dashboard annotations attached to time periods older than two weeks. !32838
-- Monitor:Health metrics instrumenation. !32846
-- Adds PostHog as a CI/CD Managed Application. !32856
-- Groups API has top_level_only option to exclude subgroups. !32870
-- Create operations_feature_flags_issues table. !32876
-- Add api.js methods to update issues and merge requests. !32893
-- Render user-defined links in dashboard yml file on metrics dashboard. !32895
-- Add accessibility report MR widget. !32902
-- Add a GraphQL mutation for toggling the resolved state of a Discussion. !32934
-- Add container expiration policy objects to the GraphQL API. !32944
-- Don't hide Commit tab in Web IDE when there are no changes yet. !32979
-- Add column for alert slack notifications. !33017
-- Add ability to insert an image via SSE. !33029
-- Add user root query to GraphQL API. !33041
-- Adds groupMembership and projectMembership to GraphQL API. !33049
-- Alerts list pagination. !33073
-- Add ApplicationSetting ui changes for repository_storages_weighted. !33096
-- Display confirmation modal when user exits SSE and there are unsaved changes. !33103
-- Add column dashboard_timezone to project_metrics_setting. !33120
-- Allow the assignment of alerts to users from the alert detail view. !33122
-- Add solarized dark for Web IDE. !33148
-- Add support for artifacts/exclude configuration. !33170
-- Add root users query to GraphQL API. !33195
-- Added validation for YAML files with metrics dashboard definitions. !33202
-- Create issue from alert. !33213
-- Add max import file size option. !33215 (Roger Meier)
-- Add system note when assigning user to alert. !33217
-- Add count of alerts from all sources to usage ping. !33220
-- Add button to create an issue from an alert management alert. !33221
-- Add more detail to alert integration settings description. !33244
-- Add Evidence to Releases GraphQL endpoint. !33254
-- Add support for pasting images in the Web IDE. !33256
-- Add ProjectAccessToken table. !33272
-- Automatically resolve alert when associated issue closes. !33278
-- Add `link_type` to `ReleaseLink` GraphQL type. !33386
-- Add members to project graphQL endpoint. !33418
-- Update Static Site Editor WYSIWYG mode to hide front matter. !33441
-- Added delete action for Dashboard Annotations in GraphQL. !33468
-- Create graphQL endpoint for Jira users import. !33501
-- Support IAP protected prometheus installations. !33508
-- New instance-level variables UI. !33510
-- Provide `__range` variable for Prometheus queries. !33521
-- Add support for `git filter-repo` to repository cleanup. !33576
-- Close open reply input fields in the design view sidebar when leaving a new comment. !33587
-- Add dashboard schema validation warnings as metrics dashboard GraphQL field. !33592
-- Add time range to user-defined links in metrics dashboard. !33663
-- Increase events count for Prometheus alerts. !33706
-- Track pod logs refresh action. !33802
-- Add secret detection template. !33869
-- Add DAG visualization MVC. !33958
-- Introduce a feature flag for Vue-based UI for all import providers. !33980
-- Add sticky title on Issue pages. !33983
-- Allow Release asset links to be associated with a type. !33998
-- Support user-defined Grafana links in metrics dashboard. !34003
-- Adds AWS guidance to CI/CD > Add Variable modal. !34009
-- Show custom attributes within Admin Pages. !34017 (Roger Meier)
-- Enable Slack notifications for alerts. !34038
-- Container expiration policy regular expressions are now validated. !34063
-- Add todo when alert is assigned to a user. !34104
-- Track merge requests submitted by Static Site Editor. !34105
-- Turn off alert issue creation by default. !34107
-- Add detailed logs of each Redis instance usage during job execution and web requests. !34110
-- Add API to schedule project repository storage moves. !34119
-- Add validation step on backend for metrics dashboard links. !34204
-- Track when Static Site Editor is initialized. !34215
-- Bring SAST to Core - brakeman. !34217
-- Mask key comments when exposing SSH/Deploy Keys via the API. !34255
-- Convert `:release` yaml to `release-cli` commands. !34261
-- Validate regex before sending them to CleanupContainerRepositoryWorker. !34282
-- Add secret_detection to DOWNLOADABLE_TYPES. !34313
-- Enable ability to assign alerts to users with corresponding system notes and todos. !34360
-- Enable CI Inheriting Env Variables feature. !34495
-- Show tooltip on error detail page when hovering over dates. !34506
-- Add native code intelligence. !34542
-- Bump cluster-applications version to v0.20.0. !34569
-- Add search argument for AlertStatusCountsResolver. !34596
-- Allow CI_JOB_TOKEN for authenticating to the Terraform state API. !34618
-
-### Other (65 changes, 36 of them are from the community)
-
-- Improve fast-forward merge is not possible message. !22834 (Ben Bodenmiller)
-- Remove unused WAF indexes from CI variables. !30021
-- Update the visual design of badges in some areas. !31646
-- Extract featurable concern from ProjectFeature. !31700 (Alexander Randa)
-- Remove update function logic from list model. !31900 (nuwe1)
-- Remove nextpage function logic from list model. !31904 (nuwe1)
-- Squash database migrations prior to 2019 into one. !31936
-- Update deprecated slot syntax in app/assets/javascripts/reports/components/grouped_test_reports_app.vue. !31975 (Gilang Gumilar)
-- Replace slot syntax for Vue 3 migration. !31987 (gaslan)
-- Update deprecated slot syntax in ./app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue. !31994 (Gilang Gumilar)
-- Update deprecated slot syntax in ./app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue. !31995 (Gilang Gumilar)
-- Update deprecated slot syntax in ./app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue. !32010 (Gilang Gumilar)
-- Update deprecated slot syntax in ./app/assets/javascripts/environments/components/environments_app.vue. !32011 (Gilang Gumilar)
-- Remove setLoadingState logic from issue model. !32226 (nuwe1)
-- Remove addAssignee logic from issue model. !32231 (nuwe1)
-- Remove addLabel Logic from issue models. !32233 (nuwe1)
-- Remove addMilestone logic from issue model. !32235 (nuwe1)
-- Remove destroy function logic from list model. !32237 (nuwe1)
-- Remove findAssignee logic from issue model. !32238 (nuwe1)
-- Remove findLabel logic from issue model. !32239 (nuwe1)
-- Remove findIssue logic from list model. !32241 (nuwe1)
-- Remove moveIssue logic from list model. !32242 (nuwe1)
-- Remove newIssue logic from list model. !32244 (nuwe1)
-- Remove removeAllAssignees logic from issue model. !32247 (nuwe1)
-- Remove removeAssignee logic from issue model. !32248 (nuwe1)
-- Clarify verbiage for stuck job messages. !32250
-- Remove removeLabel logic from issue model. !32251 (nuwe1)
-- Remove removeLabels logic from issue model. !32252 (nuwe1)
-- Remove removeMilestone logic from issue model. !32253 (nuwe1)
-- Remove removeMultipleIssues logic from list model. !32254 (nuwe1)
-- Remove setFetchingState logic from issue model. !32255 (nuwe1)
-- Remove updateData logic from issue model. !32256 (nuwe1)
-- Update U2F docs for Firefox 67+. !32289 (Takuya Noguchi)
-- Update alert management mobile table alignment. !32295
-- Include available instance memory in usage ping. !32315
-- Moves merge request reviews into Core. !32558
-- Update GitLab Runner Helm Chart to 0.17.0. !32634
-- Add snowplow tracking for logs page. !32704
-- Extend "Remember me" token after each login. !32730
-- Assign alerts sidebar container fix. !32743
-- Add anchor for creating a branch. !32745
-- Tidy. !32759 (Lee Tickett)
-- Less verbose JiraService error logs. !32847
-- Reduced padding and increased emphasis of titles within the epic tree. !32873
-- Remove obsolete users.ghost column. !32957
-- Move NoPrimary table def to last context in spec. !33015 (Rajendra Kadam)
-- Document github rate limit behavior. !33090
-- Added build_id column to requirements_management_test_reports table. !33184
-- Add version history information on U2F support. !33229 (Takuya Noguchi)
-- Convert IP spoofing errors into client errors. !33280
-- Update docs to reflect move web IDE Terminal and file sync to Core. !33419
-- Add hovering icon for sorting columns on alert management list. !33429
-- Avoid javascript for omniauth logins. !33459 (Diego Louzán)
-- Add opacity transition to active design discussion pins. !33493
-- Update GitLab Runner Helm Chart to 0.17.1. !33504
-- Make project selector in various dashboard more translatable. !33771
-- Update Workhorse to v8.35.0. !33817
-- Remove FF hide_token_from_runners_api. !33947
-- Bump omniauth_openid_connect to 0.3.5. !34030 (Roger Meier)
-- Specify tiers for SAML SSO at self-hosted plans. !34040 (Takuya Noguchi)
-- Backfill failed imported snippet repositories. !34052
-- Use GitLab SVG icon for file attacher action. !34196
-- Add GraphQL snippet FileInputType. !34442
-- Update red hex values to match GitLab UI. !34544
-- Remove removeIssue logic from list model. (nuwe1)
-
-
## 13.0.6 (2020-06-10)
- No changes.
diff --git a/Gemfile b/Gemfile
index 33d4ebb7f22..104455c0f7c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -140,6 +140,7 @@ gem 'deckar01-task_list', '2.3.1'
gem 'gitlab-markup', '~> 1.7.1'
gem 'github-markup', '~> 1.7.0', require: 'github/markup'
gem 'commonmarker', '~> 0.20'
+gem 'kramdown', '~> 2.2.1'
gem 'RedCloth', '~> 4.3.2'
gem 'rdoc', '~> 6.1.2'
gem 'org-ruby', '~> 0.9.12'
diff --git a/Gemfile.lock b/Gemfile.lock
index 2e3537e223f..cfccca87bf8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -575,7 +575,8 @@ GEM
kgio (2.11.3)
knapsack (1.17.0)
rake
- kramdown (2.1.0)
+ kramdown (2.2.1)
+ rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
kubeclient (4.6.0)
@@ -1282,6 +1283,7 @@ DEPENDENCIES
jwt (~> 2.1.0)
kaminari (~> 1.0)
knapsack (~> 1.17)
+ kramdown (~> 2.2.1)
kubeclient (~> 4.6.0)
letter_opener_web (~> 1.3.4)
license_finder (~> 5.4)
diff --git a/app/assets/javascripts/lib/utils/axios_startup_calls.js b/app/assets/javascripts/lib/utils/axios_startup_calls.js
new file mode 100644
index 00000000000..a86c8efca1f
--- /dev/null
+++ b/app/assets/javascripts/lib/utils/axios_startup_calls.js
@@ -0,0 +1,47 @@
+import { isEmpty } from 'lodash';
+import { mergeUrlParams } from './url_utility';
+
+// We should probably not couple this utility to `gon.gitlab_url`
+// Also, this would replace occurrences that aren't at the beginning of the string
+const removeGitLabUrl = url => url.replace(gon.gitlab_url, '');
+
+const getFullUrl = req => {
+ const url = removeGitLabUrl(req.url);
+ return mergeUrlParams(req.params || {}, url);
+};
+
+const setupAxiosStartupCalls = axios => {
+ const { startup_calls: startupCalls } = window.gl || {};
+
+ if (!startupCalls || isEmpty(startupCalls)) {
+ return;
+ }
+
+ // TODO: To save performance of future axios calls, we can
+ // remove this interceptor once the "startupCalls" have been loaded
+ axios.interceptors.request.use(req => {
+ const fullUrl = getFullUrl(req);
+
+ const existing = startupCalls[fullUrl];
+
+ if (existing) {
+ // eslint-disable-next-line no-param-reassign
+ req.adapter = () =>
+ existing.fetchCall.then(res =>
+ // eslint-disable-next-line promise/no-nesting
+ res.json().then(data => ({
+ data,
+ status: res.status,
+ statusText: res.statusText,
+ headers: res.headers,
+ config: req,
+ request: req,
+ })),
+ );
+ }
+
+ return req;
+ });
+};
+
+export default setupAxiosStartupCalls;
diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js
index 4eec5bffc66..9d517f45caa 100644
--- a/app/assets/javascripts/lib/utils/axios_utils.js
+++ b/app/assets/javascripts/lib/utils/axios_utils.js
@@ -1,6 +1,7 @@
import axios from 'axios';
import csrf from './csrf';
import suppressAjaxErrorsDuringNavigation from './suppress_ajax_errors_during_navigation';
+import setupAxiosStartupCalls from './axios_startup_calls';
axios.defaults.headers.common[csrf.headerKey] = csrf.token;
// Used by Rails to check if it is a valid XHR request
@@ -14,6 +15,8 @@ axios.interceptors.request.use(config => {
return config;
});
+setupAxiosStartupCalls(axios);
+
// Remove the global counter
axios.interceptors.response.use(
response => {
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 79a164a5574..1baaf0b9ee8 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -329,13 +329,6 @@ class ApplicationController < ActionController::Base
end
end
- def event_filter
- @event_filter ||=
- EventFilter.new(params[:event_filter].presence || cookies[:event_filter]).tap do |new_event_filter|
- cookies[:event_filter] = new_event_filter.filter
- end
- end
-
# JSON for infinite scroll via Pager object
def pager_json(partial, count, locals = {})
html = render_to_string(
diff --git a/app/controllers/concerns/filters_events.rb b/app/controllers/concerns/filters_events.rb
new file mode 100644
index 00000000000..c82d0318fd3
--- /dev/null
+++ b/app/controllers/concerns/filters_events.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module FiltersEvents
+ def event_filter
+ @event_filter ||= new_event_filter.tap { |ef| cookies[:event_filter] = ef.filter }
+ end
+
+ private
+
+ def new_event_filter
+ active_filter = params[:event_filter].presence || cookies[:event_filter]
+ EventFilter.new(active_filter)
+ end
+end
diff --git a/app/controllers/dashboard/projects_controller.rb b/app/controllers/dashboard/projects_controller.rb
index 25c48fadf49..b9200534dee 100644
--- a/app/controllers/dashboard/projects_controller.rb
+++ b/app/controllers/dashboard/projects_controller.rb
@@ -6,6 +6,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
include OnboardingExperimentHelper
include SortingHelper
include SortingPreference
+ include FiltersEvents
prepend_before_action(only: [:index]) { authenticate_sessionless_user!(:rss) }
before_action :set_non_archived_param
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index dd9e6488bc5..07cc31fb7d3 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -2,6 +2,7 @@
class DashboardController < Dashboard::ApplicationController
include IssuableCollectionsAction
+ include FiltersEvents
prepend_before_action(only: [:issues]) { authenticate_sessionless_user!(:rss) }
prepend_before_action(only: [:issues_calendar]) { authenticate_sessionless_user!(:ics) }
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index fba374dbb44..2162d397da3 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -7,6 +7,7 @@ class GroupsController < Groups::ApplicationController
include PreviewMarkdown
include RecordUserLastActivity
include SendFileUpload
+ include FiltersEvents
extend ::Gitlab::Utils::Override
respond_to :html
diff --git a/app/controllers/projects/pipelines/tests_controller.rb b/app/controllers/projects/pipelines/tests_controller.rb
new file mode 100644
index 00000000000..6e4b5155a4f
--- /dev/null
+++ b/app/controllers/projects/pipelines/tests_controller.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module Projects
+ module Pipelines
+ class TestsController < Projects::ApplicationController
+ before_action :pipeline
+ before_action :authorize_read_pipeline!
+ before_action :authorize_read_build!
+ before_action :validate_feature_flag!
+
+ def summary
+ respond_to do |format|
+ format.json do
+ render json: TestReportSerializer
+ .new(project: project, current_user: @current_user)
+ .represent(pipeline.test_report_summary)
+ end
+ end
+ end
+
+ private
+
+ def validate_feature_flag!
+ render_404 unless Feature.enabled?(:build_report_summary, project)
+ end
+
+ def pipeline
+ project.all_pipelines.find(tests_params[:id])
+ end
+
+ def tests_params
+ params.permit(:id)
+ end
+ end
+ end
+end
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb
index 0b6c0db211e..a8189a82c56 100644
--- a/app/controllers/projects/pipelines_controller.rb
+++ b/app/controllers/projects/pipelines_controller.rb
@@ -186,7 +186,7 @@ class Projects::PipelinesController < Projects::ApplicationController
format.json do
render json: TestReportSerializer
.new(current_user: @current_user)
- .represent(pipeline_test_report, project: project)
+ .represent(pipeline_test_report, project: project, details: true)
end
end
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index f0ddd62e996..e0fdfda7421 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -8,6 +8,7 @@ class ProjectsController < Projects::ApplicationController
include SendFileUpload
include RecordUserLastActivity
include ImportUrlParams
+ include FiltersEvents
prepend_before_action(only: [:show]) { authenticate_sessionless_user!(:rss) }
diff --git a/app/finders/user_recent_events_finder.rb b/app/finders/user_recent_events_finder.rb
index 3f2e813d381..e9136919a7e 100644
--- a/app/finders/user_recent_events_finder.rb
+++ b/app/finders/user_recent_events_finder.rb
@@ -46,7 +46,7 @@ class UserRecentEventsFinder
SQL
# Workaround for https://github.com/rails/rails/issues/24193
- Event.from([Arel.sql(sql)])
+ ensure_design_visibility(Event.from([Arel.sql(sql)]))
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -59,4 +59,11 @@ class UserRecentEventsFinder
def projects
target_user.project_interactions.to_sql
end
+
+ # TODO: remove when the :design_activity_events feature flag is removed.
+ def ensure_design_visibility(events)
+ return events if Feature.enabled?(:design_activity_events)
+
+ events.not_design
+ end
end
diff --git a/app/graphql/mutations/merge_requests/update.rb b/app/graphql/mutations/merge_requests/update.rb
new file mode 100644
index 00000000000..b583fdfca9b
--- /dev/null
+++ b/app/graphql/mutations/merge_requests/update.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Mutations
+ module MergeRequests
+ class Update < Base
+ graphql_name 'MergeRequestUpdate'
+
+ description 'Update attributes of a merge request'
+
+ argument :title, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :title)
+
+ argument :target_branch, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :target_branch)
+
+ argument :description, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :description)
+
+ def resolve(args)
+ merge_request = authorized_find!(args.slice(:project_path, :iid))
+ attributes = args.slice(:title, :description, :target_branch).compact
+
+ ::MergeRequests::UpdateService
+ .new(merge_request.project, current_user, attributes)
+ .execute(merge_request)
+
+ errors = errors_on_object(merge_request)
+
+ {
+ merge_request: merge_request.reset,
+ errors: errors
+ }
+ end
+ end
+ end
+end
diff --git a/app/graphql/types/mutation_type.rb b/app/graphql/types/mutation_type.rb
index 8874c56dfdb..135cd5e392d 100644
--- a/app/graphql/types/mutation_type.rb
+++ b/app/graphql/types/mutation_type.rb
@@ -20,6 +20,7 @@ module Types
mount_mutation Mutations::Issues::SetDueDate
mount_mutation Mutations::Issues::Update
mount_mutation Mutations::MergeRequests::Create
+ mount_mutation Mutations::MergeRequests::Update
mount_mutation Mutations::MergeRequests::SetLabels
mount_mutation Mutations::MergeRequests::SetLocked
mount_mutation Mutations::MergeRequests::SetMilestone
diff --git a/app/graphql/types/namespace_type.rb b/app/graphql/types/namespace_type.rb
index 1714284a5cf..43666048edb 100644
--- a/app/graphql/types/namespace_type.rb
+++ b/app/graphql/types/namespace_type.rb
@@ -27,6 +27,9 @@ module Types
description: 'Indicates if Large File Storage (LFS) is enabled for namespace'
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if users can request access to namespace'
+ field :storage_size_limit, GraphQL::INT_TYPE, null: true,
+ description: 'Total storage limit of the root namespace in bytes',
+ resolve: -> (obj, _args, _ctx) { Namespace::RootStorageSize.new(obj).limit }
field :root_storage_statistics, Types::RootStorageStatisticsType,
null: true,
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index bdfdf5a69b3..e8bd5ad9b9b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -335,6 +335,15 @@ module ApplicationHelper
}
end
+ def page_startup_api_calls
+ @api_startup_calls
+ end
+
+ def add_page_startup_api_call(api_path, options: {})
+ @api_startup_calls ||= {}
+ @api_startup_calls[api_path] = options
+ end
+
def autocomplete_data_sources(object, noteable_type)
return {} unless object && noteable_type
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index c1f343edd10..d4e07713cda 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -29,7 +29,11 @@ module EventsHelper
def event_action_name(event)
target = if event.target_type
- if event.note?
+ if event.design? || event.design_note?
+ 'design'
+ elsif event.wiki_page?
+ 'wiki page'
+ elsif event.note?
event.note_target_type
else
event.target_type.titleize.downcase
@@ -58,11 +62,30 @@ module EventsHelper
end
def event_filter_visible(feature_key)
+ return designs_visible? if feature_key == :designs
return true unless @project
@project.feature_available?(feature_key, current_user)
end
+ def designs_visible?
+ return false unless Feature.enabled?(:design_activity_events)
+
+ if @project
+ design_activity_enabled?(@project)
+ elsif @group
+ design_activity_enabled?(@group)
+ elsif @projects
+ @projects.with_namespace.include_project_feature.any? { |p| design_activity_enabled?(p) }
+ else
+ true
+ end
+ end
+
+ def design_activity_enabled?(project)
+ Ability.allowed?(current_user, :read_design_activity, project)
+ end
+
def comments_visible?
event_filter_visible(:repository) ||
event_filter_visible(:merge_requests) ||
@@ -94,6 +117,12 @@ module EventsHelper
elsif event.milestone?
words << "##{event.target_iid}" if event.target_iid
words << "in"
+ elsif event.design?
+ words << event.design.to_reference
+ words << "in"
+ elsif event.wiki_page?
+ words << event.target_title
+ words << "in"
elsif event.target
prefix =
if event.merge_request?
@@ -187,6 +216,15 @@ module EventsHelper
end
end
+ def event_design_title_html(event)
+ capture do
+ concat content_tag(:span, _('design'), class: "event-target-type append-right-4")
+ concat link_to(event.design.reference_link_text, design_url(event.design),
+ title: event.target_title,
+ class: 'has-tooltip event-design event-target-link append-right-4')
+ end
+ end
+
def event_wiki_page_target_url(event)
project_wiki_url(event.project, event.target&.canonical_slug || Wiki::HOMEPAGE)
end
@@ -214,6 +252,18 @@ module EventsHelper
sprite_icon(icon_name, size: size) if icon_name
end
+ DESIGN_ICONS = {
+ 'created' => 'upload',
+ 'updated' => 'pencil',
+ 'destroyed' => ICON_NAMES_BY_EVENT_TYPE['destroyed'],
+ 'archived' => 'archive'
+ }.freeze
+
+ def design_event_icon(action, size: 24)
+ icon_name = DESIGN_ICONS[action]
+ sprite_icon(icon_name, size: size) if icon_name
+ end
+
def icon_for_profile_event(event)
if current_path?('users#show')
content_tag :div, class: "system-note-image #{event.action_name.parameterize}-icon" do
@@ -229,6 +279,8 @@ module EventsHelper
def inline_event_icon(event)
unless current_path?('users#show')
content_tag :span, class: "system-note-image-inline d-none d-sm-flex append-right-4 #{event.action_name.parameterize}-icon align-self-center" do
+ next design_event_icon(event.action, size: 14) if event.design?
+
icon_for_event(event.action_name, size: 14)
end
end
@@ -244,7 +296,7 @@ module EventsHelper
private
- def design_url(design, opts)
+ def design_url(design, opts = {})
designs_project_issue_url(
design.project,
design.issue,
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 497e1a4d74a..8e8fd774310 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -80,6 +80,7 @@ module Ci
has_one :pipeline_config, class_name: 'Ci::PipelineConfig', inverse_of: :pipeline
has_many :daily_build_group_report_results, class_name: 'Ci::DailyBuildGroupReportResult', foreign_key: :last_pipeline_id
+ has_many :latest_builds_report_results, through: :latest_builds, source: :report_results
accepts_nested_attributes_for :variables, reject_if: :persisted?
@@ -802,6 +803,10 @@ module Ci
complete? && latest_report_builds(reports_scope).exists?
end
+ def test_report_summary
+ Gitlab::Ci::Reports::TestReportSummary.new(latest_builds_report_results)
+ end
+
def test_reports
Gitlab::Ci::Reports::TestReports.new.tap do |test_reports|
latest_report_builds(Ci::JobArtifact.test_reports).preload(:project).find_each do |build|
diff --git a/app/models/event_collection.rb b/app/models/event_collection.rb
index 4c178e27b75..6c268bf6c36 100644
--- a/app/models/event_collection.rb
+++ b/app/models/event_collection.rb
@@ -45,9 +45,10 @@ class EventCollection
private
def apply_feature_flags(events)
- return events if ::Feature.enabled?(:wiki_events)
+ events = events.not_wiki_page unless ::Feature.enabled?(:wiki_events)
+ events = events.not_design unless ::Feature.enabled?(:design_activity_events)
- events.not_wiki_page
+ events
end
def project_events
diff --git a/app/models/project.rb b/app/models/project.rb
index 89e55c5f6bb..f46583d1d98 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -455,6 +455,7 @@ class Project < ApplicationRecord
scope :with_statistics, -> { includes(:statistics) }
scope :with_namespace, -> { includes(:namespace) }
scope :with_import_state, -> { includes(:import_state) }
+ scope :include_project_feature, -> { includes(:project_feature) }
scope :with_service, ->(service) { joins(service).eager_load(service) }
scope :with_shared_runners, -> { where(shared_runners_enabled: true) }
scope :with_container_registry, -> { where(container_registry_enabled: true) }
diff --git a/app/models/snippet_input_action.rb b/app/models/snippet_input_action.rb
index 7f4ab775ab0..52c77be1f45 100644
--- a/app/models/snippet_input_action.rb
+++ b/app/models/snippet_input_action.rb
@@ -18,6 +18,7 @@ class SnippetInputAction
validates :file_path, presence: true
validates :content, presence: true, if: -> (action) { action.create_action? || action.update_action? }
validate :ensure_same_file_path_and_previous_path, if: :update_action?
+ validate :ensure_different_file_path_and_previous_path, if: :move_action?
validate :ensure_allowed_action
def initialize(action: nil, previous_path: nil, file_path: nil, content: nil, allowed_actions: nil)
@@ -52,6 +53,12 @@ class SnippetInputAction
errors.add(:file_path, "can't be different from the previous_path attribute")
end
+ def ensure_different_file_path_and_previous_path
+ return if previous_path != file_path
+
+ errors.add(:file_path, 'must be different from the previous_path attribute')
+ end
+
def ensure_allowed_action
return if @allowed_actions.empty?
diff --git a/app/policies/concerns/find_group_projects.rb b/app/policies/concerns/find_group_projects.rb
index e2cb90079c7..aad9081bd7d 100644
--- a/app/policies/concerns/find_group_projects.rb
+++ b/app/policies/concerns/find_group_projects.rb
@@ -3,11 +3,11 @@
module FindGroupProjects
extend ActiveSupport::Concern
- def group_projects_for(user:, group:)
+ def group_projects_for(user:, group:, only_owned: true)
GroupProjectsFinder.new(
group: group,
current_user: user,
- options: { include_subgroups: true, only_owned: true }
+ options: { include_subgroups: true, only_owned: only_owned }
).execute
end
end
diff --git a/app/policies/group_policy.rb b/app/policies/group_policy.rb
index 136ac4cce63..bfd598525f6 100644
--- a/app/policies/group_policy.rb
+++ b/app/policies/group_policy.rb
@@ -42,6 +42,14 @@ class GroupPolicy < BasePolicy
@subject.subgroup_creation_level == ::Gitlab::Access::MAINTAINER_SUBGROUP_ACCESS
end
+ condition(:design_management_enabled) do
+ group_projects_for(user: @user, group: @subject, only_owned: false).any? { |p| p.design_management_enabled? }
+ end
+
+ rule { design_management_enabled }.policy do
+ enable :read_design_activity
+ end
+
rule { public_group }.policy do
enable :read_group
enable :read_package
@@ -70,6 +78,10 @@ class GroupPolicy < BasePolicy
enable :read_board
end
+ rule { ~can?(:read_group) }.policy do
+ prevent :read_design_activity
+ end
+
rule { has_access }.enable :read_namespace
rule { developer }.policy do
diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb
index f87c72007ec..6ff16b71ea3 100644
--- a/app/policies/project_policy.rb
+++ b/app/policies/project_policy.rb
@@ -545,11 +545,13 @@ class ProjectPolicy < BasePolicy
rule { can?(:read_issue) }.policy do
enable :read_design
+ enable :read_design_activity
end
# Design abilities could also be prevented in the issue policy.
rule { design_management_disabled }.policy do
prevent :read_design
+ prevent :read_design_activity
prevent :create_design
prevent :destroy_design
end
diff --git a/app/serializers/test_suite_entity.rb b/app/serializers/test_suite_entity.rb
index 53fa830718a..d04fd5f6a84 100644
--- a/app/serializers/test_suite_entity.rb
+++ b/app/serializers/test_suite_entity.rb
@@ -9,9 +9,11 @@ class TestSuiteEntity < Grape::Entity
expose :failed_count
expose :skipped_count
expose :error_count
- expose :suite_error
- expose :test_cases, using: TestCaseEntity do |test_suite|
- test_suite.suite_error ? [] : test_suite.test_cases.values.flat_map(&:values)
+ with_options if: -> (_, opts) { opts[:details] } do |test_suite|
+ expose :suite_error
+ expose :test_cases, using: TestCaseEntity do |test_suite|
+ test_suite.suite_error ? [] : test_suite.test_cases.values.flat_map(&:values)
+ end
end
end
diff --git a/app/services/event_create_service.rb b/app/services/event_create_service.rb
index 89c3225dbcd..fdf777f2bbe 100644
--- a/app/services/event_create_service.rb
+++ b/app/services/event_create_service.rb
@@ -97,23 +97,16 @@ class EventCreateService
end
def save_designs(current_user, create: [], update: [])
- created = create.group_by(&:project).flat_map do |project, designs|
- Feature.enabled?(:design_activity_events, project) ? designs : []
- end.to_set
- updated = update.group_by(&:project).flat_map do |project, designs|
- Feature.enabled?(:design_activity_events, project) ? designs : []
- end.to_set
- return [] if created.empty? && updated.empty?
+ return [] unless Feature.enabled?(:design_activity_events)
- records = created.zip([:created].cycle) + updated.zip([:updated].cycle)
+ records = create.zip([:created].cycle) + update.zip([:updated].cycle)
+ return [] if records.empty?
create_record_events(records, current_user)
end
def destroy_designs(designs, current_user)
- designs = designs.select do |design|
- Feature.enabled?(:design_activity_events, design.project)
- end
+ return [] unless Feature.enabled?(:design_activity_events)
return [] unless designs.present?
create_record_events(designs.zip([:destroyed].cycle), current_user)
diff --git a/app/services/snippets/update_service.rb b/app/services/snippets/update_service.rb
index 6cdc2c374da..1c097ed447a 100644
--- a/app/services/snippets/update_service.rb
+++ b/app/services/snippets/update_service.rb
@@ -38,7 +38,8 @@ module Snippets
# Once we can perform different operations through this service
# we won't need to keep track of the `content` and `file_name` fields
if snippet_files.any?
- params.merge!(content: snippet_files[0].content, file_name: snippet_files[0].file_path)
+ params[:content] = snippet_files[0].content if snippet_files[0].content
+ params[:file_name] = snippet_files[0].file_path
end
snippet.assign_attributes(params)
diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml
index c042cd2c3e3..83f7d743755 100644
--- a/app/views/events/_event.html.haml
+++ b/app/views/events/_event.html.haml
@@ -7,6 +7,8 @@
- if event.wiki_page?
= render "events/event/wiki", event: event
+ - elsif event.design?
+ = render 'events/event/design', event: event
- elsif event.created_project_action?
= render "events/event/created_project", event: event
- elsif event.push_action?
diff --git a/app/views/events/event/_design.html.haml b/app/views/events/event/_design.html.haml
new file mode 100644
index 00000000000..edaab3ec5a1
--- /dev/null
+++ b/app/views/events/event/_design.html.haml
@@ -0,0 +1,11 @@
+= icon_for_profile_event(event)
+
+= event_user_info(event)
+
+.event-title.d-flex.flex-wrap
+ = inline_event_icon(event)
+ %span.event-type.d-inline-block.append-right-4{ class: event.action_name }
+ = event.action_name
+ = event_design_title_html(event)
+ = render "events/event_scope", event: event
+
diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml
index 886d4109ff5..5fcafb9332e 100644
--- a/app/views/layouts/_head.html.haml
+++ b/app/views/layouts/_head.html.haml
@@ -25,6 +25,8 @@
%meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' }
+ = render 'layouts/startup_js'
+
-# Open Graph - http://ogp.me/
%meta{ property: 'og:type', content: "object" }
%meta{ property: 'og:site_name', content: site_name }
diff --git a/app/views/layouts/_startup_js.html.haml b/app/views/layouts/_startup_js.html.haml
new file mode 100644
index 00000000000..3eb68df07c6
--- /dev/null
+++ b/app/views/layouts/_startup_js.html.haml
@@ -0,0 +1,13 @@
+- return unless page_startup_api_calls.present?
+
+= javascript_tag nonce: true do
+ :plain
+ var gl = window.gl || {};
+ gl.startup_calls = #{page_startup_api_calls.to_json};
+ if (gl.startup_calls && window.fetch) {
+ Object.keys(gl.startup_calls).forEach(apiCall => {
+ gl.startup_calls[apiCall] = {
+ fetchCall: fetch(apiCall)
+ };
+ });
+ }
diff --git a/app/views/projects/_files.html.haml b/app/views/projects/_files.html.haml
index 20d4084f428..5d2ceacfe3e 100644
--- a/app/views/projects/_files.html.haml
+++ b/app/views/projects/_files.html.haml
@@ -4,6 +4,9 @@
- project = local_assigns.fetch(:project) { @project }
- content_url = local_assigns.fetch(:content_url) { @tree.readme ? project_blob_path(@project, tree_join(@ref, @tree.readme.path)) : project_tree_path(@project, @ref) }
- show_auto_devops_callout = show_auto_devops_callout?(@project)
+- add_page_startup_api_call logs_file_project_ref_path(@project, ref, @path, format: "json", offset: 0)
+- if @tree.readme
+ - add_page_startup_api_call project_blob_path(@project, tree_join(@ref, @tree.readme.path), viewer: "rich", format: "json")
#tree-holder.tree-holder.clearfix
.nav-block
diff --git a/app/views/shared/_event_filter.html.haml b/app/views/shared/_event_filter.html.haml
index 1b2e8d3799d..0346765226d 100644
--- a/app/views/shared/_event_filter.html.haml
+++ b/app/views/shared/_event_filter.html.haml
@@ -17,4 +17,6 @@
= event_filter_link EventFilter::COMMENTS, _('Comments'), s_('EventFilterBy|Filter by comments')
- if Feature.enabled?(:wiki_events) && (@project.nil? || @project.has_wiki?)
= event_filter_link EventFilter::WIKI, _('Wiki'), s_('EventFilterBy|Filter by wiki')
+ - if event_filter_visible(:designs)
+ = event_filter_link EventFilter::DESIGNS, _('Designs'), s_('EventFilterBy|Filter by designs')
= event_filter_link EventFilter::TEAM, _('Team'), s_('EventFilterBy|Filter by team')
diff --git a/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml b/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml
new file mode 100644
index 00000000000..4878eeb26e7
--- /dev/null
+++ b/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml
@@ -0,0 +1,5 @@
+---
+title: Support first_name and last_name attributes in LDAP user sync
+merge_request: 29542
+author:
+type: added
diff --git a/changelogs/unreleased/118613-spam-api-call.yml b/changelogs/unreleased/118613-spam-api-call.yml
new file mode 100644
index 00000000000..68d4aa27071
--- /dev/null
+++ b/changelogs/unreleased/118613-spam-api-call.yml
@@ -0,0 +1,5 @@
+---
+title: SpamVerdictService can call external spam check endpoint
+merge_request: 31449
+author:
+type: added
diff --git a/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml b/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml
new file mode 100644
index 00000000000..579485e7488
--- /dev/null
+++ b/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml
@@ -0,0 +1,5 @@
+---
+title: "[Frontend] Resolvable design discussions"
+merge_request: 32399
+author:
+type: added
diff --git a/changelogs/unreleased/13049-graphql-resolve-discussion.yml b/changelogs/unreleased/13049-graphql-resolve-discussion.yml
new file mode 100644
index 00000000000..850d5b5aac4
--- /dev/null
+++ b/changelogs/unreleased/13049-graphql-resolve-discussion.yml
@@ -0,0 +1,5 @@
+---
+title: Add a GraphQL mutation for toggling the resolved state of a Discussion
+merge_request: 32934
+author:
+type: added
diff --git a/changelogs/unreleased/17555-custom-text-for-badges.yml b/changelogs/unreleased/17555-custom-text-for-badges.yml
new file mode 100644
index 00000000000..61132efa264
--- /dev/null
+++ b/changelogs/unreleased/17555-custom-text-for-badges.yml
@@ -0,0 +1,5 @@
+---
+title: Allow customization of badge key_text and key_width
+merge_request: 29381
+author: Fabian Schneider @fabsrc
+type: added
diff --git a/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml b/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml
new file mode 100644
index 00000000000..370d8f8ceb3
--- /dev/null
+++ b/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Add a button to assign users who have commented on an issue
+merge_request: 23883
+author:
+type: added
diff --git a/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml b/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml
new file mode 100644
index 00000000000..df303695865
--- /dev/null
+++ b/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml
@@ -0,0 +1,5 @@
+---
+title: Add api.js methods to update issues and merge requests
+merge_request: 32893
+author:
+type: added
diff --git a/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml b/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml
new file mode 100644
index 00000000000..0ee3d01d030
--- /dev/null
+++ b/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve incorrect x-axis padding on the Environments Dashboard
+merge_request: 32533
+author:
+type: fixed
diff --git a/changelogs/unreleased/196544-nodemetrics-size.yml b/changelogs/unreleased/196544-nodemetrics-size.yml
new file mode 100644
index 00000000000..1319ef2f624
--- /dev/null
+++ b/changelogs/unreleased/196544-nodemetrics-size.yml
@@ -0,0 +1,5 @@
+---
+title: Added node size to cluster index
+merge_request: 32435
+author:
+type: changed
diff --git a/changelogs/unreleased/196630-commit-tab.yml b/changelogs/unreleased/196630-commit-tab.yml
new file mode 100644
index 00000000000..38b158d1520
--- /dev/null
+++ b/changelogs/unreleased/196630-commit-tab.yml
@@ -0,0 +1,5 @@
+---
+title: Don't hide Commit tab in Web IDE when there are no changes yet
+merge_request: 32979
+author:
+type: added
diff --git a/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml b/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml
new file mode 100644
index 00000000000..dfd80b80241
--- /dev/null
+++ b/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml
@@ -0,0 +1,5 @@
+---
+title: Add the container expiration policy attribute to the project GraphQL type
+merge_request: 32100
+author:
+type: added
diff --git a/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml b/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml
new file mode 100644
index 00000000000..3205401f5db
--- /dev/null
+++ b/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml
@@ -0,0 +1,5 @@
+---
+title: Add container expiration policy objects to the GraphQL API
+merge_request: 32944
+author:
+type: added
diff --git a/changelogs/unreleased/197426-error-details-timeago-tooltip.yml b/changelogs/unreleased/197426-error-details-timeago-tooltip.yml
new file mode 100644
index 00000000000..926f22bfa68
--- /dev/null
+++ b/changelogs/unreleased/197426-error-details-timeago-tooltip.yml
@@ -0,0 +1,5 @@
+---
+title: Show tooltip on error detail page when hovering over dates
+merge_request: 34506
+author:
+type: added
diff --git a/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml b/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml
new file mode 100644
index 00000000000..8e9f49ad14f
--- /dev/null
+++ b/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml
@@ -0,0 +1,5 @@
+---
+title: Fix incorrect commit search results returned when searching with ref
+merge_request: 33216
+author:
+type: fixed
diff --git a/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml b/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml
new file mode 100644
index 00000000000..58d02d65b71
--- /dev/null
+++ b/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml
@@ -0,0 +1,5 @@
+---
+title: Convert `:release` yaml to `release-cli` commands
+merge_request: 34261
+author:
+type: added
diff --git a/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml b/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml
new file mode 100644
index 00000000000..0a654b11442
--- /dev/null
+++ b/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml
@@ -0,0 +1,5 @@
+---
+title: Show more context in unresolved jump button
+merge_request: 32737
+author:
+type: changed
diff --git a/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml b/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml
new file mode 100644
index 00000000000..4457947639f
--- /dev/null
+++ b/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml
@@ -0,0 +1,5 @@
+---
+title: Implement displaying downstream pipeline error details
+merge_request: 32844
+author:
+type: fixed
diff --git a/changelogs/unreleased/20069-ci-secrets-rake-task.yml b/changelogs/unreleased/20069-ci-secrets-rake-task.yml
new file mode 100644
index 00000000000..6c75d8945e5
--- /dev/null
+++ b/changelogs/unreleased/20069-ci-secrets-rake-task.yml
@@ -0,0 +1,5 @@
+---
+title: Add rake task to verify encrypted data through secrets
+merge_request: 21851
+author:
+type: added
diff --git a/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml b/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml
new file mode 100644
index 00000000000..a8d892db2ff
--- /dev/null
+++ b/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml
@@ -0,0 +1,5 @@
+---
+title: Add API support for sharing groups with groups
+merge_request: 32008
+author:
+type: added
diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml
new file mode 100644
index 00000000000..f897faeeaa2
--- /dev/null
+++ b/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml
@@ -0,0 +1,5 @@
+---
+title: Expose `release_links.type` via API
+merge_request: 33154
+author:
+type: changed
diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml
new file mode 100644
index 00000000000..bf5de47e7ff
--- /dev/null
+++ b/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml
@@ -0,0 +1,5 @@
+---
+title: Add `link_type` to `ReleaseLink` GraphQL type
+merge_request: 33386
+author:
+type: added
diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases.yml
new file mode 100644
index 00000000000..ee11eb72389
--- /dev/null
+++ b/changelogs/unreleased/207257-specify-asset-types-in-releases.yml
@@ -0,0 +1,5 @@
+---
+title: Add link_type column to release_links table
+merge_request: 33156
+author:
+type: changed
diff --git a/changelogs/unreleased/207990-secret-detection-ci-template.yml b/changelogs/unreleased/207990-secret-detection-ci-template.yml
new file mode 100644
index 00000000000..246ac1c096a
--- /dev/null
+++ b/changelogs/unreleased/207990-secret-detection-ci-template.yml
@@ -0,0 +1,5 @@
+---
+title: Add secret detection template
+merge_request: 33869
+author:
+type: added
diff --git a/changelogs/unreleased/208412-featurable.yml b/changelogs/unreleased/208412-featurable.yml
new file mode 100644
index 00000000000..02adcccec0b
--- /dev/null
+++ b/changelogs/unreleased/208412-featurable.yml
@@ -0,0 +1,5 @@
+---
+title: Extract featurable concern from ProjectFeature
+merge_request: 31700
+author: Alexander Randa
+type: other
diff --git a/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml b/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml
new file mode 100644
index 00000000000..2947e9d261c
--- /dev/null
+++ b/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml
@@ -0,0 +1,5 @@
+---
+title: Group authorization refresh to consider shared groups
+merge_request: 31204
+author:
+type: fixed
diff --git a/changelogs/unreleased/209025-design-filename-limit-migrations.yml b/changelogs/unreleased/209025-design-filename-limit-migrations.yml
new file mode 100644
index 00000000000..92379b29e34
--- /dev/null
+++ b/changelogs/unreleased/209025-design-filename-limit-migrations.yml
@@ -0,0 +1,6 @@
+---
+title: Add database migrations to design_management_designs.filename to enforce
+ a 255 character limit, and modify any filenames that exceed that limit
+merge_request: 33565
+author:
+type: changed
diff --git a/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml b/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml
new file mode 100644
index 00000000000..a6eca5f5ad6
--- /dev/null
+++ b/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml
@@ -0,0 +1,5 @@
+---
+title: Add DS detection of build.gradle.kts
+merge_request: !32727
+author:
+type: fixed
diff --git a/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml b/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml
new file mode 100644
index 00000000000..840f72be481
--- /dev/null
+++ b/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml
@@ -0,0 +1,5 @@
+---
+title: Add explicit mention of Merge request in Slack message
+merge_request: 33152
+author:
+type: changed
diff --git a/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml b/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml
new file mode 100644
index 00000000000..7b3ad814382
--- /dev/null
+++ b/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml
@@ -0,0 +1,5 @@
+---
+title: Fix 'Active' checkbox text in Pipeline Schedule form to be a label
+merge_request: 27054
+author: Jonston Chan
+type: fixed
diff --git a/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml b/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml
new file mode 100644
index 00000000000..4e8aa0d7ca5
--- /dev/null
+++ b/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml
@@ -0,0 +1,5 @@
+---
+title: Change copy of webhooks / integration help text
+merge_request: 34301
+author:
+type: changed
diff --git a/changelogs/unreleased/210550-conan-export-tgz.yml b/changelogs/unreleased/210550-conan-export-tgz.yml
new file mode 100644
index 00000000000..bffd0b8b644
--- /dev/null
+++ b/changelogs/unreleased/210550-conan-export-tgz.yml
@@ -0,0 +1,5 @@
+---
+title: Conan package registry support for the conan_export.tgz file
+merge_request: 32866
+author:
+type: fixed
diff --git a/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml b/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml
new file mode 100644
index 00000000000..9db7b230ded
--- /dev/null
+++ b/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml
@@ -0,0 +1,5 @@
+---
+title: Change legends in monitor dashboards to tabular layout
+merge_request: 30131
+author:
+type: changed
diff --git a/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml b/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml
new file mode 100644
index 00000000000..7e9edaad64b
--- /dev/null
+++ b/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Added delete action for Dashboard Annotations in GraphQL
+merge_request: 33468
+author:
+type: added
diff --git a/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml b/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml
new file mode 100644
index 00000000000..cb172caf997
--- /dev/null
+++ b/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml
@@ -0,0 +1,5 @@
+---
+title: Rename Add Designs button
+merge_request: 33491
+author:
+type: changed
diff --git a/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml b/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml
new file mode 100644
index 00000000000..dcfe1e56491
--- /dev/null
+++ b/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve image overflow at releases list panel
+merge_request: 32307
+author:
+type: fixed
diff --git a/changelogs/unreleased/212848.yml b/changelogs/unreleased/212848.yml
new file mode 100644
index 00000000000..c4a33866d62
--- /dev/null
+++ b/changelogs/unreleased/212848.yml
@@ -0,0 +1,5 @@
+---
+title: Removed UltraAuth integration for OmniAuth
+merge_request: 29330
+author: Kartikey Tanna
+type: removed
diff --git a/changelogs/unreleased/212882-add-cpu-mem-charts.yml b/changelogs/unreleased/212882-add-cpu-mem-charts.yml
new file mode 100644
index 00000000000..52e645cead7
--- /dev/null
+++ b/changelogs/unreleased/212882-add-cpu-mem-charts.yml
@@ -0,0 +1,5 @@
+---
+title: Add CPU, memory usage charts to self monitoring default dashboard
+merge_request: 33532
+author:
+type: changed
diff --git a/changelogs/unreleased/212882-add-instance-variable.yml b/changelogs/unreleased/212882-add-instance-variable.yml
new file mode 100644
index 00000000000..19131ff7ab9
--- /dev/null
+++ b/changelogs/unreleased/212882-add-instance-variable.yml
@@ -0,0 +1,5 @@
+---
+title: Add ability to filter self monitoring resource usage charts by instance name
+merge_request: 34084
+author:
+type: changed
diff --git a/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml b/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml
new file mode 100644
index 00000000000..e0674b167a2
--- /dev/null
+++ b/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml
@@ -0,0 +1,6 @@
+---
+title: Improve spacing and wrapping of group actions buttons and stats in group list
+ view
+merge_request: 32786
+author:
+type: fixed
diff --git a/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml b/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml
new file mode 100644
index 00000000000..b542581f0f8
--- /dev/null
+++ b/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml
@@ -0,0 +1,5 @@
+---
+title: Fix issues with scroll on iOS / iPad OS
+merge_request: 34486
+author:
+type: fixed
diff --git a/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml b/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml
new file mode 100644
index 00000000000..c8d405afc01
--- /dev/null
+++ b/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml
@@ -0,0 +1,5 @@
+---
+title: Enable the `in this group` action in the Search dropdown
+merge_request: 31939
+author:
+type: changed
diff --git a/changelogs/unreleased/213699-remove-search-results-autocomplete.yml b/changelogs/unreleased/213699-remove-search-results-autocomplete.yml
new file mode 100644
index 00000000000..539d4695658
--- /dev/null
+++ b/changelogs/unreleased/213699-remove-search-results-autocomplete.yml
@@ -0,0 +1,5 @@
+---
+title: Remove all search autocomplete for groups/projects/other
+merge_request: 31187
+author:
+type: removed
diff --git a/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml b/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml
new file mode 100644
index 00000000000..7c446d40128
--- /dev/null
+++ b/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml
@@ -0,0 +1,5 @@
+---
+title: Update red hex values to match GitLab UI
+merge_request: 34544
+author:
+type: other
diff --git a/changelogs/unreleased/213881-alerts-list-pagination.yml b/changelogs/unreleased/213881-alerts-list-pagination.yml
new file mode 100644
index 00000000000..310152722ed
--- /dev/null
+++ b/changelogs/unreleased/213881-alerts-list-pagination.yml
@@ -0,0 +1,5 @@
+---
+title: Alerts list pagination
+merge_request: 33073
+author:
+type: added
diff --git a/changelogs/unreleased/213923-add-range-var.yml b/changelogs/unreleased/213923-add-range-var.yml
new file mode 100644
index 00000000000..71a1bc5e381
--- /dev/null
+++ b/changelogs/unreleased/213923-add-range-var.yml
@@ -0,0 +1,5 @@
+---
+title: Provide `__range` variable for Prometheus queries
+merge_request: 33521
+author:
+type: added
diff --git a/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml b/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml
new file mode 100644
index 00000000000..2cb3569a38e
--- /dev/null
+++ b/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml
@@ -0,0 +1,5 @@
+---
+title: Move the Members section from settings to the side nav for projects
+merge_request: 32667
+author:
+type: changed
diff --git a/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml b/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml
new file mode 100644
index 00000000000..762c8dc1992
--- /dev/null
+++ b/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml
@@ -0,0 +1,5 @@
+---
+title: Add timezone display to alert based issue start time
+merge_request: 32702
+author:
+type: added
diff --git a/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml b/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml
new file mode 100644
index 00000000000..b313bfc9dcb
--- /dev/null
+++ b/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml
@@ -0,0 +1,5 @@
+---
+title: Add Usage Ping count for all searches
+merge_request: 32111
+author:
+type: changed
diff --git a/changelogs/unreleased/214281-modify-dashboard-title.yml b/changelogs/unreleased/214281-modify-dashboard-title.yml
new file mode 100644
index 00000000000..19919dd664b
--- /dev/null
+++ b/changelogs/unreleased/214281-modify-dashboard-title.yml
@@ -0,0 +1,5 @@
+---
+title: Add metrics dashboard name to document title
+merge_request: 30392
+author:
+type: added
diff --git a/changelogs/unreleased/214370-add-timezone-setting.yml b/changelogs/unreleased/214370-add-timezone-setting.yml
new file mode 100644
index 00000000000..03c564da54c
--- /dev/null
+++ b/changelogs/unreleased/214370-add-timezone-setting.yml
@@ -0,0 +1,5 @@
+---
+title: Display dates on metrics dashboards in UTC time zone
+merge_request: 32746
+author:
+type: added
diff --git a/changelogs/unreleased/214370-extend-metrics-settings.yml b/changelogs/unreleased/214370-extend-metrics-settings.yml
new file mode 100644
index 00000000000..56045e3cb5d
--- /dev/null
+++ b/changelogs/unreleased/214370-extend-metrics-settings.yml
@@ -0,0 +1,5 @@
+---
+title: Update operations metrics settings title and description to make them general
+merge_request: 32494
+author:
+type: changed
diff --git a/changelogs/unreleased/214493-invaid-uri.yml b/changelogs/unreleased/214493-invaid-uri.yml
new file mode 100644
index 00000000000..13d6e261804
--- /dev/null
+++ b/changelogs/unreleased/214493-invaid-uri.yml
@@ -0,0 +1,5 @@
+---
+title: Return 404 response when redirecting request with invalid url.
+merge_request: 33492
+author:
+type: fixed
diff --git a/changelogs/unreleased/214556-user-defined-alert-identification.yml b/changelogs/unreleased/214556-user-defined-alert-identification.yml
new file mode 100644
index 00000000000..d65f76e97c0
--- /dev/null
+++ b/changelogs/unreleased/214556-user-defined-alert-identification.yml
@@ -0,0 +1,5 @@
+---
+title: Set fingerprints and increment events count for Alert Management alerts
+merge_request: 32613
+author:
+type: added
diff --git a/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml b/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml
new file mode 100644
index 00000000000..e7d56cf3189
--- /dev/null
+++ b/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml
@@ -0,0 +1,5 @@
+---
+title: Fix tabbing through form fields in projects/new flow
+merge_request: 33209
+author:
+type: fixed
diff --git a/changelogs/unreleased/215497-add-custom-links-to-panel.yml b/changelogs/unreleased/215497-add-custom-links-to-panel.yml
new file mode 100644
index 00000000000..e542a4dfffc
--- /dev/null
+++ b/changelogs/unreleased/215497-add-custom-links-to-panel.yml
@@ -0,0 +1,5 @@
+---
+title: Allow user to add custom links to their metrics dashboard panels
+merge_request: 32646
+author:
+type: added
diff --git a/changelogs/unreleased/215517-tab-docs-ff.yml b/changelogs/unreleased/215517-tab-docs-ff.yml
new file mode 100644
index 00000000000..9ff5f4802ae
--- /dev/null
+++ b/changelogs/unreleased/215517-tab-docs-ff.yml
@@ -0,0 +1,5 @@
+---
+title: Add DAG visualization MVC
+merge_request: 33958
+author:
+type: added
diff --git a/changelogs/unreleased/215618_mutation_to_create_a_commit.yml b/changelogs/unreleased/215618_mutation_to_create_a_commit.yml
new file mode 100644
index 00000000000..9850681d1ef
--- /dev/null
+++ b/changelogs/unreleased/215618_mutation_to_create_a_commit.yml
@@ -0,0 +1,5 @@
+---
+title: Add mutation to create commits in GraphQL
+merge_request: 31102
+author:
+type: added
diff --git a/changelogs/unreleased/215619_add_mutation_to_create_mr.yml b/changelogs/unreleased/215619_add_mutation_to_create_mr.yml
new file mode 100644
index 00000000000..477f8b60d5e
--- /dev/null
+++ b/changelogs/unreleased/215619_add_mutation_to_create_mr.yml
@@ -0,0 +1,5 @@
+---
+title: Add mutation to create a merge request in GraphQL
+merge_request: 31867
+author:
+type: added
diff --git a/changelogs/unreleased/215658-add-users-graphql.yml b/changelogs/unreleased/215658-add-users-graphql.yml
new file mode 100644
index 00000000000..a28ae9f1a12
--- /dev/null
+++ b/changelogs/unreleased/215658-add-users-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Add user root query to GraphQL API
+merge_request: 33041
+author:
+type: added
diff --git a/changelogs/unreleased/215658-graphql-memberships.yml b/changelogs/unreleased/215658-graphql-memberships.yml
new file mode 100644
index 00000000000..1dd970dbfe6
--- /dev/null
+++ b/changelogs/unreleased/215658-graphql-memberships.yml
@@ -0,0 +1,5 @@
+---
+title: Adds groupMembership and projectMembership to GraphQL API
+merge_request: 33049
+author:
+type: added
diff --git a/changelogs/unreleased/215658-root-users-query.yml b/changelogs/unreleased/215658-root-users-query.yml
new file mode 100644
index 00000000000..24c388ba826
--- /dev/null
+++ b/changelogs/unreleased/215658-root-users-query.yml
@@ -0,0 +1,5 @@
+---
+title: Add root users query to GraphQL API
+merge_request: 33195
+author:
+type: added
diff --git a/changelogs/unreleased/215668-settings-auto-fix.yml b/changelogs/unreleased/215668-settings-auto-fix.yml
new file mode 100644
index 00000000000..b0ac2c15fcf
--- /dev/null
+++ b/changelogs/unreleased/215668-settings-auto-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Add model for project level security auto-fix settings
+merge_request: 32577
+author:
+type: added
diff --git a/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml b/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml
new file mode 100644
index 00000000000..e401c881223
--- /dev/null
+++ b/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml
@@ -0,0 +1,5 @@
+---
+title: Reduce redundant queries for Search API users scope.
+merge_request: 33795
+author:
+type: performance
diff --git a/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml b/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml
new file mode 100644
index 00000000000..5191aca5caf
--- /dev/null
+++ b/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml
@@ -0,0 +1,5 @@
+---
+title: Add todo when alert is assigned to a user
+merge_request: 34104
+author:
+type: added
diff --git a/changelogs/unreleased/216045-capture-todo-resolution.yml b/changelogs/unreleased/216045-capture-todo-resolution.yml
new file mode 100644
index 00000000000..cc43635a120
--- /dev/null
+++ b/changelogs/unreleased/216045-capture-todo-resolution.yml
@@ -0,0 +1,5 @@
+---
+title: Store Todo resolution method
+merge_request: 32753
+author:
+type: added
diff --git a/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml b/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml
new file mode 100644
index 00000000000..0a8df78d0c7
--- /dev/null
+++ b/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml
@@ -0,0 +1,5 @@
+---
+title: Validate regex before sending them to CleanupContainerRepositoryWorker
+merge_request: 34282
+author:
+type: added
diff --git a/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml b/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml
new file mode 100644
index 00000000000..c6df3112d90
--- /dev/null
+++ b/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml
@@ -0,0 +1,5 @@
+---
+title: Container expiration policy regular expressions are now validated
+merge_request: 34063
+author:
+type: added
diff --git a/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml b/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml
new file mode 100644
index 00000000000..becb89455fd
--- /dev/null
+++ b/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml
@@ -0,0 +1,5 @@
+---
+title: Add application limits to instance level CI/CD variables
+merge_request: 32575
+author:
+type: added
diff --git a/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml b/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml
new file mode 100644
index 00000000000..16884a14a1e
--- /dev/null
+++ b/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml
@@ -0,0 +1,5 @@
+---
+title: Prevent emails to user on expiry of impersonation token
+merge_request: 32140
+author:
+type: fixed
diff --git a/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml b/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml
new file mode 100644
index 00000000000..834fef6f01b
--- /dev/null
+++ b/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml
@@ -0,0 +1,5 @@
+---
+title: Automatically resolve alert when associated issue closes
+merge_request: 33278
+author:
+type: added
diff --git a/changelogs/unreleased/216145-jira-users-import-endpoint.yml b/changelogs/unreleased/216145-jira-users-import-endpoint.yml
new file mode 100644
index 00000000000..54c3a130b07
--- /dev/null
+++ b/changelogs/unreleased/216145-jira-users-import-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Create graphQL endpoint for Jira users import
+merge_request: 33501
+author:
+type: added
diff --git a/changelogs/unreleased/216145-project-members-graphql.yml b/changelogs/unreleased/216145-project-members-graphql.yml
new file mode 100644
index 00000000000..b64407b8b35
--- /dev/null
+++ b/changelogs/unreleased/216145-project-members-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Add members to project graphQL endpoint
+merge_request: 33418
+author:
+type: added
diff --git a/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml b/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml
new file mode 100644
index 00000000000..25b0c302cf2
--- /dev/null
+++ b/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml
@@ -0,0 +1,5 @@
+---
+title: Fix issuable listings with any label filter
+merge_request: 31729
+author:
+type: fixed
diff --git a/changelogs/unreleased/216174-track-mr-usage.yml b/changelogs/unreleased/216174-track-mr-usage.yml
new file mode 100644
index 00000000000..90374fa85f7
--- /dev/null
+++ b/changelogs/unreleased/216174-track-mr-usage.yml
@@ -0,0 +1,5 @@
+---
+title: Track merge_requests_users usage data
+merge_request: 32562
+author:
+type: changed
diff --git a/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml b/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml
new file mode 100644
index 00000000000..ab77ed18444
--- /dev/null
+++ b/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml
@@ -0,0 +1,5 @@
+---
+title: Add column for alert slack notifications
+merge_request: 33017
+author:
+type: added
diff --git a/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml b/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml
new file mode 100644
index 00000000000..1d211732e04
--- /dev/null
+++ b/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml
@@ -0,0 +1,5 @@
+---
+title: Render user-defined links in dashboard yml file on metrics dashboard
+merge_request: 32895
+author:
+type: added
diff --git a/changelogs/unreleased/216640-insert-image-modal.yml b/changelogs/unreleased/216640-insert-image-modal.yml
new file mode 100644
index 00000000000..46d43736921
--- /dev/null
+++ b/changelogs/unreleased/216640-insert-image-modal.yml
@@ -0,0 +1,5 @@
+---
+title: Add ability to insert an image via SSE
+merge_request: 33029
+author:
+type: added
diff --git a/changelogs/unreleased/216677-track-static-site-editor-initializations.yml b/changelogs/unreleased/216677-track-static-site-editor-initializations.yml
new file mode 100644
index 00000000000..e8d87d70250
--- /dev/null
+++ b/changelogs/unreleased/216677-track-static-site-editor-initializations.yml
@@ -0,0 +1,5 @@
+---
+title: Track when Static Site Editor is initialized
+merge_request: 34215
+author:
+type: added
diff --git a/changelogs/unreleased/216678-sse-track-merge-requests.yml b/changelogs/unreleased/216678-sse-track-merge-requests.yml
new file mode 100644
index 00000000000..30d3f722b50
--- /dev/null
+++ b/changelogs/unreleased/216678-sse-track-merge-requests.yml
@@ -0,0 +1,5 @@
+---
+title: Track merge requests submitted by Static Site Editor
+merge_request: 34105
+author:
+type: added
diff --git a/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml b/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml
new file mode 100644
index 00000000000..cfcd401f6ca
--- /dev/null
+++ b/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml
@@ -0,0 +1,5 @@
+---
+title: Fix prometheus alerts not being automatically created
+merge_request: 33806
+author:
+type: fixed
diff --git a/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml b/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml
new file mode 100644
index 00000000000..286453d9575
--- /dev/null
+++ b/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml
@@ -0,0 +1,5 @@
+---
+title: Improve Container Registry UI header
+merge_request: 32424
+author:
+type: changed
diff --git a/changelogs/unreleased/216757-add-tags-count.yml b/changelogs/unreleased/216757-add-tags-count.yml
new file mode 100644
index 00000000000..22737f7a914
--- /dev/null
+++ b/changelogs/unreleased/216757-add-tags-count.yml
@@ -0,0 +1,5 @@
+---
+title: Add tags_count to container registry api and controller
+merge_request: 32141
+author:
+type: changed
diff --git a/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml b/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml
new file mode 100644
index 00000000000..c9b7a195002
--- /dev/null
+++ b/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml
@@ -0,0 +1,5 @@
+---
+title: Include tag count in the image repository list
+merge_request: 33027
+author:
+type: changed
diff --git a/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml b/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml
new file mode 100644
index 00000000000..c7fec94b9fb
--- /dev/null
+++ b/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml
@@ -0,0 +1,5 @@
+---
+title: Allow CI_JOB_TOKEN for authenticating to the Terraform state API
+merge_request: 34618
+author:
+type: added
diff --git a/changelogs/unreleased/216797-style-toastui-menus.yml b/changelogs/unreleased/216797-style-toastui-menus.yml
new file mode 100644
index 00000000000..0f87d9cef1e
--- /dev/null
+++ b/changelogs/unreleased/216797-style-toastui-menus.yml
@@ -0,0 +1,5 @@
+---
+title: Style ToastUI contextual menus
+merge_request: 33719
+author:
+type: changed
diff --git a/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml b/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml
new file mode 100644
index 00000000000..2885d9d5e26
--- /dev/null
+++ b/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml
@@ -0,0 +1,5 @@
+---
+title: Update Static Site Editor WYSIWYG mode to hide front matter
+merge_request: 33441
+author:
+type: added
diff --git a/changelogs/unreleased/216835-instrument-db-calls.yml b/changelogs/unreleased/216835-instrument-db-calls.yml
new file mode 100644
index 00000000000..6e1af13b4c7
--- /dev/null
+++ b/changelogs/unreleased/216835-instrument-db-calls.yml
@@ -0,0 +1,6 @@
+---
+title: Add number of database calls to Prometheus metrics and logs for sidekiq and
+ request
+merge_request: 32131
+author:
+type: added
diff --git a/changelogs/unreleased/216865-confirm-leave-site.yml b/changelogs/unreleased/216865-confirm-leave-site.yml
new file mode 100644
index 00000000000..3d6b47db91f
--- /dev/null
+++ b/changelogs/unreleased/216865-confirm-leave-site.yml
@@ -0,0 +1,5 @@
+---
+title: Display confirmation modal when user exits SSE and there are unsaved changes
+merge_request: 33103
+author:
+type: added
diff --git a/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml b/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml
new file mode 100644
index 00000000000..f4a06320e47
--- /dev/null
+++ b/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml
@@ -0,0 +1,5 @@
+---
+title: Fallback to lowest visibility level in snippet visibility radio
+merge_request: 31847
+author: Jacopo Beschi @jacopo-beschi
+type: fixed
diff --git a/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml b/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml
new file mode 100644
index 00000000000..1194adab7a3
--- /dev/null
+++ b/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml
@@ -0,0 +1,5 @@
+---
+title: Add sticky title on Issue pages
+merge_request: 33983
+author:
+type: added
diff --git a/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml b/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml
new file mode 100644
index 00000000000..4b2b857cb85
--- /dev/null
+++ b/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml
@@ -0,0 +1,5 @@
+---
+title: Improve performance of commit search by limiting the number of results requested
+merge_request: 32260
+author:
+type: performance
diff --git a/changelogs/unreleased/216939-remove-async-mr-check-ff.yml b/changelogs/unreleased/216939-remove-async-mr-check-ff.yml
new file mode 100644
index 00000000000..b66cb44de4b
--- /dev/null
+++ b/changelogs/unreleased/216939-remove-async-mr-check-ff.yml
@@ -0,0 +1,5 @@
+---
+title: Remove async_merge_request_check_mergeability feature flag
+merge_request: 33917
+author:
+type: changed
diff --git a/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml b/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml
new file mode 100644
index 00000000000..c109a644871
--- /dev/null
+++ b/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml
@@ -0,0 +1,5 @@
+---
+title: Turn off alert issue creation by default
+merge_request: 34107
+author:
+type: added
diff --git a/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml b/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml
new file mode 100644
index 00000000000..45aea72ae24
--- /dev/null
+++ b/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml
@@ -0,0 +1,5 @@
+---
+title: Remove FF hide_token_from_runners_api
+merge_request: 33947
+author:
+type: other
diff --git a/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml b/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml
new file mode 100644
index 00000000000..b3f61c924fa
--- /dev/null
+++ b/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml
@@ -0,0 +1,6 @@
+---
+title: Close open reply input fields in the design view sidebar when leaving a new
+ comment
+merge_request: 33587
+author:
+type: added
diff --git a/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml b/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml
new file mode 100644
index 00000000000..da139df5643
--- /dev/null
+++ b/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Expose Jira imported issues count in GraphQL
+merge_request: 32580
+author:
+type: added
diff --git a/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml b/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml
new file mode 100644
index 00000000000..9306f5a9144
--- /dev/null
+++ b/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml
@@ -0,0 +1,5 @@
+---
+title: Add warning popup for Elastic Stack update
+merge_request: 31972
+author:
+type: added
diff --git a/changelogs/unreleased/217570-improve-performance-for-blame-api.yml b/changelogs/unreleased/217570-improve-performance-for-blame-api.yml
new file mode 100644
index 00000000000..390e19dc333
--- /dev/null
+++ b/changelogs/unreleased/217570-improve-performance-for-blame-api.yml
@@ -0,0 +1,5 @@
+---
+title: Lazy load commit_date and authored_date on Commit
+merge_request: 34181
+author:
+type: performance
diff --git a/changelogs/unreleased/217616-fix-note-confidential.yml b/changelogs/unreleased/217616-fix-note-confidential.yml
new file mode 100644
index 00000000000..d9e1f8a9b26
--- /dev/null
+++ b/changelogs/unreleased/217616-fix-note-confidential.yml
@@ -0,0 +1,5 @@
+---
+title: Don't display confidential note icon on confidential issue public notes
+merge_request: 32571
+author:
+type: fixed
diff --git a/changelogs/unreleased/217666-prometheus-api-client.yml b/changelogs/unreleased/217666-prometheus-api-client.yml
new file mode 100644
index 00000000000..cb1f4eb193b
--- /dev/null
+++ b/changelogs/unreleased/217666-prometheus-api-client.yml
@@ -0,0 +1,5 @@
+---
+title: Include available instance memory in usage ping
+merge_request: 32315
+author:
+type: other
diff --git a/changelogs/unreleased/217670-alerts-count.yml b/changelogs/unreleased/217670-alerts-count.yml
new file mode 100644
index 00000000000..5a3995be0ce
--- /dev/null
+++ b/changelogs/unreleased/217670-alerts-count.yml
@@ -0,0 +1,5 @@
+---
+title: Organize alerts by status tabs
+merge_request: 32582
+author:
+type: added
diff --git a/changelogs/unreleased/217680-health-metric-instrumentation.yml b/changelogs/unreleased/217680-health-metric-instrumentation.yml
new file mode 100644
index 00000000000..b1f55701c08
--- /dev/null
+++ b/changelogs/unreleased/217680-health-metric-instrumentation.yml
@@ -0,0 +1,5 @@
+---
+title: Track Sentry error status updates with dedicated actions
+merge_request: 33623
+author:
+type: changed
diff --git a/changelogs/unreleased/217680-health-metrics-instrumentation.yml b/changelogs/unreleased/217680-health-metrics-instrumentation.yml
new file mode 100644
index 00000000000..77ae44aaf38
--- /dev/null
+++ b/changelogs/unreleased/217680-health-metrics-instrumentation.yml
@@ -0,0 +1,5 @@
+---
+title: Monitor:Health metrics instrumenation
+merge_request: 32846
+author:
+type: added
diff --git a/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml b/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml
new file mode 100644
index 00000000000..27b6d0dd58c
--- /dev/null
+++ b/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml
@@ -0,0 +1,5 @@
+---
+title: Add opacity transition to active design discussion pins
+merge_request: 33493
+author:
+type: other
diff --git a/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml b/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml
new file mode 100644
index 00000000000..8369dbc3def
--- /dev/null
+++ b/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml
@@ -0,0 +1,5 @@
+---
+title: Add time range to user-defined links in metrics dashboard
+merge_request: 33663
+author:
+type: added
diff --git a/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml b/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml
new file mode 100644
index 00000000000..c90ceb3190b
--- /dev/null
+++ b/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml
@@ -0,0 +1,5 @@
+---
+title: Make commits author button confirm to Pajamas specs
+merge_request: 32821
+author:
+type: fixed
diff --git a/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml b/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml
new file mode 100644
index 00000000000..d9a68248010
--- /dev/null
+++ b/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml
@@ -0,0 +1,5 @@
+---
+title: Add project_id, user_id, status, ref index to ci_pipelines
+merge_request: 33290
+author:
+type: performance
diff --git a/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml b/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml
new file mode 100644
index 00000000000..79ffa011f63
--- /dev/null
+++ b/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Add Evidence to Releases GraphQL endpoint
+merge_request: 33254
+author:
+type: added
diff --git a/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml b/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml
new file mode 100644
index 00000000000..d237974389a
--- /dev/null
+++ b/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml
@@ -0,0 +1,5 @@
+---
+title: Enable CI Inheriting Env Variables feature
+merge_request: 34495
+author:
+type: added
diff --git a/changelogs/unreleased/217934-snippet-description-files.yml b/changelogs/unreleased/217934-snippet-description-files.yml
new file mode 100644
index 00000000000..193188beeb8
--- /dev/null
+++ b/changelogs/unreleased/217934-snippet-description-files.yml
@@ -0,0 +1,5 @@
+---
+title: Send information about attached files to the GraphQL mutation
+merge_request: 34221
+author:
+type: fixed
diff --git a/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml b/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml
new file mode 100644
index 00000000000..b62aa0a8c20
--- /dev/null
+++ b/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml
@@ -0,0 +1,5 @@
+---
+title: Add value length validations for instance level variable
+merge_request: 32303
+author:
+type: fixed
diff --git a/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml b/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml
new file mode 100644
index 00000000000..2d06af04985
--- /dev/null
+++ b/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml
@@ -0,0 +1,5 @@
+---
+title: Make project selector in various dashboard more translatable
+merge_request: 33771
+author:
+type: other
diff --git a/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml b/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml
new file mode 100644
index 00000000000..bdb87ceee3b
--- /dev/null
+++ b/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Fix Incomplete Kubernetes Cluster Status List
+merge_request: 33344
+author:
+type: fixed
diff --git a/changelogs/unreleased/218025-xff-is-a-400-error.yml b/changelogs/unreleased/218025-xff-is-a-400-error.yml
new file mode 100644
index 00000000000..737fc01315e
--- /dev/null
+++ b/changelogs/unreleased/218025-xff-is-a-400-error.yml
@@ -0,0 +1,5 @@
+---
+title: Convert IP spoofing errors into client errors
+merge_request: 33280
+author:
+type: other
diff --git a/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml b/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml
new file mode 100644
index 00000000000..fa95f5e36c5
--- /dev/null
+++ b/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml
@@ -0,0 +1,5 @@
+---
+title: Add index to issues and epics on last_edited_by_id
+merge_request: 33075
+author:
+type: performance
diff --git a/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml b/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml
new file mode 100644
index 00000000000..65b51037ce6
--- /dev/null
+++ b/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml
@@ -0,0 +1,5 @@
+---
+title: Add button to create an issue from an alert management alert
+merge_request: 33221
+author:
+type: added
diff --git a/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml b/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml
new file mode 100644
index 00000000000..db500c26f45
--- /dev/null
+++ b/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml
@@ -0,0 +1,5 @@
+---
+title: Create issue from alert
+merge_request: 33213
+author:
+type: added
diff --git a/changelogs/unreleased/218165-add-note-no-extend-ecs.yml b/changelogs/unreleased/218165-add-note-no-extend-ecs.yml
new file mode 100644
index 00000000000..7952028f97e
--- /dev/null
+++ b/changelogs/unreleased/218165-add-note-no-extend-ecs.yml
@@ -0,0 +1,5 @@
+---
+title: Add note to ECS CI template
+merge_request: 32597
+author:
+type: added
diff --git a/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml b/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml
new file mode 100644
index 00000000000..5be7a069ece
--- /dev/null
+++ b/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml
@@ -0,0 +1,5 @@
+---
+title: Allow wiki pages with +<> characters in their title to be saved
+merge_request: 33803
+author:
+type: fixed
diff --git a/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml b/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml
new file mode 100644
index 00000000000..101b8c60287
--- /dev/null
+++ b/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml
@@ -0,0 +1,5 @@
+---
+title: Fix creating release evidence if release is created via UI
+merge_request: 32441
+author:
+type: fixed
diff --git a/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml b/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml
new file mode 100644
index 00000000000..075caecc1c7
--- /dev/null
+++ b/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml
@@ -0,0 +1,5 @@
+---
+title: GraphQL hasNextPage and hasPreviousPage return correct values
+merge_request: 32476
+author:
+type: fixed
diff --git a/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml b/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml
new file mode 100644
index 00000000000..b385ee3a25c
--- /dev/null
+++ b/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml
@@ -0,0 +1,5 @@
+---
+title: Refine SAST language detection by frameworks
+merge_request: 33226
+author:
+type: changed
diff --git a/changelogs/unreleased/218464-expiration-policy-defaults.yml b/changelogs/unreleased/218464-expiration-policy-defaults.yml
new file mode 100644
index 00000000000..ac25d58b034
--- /dev/null
+++ b/changelogs/unreleased/218464-expiration-policy-defaults.yml
@@ -0,0 +1,5 @@
+---
+title: Update container expiration policy database defaults
+merge_request: 32600
+author:
+type: fixed
diff --git a/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml b/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml
new file mode 100644
index 00000000000..fa212bf2121
--- /dev/null
+++ b/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml
@@ -0,0 +1,5 @@
+---
+title: Hid copy contents button when blob has rendering error
+merge_request: 32632
+author:
+type: fixed
diff --git a/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml b/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml
new file mode 100644
index 00000000000..0713e96b714
--- /dev/null
+++ b/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml
@@ -0,0 +1,5 @@
+---
+title: Allow generic endpoint to receive alerts from external Prometheus
+merge_request: 32676
+author:
+type: added
diff --git a/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml b/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml
new file mode 100644
index 00000000000..da712f0aa59
--- /dev/null
+++ b/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml
@@ -0,0 +1,5 @@
+---
+title: Hide "Import from Jira" option from non-entitled users
+merge_request: 32685
+author:
+type: fixed
diff --git a/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml b/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml
new file mode 100644
index 00000000000..758b08c3a42
--- /dev/null
+++ b/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml
@@ -0,0 +1,5 @@
+---
+title: Fix 404 when downloading a non-archive artifact
+merge_request: 32811
+author:
+type: fixed
diff --git a/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml b/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml
new file mode 100644
index 00000000000..5ac63075c1f
--- /dev/null
+++ b/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml
@@ -0,0 +1,5 @@
+---
+title: Less verbose JiraService error logs
+merge_request: 32847
+author:
+type: other
diff --git a/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml b/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml
new file mode 100644
index 00000000000..a556ae4b924
--- /dev/null
+++ b/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml
@@ -0,0 +1,5 @@
+---
+title: Add search argument for AlertStatusCountsResolver
+merge_request: 34596
+author:
+type: added
diff --git a/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml b/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml
new file mode 100644
index 00000000000..843d27d1cea
--- /dev/null
+++ b/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml
@@ -0,0 +1,5 @@
+---
+title: Reduced padding and increased emphasis of titles within the epic tree
+merge_request: 32873
+author:
+type: other
diff --git a/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml b/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml
new file mode 100644
index 00000000000..926db344ade
--- /dev/null
+++ b/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml
@@ -0,0 +1,6 @@
+---
+title: Prevent multiple Auto DevOps deployment jobs running concurrently when using
+ manual rollout
+merge_request: 32824
+author:
+type: fixed
diff --git a/changelogs/unreleased/218757-fix-polling-for-events.yml b/changelogs/unreleased/218757-fix-polling-for-events.yml
new file mode 100644
index 00000000000..10accb9ba4d
--- /dev/null
+++ b/changelogs/unreleased/218757-fix-polling-for-events.yml
@@ -0,0 +1,5 @@
+---
+title: Fix polling for resource events
+merge_request: 33025
+author:
+type: fixed
diff --git a/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml b/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml
new file mode 100644
index 00000000000..f48f7d11cca
--- /dev/null
+++ b/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml
@@ -0,0 +1,5 @@
+---
+title: Fix relative URL root in wiki_base_path
+merge_request: 33841
+author:
+type: fixed
diff --git a/changelogs/unreleased/219002-remove-ghost-column.yml b/changelogs/unreleased/219002-remove-ghost-column.yml
new file mode 100644
index 00000000000..0af12a67b20
--- /dev/null
+++ b/changelogs/unreleased/219002-remove-ghost-column.yml
@@ -0,0 +1,5 @@
+---
+title: Remove obsolete users.ghost column
+merge_request: 32957
+author:
+type: other
diff --git a/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml b/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml
new file mode 100644
index 00000000000..a56c63353ad
--- /dev/null
+++ b/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml
@@ -0,0 +1,5 @@
+---
+title: Fix a bug where some Vue apps would be unable to load when DAG tab is disabled
+merge_request: 32966
+author:
+type: fixed
diff --git a/changelogs/unreleased/219074-safe-link-validation.yml b/changelogs/unreleased/219074-safe-link-validation.yml
new file mode 100644
index 00000000000..afce591505a
--- /dev/null
+++ b/changelogs/unreleased/219074-safe-link-validation.yml
@@ -0,0 +1,5 @@
+---
+title: Add validation step on backend for metrics dashboard links
+merge_request: 34204
+author:
+type: added
diff --git a/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml b/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml
new file mode 100644
index 00000000000..232842c3c5a
--- /dev/null
+++ b/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml
@@ -0,0 +1,5 @@
+---
+title: Fix overflow issue in MR and Issue comments
+merge_request: 33100
+author:
+type: fixed
diff --git a/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml b/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml
new file mode 100644
index 00000000000..b9f98664dff
--- /dev/null
+++ b/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml
@@ -0,0 +1,5 @@
+---
+title: Add snippet DB visibility check in spec
+merge_request: 33388
+author: Jacopo Beschi @jacopo-beschi
+type: changed
diff --git a/changelogs/unreleased/219210-column-date-format.yml b/changelogs/unreleased/219210-column-date-format.yml
new file mode 100644
index 00000000000..6b71df17130
--- /dev/null
+++ b/changelogs/unreleased/219210-column-date-format.yml
@@ -0,0 +1,5 @@
+---
+title: Format metrics column chart x axis dates
+merge_request: 33681
+author:
+type: changed
diff --git a/changelogs/unreleased/219210-stacked-column-date-format.yml b/changelogs/unreleased/219210-stacked-column-date-format.yml
new file mode 100644
index 00000000000..86ce1103c97
--- /dev/null
+++ b/changelogs/unreleased/219210-stacked-column-date-format.yml
@@ -0,0 +1,5 @@
+---
+title: Add date time format to the monitor stacked-column chart
+merge_request: 33814
+author:
+type: changed
diff --git a/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml b/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml
new file mode 100644
index 00000000000..469a372e78e
--- /dev/null
+++ b/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml
@@ -0,0 +1,5 @@
+---
+title: Add solarized dark for Web IDE
+merge_request: 33148
+author:
+type: added
diff --git a/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml b/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml
new file mode 100644
index 00000000000..fc732222a6f
--- /dev/null
+++ b/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve spacing ux debt on Release assets form field
+merge_request: 33684
+author:
+type: fixed
diff --git a/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml b/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml
new file mode 100644
index 00000000000..4581e4d0566
--- /dev/null
+++ b/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml
@@ -0,0 +1,6 @@
+---
+title: Fixed dashboard YAML file validaiton for files which do not contain object
+ as root element
+merge_request: 33935
+author:
+type: fixed
diff --git a/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml b/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml
new file mode 100644
index 00000000000..4a4e268171e
--- /dev/null
+++ b/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml
@@ -0,0 +1,5 @@
+---
+title: Fix ambiguous string concatenation on CleanupProjectsWithMissingNamespace
+merge_request: 33497
+author:
+type: fixed
diff --git a/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml b/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml
new file mode 100644
index 00000000000..d60ab67bee9
--- /dev/null
+++ b/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml
@@ -0,0 +1,5 @@
+---
+title: Add route for the lost-and-found group and update the route of orphaned projects
+merge_request: 34285
+author:
+type: fixed
diff --git a/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml b/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml
new file mode 100644
index 00000000000..9a3557f0673
--- /dev/null
+++ b/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml
@@ -0,0 +1,5 @@
+---
+title: Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS
+merge_request: 34076
+author:
+type: changed
diff --git a/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml b/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml
new file mode 100644
index 00000000000..1c58bf63840
--- /dev/null
+++ b/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml
@@ -0,0 +1,5 @@
+---
+title: Prevent duplicate issues when importing from CSV
+merge_request: 33626
+author:
+type: fixed
diff --git a/changelogs/unreleased/220058.yml b/changelogs/unreleased/220058.yml
new file mode 100644
index 00000000000..4327732eef7
--- /dev/null
+++ b/changelogs/unreleased/220058.yml
@@ -0,0 +1,5 @@
+---
+title: Fix sidebar spacing for alert details
+merge_request: 33630
+author:
+type: fixed
diff --git a/changelogs/unreleased/220144-substitute-variables-in-alerts.yml b/changelogs/unreleased/220144-substitute-variables-in-alerts.yml
new file mode 100644
index 00000000000..b270feee3eb
--- /dev/null
+++ b/changelogs/unreleased/220144-substitute-variables-in-alerts.yml
@@ -0,0 +1,5 @@
+---
+title: Fix bug with variable substitution in alerts
+merge_request: 33772
+author:
+type: fixed
diff --git a/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml b/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml
new file mode 100644
index 00000000000..e6c409337ef
--- /dev/null
+++ b/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Value Stream Analytics summary when using non-english locale
+merge_request: 33717
+author:
+type: fixed
diff --git a/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml b/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml
new file mode 100644
index 00000000000..7d319fb4f91
--- /dev/null
+++ b/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml
@@ -0,0 +1,5 @@
+---
+title: Mask key comments when exposing SSH/Deploy Keys via the API
+merge_request: 34255
+author:
+type: added
diff --git a/changelogs/unreleased/220192-fix-pagination-pd.yml b/changelogs/unreleased/220192-fix-pagination-pd.yml
new file mode 100644
index 00000000000..e0785d09008
--- /dev/null
+++ b/changelogs/unreleased/220192-fix-pagination-pd.yml
@@ -0,0 +1,5 @@
+---
+title: Fix pagination for resource label events
+merge_request: 33821
+author:
+type: fixed
diff --git a/changelogs/unreleased/220195-display-epics-on-swimlanes.yml b/changelogs/unreleased/220195-display-epics-on-swimlanes.yml
new file mode 100644
index 00000000000..46880ee8b8d
--- /dev/null
+++ b/changelogs/unreleased/220195-display-epics-on-swimlanes.yml
@@ -0,0 +1,5 @@
+---
+title: Update board header icons
+merge_request: 34366
+author:
+type: changed
diff --git a/changelogs/unreleased/220209-optimize-container-repository-query.yml b/changelogs/unreleased/220209-optimize-container-repository-query.yml
new file mode 100644
index 00000000000..6376d06cb53
--- /dev/null
+++ b/changelogs/unreleased/220209-optimize-container-repository-query.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize container repository for groups query
+merge_request: 34364
+author:
+type: performance
diff --git a/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml b/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml
new file mode 100644
index 00000000000..e6a8a952561
--- /dev/null
+++ b/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml
@@ -0,0 +1,5 @@
+---
+title: Do not create duplicate issues for exising Alert Management alerts
+merge_request: 33860
+author:
+type: fixed
diff --git a/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml b/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml
new file mode 100644
index 00000000000..fc1198d8344
--- /dev/null
+++ b/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml
@@ -0,0 +1,5 @@
+---
+title: Enable Slack notifications for alerts
+merge_request: 34038
+author:
+type: added
diff --git a/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml b/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml
new file mode 100644
index 00000000000..39231901fae
--- /dev/null
+++ b/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml
@@ -0,0 +1,5 @@
+---
+title: Harden CI pipelines usage data queries with an index
+merge_request: 34045
+author:
+type: performance
diff --git a/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml b/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml
new file mode 100644
index 00000000000..15e671bad56
--- /dev/null
+++ b/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml
@@ -0,0 +1,5 @@
+---
+title: Update Static Site Editor toolbar to group inline-code and code-block buttons together
+merge_request: 34006
+author:
+type: changed
diff --git a/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml b/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml
new file mode 100644
index 00000000000..9f01694f06a
--- /dev/null
+++ b/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml
@@ -0,0 +1,5 @@
+---
+title: Use GitLab SVG icon for file attacher action
+merge_request: 34196
+author:
+type: other
diff --git a/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml b/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml
new file mode 100644
index 00000000000..58d594fe4f8
--- /dev/null
+++ b/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml
@@ -0,0 +1,5 @@
+---
+title: Fix undefined method error
+merge_request: 34522
+author:
+type: fixed
diff --git a/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml b/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml
new file mode 100644
index 00000000000..7fca5a43e6c
--- /dev/null
+++ b/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml
@@ -0,0 +1,5 @@
+---
+title: Fix order of integrations to be sorted alphabetically
+merge_request: 34501
+author:
+type: fixed
diff --git a/changelogs/unreleased/221174-graphql-pagination-bug.yml b/changelogs/unreleased/221174-graphql-pagination-bug.yml
new file mode 100644
index 00000000000..70765ae708b
--- /dev/null
+++ b/changelogs/unreleased/221174-graphql-pagination-bug.yml
@@ -0,0 +1,5 @@
+---
+title: GraphQL - properly handle pagination of millisecond-precision timestamps
+merge_request: 34352
+author:
+type: fixed
diff --git a/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml
new file mode 100644
index 00000000000..f6f54617e1a
--- /dev/null
+++ b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml
@@ -0,0 +1,5 @@
+---
+title: Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml
+merge_request: 32162
+author: Gilang Gumilar
+type: changed
diff --git a/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml
new file mode 100644
index 00000000000..54168b42538
--- /dev/null
+++ b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml
@@ -0,0 +1,5 @@
+---
+title: Externalize i18n strings from ./app/views/shared/milestones/_sidebar.html.haml
+merge_request: 32150
+author: Gilang Gumilar
+type: changed
diff --git a/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml b/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml
new file mode 100644
index 00000000000..fb2b87754da
--- /dev/null
+++ b/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml
@@ -0,0 +1,5 @@
+---
+title: Externalize i18n strings from ./app/views/shared/_promo.html.haml
+merge_request: 32109
+author: Gilang Gumilar
+type: changed
diff --git a/changelogs/unreleased/22822-ide-paste-images.yml b/changelogs/unreleased/22822-ide-paste-images.yml
new file mode 100644
index 00000000000..26a3adf70a6
--- /dev/null
+++ b/changelogs/unreleased/22822-ide-paste-images.yml
@@ -0,0 +1,5 @@
+---
+title: Add support for pasting images in the Web IDE
+merge_request: 33256
+author:
+type: added
diff --git a/changelogs/unreleased/22834-ff-merge-msg.yml b/changelogs/unreleased/22834-ff-merge-msg.yml
new file mode 100644
index 00000000000..6e2e09bd654
--- /dev/null
+++ b/changelogs/unreleased/22834-ff-merge-msg.yml
@@ -0,0 +1,5 @@
+---
+title: Improve fast-forward merge is not possible message
+merge_request: 22834
+author: Ben Bodenmiller
+type: other
diff --git a/changelogs/unreleased/22868-fix-remove-button-alignment.yml b/changelogs/unreleased/22868-fix-remove-button-alignment.yml
new file mode 100644
index 00000000000..63c755d2479
--- /dev/null
+++ b/changelogs/unreleased/22868-fix-remove-button-alignment.yml
@@ -0,0 +1,5 @@
+---
+title: Fix "Broadcast Messages" table overflow and button alignment
+merge_request: 32801
+author:
+type: fixed
diff --git a/changelogs/unreleased/23352-editorconfig.yml b/changelogs/unreleased/23352-editorconfig.yml
new file mode 100644
index 00000000000..a80fb3556c8
--- /dev/null
+++ b/changelogs/unreleased/23352-editorconfig.yml
@@ -0,0 +1,5 @@
+---
+title: Support reading .editorconfig files inside of the Web IDE
+merge_request: 32378
+author:
+type: added
diff --git a/changelogs/unreleased/25486-batch-suggestions.yml b/changelogs/unreleased/25486-batch-suggestions.yml
new file mode 100644
index 00000000000..157e50c2a15
--- /dev/null
+++ b/changelogs/unreleased/25486-batch-suggestions.yml
@@ -0,0 +1,5 @@
+---
+title: User can apply multiple suggestions at the same time.
+merge_request: 22439
+author: Jesse Hall
+type: added
diff --git a/changelogs/unreleased/25830-find-file-button.yml b/changelogs/unreleased/25830-find-file-button.yml
new file mode 100644
index 00000000000..cd0b2104ac2
--- /dev/null
+++ b/changelogs/unreleased/25830-find-file-button.yml
@@ -0,0 +1,5 @@
+---
+title: Remove search icon from Project find file button
+merge_request: 33198
+author:
+type: changed
diff --git a/changelogs/unreleased/28154-move-controllers-outside-ee.yml b/changelogs/unreleased/28154-move-controllers-outside-ee.yml
new file mode 100644
index 00000000000..3fa60392c65
--- /dev/null
+++ b/changelogs/unreleased/28154-move-controllers-outside-ee.yml
@@ -0,0 +1,5 @@
+---
+title: Move review related controllers/workers outside EE
+merge_request: 32663
+author:
+type: changed
diff --git a/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml b/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml
new file mode 100644
index 00000000000..85f6aa53840
--- /dev/null
+++ b/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml
@@ -0,0 +1,5 @@
+---
+title: Fix rendering of emojis in status tooltips
+merge_request: 32604
+author:
+type: fixed
diff --git a/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml b/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml
new file mode 100644
index 00000000000..bec0d8d3c95
--- /dev/null
+++ b/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml
@@ -0,0 +1,5 @@
+---
+title: Show disabled suggestion button with tooltip message
+merge_request: 33357
+author:
+type: changed
diff --git a/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml b/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml
new file mode 100644
index 00000000000..565fed3508e
--- /dev/null
+++ b/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml
@@ -0,0 +1,5 @@
+---
+title: Footer system message fix
+merge_request:
+author:
+type: fixed
diff --git a/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml b/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml
new file mode 100644
index 00000000000..34bc383ec38
--- /dev/null
+++ b/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml
@@ -0,0 +1,5 @@
+---
+title: Reorder diffs compare versions dropdowns.
+merge_request: 31770
+author: Gilang Gumilar
+type: changed
diff --git a/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml b/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml
new file mode 100644
index 00000000000..6ed24768729
--- /dev/null
+++ b/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml
@@ -0,0 +1,5 @@
+---
+doc: "cicd: yaml: clarify rules:if when behaviour"
+merge_request: 33040
+author: Melvin Vermeeren
+type: changed
diff --git a/changelogs/unreleased/33185-add-missing-install-instruction.yml b/changelogs/unreleased/33185-add-missing-install-instruction.yml
new file mode 100644
index 00000000000..db82588bd04
--- /dev/null
+++ b/changelogs/unreleased/33185-add-missing-install-instruction.yml
@@ -0,0 +1,5 @@
+---
+doc: "doc: install: add missing exiftool dependency"
+merge_request: 33185
+author: Stefan Schrijvers
+type: fixed
diff --git a/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml b/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml
new file mode 100644
index 00000000000..d2ee2c50d00
--- /dev/null
+++ b/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve Graph code coverage changes over time for a project
+merge_request: 26174
+author:
+type: added
diff --git a/changelogs/unreleased/37412-update-error-tracking-list-message.yml b/changelogs/unreleased/37412-update-error-tracking-list-message.yml
new file mode 100644
index 00000000000..5c6ece8dd51
--- /dev/null
+++ b/changelogs/unreleased/37412-update-error-tracking-list-message.yml
@@ -0,0 +1,5 @@
+---
+title: Update text in error tracking list error message
+merge_request: 33872
+author:
+type: fixed
diff --git a/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml b/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml
new file mode 100644
index 00000000000..e2ab210a333
--- /dev/null
+++ b/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml
@@ -0,0 +1,5 @@
+---
+title: Remove deprecated dashboard & group milestone pages
+merge_request: 13237
+author:
+type: removed
diff --git a/changelogs/unreleased/500-metrics-creation.yml b/changelogs/unreleased/500-metrics-creation.yml
new file mode 100644
index 00000000000..83a93e2ff04
--- /dev/null
+++ b/changelogs/unreleased/500-metrics-creation.yml
@@ -0,0 +1,5 @@
+---
+title: Fix for metrics creation when saving MR
+merge_request: 32668
+author:
+type: fixed
diff --git a/changelogs/unreleased/Fix-spelling-error.yml b/changelogs/unreleased/Fix-spelling-error.yml
new file mode 100644
index 00000000000..c851da131fe
--- /dev/null
+++ b/changelogs/unreleased/Fix-spelling-error.yml
@@ -0,0 +1,5 @@
+---
+title: Fix spelling error on Ci::RunnersFinder
+merge_request: 32985
+author: Arthur de Lapertosa Lisboa
+type: fixed
diff --git a/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml b/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml
new file mode 100644
index 00000000000..27c9dbaf3b6
--- /dev/null
+++ b/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove addAssignee logic from issue model
+merge_request: 32231
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml b/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml
new file mode 100644
index 00000000000..df0e490e1ca
--- /dev/null
+++ b/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml
@@ -0,0 +1,5 @@
+---
+title: Remove addLabel Logic from issue models
+merge_request: 32233
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml b/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml
new file mode 100644
index 00000000000..7c537b04d84
--- /dev/null
+++ b/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml
@@ -0,0 +1,5 @@
+---
+title: Remove addMilestone logic from issue model
+merge_request: 32235
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml b/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml
new file mode 100644
index 00000000000..a32c3d5f847
--- /dev/null
+++ b/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml
@@ -0,0 +1,5 @@
+---
+title: Fix loading and empty state styling for alerts list
+merge_request: 32531
+author:
+type: fixed
diff --git a/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml b/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml
new file mode 100644
index 00000000000..2832db23bed
--- /dev/null
+++ b/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove destroy function logic from list model
+merge_request: 32237
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml b/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml
new file mode 100644
index 00000000000..7e4bfe78cf6
--- /dev/null
+++ b/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove findAssignee logic from issue model
+merge_request: 32238
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml b/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml
new file mode 100644
index 00000000000..97fa19ca080
--- /dev/null
+++ b/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove findLabel logic from issue model
+merge_request: 32239
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml b/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml
new file mode 100644
index 00000000000..74d57ff4f14
--- /dev/null
+++ b/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove findIssue logic from list model
+merge_request: 32241
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml b/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml
new file mode 100644
index 00000000000..9323405a02c
--- /dev/null
+++ b/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove moveIssue logic from list model
+merge_request: 32242
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml b/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml
new file mode 100644
index 00000000000..978533e9285
--- /dev/null
+++ b/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove newIssue logic from list model
+merge_request: 32244
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml b/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml
new file mode 100644
index 00000000000..d548c912513
--- /dev/null
+++ b/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml
@@ -0,0 +1,5 @@
+---
+title: Remove nextpage function logic from list model
+merge_request: 31904
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml
new file mode 100644
index 00000000000..df0488a3882
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeAllAssignees logic from issue model
+merge_request: 32247
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml
new file mode 100644
index 00000000000..257f95de712
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeAssignee logic from issue model
+merge_request: 32248
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml b/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml
new file mode 100644
index 00000000000..8d929b1a448
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeIssue logic from list model
+merge_request:
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml b/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml
new file mode 100644
index 00000000000..a04939f68f4
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeLabel logic from issue model
+merge_request: 32251
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml b/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml
new file mode 100644
index 00000000000..18398999113
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeLabels logic from issue model
+merge_request: 32252
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml
new file mode 100644
index 00000000000..ff000f33c53
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeMilestone logic from issue model
+merge_request: 32253
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml b/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml
new file mode 100644
index 00000000000..ba525900849
--- /dev/null
+++ b/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove removeMultipleIssues logic from list model
+merge_request: 32254
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml b/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml
new file mode 100644
index 00000000000..5295fed6e98
--- /dev/null
+++ b/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove setFetchingState logic from issue model
+merge_request: 32255
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml b/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml
new file mode 100644
index 00000000000..38c2b29d18f
--- /dev/null
+++ b/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove setLoadingState logic from issue model
+merge_request: 32226
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml b/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml
new file mode 100644
index 00000000000..6b13103b332
--- /dev/null
+++ b/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove update function logic from list model
+merge_request: 31900
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml b/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml
new file mode 100644
index 00000000000..27af15c3cc5
--- /dev/null
+++ b/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml
@@ -0,0 +1,5 @@
+---
+title: Remove updateData logic from issue model
+merge_request: 32256
+author: nuwe1
+type: other
diff --git a/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml b/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml
new file mode 100644
index 00000000000..48a48e34c69
--- /dev/null
+++ b/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml
@@ -0,0 +1,5 @@
+---
+title: Fix time_tracking help link
+merge_request: 32552
+author:
+type: fixed
diff --git a/changelogs/unreleased/ab-alert-usage-ping.yml b/changelogs/unreleased/ab-alert-usage-ping.yml
new file mode 100644
index 00000000000..408e511cd36
--- /dev/null
+++ b/changelogs/unreleased/ab-alert-usage-ping.yml
@@ -0,0 +1,5 @@
+---
+title: Add count of alerts from all sources to usage ping
+merge_request: 33220
+author:
+type: added
diff --git a/changelogs/unreleased/ab-cleanup-migrations.yml b/changelogs/unreleased/ab-cleanup-migrations.yml
new file mode 100644
index 00000000000..803040ab69b
--- /dev/null
+++ b/changelogs/unreleased/ab-cleanup-migrations.yml
@@ -0,0 +1,5 @@
+---
+title: Squash database migrations prior to 2019 into one
+merge_request: 31936
+author:
+type: other
diff --git a/changelogs/unreleased/ab-monitor-demo-environments-2.yml b/changelogs/unreleased/ab-monitor-demo-environments-2.yml
new file mode 100644
index 00000000000..19bb53079d8
--- /dev/null
+++ b/changelogs/unreleased/ab-monitor-demo-environments-2.yml
@@ -0,0 +1,5 @@
+---
+title: Add Scheduled Job for Monitoring Monitor Group Demo Environments
+merge_request: 27360
+author:
+type: added
diff --git a/changelogs/unreleased/ab-services-partial-indexes.yml b/changelogs/unreleased/ab-services-partial-indexes.yml
new file mode 100644
index 00000000000..15dad096f7b
--- /dev/null
+++ b/changelogs/unreleased/ab-services-partial-indexes.yml
@@ -0,0 +1,5 @@
+---
+title: Adjust condition for partial indexes on services table
+merge_request: 33044
+author:
+type: performance
diff --git a/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml b/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml
new file mode 100644
index 00000000000..8f5ef68ba5b
--- /dev/null
+++ b/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml
@@ -0,0 +1,5 @@
+---
+title: Add API endpoint for resource milestone events
+merge_request: 31720
+author:
+type: added
diff --git a/changelogs/unreleased/add-doc-custom-validators.yml b/changelogs/unreleased/add-doc-custom-validators.yml
new file mode 100644
index 00000000000..86e32801bdc
--- /dev/null
+++ b/changelogs/unreleased/add-doc-custom-validators.yml
@@ -0,0 +1,5 @@
+---
+title: Add doc for custom validators in api styleguide
+merge_request: 26734
+author: Rajendra Kadam
+type: added
diff --git a/changelogs/unreleased/add-experience-level-to-user-preferences.yml b/changelogs/unreleased/add-experience-level-to-user-preferences.yml
new file mode 100644
index 00000000000..2029ebc90d5
--- /dev/null
+++ b/changelogs/unreleased/add-experience-level-to-user-preferences.yml
@@ -0,0 +1,5 @@
+---
+title: Add experience_level to user_preferences
+merge_request: 32784
+author:
+type: added
diff --git a/changelogs/unreleased/add-global-plans.yml b/changelogs/unreleased/add-global-plans.yml
new file mode 100644
index 00000000000..cafd6cfc227
--- /dev/null
+++ b/changelogs/unreleased/add-global-plans.yml
@@ -0,0 +1,5 @@
+---
+title: Adapt Limitable for system-wide features
+merge_request: 32574
+author:
+type: added
diff --git a/changelogs/unreleased/add-group-runners-finder.yml b/changelogs/unreleased/add-group-runners-finder.yml
new file mode 100644
index 00000000000..a90eb2c2e42
--- /dev/null
+++ b/changelogs/unreleased/add-group-runners-finder.yml
@@ -0,0 +1,5 @@
+---
+title: Add finder for group-level runners
+merge_request: 29283
+author: Arthur de Lapertosa Lisboa
+type: added
diff --git a/changelogs/unreleased/add-tags-to-queue-attributes.yml b/changelogs/unreleased/add-tags-to-queue-attributes.yml
new file mode 100644
index 00000000000..fd609109a67
--- /dev/null
+++ b/changelogs/unreleased/add-tags-to-queue-attributes.yml
@@ -0,0 +1,5 @@
+---
+title: Add tags to experimental queue selector attributes
+merge_request: 32651
+author:
+type: added
diff --git a/changelogs/unreleased/add_build_reference.yml b/changelogs/unreleased/add_build_reference.yml
new file mode 100644
index 00000000000..70db43c810d
--- /dev/null
+++ b/changelogs/unreleased/add_build_reference.yml
@@ -0,0 +1,5 @@
+---
+title: Added build_id column to requirements_management_test_reports table
+merge_request: 33184
+author:
+type: other
diff --git a/changelogs/unreleased/ajk-GQL-user-mrs.yml b/changelogs/unreleased/ajk-GQL-user-mrs.yml
new file mode 100644
index 00000000000..103ae1d33dd
--- /dev/null
+++ b/changelogs/unreleased/ajk-GQL-user-mrs.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL support for authored and assigned Merge Requests
+merge_request: 31227
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-design-activity-c.yml b/changelogs/unreleased/ajk-design-activity-c.yml
new file mode 100644
index 00000000000..e9a0ad4b998
--- /dev/null
+++ b/changelogs/unreleased/ajk-design-activity-c.yml
@@ -0,0 +1,5 @@
+---
+title: Add design activity in event streams
+merge_request: 33534
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-design-ref-filter.yml b/changelogs/unreleased/ajk-design-ref-filter.yml
new file mode 100644
index 00000000000..0f77e344d65
--- /dev/null
+++ b/changelogs/unreleased/ajk-design-ref-filter.yml
@@ -0,0 +1,5 @@
+---
+title: Enable GitLab-Flavored Markdown processing for design links
+merge_request: 32446
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-gql-add-mr-author.yml b/changelogs/unreleased/ajk-gql-add-mr-author.yml
new file mode 100644
index 00000000000..f4d8048f54b
--- /dev/null
+++ b/changelogs/unreleased/ajk-gql-add-mr-author.yml
@@ -0,0 +1,5 @@
+---
+title: Add missing Merge Request fields
+merge_request: 30935
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-gql-labels.yml b/changelogs/unreleased/ajk-gql-labels.yml
new file mode 100644
index 00000000000..8716e536492
--- /dev/null
+++ b/changelogs/unreleased/ajk-gql-labels.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL support for project and group labels
+merge_request: 32113
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-gql-lookahead.yml b/changelogs/unreleased/ajk-gql-lookahead.yml
new file mode 100644
index 00000000000..e1d920ba57a
--- /dev/null
+++ b/changelogs/unreleased/ajk-gql-lookahead.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL lookahead support
+merge_request: 32373
+author:
+type: performance
diff --git a/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml b/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml
new file mode 100644
index 00000000000..02c84076fc3
--- /dev/null
+++ b/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml
@@ -0,0 +1,5 @@
+---
+title: Add filters to merge request fields
+merge_request: 32328
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-gql-mr-update.yml b/changelogs/unreleased/ajk-gql-mr-update.yml
new file mode 100644
index 00000000000..7d0b76f4df1
--- /dev/null
+++ b/changelogs/unreleased/ajk-gql-mr-update.yml
@@ -0,0 +1,5 @@
+---
+title: Add mutation to update merge requests
+merge_request: 34748
+author:
+type: added
diff --git a/changelogs/unreleased/ajk-safe-wiki-event-url.yml b/changelogs/unreleased/ajk-safe-wiki-event-url.yml
new file mode 100644
index 00000000000..4e25186e024
--- /dev/null
+++ b/changelogs/unreleased/ajk-safe-wiki-event-url.yml
@@ -0,0 +1,5 @@
+---
+title: Ensure we always generate a valid wiki event URL
+merge_request: 34191
+author:
+type: fixed
diff --git a/changelogs/unreleased/ak-update-google-auth.yml b/changelogs/unreleased/ak-update-google-auth.yml
new file mode 100644
index 00000000000..cb91b9ebe93
--- /dev/null
+++ b/changelogs/unreleased/ak-update-google-auth.yml
@@ -0,0 +1,5 @@
+---
+title: Support IAP protected prometheus installations
+merge_request: 33508
+author:
+type: added
diff --git a/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml b/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml
new file mode 100644
index 00000000000..3d4e35b7322
--- /dev/null
+++ b/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml
@@ -0,0 +1,5 @@
+---
+title: Pass hard delete option to snippets bulk destroy
+merge_request: 33520
+author:
+type: fixed
diff --git a/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml b/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml
new file mode 100644
index 00000000000..de49e91fe13
--- /dev/null
+++ b/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml
@@ -0,0 +1,5 @@
+---
+title: Add index on id and type for Snippets
+merge_request: 32885
+author:
+type: performance
diff --git a/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml b/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml
new file mode 100644
index 00000000000..89a3d978487
--- /dev/null
+++ b/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Add blobs field to SnippetType in GraphQL
+merge_request: 33657
+author:
+type: changed
diff --git a/changelogs/unreleased/alert-assignee-dropdown.yml b/changelogs/unreleased/alert-assignee-dropdown.yml
new file mode 100644
index 00000000000..3ad54932780
--- /dev/null
+++ b/changelogs/unreleased/alert-assignee-dropdown.yml
@@ -0,0 +1,5 @@
+---
+title: Allow the assignment of alerts to users from the alert detail view
+merge_request: 33122
+author:
+type: added
diff --git a/changelogs/unreleased/alert-assignee-list-view.yml b/changelogs/unreleased/alert-assignee-list-view.yml
new file mode 100644
index 00000000000..cb942b87c0b
--- /dev/null
+++ b/changelogs/unreleased/alert-assignee-list-view.yml
@@ -0,0 +1,5 @@
+---
+title: Add database and GraphQL support for alert assignees
+merge_request: 32609
+author:
+type: added
diff --git a/changelogs/unreleased/alert-management-mobile-alignment.yml b/changelogs/unreleased/alert-management-mobile-alignment.yml
new file mode 100644
index 00000000000..04f2c3224ff
--- /dev/null
+++ b/changelogs/unreleased/alert-management-mobile-alignment.yml
@@ -0,0 +1,5 @@
+---
+title: Update alert management mobile table alignment
+merge_request: 32295
+author:
+type: other
diff --git a/changelogs/unreleased/alert-system-notes-tool-tip.yml b/changelogs/unreleased/alert-system-notes-tool-tip.yml
new file mode 100644
index 00000000000..3129a4ff521
--- /dev/null
+++ b/changelogs/unreleased/alert-system-notes-tool-tip.yml
@@ -0,0 +1,5 @@
+---
+title: Enable ability to assign alerts to users with corresponding system notes and todos
+merge_request: 34360
+author:
+type: added
diff --git a/changelogs/unreleased/alert-system-notes.yml b/changelogs/unreleased/alert-system-notes.yml
new file mode 100644
index 00000000000..2cff9e8b2a4
--- /dev/null
+++ b/changelogs/unreleased/alert-system-notes.yml
@@ -0,0 +1,5 @@
+---
+title: Add system note when assigning user to alert
+merge_request: 33217
+author:
+type: added
diff --git a/changelogs/unreleased/alert-table-classes-hotfix.yml b/changelogs/unreleased/alert-table-classes-hotfix.yml
new file mode 100644
index 00000000000..46d4ae10cbb
--- /dev/null
+++ b/changelogs/unreleased/alert-table-classes-hotfix.yml
@@ -0,0 +1,5 @@
+---
+title: Fix broken CSS classes inside alert management list
+merge_request: 33038
+author:
+type: fixed
diff --git a/changelogs/unreleased/allow_skipped.yml b/changelogs/unreleased/allow_skipped.yml
new file mode 100644
index 00000000000..b920298f42e
--- /dev/null
+++ b/changelogs/unreleased/allow_skipped.yml
@@ -0,0 +1,5 @@
+---
+title: Add setting to allow merge on skipped pipeline
+merge_request: 27490
+author: Mathieu Parent
+type: added
diff --git a/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml b/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml
new file mode 100644
index 00000000000..799e32d1578
--- /dev/null
+++ b/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml
@@ -0,0 +1,5 @@
+---
+title: Fix whitespace changes overgrowing the diff container
+merge_request: 32774
+author:
+type: fixed
diff --git a/changelogs/unreleased/asciidoc-alignment-roles.yml b/changelogs/unreleased/asciidoc-alignment-roles.yml
new file mode 100644
index 00000000000..d53d3705243
--- /dev/null
+++ b/changelogs/unreleased/asciidoc-alignment-roles.yml
@@ -0,0 +1,5 @@
+---
+title: 'AsciiDoc: Add support for built-in alignment roles.'
+merge_request: 32928
+author: mnrvwl
+type: fixed
diff --git a/changelogs/unreleased/assign-alerts-sidebar-base.yml b/changelogs/unreleased/assign-alerts-sidebar-base.yml
new file mode 100644
index 00000000000..3785df5e8e0
--- /dev/null
+++ b/changelogs/unreleased/assign-alerts-sidebar-base.yml
@@ -0,0 +1,5 @@
+---
+title: Assign alerts sidebar base
+merge_request 32642:
+author:
+type: changed
diff --git a/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml b/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml
new file mode 100644
index 00000000000..cdf9bb479ce
--- /dev/null
+++ b/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml
@@ -0,0 +1,5 @@
+---
+title: Assign alerts sidebar container fix
+merge_request: 32743
+author:
+type: other
diff --git a/changelogs/unreleased/autodevops-secrets.yml b/changelogs/unreleased/autodevops-secrets.yml
new file mode 100644
index 00000000000..dd1df110620
--- /dev/null
+++ b/changelogs/unreleased/autodevops-secrets.yml
@@ -0,0 +1,5 @@
+---
+title: Add secret detection template to Auto DevOps
+merge_request: 34467
+author:
+type: changed
diff --git a/changelogs/unreleased/aws-guidance.yml b/changelogs/unreleased/aws-guidance.yml
new file mode 100644
index 00000000000..ab3725c1397
--- /dev/null
+++ b/changelogs/unreleased/aws-guidance.yml
@@ -0,0 +1,5 @@
+---
+title: Adds AWS guidance to CI/CD > Add Variable modal
+merge_request: 34009
+author:
+type: added
diff --git a/changelogs/unreleased/browse-locked-artifact.yml b/changelogs/unreleased/browse-locked-artifact.yml
new file mode 100644
index 00000000000..d89739a3de6
--- /dev/null
+++ b/changelogs/unreleased/browse-locked-artifact.yml
@@ -0,0 +1,5 @@
+---
+title: Update artifacts section to show when an artifact is locked
+merge_request: 32992
+author:
+type: changed
diff --git a/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml b/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml
new file mode 100644
index 00000000000..b222b69f295
--- /dev/null
+++ b/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml
@@ -0,0 +1,5 @@
+---
+title: Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG
+merge_request: 33799
+author:
+type: changed
diff --git a/changelogs/unreleased/bump_cluster_applications_version.yml b/changelogs/unreleased/bump_cluster_applications_version.yml
new file mode 100644
index 00000000000..7ea7407350d
--- /dev/null
+++ b/changelogs/unreleased/bump_cluster_applications_version.yml
@@ -0,0 +1,5 @@
+---
+title: Bump cluster-applications version to v0.20.0
+merge_request: 34569
+author:
+type: added
diff --git a/changelogs/unreleased/cablett-email-link.yml b/changelogs/unreleased/cablett-email-link.yml
new file mode 100644
index 00000000000..405bcb649c5
--- /dev/null
+++ b/changelogs/unreleased/cablett-email-link.yml
@@ -0,0 +1,5 @@
+---
+title: Add new issue link to email notification header
+merge_request: 32833
+author:
+type: changed
diff --git a/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml b/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml
new file mode 100644
index 00000000000..4d2128c5910
--- /dev/null
+++ b/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml
@@ -0,0 +1,5 @@
+---
+title: Render Merge request reference as link
+merge_request: 33248
+author:
+type: changed
diff --git a/changelogs/unreleased/calebw-update-stuck-runner-message.yml b/changelogs/unreleased/calebw-update-stuck-runner-message.yml
new file mode 100644
index 00000000000..57c48377ae5
--- /dev/null
+++ b/changelogs/unreleased/calebw-update-stuck-runner-message.yml
@@ -0,0 +1,5 @@
+---
+title: Clarify verbiage for stuck job messages.
+merge_request: 32250
+author:
+type: other
diff --git a/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml b/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml
new file mode 100644
index 00000000000..f32424612b9
--- /dev/null
+++ b/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml
@@ -0,0 +1,5 @@
+---
+title: Change from vendor specific to Gitlab
+merge_request: 34576
+author:
+type: changed
diff --git a/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml b/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml
new file mode 100644
index 00000000000..a9415ef2def
--- /dev/null
+++ b/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml
@@ -0,0 +1,5 @@
+---
+title: Bump omniauth_openid_connect to 0.3.5
+merge_request: 34030
+author: Roger Meier
+type: other
diff --git a/changelogs/unreleased/chore-styles-removal.yml b/changelogs/unreleased/chore-styles-removal.yml
new file mode 100644
index 00000000000..b395ad5cf20
--- /dev/null
+++ b/changelogs/unreleased/chore-styles-removal.yml
@@ -0,0 +1,5 @@
+---
+title: Remove temporary datepicker position fix as it is no longer required
+merge_request: 31836
+author: Arun Kumar Mohan
+type: removed
diff --git a/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml b/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml
new file mode 100644
index 00000000000..91e3117bffa
--- /dev/null
+++ b/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml
@@ -0,0 +1,5 @@
+---
+title: "Rust CI template: Replace --all with --workspace on cargo test."
+merge_request: 33517
+author: Markus Becker
+type: fixed
diff --git a/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml b/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml
new file mode 100644
index 00000000000..d14cf0f9382
--- /dev/null
+++ b/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml
@@ -0,0 +1,5 @@
+---
+title: Clean up gitlab-shell install-from-source path
+merge_request: 33057
+author:
+type: changed
diff --git a/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml b/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml
new file mode 100644
index 00000000000..0d7f75d24b8
--- /dev/null
+++ b/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml
@@ -0,0 +1,5 @@
+---
+title: Add link text to collapsed left sidebar links for screen readers
+merge_request: 33866
+author:
+type: fixed
diff --git a/changelogs/unreleased/cngo-improve-header-accessibility.yml b/changelogs/unreleased/cngo-improve-header-accessibility.yml
new file mode 100644
index 00000000000..384db4602b2
--- /dev/null
+++ b/changelogs/unreleased/cngo-improve-header-accessibility.yml
@@ -0,0 +1,5 @@
+---
+title: Improve header acccessibility
+merge_request: 33603
+author:
+type: fixed
diff --git a/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml b/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml
new file mode 100644
index 00000000000..5da2079f9b4
--- /dev/null
+++ b/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml
@@ -0,0 +1,5 @@
+---
+title: Make markdown textarea links tab-accessible
+merge_request: 33518
+author:
+type: fixed
diff --git a/changelogs/unreleased/create-branch-url.yml b/changelogs/unreleased/create-branch-url.yml
new file mode 100644
index 00000000000..84f89bba805
--- /dev/null
+++ b/changelogs/unreleased/create-branch-url.yml
@@ -0,0 +1,5 @@
+---
+title: Add anchor for creating a branch
+merge_request: 32745
+author:
+type: other
diff --git a/changelogs/unreleased/create-ops-ff-issues-table.yml b/changelogs/unreleased/create-ops-ff-issues-table.yml
new file mode 100644
index 00000000000..9d6395d26cc
--- /dev/null
+++ b/changelogs/unreleased/create-ops-ff-issues-table.yml
@@ -0,0 +1,5 @@
+---
+title: Create operations_feature_flags_issues table
+merge_request: 32876
+author:
+type: added
diff --git a/changelogs/unreleased/curd-auto-merge-in-transaction.yml b/changelogs/unreleased/curd-auto-merge-in-transaction.yml
new file mode 100644
index 00000000000..9a9cfbea1c7
--- /dev/null
+++ b/changelogs/unreleased/curd-auto-merge-in-transaction.yml
@@ -0,0 +1,5 @@
+---
+title: Wrap auto merge parameters update in database transaction
+merge_request: 33471
+author:
+type: fixed
diff --git a/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml b/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml
new file mode 100644
index 00000000000..d4b91718861
--- /dev/null
+++ b/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml
@@ -0,0 +1,5 @@
+---
+title: Add DAG serializer for pipelines controller
+merge_request: 31583
+author:
+type: added
diff --git a/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml b/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml
new file mode 100644
index 00000000000..96ad1bc440d
--- /dev/null
+++ b/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml
@@ -0,0 +1,5 @@
+---
+title: Improve new/unknown sign-in email styling
+merge_request: 32808
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml b/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml
new file mode 100644
index 00000000000..ebe823442f0
--- /dev/null
+++ b/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml
@@ -0,0 +1,5 @@
+---
+title: Add GitBook logo to project templates
+merge_request: 33403
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml b/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml
new file mode 100644
index 00000000000..19bce8e3c28
--- /dev/null
+++ b/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml
@@ -0,0 +1,5 @@
+---
+title: Add GoMicro logo to project templates
+merge_request: 33404
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml b/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml
new file mode 100644
index 00000000000..59ae2a3a99a
--- /dev/null
+++ b/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml
@@ -0,0 +1,5 @@
+---
+title: Add Hexo logo to project templates
+merge_request: 33406
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml b/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml
new file mode 100644
index 00000000000..df2305c1406
--- /dev/null
+++ b/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml
@@ -0,0 +1,5 @@
+---
+title: Add Hugo logo to project templates
+merge_request: 33402
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml b/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml
new file mode 100644
index 00000000000..1cb28444cbc
--- /dev/null
+++ b/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml
@@ -0,0 +1,5 @@
+---
+title: Add Jekyll logo to project templates
+merge_request: 33405
+author:
+type: changed
diff --git a/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml b/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml
new file mode 100644
index 00000000000..80d2ec6d7ba
--- /dev/null
+++ b/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml
@@ -0,0 +1,5 @@
+---
+title: Update local IP address and domain name allow list input label
+merge_request: 33812
+author:
+type: changed
diff --git a/changelogs/unreleased/design-view-scrolling-issue-bug.yml b/changelogs/unreleased/design-view-scrolling-issue-bug.yml
new file mode 100644
index 00000000000..d47ecfa848a
--- /dev/null
+++ b/changelogs/unreleased/design-view-scrolling-issue-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Remove ability to scroll Issue while in Design View
+merge_request: 29881
+author:
+type: fixed
diff --git a/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml b/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml
new file mode 100644
index 00000000000..8e96cf2d53a
--- /dev/null
+++ b/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml
@@ -0,0 +1,5 @@
+---
+title: Customize the Cloud Native Buildpack builder used with Auto Build
+merge_request: 32691
+author:
+type: added
diff --git a/changelogs/unreleased/docs-firefox-u2f-api.yml b/changelogs/unreleased/docs-firefox-u2f-api.yml
new file mode 100644
index 00000000000..c15a81694f5
--- /dev/null
+++ b/changelogs/unreleased/docs-firefox-u2f-api.yml
@@ -0,0 +1,5 @@
+---
+title: Update U2F docs for Firefox 67+
+merge_request: 32289
+author: Takuya Noguchi
+type: other
diff --git a/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml b/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml
new file mode 100644
index 00000000000..a48e6e235f9
--- /dev/null
+++ b/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml
@@ -0,0 +1,5 @@
+---
+title: Update docs to reflect move web IDE Terminal and file sync to Core
+merge_request: 33419
+author:
+type: other
diff --git a/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml b/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml
new file mode 100644
index 00000000000..9ad183db112
--- /dev/null
+++ b/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml
@@ -0,0 +1,5 @@
+---
+title: Specify tiers for SAML SSO at self-hosted plans
+merge_request: 34040
+author: Takuya Noguchi
+type: other
diff --git a/changelogs/unreleased/docs-u2f-version-history.yml b/changelogs/unreleased/docs-u2f-version-history.yml
new file mode 100644
index 00000000000..e847faa317e
--- /dev/null
+++ b/changelogs/unreleased/docs-u2f-version-history.yml
@@ -0,0 +1,5 @@
+---
+title: Add version history information on U2F support
+merge_request: 33229
+author: Takuya Noguchi
+type: other
diff --git a/changelogs/unreleased/downloadable_reports.yml b/changelogs/unreleased/downloadable_reports.yml
new file mode 100644
index 00000000000..58f2c6d5ee1
--- /dev/null
+++ b/changelogs/unreleased/downloadable_reports.yml
@@ -0,0 +1,5 @@
+---
+title: Add secret_detection to DOWNLOADABLE_TYPES
+merge_request: 34313
+author:
+type: added
diff --git a/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml b/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml
new file mode 100644
index 00000000000..dbe7c17f61d
--- /dev/null
+++ b/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml
@@ -0,0 +1,5 @@
+---
+title: Move pipelines routing under /-/ scope
+merge_request: 30730
+author:
+type: changed
diff --git a/changelogs/unreleased/ee-app-services-1.yml b/changelogs/unreleased/ee-app-services-1.yml
new file mode 100644
index 00000000000..bbd916a9d2c
--- /dev/null
+++ b/changelogs/unreleased/ee-app-services-1.yml
@@ -0,0 +1,5 @@
+---
+title: Move prepend to last in ee-app-services
+merge_request: 31838
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml b/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml
new file mode 100644
index 00000000000..b16051b7303
--- /dev/null
+++ b/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml
@@ -0,0 +1,5 @@
+---
+title: Added provider type icon to cluster list
+merge_request: 33196
+author:
+type: changed
diff --git a/changelogs/unreleased/emilyring-remove-tf-plan-name.yml b/changelogs/unreleased/emilyring-remove-tf-plan-name.yml
new file mode 100644
index 00000000000..c7bbb46c82f
--- /dev/null
+++ b/changelogs/unreleased/emilyring-remove-tf-plan-name.yml
@@ -0,0 +1,5 @@
+---
+title: Removed default artifact name for Terraform template
+merge_request: 34557
+author:
+type: fixed
diff --git a/changelogs/unreleased/emilyring-tf-widget-multiple.yml b/changelogs/unreleased/emilyring-tf-widget-multiple.yml
new file mode 100644
index 00000000000..1bd7a002ede
--- /dev/null
+++ b/changelogs/unreleased/emilyring-tf-widget-multiple.yml
@@ -0,0 +1,5 @@
+---
+title: Allow Tf Plan to genrate multiple reports
+merge_request: 33867
+author:
+type: changed
diff --git a/changelogs/unreleased/enable-atomic-processing-by-default.yml b/changelogs/unreleased/enable-atomic-processing-by-default.yml
new file mode 100644
index 00000000000..691728b4ae4
--- /dev/null
+++ b/changelogs/unreleased/enable-atomic-processing-by-default.yml
@@ -0,0 +1,5 @@
+---
+title: Enable CI Atomic Processing by default
+merge_request:
+author:
+type: performance
diff --git a/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml b/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml
new file mode 100644
index 00000000000..2fac0330b5c
--- /dev/null
+++ b/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml
@@ -0,0 +1,5 @@
+---
+title: Exclude extra.server fields from exceptions_json.log
+merge_request: 32770
+author:
+type: changed
diff --git a/changelogs/unreleased/experimentation-cookie-domain.yml b/changelogs/unreleased/experimentation-cookie-domain.yml
new file mode 100644
index 00000000000..94e102305fe
--- /dev/null
+++ b/changelogs/unreleased/experimentation-cookie-domain.yml
@@ -0,0 +1,5 @@
+---
+title: Set experiementation cookie for GitLab domain only
+merge_request:
+author:
+type: fixed
diff --git a/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml b/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml
new file mode 100644
index 00000000000..6a9efcff172
--- /dev/null
+++ b/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml
@@ -0,0 +1,5 @@
+---
+title: Show custom attributes within Admin Pages
+merge_request: 34017
+author: Roger Meier
+type: added
diff --git a/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml b/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml
new file mode 100644
index 00000000000..02298d74233
--- /dev/null
+++ b/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml
@@ -0,0 +1,5 @@
+---
+title: Add API endpoint for listing bridge jobs.
+merge_request: 31370
+author: Abhijith Sivarajan
+type: added
diff --git a/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml b/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml
new file mode 100644
index 00000000000..f548d243a05
--- /dev/null
+++ b/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml
@@ -0,0 +1,5 @@
+---
+title: Adds PostHog as a CI/CD Managed Application
+merge_request: 32856
+author:
+type: added
diff --git a/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml b/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml
new file mode 100644
index 00000000000..1bb65ee2127
--- /dev/null
+++ b/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Add support for artifacts/exclude configuration
+merge_request: 33170
+author:
+type: added
diff --git a/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml b/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml
new file mode 100644
index 00000000000..e3375d85821
--- /dev/null
+++ b/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml
@@ -0,0 +1,5 @@
+---
+title: Adds cluster CPU and Memory to cluster index
+merge_request: 32601
+author:
+type: changed
diff --git a/changelogs/unreleased/filter-from-url-query-params-pipeline.yml b/changelogs/unreleased/filter-from-url-query-params-pipeline.yml
new file mode 100644
index 00000000000..e1de53cb4ef
--- /dev/null
+++ b/changelogs/unreleased/filter-from-url-query-params-pipeline.yml
@@ -0,0 +1,5 @@
+---
+title: Filter pipelines based on url query params
+merge_request: 32230
+author:
+type: added
diff --git a/changelogs/unreleased/filter-pipelines-by-status.yml b/changelogs/unreleased/filter-pipelines-by-status.yml
new file mode 100644
index 00000000000..e768fb3e112
--- /dev/null
+++ b/changelogs/unreleased/filter-pipelines-by-status.yml
@@ -0,0 +1,5 @@
+---
+title: Filter pipelines by status
+merge_request: 32151
+author:
+type: added
diff --git a/changelogs/unreleased/filter-pipelines-by-tag-name.yml b/changelogs/unreleased/filter-pipelines-by-tag-name.yml
new file mode 100644
index 00000000000..259fd8e9808
--- /dev/null
+++ b/changelogs/unreleased/filter-pipelines-by-tag-name.yml
@@ -0,0 +1,5 @@
+---
+title: Filter Pipelines by Tag Name
+merge_request: 32470
+author:
+type: added
diff --git a/changelogs/unreleased/fix-atomic-processing-lock-version.yml b/changelogs/unreleased/fix-atomic-processing-lock-version.yml
new file mode 100644
index 00000000000..9db891d651f
--- /dev/null
+++ b/changelogs/unreleased/fix-atomic-processing-lock-version.yml
@@ -0,0 +1,5 @@
+---
+title: Fix atomic processing bumping a lock_version
+merge_request: 32914
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-design-notes-filename-duplication.yml b/changelogs/unreleased/fix-design-notes-filename-duplication.yml
new file mode 100644
index 00000000000..5d82323f6f2
--- /dev/null
+++ b/changelogs/unreleased/fix-design-notes-filename-duplication.yml
@@ -0,0 +1,5 @@
+---
+title: Fix filename duplication in design notes in activity feeds
+merge_request: 32823
+author: Arun Kumar Mohan
+type: fixed
diff --git a/changelogs/unreleased/fix-design-todos-filename-duplication.yml b/changelogs/unreleased/fix-design-todos-filename-duplication.yml
new file mode 100644
index 00000000000..901e8bbc8e3
--- /dev/null
+++ b/changelogs/unreleased/fix-design-todos-filename-duplication.yml
@@ -0,0 +1,5 @@
+---
+title: Fix duplicate filename displayed in design todos
+merge_request: 32274
+author: Arun Kumar Mohan
+type: fixed
diff --git a/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml b/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml
new file mode 100644
index 00000000000..cca6bb4eac3
--- /dev/null
+++ b/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml
@@ -0,0 +1,5 @@
+---
+title: Fix CI rules for ECS related jobs
+merge_request: 33527
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-group-transfer-to-subgroup.yml b/changelogs/unreleased/fix-group-transfer-to-subgroup.yml
new file mode 100644
index 00000000000..41294ceca36
--- /dev/null
+++ b/changelogs/unreleased/fix-group-transfer-to-subgroup.yml
@@ -0,0 +1,5 @@
+---
+title: Fix group transfer service to deny moving group to its subgroup
+merge_request: 31495
+author: Abhisek Datta
+type: fixed
diff --git a/changelogs/unreleased/fix-invalid-error-tracking-method.yml b/changelogs/unreleased/fix-invalid-error-tracking-method.yml
new file mode 100644
index 00000000000..90a49dcd8bd
--- /dev/null
+++ b/changelogs/unreleased/fix-invalid-error-tracking-method.yml
@@ -0,0 +1,5 @@
+---
+title: Fix NoMethodError by using the correct method to report exceptions to Sentry
+merge_request: 33260
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-max_import_size.yml b/changelogs/unreleased/fix-max_import_size.yml
new file mode 100644
index 00000000000..0cd9ceaa4d9
--- /dev/null
+++ b/changelogs/unreleased/fix-max_import_size.yml
@@ -0,0 +1,5 @@
+---
+title: Add max import file size option
+merge_request: 33215
+author: Roger Meier
+type: added
diff --git a/changelogs/unreleased/fix-omniauth-buttons-js.yml b/changelogs/unreleased/fix-omniauth-buttons-js.yml
new file mode 100644
index 00000000000..9350af2cdd0
--- /dev/null
+++ b/changelogs/unreleased/fix-omniauth-buttons-js.yml
@@ -0,0 +1,5 @@
+---
+title: Avoid javascript for omniauth logins
+merge_request: 33459
+author: Diego Louzán
+type: other
diff --git a/changelogs/unreleased/fix-pagination-link.yml b/changelogs/unreleased/fix-pagination-link.yml
new file mode 100644
index 00000000000..d2c1fc1eb94
--- /dev/null
+++ b/changelogs/unreleased/fix-pagination-link.yml
@@ -0,0 +1,5 @@
+---
+title: Fix pagination link header
+merge_request: 33714
+author: Max Wittig
+type: fixed
diff --git a/changelogs/unreleased/fix-runner-hearbeat.yml b/changelogs/unreleased/fix-runner-hearbeat.yml
new file mode 100644
index 00000000000..8125bad48ab
--- /dev/null
+++ b/changelogs/unreleased/fix-runner-hearbeat.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Runner heartbeats that results in considering them offline
+merge_request: 32851
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-selecting-status-emoji-twice.yml b/changelogs/unreleased/fix-selecting-status-emoji-twice.yml
new file mode 100644
index 00000000000..b4da2f096b6
--- /dev/null
+++ b/changelogs/unreleased/fix-selecting-status-emoji-twice.yml
@@ -0,0 +1,5 @@
+---
+title: Fix invisible emoji modal on Set Status form when clicked the second time
+merge_request: 33398
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml b/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml
new file mode 100644
index 00000000000..c0fd8b45692
--- /dev/null
+++ b/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml
@@ -0,0 +1,5 @@
+---
+title: Update issue limits template to use minutes
+merge_request: 34254
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-vertically-center-action-icon.yml b/changelogs/unreleased/fix-vertically-center-action-icon.yml
new file mode 100644
index 00000000000..40c97bbc73b
--- /dev/null
+++ b/changelogs/unreleased/fix-vertically-center-action-icon.yml
@@ -0,0 +1,5 @@
+---
+title: vertically center action icon in the CI pipeline
+merge_request: 33427
+author: Nathanael Weber
+type: fixed
diff --git a/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml b/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml
new file mode 100644
index 00000000000..bb9904faa50
--- /dev/null
+++ b/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml
@@ -0,0 +1,5 @@
+---
+title: Fix back button when switching MR tabs
+merge_request: 29862
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml b/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml
new file mode 100644
index 00000000000..500b688f13f
--- /dev/null
+++ b/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml
@@ -0,0 +1,5 @@
+---
+title: Fix default path when creating project from group template
+merge_request: 30597
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml b/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml
new file mode 100644
index 00000000000..33572c95188
--- /dev/null
+++ b/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml
@@ -0,0 +1,5 @@
+---
+title: Remove not null constraint from events tables
+merge_request: 34190
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix_mr_note_label_urls.yml b/changelogs/unreleased/fix_mr_note_label_urls.yml
new file mode 100644
index 00000000000..5558fe22804
--- /dev/null
+++ b/changelogs/unreleased/fix_mr_note_label_urls.yml
@@ -0,0 +1,5 @@
+---
+title: Fix merge request note label URLs
+merge_request: 30428
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml b/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml
new file mode 100644
index 00000000000..7db554864c9
--- /dev/null
+++ b/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml
@@ -0,0 +1,5 @@
+---
+title: Fix undefined error in Gitlab::Git::Diff
+merge_request: 32967
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix_preconnect_typo.yml b/changelogs/unreleased/fix_preconnect_typo.yml
new file mode 100644
index 00000000000..433bab8ec9d
--- /dev/null
+++ b/changelogs/unreleased/fix_preconnect_typo.yml
@@ -0,0 +1,5 @@
+---
+title: Fix preconnect typo in rel link
+merge_request: 33255
+author:
+type: performance
diff --git a/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml b/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml
new file mode 100644
index 00000000000..0dfd311efb9
--- /dev/null
+++ b/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml
@@ -0,0 +1,5 @@
+---
+title: Add validation for move action in SnippetInputAction
+merge_request: 34911
+author:
+type: other
diff --git a/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml b/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml
new file mode 100644
index 00000000000..ac25131bd1f
--- /dev/null
+++ b/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml
@@ -0,0 +1,5 @@
+---
+title: Add allowed actions to snippet input action
+merge_request: 34499
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-add-snippet-file-input-action.yml b/changelogs/unreleased/fj-add-snippet-file-input-action.yml
new file mode 100644
index 00000000000..583e5038633
--- /dev/null
+++ b/changelogs/unreleased/fj-add-snippet-file-input-action.yml
@@ -0,0 +1,5 @@
+---
+title: Add GraphQL snippet FileInputType
+merge_request: 34442
+author:
+type: other
diff --git a/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml
new file mode 100644
index 00000000000..cd3a5ead9e6
--- /dev/null
+++ b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml
@@ -0,0 +1,5 @@
+---
+title: Allow the snippet create service to accept an array of files
+merge_request: 32649
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml
new file mode 100644
index 00000000000..8892a5166ea
--- /dev/null
+++ b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml
@@ -0,0 +1,5 @@
+---
+title: Allow the snippet update service to accept an array of files
+merge_request: 32832
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-add-validations-snippet-input-action.yml b/changelogs/unreleased/fj-add-validations-snippet-input-action.yml
new file mode 100644
index 00000000000..005ec4ccf9d
--- /dev/null
+++ b/changelogs/unreleased/fj-add-validations-snippet-input-action.yml
@@ -0,0 +1,5 @@
+---
+title: Add update validations to SnippetInputAction
+merge_request: 33379
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml b/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml
new file mode 100644
index 00000000000..e6ac0146923
--- /dev/null
+++ b/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml
@@ -0,0 +1,5 @@
+---
+title: Avoid updating snippet content when snippet_files content is not present
+merge_request: 34865
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml b/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml
new file mode 100644
index 00000000000..d2ea7fe1be1
--- /dev/null
+++ b/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml
@@ -0,0 +1,5 @@
+---
+title: Backfill failed imported snippet repositories
+merge_request: 34052
+author:
+type: other
diff --git a/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml b/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml
new file mode 100644
index 00000000000..c0dc036f79f
--- /dev/null
+++ b/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml
@@ -0,0 +1,5 @@
+---
+title: Increase LFS token default time to 2 hours
+merge_request: 33140
+author:
+type: changed
diff --git a/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml b/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml
new file mode 100644
index 00000000000..925f7ff9a25
--- /dev/null
+++ b/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml
@@ -0,0 +1,5 @@
+---
+title: Set author as nullable in snippet GraphQL Type
+merge_request: 34135
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml b/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml
new file mode 100644
index 00000000000..5a6fd312ee4
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml
@@ -0,0 +1,5 @@
+---
+title: Fix snippet repository import fail with older export files
+merge_request: 33584
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-fix-single-param-update.yml b/changelogs/unreleased/fj-fix-single-param-update.yml
new file mode 100644
index 00000000000..8d5f9dd80d4
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-single-param-update.yml
@@ -0,0 +1,5 @@
+---
+title: Fix bug in snippets updating only file_name or content
+merge_request: 33375
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml b/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml
new file mode 100644
index 00000000000..4d5bbceb870
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml
@@ -0,0 +1,5 @@
+---
+title: Fix bug in snippet create mutation with non ActiveRecord errors
+merge_request: 33085
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-fix-snippet-import-from-database.yml b/changelogs/unreleased/fj-fix-snippet-import-from-database.yml
new file mode 100644
index 00000000000..a8c9678405b
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-snippet-import-from-database.yml
@@ -0,0 +1,5 @@
+---
+title: Fix snippet repository import edge cases
+merge_request: 33506
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml b/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml
new file mode 100644
index 00000000000..d040ee3fccd
--- /dev/null
+++ b/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml
@@ -0,0 +1,5 @@
+---
+title: Remove non migrated snippets from failed imports
+merge_request: 33621
+author:
+type: fixed
diff --git a/changelogs/unreleased/followup-leakyconst-master-check.yml b/changelogs/unreleased/followup-leakyconst-master-check.yml
new file mode 100644
index 00000000000..3c0e00510f1
--- /dev/null
+++ b/changelogs/unreleased/followup-leakyconst-master-check.yml
@@ -0,0 +1,5 @@
+---
+title: Move NoPrimary table def to last context in spec
+merge_request: 33015
+author: Rajendra Kadam
+type: other
diff --git a/changelogs/unreleased/fox-comment-icons-commits.yml b/changelogs/unreleased/fox-comment-icons-commits.yml
new file mode 100644
index 00000000000..9eb198629ae
--- /dev/null
+++ b/changelogs/unreleased/fox-comment-icons-commits.yml
@@ -0,0 +1,5 @@
+---
+title: Use sprites for comment icons on Commits
+merge_request: 31696
+author:
+type: changed
diff --git a/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml b/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml
new file mode 100644
index 00000000000..d79f751a48f
--- /dev/null
+++ b/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml
@@ -0,0 +1,5 @@
+---
+title: Clean up shared/tmp folder after Import/Export
+merge_request: 32326
+author:
+type: fixed
diff --git a/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml b/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml
new file mode 100644
index 00000000000..8c2ea5800a5
--- /dev/null
+++ b/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade to Gitaly v13.1.0-rc1
+merge_request: 33302
+author:
+type: changed
diff --git a/changelogs/unreleased/gitlab-ui-badge-integration-2.yml b/changelogs/unreleased/gitlab-ui-badge-integration-2.yml
new file mode 100644
index 00000000000..fef025138d5
--- /dev/null
+++ b/changelogs/unreleased/gitlab-ui-badge-integration-2.yml
@@ -0,0 +1,5 @@
+---
+title: Update the visual design of badges in some areas
+merge_request: 31646
+author:
+type: other
diff --git a/changelogs/unreleased/gl-cluster-applications-json.yml b/changelogs/unreleased/gl-cluster-applications-json.yml
new file mode 100644
index 00000000000..d27029eb769
--- /dev/null
+++ b/changelogs/unreleased/gl-cluster-applications-json.yml
@@ -0,0 +1,6 @@
+---
+title: Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium
+ to 1.7.4
+merge_request: 32931
+author:
+type: changed
diff --git a/changelogs/unreleased/id-code-nav-500-error.yml b/changelogs/unreleased/id-code-nav-500-error.yml
new file mode 100644
index 00000000000..e88980602c3
--- /dev/null
+++ b/changelogs/unreleased/id-code-nav-500-error.yml
@@ -0,0 +1,5 @@
+---
+title: Return code navigation path for nil diff_refs
+merge_request: 33850
+author:
+type: fixed
diff --git a/changelogs/unreleased/id-code-navigation-enable-feature.yml b/changelogs/unreleased/id-code-navigation-enable-feature.yml
new file mode 100644
index 00000000000..e1f9a9c1978
--- /dev/null
+++ b/changelogs/unreleased/id-code-navigation-enable-feature.yml
@@ -0,0 +1,5 @@
+---
+title: Add native code intelligence
+merge_request: 34542
+author:
+type: added
diff --git a/changelogs/unreleased/improve_issue_labels_api.yml b/changelogs/unreleased/improve_issue_labels_api.yml
new file mode 100644
index 00000000000..e57aba6ab59
--- /dev/null
+++ b/changelogs/unreleased/improve_issue_labels_api.yml
@@ -0,0 +1,5 @@
+---
+title: Improve Add/Remove Issue Labels API
+merge_request: 31864
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/improve_storage_move_workflow.yml b/changelogs/unreleased/improve_storage_move_workflow.yml
new file mode 100644
index 00000000000..c5e74e07267
--- /dev/null
+++ b/changelogs/unreleased/improve_storage_move_workflow.yml
@@ -0,0 +1,5 @@
+---
+title: Add project specific repository storage API
+merge_request: 32493
+author:
+type: added
diff --git a/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml b/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml
new file mode 100644
index 00000000000..29ccc347d09
--- /dev/null
+++ b/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml
@@ -0,0 +1,5 @@
+---
+title: Increase events count for Prometheus alerts
+merge_request: 33706
+author:
+type: added
diff --git a/changelogs/unreleased/instance-variables-ui.yml b/changelogs/unreleased/instance-variables-ui.yml
new file mode 100644
index 00000000000..26d59c0fafd
--- /dev/null
+++ b/changelogs/unreleased/instance-variables-ui.yml
@@ -0,0 +1,5 @@
+---
+title: New instance-level variables UI
+merge_request: 33510
+author:
+type: added
diff --git a/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml b/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml
new file mode 100644
index 00000000000..22e72c5bb8f
--- /dev/null
+++ b/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml
@@ -0,0 +1,5 @@
+---
+title: Add whether instance has Auto DevOps enabled to usage ping
+merge_request: 33811
+author:
+type: changed
diff --git a/changelogs/unreleased/issue-bulk-update.yml b/changelogs/unreleased/issue-bulk-update.yml
new file mode 100644
index 00000000000..968c16f4d25
--- /dev/null
+++ b/changelogs/unreleased/issue-bulk-update.yml
@@ -0,0 +1,5 @@
+---
+title: Allow different in bulk editing issues
+merge_request: 32734
+author:
+type: fixed
diff --git a/changelogs/unreleased/jc-pick-weighted-repository.yml b/changelogs/unreleased/jc-pick-weighted-repository.yml
new file mode 100644
index 00000000000..803741e00cc
--- /dev/null
+++ b/changelogs/unreleased/jc-pick-weighted-repository.yml
@@ -0,0 +1,5 @@
+---
+title: Pick repository storage based on weight
+merge_request: 34095
+author:
+type: changed
diff --git a/changelogs/unreleased/jc-show-all-storages.yml b/changelogs/unreleased/jc-show-all-storages.yml
new file mode 100644
index 00000000000..fac5d5bb813
--- /dev/null
+++ b/changelogs/unreleased/jc-show-all-storages.yml
@@ -0,0 +1,5 @@
+---
+title: Show all storages in settings
+merge_request: 34093
+author:
+type: fixed
diff --git a/changelogs/unreleased/jc-ui-repository-storages-weighted.yml b/changelogs/unreleased/jc-ui-repository-storages-weighted.yml
new file mode 100644
index 00000000000..eefe0012310
--- /dev/null
+++ b/changelogs/unreleased/jc-ui-repository-storages-weighted.yml
@@ -0,0 +1,5 @@
+---
+title: Add ApplicationSetting ui changes for repository_storages_weighted
+merge_request: 33096
+author:
+type: added
diff --git a/changelogs/unreleased/jc-weighted-repository-storages.yml b/changelogs/unreleased/jc-weighted-repository-storages.yml
new file mode 100644
index 00000000000..060c1a26494
--- /dev/null
+++ b/changelogs/unreleased/jc-weighted-repository-storages.yml
@@ -0,0 +1,5 @@
+---
+title: Save repository storages in application settings with weights
+merge_request: 31645
+author:
+type: added
diff --git a/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml b/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml
new file mode 100644
index 00000000000..21c60bc9871
--- /dev/null
+++ b/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml
@@ -0,0 +1,6 @@
+---
+title: Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup,
+ a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31
+merge_request: 34399
+author: verenion
+type: fixed
diff --git a/changelogs/unreleased/jdb-mutliline-comment-fe.yml b/changelogs/unreleased/jdb-mutliline-comment-fe.yml
new file mode 100644
index 00000000000..da4b6e28dd5
--- /dev/null
+++ b/changelogs/unreleased/jdb-mutliline-comment-fe.yml
@@ -0,0 +1,5 @@
+---
+title: Add frontend support for multiline comments
+merge_request: 29516
+author:
+type: added
diff --git a/changelogs/unreleased/jej-api-for-root-groups.yml b/changelogs/unreleased/jej-api-for-root-groups.yml
new file mode 100644
index 00000000000..d859273f912
--- /dev/null
+++ b/changelogs/unreleased/jej-api-for-root-groups.yml
@@ -0,0 +1,5 @@
+---
+title: Groups API has top_level_only option to exclude subgroups
+merge_request: 32870
+author:
+type: added
diff --git a/changelogs/unreleased/jh-drop_jid_null_constraint.yml b/changelogs/unreleased/jh-drop_jid_null_constraint.yml
new file mode 100644
index 00000000000..ef1637c814e
--- /dev/null
+++ b/changelogs/unreleased/jh-drop_jid_null_constraint.yml
@@ -0,0 +1,5 @@
+---
+title: Remove null constraint for JID in GroupImportState
+merge_request: 33181
+author:
+type: changed
diff --git a/changelogs/unreleased/jh-group_import_status.yml b/changelogs/unreleased/jh-group_import_status.yml
new file mode 100644
index 00000000000..9441ad39216
--- /dev/null
+++ b/changelogs/unreleased/jh-group_import_status.yml
@@ -0,0 +1,5 @@
+---
+title: Show import in progress screen for group imports
+merge_request: 31731
+author:
+type: added
diff --git a/changelogs/unreleased/jh-group_import_ui_frontend.yml b/changelogs/unreleased/jh-group_import_ui_frontend.yml
new file mode 100644
index 00000000000..e820607cc76
--- /dev/null
+++ b/changelogs/unreleased/jh-group_import_ui_frontend.yml
@@ -0,0 +1,5 @@
+---
+title: Create Group import UI for creating new Groups
+merge_request: 29271
+author:
+type: added
diff --git a/changelogs/unreleased/jh-rate_limit_project_export.yml b/changelogs/unreleased/jh-rate_limit_project_export.yml
new file mode 100644
index 00000000000..743755b1c49
--- /dev/null
+++ b/changelogs/unreleased/jh-rate_limit_project_export.yml
@@ -0,0 +1,5 @@
+---
+title: Rate limit project export by user
+merge_request: 31719
+author:
+type: changed
diff --git a/changelogs/unreleased/jira-projects-api-wrapper.yml b/changelogs/unreleased/jira-projects-api-wrapper.yml
new file mode 100644
index 00000000000..4fe86aa3f4c
--- /dev/null
+++ b/changelogs/unreleased/jira-projects-api-wrapper.yml
@@ -0,0 +1,5 @@
+---
+title: Add a GraphQL endpoint to fetch Jira projects through its REST API
+merge_request: 28190
+author:
+type: changed
diff --git a/changelogs/unreleased/jivanvl-add-snowplow-logs.yml b/changelogs/unreleased/jivanvl-add-snowplow-logs.yml
new file mode 100644
index 00000000000..bc0d3592e74
--- /dev/null
+++ b/changelogs/unreleased/jivanvl-add-snowplow-logs.yml
@@ -0,0 +1,5 @@
+---
+title: Add snowplow tracking for logs page
+merge_request: 32704
+author:
+type: other
diff --git a/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml b/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml
new file mode 100644
index 00000000000..99798f4c58a
--- /dev/null
+++ b/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml
@@ -0,0 +1,5 @@
+---
+title: Focus and toggle metrics dashboard panels via keyboard
+merge_request: 28603
+author:
+type: added
diff --git a/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml b/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml
new file mode 100644
index 00000000000..5d797b0f7a1
--- /dev/null
+++ b/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml
@@ -0,0 +1,5 @@
+---
+title: Document github rate limit behavior
+merge_request: 33090
+author:
+type: other
diff --git a/changelogs/unreleased/leaky-constant-fix-11.yml b/changelogs/unreleased/leaky-constant-fix-11.yml
new file mode 100644
index 00000000000..b373491e61c
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-11.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in commit entity spec
+merge_request: 32039
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-14.yml b/changelogs/unreleased/leaky-constant-fix-14.yml
new file mode 100644
index 00000000000..b124371e415
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-14.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in task completion status spec
+merge_request: 32043
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-22.yml b/changelogs/unreleased/leaky-constant-fix-22.yml
new file mode 100644
index 00000000000..ebeaceee09f
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-22.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in admin mode migration spec
+merge_request: 32074
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-28.yml b/changelogs/unreleased/leaky-constant-fix-28.yml
new file mode 100644
index 00000000000..d1a04a25caa
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-28.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in sidekiq middleware server metric spec
+merge_request: 32104
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-29.yml b/changelogs/unreleased/leaky-constant-fix-29.yml
new file mode 100644
index 00000000000..eafa7e599c6
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-29.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in sidekiq middleware client metric spec
+merge_request: 32108
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-3.yml b/changelogs/unreleased/leaky-constant-fix-3.yml
new file mode 100644
index 00000000000..3ad8fd7a15f
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-3.yml
@@ -0,0 +1,5 @@
+---
+title: Add class stubs and fix leaky constant alert in query limit helper spec
+merge_request: 31949
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-30.yml b/changelogs/unreleased/leaky-constant-fix-30.yml
new file mode 100644
index 00000000000..f4f957d5b08
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-30.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in path regex spec
+merge_request: 32115
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-32.yml b/changelogs/unreleased/leaky-constant-fix-32.yml
new file mode 100644
index 00000000000..a5c5674d5da
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-32.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue importer and cache headers spec
+merge_request: 32122
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-33.yml b/changelogs/unreleased/leaky-constant-fix-33.yml
new file mode 100644
index 00000000000..f53da019813
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-33.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in relation factory spec
+merge_request: 32129
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-34.yml b/changelogs/unreleased/leaky-constant-fix-34.yml
new file mode 100644
index 00000000000..822b9ed0471
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-34.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in test coverage spec
+merge_request: 32134
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-36.yml b/changelogs/unreleased/leaky-constant-fix-36.yml
new file mode 100644
index 00000000000..1c487a8329e
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-36.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in diff collection spec
+merge_request: 32163
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-37.yml b/changelogs/unreleased/leaky-constant-fix-37.yml
new file mode 100644
index 00000000000..af986b7bb13
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-37.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in migration helpers, with lock retries and ignored cols spec
+merge_request: 32170
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-38.yml b/changelogs/unreleased/leaky-constant-fix-38.yml
new file mode 100644
index 00000000000..7ed7fc71da6
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-38.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in factory spec
+merge_request: 32174
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-39.yml b/changelogs/unreleased/leaky-constant-fix-39.yml
new file mode 100644
index 00000000000..13ea6ac7cb4
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-39.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in creds factory spec
+merge_request: 32176
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-5.yml b/changelogs/unreleased/leaky-constant-fix-5.yml
new file mode 100644
index 00000000000..b67057fe237
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-5.yml
@@ -0,0 +1,5 @@
+---
+title: Remove usage of spam constants in spec
+merge_request: 31959
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/leaky-constant-fix-9.yml b/changelogs/unreleased/leaky-constant-fix-9.yml
new file mode 100644
index 00000000000..e361c58c746
--- /dev/null
+++ b/changelogs/unreleased/leaky-constant-fix-9.yml
@@ -0,0 +1,5 @@
+---
+title: Fix leaky constant issue in uninstall progress service check
+merge_request: 32036
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/lm-change-sorting.yml b/changelogs/unreleased/lm-change-sorting.yml
new file mode 100644
index 00000000000..d061995cb48
--- /dev/null
+++ b/changelogs/unreleased/lm-change-sorting.yml
@@ -0,0 +1,5 @@
+---
+title: 'Alert Managament: Change sorting order to have newest alerts first'
+merge_request: 33642
+author:
+type: changed
diff --git a/changelogs/unreleased/lm-hover-state-sort.yml b/changelogs/unreleased/lm-hover-state-sort.yml
new file mode 100644
index 00000000000..4a701511787
--- /dev/null
+++ b/changelogs/unreleased/lm-hover-state-sort.yml
@@ -0,0 +1,5 @@
+---
+title: Add hovering icon for sorting columns on alert management list
+merge_request: 33429
+author:
+type: other
diff --git a/changelogs/unreleased/lm-sorting-list.yml b/changelogs/unreleased/lm-sorting-list.yml
new file mode 100644
index 00000000000..e1a9dceec5c
--- /dev/null
+++ b/changelogs/unreleased/lm-sorting-list.yml
@@ -0,0 +1,5 @@
+---
+title: Adds sorting by column to alert management list
+merge_request: 32478
+author:
+type: added
diff --git a/changelogs/unreleased/long-path-mr-bug.yml b/changelogs/unreleased/long-path-mr-bug.yml
new file mode 100644
index 00000000000..ab171f3da5d
--- /dev/null
+++ b/changelogs/unreleased/long-path-mr-bug.yml
@@ -0,0 +1,5 @@
+---
+title: Fix rendering of very long paths in merge request file tree
+merge_request: 34153
+author:
+type: fixed
diff --git a/changelogs/unreleased/markdown-toolbar-list-style.yml b/changelogs/unreleased/markdown-toolbar-list-style.yml
new file mode 100644
index 00000000000..4121af3e744
--- /dev/null
+++ b/changelogs/unreleased/markdown-toolbar-list-style.yml
@@ -0,0 +1,5 @@
+---
+title: Set markdown toolbar to use hyphens for lists
+merge_request: 31426
+author:
+type: changed
diff --git a/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml b/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml
new file mode 100644
index 00000000000..9d047e66b4b
--- /dev/null
+++ b/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml
@@ -0,0 +1,5 @@
+---
+title: Add usage data metrics for terraform states
+merge_request: 31280
+author:
+type: added
diff --git a/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml b/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml
new file mode 100644
index 00000000000..8656f398610
--- /dev/null
+++ b/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml
@@ -0,0 +1,5 @@
+---
+title: Add usage data metrics for terraform reports
+merge_request: 31281
+author:
+type: added
diff --git a/changelogs/unreleased/mg-fix-katex-fonts.yml b/changelogs/unreleased/mg-fix-katex-fonts.yml
new file mode 100644
index 00000000000..71acf5ca351
--- /dev/null
+++ b/changelogs/unreleased/mg-fix-katex-fonts.yml
@@ -0,0 +1,5 @@
+---
+title: Fix KaTeX font paths
+merge_request: 33338
+author:
+type: fixed
diff --git a/changelogs/unreleased/mo-add-build-report-result.yml b/changelogs/unreleased/mo-add-build-report-result.yml
new file mode 100644
index 00000000000..4b24a194500
--- /dev/null
+++ b/changelogs/unreleased/mo-add-build-report-result.yml
@@ -0,0 +1,5 @@
+---
+title: Add build report results data model
+merge_request: 32991
+author:
+type: performance
diff --git a/changelogs/unreleased/move_migration_to_post_deployment.yml b/changelogs/unreleased/move_migration_to_post_deployment.yml
new file mode 100644
index 00000000000..d70ab5249c4
--- /dev/null
+++ b/changelogs/unreleased/move_migration_to_post_deployment.yml
@@ -0,0 +1,5 @@
+---
+title: Move migration related to ci_builds to post_deployment
+merge_request: 33416
+author:
+type: performance
diff --git a/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml b/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml
new file mode 100644
index 00000000000..675f08ffe27
--- /dev/null
+++ b/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml
@@ -0,0 +1,5 @@
+---
+title: Add dashboard schema validation warnings as metrics dashboard GraphQL field
+merge_request: 33592
+author:
+type: added
diff --git a/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml b/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml
new file mode 100644
index 00000000000..7c07e780906
--- /dev/null
+++ b/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml
@@ -0,0 +1,5 @@
+---
+title: Added validation for YAML files with metrics dashboard definitions.
+merge_request: 33202
+author:
+type: added
diff --git a/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml
new file mode 100644
index 00000000000..454f6aab8e9
--- /dev/null
+++ b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml
@@ -0,0 +1,6 @@
+---
+title: Table index added to `metrics_dashboard_annotations` for future pruning of stale metrics
+ Annotations for metrics dashboards are now checked for valid start and end dates.
+merge_request: 32433
+author:
+type: added
diff --git a/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml
new file mode 100644
index 00000000000..4dfeb792c5a
--- /dev/null
+++ b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml
@@ -0,0 +1,5 @@
+---
+title: Remove metrics dashboard annotations attached to time periods older than two weeks.
+merge_request: 32838
+author:
+type: added
diff --git a/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml b/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml
new file mode 100644
index 00000000000..dc24c002774
--- /dev/null
+++ b/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml
@@ -0,0 +1,5 @@
+---
+title: Allow Release asset links to be associated with a type
+merge_request: 33998
+author:
+type: added
diff --git a/changelogs/unreleased/nfriend-fix-release-button-alignment.yml b/changelogs/unreleased/nfriend-fix-release-button-alignment.yml
new file mode 100644
index 00000000000..79c6087fc54
--- /dev/null
+++ b/changelogs/unreleased/nfriend-fix-release-button-alignment.yml
@@ -0,0 +1,5 @@
+---
+title: Fix alignment of button text on the Edit Release page
+merge_request: 33104
+author:
+type: fixed
diff --git a/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml b/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml
new file mode 100644
index 00000000000..f7eb40584af
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml
@@ -0,0 +1,5 @@
+---
+title: Move broadcast notification dismiss button to the top
+merge_request: 33174
+author:
+type: changed
diff --git a/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml b/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml
new file mode 100644
index 00000000000..f0fbc00325c
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml
@@ -0,0 +1,5 @@
+---
+title: Expose storage size limit for namespaces in GraphQL
+merge_request: 34882
+author:
+type: changed
diff --git a/changelogs/unreleased/notes-ee-feature.yml b/changelogs/unreleased/notes-ee-feature.yml
new file mode 100644
index 00000000000..38d9471ce39
--- /dev/null
+++ b/changelogs/unreleased/notes-ee-feature.yml
@@ -0,0 +1,5 @@
+---
+title: Move Admin note feature to GitLab Core
+merge_request: 31457
+author: Rajendra
+type: added
diff --git a/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml b/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml
new file mode 100644
index 00000000000..8bd0a746504
--- /dev/null
+++ b/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml
@@ -0,0 +1,5 @@
+---
+title: Fix design note scrolling
+merge_request: 33939
+author:
+type: fixed
diff --git a/changelogs/unreleased/optimize-milestones-page.yml b/changelogs/unreleased/optimize-milestones-page.yml
new file mode 100644
index 00000000000..dd067c08faf
--- /dev/null
+++ b/changelogs/unreleased/optimize-milestones-page.yml
@@ -0,0 +1,5 @@
+---
+title: Optimize SQL queries on Milestone index page
+merge_request: 32953
+author:
+type: performance
diff --git a/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml b/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml
new file mode 100644
index 00000000000..88efab2233c
--- /dev/null
+++ b/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml
@@ -0,0 +1,5 @@
+---
+title: Add metrics for Redis usage during Sidekiq job execution
+merge_request: 32265
+author:
+type: added
diff --git a/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml b/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml
new file mode 100644
index 00000000000..77602f9a31c
--- /dev/null
+++ b/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml
@@ -0,0 +1,5 @@
+---
+title: Add metrics for Redis usage during web requests
+merge_request: 32605
+author:
+type: added
diff --git a/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml b/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml
new file mode 100644
index 00000000000..27e673437e7
--- /dev/null
+++ b/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Adjust wrong column reference for ResetMergeStatus (background job)
+merge_request: 33899
+author:
+type: fixed
diff --git a/changelogs/unreleased/osw-separate-redis-logs.yml b/changelogs/unreleased/osw-separate-redis-logs.yml
new file mode 100644
index 00000000000..dbef2557df7
--- /dev/null
+++ b/changelogs/unreleased/osw-separate-redis-logs.yml
@@ -0,0 +1,6 @@
+---
+title: Add detailed logs of each Redis instance usage during job execution and web
+ requests
+merge_request: 34110
+author:
+type: added
diff --git a/changelogs/unreleased/perf-use-build-stubbed.yml b/changelogs/unreleased/perf-use-build-stubbed.yml
new file mode 100644
index 00000000000..0f78d8649df
--- /dev/null
+++ b/changelogs/unreleased/perf-use-build-stubbed.yml
@@ -0,0 +1,5 @@
+---
+title: Use build_stubbed to avoid interacting with the DB in todos helper specs
+merge_request: 32906
+author: Arun Kumar Mohan
+type: performance
diff --git a/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml b/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml
new file mode 100644
index 00000000000..9deb3e23517
--- /dev/null
+++ b/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml
@@ -0,0 +1,5 @@
+---
+title: Moves merge request reviews into Core
+merge_request: 32558
+author:
+type: other
diff --git a/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml b/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml
new file mode 100644
index 00000000000..a4837dd7df8
--- /dev/null
+++ b/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml
@@ -0,0 +1,5 @@
+---
+title: Fix linking alerts to created issues for the Generic alerts intergration
+merge_request: 33647
+author:
+type: fixed
diff --git a/changelogs/unreleased/psi-dark-theme.yml b/changelogs/unreleased/psi-dark-theme.yml
new file mode 100644
index 00000000000..21257280afb
--- /dev/null
+++ b/changelogs/unreleased/psi-dark-theme.yml
@@ -0,0 +1,5 @@
+---
+title: Add dark theme (alpha)
+merge_request: 28252
+author:
+type: added
diff --git a/changelogs/unreleased/rails-logger-cop-1.yml b/changelogs/unreleased/rails-logger-cop-1.yml
new file mode 100644
index 00000000000..c9b37eb9244
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-1.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in project import state file
+merge_request: 32182
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-10.yml b/changelogs/unreleased/rails-logger-cop-10.yml
new file mode 100644
index 00000000000..c81a504350c
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-10.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in exclusive_lease_guard
+merge_request: 32194
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-11.yml b/changelogs/unreleased/rails-logger-cop-11.yml
new file mode 100644
index 00000000000..fa337bf4658
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-11.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in groups destroy service and label create service
+merge_request: 32195
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-12.yml b/changelogs/unreleased/rails-logger-cop-12.yml
new file mode 100644
index 00000000000..c08f8d5426a
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-12.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in merge_service.rb
+merge_request: 32196
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-13.yml b/changelogs/unreleased/rails-logger-cop-13.yml
new file mode 100644
index 00000000000..ab0414f0ae3
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-13.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in project create service and after import service
+merge_request: 32198
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-14.yml b/changelogs/unreleased/rails-logger-cop-14.yml
new file mode 100644
index 00000000000..07f332d9d35
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-14.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in update stats service
+merge_request: 32200
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-15.yml b/changelogs/unreleased/rails-logger-cop-15.yml
new file mode 100644
index 00000000000..1c9ccafe5cb
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-15.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in base attachment service
+merge_request: 32201
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-16.yml b/changelogs/unreleased/rails-logger-cop-16.yml
new file mode 100644
index 00000000000..be60fdce4d0
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-16.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in export service
+merge_request: 32203
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-17.yml b/changelogs/unreleased/rails-logger-cop-17.yml
new file mode 100644
index 00000000000..013457961cf
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-17.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in akismet service
+merge_request: 32205
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-18.yml b/changelogs/unreleased/rails-logger-cop-18.yml
new file mode 100644
index 00000000000..d5ebd1b4a11
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-18.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in file mover file
+merge_request: 32206
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-19.yml b/changelogs/unreleased/rails-logger-cop-19.yml
new file mode 100644
index 00000000000..b56f06caf73
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-19.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in commit signature worker
+merge_request: 32207
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-2.yml b/changelogs/unreleased/rails-logger-cop-2.yml
new file mode 100644
index 00000000000..0685f503e44
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-2.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in project.rb
+merge_request: 32183
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-20.yml b/changelogs/unreleased/rails-logger-cop-20.yml
new file mode 100644
index 00000000000..1128b8022e3
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-20.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in delete user worker
+merge_request: 32209
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-21.yml b/changelogs/unreleased/rails-logger-cop-21.yml
new file mode 100644
index 00000000000..099142ff482
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-21.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in email receiver worker
+merge_request: 32211
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-22.yml b/changelogs/unreleased/rails-logger-cop-22.yml
new file mode 100644
index 00000000000..df22074b16a
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-22.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in artifact worker
+merge_request: 32212
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-23.yml b/changelogs/unreleased/rails-logger-cop-23.yml
new file mode 100644
index 00000000000..4e7513570e9
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-23.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in new note worker
+merge_request: 32213
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-3.yml b/changelogs/unreleased/rails-logger-cop-3.yml
new file mode 100644
index 00000000000..b7de674cdb6
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-3.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in chat_team.rb
+merge_request: 32184
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-4.yml b/changelogs/unreleased/rails-logger-cop-4.yml
new file mode 100644
index 00000000000..a7f76711de7
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-4.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in repository model
+merge_request: 32185
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-5.yml b/changelogs/unreleased/rails-logger-cop-5.yml
new file mode 100644
index 00000000000..4e758bde275
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-5.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in build and ssh host key
+merge_request: 32187
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-6.yml b/changelogs/unreleased/rails-logger-cop-6.yml
new file mode 100644
index 00000000000..a5fea225b08
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-6.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in cache attrs and highest role ruby files
+merge_request: 32189
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-7.yml b/changelogs/unreleased/rails-logger-cop-7.yml
new file mode 100644
index 00000000000..b8482ccef54
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-7.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in legacy project and namespace
+merge_request: 32190
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-8.yml b/changelogs/unreleased/rails-logger-cop-8.yml
new file mode 100644
index 00000000000..4765c087bb7
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-8.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in base.rb
+merge_request: 32191
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rails-logger-cop-9.yml b/changelogs/unreleased/rails-logger-cop-9.yml
new file mode 100644
index 00000000000..8e740f6f1bd
--- /dev/null
+++ b/changelogs/unreleased/rails-logger-cop-9.yml
@@ -0,0 +1,5 @@
+---
+title: Use applogger in usage ping and webhook service
+merge_request: 32192
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/rc-add_dashboard_timezone.yml b/changelogs/unreleased/rc-add_dashboard_timezone.yml
new file mode 100644
index 00000000000..190d3faadec
--- /dev/null
+++ b/changelogs/unreleased/rc-add_dashboard_timezone.yml
@@ -0,0 +1,5 @@
+---
+title: Add column dashboard_timezone to project_metrics_setting
+merge_request: 33120
+author:
+type: added
diff --git a/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml b/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml
new file mode 100644
index 00000000000..6f65d844a7a
--- /dev/null
+++ b/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml
@@ -0,0 +1,5 @@
+---
+title: Make Fixed Email Notification Generally Available
+merge_request: 28338
+author: jacopo-beschi
+type: added
diff --git a/changelogs/unreleased/reduce-repo-size.yml b/changelogs/unreleased/reduce-repo-size.yml
new file mode 100644
index 00000000000..8483cc0a705
--- /dev/null
+++ b/changelogs/unreleased/reduce-repo-size.yml
@@ -0,0 +1,5 @@
+---
+title: Add support for `git filter-repo` to repository cleanup
+merge_request: 33576
+author:
+type: added
diff --git a/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml b/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml
new file mode 100644
index 00000000000..72508bd724c
--- /dev/null
+++ b/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml
@@ -0,0 +1,5 @@
+---
+title: Process stuck jira import jobs
+merge_request: 32643
+author:
+type: added
diff --git a/changelogs/unreleased/remove-a11y-widget-ff.yml b/changelogs/unreleased/remove-a11y-widget-ff.yml
new file mode 100644
index 00000000000..0f99d7a1e93
--- /dev/null
+++ b/changelogs/unreleased/remove-a11y-widget-ff.yml
@@ -0,0 +1,5 @@
+---
+title: Add accessibility report MR widget
+merge_request: 32902
+author:
+type: added
diff --git a/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml b/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml
new file mode 100644
index 00000000000..41a1759281d
--- /dev/null
+++ b/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml
@@ -0,0 +1,5 @@
+---
+title: Remove unused WAF indexes from CI variables
+merge_request: 30021
+author:
+type: other
diff --git a/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml b/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml
new file mode 100644
index 00000000000..f577053d074
--- /dev/null
+++ b/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml
@@ -0,0 +1,5 @@
+---
+title: Remove `scoped_approval_rules` feature flag
+merge_request: 28864
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/replace-slot-for-vue-3-migration.yml b/changelogs/unreleased/replace-slot-for-vue-3-migration.yml
new file mode 100644
index 00000000000..c2f1e2a4697
--- /dev/null
+++ b/changelogs/unreleased/replace-slot-for-vue-3-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Replace slot syntax for Vue 3 migration
+merge_request: 31987
+author: gaslan
+type: other
diff --git a/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml b/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml
new file mode 100644
index 00000000000..47e984576c5
--- /dev/null
+++ b/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml
@@ -0,0 +1,5 @@
+---
+title: Update wording of addMultipleToDiscussionWarning
+merge_request: 34088
+author:
+type: fixed
diff --git a/changelogs/unreleased/rf-brakeman-to-core.yml b/changelogs/unreleased/rf-brakeman-to-core.yml
new file mode 100644
index 00000000000..3f2d4536815
--- /dev/null
+++ b/changelogs/unreleased/rf-brakeman-to-core.yml
@@ -0,0 +1,5 @@
+---
+title: Bring SAST to Core - brakeman
+merge_request: 34217
+author:
+type: added
diff --git a/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml b/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml
new file mode 100644
index 00000000000..e9ecbc0cd66
--- /dev/null
+++ b/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml
@@ -0,0 +1,5 @@
+---
+title: Display error for YAML files that are too large
+merge_request: 34199
+author:
+type: changed
diff --git a/changelogs/unreleased/rspec-rails-fast-failure-template.yml b/changelogs/unreleased/rspec-rails-fast-failure-template.yml
new file mode 100644
index 00000000000..c466c68075a
--- /dev/null
+++ b/changelogs/unreleased/rspec-rails-fast-failure-template.yml
@@ -0,0 +1,5 @@
+---
+title: Add Verify/FailFast CI template
+merge_request: 31812
+author:
+type: added
diff --git a/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml b/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml
new file mode 100644
index 00000000000..50a32041395
--- /dev/null
+++ b/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml
@@ -0,0 +1,5 @@
+---
+title: Add ProjectAccessToken table
+merge_request: 33272
+author:
+type: added
diff --git a/changelogs/unreleased/schedule_storage_move_api.yml b/changelogs/unreleased/schedule_storage_move_api.yml
new file mode 100644
index 00000000000..8c205aade84
--- /dev/null
+++ b/changelogs/unreleased/schedule_storage_move_api.yml
@@ -0,0 +1,5 @@
+---
+title: Add API to schedule project repository storage moves
+merge_request: 34119
+author:
+type: added
diff --git a/changelogs/unreleased/services-usage-1.yml b/changelogs/unreleased/services-usage-1.yml
new file mode 100644
index 00000000000..d202273ca8c
--- /dev/null
+++ b/changelogs/unreleased/services-usage-1.yml
@@ -0,0 +1,5 @@
+---
+title: Record audit event when an admin creates a new SSH Key for a user via the API
+merge_request: 33859
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/services-usage-2.yml b/changelogs/unreleased/services-usage-2.yml
new file mode 100644
index 00000000000..8cc4e96d520
--- /dev/null
+++ b/changelogs/unreleased/services-usage-2.yml
@@ -0,0 +1,5 @@
+---
+title: Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API
+merge_request: 34535
+author: Rajendra Kadam
+type: fixed
diff --git a/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml b/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml
new file mode 100644
index 00000000000..bfeadcfded5
--- /dev/null
+++ b/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml
@@ -0,0 +1,5 @@
+---
+title: Add partial index on locked merge requets
+merge_request: 34127
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-avoid-extra-route-reload.yml b/changelogs/unreleased/sh-avoid-extra-route-reload.yml
new file mode 100644
index 00000000000..7c363ac92d8
--- /dev/null
+++ b/changelogs/unreleased/sh-avoid-extra-route-reload.yml
@@ -0,0 +1,5 @@
+---
+title: Speed up boot time in production
+merge_request: 33929
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-extend-remember-me-token.yml b/changelogs/unreleased/sh-extend-remember-me-token.yml
new file mode 100644
index 00000000000..ddee3f8be7e
--- /dev/null
+++ b/changelogs/unreleased/sh-extend-remember-me-token.yml
@@ -0,0 +1,5 @@
+---
+title: Extend "Remember me" token after each login
+merge_request: 32730
+author:
+type: other
diff --git a/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml b/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml
new file mode 100644
index 00000000000..c4aa8d22ca3
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml
@@ -0,0 +1,5 @@
+---
+title: Fix auto-merge not running after discussions resolved
+merge_request: 33371
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-fix-delete-blob-failure.yml b/changelogs/unreleased/sh-fix-delete-blob-failure.yml
new file mode 100644
index 00000000000..ec3a48a09f2
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-delete-blob-failure.yml
@@ -0,0 +1,5 @@
+---
+title: Fix 500 error in BlobController#delete
+merge_request: 34367
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-fix-issue-219991.yml b/changelogs/unreleased/sh-fix-issue-219991.yml
new file mode 100644
index 00000000000..f09cb34b761
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-issue-219991.yml
@@ -0,0 +1,5 @@
+---
+title: Fix force_remove_source_branch not working in API
+merge_request: 33804
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-update-workhorse-8-34-0.yml b/changelogs/unreleased/sh-update-workhorse-8-34-0.yml
new file mode 100644
index 00000000000..5ecb3840463
--- /dev/null
+++ b/changelogs/unreleased/sh-update-workhorse-8-34-0.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Workhorse to v8.34.0
+merge_request: 33543
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-workhorse-direct-access-upload.yml b/changelogs/unreleased/sh-workhorse-direct-access-upload.yml
new file mode 100644
index 00000000000..41aee482891
--- /dev/null
+++ b/changelogs/unreleased/sh-workhorse-direct-access-upload.yml
@@ -0,0 +1,5 @@
+---
+title: Support Workhorse directly uploading files to S3
+merge_request: 29389
+author:
+type: added
diff --git a/changelogs/unreleased/show-redis-instance-in-performance-bar.yml b/changelogs/unreleased/show-redis-instance-in-performance-bar.yml
new file mode 100644
index 00000000000..80dbd33f110
--- /dev/null
+++ b/changelogs/unreleased/show-redis-instance-in-performance-bar.yml
@@ -0,0 +1,5 @@
+---
+title: Show Redis instance in performance bar
+merge_request: 34377
+author:
+type: changed
diff --git a/changelogs/unreleased/show_build_status_in_branch_list.yml b/changelogs/unreleased/show_build_status_in_branch_list.yml
new file mode 100644
index 00000000000..259b916af10
--- /dev/null
+++ b/changelogs/unreleased/show_build_status_in_branch_list.yml
@@ -0,0 +1,5 @@
+---
+title: Show build status on branch list
+merge_request: 30948
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/show_estimate_on_issues_list.yml b/changelogs/unreleased/show_estimate_on_issues_list.yml
new file mode 100644
index 00000000000..9845fcc2f57
--- /dev/null
+++ b/changelogs/unreleased/show_estimate_on_issues_list.yml
@@ -0,0 +1,5 @@
+---
+title: Show estimate on issues list
+merge_request: 28271
+author: Lee Tickett
+type: added
diff --git a/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml b/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml
new file mode 100644
index 00000000000..143a85b2986
--- /dev/null
+++ b/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml
@@ -0,0 +1,5 @@
+---
+title: Filter potentially-sensitive Sidekiq arguments from logs and Sentry
+merge_request: 33967
+author:
+type: changed
diff --git a/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml b/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml
new file mode 100644
index 00000000000..89e4261c40d
--- /dev/null
+++ b/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml
@@ -0,0 +1,5 @@
+---
+title: Skip the individual JIRA issues if failed to import vs failing the whole batch
+merge_request: 32673
+author:
+type: fixed
diff --git a/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml b/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml
new file mode 100644
index 00000000000..cbbce1b2b34
--- /dev/null
+++ b/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml
@@ -0,0 +1,5 @@
+---
+title: Support user-defined Grafana links in metrics dashboard
+merge_request: 34003
+author:
+type: added
diff --git a/changelogs/unreleased/switch-diff-view-fix.yml b/changelogs/unreleased/switch-diff-view-fix.yml
new file mode 100644
index 00000000000..ff3e1e11e49
--- /dev/null
+++ b/changelogs/unreleased/switch-diff-view-fix.yml
@@ -0,0 +1,6 @@
+---
+title: Deduplicate URL parameters when requesting merge request diffs which causes
+ diffs load to fail
+merge_request: 33117
+author:
+type: fixed
diff --git a/changelogs/unreleased/sy-publish-command.yml b/changelogs/unreleased/sy-publish-command.yml
new file mode 100644
index 00000000000..cfc46e8f1c1
--- /dev/null
+++ b/changelogs/unreleased/sy-publish-command.yml
@@ -0,0 +1,6 @@
+---
+title: Backfill StatusPage::Published incidents and enable a publish quick action
+ for EE
+merge_request: 30906
+author:
+type: added
diff --git a/changelogs/unreleased/sy-publish-status-ui-fe.yml b/changelogs/unreleased/sy-publish-status-ui-fe.yml
new file mode 100644
index 00000000000..f0de124efb1
--- /dev/null
+++ b/changelogs/unreleased/sy-publish-status-ui-fe.yml
@@ -0,0 +1,5 @@
+---
+title: Add link to status page detail view for status page published issues
+merge_request: 30249
+author:
+type: added
diff --git a/changelogs/unreleased/templates-current-folder-fix.yml b/changelogs/unreleased/templates-current-folder-fix.yml
new file mode 100644
index 00000000000..9b4999c9d54
--- /dev/null
+++ b/changelogs/unreleased/templates-current-folder-fix.yml
@@ -0,0 +1,5 @@
+---
+title: "Web IDE: Create template files in the folder from which new file request was made"
+merge_request: 33585
+author: Ashesh Vidyut
+type: fixed
diff --git a/changelogs/unreleased/tidy_put_projects_issues_spec.yml b/changelogs/unreleased/tidy_put_projects_issues_spec.yml
new file mode 100644
index 00000000000..ef0d8d1745d
--- /dev/null
+++ b/changelogs/unreleased/tidy_put_projects_issues_spec.yml
@@ -0,0 +1,5 @@
+---
+title: Tidy
+merge_request: 32759
+author: Lee Tickett
+type: other
diff --git a/changelogs/unreleased/tr-avoid-alert-refetch.yml b/changelogs/unreleased/tr-avoid-alert-refetch.yml
new file mode 100644
index 00000000000..3dafc79a366
--- /dev/null
+++ b/changelogs/unreleased/tr-avoid-alert-refetch.yml
@@ -0,0 +1,5 @@
+---
+title: Avoid refresh to show endedAt after mutation
+merge_request: 32636
+author:
+type: fixed
diff --git a/changelogs/unreleased/tr-fix-broken-incident-link.yml b/changelogs/unreleased/tr-fix-broken-incident-link.yml
new file mode 100644
index 00000000000..bea818796d0
--- /dev/null
+++ b/changelogs/unreleased/tr-fix-broken-incident-link.yml
@@ -0,0 +1,5 @@
+---
+title: Fix broken help link on operations settings page
+merge_request: 32722
+author:
+type: fixed
diff --git a/changelogs/unreleased/tr-reword-alert-service.yml b/changelogs/unreleased/tr-reword-alert-service.yml
new file mode 100644
index 00000000000..e7665822e72
--- /dev/null
+++ b/changelogs/unreleased/tr-reword-alert-service.yml
@@ -0,0 +1,5 @@
+---
+title: Add more detail to alert integration settings description
+merge_request: 33244
+author:
+type: added
diff --git a/changelogs/unreleased/track-pod-logs-refresh-action.yml b/changelogs/unreleased/track-pod-logs-refresh-action.yml
new file mode 100644
index 00000000000..a7d9021a90e
--- /dev/null
+++ b/changelogs/unreleased/track-pod-logs-refresh-action.yml
@@ -0,0 +1,5 @@
+---
+title: Track pod logs refresh action
+merge_request: 33802
+author:
+type: added
diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml
new file mode 100644
index 00000000000..f4775f7db5c
--- /dev/null
+++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml
@@ -0,0 +1,5 @@
+---
+title: Update deprecated slot syntax in ./app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue
+merge_request: 31994
+author: Gilang Gumilar
+type: other
diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml
new file mode 100644
index 00000000000..8ee3646bcd1
--- /dev/null
+++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml
@@ -0,0 +1,5 @@
+---
+title: Update deprecated slot syntax in ./app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue
+merge_request: 31995
+author: Gilang Gumilar
+type: other
diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml
new file mode 100644
index 00000000000..a18b4990414
--- /dev/null
+++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml
@@ -0,0 +1,5 @@
+---
+title: Update deprecated slot syntax in ./app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue
+merge_request: 32010
+author: Gilang Gumilar
+type: other
diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml
new file mode 100644
index 00000000000..a4f77b53937
--- /dev/null
+++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml
@@ -0,0 +1,5 @@
+---
+title: Update deprecated slot syntax in ./app/assets/javascripts/environments/components/environments_app.vue
+merge_request: 32011
+author: Gilang Gumilar
+type: other
diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml
new file mode 100644
index 00000000000..b880020aa7f
--- /dev/null
+++ b/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml
@@ -0,0 +1,5 @@
+---
+title: Update deprecated slot syntax in app/assets/javascripts/reports/components/grouped_test_reports_app.vue
+merge_request: 31975
+author: Gilang Gumilar
+type: other
diff --git a/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml
new file mode 100644
index 00000000000..98f8ec0c03b
--- /dev/null
+++ b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Runner Helm Chart to 0.17.0
+merge_request: 32634
+author:
+type: other
diff --git a/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml
new file mode 100644
index 00000000000..74cf7405268
--- /dev/null
+++ b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Runner Helm Chart to 0.17.1
+merge_request: 33504
+author:
+type: other
diff --git a/changelogs/unreleased/update-index-artifacts-expire.yml b/changelogs/unreleased/update-index-artifacts-expire.yml
new file mode 100644
index 00000000000..9eaed111aa8
--- /dev/null
+++ b/changelogs/unreleased/update-index-artifacts-expire.yml
@@ -0,0 +1,6 @@
+---
+title: Update index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial index
+ for secret_detection
+merge_request: 32584
+author:
+type: performance
diff --git a/changelogs/unreleased/update-validates-hostname-gem.yml b/changelogs/unreleased/update-validates-hostname-gem.yml
new file mode 100644
index 00000000000..4665ebe2724
--- /dev/null
+++ b/changelogs/unreleased/update-validates-hostname-gem.yml
@@ -0,0 +1,5 @@
+---
+title: Update validates_hostname gem with support for more TLDs
+merge_request: 34010
+author:
+type: fixed
diff --git a/changelogs/unreleased/update-workhorse-version-master.yml b/changelogs/unreleased/update-workhorse-version-master.yml
new file mode 100644
index 00000000000..3a8aa981668
--- /dev/null
+++ b/changelogs/unreleased/update-workhorse-version-master.yml
@@ -0,0 +1,5 @@
+---
+title: Update Workhorse to v8.35.0
+merge_request: 33817
+author:
+type: other
diff --git a/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml b/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml
new file mode 100644
index 00000000000..3a9cc4c383a
--- /dev/null
+++ b/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml
@@ -0,0 +1,5 @@
+---
+title: Add a link to the `renamed` viewer to fully expand the renamed file (if it's text)
+merge_request: 28448
+author:
+type: added
diff --git a/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml b/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml
new file mode 100644
index 00000000000..39dccc2fbde
--- /dev/null
+++ b/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml
@@ -0,0 +1,5 @@
+---
+title: Fix plural message in account deletion section
+merge_request: 32868
+author:
+type: fixed
diff --git a/changelogs/unreleased/xanf-use-new-import-ui-templates.yml b/changelogs/unreleased/xanf-use-new-import-ui-templates.yml
new file mode 100644
index 00000000000..32546178546
--- /dev/null
+++ b/changelogs/unreleased/xanf-use-new-import-ui-templates.yml
@@ -0,0 +1,5 @@
+---
+title: Introduce a feature flag for Vue-based UI for all import providers
+merge_request: 33980
+author:
+type: added
diff --git a/config/routes/pipelines.rb b/config/routes/pipelines.rb
index cc3c3400526..c100526180e 100644
--- a/config/routes/pipelines.rb
+++ b/config/routes/pipelines.rb
@@ -26,6 +26,12 @@ resources :pipelines, only: [:index, :new, :create, :show, :destroy] do
resources :stages, only: [], param: :name do
post :play_manual
end
+
+ resources :tests, only: [], controller: 'pipelines/tests' do
+ collection do
+ get :summary
+ end
+ end
end
end
diff --git a/doc/api/feature_flags.md b/doc/api/feature_flags.md
index f3af662c972..1931e0a368b 100644
--- a/doc/api/feature_flags.md
+++ b/doc/api/feature_flags.md
@@ -9,7 +9,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5.
NOTE: **Note**
-This API is behind a [feature flag](../user/project/operations/feature_flags.md#feature-flag-behavior-change-in-130). If this flag is not enabled in your environment, you can use the [legacy feature flags API](feature_flags_legacy.md).
+This API is behind a [feature flag](../user/project/operations/feature_flags.md#enable-or-disable-feature-flag-strategies).
+If this flag is not enabled in your environment, you can use the [legacy feature flags API](feature_flags_legacy.md).
API for accessing resources of [GitLab Feature Flags](../user/project/operations/feature_flags.md).
diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql
index 85bdf183e31..8366affc4ef 100644
--- a/doc/api/graphql/reference/gitlab_schema.graphql
+++ b/doc/api/graphql/reference/gitlab_schema.graphql
@@ -5024,6 +5024,11 @@ type Group {
shareWithGroupLock: Boolean
"""
+ Total storage limit of the root namespace in bytes
+ """
+ storageSizeLimit: Int
+
+ """
The permission level required to create subgroups within the group
"""
subgroupCreationLevel: String
@@ -7321,6 +7326,61 @@ enum MergeRequestState {
opened
}
+"""
+Autogenerated input type of MergeRequestUpdate
+"""
+input MergeRequestUpdateInput {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Description of the merge request (Markdown rendered as HTML for caching)
+ """
+ description: String
+
+ """
+ The iid of the merge request to mutate
+ """
+ iid: String!
+
+ """
+ The project the merge request to mutate is in
+ """
+ projectPath: ID!
+
+ """
+ Target branch of the merge request
+ """
+ targetBranch: String
+
+ """
+ Title of the merge request
+ """
+ title: String
+}
+
+"""
+Autogenerated return type of MergeRequestUpdate
+"""
+type MergeRequestUpdatePayload {
+ """
+ A unique identifier for the client performing the mutation.
+ """
+ clientMutationId: String
+
+ """
+ Errors encountered during execution of the mutation.
+ """
+ errors: [String!]!
+
+ """
+ The merge request after mutation
+ """
+ mergeRequest: MergeRequest
+}
+
type Metadata {
"""
Revision
@@ -7607,6 +7667,11 @@ type Mutation {
mergeRequestSetMilestone(input: MergeRequestSetMilestoneInput!): MergeRequestSetMilestonePayload
mergeRequestSetSubscription(input: MergeRequestSetSubscriptionInput!): MergeRequestSetSubscriptionPayload
mergeRequestSetWip(input: MergeRequestSetWipInput!): MergeRequestSetWipPayload
+
+ """
+ Update attributes of a merge request
+ """
+ mergeRequestUpdate(input: MergeRequestUpdateInput!): MergeRequestUpdatePayload
removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload
removeProjectFromSecurityDashboard(input: RemoveProjectFromSecurityDashboardInput!): RemoveProjectFromSecurityDashboardPayload
runDastScan(input: RunDASTScanInput!): RunDASTScanPayload
@@ -7743,6 +7808,11 @@ type Namespace {
rootStorageStatistics: RootStorageStatistics
"""
+ Total storage limit of the root namespace in bytes
+ """
+ storageSizeLimit: Int
+
+ """
Visibility of the namespace
"""
visibility: String
diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json
index 0b6ba6bc5e2..fb755d34468 100644
--- a/doc/api/graphql/reference/gitlab_schema.json
+++ b/doc/api/graphql/reference/gitlab_schema.json
@@ -13757,6 +13757,20 @@
"deprecationReason": null
},
{
+ "name": "storageSizeLimit",
+ "description": "Total storage limit of the root namespace in bytes",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "subgroupCreationLevel",
"description": "The permission level required to create subgroups within the group",
"args": [
@@ -20433,6 +20447,152 @@
"possibleTypes": null
},
{
+ "kind": "INPUT_OBJECT",
+ "name": "MergeRequestUpdateInput",
+ "description": "Autogenerated input type of MergeRequestUpdate",
+ "fields": null,
+ "inputFields": [
+ {
+ "name": "projectPath",
+ "description": "The project the merge request to mutate is in",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "iid",
+ "description": "The iid of the merge request to mutate",
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "title",
+ "description": "Title of the merge request",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "targetBranch",
+ "description": "Target branch of the merge request",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "description",
+ "description": "Description of the merge request (Markdown rendered as HTML for caching)",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "interfaces": null,
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "MergeRequestUpdatePayload",
+ "description": "Autogenerated return type of MergeRequestUpdate",
+ "fields": [
+ {
+ "name": "clientMutationId",
+ "description": "A unique identifier for the client performing the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "errors",
+ "description": "Errors encountered during execution of the mutation.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "mergeRequest",
+ "description": "The merge request after mutation",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "MergeRequest",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
"kind": "OBJECT",
"name": "Metadata",
"description": null,
@@ -22267,6 +22427,33 @@
"deprecationReason": null
},
{
+ "name": "mergeRequestUpdate",
+ "description": "Update attributes of a merge request",
+ "args": [
+ {
+ "name": "input",
+ "description": null,
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "INPUT_OBJECT",
+ "name": "MergeRequestUpdateInput",
+ "ofType": null
+ }
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "MergeRequestUpdatePayload",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "removeAwardEmoji",
"description": null,
"args": [
@@ -22978,6 +23165,20 @@
"deprecationReason": null
},
{
+ "name": "storageSizeLimit",
+ "description": "Total storage limit of the root namespace in bytes",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "visibility",
"description": "Visibility of the namespace",
"args": [
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index a170d4e76ef..289a560f548 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -745,6 +745,7 @@ Autogenerated return type of EpicTreeReorder
| `requireTwoFactorAuthentication` | Boolean | Indicates if all users in this group are required to set up two-factor authentication |
| `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces |
| `shareWithGroupLock` | Boolean | Indicates if sharing a project with another group within this group is prevented |
+| `storageSizeLimit` | Int | Total storage limit of the root namespace in bytes |
| `subgroupCreationLevel` | String | The permission level required to create subgroups within the group |
| `twoFactorGracePeriod` | Int | Time before two-factor authentication is enforced |
| `userPermissions` | GroupPermissions! | Permissions for the current user on the resource |
@@ -1100,6 +1101,16 @@ Autogenerated return type of MergeRequestSetWip
| `errors` | String! => Array | Errors encountered during execution of the mutation. |
| `mergeRequest` | MergeRequest | The merge request after mutation |
+## MergeRequestUpdatePayload
+
+Autogenerated return type of MergeRequestUpdate
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
+| `errors` | String! => Array | Errors encountered during execution of the mutation. |
+| `mergeRequest` | MergeRequest | The merge request after mutation |
+
## Metadata
| Name | Type | Description |
@@ -1157,6 +1168,7 @@ Represents a milestone.
| `path` | String! | Path of the namespace |
| `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace |
| `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces |
+| `storageSizeLimit` | Int | Total storage limit of the root namespace in bytes |
| `visibility` | String | Visibility of the namespace |
## Note
diff --git a/doc/development/feature_flags/development.md b/doc/development/feature_flags/development.md
index a44bc70439e..0b918478668 100644
--- a/doc/development/feature_flags/development.md
+++ b/doc/development/feature_flags/development.md
@@ -32,8 +32,8 @@ request removing the feature flag or the merge request where the default value o
the feature flag is set to true. If the feature contains any DB migration it
should include a changelog entry for DB changes.
-In the rare case that you need the feature flag to be on automatically, use
-`default_enabled: true` when checking:
+If you need the feature flag to be on automatically, use `default_enabled: true`
+when checking:
```ruby
Feature.enabled?(:feature_flag, project, default_enabled: true)
diff --git a/doc/development/feature_flags/process.md b/doc/development/feature_flags/process.md
index 57360f5b771..00e9ab72f15 100644
--- a/doc/development/feature_flags/process.md
+++ b/doc/development/feature_flags/process.md
@@ -21,6 +21,19 @@ should be leveraged:
- Merge requests that make changes hidden behind a feature flag, or remove an
existing feature flag because a feature is deemed stable must have the
~"feature flag" label assigned.
+- When development of a feature will be spread across multiple merge
+ requests, you can use the following workflow:
+
+ 1. Introduce a feature flag which is **off** by default, in the first merge request.
+ 1. Submit incremental changes via one or more merge requests, ensuring that any
+ new code added can only be reached if the feature flag is **on**.
+ You can keep the feature flag enabled on your local GDK during development.
+ 1. When the feature is ready to be tested, enable the feature flag for
+ a specific project and ensure that there are no issues with the implementation.
+ 1. When the feature is ready to be announced, create a merge request that adds
+ documentation about the feature, including [documentation for the feature flag itself](../documentation/feature_flags.md),
+ and a changelog entry. In the same merge request either flip the feature flag to
+ be **on by default** or remove it entirely in order to enable the new behavior.
One might be tempted to think that feature flags will delay the release of a
feature by at least one month (= one release). This is not the case. A feature
@@ -29,6 +42,8 @@ flag does not have to stick around for a specific amount of time
is deemed stable. Stable means it works on GitLab.com without causing any
problems, such as outages.
+Please also read the [development guide for feature flags](development.md).
+
### When to use feature flags
Starting with GitLab 11.4, developers are required to use feature flags for
diff --git a/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png b/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png
new file mode 100644
index 00000000000..9d500600bc5
--- /dev/null
+++ b/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png
Binary files differ
diff --git a/doc/user/infrastructure/index.md b/doc/user/infrastructure/index.md
index c17d1831b50..bb8cf3228d9 100644
--- a/doc/user/infrastructure/index.md
+++ b/doc/user/infrastructure/index.md
@@ -212,18 +212,17 @@ Let's explore how to configure a GitLab Terraform Report artifact:
- terraform plan -out=$PLAN
- terraform show --json $PLAN | convert_report > $PLAN_JSON
artifacts:
- name: plan
- paths:
- - $PLAN
reports:
terraform: $PLAN_JSON
```
For a full example, see [Example `.gitlab-ci.yaml` file](#example-gitlab-ciyaml-file).
+ For an example displaying multiple reports, see [`.gitlab-ci.yaml` multiple reports file](#mulitple-terraform-plan-reports).
+
1. Running the pipeline displays the widget in the merge request, like this:
- ![MR Terraform widget](img/terraform_plan_widget_v13_0.png)
+ ![MR Terraform widget](img/terraform_plan_widget_v13_2.png)
1. Clicking the **View Full Log** button in the widget takes you directly to the
plan output present in the pipeline logs:
@@ -273,9 +272,6 @@ plan:
- terraform plan -out=$PLAN
- terraform show --json $PLAN | convert_report > $PLAN_JSON
artifacts:
- name: plan
- paths:
- - ${TF_ROOT}/plan.tfplan
reports:
terraform: ${TF_ROOT}/tfplan.json
@@ -294,3 +290,60 @@ apply:
- master
```
+
+### Mulitple Terraform Plan reports
+
+Starting with 13.2, you can display mutiple reports on the Merge Request page. The reports will also display the `artifact: name:`. See example below for a suggested setup.
+
+```yaml
+image:
+ name: registry.gitlab.com/gitlab-org/gitlab-build-images:terraform
+ entrypoint:
+ - '/usr/bin/env'
+ - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
+
+cache:
+ paths:
+ - .terraform
+
+stages:
+ - build
+
+.terraform-plan-generation:
+ stage: build
+ variables:
+ PLAN: plan.tfplan
+ JSON_PLAN_FILE: tfplan.json
+ before_script:
+ - cd ${TERRAFORM_DIRECTORY}
+ - terraform --version
+ - terraform init
+ - apk --no-cache add jq
+ script:
+ - terraform validate
+ - terraform plan -out=${PLAN}
+ - terraform show --json ${PLAN} | jq -r '([.resource_changes[]?.change.actions?]|flatten)|{"create":(map(select(.=="create"))|length),"update":(map(select(.=="update"))|length),"delete":(map(select(.=="delete"))|length)}' > ${JSON_PLAN_FILE}
+ artifacts:
+ reports:
+ terraform: ${TERRAFORM_DIRECTORY}/${JSON_PLAN_FILE}
+
+review_plan:
+ extends: .terraform-plan-generation
+ variables:
+ TERRAFORM_DIRECTORY: "review/"
+ # Review will not include an artifact name
+
+staging_plan:
+ extends: .terraform-plan-generation
+ variables:
+ TERRAFORM_DIRECTORY: "staging/"
+ artifacts:
+ name: Staging
+
+production_plan:
+ extends: .terraform-plan-generation
+ variables:
+ TERRAFORM_DIRECTORY: "production/"
+ artifacts:
+ name: Production
+```
diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md
index a39725c7d02..8f090593984 100644
--- a/doc/user/project/issues/design_management.md
+++ b/doc/user/project/issues/design_management.md
@@ -242,3 +242,35 @@ To disable it:
```ruby
Feature.disable(:design_management_reference_filter_gfm_pipeline)
```
+
+## Design activity records
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33051) in GitLab 13.1
+> - It's deployed behind a feature flag, disabled by default.
+> - It's enabled on GitLab.com.
+> - To use it in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-design-events-core-only). **(CORE ONLY)**
+
+User activity events on designs (creation, deletion, and updates) are tracked by GitLab and
+displayed on the [user profile](../../profile/index.md#user-profile),
+[group](../../group/index.md#view-group-activity),
+and [project](../index.md#project-activity) activity pages.
+
+### Enable or disable Design Events **(CORE ONLY)**
+
+User activity for designs is under development and not ready for production use. It is
+deployed behind a feature flag that is **disabled by default**.
+[GitLab administrators with access to the GitLab Rails console](../../../administration/troubleshooting/navigating_gitlab_via_rails_console.md#starting-a-rails-console-session)
+can enable it for your instance. You're welcome to test it, but use it at your
+own risk.
+
+To enable it:
+
+```ruby
+Feature.enable(:design_activity_events)
+```
+
+To disable it:
+
+```ruby
+Feature.disable(:design_activity_events)
+```
diff --git a/doc/user/project/operations/feature_flags.md b/doc/user/project/operations/feature_flags.md
index f9ef33f628c..17c649455a3 100644
--- a/doc/user/project/operations/feature_flags.md
+++ b/doc/user/project/operations/feature_flags.md
@@ -35,125 +35,147 @@ To create and enable a feature flag:
1. Navigate to your project's **Operations > Feature Flags**.
1. Click the **New feature flag** button.
-1. Enter a name that starts with a letter and contains only lowercase letters, digits, underscores (`_`)
- and dashes (`-`), and does not end with a dash (`-`) or underscore (`_`).
-1. Enter a description (optional, 255 characters max).
-1. Enter details about how the flag should be applied:
- - In GitLab 13.0 and earlier: Enter an environment spec,
- enable or disable the flag in this environment, and select a rollout strategy.
- - In GitLab 13.1 and later (when [this feature flag](#feature-flag-behavior-change-in-130) is enabled): Select a strategy and then
- the environments to apply the strategy to.
+1. Fill in the details:
+ - Enter a name that starts with a letter and contains only lowercase letters, digits, underscores (`_`),
+ or dashes (`-`), and does not end with a dash (`-`) or underscore (`_`).
+ - Enter a description (optional, 255 characters max).
+ - In GitLab 13.0 and earlier, add **Environment specs**. For each environment,
+ include the:
+ - Status (default enabled)
+ - [Rollout strategy](#rollout-strategy-legacy) (defaults to all users)
+ - In GitLab 13.1 and later, add Feature Flag [**Strategies**](#feature-flag-strategies). For
+ each strategy, include the:
+ - Type (defaults to [All users](#all-users))
+ - Environment (defaults to all environments)
1. Click **Create feature flag**.
-The feature flag is displayed in the list. It is enabled by default.
+You can change these settings by clicking the **{pencil}** (edit) button
+next to any feature flag in the list.
-## Disable a feature flag for a specific environment
-
-In [GitLab 13.0 and earlier](https://gitlab.com/gitlab-org/gitlab/-/issues/8621),
-to disable a feature flag for a specific environment:
-
-1. Navigate to your project's **Operations > Feature Flags**.
-1. For the feature flag you want to disable, click the Pencil icon.
-1. To disable the flag:
- - In GitLab 13.0 and earlier: Slide the Status toggle for the environment. Or, to delete the
- environment spec, on the right, click the **Remove (X)** icon.
- - In GitLab 13.1 and later (when [this feature flag](#feature-flag-behavior-change-in-130) is
- enabled): For each strategy it applies to, under **Environments**, delete the environment.
-1. Click **Save changes**.
-
-## Disable a feature flag for all environments
-
-To disable a feature flag for all environments:
-
-1. Navigate to your project's **Operations > Feature Flags**.
-1. For the feature flag you want to disable, slide the Status toggle to **Disabled**.
-
-The feature flag is displayed on the **Disabled** tab.
+## Rollout strategy (legacy)
-## Feature flag behavior change in 13.0
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35555) in GitLab 13.0.
-
-Starting in GitLab 13.0, you can apply a feature flag strategy across multiple environments,
-without defining the strategy multiple times.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2.
-This feature is under development and not ready for production use. It is
-deployed behind a feature flag that is **disabled by default**.
-[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md)
-can enable it for your instance.
+In GitLab 13.0 and earlier, the **Rollout strategy** setting affects which users will experience
+the feature as enabled. Choose the percentage of users that the feature will be enabled
+for. The rollout strategy will have no effect if the environment spec is disabled.
-To enable it:
+It can be set to:
-```ruby
-Feature.enable(:feature_flags_new_version)
-```
-
-To disable it:
-
-```ruby
-Feature.disable(:feature_flags_new_version)
-```
+- All users
+- [Percent rollout (logged in users)](#percent-rollout-logged-in-users)
+ - Optionally, you can click the **Include additional user IDs** checkbox and add a list
+ of specific users IDs to enable the feature for.
+- [User IDs](#user-ids)
## Feature flag strategies
-GitLab Feature Flag uses [Unleash](https://unleash.github.io)
-as the feature flag engine. In Unleash, there is a concept of rulesets for granular feature flag controls,
-called [strategies](https://unleash.github.io/docs/activation_strategy).
-Supported strategies for GitLab Feature Flags are described below.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35555) in GitLab 13.0.
+> - It's deployed behind a feature flag, disabled by default.
+> - It's enabled on GitLab.com.
+> - To use it in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-feature-flag-strategies). **(CORE ONLY)**
-### Rollout strategy
+You can apply a feature flag strategy across multiple environments, without defining
+the strategy multiple times.
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2.
+GitLab Feature Flags use [Unleash](https://unleash.github.io) as the feature flag
+engine. In Unleash, there are [strategies](https://unleash.github.io/docs/activation_strategy)
+for granular feature flag controls. GitLab Feature Flags can have multiple strategies,
+and the supported strategies are:
-The selected rollout strategy affects which users will experience the feature as enabled.
+- [All users](#all-users)
+- [Percent rollout (logged in users)](#percent-rollout-logged-in-users)
+- [User IDs](#user-ids)
+- [List](#list)
-The status of an environment spec ultimately determines whether or not a feature is enabled at all.
-For instance, a feature will always be disabled for every user if the matching environment spec has a disabled status, regardless of the chosen rollout strategy.
-However, a feature will be enabled for 50% of logged-in users if the matching environment spec has an enabled status along with a **Percent rollout (logged in users)** strategy set to 50%.
+Strategies can be added to feature flags when [creating a feature flag](#create-a-feature-flag),
+or by editing an existing feature flag after creation by navigating to **Operations > Feature Flags**
+and clicking **{pencil}** (edit).
-#### All users
+### All users
-Enables the feature for all users. It is implemented using the Unleash
-[`default`](https://unleash.github.io/docs/activation_strategy#default)
-activation strategy.
+Enables the feature for all users. It uses the [`default`](https://unleash.github.io/docs/activation_strategy#default)
+Unleash activation strategy.
-#### Percent rollout (logged in users)
+### Percent rollout (logged in users)
-Enables the feature for a percentage of authenticated users. It is
-implemented using the Unleash
+Enables the feature for a percentage of authenticated users. It uses the
[`gradualRolloutUserId`](https://unleash.github.io/docs/activation_strategy#gradualrolloutuserid)
-activation strategy.
+Unleash activation strategy.
-Set a value of 15%, for example, to enable the feature for 15% of authenticated users.
+For example, set a value of 15% to enable the feature for 15% of authenticated users.
-A rollout percentage may be between 0% and 100%.
+The rollout percentage can be from 0% to 100%.
CAUTION: **Caution:**
If this strategy is selected, then the Unleash client **must** be given a user
ID for the feature to be enabled. See the [Ruby example](#ruby-application-example) below.
-#### User IDs
+### User IDs
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2. [Updated](https://gitlab.com/gitlab-org/gitlab/-/issues/34363) to be defined per environment in GitLab 12.6.
-A feature flag may be enabled for a list of target users. It is implemented
+Enables the feature for a list of target users. It is implemented
using the Unleash [`userWithId`](https://unleash.github.io/docs/activation_strategy#userwithid)
activation strategy.
-User IDs should be a comma-separated list of values. For example, `user@example.com, user2@example.com`, or `username1,username2,username3`, etc.
+Enter user IDs as a comma-separated list of values. For example,
+`user@example.com, user2@example.com`, or `username1,username2,username3`, and so on.
CAUTION: **Caution:**
The Unleash client **must** be given a user ID for the feature to be enabled for
target users. See the [Ruby example](#ruby-application-example) below.
-#### List
+### List
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35930) in GitLab 13.1.
-A feature flag can be enabled for lists of users created with the [Feature Flag User List API](../../../api/feature_flag_user_lists.md).
+Enables the feature for lists of users created with the [Feature Flag User List API](../../../api/feature_flag_user_lists.md).
Similar to [User IDs](#user-ids), it uses the Unleash [`userWithId`](https://unleash.github.io/docs/activation_strategy#userwithid)
activation strategy.
+### Enable or disable feature flag strategies
+
+This feature is under development, but is ready for testing. It's
+deployed behind a feature flag that is **disabled by default**.
+[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md)
+can enable it for your instance.
+
+To enable it:
+
+```ruby
+Feature.enable(:feature_flags_new_version)
+```
+
+To disable it:
+
+```ruby
+Feature.disable(:feature_flags_new_version)
+```
+
+## Disable a feature flag for a specific environment
+
+In [GitLab 13.0 and earlier](https://gitlab.com/gitlab-org/gitlab/-/issues/8621),
+to disable a feature flag for a specific environment:
+
+1. Navigate to your project's **Operations > Feature Flags**.
+1. For the feature flag you want to disable, click the Pencil icon.
+1. To disable the flag:
+ - In GitLab 13.0 and earlier: Slide the Status toggle for the environment. Or, to delete the
+ environment spec, on the right, click the **Remove (X)** icon.
+ - In GitLab 13.1 and later: For each strategy it applies to, under **Environments**, delete the environment.
+
+1. Click **Save changes**.
+
+## Disable a feature flag for all environments
+
+To disable a feature flag for all environments:
+
+1. Navigate to your project's **Operations > Feature Flags**.
+1. For the feature flag you want to disable, slide the Status toggle to **Disabled**.
+
+The feature flag is displayed on the **Disabled** tab.
+
## Integrate feature flags with your application
To use feature flags with your application, get access credentials from GitLab.
diff --git a/doc/user/project/protected_tags.md b/doc/user/project/protected_tags.md
index e80b8098bec..bb5bca39398 100644
--- a/doc/user/project/protected_tags.md
+++ b/doc/user/project/protected_tags.md
@@ -12,7 +12,7 @@ This feature evolved out of [protected branches](protected_branches.md)
## Overview
-Protected tags will prevent anyone from updating or deleting the tag, as and will prevent creation of matching tags based on the permissions you have selected. By default, anyone without Maintainer permission will be prevented from creating tags.
+Protected tags will prevent anyone from updating or deleting the tag, and will prevent creation of matching tags based on the permissions you have selected. By default, anyone without Maintainer permission will be prevented from creating tags.
## Configuring protected tags
diff --git a/lib/api/pipelines.rb b/lib/api/pipelines.rb
index c09bca26a41..8cac6ad6bed 100644
--- a/lib/api/pipelines.rb
+++ b/lib/api/pipelines.rb
@@ -120,7 +120,7 @@ module API
authorize! :read_build, pipeline
- present pipeline.test_reports, with: TestReportEntity
+ present pipeline.test_reports, with: TestReportEntity, details: true
end
desc 'Deletes a pipeline' do
diff --git a/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb b/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb
new file mode 100644
index 00000000000..3db2244d641
--- /dev/null
+++ b/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+module Banzai
+ module Filter
+ module JiraImport
+ # Uses Kramdown to convert from the Atlassian Document Format (json)
+ # into CommonMark
+ # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/
+ class AdfToCommonmarkFilter < HTML::Pipeline::TextFilter
+ def initialize(text, context = nil, result = nil)
+ super(text, context, result)
+ end
+
+ def call
+ Kramdown::Document.new(@text, input: 'AtlassianDocumentFormat', html_tables: true).to_commonmark
+ rescue ::Kramdown::Error => e
+ # If we get an error, then just return the original text so at
+ # least the user knows something went wrong
+ "#{e.message}\n\n#{@text}"
+ end
+ end
+ end
+ end
+end
diff --git a/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb b/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb
new file mode 100644
index 00000000000..8af0279673c
--- /dev/null
+++ b/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Banzai
+ module Pipeline
+ module JiraImport
+ class AdfCommonmarkPipeline < BasePipeline
+ def self.filters
+ FilterArray[
+ Filter::JiraImport::AdfToCommonmarkFilter
+ ]
+ end
+ end
+ end
+ end
+end
diff --git a/lib/event_filter.rb b/lib/event_filter.rb
index 538727dc422..eab64d05114 100644
--- a/lib/event_filter.rb
+++ b/lib/event_filter.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class EventFilter
+ include Gitlab::Utils::StrongMemoize
+
attr_accessor :filter
ALL = 'all'
@@ -10,6 +12,7 @@ class EventFilter
COMMENTS = 'comments'
TEAM = 'team'
WIKI = 'wiki'
+ DESIGNS = 'designs'
def initialize(filter)
# Split using comma to maintain backward compatibility Ex/ "filter1,filter2"
@@ -38,6 +41,8 @@ class EventFilter
events.where(action: [:created, :updated, :closed, :reopened], target_type: 'Issue')
when WIKI
wiki_events(events)
+ when DESIGNS
+ design_events(events)
else
events
end
@@ -47,7 +52,8 @@ class EventFilter
private
def apply_feature_flags(events)
- return events.not_wiki_page unless Feature.enabled?(:wiki_events)
+ events = events.not_wiki_page unless Feature.enabled?(:wiki_events)
+ events = events.not_design unless can_view_design_activity?
events
end
@@ -58,8 +64,18 @@ class EventFilter
events.for_wiki_page
end
+ def design_events(events)
+ return events.for_design if can_view_design_activity?
+
+ events
+ end
+
def filters
- [ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM, WIKI]
+ [ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM, WIKI, DESIGNS]
+ end
+
+ def can_view_design_activity?
+ Feature.enabled?(:design_activity_events)
end
end
diff --git a/lib/gitlab/ci/reports/test_report_summary.rb b/lib/gitlab/ci/reports/test_report_summary.rb
new file mode 100644
index 00000000000..85b83b790e7
--- /dev/null
+++ b/lib/gitlab/ci/reports/test_report_summary.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Reports
+ class TestReportSummary
+ attr_reader :all_results
+
+ def initialize(all_results)
+ @all_results = all_results
+ end
+
+ def total
+ TestSuiteSummary.new(all_results)
+ end
+
+ def total_time
+ total.total_time
+ end
+
+ def total_count
+ total.total_count
+ end
+
+ def success_count
+ total.success_count
+ end
+
+ def failed_count
+ total.failed_count
+ end
+
+ def skipped_count
+ total.skipped_count
+ end
+
+ def error_count
+ total.error_count
+ end
+
+ def test_suites
+ all_results
+ .group_by(&:tests_name)
+ .transform_values { |results| TestSuiteSummary.new(results) }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/reports/test_suite_summary.rb b/lib/gitlab/ci/reports/test_suite_summary.rb
new file mode 100644
index 00000000000..707b443a113
--- /dev/null
+++ b/lib/gitlab/ci/reports/test_suite_summary.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Reports
+ class TestSuiteSummary
+ attr_reader :results
+
+ def initialize(results)
+ @results = results
+ end
+
+ def name
+ @name ||= results.first.tests_name
+ end
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def total_time
+ @total_time ||= results.sum(&:tests_duration)
+ end
+
+ def success_count
+ @success_count ||= results.sum(&:tests_success)
+ end
+
+ def failed_count
+ @failed_count ||= results.sum(&:tests_failed)
+ end
+
+ def skipped_count
+ @skipped_count ||= results.sum(&:tests_skipped)
+ end
+
+ def error_count
+ @error_count ||= results.sum(&:tests_errored)
+ end
+
+ def total_count
+ @total_count ||= [success_count, failed_count, skipped_count, error_count].sum
+ end
+ # rubocop: disable CodeReuse/ActiveRecord
+ end
+ end
+ end
+end
diff --git a/lib/kramdown/converter/commonmark.rb b/lib/kramdown/converter/commonmark.rb
new file mode 100644
index 00000000000..c7257d8278d
--- /dev/null
+++ b/lib/kramdown/converter/commonmark.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+module Kramdown
+ module Converter
+ # Overrides the base Kramdown converter to add any special
+ # behaviour for CommonMark.
+ #
+ # Currently we support an option `html_tables` that outputs
+ # an HTML table instead of a Markdown table. This is to
+ # support possibly being given complex tables, such as from ADF.
+ #
+ # Note: this is only an initial implementation. Currently don't
+ # strip out IALs or other specific kramdown syntax.
+ class Commonmark < ::Kramdown::Converter::Kramdown
+ def convert_table(el, opts)
+ return super unless @options[:html_tables]
+
+ opts[:alignment] = el.options[:alignment]
+ result = inner(el, opts)
+
+ "<table>\n#{result}</table>\n\n"
+ end
+
+ def convert_thead(el, opts)
+ return super unless @options[:html_tables]
+
+ "<thead>\n#{inner(el, opts)}</thead>\n"
+ end
+
+ def convert_tbody(el, opts)
+ return super unless @options[:html_tables]
+
+ "<tbody>\n#{inner(el, opts)}</tbody>\n"
+ end
+
+ def convert_tfoot(el, opts)
+ return super unless @options[:html_tables]
+
+ "<tfoot>\n#{inner(el, opts)}</tfoot>\n"
+ end
+
+ def convert_tr(el, opts)
+ return super unless @options[:html_tables]
+
+ "<tr>\n#{el.children.map {|c| convert(c, opts) }.join}</tr>\n"
+ end
+
+ def convert_td(el, opts)
+ return super unless @options[:html_tables]
+
+ # We need to add two linefeeds in order for any inner text to
+ # be processed as markdown. The HTML block must be "closed",
+ # as referenced in the CommonMark spec
+ # @see https://spec.commonmark.org/0.29/#html-blocks
+ "<td>\n\n#{inner(el, opts)}</td>\n"
+ end
+
+ def convert_th(el, opts)
+ return super unless @options[:html_tables]
+
+ # We need to add two linefeeds in order for any inner text to
+ # be processed as markdown. The HTML block must be "closed",
+ # as referenced in the CommonMark spec
+ # @see https://spec.commonmark.org/0.29/#html-blocks
+ "<th>\n\n#{inner(el, opts)}</th>\n"
+ end
+ end
+ end
+end
diff --git a/lib/kramdown/parser/atlassian_document_format.rb b/lib/kramdown/parser/atlassian_document_format.rb
new file mode 100644
index 00000000000..4ceb879a04c
--- /dev/null
+++ b/lib/kramdown/parser/atlassian_document_format.rb
@@ -0,0 +1,381 @@
+# frozen_string_literal: true
+
+module Kramdown
+ module Parser
+ # Parses an Atlassian Document Format (ADF) json into a
+ # Kramdown AST tree, for conversion to another format.
+ # The primary goal is to convert in GitLab Markdown.
+ #
+ # This parser does NOT resolve external resources, such as media/attachments.
+ # A special url is generated for media based on the id, for example
+ # ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c)
+ # so that a later filter/process can resolve those.
+ #
+ # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/ ADF Document Structure
+ # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/playground/ ADF Playground
+ # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/viewer/ ADF Viewer
+ class AtlassianDocumentFormat < Kramdown::Parser::Base
+ unless defined?(TOP_LEVEL_BLOCK_NODES)
+ TOP_LEVEL_BLOCK_NODES = %w[blockquote
+ bulletList
+ codeBlock
+ heading
+ mediaGroup
+ mediaSingle
+ orderedList
+ panel
+ paragraph
+ rule
+ table].freeze
+
+ CHILD_BLOCK_NODES = %w[listItem
+ media
+ table_cell
+ table_header
+ table_row].freeze
+
+ INLINE_NODES = %w[emoji
+ hardBreak
+ inlineCard
+ mention
+ text].freeze
+
+ MARKS = %w[code
+ em
+ link
+ strike
+ strong
+ subsup
+ textColor
+ underline].freeze
+
+ TABLE_CELL_NODES = %w[blockquote
+ bulletList
+ codeBlock
+ heading
+ mediaGroup
+ orderedList
+ panel
+ paragraph
+ rule].freeze
+
+ LIST_ITEM_NODES = %w[bulletList
+ codeBlock
+ mediaSingle
+ orderedList
+ paragraph].freeze
+
+ PANEL_NODES = %w[bulletList
+ heading
+ orderedList
+ paragraph].freeze
+
+ PANEL_EMOJIS = { info: ':information_source:',
+ note: ':notepad_spiral:',
+ warning: ':warning:',
+ success: ':white_check_mark:',
+ error: ':octagonal_sign:' }.freeze
+
+ # The default language for code blocks is `java`, as indicated in
+ # You can't change the default in Jira. There was a comment that indicated
+ # Confluence can set the default language.
+ # @see https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=advanced&_ga=2.5135221.773220073.1591894917-438867908.1591894917
+ # @see https://jira.atlassian.com/browse/JRASERVER-29184?focusedCommentId=832255&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-832255
+ CODE_BLOCK_DEFAULT_LANGUAGE = 'java'
+ end
+
+ def parse
+ ast = Gitlab::Json.parse(@source)
+
+ validate_document(ast)
+
+ process_content(@root, ast, TOP_LEVEL_BLOCK_NODES)
+ rescue ::JSON::ParserError => e
+ msg = 'Invalid Atlassian Document Format JSON'
+ Gitlab::AppLogger.error msg
+ Gitlab::AppLogger.error e
+
+ raise ::Kramdown::Error, msg
+ end
+
+ def process_content(element, ast_node, allowed_types)
+ ast_node['content'].each do |node|
+ next unless allowed_types.include?(node['type'])
+
+ public_send("process_#{node['type'].underscore}", element, node) # rubocop:disable GitlabSecurity/PublicSend
+ end
+ end
+
+ def process_blockquote(element, ast_node)
+ new_element = Element.new(:blockquote)
+ element.children << new_element
+
+ process_content(new_element, ast_node, TOP_LEVEL_BLOCK_NODES)
+ end
+
+ def process_bullet_list(element, ast_node)
+ new_element = Element.new(:ul)
+ element.children << new_element
+
+ process_content(new_element, ast_node, %w[listItem])
+ end
+
+ def process_code_block(element, ast_node)
+ code_text = gather_text(ast_node)
+ lang = ast_node.dig('attrs', 'language') || CODE_BLOCK_DEFAULT_LANGUAGE
+
+ element.children << Element.new(:codeblock, code_text, {}, { lang: lang })
+ end
+
+ def process_emoji(element, ast_node)
+ emoji = ast_node.dig('attrs', 'text') || ast_node.dig('attrs', 'shortName')
+ return unless emoji
+
+ add_text(emoji, element, :text)
+ end
+
+ def process_hard_break(element, ast_node)
+ element.children << Element.new(:br)
+ end
+
+ def process_heading(element, ast_node)
+ level = ast_node.dig('attrs', 'level').to_i.clamp(1, 6)
+ options = { level: level }
+ new_element = Element.new(:header, nil, nil, options)
+ element.children << new_element
+
+ process_content(new_element, ast_node, INLINE_NODES)
+ extract_element_text(new_element, new_element.options[:raw_text] = +'')
+ end
+
+ def process_inline_card(element, ast_node)
+ url = ast_node.dig('attrs', 'url')
+ data = ast_node.dig('attrs', 'data')
+
+ if url
+ # we don't pull a description from the link and create a panel,
+ # just convert to a normal link
+ new_element = Element.new(:text, url)
+ element.children << wrap_element(new_element, :a, nil, { 'href' => url })
+ elsif data
+ # data is JSONLD (https://json-ld.org/), so for now output
+ # as a codespan of text, with `adf-inlineCard: ` at the start
+ text = "adf-inlineCard: #{data}"
+ element.children << Element.new(:codespan, text, nil, { lang: 'adf-inlinecard' })
+ end
+ end
+
+ def process_list_item(element, ast_node)
+ new_element = Element.new(:li)
+ element.children << new_element
+
+ process_content(new_element, ast_node, LIST_ITEM_NODES)
+ end
+
+ def process_media(element, ast_node)
+ media_url = "adf-media://#{ast_node['attrs']['id']}"
+
+ case ast_node['attrs']['type']
+ when 'file'
+ attrs = { 'src' => media_url, 'alt' => ast_node['attrs']['collection'] }
+ media_element = Element.new(:img, nil, attrs)
+ when 'link'
+ attrs = { 'href' => media_url }
+ media_element = wrap_element(Element.new(:text, media_url), :a, nil, attrs)
+ end
+
+ media_element = wrap_element(media_element, :p)
+ element.children << media_element
+ end
+
+ # wraps a single media element.
+ # Currently ignore attrs.layout and attrs.width
+ def process_media_single(element, ast_node)
+ new_element = Element.new(:p)
+ element.children << new_element
+
+ process_content(new_element, ast_node, %w[media])
+ end
+
+ # wraps a group media element.
+ # Currently ignore attrs.layout and attrs.width
+ def process_media_group(element, ast_node)
+ ul_element = Element.new(:ul)
+ element.children << ul_element
+
+ ast_node['content'].each do |node|
+ next unless node['type'] == 'media'
+
+ li_element = Element.new(:li)
+ ul_element.children << li_element
+
+ process_media(li_element, node)
+ end
+ end
+
+ def process_mention(element, ast_node)
+ # Make it `@adf-mention:` since there is no guarantee that it is
+ # a valid username in our system. This gives us an
+ # opportunity to replace it later. Mention name can have
+ # spaces, so double quote it
+ mention_text = ast_node.dig('attrs', 'text')&.gsub('@', '')
+ mention_text = %Q("#{mention_text}") if mention_text.match?(/ /)
+ mention_text = %Q(@adf-mention:#{mention_text})
+
+ add_text(mention_text, element, :text)
+ end
+
+ def process_ordered_list(element, ast_node)
+ # `attrs.order` is not supported in the Kramdown AST
+ new_element = Element.new(:ol)
+ element.children << new_element
+
+ process_content(new_element, ast_node, %w[listItem])
+ end
+
+ # since we don't have something similar, then put <hr> around it and
+ # add a bolded status text (eg: "Error:") to the front of it.
+ def process_panel(element, ast_node)
+ panel_type = ast_node.dig('attrs', 'panelType')
+ return unless %w[info note warning success error].include?(panel_type)
+
+ panel_header_text = "#{PANEL_EMOJIS[panel_type.to_sym]} "
+ panel_header_element = Element.new(:text, panel_header_text)
+
+ new_element = Element.new(:blockquote)
+ new_element.children << panel_header_element
+ element.children << new_element
+
+ process_content(new_element, ast_node, PANEL_NODES)
+ end
+
+ def process_paragraph(element, ast_node)
+ new_element = Element.new(:p)
+ element.children << new_element
+
+ process_content(new_element, ast_node, INLINE_NODES)
+ end
+
+ def process_rule(element, ast_node)
+ element.children << Element.new(:hr)
+ end
+
+ def process_table(element, ast_node)
+ table = Element.new(:table, nil, nil, { alignment: [:default, :default] })
+ element.children << table
+
+ tbody = Element.new(:tbody)
+ table.children << tbody
+
+ process_content(tbody, ast_node, %w[tableRow])
+ end
+
+ # we ignore the attributes, attrs.background, attrs.colspan,
+ # attrs.colwidth, and attrs.rowspan
+ def process_table_cell(element, ast_node)
+ new_element = Element.new(:td)
+ element.children << new_element
+
+ process_content(new_element, ast_node, TABLE_CELL_NODES)
+ end
+
+ # we ignore the attributes, attrs.background, attrs.colspan,
+ # attrs.colwidth, and attrs.rowspan
+ def process_table_header(element, ast_node)
+ new_element = Element.new(:th)
+ element.children << new_element
+
+ process_content(new_element, ast_node, TABLE_CELL_NODES)
+ end
+
+ def process_table_row(element, ast_node)
+ new_element = Element.new(:tr)
+ element.children << new_element
+
+ process_content(new_element, ast_node, %w[tableHeader tableCell])
+ end
+
+ def process_text(element, ast_node)
+ new_element = Element.new(:text, ast_node['text'])
+ new_element = apply_marks(new_element, ast_node, MARKS)
+ element.children << new_element
+ end
+
+ private
+
+ def validate_document(ast)
+ return if ast['type'] == 'doc'
+
+ raise ::JSON::ParserError, 'missing doc node'
+ end
+
+ # ADF marks are an attribute on the node. For kramdown,
+ # we have to wrap the node with an element for the mark.
+ def apply_marks(element, ast_node, allowed_types)
+ return element unless ast_node['marks']
+
+ new_element = element
+
+ ast_node['marks'].each do |mark|
+ next unless allowed_types.include?(mark['type'])
+
+ case mark['type']
+ when 'code'
+ new_element = Element.new(:codespan, ast_node['text'])
+ when 'em'
+ new_element = wrap_element(new_element, :em)
+ when 'link'
+ attrs = { 'href' => mark.dig('attrs', 'href') }
+ attrs['title'] = mark.dig('attrs', 'title')
+ new_element = wrap_element(new_element, :a, nil, attrs)
+ when 'strike'
+ new_element = wrap_element(new_element, :html_element, 'del', {}, category: :span)
+ when 'strong'
+ new_element = wrap_element(new_element, :strong)
+ when 'subsup'
+ type = mark.dig('attrs', 'type')
+
+ case type
+ when 'sub'
+ new_element = wrap_element(new_element, :html_element, 'sub', {}, category: :span)
+ when 'sup'
+ new_element = wrap_element(new_element, :html_element, 'sup', {}, category: :span)
+ else
+ next
+ end
+ when 'textColor'
+ color = mark.dig('attrs', 'color')
+ new_element = wrap_element(new_element, :html_element, 'span', { color: color }, category: :span)
+ when 'underline'
+ new_element = wrap_element(new_element, :html_element, 'u', {}, category: :span)
+ else
+ next
+ end
+ end
+
+ new_element
+ end
+
+ def wrap_element(element, type, *args)
+ wrapper = Element.new(type, *args)
+ wrapper.children << element
+ wrapper
+ end
+
+ def extract_element_text(element, raw)
+ raw << element.value.to_s if element.type == :text
+ element.children.each { |c| extract_element_text(c, raw) }
+ end
+
+ def gather_text(ast_node)
+ ast_node['content'].inject('') do |memo, node|
+ node['type'] == 'text' ? (memo + node['text']) : memo
+ end
+ end
+
+ def method_missing(method, *args)
+ raise NotImplementedError, "method `#{method}` not implemented yet"
+ end
+ end
+ end
+end
diff --git a/lib/object_storage/direct_upload.rb b/lib/object_storage/direct_upload.rb
index 5eab882039d..f973114e035 100644
--- a/lib/object_storage/direct_upload.rb
+++ b/lib/object_storage/direct_upload.rb
@@ -92,7 +92,11 @@ module ObjectStorage
# Implements https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html
def get_url
- connection.get_object_url(bucket_name, object_name, expire_at)
+ if google?
+ connection.get_object_https_url(bucket_name, object_name, expire_at)
+ else
+ connection.get_object_url(bucket_name, object_name, expire_at)
+ end
end
# Implements https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html
@@ -166,6 +170,10 @@ module ObjectStorage
provider == 'AWS'
end
+ def google?
+ provider == 'Google'
+ end
+
def requires_multipart_upload?
aws? && !has_length
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 11747bbeae9..d13207d6c41 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -9104,6 +9104,9 @@ msgstr ""
msgid "EventFilterBy|Filter by comments"
msgstr ""
+msgid "EventFilterBy|Filter by designs"
+msgstr ""
+
msgid "EventFilterBy|Filter by epic events"
msgstr ""
diff --git a/package.json b/package.json
index 87252948738..02a67664a11 100644
--- a/package.json
+++ b/package.json
@@ -216,7 +216,7 @@
"yarn-deduplicate": "^1.1.1"
},
"blockedDependencies": {
- "bootstrap-vue": "https://docs.gitlab.com/ee/development/fe_guide/dependencies.md#bootstrapvue"
+ "bootstrap-vue": "https://docs.gitlab.com/ee/development/fe_guide/dependencies.html#bootstrapvue"
},
"resolutions": {
"chokidar": "^3.4.0",
diff --git a/public/robots.txt b/public/robots.txt
index 20cd97a596f..12ceba88395 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -8,7 +8,10 @@
# Only some crawlers respect this setting, e.g. Googlebot does not
# Crawl-delay: 1
-# Based on details in https://gitlab.com/gitlab-org/gitlab/blob/master/config/routes.rb, https://gitlab.com/gitlab-org/gitlab/blob/master/spec/routing, and using application
+# Based on details in https://gitlab.com/gitlab-org/gitlab/blob/master/config/routes.rb,
+# https://gitlab.com/gitlab-org/gitlab/blob/master/spec/routing, and using application
+
+# Global routes
User-Agent: *
Disallow: /autocomplete/users
Disallow: /search
@@ -16,62 +19,48 @@ Disallow: /api
Disallow: /admin
Disallow: /profile
Disallow: /dashboard
-Disallow: /projects/new
-Disallow: /groups/new
-Disallow: /groups/*/edit
Disallow: /users
Disallow: /help
+Disallow: /s/
# Only specifically allow the Sign In page to avoid very ugly search results
Allow: /users/sign_in
-# Global snippets
+# Generic resource routes like new, edit, raw
+# This will block routes like:
+# - /projects/new
+# - /gitlab-org/gitlab-foss/issues/123/-/edit
User-Agent: *
-Disallow: /s/
-Disallow: /snippets/new
-Disallow: /snippets/*/edit
-Disallow: /snippets/*/raw
+Disallow: /*/new
+Disallow: /*/edit
+Disallow: /*/raw
+
+# Group details
+User-Agent: *
+Disallow: /groups/*/analytics
+Disallow: /groups/*/contribution_analytics
+Disallow: /groups/*/group_members
# Project details
User-Agent: *
Disallow: /*/*.git
-Disallow: /*/*/fork/new
-Disallow: /*/-/archive/
-Disallow: /*/*/repository/archive*
-Disallow: /*/*/activity
-Disallow: /*/*/new
-Disallow: /*/*/edit
-Disallow: /*/*/raw
-Disallow: /*/*/blame
-Disallow: /*/*/commits/*/*
-Disallow: /*/*/commit/*.patch
-Disallow: /*/*/commit/*.diff
-Disallow: /*/*/compare
-Disallow: /*/*/branches/new
-Disallow: /*/*/tags/new
-Disallow: /*/*/network
-Disallow: /*/*/graphs
-Disallow: /*/*/milestones/new
-Disallow: /*/*/milestones/*/edit
-Disallow: /*/*/issues/new
-Disallow: /*/*/issues/*/edit
-Disallow: /*/*/-/merge_requests/new
-Disallow: /*/*/-/merge_requests/*.patch
-Disallow: /*/*/-/merge_requests/*.diff
-Disallow: /*/*/-/merge_requests/*/edit
-Disallow: /*/*/-/merge_requests/*/diffs
-Disallow: /*/*/project_members/import
-Disallow: /*/*/labels/new
-Disallow: /*/*/labels/*/edit
-Disallow: /*/*/wikis/*/edit
-Disallow: /*/*/snippets/new
-Disallow: /*/*/snippets/*/edit
-Disallow: /*/*/snippets/*/raw
-Disallow: /*/*/deploy_keys
-Disallow: /*/*/hooks
-Disallow: /*/*/services
-Disallow: /*/*/protected_branches
-Disallow: /*/*/uploads/
-Disallow: /*/-/group_members
+Disallow: /*/archive/
+Disallow: /*/repository/archive*
+Disallow: /*/activity
+Disallow: /*/blame
+Disallow: /*/commits
+Disallow: /*/commit
+Disallow: /*/commit/*.patch
+Disallow: /*/commit/*.diff
+Disallow: /*/compare
+Disallow: /*/network
+Disallow: /*/graphs
+Disallow: /*/merge_requests/*.patch
+Disallow: /*/merge_requests/*.diff
+Disallow: /*/merge_requests/*/diffs
+Disallow: /*/deploy_keys
+Disallow: /*/hooks
+Disallow: /*/services
+Disallow: /*/protected_branches
+Disallow: /*/uploads/
Disallow: /*/project_members
-Disallow: /groups/*/-/contribution_analytics
-Disallow: /groups/*/-/analytics
+Disallow: /*/settings
diff --git a/spec/controllers/dashboard/projects_controller_spec.rb b/spec/controllers/dashboard/projects_controller_spec.rb
index ee043fde0ff..1e1d9519f78 100644
--- a/spec/controllers/dashboard/projects_controller_spec.rb
+++ b/spec/controllers/dashboard/projects_controller_spec.rb
@@ -5,13 +5,14 @@ require 'spec_helper'
RSpec.describe Dashboard::ProjectsController do
include ExternalAuthorizationServiceHelpers
+ let_it_be(:user) { create(:user) }
+
describe '#index' do
context 'user not logged in' do
it_behaves_like 'authenticates sessionless user', :index, :atom
end
context 'user logged in' do
- let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
let_it_be(:project2) { create(:project) }
@@ -71,8 +72,6 @@ RSpec.describe Dashboard::ProjectsController do
context 'json requests' do
render_views
- let(:user) { create(:user) }
-
before do
sign_in(user)
end
@@ -114,16 +113,14 @@ RSpec.describe Dashboard::ProjectsController do
end
context 'atom requests' do
- let(:user) { create(:user) }
-
before do
sign_in(user)
end
describe '#index' do
- context 'project pagination' do
- let(:projects) { create_list(:project, 2, creator: user) }
+ let_it_be(:projects) { create_list(:project, 2, creator: user) }
+ context 'project pagination' do
before do
allow(Kaminari.config).to receive(:default_per_page).and_return(1)
@@ -138,6 +135,37 @@ RSpec.describe Dashboard::ProjectsController do
expect(assigns(:events).count).to eq(2)
end
end
+
+ describe 'rendering' do
+ include DesignManagementTestHelpers
+ render_views
+
+ let(:project) { projects.first }
+ let!(:design_event) { create(:design_event, project: project) }
+ let!(:wiki_page_event) { create(:wiki_page_event, project: project) }
+ let!(:issue_event) { create(:closed_issue_event, project: project) }
+ let(:design) { design_event.design }
+ let(:wiki_page) { wiki_page_event.wiki_page }
+ let(:issue) { issue_event.issue }
+
+ before do
+ enable_design_management
+ project.add_developer(user)
+ end
+
+ it 'renders all kinds of event without error', :aggregate_failures do
+ get :index, format: :atom
+
+ expect(assigns(:events)).to include(design_event, wiki_page_event, issue_event)
+ expect(response).to render_template('dashboard/projects/index')
+ expect(response.body).to include(
+ "uploaded design #{design.to_reference}",
+ "created wiki page #{wiki_page.title}",
+ "joined project #{project.full_name}",
+ "closed issue #{issue.to_reference}"
+ )
+ end
+ end
end
end
end
diff --git a/spec/controllers/dashboard_controller_spec.rb b/spec/controllers/dashboard_controller_spec.rb
index d27817c0a82..cf15cf9256b 100644
--- a/spec/controllers/dashboard_controller_spec.rb
+++ b/spec/controllers/dashboard_controller_spec.rb
@@ -24,15 +24,20 @@ RSpec.describe DashboardController do
end
describe "GET activity as JSON" do
+ include DesignManagementTestHelpers
render_views
let(:user) { create(:user) }
let(:project) { create(:project, :public, issues_access_level: ProjectFeature::PRIVATE) }
+ let(:other_project) { create(:project, :public) }
before do
+ enable_design_management
create(:event, :created, project: project, target: create(:issue))
create(:wiki_page_event, :created, project: project)
create(:wiki_page_event, :updated, project: project)
+ create(:design_event, project: project)
+ create(:design_event, author: user, project: other_project)
sign_in(user)
@@ -42,12 +47,27 @@ RSpec.describe DashboardController do
context 'when user has permission to see the event' do
before do
project.add_developer(user)
+ other_project.add_developer(user)
end
it 'returns count' do
get :activity, params: { format: :json }
- expect(json_response['count']).to eq(3)
+ expect(json_response['count']).to eq(6)
+ end
+
+ describe 'design_activity_events feature flag' do
+ context 'it is off' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it 'excludes design activity' do
+ get :activity, params: { format: :json }
+
+ expect(json_response['count']).to eq(4)
+ end
+ end
end
end
diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb
index dce7105c073..b655fa7ee62 100644
--- a/spec/controllers/groups_controller_spec.rb
+++ b/spec/controllers/groups_controller_spec.rb
@@ -1138,6 +1138,48 @@ RSpec.describe GroupsController do
it_behaves_like 'disabled when using an external authorization service'
end
+ describe "GET #activity as JSON" do
+ include DesignManagementTestHelpers
+ render_views
+
+ let(:project) { create(:project, :public, group: group) }
+ let(:other_project) { create(:project, :public, group: group) }
+
+ def get_activity
+ get :activity, params: { format: :json, id: group.to_param }
+ end
+
+ before do
+ enable_design_management
+ issue = create(:issue, project: project)
+ create(:event, :created, project: project, target: issue)
+ create(:design_event, project: project)
+ create(:design_event, project: other_project)
+
+ sign_in(user)
+
+ request.cookies[:event_filter] = 'all'
+ end
+
+ it 'returns count' do
+ get_activity
+
+ expect(json_response['count']).to eq(3)
+ end
+
+ context 'the design_activity_events feature flag is disabled' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it 'does not include the design activity' do
+ get_activity
+
+ expect(json_response['count']).to eq(1)
+ end
+ end
+ end
+
describe 'GET #issues' do
subject { get :issues, params: { id: group.to_param } }
diff --git a/spec/controllers/projects/pipelines/tests_controller_spec.rb b/spec/controllers/projects/pipelines/tests_controller_spec.rb
new file mode 100644
index 00000000000..78d29e9825e
--- /dev/null
+++ b/spec/controllers/projects/pipelines/tests_controller_spec.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Projects::Pipelines::TestsController do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :public, :repository) }
+ let(:pipeline) { create(:ci_pipeline, project: project) }
+
+ before do
+ sign_in(user)
+ end
+
+ describe 'GET #summary.json' do
+ context 'when pipeline has build report results' do
+ let(:pipeline) { create(:ci_pipeline, :with_report_results, project: project) }
+
+ it 'renders test report summary data' do
+ get_tests_summary_json
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(json_response['total_count']).to eq(2)
+ end
+ end
+
+ context 'when pipeline does not have build report results' do
+ it 'renders test report summary data' do
+ get_tests_summary_json
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(json_response['total_count']).to eq(0)
+ end
+ end
+
+ context 'when feature is disabled' do
+ before do
+ stub_feature_flags(build_report_summary: false)
+ end
+
+ it 'returns 404' do
+ get_tests_summary_json
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ expect(response.body).to be_empty
+ end
+ end
+ end
+
+ def get_tests_summary_json
+ get :summary,
+ params: {
+ namespace_id: project.namespace,
+ project_id: project,
+ id: pipeline.id
+ },
+ format: :json
+ end
+end
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index 8aae9ef85be..56baa09b4bd 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -86,11 +86,13 @@ RSpec.describe ProjectsController do
end
describe "GET #activity as JSON" do
+ include DesignManagementTestHelpers
render_views
let(:project) { create(:project, :public, issues_access_level: ProjectFeature::PRIVATE) }
before do
+ enable_design_management
create(:event, :created, project: project, target: create(:issue))
sign_in(user)
@@ -103,11 +105,44 @@ RSpec.describe ProjectsController do
project.add_developer(user)
end
- it 'returns count' do
+ def get_activity(project)
get :activity, params: { namespace_id: project.namespace, id: project, format: :json }
+ end
+
+ it 'returns count' do
+ get_activity(project)
expect(json_response['count']).to eq(1)
end
+
+ context 'design events are visible' do
+ include DesignManagementTestHelpers
+ let(:other_project) { create(:project, namespace: user.namespace) }
+
+ before do
+ enable_design_management
+ create(:design_event, project: project)
+ request.cookies[:event_filter] = EventFilter::DESIGNS
+ end
+
+ it 'returns correct count' do
+ get_activity(project)
+
+ expect(json_response['count']).to eq(1)
+ end
+
+ context 'the feature flag is disabled' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it 'returns correct count' do
+ get_activity(project)
+
+ expect(json_response['count']).to eq(0)
+ end
+ end
+ end
end
context 'when user has no permission to see the event' do
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 9403967aa0a..76a38f15245 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -302,6 +302,12 @@ FactoryBot.define do
end
end
+ trait :report_results do
+ after(:build) do |build|
+ build.report_results << build(:ci_build_report_result)
+ end
+ end
+
trait :test_reports do
after(:build) do |build|
build.job_artifacts << create(:ci_job_artifact, :junit, job: build)
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index 85cdeaca12c..3a1bad8d285 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -65,6 +65,14 @@ FactoryBot.define do
add_attribute(:protected) { true }
end
+ trait :with_report_results do
+ status { :success }
+
+ after(:build) do |pipeline, evaluator|
+ pipeline.builds << build(:ci_build, :report_results, pipeline: pipeline, project: pipeline.project)
+ end
+ end
+
trait :with_test_reports do
status { :success }
diff --git a/spec/factories/events.rb b/spec/factories/events.rb
index 60bb3044191..ecbda5fbfd3 100644
--- a/spec/factories/events.rb
+++ b/spec/factories/events.rb
@@ -21,7 +21,7 @@ FactoryBot.define do
factory :closed_issue_event do
action { :closed }
- target factory: :closed_issue
+ target { association(:closed_issue, project: project) }
end
factory :wiki_page_event do
diff --git a/spec/features/projects/activity/user_sees_design_activity_spec.rb b/spec/features/projects/activity/user_sees_design_activity_spec.rb
new file mode 100644
index 00000000000..01b707b0ad7
--- /dev/null
+++ b/spec/features/projects/activity/user_sees_design_activity_spec.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'Projects > Activity > User sees design Activity', :js do
+ include DesignManagementTestHelpers
+
+ let_it_be(:uploader) { create(:user) }
+ let_it_be(:editor) { create(:user) }
+ let_it_be(:deleter) { create(:user) }
+ let_it_be(:archiver) { create(:user) }
+
+ def design_activity(user, action)
+ [user.name, user.to_reference, action, 'design'].join(' ')
+ end
+
+ shared_examples 'being able to see design activity' do
+ let_it_be(:issue) { create(:issue, project: project) }
+ let_it_be(:design) { create(:design, issue: issue) }
+
+ before_all do
+ project.add_developer(user) # implicitly adds a project join event.
+ common_attrs = { project: project, design: design }
+ create(:design_event, :created, author: uploader, **common_attrs)
+ create(:design_event, :updated, author: editor, **common_attrs)
+ create(:design_event, :destroyed, author: deleter, **common_attrs)
+ create(:design_event, :archived, author: archiver, **common_attrs)
+ end
+
+ before do
+ enable_design_management
+ sign_in(user)
+ end
+
+ it 'shows the design comment action in the activity page' do
+ visit activity_project_path(project)
+
+ expect(page).to have_content('joined project')
+ expect(page).to have_content(design_activity(uploader, 'uploaded'))
+ expect(page).to have_content(design_activity(editor, 'revised'))
+ expect(page).to have_content(design_activity(deleter, 'deleted'))
+ expect(page).to have_content(design_activity(archiver, 'archived'))
+ end
+
+ it 'allows filtering out the design events', :aggregate_failures do
+ visit activity_project_path(project, event_filter: EventFilter::ISSUE)
+
+ expect(page).not_to have_content(design_activity(uploader, 'uploaded'))
+ expect(page).not_to have_content(design_activity(editor, 'revised'))
+ expect(page).not_to have_content(design_activity(deleter, 'deleted'))
+ expect(page).not_to have_content(design_activity(archiver, 'archived'))
+ end
+
+ it 'allows filtering in the design events', :aggregate_failures do
+ visit activity_project_path(project, event_filter: EventFilter::DESIGNS)
+
+ expect(page).not_to have_content('joined project')
+ expect(page).to have_content(design_activity(uploader, 'uploaded'))
+ expect(page).to have_content(design_activity(editor, 'revised'))
+ expect(page).to have_content(design_activity(deleter, 'deleted'))
+ expect(page).to have_content(design_activity(archiver, 'archived'))
+ end
+ end
+
+ context 'the project is public' do
+ let_it_be(:project) { create(:project, :repository, :public) }
+ let_it_be(:user) { create(:user) }
+
+ it_behaves_like 'being able to see design activity'
+ end
+
+ context 'the project is private' do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:user) { create(:user, developer_projects: [project]) }
+
+ it_behaves_like 'being able to see design activity'
+ end
+end
diff --git a/spec/finders/user_recent_events_finder_spec.rb b/spec/finders/user_recent_events_finder_spec.rb
index 04ba05c68e4..21a7d295dde 100644
--- a/spec/finders/user_recent_events_finder_spec.rb
+++ b/spec/finders/user_recent_events_finder_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
RSpec.describe UserRecentEventsFinder do
- let(:current_user) { create(:user) }
- let(:project_owner) { create(:user) }
+ let_it_be(:project_owner, reload: true) { create(:user) }
+ let_it_be(:current_user, reload: true) { create(:user) }
let(:private_project) { create(:project, :private, creator: project_owner) }
let(:internal_project) { create(:project, :internal, creator: project_owner) }
let(:public_project) { create(:project, :public, creator: project_owner) }
@@ -36,5 +36,30 @@ RSpec.describe UserRecentEventsFinder do
expect(finder.execute).to be_empty
end
+
+ describe 'design_activity_events feature flag' do
+ let_it_be(:event_a) { create(:design_event, author: project_owner) }
+ let_it_be(:event_b) { create(:design_event, author: project_owner) }
+
+ context 'the design_activity_events feature-flag is enabled' do
+ it 'only includes design events in enabled projects', :aggregate_failures do
+ events = finder.execute
+
+ expect(events).to include(event_a)
+ expect(events).to include(event_b)
+ end
+ end
+
+ context 'the design_activity_events feature-flag is disabled' do
+ it 'excludes design events', :aggregate_failures do
+ stub_feature_flags(design_activity_events: false)
+
+ events = finder.execute
+
+ expect(events).not_to include(event_a)
+ expect(events).not_to include(event_b)
+ end
+ end
+ end
end
end
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json
new file mode 100644
index 00000000000..5ad414b43b9
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json
@@ -0,0 +1,24 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "blockquote",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a sample quote"
+ },
+ {
+ "type": "text",
+ "text": " with lorem ipsum dolor sit amet..."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md
new file mode 100644
index 00000000000..9564e11fc3b
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md
@@ -0,0 +1,2 @@
+> This is a sample quote with lorem ipsum dolor sit amet...
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json
new file mode 100644
index 00000000000..0e2b34b0790
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json
@@ -0,0 +1,72 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "bulletList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Item 1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Item 2",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "bulletList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Sub-item 1"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Sub-item 1 paragraph"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md
new file mode 100644
index 00000000000..b7de76b973f
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md
@@ -0,0 +1,8 @@
+* Item 1
+
+* **Item 2**
+
+ * Sub-item 1
+
+ Sub-item 1 paragraph
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json
new file mode 100644
index 00000000000..26f468626c2
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json
@@ -0,0 +1,46 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "codeBlock",
+ "attrs": {
+ "language": "javascript"
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "export function makeIssue({ parentIssue, project, users }) {\n\n const issueType = pickRandom(project.issueTypes)\n\n console.log(data)\n\n return data\n}"
+ }
+ ]
+ },
+ {
+ "type": "bulletList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Item 1"
+ }
+ ]
+ },
+ {
+ "type": "codeBlock",
+ "content": [
+ {
+ "type": "text",
+ "text": "public DemoClass()\n{\n // assign default value\n x = 0;\n}"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md
new file mode 100644
index 00000000000..77eee3081db
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md
@@ -0,0 +1,17 @@
+ export function makeIssue({ parentIssue, project, users }) {
+
+ const issueType = pickRandom(project.issueTypes)
+
+ console.log(data)
+
+ return data
+ }
+
+* Item 1
+
+ public DemoClass()
+ {
+ // assign default value
+ x = 0;
+ }
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json
new file mode 100644
index 00000000000..884715709f7
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json
@@ -0,0 +1,24 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is some "
+ },
+ {
+ "type": "text",
+ "text": "inline code",
+ "marks": [
+ {
+ "type": "code"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md
new file mode 100644
index 00000000000..a52d00bfd38
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md
@@ -0,0 +1,2 @@
+This is some `inline code`
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json
new file mode 100644
index 00000000000..c69ad6b4260
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json
@@ -0,0 +1,964 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a complex issue…and this is normal text"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "rule"
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - Dark Gray"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Light Gray",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#97a0af"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Purple",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#6554c0"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Teal",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#00b8d9"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Green",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#36b37e"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Red",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#ff5630"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Color - "
+ },
+ {
+ "type": "text",
+ "text": "Orange",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#ff991f"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "rule"
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "inlineCard",
+ "attrs": {
+ "url": "https://gitlab-jira.atlassian.net/browse/DEMO-1"
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "inlineCard",
+ "attrs": {
+ "data": {
+ "@context": "https://json-ld.org/contexts/person.jsonld",
+ "@id": "http://dbpedia.org/resource/John_Lennon",
+ "name": "John Lennon",
+ "born": "1940-10-09",
+ "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
+ }
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "External Link",
+ "marks": [
+ {
+ "type": "link",
+ "attrs": {
+ "href": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25718"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "rule"
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "blockquote",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a block quote"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "success"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Success info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "info"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Info info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "note"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Note info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "warning"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Warning info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "error"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Error info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "rule"
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "mention",
+ "attrs": {
+ "id": "5e32f803e127810e82875bc1",
+ "text": "jhope"
+ }
+ },
+ {
+ "type": "text",
+ "text": " what up"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":grinning:",
+ "id": "1f600",
+ "text": "\uD83D\uDE00"
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":rofl:",
+ "id": "1f923",
+ "text": "\uD83E\uDD23"
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":partying_face:",
+ "id": "1f973",
+ "text": "\uD83E\uDD73"
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":heart_eyes:",
+ "id": "1f60d",
+ "text": "\uD83D\uDE0D"
+ }
+ },
+ {
+ "type": "text",
+ "text": " "
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "table",
+ "attrs": {
+ "isNumberColumnEnabled": false,
+ "layout": "default"
+ },
+ "content": [
+ {
+ "type": "tableRow",
+ "content": [
+ {
+ "type": "tableHeader",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 1 Row 1",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableHeader",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 2 Row 1",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableHeader",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 3 Row 1",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableRow",
+ "content": [
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 1 Row 2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 2 Row 2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 3 Row 2"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableRow",
+ "content": [
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 1 Row 3"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 2 Row 3"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Col 3 Row 3"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 1
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 1"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 2
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 2"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 3
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 3"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 4
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 4"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 5
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 5"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 6
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 6"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "bulletList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Bullet point list item 1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Bullet point list Item 2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Bullet point list Item 3"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "orderedList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list Item 1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 3"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Underline",
+ "marks": [
+ {
+ "type": "underline"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Superscript",
+ "marks": [
+ {
+ "type": "subsup",
+ "attrs": {
+ "type": "sup"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Subscript",
+ "marks": [
+ {
+ "type": "subsup",
+ "attrs": {
+ "type": "sub"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Bold",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Italic",
+ "marks": [
+ {
+ "type": "em"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Strikethrough",
+ "marks": [
+ {
+ "type": "strike"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "codeBlock",
+ "attrs": {
+ "language": "javascript"
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "export function makeIssue({ parentIssue, project, users }) {\n \n const issueType = pickRandom(project.issueTypes)\n\n let data = {\n fields: {\n summary: faker.lorem.sentence(),\n issuetype: {\n id: issueType.id\n },\n project: {\n id: project.id\n },\n reporter: {\n id: pickRandom(users)\n }\n }\n }\n\n if (issueType.subtask) {\n data = {\n parent: {\n key: parentIssue\n }\n }\n }\n\n console.log(data)\n\n return data\n}"
+ }
+ ]
+ },
+ {
+ "type": "mediaSingle",
+ "attrs": {
+ "layout": "center"
+ },
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 400,
+ "height": 400
+ }
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "mediaSingle",
+ "attrs": {
+ "layout": "center"
+ },
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "6a5b48c6-70bd-4747-9ac8-a9abc9adb1f4",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 1280,
+ "height": 789
+ }
+ }
+ ]
+ },
+ {
+ "type": "mediaSingle",
+ "attrs": {
+ "layout": "center"
+ },
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "e818a88d-9185-4a7f-8882-18339a0f0966",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 1280,
+ "height": 598
+ }
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "blob:"
+ },
+ {
+ "type": "text",
+ "text": "https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408",
+ "marks": [
+ {
+ "type": "link",
+ "attrs": {
+ "href": "https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": []
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md
new file mode 100644
index 00000000000..7933e6425f9
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md
@@ -0,0 +1,220 @@
+This is a complex issue…and this is normal text
+
+
+
+* * *
+
+Color - Dark Gray
+
+Color - <span color="#97a0af">Light Gray</span>
+
+Color - <span color="#6554c0">Purple</span>
+
+Color - <span color="#00b8d9">Teal</span>
+
+Color - <span color="#36b37e">Green</span>
+
+Color - <span color="#ff5630">Red</span>
+
+Color - <span color="#ff991f">Orange</span>
+
+
+
+* * *
+
+[https://gitlab-jira.atlassian.net/browse/DEMO-1][1]
+
+`adf-inlineCard:
+{"@context"=>"https://json-ld.org/contexts/person.jsonld",
+"@id"=>"http://dbpedia.org/resource/John_Lennon", "name"=>"John Lennon",
+"born"=>"1940-10-09",
+"spouse"=>"http://dbpedia.org/resource/Cynthia_Lennon"}`
+
+[External Link][2]
+
+
+
+* * *
+
+
+
+> This is a block quote
+
+
+
+> \:white\_check\_mark: Success info panel
+
+> \:information\_source: Info info panel
+
+> \:notepad\_spiral: Note info panel
+
+> \:warning: Warning info panel
+
+> \:octagonal\_sign: Error info panel
+
+
+
+
+
+* * *
+
+@adf-mention:jhope what up
+
+
+
+😀 🤣 🥳 😍
+
+
+
+<table>
+<tbody>
+<tr>
+<th>
+
+**Col 1 Row 1**
+
+</th>
+<th>
+
+**Col 2 Row 1**
+
+</th>
+<th>
+
+**Col 3 Row 1**
+
+</th>
+</tr>
+<tr>
+<td>
+
+Col 1 Row 2
+
+</td>
+<td>
+
+Col 2 Row 2
+
+</td>
+<td>
+
+Col 3 Row 2
+
+</td>
+</tr>
+<tr>
+<td>
+
+Col 1 Row 3
+
+</td>
+<td>
+
+Col 2 Row 3
+
+</td>
+<td>
+
+Col 3 Row 3
+
+</td>
+</tr>
+</tbody>
+</table>
+
+
+# Header 1
+
+## Header 2
+
+### Header 3
+
+#### Header 4
+
+##### Header 5
+
+###### Header 6
+
+
+
+* Bullet point list item 1
+
+* Bullet point list Item 2
+
+* Bullet point list Item 3
+
+
+
+1. Number list Item 1
+
+2. Number list item 2
+
+3. Number list item 3
+
+
+
+<u>Underline</u>
+
+<sup>Superscript</sup>
+
+<sub>Subscript</sub>
+
+**Bold**
+
+*Italic*
+
+<del>Strikethrough</del>
+
+ export function makeIssue({ parentIssue, project, users }) {
+
+ const issueType = pickRandom(project.issueTypes)
+
+ let data = {
+ fields: {
+ summary: faker.lorem.sentence(),
+ issuetype: {
+ id: issueType.id
+ },
+ project: {
+ id: project.id
+ },
+ reporter: {
+ id: pickRandom(users)
+ }
+ }
+ }
+
+ if (issueType.subtask) {
+ data = {
+ parent: {
+ key: parentIssue
+ }
+ }
+ }
+
+ console.log(data)
+
+ return data
+ }
+
+![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c)
+
+
+
+![jira-10050-field-description](adf-media://6a5b48c6-70bd-4747-9ac8-a9abc9adb1f4)
+
+![jira-10050-field-description](adf-media://e818a88d-9185-4a7f-8882-18339a0f0966)
+
+
+
+
+
+blob:[https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408][3]
+
+
+
+
+
+[1]: https://gitlab-jira.atlassian.net/browse/DEMO-1
+[2]: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25718
+[3]: https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json
new file mode 100644
index 00000000000..3a7944d2509
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Grinning with unicode "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":grinning:",
+ "text": "😀"
+ }
+ },
+ {
+ "type": "text",
+ "text": " and heart eyes with raw unicode "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":heart_eyes:",
+ "id": "1f60d",
+ "text": "\uD83D\uDE0D"
+ }
+ },
+ {
+ "type": "text",
+ "text": ", non-standard Atlassian "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":awthanks:",
+ "id": "atlassian-awthanks",
+ "text": ":awthanks:"
+ }
+ },
+ {
+ "type": "text",
+ "text": ", non-standard customer emoji "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "shortName": ":thumbsup::skin-tone-2:"
+ }
+ },
+ {
+ "type": "text",
+ "text": ", and invalid is ignored "
+ },
+ {
+ "type": "emoji",
+ "attrs": {
+ "id": "1f44d"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md
new file mode 100644
index 00000000000..11adf377188
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md
@@ -0,0 +1,4 @@
+Grinning with unicode 😀 and heart eyes with raw unicode 😍, non-standard
+Atlassian :awthanks:, non-standard customer emoji
+:thumbsup::skin-tone-2:, and invalid is ignored
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json
new file mode 100644
index 00000000000..564570c016e
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a sample paragraph"
+ },
+ {
+ "type": "hardBreak"
+ },
+ {
+ "type": "text",
+ "text": "with lorem ipsum dolor sit amet..."
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md
new file mode 100644
index 00000000000..d8c4a8dca53
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md
@@ -0,0 +1,3 @@
+This is a sample paragraph
+with lorem ipsum dolor sit amet...
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json
new file mode 100644
index 00000000000..dbc756f3603
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json
@@ -0,0 +1,91 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 1
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 1"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 2
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 2",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 3
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 3"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 4
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 4",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#ff6347"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 5
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 5"
+ }
+ ]
+ },
+ {
+ "type": "heading",
+ "attrs": {
+ "level": 6
+ },
+ "content": [
+ {
+ "type": "text",
+ "text": "Header 6"
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md
new file mode 100644
index 00000000000..073ae1fdef4
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md
@@ -0,0 +1,12 @@
+# Header 1
+
+## **Header 2**
+
+### Header 3
+
+#### <span color="#ff6347">Header 4</span>
+
+##### Header 5
+
+###### Header 6
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json
new file mode 100644
index 00000000000..8b7428debc2
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json
@@ -0,0 +1,46 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "An inline card (url): "
+ },
+ {
+ "type": "inlineCard",
+ "attrs": {
+ "url": "https://gitlab-jira.atlassian.net/browse/DEMO-1"
+ }
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Some prelude text "
+ },
+ {
+ "type": "inlineCard",
+ "attrs": {
+ "data": {
+ "@context": "https://json-ld.org/contexts/person.jsonld",
+ "@id": "http://dbpedia.org/resource/John_Lennon",
+ "name": "John Lennon",
+ "born": "1940-10-09",
+ "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
+ }
+ }
+ },
+ {
+ "type": "text",
+ "text": " some following text"
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md
new file mode 100644
index 00000000000..655102941a7
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md
@@ -0,0 +1,13 @@
+An inline card (url):
+[https://gitlab-jira.atlassian.net/browse/DEMO-1][1]
+
+Some prelude text `adf-inlineCard:
+{"@context"=>"https://json-ld.org/contexts/person.jsonld",
+"@id"=>"http://dbpedia.org/resource/John_Lennon", "name"=>"John Lennon",
+"born"=>"1940-10-09",
+"spouse"=>"http://dbpedia.org/resource/Cynthia_Lennon"}` some following
+text
+
+
+
+[1]: https://gitlab-jira.atlassian.net/browse/DEMO-1
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json
new file mode 100644
index 00000000000..6305592d175
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json
@@ -0,0 +1,16 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a second paragraph"
+ }
+ ]
+ }
+ ]
+}
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json
new file mode 100644
index 00000000000..c9f10eeeb79
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json
@@ -0,0 +1,13 @@
+{
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a sample paragraph"
+ },
+ {
+ "type": "text",
+ "text": " with lorem ipsum dolor sit amet..."
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json
new file mode 100644
index 00000000000..ebb74624333
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json
@@ -0,0 +1,28 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "invalid",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a sample paragraph"
+ },
+ {
+ "type": "text",
+ "text": " with lorem ipsum dolor sit amet..."
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a second paragraph"
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json
new file mode 100644
index 00000000000..bf6facf1b05
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json
@@ -0,0 +1,44 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a "
+ },
+ {
+ "type": "text",
+ "text": "link without title",
+ "marks": [
+ {
+ "type": "link",
+ "attrs": {
+ "href": "http://example.com"
+ }
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and a "
+ },
+ {
+ "type": "text",
+ "text": "link with title",
+ "marks": [
+ {
+ "type": "link",
+ "attrs": {
+ "href": "http://example.net",
+ "title": "Link Title"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md
new file mode 100644
index 00000000000..cd42b2297cf
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md
@@ -0,0 +1,6 @@
+This is a [link without title][1] and a [link with title][2]
+
+
+
+[1]: http://example.com
+[2]: http://example.net "Link Title"
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json
new file mode 100644
index 00000000000..a51da964e0e
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json
@@ -0,0 +1,59 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "mediaGroup",
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 400,
+ "height": 400
+ }
+ },
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-abcde",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 400,
+ "height": 400
+ }
+ }
+ ]
+ },
+ {
+ "type": "rule"
+ },
+ {
+ "type": "mediaGroup",
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c-link1",
+ "type": "link",
+ "collection": "jira-10050-field-description-links",
+ "width": 400,
+ "height": 400
+ }
+ },
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c-link2",
+ "type": "link",
+ "collection": "jira-10050-field-description-links",
+ "width": 400,
+ "height": 400
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md
new file mode 100644
index 00000000000..7b602d8fc2b
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md
@@ -0,0 +1,10 @@
+* ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c)
+
+* ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-abcde)
+
+* * *
+
+* [adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link1](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link1)
+
+* [adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link2](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link2)
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json
new file mode 100644
index 00000000000..0ecf2dcf03d
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json
@@ -0,0 +1,42 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "mediaSingle",
+ "attrs": {
+ "layout": "center"
+ },
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c",
+ "type": "file",
+ "collection": "jira-10050-field-description",
+ "width": 400,
+ "height": 400
+ }
+ }
+ ]
+ },
+ {
+ "type": "mediaSingle",
+ "attrs": {
+ "layout": "center"
+ },
+ "content": [
+ {
+ "type": "media",
+ "attrs": {
+ "id": "79411c6b-50e0-477f-b4ed-abcd",
+ "type": "file",
+ "collection": "another-jira-10050-field-description",
+ "width": 400,
+ "height": 400
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md
new file mode 100644
index 00000000000..5ed1bbb55e1
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md
@@ -0,0 +1,4 @@
+![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c)
+
+![another-jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-abcd)
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json
new file mode 100644
index 00000000000..81a087c57d9
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json
@@ -0,0 +1,44 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Mentioning "
+ },
+ {
+ "type": "mention",
+ "attrs": {
+ "id": "ABCDE-ABCDE-ABCDE-ABCDE",
+ "text": "@testuser",
+ "userType": "APP"
+ }
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Mentioning "
+ },
+ {
+ "type": "mention",
+ "attrs": {
+ "id": "ABCDE-ABCDE-ABCDE-ABCDE",
+ "text": "@test user",
+ "userType": "APP"
+ }
+ },
+ {
+ "type": "text",
+ "text": " with space in user name"
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md
new file mode 100644
index 00000000000..f22c6421d8c
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md
@@ -0,0 +1,4 @@
+Mentioning @adf-mention:testuser
+
+Mentioning @adf-mention:\"test user\" with space in user name
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json
new file mode 100644
index 00000000000..b63bf087b23
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json
@@ -0,0 +1,151 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "orderedList",
+ "content": [
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list Item 1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 3"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 4"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 5"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 6"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 7"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 8"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 9"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Number list item 10"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md
new file mode 100644
index 00000000000..435bfadbd74
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md
@@ -0,0 +1,20 @@
+1. Number list Item 1
+
+2. Number list item 2
+
+3. Number list item 3
+
+4. Number list item 4
+
+5. Number list item 5
+
+6. Number list item 6
+
+7. Number list item 7
+
+8. Number list item 8
+
+9. Number list item 9
+
+10. Number list item 10
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json
new file mode 100644
index 00000000000..e3982d23a9e
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json
@@ -0,0 +1,117 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "success"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Success info panel"
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Second paragraph"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "info"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Info info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "note"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Note info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "warning"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Warning info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "error"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Error info panel"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "panel",
+ "attrs": {
+ "panelType": "unknown"
+ },
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Unknown panel"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md
new file mode 100644
index 00000000000..fe3a10e4878
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md
@@ -0,0 +1,12 @@
+> \:white\_check\_mark: Success info panel
+>
+> Second paragraph
+
+> \:information\_source: Info info panel
+
+> \:notepad\_spiral: Note info panel
+
+> \:warning: Warning info panel
+
+> \:octagonal\_sign: Error info panel
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json
new file mode 100644
index 00000000000..e5b99dbd112
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json
@@ -0,0 +1,28 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a sample paragraph"
+ },
+ {
+ "type": "text",
+ "text": " with lorem ipsum dolor sit amet..."
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is a second paragraph"
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md
new file mode 100644
index 00000000000..661110e0267
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md
@@ -0,0 +1,4 @@
+This is a sample paragraph with lorem ipsum dolor sit amet...
+
+This is a second paragraph
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json
new file mode 100644
index 00000000000..c2566a84713
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json
@@ -0,0 +1,9 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "rule"
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md
new file mode 100644
index 00000000000..8ccef4e8dfb
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md
@@ -0,0 +1,2 @@
+* * *
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json
new file mode 100644
index 00000000000..21d364d642f
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json
@@ -0,0 +1,56 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is "
+ },
+ {
+ "type": "text",
+ "text": "stricken",
+ "marks": [
+ {
+ "type": "strike"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and "
+ },
+ {
+ "type": "text",
+ "text": "superscripted",
+ "marks": [
+ {
+ "type": "subsup",
+ "attrs": {
+ "type": "sup"
+ }
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and "
+ },
+ {
+ "type": "text",
+ "text": "subscripted",
+ "marks": [
+ {
+ "type": "subsup",
+ "attrs": {
+ "type": "sub"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md
new file mode 100644
index 00000000000..e4dda350907
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md
@@ -0,0 +1,3 @@
+This is <del>stricken</del> and <sup>superscripted</sup> and
+<sub>subscripted</sub>
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json
new file mode 100644
index 00000000000..7ab1a7c1461
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json
@@ -0,0 +1,53 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Hello "
+ },
+ {
+ "type": "text",
+ "text": "strong",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and "
+ },
+ {
+ "type": "text",
+ "text": "emphasis",
+ "marks": [
+ {
+ "type": "em"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and "
+ },
+ {
+ "type": "text",
+ "text": "strongly emphasised",
+ "marks": [
+ {
+ "type": "em"
+ },
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md
new file mode 100644
index 00000000000..d0dcbb231ae
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md
@@ -0,0 +1,2 @@
+Hello **strong** and *emphasis* and ***strongly emphasised***
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/table.json b/spec/fixtures/lib/kramdown/atlassian_document_format/table.json
new file mode 100644
index 00000000000..ad12c2875c0
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/table.json
@@ -0,0 +1,55 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "table",
+ "attrs": {
+ "isNumberColumnEnabled": false,
+ "layout": "default"
+ },
+ "content": [
+ {
+ "type": "tableRow",
+ "content": [
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Row one, cell one",
+ "marks": [
+ {
+ "type": "strong"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "tableCell",
+ "attrs": {},
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "Row one, cell two"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/table.md b/spec/fixtures/lib/kramdown/atlassian_document_format/table.md
new file mode 100644
index 00000000000..4e0c53338df
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/table.md
@@ -0,0 +1,18 @@
+<table>
+<tbody>
+<tr>
+<td>
+
+**Row one, cell one**
+
+</td>
+<td>
+
+Row one, cell two
+
+</td>
+</tr>
+</tbody>
+</table>
+
+
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json
new file mode 100644
index 00000000000..2690233d4f6
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json
@@ -0,0 +1,40 @@
+{
+ "version": 1,
+ "type": "doc",
+ "content": [
+ {
+ "type": "paragraph",
+ "content": [
+ {
+ "type": "text",
+ "text": "This is "
+ },
+ {
+ "type": "text",
+ "text": "underlined",
+ "marks": [
+ {
+ "type": "underline"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "text": " and "
+ },
+ {
+ "type": "text",
+ "text": "red",
+ "marks": [
+ {
+ "type": "textColor",
+ "attrs": {
+ "color": "#ff6347"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md
new file mode 100644
index 00000000000..75c9de3b451
--- /dev/null
+++ b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md
@@ -0,0 +1,2 @@
+This is <u>underlined</u> and <span color="#ff6347">red</span>
+
diff --git a/spec/graphql/mutations/merge_requests/update_spec.rb b/spec/graphql/mutations/merge_requests/update_spec.rb
new file mode 100644
index 00000000000..4a1fdf6e74b
--- /dev/null
+++ b/spec/graphql/mutations/merge_requests/update_spec.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Mutations::MergeRequests::Update do
+ let(:merge_request) { create(:merge_request) }
+ let(:user) { create(:user) }
+
+ subject(:mutation) { described_class.new(object: nil, context: { current_user: user }, field: nil) }
+
+ specify { expect(described_class).to require_graphql_authorizations(:update_merge_request) }
+
+ describe '#resolve' do
+ let(:attributes) { { title: 'new title', description: 'new description', target_branch: 'new-branch' } }
+ let(:mutated_merge_request) { subject[:merge_request] }
+
+ subject do
+ mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, **attributes)
+ end
+
+ it 'raises an error if the resource is not accessible to the user' do
+ expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
+ end
+
+ context 'when the user can update the merge request' do
+ before do
+ merge_request.project.add_developer(user)
+ end
+
+ it 'applies all attributes' do
+ expect(mutated_merge_request).to eq(merge_request)
+ expect(mutated_merge_request).to have_attributes(attributes)
+ expect(subject[:errors]).to be_empty
+ end
+
+ context 'the merge request is invalid' do
+ before do
+ merge_request.allow_broken = true
+ merge_request.update!(source_project: nil)
+ end
+
+ it 'returns error information, and changes were not applied' do
+ expect(mutated_merge_request).not_to have_attributes(attributes)
+ expect(subject[:errors]).not_to be_empty
+ end
+ end
+
+ context 'our change is invalid' do
+ let(:attributes) { { target_branch: 'this is not a branch' } }
+
+ it 'returns error information, and changes were not applied' do
+ expect(mutated_merge_request).not_to have_attributes(attributes)
+ expect(subject[:errors]).not_to be_empty
+ end
+ end
+
+ context 'when passing subset of attributes' do
+ let(:attributes) { { title: 'no, this title' } }
+
+ it 'only changes the mentioned attributes' do
+ expect { subject }.not_to change { merge_request.reset.description }
+
+ expect(mutated_merge_request).to have_attributes(attributes)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/graphql/types/namespace_type_spec.rb b/spec/graphql/types/namespace_type_spec.rb
index 741698021e7..0080dc3b5cc 100644
--- a/spec/graphql/types/namespace_type_spec.rb
+++ b/spec/graphql/types/namespace_type_spec.rb
@@ -8,7 +8,7 @@ describe GitlabSchema.types['Namespace'] do
it 'has the expected fields' do
expected_fields = %w[
id name path full_name full_path description description_html visibility
- lfs_enabled request_access_enabled projects root_storage_statistics
+ lfs_enabled request_access_enabled storage_size_limit projects root_storage_statistics
]
expect(described_class).to have_graphql_fields(*expected_fields)
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 75377356445..0b13acbc577 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -209,6 +209,16 @@ describe ApplicationHelper do
end
end
+ describe '#page_startup_api_calls' do
+ it 'returns map containing JS Page Startup Calls' do
+ helper.add_page_startup_api_call("testURL")
+
+ startup_calls = helper.page_startup_api_calls
+
+ expect(startup_calls["testURL"]).to eq({})
+ end
+ end
+
describe '#autocomplete_data_sources' do
let(:project) { create(:project) }
let(:noteable_type) { Issue }
diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb
index 6f24308757d..15d617c0b02 100644
--- a/spec/helpers/events_helper_spec.rb
+++ b/spec/helpers/events_helper_spec.rb
@@ -227,4 +227,133 @@ describe EventsHelper do
end
end
end
+
+ describe '#event_filter_visible' do
+ include DesignManagementTestHelpers
+
+ let_it_be(:project) { create(:project) }
+ let_it_be(:current_user) { create(:user) }
+
+ subject { helper.event_filter_visible(key) }
+
+ before do
+ enable_design_management
+ project.add_reporter(current_user)
+ allow(helper).to receive(:current_user).and_return(current_user)
+ end
+
+ def disable_read_design_activity(object)
+ allow(Ability).to receive(:allowed?)
+ .with(current_user, :read_design_activity, eq(object))
+ .and_return(false)
+ end
+
+ context 'for :designs' do
+ let(:key) { :designs }
+
+ context 'there is no relevant instance variable' do
+ it { is_expected.to be(true) }
+ end
+
+ context 'the feature flag is off' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'a project has been assigned' do
+ before do
+ assign(:project, project)
+ end
+
+ it { is_expected.to be(true) }
+
+ context 'the current user cannot read design activity' do
+ before do
+ disable_read_design_activity(project)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'the feature flag is off' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it { is_expected.to be(false) }
+ end
+ end
+
+ context 'projects have been assigned' do
+ before do
+ assign(:projects, Project.where(id: project.id))
+ end
+
+ it { is_expected.to be(true) }
+
+ context 'the collection is empty' do
+ before do
+ assign(:projects, Project.none)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'the current user cannot read design activity' do
+ before do
+ disable_read_design_activity(project)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'the feature flag is off' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it { is_expected.to be(false) }
+ end
+ end
+
+ context 'a group has been assigned' do
+ let_it_be(:group) { create(:group) }
+
+ before do
+ assign(:group, group)
+ end
+
+ context 'there are no projects in the group' do
+ it { is_expected.to be(false) }
+ end
+
+ context 'the group has at least one project' do
+ before do
+ create(:project_group_link, project: project, group: group)
+ end
+
+ it { is_expected.to be(true) }
+
+ context 'the current user cannot read design activity' do
+ before do
+ disable_read_design_activity(group)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'the feature flag is off' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it { is_expected.to be(false) }
+ end
+ end
+ end
+ end
+ end
end
diff --git a/spec/javascripts/fly_out_nav_spec.js b/spec/javascripts/fly_out_nav_browser_spec.js
index afcf132bea3..f84cee72042 100644
--- a/spec/javascripts/fly_out_nav_spec.js
+++ b/spec/javascripts/fly_out_nav_browser_spec.js
@@ -1,3 +1,7 @@
+// this file can't be migrated to jest because it relies on the browser to perform integration tests:
+// (specifically getClientBoundingRect and mouse movements)
+// see: https://gitlab.com/groups/gitlab-org/-/epics/895#what-if-theres-a-karma-spec-which-is-simply-unmovable-to-jest-ie-it-is-dependent-on-a-running-browser-environment
+
import { GlBreakpointInstance } from '@gitlab/ui/dist/utils';
import {
calculateTop,
diff --git a/spec/javascripts/vue_shared/components/tooltip_on_truncate_spec.js b/spec/javascripts/vue_shared/components/tooltip_on_truncate_browser_spec.js
index 5f432f2a1b5..da964a2d5b9 100644
--- a/spec/javascripts/vue_shared/components/tooltip_on_truncate_spec.js
+++ b/spec/javascripts/vue_shared/components/tooltip_on_truncate_browser_spec.js
@@ -1,3 +1,7 @@
+// this file can't be migrated to jest because it relies on the browser to perform integration tests:
+// (specifically testing around css properties `overflow` and `white-space`)
+// see: https://gitlab.com/groups/gitlab-org/-/epics/895#what-if-theres-a-karma-spec-which-is-simply-unmovable-to-jest-ie-it-is-dependent-on-a-running-browser-environment
+
import { mount, shallowMount } from '@vue/test-utils';
import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
diff --git a/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb b/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb
new file mode 100644
index 00000000000..debb9493c23
--- /dev/null
+++ b/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Banzai::Filter::JiraImport::AdfToCommonmarkFilter do
+ include FilterSpecHelper
+
+ let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' }
+
+ it 'renders a complex document' do
+ source = fixture_file(File.join(fixtures_path, 'complex_document.json'))
+ target = fixture_file(File.join(fixtures_path, 'complex_document.md'))
+
+ expect(filter(source)).to eq target
+ end
+
+ it 'renders original source when it is invalid JSON' do
+ source = fixture_file(File.join(fixtures_path, 'invalid_json.json'))
+
+ expect(filter(source)).to eq "Invalid Atlassian Document Format JSON\n\n#{source}"
+ end
+
+ it 'renders original source when missing document node' do
+ source = fixture_file(File.join(fixtures_path, 'invalid_no_doc.json'))
+
+ expect(filter(source)).to eq "Invalid Atlassian Document Format JSON\n\n#{source}"
+ end
+end
diff --git a/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb b/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb
new file mode 100644
index 00000000000..7eaf886f22e
--- /dev/null
+++ b/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Banzai::Pipeline::JiraImport::AdfCommonmarkPipeline do
+ let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' }
+
+ it 'converts text in Atlassian Document Format ' do
+ source = fixture_file(File.join(fixtures_path, 'paragraph.json'))
+ target = fixture_file(File.join(fixtures_path, 'paragraph.md'))
+ output = described_class.call(source, {})[:output]
+
+ expect(output).to eq target
+ end
+end
diff --git a/spec/lib/event_filter_spec.rb b/spec/lib/event_filter_spec.rb
index da6e1f9458f..42458d9c306 100644
--- a/spec/lib/event_filter_spec.rb
+++ b/spec/lib/event_filter_spec.rb
@@ -30,6 +30,7 @@ describe EventFilter do
let_it_be(:left_event) { create(:event, :left, project: public_project, target: public_project) }
let_it_be(:wiki_page_event) { create(:wiki_page_event) }
let_it_be(:wiki_page_update_event) { create(:wiki_page_event, :updated) }
+ let_it_be(:design_event) { create(:design_event) }
let(:filtered_events) { described_class.new(filter).apply_filter(Event.all) }
@@ -91,6 +92,24 @@ describe EventFilter do
end
end
+ context 'with the "design" filter' do
+ let(:filter) { described_class::DESIGNS }
+
+ it 'returns only design events' do
+ expect(filtered_events).to contain_exactly(design_event)
+ end
+
+ context 'the :design_activity_events feature is disabled' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it 'does not return design events' do
+ expect(filtered_events).to match_array(Event.not_design)
+ end
+ end
+ end
+
context 'with the "wiki" filter' do
let(:filter) { described_class::WIKI }
diff --git a/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb b/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb
new file mode 100644
index 00000000000..34ca5c764d2
--- /dev/null
+++ b/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb
@@ -0,0 +1,90 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Reports::TestReportSummary do
+ let(:build_report_result_1) { build(:ci_build_report_result) }
+ let(:build_report_result_2) { build(:ci_build_report_result, :with_junit_success) }
+ let(:test_report_summary) { described_class.new([build_report_result_1, build_report_result_2]) }
+
+ describe '#total' do
+ subject { test_report_summary.total }
+
+ context 'when test report summary has several build report results' do
+ it 'returns test suite summary object' do
+ expect(subject).to be_a_kind_of(Gitlab::Ci::Reports::TestSuiteSummary)
+ end
+ end
+ end
+
+ describe '#total_time' do
+ subject { test_report_summary.total_time }
+
+ context 'when test report summary has several build report results' do
+ it 'returns the total' do
+ expect(subject).to eq(0.84)
+ end
+ end
+ end
+
+ describe '#total_count' do
+ subject { test_report_summary.total_count }
+
+ context 'when test report summary has several build report results' do
+ it 'returns the total count' do
+ expect(subject).to eq(4)
+ end
+ end
+ end
+
+ describe '#success_count' do
+ subject { test_report_summary.success_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total success' do
+ expect(subject).to eq(2)
+ end
+ end
+ end
+
+ describe '#failed_count' do
+ subject { test_report_summary.failed_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total failed' do
+ expect(subject).to eq(0)
+ end
+ end
+ end
+
+ describe '#error_count' do
+ subject { test_report_summary.error_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total errored' do
+ expect(subject).to eq(2)
+ end
+ end
+ end
+
+ describe '#skipped_count' do
+ subject { test_report_summary.skipped_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total skipped' do
+ expect(subject).to eq(0)
+ end
+ end
+ end
+
+ describe '#test_suites' do
+ subject { test_report_summary.test_suites }
+
+ context 'when test report summary has several build report results' do
+ it 'returns test suites grouped by name' do
+ expect(subject.keys).to eq(["rspec"])
+ expect(subject.keys.size).to eq(1)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb b/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb
new file mode 100644
index 00000000000..5bbef62b43d
--- /dev/null
+++ b/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb
@@ -0,0 +1,79 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Reports::TestSuiteSummary do
+ let(:build_report_result_1) { build(:ci_build_report_result) }
+ let(:build_report_result_2) { build(:ci_build_report_result, :with_junit_success) }
+ let(:test_suite_summary) { described_class.new([build_report_result_1, build_report_result_2]) }
+
+ describe '#name' do
+ subject { test_suite_summary.name }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the suite name' do
+ expect(subject).to eq("rspec")
+ end
+ end
+ end
+
+ describe '#total_time' do
+ subject { test_suite_summary.total_time }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total time' do
+ expect(subject).to eq(0.84)
+ end
+ end
+ end
+
+ describe '#success_count' do
+ subject { test_suite_summary.success_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total success' do
+ expect(subject).to eq(2)
+ end
+ end
+ end
+
+ describe '#failed_count' do
+ subject { test_suite_summary.failed_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total failed' do
+ expect(subject).to eq(0)
+ end
+ end
+ end
+
+ describe '#error_count' do
+ subject { test_suite_summary.error_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total errored' do
+ expect(subject).to eq(2)
+ end
+ end
+ end
+
+ describe '#skipped_count' do
+ subject { test_suite_summary.skipped_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total skipped' do
+ expect(subject).to eq(0)
+ end
+ end
+ end
+
+ describe '#total_count' do
+ subject { test_suite_summary.total_count }
+
+ context 'when test suite summary has several build report results' do
+ it 'returns the total count' do
+ expect(subject).to eq(4)
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index da543180c9c..b5562a84db5 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -226,6 +226,7 @@ ci_pipelines:
- daily_build_group_report_results
- latest_builds
- daily_report_results
+- latest_builds_report_results
ci_refs:
- project
- ci_pipelines
diff --git a/spec/lib/kramdown/parser/atlassian_document_format_spec.rb b/spec/lib/kramdown/parser/atlassian_document_format_spec.rb
new file mode 100644
index 00000000000..0ba4d430320
--- /dev/null
+++ b/spec/lib/kramdown/parser/atlassian_document_format_spec.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+context Kramdown::Parser::AtlassianDocumentFormat do
+ let_it_be(:options) { { input: 'AtlassianDocumentFormat', html_tables: true } }
+ let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' }
+
+ context 'markdown render' do
+ shared_examples 'render elements to markdown' do |base_name|
+ let(:json_file) { "#{base_name}.json" }
+ let(:markdown_file) { "#{base_name}.md" }
+
+ it "renders #{base_name}" do
+ source = fixture_file(File.join(fixtures_path, json_file))
+ target = fixture_file(File.join(fixtures_path, markdown_file))
+ parser = Kramdown::Document.new(source, options)
+
+ expect(parser.to_commonmark).to eq target
+ end
+ end
+
+ it_behaves_like 'render elements to markdown', 'blockquote'
+ it_behaves_like 'render elements to markdown', 'bullet_list'
+ it_behaves_like 'render elements to markdown', 'code_block'
+ it_behaves_like 'render elements to markdown', 'emoji'
+ it_behaves_like 'render elements to markdown', 'hard_break'
+ it_behaves_like 'render elements to markdown', 'heading'
+ it_behaves_like 'render elements to markdown', 'inline_card'
+ it_behaves_like 'render elements to markdown', 'media_group'
+ it_behaves_like 'render elements to markdown', 'media_single'
+ it_behaves_like 'render elements to markdown', 'mention'
+ it_behaves_like 'render elements to markdown', 'ordered_list'
+ it_behaves_like 'render elements to markdown', 'panel'
+ it_behaves_like 'render elements to markdown', 'paragraph'
+ it_behaves_like 'render elements to markdown', 'rule'
+ it_behaves_like 'render elements to markdown', 'table'
+
+ it_behaves_like 'render elements to markdown', 'strong_em_mark'
+ it_behaves_like 'render elements to markdown', 'code_mark'
+ it_behaves_like 'render elements to markdown', 'link_mark'
+ it_behaves_like 'render elements to markdown', 'strike_sup_sub_mark'
+ it_behaves_like 'render elements to markdown', 'underline_text_color_mark'
+
+ it_behaves_like 'render elements to markdown', 'complex_document'
+
+ it 'renders header id to html' do
+ source = fixture_file(File.join(fixtures_path, 'heading.json'))
+ parser = Kramdown::Document.new(source, options)
+
+ expect(parser.to_html).to include('id="header-2"')
+ end
+
+ it 'logs an error with invalid json' do
+ source = fixture_file(File.join(fixtures_path, 'invalid_json.json'))
+
+ expect(Gitlab::AppLogger).to receive(:error).with(/Invalid Atlassian Document Format JSON/)
+ expect(Gitlab::AppLogger).to receive(:error).with(any_args)
+ expect { Kramdown::Document.new(source, options) }.to raise_error(::Kramdown::Error, /Invalid Atlassian Document Format JSON/)
+ end
+
+ it 'logs an error if no valid document node' do
+ source = fixture_file(File.join(fixtures_path, 'invalid_no_doc.json'))
+
+ expect(Gitlab::AppLogger).to receive(:error).with(/Invalid Atlassian Document Format JSON/)
+ expect(Gitlab::AppLogger).to receive(:error).with(any_args)
+ expect { Kramdown::Document.new(source, options) }.to raise_error(::Kramdown::Error, /Invalid Atlassian Document Format JSON/)
+ end
+
+ it 'invalid node gets ignored' do
+ source = fixture_file(File.join(fixtures_path, 'invalid_node_type.json'))
+ parser = Kramdown::Document.new(source, options)
+
+ expect(parser.to_commonmark).to eq "This is a second paragraph\n\n"
+ end
+ end
+end
diff --git a/spec/lib/object_storage/direct_upload_spec.rb b/spec/lib/object_storage/direct_upload_spec.rb
index c3890c72852..c286a2e6fbe 100644
--- a/spec/lib/object_storage/direct_upload_spec.rb
+++ b/spec/lib/object_storage/direct_upload_spec.rb
@@ -60,6 +60,38 @@ describe ObjectStorage::DirectUpload do
end
end
+ describe '#get_url' do
+ subject { described_class.new(credentials, bucket_name, object_name, has_length: true) }
+
+ context 'when AWS is used' do
+ it 'calls the proper method' do
+ expect_next_instance_of(::Fog::Storage, credentials) do |connection|
+ expect(connection).to receive(:get_object_url).once
+ end
+
+ subject.get_url
+ end
+ end
+
+ context 'when Google is used' do
+ let(:credentials) do
+ {
+ provider: 'Google',
+ google_storage_access_key_id: 'GOOGLE_ACCESS_KEY_ID',
+ google_storage_secret_access_key: 'GOOGLE_SECRET_ACCESS_KEY'
+ }
+ end
+
+ it 'calls the proper method' do
+ expect_next_instance_of(::Fog::Storage, credentials) do |connection|
+ expect(connection).to receive(:get_object_https_url).once
+ end
+
+ subject.get_url
+ end
+ end
+ end
+
describe '#to_hash' do
subject { direct_upload.to_hash }
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 782a4206c36..5769e371478 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -2891,6 +2891,39 @@ describe Ci::Pipeline, :mailer do
end
end
+ describe '#test_report_summary' do
+ subject { pipeline.test_report_summary }
+
+ context 'when pipeline has multiple builds with report results' do
+ let(:pipeline) { create(:ci_pipeline, :success, project: project) }
+
+ before do
+ create(:ci_build, :success, :report_results, name: 'rspec', pipeline: pipeline, project: project)
+ create(:ci_build, :success, :report_results, name: 'java', pipeline: pipeline, project: project)
+ end
+
+ it 'returns test report summary with collected data', :aggregate_failures do
+ expect(subject.total_time).to be(0.84)
+ expect(subject.total_count).to be(4)
+ expect(subject.success_count).to be(0)
+ expect(subject.failed_count).to be(0)
+ expect(subject.error_count).to be(4)
+ expect(subject.skipped_count).to be(0)
+ end
+ end
+
+ context 'when pipeline does not have any builds with report results' do
+ it 'returns empty test report sumary', :aggregate_failures do
+ expect(subject.total_time).to be(0)
+ expect(subject.total_count).to be(0)
+ expect(subject.success_count).to be(0)
+ expect(subject.failed_count).to be(0)
+ expect(subject.error_count).to be(0)
+ expect(subject.skipped_count).to be(0)
+ end
+ end
+ end
+
describe '#test_reports' do
subject { pipeline.test_reports }
diff --git a/spec/models/event_collection_spec.rb b/spec/models/event_collection_spec.rb
index 6d1954700bf..17cf328f852 100644
--- a/spec/models/event_collection_spec.rb
+++ b/spec/models/event_collection_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
describe EventCollection do
+ include DesignManagementTestHelpers
+
describe '#to_a' do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project_empty_repo, group: group) }
@@ -10,6 +12,10 @@ describe EventCollection do
let_it_be(:user) { create(:user) }
let_it_be(:merge_request) { create(:merge_request) }
+ before do
+ enable_design_management
+ end
+
context 'with project events' do
let_it_be(:push_event_payloads) do
Array.new(9) do
@@ -21,11 +27,13 @@ describe EventCollection do
let_it_be(:merge_request_events) { create_list(:event, 10, :commented, project: project, target: merge_request) }
let_it_be(:closed_issue_event) { create(:closed_issue_event, project: project, author: user) }
let_it_be(:wiki_page_event) { create(:wiki_page_event, project: project) }
+ let_it_be(:design_event) { create(:design_event, project: project) }
let(:push_events) { push_event_payloads.map(&:event) }
it 'returns an Array of events', :aggregate_failures do
most_recent_20_events = [
wiki_page_event,
+ design_event,
closed_issue_event,
*push_events,
*merge_request_events
@@ -54,6 +62,31 @@ describe EventCollection do
end
end
+ context 'the design_activity_events feature flag is disabled' do
+ before do
+ stub_feature_flags(design_activity_events: false)
+ end
+
+ it 'omits the design events when using to_a' do
+ events = described_class.new(projects).to_a
+
+ expect(events).not_to include(design_event)
+ end
+
+ it 'omits the wiki page events when using all_project_events' do
+ events = described_class.new(projects).all_project_events
+
+ expect(events).not_to include(design_event)
+ end
+ end
+
+ it 'includes the design events' do
+ collection = described_class.new(projects)
+
+ expect(collection.to_a).to include(design_event)
+ expect(collection.all_project_events).to include(design_event)
+ end
+
context 'the wiki_events feature flag is enabled' do
before do
stub_feature_flags(wiki_events: true)
@@ -81,7 +114,7 @@ describe EventCollection do
it 'can paginate through events' do
events = described_class.new(projects, offset: 20).to_a
- expect(events.length).to eq(1)
+ expect(events.length).to eq(2)
end
it 'returns an empty Array when crossing the maximum page number' do
diff --git a/spec/models/snippet_input_action_spec.rb b/spec/models/snippet_input_action_spec.rb
index 5e379a48171..87ce2dac8ba 100644
--- a/spec/models/snippet_input_action_spec.rb
+++ b/spec/models/snippet_input_action_spec.rb
@@ -8,12 +8,12 @@ describe SnippetInputAction do
where(:action, :file_path, :content, :previous_path, :allowed_actions, :is_valid, :invalid_field) do
:create | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
- :move | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
+ :move | 'foobar' | 'foobar' | 'foo1' | nil | true | nil
:delete | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
:update | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
:foo | 'foobar' | 'foobar' | 'foobar' | nil | false | :action
'create' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
- 'move' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
+ 'move' | 'foobar' | 'foobar' | 'foo1' | nil | true | nil
'delete' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
'update' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil
'foo' | 'foobar' | 'foobar' | 'foobar' | nil | false | :action
@@ -21,6 +21,12 @@ describe SnippetInputAction do
'' | 'foobar' | 'foobar' | 'foobar' | nil | false | :action
:move | 'foobar' | 'foobar' | nil | nil | false | :previous_path
:move | 'foobar' | 'foobar' | '' | nil | false | :previous_path
+ :move | 'foobar' | 'foobar' | 'foobar' | nil | false | :file_path
+ :move | nil | 'foobar' | 'foobar' | nil | false | :file_path
+ :move | '' | 'foobar' | 'foobar' | nil | false | :file_path
+ :move | nil | 'foobar' | 'foo1' | nil | false | :file_path
+ :move | 'foobar' | nil | 'foo1' | nil | true | nil
+ :move | 'foobar' | '' | 'foo1' | nil | true | nil
:create | 'foobar' | nil | 'foobar' | nil | false | :content
:create | 'foobar' | '' | 'foobar' | nil | false | :content
:create | nil | 'foobar' | 'foobar' | nil | false | :file_path
diff --git a/spec/policies/group_policy_spec.rb b/spec/policies/group_policy_spec.rb
index 6b17a8285a2..df398963655 100644
--- a/spec/policies/group_policy_spec.rb
+++ b/spec/policies/group_policy_spec.rb
@@ -661,4 +661,61 @@ describe GroupPolicy do
end
end
end
+
+ describe 'design activity' do
+ let_it_be(:group) { create(:group, :public) }
+ let(:current_user) { nil }
+
+ subject { described_class.new(current_user, group) }
+
+ context 'when design management is not available' do
+ it { is_expected.not_to be_allowed(:read_design_activity) }
+
+ context 'even when there are projects in the group' do
+ before do
+ create_list(:project_group_link, 2, group: group)
+ end
+
+ it { is_expected.not_to be_allowed(:read_design_activity) }
+ end
+ end
+
+ context 'when design management is available globally' do
+ include DesignManagementTestHelpers
+
+ before do
+ enable_design_management
+ end
+
+ context 'the group has no projects' do
+ it { is_expected.not_to be_allowed(:read_design_activity) }
+ end
+
+ context 'the group has a project' do
+ let(:project) { create(:project, :public) }
+
+ before do
+ create(:project_group_link, project: project, group: group)
+ end
+
+ it { is_expected.to be_allowed(:read_design_activity) }
+
+ context 'which does not have design management enabled' do
+ before do
+ project.update(lfs_enabled: false)
+ end
+
+ it { is_expected.not_to be_allowed(:read_design_activity) }
+
+ context 'but another project does' do
+ before do
+ create(:project_group_link, project: create(:project, :public), group: group)
+ end
+
+ it { is_expected.to be_allowed(:read_design_activity) }
+ end
+ end
+ end
+ end
+ end
end
diff --git a/spec/policies/project_policy_spec.rb b/spec/policies/project_policy_spec.rb
index 6ec63ba61ca..c616e69deea 100644
--- a/spec/policies/project_policy_spec.rb
+++ b/spec/policies/project_policy_spec.rb
@@ -855,6 +855,28 @@ describe ProjectPolicy do
end
end
+ describe 'design permissions' do
+ subject { described_class.new(guest, project) }
+
+ let(:design_permissions) do
+ %i[read_design_activity read_design]
+ end
+
+ context 'when design management is not available' do
+ it { is_expected.not_to be_allowed(*design_permissions) }
+ end
+
+ context 'when design management is available' do
+ include DesignManagementTestHelpers
+
+ before do
+ enable_design_management
+ end
+
+ it { is_expected.to be_allowed(*design_permissions) }
+ end
+ end
+
describe 'read_build_report_results' do
subject { described_class.new(guest, project) }
diff --git a/spec/serializers/test_suite_entity_spec.rb b/spec/serializers/test_suite_entity_spec.rb
index bd88d235013..83d3086ea6b 100644
--- a/spec/serializers/test_suite_entity_spec.rb
+++ b/spec/serializers/test_suite_entity_spec.rb
@@ -2,36 +2,46 @@
require 'spec_helper'
-describe TestSuiteEntity do
- let(:pipeline) { create(:ci_pipeline, :with_test_reports) }
+RSpec.describe TestSuiteEntity do
+ let(:pipeline) { create(:ci_pipeline, :with_test_reports) }
let(:test_suite) { pipeline.test_reports.test_suites.each_value.first }
- let(:entity) { described_class.new(test_suite) }
+ let(:user) { create(:user) }
+ let(:request) { double('request', current_user: user) }
- describe '#as_json' do
- subject(:as_json) { entity.as_json }
+ subject { described_class.new(test_suite, request: request).as_json }
+
+ context 'when details option is not present' do
+ it 'does not expose suite error and test cases', :aggregate_failures do
+ expect(subject).not_to include(:test_cases)
+ expect(subject).not_to include(:suite_error)
+ end
+ end
+
+ context 'when details option is present' do
+ subject { described_class.new(test_suite, request: request, details: true).as_json }
it 'contains the suite name' do
- expect(as_json[:name]).to be_present
+ expect(subject[:name]).to be_present
end
it 'contains the total time' do
- expect(as_json[:total_time]).to be_present
+ expect(subject[:total_time]).to be_present
end
it 'contains the counts' do
- expect(as_json[:total_count]).to eq(4)
- expect(as_json[:success_count]).to eq(2)
- expect(as_json[:failed_count]).to eq(2)
- expect(as_json[:skipped_count]).to eq(0)
- expect(as_json[:error_count]).to eq(0)
+ expect(subject[:total_count]).to eq(4)
+ expect(subject[:success_count]).to eq(2)
+ expect(subject[:failed_count]).to eq(2)
+ expect(subject[:skipped_count]).to eq(0)
+ expect(subject[:error_count]).to eq(0)
end
it 'contains the test cases' do
- expect(as_json[:test_cases].count).to eq(4)
+ expect(subject[:test_cases].count).to eq(4)
end
it 'contains an empty error message' do
- expect(as_json[:suite_error]).to be_nil
+ expect(subject[:suite_error]).to be_nil
end
context 'with a suite error' do
@@ -40,27 +50,27 @@ describe TestSuiteEntity do
end
it 'contains the suite name' do
- expect(as_json[:name]).to be_present
+ expect(subject[:name]).to be_present
end
it 'contains the total time' do
- expect(as_json[:total_time]).to be_present
+ expect(subject[:total_time]).to be_present
end
it 'returns all the counts as 0' do
- expect(as_json[:total_count]).to eq(0)
- expect(as_json[:success_count]).to eq(0)
- expect(as_json[:failed_count]).to eq(0)
- expect(as_json[:skipped_count]).to eq(0)
- expect(as_json[:error_count]).to eq(0)
+ expect(subject[:total_count]).to eq(0)
+ expect(subject[:success_count]).to eq(0)
+ expect(subject[:failed_count]).to eq(0)
+ expect(subject[:skipped_count]).to eq(0)
+ expect(subject[:error_count]).to eq(0)
end
it 'returns no test cases' do
- expect(as_json[:test_cases]).to be_empty
+ expect(subject[:test_cases]).to be_empty
end
it 'returns a suite error' do
- expect(as_json[:suite_error]).to eq('a really bad error')
+ expect(subject[:suite_error]).to eq('a really bad error')
end
end
end
diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb
index 73c089334ed..d23d34e2951 100644
--- a/spec/services/event_create_service_spec.rb
+++ b/spec/services/event_create_service_spec.rb
@@ -275,15 +275,6 @@ describe EventCreateService do
specify { expect { result }.not_to change { Event.count } }
specify { expect { result }.not_to exceed_query_limit(0) }
end
-
- context 'the feature flag is enabled for a single project' do
- before do
- stub_feature_flags(design_activity_events: project)
- end
-
- specify { expect(result).not_to be_empty }
- specify { expect { result }.to change { Event.count }.by(1) }
- end
end
describe '#save_designs' do
@@ -310,9 +301,7 @@ describe EventCreateService do
expect(events.map(&:design)).to match_array(updated)
end
- it_behaves_like 'feature flag gated multiple event creation' do
- let(:project) { created.first.project }
- end
+ it_behaves_like 'feature flag gated multiple event creation'
end
describe '#destroy_designs' do
@@ -332,9 +321,7 @@ describe EventCreateService do
expect(events.map(&:design)).to match_array(designs)
end
- it_behaves_like 'feature flag gated multiple event creation' do
- let(:project) { designs.first.project }
- end
+ it_behaves_like 'feature flag gated multiple event creation'
end
end
end
diff --git a/spec/services/snippets/update_service_spec.rb b/spec/services/snippets/update_service_spec.rb
index 7e6441ad2f9..22ddca5f345 100644
--- a/spec/services/snippets/update_service_spec.rb
+++ b/spec/services/snippets/update_service_spec.rb
@@ -349,6 +349,18 @@ describe Snippets::UpdateService do
end
end
+ context 'when snippet_file content is not present' do
+ let(:snippet_files) { [{ action: :move, previous_path: file_path, file_path: 'new_file_path' }] }
+
+ it 'does not update snippet content' do
+ content = snippet.content
+
+ expect(subject).to be_success
+
+ expect(snippet.reload.content).to eq content
+ end
+ end
+
context 'when snippet_files param is invalid' do
let(:snippet_files) { [{ action: 'invalid_action' }] }