Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-07-10 18:08:17 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-10 18:08:17 +0300
commit69e6424b738ea9ac3c6eed0263fe5a6951df7195 (patch)
tree64f4c186ee1e5587d642eaaf1c6a064e841946ba
parent215001eca7ababe4c617a04a37d307a97353d6e0 (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/ci/static-analysis.gitlab-ci.yml2
-rw-r--r--.gitlab/sast-ruleset.toml2
-rw-r--r--.rubocop_todo/lint/symbol_conversion.yml1
-rw-r--r--.rubocop_todo/rspec/expect_change.yml1
-rw-r--r--.rubocop_todo/rspec/missing_feature_category.yml1
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--app/assets/javascripts/content_editor/extensions/copy_paste.js (renamed from app/assets/javascripts/content_editor/extensions/paste_markdown.js)54
-rw-r--r--app/assets/javascripts/content_editor/extensions/loading.js23
-rw-r--r--app/assets/javascripts/content_editor/services/create_content_editor.js6
-rw-r--r--app/assets/javascripts/content_editor/services/markdown_serializer.js2
-rw-r--r--app/assets/javascripts/super_sidebar/components/brand_logo.vue2
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue2
-rw-r--r--app/assets/stylesheets/framework.scss1
-rw-r--r--app/assets/stylesheets/framework/brand_logo.scss29
-rw-r--r--app/assets/stylesheets/framework/super_sidebar.scss22
-rw-r--r--config/sidekiq_queues.yml2
-rw-r--r--doc/.vale/gitlab/FirstPerson.yml13
-rw-r--r--doc/.vale/gitlab/Markdown_emoji.yml4
-rw-r--r--doc/.vale/gitlab/SubstitutionWarning.yml1
-rw-r--r--doc/administration/audit_events.md4
-rw-r--r--doc/administration/auth/ldap/ldap-troubleshooting.md2
-rw-r--r--doc/administration/raketasks/project_import_export.md4
-rw-r--r--doc/administration/terraform_state.md2
-rw-r--r--doc/api/award_emoji.md4
-rw-r--r--doc/api/graphql/custom_emoji.md6
-rw-r--r--doc/api/graphql/index.md2
-rw-r--r--doc/api/graphql/reference/index.md1
-rw-r--r--doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md2
-rw-r--r--doc/ci/environments/index.md2
-rw-r--r--doc/ci/jobs/job_artifacts.md2
-rw-r--r--doc/ci/jobs/job_control.md2
-rw-r--r--doc/ci/pipeline_editor/index.md8
-rw-r--r--doc/ci/pipelines/index.md6
-rw-r--r--doc/ci/quick_start/index.md4
-rw-r--r--doc/ci/runners/configure_runners.md3
-rw-r--r--doc/ci/test_cases/index.md6
-rw-r--r--doc/ci/testing/code_quality.md2
-rw-r--r--doc/ci/triggers/index.md2
-rw-r--r--doc/ci/yaml/index.md4
-rw-r--r--doc/development/contributing/first_contribution.md2
-rw-r--r--doc/development/documentation/contribute.md2
-rw-r--r--doc/development/documentation/styleguide/index.md2
-rw-r--r--doc/development/documentation/styleguide/word_list.md6
-rw-r--r--doc/gitlab-basics/feature_branch_workflow.md2
-rw-r--r--doc/operations/feature_flags.md2
-rw-r--r--doc/operations/incident_management/incident_timeline_events.md2
-rw-r--r--doc/operations/incident_management/status_page.md6
-rw-r--r--doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md2
-rw-r--r--doc/topics/autodevops/cloud_deployments/auto_devops_with_gke.md2
-rw-r--r--doc/topics/autodevops/multiple_clusters_auto_devops.md2
-rw-r--r--doc/tutorials/dependency_scanning.md12
-rw-r--r--doc/tutorials/fuzz_testing/index.md2
-rw-r--r--doc/tutorials/hugo/index.md2
-rw-r--r--doc/tutorials/manage_user/index.md2
-rw-r--r--doc/user/application_security/api_fuzzing/index.md2
-rw-r--r--doc/user/application_security/container_scanning/index.md2
-rw-r--r--doc/user/application_security/dast_api/index.md2
-rw-r--r--doc/user/application_security/dependency_list/index.md2
-rw-r--r--doc/user/application_security/policies/index.md2
-rw-r--r--doc/user/award_emojis.md16
-rw-r--r--doc/user/clusters/management_project.md2
-rw-r--r--doc/user/compliance/license_list.md2
-rw-r--r--doc/user/discussions/index.md2
-rw-r--r--doc/user/group/epics/manage_epics.md10
-rw-r--r--doc/user/group/repositories_analytics/index.md4
-rw-r--r--doc/user/infrastructure/clusters/connect/new_civo_cluster.md10
-rw-r--r--doc/user/infrastructure/clusters/connect/new_eks_cluster.md10
-rw-r--r--doc/user/infrastructure/clusters/connect/new_gke_cluster.md10
-rw-r--r--doc/user/infrastructure/clusters/migrate_to_gitlab_agent.md4
-rw-r--r--doc/user/infrastructure/iac/terraform_state.md2
-rw-r--r--doc/user/markdown.md16
-rw-r--r--doc/user/packages/composer_repository/index.md6
-rw-r--r--doc/user/packages/conan_repository/index.md2
-rw-r--r--doc/user/packages/harbor_container_registry/index.md2
-rw-r--r--doc/user/packages/package_registry/index.md4
-rw-r--r--doc/user/packages/package_registry/reduce_package_registry_storage.md4
-rw-r--r--doc/user/packages/terraform_module_registry/index.md6
-rw-r--r--doc/user/packages/workflows/project_registry.md2
-rw-r--r--doc/user/profile/index.md2
-rw-r--r--doc/user/project/canary_deployments.md2
-rw-r--r--doc/user/project/clusters/add_eks_clusters.md4
-rw-r--r--doc/user/project/clusters/add_existing_cluster.md2
-rw-r--r--doc/user/project/clusters/add_gke_clusters.md2
-rw-r--r--doc/user/project/clusters/add_remove_clusters.md2
-rw-r--r--doc/user/project/clusters/gitlab_managed_clusters.md2
-rw-r--r--doc/user/project/deploy_boards.md2
-rw-r--r--doc/user/project/issues/create_issues.md4
-rw-r--r--doc/user/project/merge_requests/allow_collaboration.md2
-rw-r--r--doc/user/project/merge_requests/drafts.md2
-rw-r--r--doc/user/project/merge_requests/index.md2
-rw-r--r--doc/user/project/merge_requests/reviews/index.md4
-rw-r--r--doc/user/project/milestones/burndown_and_burnup_charts.md12
-rw-r--r--doc/user/project/pages/getting_started/pages_ci_cd_template.md2
-rw-r--r--doc/user/project/pages/getting_started/pages_forked_sample_project.md2
-rw-r--r--doc/user/project/pages/getting_started/pages_from_scratch.md2
-rw-r--r--doc/user/project/pages/getting_started/pages_new_project_template.md2
-rw-r--r--doc/user/project/pages/getting_started/pages_ui.md2
-rw-r--r--doc/user/project/releases/index.md16
-rw-r--r--doc/user/project/repository/git_blame.md2
-rw-r--r--doc/user/project/repository/git_history.md2
-rw-r--r--doc/user/project/repository/gpg_signed_commits/index.md2
-rw-r--r--doc/user/project/repository/index.md10
-rw-r--r--doc/user/project/requirements/index.md8
-rw-r--r--doc/user/project/wiki/index.md2
-rw-r--r--doc/user/reserved_names.md2
-rw-r--r--doc/user/shortcuts.md42
-rw-r--r--spec/frontend/content_editor/extensions/code_suggestion_spec.js14
-rw-r--r--spec/frontend/content_editor/extensions/copy_paste_spec.js (renamed from spec/frontend/content_editor/extensions/paste_markdown_spec.js)94
-rw-r--r--spec/frontend/content_editor/test_utils.js12
109 files changed, 400 insertions, 270 deletions
diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml
index cbdbb01b2a8..b9d73d7770d 100644
--- a/.gitlab/ci/static-analysis.gitlab-ci.yml
+++ b/.gitlab/ci/static-analysis.gitlab-ci.yml
@@ -199,7 +199,7 @@ semgrep-appsec-custom-rules:
--include app --include lib --include workhorse \
--exclude '*_test.go' --exclude spec --exclude qa > gl-sast-report.json || true
variables:
- CUSTOM_RULES_URL: https://gitlab.com/gitlab-com/gl-security/appsec/sast-custom-rules/-/raw/main/appsec-pings/rules.yml
+ CUSTOM_RULES_URL: https://gitlab.com/gitlab-com/gl-security/appsec/sast-custom-rules/-/raw/main/gitlab-sast-rules/rules.yml
artifacts:
paths:
- gl-sast-report.json
diff --git a/.gitlab/sast-ruleset.toml b/.gitlab/sast-ruleset.toml
index 6bfb4618b73..e247d20da2c 100644
--- a/.gitlab/sast-ruleset.toml
+++ b/.gitlab/sast-ruleset.toml
@@ -7,4 +7,4 @@
type = "git"
value = "https://gitlab.com/gitlab-com/gl-security/appsec/sast-custom-rules.git"
ref = "refs/heads/main"
- subdir = "appsec-pings"
+ subdir = "gitlab-sast-rules"
diff --git a/.rubocop_todo/lint/symbol_conversion.yml b/.rubocop_todo/lint/symbol_conversion.yml
index 4563b57c523..0fb6641d2a7 100644
--- a/.rubocop_todo/lint/symbol_conversion.yml
+++ b/.rubocop_todo/lint/symbol_conversion.yml
@@ -10,7 +10,6 @@ Lint/SymbolConversion:
- 'config/puma.rb'
- 'ee/app/components/billing/plan_component.rb'
- 'ee/app/controllers/projects/security/scanned_resources_controller.rb'
- - 'ee/app/models/product_analytics/jitsu_authentication.rb'
- 'ee/app/serializers/integrations/zentao_serializers/issue_entity.rb'
- 'ee/db/fixtures/development/35_merge_request_predictions.rb'
- 'ee/lib/api/analytics/product_analytics.rb'
diff --git a/.rubocop_todo/rspec/expect_change.yml b/.rubocop_todo/rspec/expect_change.yml
index abcd80f9b58..02d1427c384 100644
--- a/.rubocop_todo/rspec/expect_change.yml
+++ b/.rubocop_todo/rspec/expect_change.yml
@@ -44,7 +44,6 @@ RSpec/ExpectChange:
- 'ee/spec/models/group_wiki_spec.rb'
- 'ee/spec/models/incident_management/issuable_escalation_status_spec.rb'
- 'ee/spec/models/member_spec.rb'
- - 'ee/spec/models/product_analytics/jitsu_authentication_spec.rb'
- 'ee/spec/models/project_import_state_spec.rb'
- 'ee/spec/models/push_rule_spec.rb'
- 'ee/spec/models/security/orchestration_policy_configuration_spec.rb'
diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml
index bc050a40a73..a7945a5356c 100644
--- a/.rubocop_todo/rspec/missing_feature_category.yml
+++ b/.rubocop_todo/rspec/missing_feature_category.yml
@@ -1185,7 +1185,6 @@ RSpec/MissingFeatureCategory:
- 'ee/spec/models/path_lock_spec.rb'
- 'ee/spec/models/plan_spec.rb'
- 'ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb'
- - 'ee/spec/models/product_analytics/jitsu_authentication_spec.rb'
- 'ee/spec/models/productivity_analytics_spec.rb'
- 'ee/spec/models/project_alias_spec.rb'
- 'ee/spec/models/project_ci_cd_setting_spec.rb'
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 0291e87f7d1..131b990ed5e 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-20fe02e33885f459cddfb32717e02141d01ab12f
+92e441aabf41c0793da9cb0ea1be58175f990f80
diff --git a/app/assets/javascripts/content_editor/extensions/paste_markdown.js b/app/assets/javascripts/content_editor/extensions/copy_paste.js
index db13438de5e..45a89cc08cf 100644
--- a/app/assets/javascripts/content_editor/extensions/paste_markdown.js
+++ b/app/assets/javascripts/content_editor/extensions/copy_paste.js
@@ -2,6 +2,7 @@ import OrderedMap from 'orderedmap';
import { Extension } from '@tiptap/core';
import { Plugin, PluginKey } from '@tiptap/pm/state';
import { Schema, DOMParser as ProseMirrorDOMParser, DOMSerializer } from '@tiptap/pm/model';
+import { uniqueId } from 'lodash';
import { __ } from '~/locale';
import { VARIANT_DANGER } from '~/alert';
import createMarkdownDeserializer from '../services/gl_api_markdown_deserializer';
@@ -24,8 +25,23 @@ function parseHTML(schema, html) {
return { document: ProseMirrorDOMParser.fromSchema(schema).parse(body) };
}
+const findLoader = (editor, loaderId) => {
+ let position;
+
+ editor.view.state.doc.descendants((descendant, pos) => {
+ if (descendant.type.name === 'loading' && descendant.attrs.id === loaderId) {
+ position = pos;
+ return false;
+ }
+
+ return true;
+ });
+
+ return position;
+};
+
export default Extension.create({
- name: 'pasteMarkdown',
+ name: 'copyPaste',
priority: EXTENSION_PRIORITY_HIGHEST,
addOptions() {
return {
@@ -35,7 +51,7 @@ export default Extension.create({
},
addCommands() {
return {
- pasteContent: (content = '', processMarkdown = true) => async () => {
+ pasteContent: (content = '', processMarkdown = true) => () => {
const { editor, options } = this;
const { renderMarkdown, eventHub } = options;
const deserializer = createMarkdownDeserializer({ render: renderMarkdown });
@@ -43,23 +59,37 @@ export default Extension.create({
const pasteSchemaSpec = { ...editor.schema.spec };
pasteSchemaSpec.marks = OrderedMap.from(pasteSchemaSpec.marks).remove('span');
pasteSchemaSpec.nodes = OrderedMap.from(pasteSchemaSpec.nodes).remove('div').remove('pre');
- const schema = new Schema(pasteSchemaSpec);
+ const pasteSchema = new Schema(pasteSchemaSpec);
const promise = processMarkdown
- ? deserializer.deserialize({ schema, markdown: content })
- : Promise.resolve(parseHTML(schema, content));
-
- promise
- .then(({ document }) => {
+ ? deserializer.deserialize({ schema: pasteSchema, markdown: content })
+ : Promise.resolve(parseHTML(pasteSchema, content));
+ const loaderId = uniqueId('loading');
+
+ Promise.resolve()
+ .then(() => {
+ editor.commands.insertContent({ type: 'loading', attrs: { id: loaderId } });
+ return promise;
+ })
+ .then(async ({ document }) => {
if (!document) return;
- const { firstChild } = document.content;
+ const pos = findLoader(editor, loaderId);
+ if (!pos) return;
+
+ const { firstChild, childCount } = document.content;
const toPaste =
- document.content.childCount === 1 && firstChild.type.name === 'paragraph'
+ childCount === 1 && firstChild.type.name === 'paragraph'
? firstChild.content
: document.content;
- editor.commands.insertContent(toPaste.toJSON());
+ editor
+ .chain()
+ .deleteRange({ from: pos, to: pos + 1 })
+ .insertContentAt(pos, toPaste.toJSON(), {
+ updateSelection: false,
+ })
+ .run();
})
.catch(() => {
eventHub.$emit(ALERT_EVENT, {
@@ -94,7 +124,7 @@ export default Extension.create({
return [
new Plugin({
- key: new PluginKey('pasteMarkdown'),
+ key: new PluginKey('copyPaste'),
props: {
handleDOMEvents: {
copy: handleCutAndCopy,
diff --git a/app/assets/javascripts/content_editor/extensions/loading.js b/app/assets/javascripts/content_editor/extensions/loading.js
new file mode 100644
index 00000000000..0115fb10d5d
--- /dev/null
+++ b/app/assets/javascripts/content_editor/extensions/loading.js
@@ -0,0 +1,23 @@
+import { Node } from '@tiptap/core';
+
+export default Node.create({
+ name: 'loading',
+ inline: true,
+ group: 'inline',
+
+ addAttributes() {
+ return {
+ id: {
+ default: null,
+ },
+ };
+ },
+
+ renderHTML() {
+ return [
+ 'span',
+ { class: 'gl-display-inline-flex gl-align-items-center' },
+ ['span', { class: 'gl-dots-loader gl-mx-2' }, ['span']],
+ ];
+ },
+});
diff --git a/app/assets/javascripts/content_editor/services/create_content_editor.js b/app/assets/javascripts/content_editor/services/create_content_editor.js
index a0dc059b909..f7d189e443f 100644
--- a/app/assets/javascripts/content_editor/services/create_content_editor.js
+++ b/app/assets/javascripts/content_editor/services/create_content_editor.js
@@ -11,6 +11,7 @@ import Code from '../extensions/code';
import CodeBlockHighlight from '../extensions/code_block_highlight';
import CodeSuggestion from '../extensions/code_suggestion';
import ColorChip from '../extensions/color_chip';
+import CopyPaste from '../extensions/copy_paste';
import DescriptionItem from '../extensions/description_item';
import DescriptionList from '../extensions/description_list';
import Details from '../extensions/details';
@@ -40,10 +41,10 @@ import InlineDiff from '../extensions/inline_diff';
import Italic from '../extensions/italic';
import Link from '../extensions/link';
import ListItem from '../extensions/list_item';
+import Loading from '../extensions/loading';
import MathInline from '../extensions/math_inline';
import OrderedList from '../extensions/ordered_list';
import Paragraph from '../extensions/paragraph';
-import PasteMarkdown from '../extensions/paste_markdown';
import Reference from '../extensions/reference';
import ReferenceLabel from '../extensions/reference_label';
import ReferenceDefinition from '../extensions/reference_definition';
@@ -143,10 +144,11 @@ export const createContentEditor = ({
ExternalKeydownHandler.configure({ eventHub }),
Link,
ListItem,
+ Loading,
MathInline,
OrderedList,
Paragraph,
- PasteMarkdown.configure({ eventHub, renderMarkdown, serializer }),
+ CopyPaste.configure({ eventHub, renderMarkdown, serializer }),
Reference.configure({ assetResolver }),
ReferenceLabel,
ReferenceDefinition,
diff --git a/app/assets/javascripts/content_editor/services/markdown_serializer.js b/app/assets/javascripts/content_editor/services/markdown_serializer.js
index bc738073e15..972b4acf523 100644
--- a/app/assets/javascripts/content_editor/services/markdown_serializer.js
+++ b/app/assets/javascripts/content_editor/services/markdown_serializer.js
@@ -32,6 +32,7 @@ import InlineDiff from '../extensions/inline_diff';
import Italic from '../extensions/italic';
import Link from '../extensions/link';
import ListItem from '../extensions/list_item';
+import Loading from '../extensions/loading';
import MathInline from '../extensions/math_inline';
import OrderedList from '../extensions/ordered_list';
import Paragraph from '../extensions/paragraph';
@@ -194,6 +195,7 @@ const defaultSerializerConfig = {
inline: true,
}),
[ListItem.name]: preserveUnchanged(defaultMarkdownSerializer.nodes.list_item),
+ [Loading.name]: () => {},
[OrderedList.name]: preserveUnchanged(renderOrderedList),
[Paragraph.name]: preserveUnchanged(defaultMarkdownSerializer.nodes.paragraph),
[Reference.name]: renderReference,
diff --git a/app/assets/javascripts/super_sidebar/components/brand_logo.vue b/app/assets/javascripts/super_sidebar/components/brand_logo.vue
index c017fa8afa2..66381e4da4d 100644
--- a/app/assets/javascripts/super_sidebar/components/brand_logo.vue
+++ b/app/assets/javascripts/super_sidebar/components/brand_logo.vue
@@ -27,7 +27,7 @@ export default {
<template>
<a
v-gl-tooltip:super-sidebar.hover.bottom="$options.i18n.homepage"
- class="tanuki-logo-container"
+ class="brand-logo"
:href="rootPath"
:title="$options.i18n.homepage"
data-track-action="click_link"
diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
index d26dc7d7ba0..47589c132a7 100644
--- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue
@@ -556,7 +556,7 @@ export default {
};
</script>
<template>
- <div v-if="!loading" id="widget-state" class="mr-state-widget gl-mt-3">
+ <div v-if="!loading" id="widget-state" class="mr-state-widget gl-mt-5">
<header
v-if="shouldRenderCollaborationStatus"
class="gl-rounded-base gl-border-solid gl-border-1 gl-border-gray-100 gl-overflow-hidden mr-widget-workflow gl-mt-0!"
diff --git a/app/assets/stylesheets/framework.scss b/app/assets/stylesheets/framework.scss
index 3957f82f658..4d4144fe9dd 100644
--- a/app/assets/stylesheets/framework.scss
+++ b/app/assets/stylesheets/framework.scss
@@ -39,6 +39,7 @@
@import 'framework/contextual_sidebar_header';
@import 'framework/contextual_sidebar';
@import 'framework/super_sidebar';
+@import 'framework/brand_logo';
@import 'framework/tables';
@import 'framework/notes';
@import 'framework/tabs';
diff --git a/app/assets/stylesheets/framework/brand_logo.scss b/app/assets/stylesheets/framework/brand_logo.scss
new file mode 100644
index 00000000000..1bc1ef797a7
--- /dev/null
+++ b/app/assets/stylesheets/framework/brand_logo.scss
@@ -0,0 +1,29 @@
+$brand-logo-light-background: #e0dfe5;
+$brand-logo-dark-background: #53515b;
+
+.brand-logo {
+ display: inline-block;
+ @include gl-rounded-base;
+ @include gl-p-2;
+ @include gl-bg-transparent;
+ @include gl-border-none;
+
+ .tanuki-logo {
+ @include gl-vertical-align-middle;
+ }
+
+ &:focus,
+ &:active {
+ @include gl-focus;
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ background-color: $brand-logo-light-background;
+
+ .gl-dark & {
+ background-color: $brand-logo-dark-background;
+ }
+ }
+}
diff --git a/app/assets/stylesheets/framework/super_sidebar.scss b/app/assets/stylesheets/framework/super_sidebar.scss
index 9ad3bcba266..823825ca406 100644
--- a/app/assets/stylesheets/framework/super_sidebar.scss
+++ b/app/assets/stylesheets/framework/super_sidebar.scss
@@ -57,12 +57,7 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
.user-bar {
background-color: $t-gray-a-04;
- .tanuki-logo {
- @include gl-vertical-align-middle;
- }
-
- .user-bar-item,
- .tanuki-logo-container {
+ .user-bar-item {
@include gl-rounded-base;
@include gl-p-2;
@include gl-bg-transparent;
@@ -81,21 +76,6 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
@include active-toggle;
}
}
-
- $light-mode-btn-bg: #e0dfe5;
- $dark-mode-btn-bg: #53515b;
-
- .tanuki-logo-container {
- &:hover,
- &:focus,
- &:active {
- background-color: $light-mode-btn-bg;
-
- .gl-dark & {
- background-color: $dark-mode-btn-bg;
- }
- }
- }
}
.counter .gl-icon,
diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml
index d2dbff64620..e4c45120ee8 100644
--- a/config/sidekiq_queues.yml
+++ b/config/sidekiq_queues.yml
@@ -581,6 +581,8 @@
- 1
- - sync_seat_link_request
- 1
+- - system_access_group_saml_microsoft_group_sync
+ - 1
- - system_hook_push
- 1
- - tasks_to_be_done_create
diff --git a/doc/.vale/gitlab/FirstPerson.yml b/doc/.vale/gitlab/FirstPerson.yml
deleted file mode 100644
index a1517743e53..00000000000
--- a/doc/.vale/gitlab/FirstPerson.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# Warning: gitlab.FirstPerson
-#
-# Checks for use of first person pronouns.
-#
-# For a list of all options, see https://vale.sh/docs/topics/styles/
-extends: existence
-message: "Instead of '%s', speak directly to the reader. Use 'you' or re-write to remove."
-level: warning
-ignorecase: true
-link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html
-tokens:
- - '\bI[ ,;:?!"]|\bI\x27.{1,2}'
diff --git a/doc/.vale/gitlab/Markdown_emoji.yml b/doc/.vale/gitlab/Markdown_emoji.yml
index 9873fb8becd..20f3ed0f5cb 100644
--- a/doc/.vale/gitlab/Markdown_emoji.yml
+++ b/doc/.vale/gitlab/Markdown_emoji.yml
@@ -1,11 +1,11 @@
---
# Warning: gitlab.Markdown_emoji
#
-# Check for use of GLFM emoji syntax (https://docs.gitlab.com/ee/user/markdown.html#emojis), which doesn't render correctly in documentation.
+# Check for use of GLFM emoji syntax (https://docs.gitlab.com/ee/user/markdown.html#emoji), which doesn't render correctly in documentation.
#
# For a list of all options, see https://vale.sh/docs/topics/styles/
extends: existence
-message: "Replace '%s' with GitLab SVGs or Unicode emojis."
+message: "Replace '%s' with GitLab SVGs or Unicode emoji."
link: https://docs.gitlab.com/ee/development/documentation/styleguide/#gitlab-svg-icons
level: warning
scope: text
diff --git a/doc/.vale/gitlab/SubstitutionWarning.yml b/doc/.vale/gitlab/SubstitutionWarning.yml
index fa4a0960d9c..edae364af05 100644
--- a/doc/.vale/gitlab/SubstitutionWarning.yml
+++ b/doc/.vale/gitlab/SubstitutionWarning.yml
@@ -23,6 +23,7 @@ swap:
distro: "distribution"
docs: "documentation"
e-mail: "email"
+ emojis: "emoji"
ex: "for example"
file name: "filename"
filesystem: "file system"
diff --git a/doc/administration/audit_events.md b/doc/administration/audit_events.md
index 6f91a6aa4d1..df371b8a82f 100644
--- a/doc/administration/audit_events.md
+++ b/doc/administration/audit_events.md
@@ -49,7 +49,7 @@ You can view audit events scoped to a group or project.
To view a group's audit events:
1. Go to the group.
-1. On the left sidebar, select **Security and Compliance > Audit Events**.
+1. On the left sidebar, select **Secure > Audit events**.
Group events do not include project audit events. Group events can also be accessed using the
[Group Audit Events API](../api/audit_events.md#group-audit-events). Group event queries are limited to a maximum of 30
@@ -58,7 +58,7 @@ days.
To view a project's audit events:
1. Go to the project.
-1. On the left sidebar, select **Security & Compliance > Audit Events**.
+1. On the left sidebar, select **Secure > Audit events**.
Project events can also be accessed using the [Project Audit Events API](../api/audit_events.md#project-audit-events).
Project event queries are limited to a maximum of 30 days.
diff --git a/doc/administration/auth/ldap/ldap-troubleshooting.md b/doc/administration/auth/ldap/ldap-troubleshooting.md
index 9fb3888b995..219808c1007 100644
--- a/doc/administration/auth/ldap/ldap-troubleshooting.md
+++ b/doc/administration/auth/ldap/ldap-troubleshooting.md
@@ -378,7 +378,7 @@ things to debug the situation.
an LDAP DN as the `Identifier`. If not, this user hasn't signed in with
LDAP yet and must do so first.
- You've waited an hour or [the configured interval](ldap_synchronization.md#adjust-ldap-group-sync-schedule) for
- the group to sync. To speed up the process, either go to the GitLab group **Group information > Members**
+ the group to sync. To speed up the process, either go to the GitLab group **Manage > Members**
and press **Sync now** (sync one group) or [run the group sync Rake task](../../raketasks/ldap.md#run-a-group-sync)
(sync all groups).
diff --git a/doc/administration/raketasks/project_import_export.md b/doc/administration/raketasks/project_import_export.md
index 17a0eb46a30..32f6136933b 100644
--- a/doc/administration/raketasks/project_import_export.md
+++ b/doc/administration/raketasks/project_import_export.md
@@ -99,10 +99,10 @@ To fix the issue:
1. Change the file permissions to `0400`.
1. Move the file to a public folder (for example `/tmp/`).
-### `Name can contain only letters, digits, emojis ...`
+### `Name can contain only letters, digits, emoji ...`
```plaintext
-Name can contain only letters, digits, emojis, '_', '.', '+', dashes, or spaces. It must start with a letter,
+Name can contain only letters, digits, emoji, '_', '.', '+', dashes, or spaces. It must start with a letter,
digit, emoji, or '_', and Path can contain only letters, digits, '_', '-', or '.'. It cannot start
with '-', end in '.git', or end in '.atom'.
```
diff --git a/doc/administration/terraform_state.md b/doc/administration/terraform_state.md
index 84f596dacf2..2b738f975ba 100644
--- a/doc/administration/terraform_state.md
+++ b/doc/administration/terraform_state.md
@@ -27,7 +27,7 @@ or because your instance doesn't use Terraform.
When Terraform state administration is disabled:
-- On the left sidebar, you cannot select **Infrastructure > Terraform states**.
+- On the left sidebar, you cannot select **Operate > Terraform states**.
- Any CI/CD jobs that access the Terraform state fail with this error:
```shell
diff --git a/doc/api/award_emoji.md b/doc/api/award_emoji.md
index a22c61b3391..2ff71a088e6 100644
--- a/doc/api/award_emoji.md
+++ b/doc/api/award_emoji.md
@@ -6,12 +6,12 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Emoji reactions API **(FREE)**
-> [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/409884) from "award emojis" to "emoji reactions" in GitLab 16.0.
+> [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/409884) from "award emoji" to "emoji reactions" in GitLab 16.0.
An [emoji reaction](../user/award_emojis.md) tells a thousand words.
We call GitLab objects on which you can react with an emoji "awardables".
-You can react with emojis on the following:
+You can react with emoji on the following:
- [Epics](../user/group/epics/index.md) ([API](epics.md)). **(PREMIUM)**
- [Issues](../user/project/issues/index.md) ([API](issues.md)).
diff --git a/doc/api/graphql/custom_emoji.md b/doc/api/graphql/custom_emoji.md
index 25ae37b75a9..69c16f57bce 100644
--- a/doc/api/graphql/custom_emoji.md
+++ b/doc/api/graphql/custom_emoji.md
@@ -4,7 +4,7 @@ group: Project Management
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
-# Use custom emojis with GraphQL **(FREE)**
+# Use custom emoji with GraphQL **(FREE)**
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37911) in GitLab 13.6 [with a flag](../../administration/feature_flags.md) named `custom_emoji`. Disabled by default.
> - Enabled on GitLab.com in GitLab 14.0.
@@ -14,7 +14,7 @@ On self-managed GitLab, by default this feature is not available. To make it ava
On GitLab.com, this feature is available.
This feature is ready for production use.
-To use custom emojis in comments and descriptions, you can add them to a top-level group using the GraphQL API.
+To use custom emoji in comments and descriptions, you can add them to a top-level group using the GraphQL API.
Parameters:
@@ -38,7 +38,7 @@ mutation CreateCustomEmoji($groupPath: ID!) {
}
```
-After adding a custom emoji to the group, members can use it in the same way as other emojis in the comments.
+After adding a custom emoji to the group, members can use it in the same way as other emoji in the comments.
## Get custom emoji for a group
diff --git a/doc/api/graphql/index.md b/doc/api/graphql/index.md
index abedb63d575..9a78d43ff4b 100644
--- a/doc/api/graphql/index.md
+++ b/doc/api/graphql/index.md
@@ -57,7 +57,7 @@ You can work with sample queries that pull data from public projects on GitLab.c
- [Create an audit report](audit_report.md)
- [Identify issue boards](sample_issue_boards.md)
- [Query users](users_example.md)
-- [Use custom emojis](custom_emoji.md)
+- [Use custom emoji](custom_emoji.md)
The [get started](getting_started.md) page includes different methods to customize GraphQL queries.
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index a3a600084d6..b460c36401c 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -28616,6 +28616,7 @@ see the associated mutation type above.
| Name | Type | Description |
| ---- | ---- | ----------- |
+| <a id="aiexplainvulnerabilityinputincludesourcecode"></a>`includeSourceCode` | [`Boolean`](#boolean) | Include vulnerablility source code in the AI prompt. |
| <a id="aiexplainvulnerabilityinputresourceid"></a>`resourceId` | [`AiModelID!`](#aimodelid) | Global ID of the resource to mutate. |
### `AiFillInMergeRequestTemplateInput`
diff --git a/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md b/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
index 9ea5f76733a..f7604689b78 100644
--- a/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
+++ b/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
@@ -79,7 +79,7 @@ and [Container Registry](../../../user/packages/container_registry/index.md).
![Create project](img/initial-pipeline.png)
-1. Visit **Packages and registries > Container Registry**. Make sure the application image has been
+1. Visit **Deploy > Container Registry**. Make sure the application image has been
pushed.
![Create project](img/registry.png)
diff --git a/doc/ci/environments/index.md b/doc/ci/environments/index.md
index 7141804f058..689f92723ee 100644
--- a/doc/ci/environments/index.md
+++ b/doc/ci/environments/index.md
@@ -32,7 +32,7 @@ There are a few ways to view a list of environments for a given project:
- On the project's overview page, if at least one environment is available (that is, not stopped).
![Number of Environments](img/environments_project_home.png "Incremental counter of available Environments")
-- On the left sidebar, select **Deployments > Environments**.
+- On the left sidebar, select **Operate > Environments**.
The environments are displayed.
![Environments list](img/environments_list_v14_8.png)
diff --git a/doc/ci/jobs/job_artifacts.md b/doc/ci/jobs/job_artifacts.md
index 95d939c7027..770722a0713 100644
--- a/doc/ci/jobs/job_artifacts.md
+++ b/doc/ci/jobs/job_artifacts.md
@@ -193,7 +193,7 @@ job:
> - [Improved performance](https://gitlab.com/gitlab-org/gitlab/-/issues/387765) in GitLab 15.9.
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/407475) in GitLab 16.0. Feature flag `artifacts_management_page` removed.
-You can view all artifacts stored in a project from the **CI/CD > Artifacts** page.
+You can view all artifacts stored in a project from the **Build > Artifacts** page.
This list displays all jobs and their associated artifacts. Expand an entry to access
all artifacts associated with a job, including:
diff --git a/doc/ci/jobs/job_control.md b/doc/ci/jobs/job_control.md
index 5ec001f1bcb..8e5014f5fbd 100644
--- a/doc/ci/jobs/job_control.md
+++ b/doc/ci/jobs/job_control.md
@@ -271,7 +271,7 @@ check the value of the `$CI_PIPELINE_SOURCE` variable:
| `push` | For pipelines triggered by a `git push` event, including for branches and tags. |
| `schedule` | For [scheduled pipelines](../pipelines/schedules.md). |
| `trigger` | For pipelines created by using a [trigger token](../triggers/index.md#configure-cicd-jobs-to-run-in-triggered-pipelines). |
-| `web` | For pipelines created by using **Run pipeline** button in the GitLab UI, from the project's **CI/CD > Pipelines** section. |
+| `web` | For pipelines created by using **Run pipeline** button in the GitLab UI, from the project's **Build > Pipelines** section. |
| `webide` | For pipelines created by using the [WebIDE](../../user/project/web_ide/index.md). |
The following example runs the job as a manual job in scheduled pipelines or in push
diff --git a/doc/ci/pipeline_editor/index.md b/doc/ci/pipeline_editor/index.md
index fcacc3b5d97..b6f30627b7e 100644
--- a/doc/ci/pipeline_editor/index.md
+++ b/doc/ci/pipeline_editor/index.md
@@ -11,7 +11,7 @@ type: reference
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/270059) in GitLab 13.10.
The pipeline editor is the primary place to edit the GitLab CI/CD configuration in
-the `.gitlab-ci.yml` file in the root of your repository. To access the editor, go to **CI/CD > Editor**.
+the `.gitlab-ci.yml` file in the root of your repository. To access the editor, go to **Build > Pipeline editor**.
From the pipeline editor page you can:
@@ -45,7 +45,7 @@ The **Lint** tab is replaced with the **Validate** tab in GitLab 15.3. The lint
in a successful [pipeline simulation](#simulate-a-cicd-pipeline).
To test the validity of your GitLab CI/CD configuration before committing the changes,
-you can use the CI lint tool. To access it, go to **CI/CD > Editor** and select the **Lint** tab.
+you can use the CI lint tool. To access it, go to **Build > Pipeline editor** and select the **Lint** tab.
This tool checks for syntax and logical errors but goes into more detail than the
automatic [validation](#validate-ci-configuration) in the editor.
@@ -77,11 +77,11 @@ for review.
## Visualize CI configuration
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/241722) in GitLab 13.5.
-> - [Moved to **CI/CD > Editor**](https://gitlab.com/gitlab-org/gitlab/-/issues/263141) in GitLab 13.7.
+> - [Moved to **Build > Pipeline editor**](https://gitlab.com/gitlab-org/gitlab/-/issues/263141) in GitLab 13.7.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/290117) in GitLab 13.12.
To view a visualization of your `.gitlab-ci.yml` configuration, in your project,
-go to **CI/CD > Editor**, and then select the **Visualize** tab. The
+go to **Build > Pipeline editor**, and then select the **Visualize** tab. The
visualization shows all stages and jobs. Any [`needs`](../yaml/index.md#needs)
relationships are displayed as lines connecting jobs together, showing the
hierarchy of execution:
diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md
index c99df5b15e6..5d8a81b4802 100644
--- a/doc/ci/pipelines/index.md
+++ b/doc/ci/pipelines/index.md
@@ -100,7 +100,7 @@ that might run pipelines after branch deletion.
### View pipelines
You can find the current and historical pipeline runs under your project's
-**CI/CD > Pipelines** page. You can also access pipelines for a merge request by navigating
+**Build > Pipelines** page. You can also access pipelines for a merge request by navigating
to its **Pipelines** tab.
![Pipelines index page](img/pipelines_index_v13_0.png)
@@ -290,7 +290,7 @@ pipelines.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24851) in GitLab 12.7.
Users with the Owner role for a project can delete a pipeline
-by selecting the pipeline in the **CI/CD > Pipelines** to get to the **Pipeline Details**
+by selecting the pipeline in the **Build > Pipelines** to get to the **Pipeline Details**
page, then selecting **Delete**.
![Pipeline Delete](img/pipeline-delete.png)
@@ -433,7 +433,7 @@ If a stage contains more than 100 jobs, only the first 100 jobs are listed in th
pipeline graph. The remaining jobs still run as usual. To see the jobs:
- Select the pipeline, and the jobs are listed on the right side of the pipeline details page.
-- On the left sidebar, select **CI/CD > Jobs**.
+- On the left sidebar, select **Build > Jobs**.
### View job dependencies in the pipeline graph
diff --git a/doc/ci/quick_start/index.md b/doc/ci/quick_start/index.md
index ec58491e604..80bb9f63413 100644
--- a/doc/ci/quick_start/index.md
+++ b/doc/ci/quick_start/index.md
@@ -68,7 +68,7 @@ In this file, you define:
To create a `.gitlab-ci.yml` file:
-1. On the left sidebar, select **Repository > Files**.
+1. On the left sidebar, select **Code > Repository**.
1. Above the file list, select the branch you want to commit to.
If you're not sure, leave `master` or `main`.
Then select the plus icon (**{plus}**) and **New file**:
@@ -117,7 +117,7 @@ The pipeline starts and runs the jobs you defined in the `.gitlab-ci.yml` file.
Now take a look at your pipeline and the jobs within.
-1. Go to **CI/CD > Pipelines**. A pipeline with three stages should be displayed:
+1. Go to **Build > Pipelines**. A pipeline with three stages should be displayed:
![Three stages](img/three_stages_v13_6.png)
diff --git a/doc/ci/runners/configure_runners.md b/doc/ci/runners/configure_runners.md
index c365cc934db..91fdeefff2d 100644
--- a/doc/ci/runners/configure_runners.md
+++ b/doc/ci/runners/configure_runners.md
@@ -1021,7 +1021,8 @@ To determine which runners need to be upgraded:
As an administrator, you can view runner statistics to learn about the performance of your runner fleet.
-1. Select **Main menu > Admin**.
+1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
+1. Select **Admin Area**.
1. On the left sidebar, select **CI/CD > Runners**.
1. Select **View metrics**.
diff --git a/doc/ci/test_cases/index.md b/doc/ci/test_cases/index.md
index edc962c9921..9da0d06d1cd 100644
--- a/doc/ci/test_cases/index.md
+++ b/doc/ci/test_cases/index.md
@@ -30,7 +30,7 @@ Prerequisite:
To create a test case in a GitLab project:
-1. Go to **CI/CD > Test cases**.
+1. Go to **Build > Test cases**.
1. Select **New test case**. You are taken to the new test case form. Here you can enter
the new case's title, [description](../../user/markdown.md), attach a file, and assign [labels](../../user/project/labels.md).
1. Select **Submit test case**. You are taken to view the new test case.
@@ -49,7 +49,7 @@ Whether you can view an test case depends on the [project visibility level](../.
To view a test case:
-1. In a project, go to **CI/CD > Test cases**.
+1. In a project, go to **Build > Test cases**.
1. Select the title of the test case you want to view. You are taken to the test case page.
![An example test case page](img/test_case_show_v13_10.png)
@@ -83,7 +83,7 @@ To archive a test case, on the test case's page, select **Archive test case**.
To view archived test cases:
-1. Go to **CI/CD > Test cases**.
+1. Go to **Build > Test cases**.
1. Select **Archived**.
## Reopen an archived test case
diff --git a/doc/ci/testing/code_quality.md b/doc/ci/testing/code_quality.md
index 2ddd1122dc7..fcb5a23742a 100644
--- a/doc/ci/testing/code_quality.md
+++ b/doc/ci/testing/code_quality.md
@@ -78,7 +78,7 @@ that were found on the branch it was run on.
### Project quality view **(ULTIMATE)**
-The project quality view displays an overview of the code quality findings. The view can be found under **Analytics > CI/CD**, and requires [`project_quality_summary_page`](../../user/feature_flags.md) feature flag to be enabled for this particular project.
+The project quality view displays an overview of the code quality findings. The view can be found under **Analyze > CI/CD analytics**, and requires [`project_quality_summary_page`](../../user/feature_flags.md) feature flag to be enabled for this particular project.
![Code Quality Summary](img/code_quality_summary_15_9.png)
diff --git a/doc/ci/triggers/index.md b/doc/ci/triggers/index.md
index 412394a24e7..a47eaaf0381 100644
--- a/doc/ci/triggers/index.md
+++ b/doc/ci/triggers/index.md
@@ -183,7 +183,7 @@ A part of the trigger's token displays on the right of the page, under the job d
![Marked as triggered on a single job page](img/trigger_single_job.png)
In pipelines triggered with a trigger token, jobs are labeled as `triggered` in
-**CI/CD > Jobs**.
+**Build > Jobs**.
## Troubleshooting
diff --git a/doc/ci/yaml/index.md b/doc/ci/yaml/index.md
index 151b245b0c1..c261c7d05d1 100644
--- a/doc/ci/yaml/index.md
+++ b/doc/ci/yaml/index.md
@@ -2724,7 +2724,7 @@ when to add jobs to pipelines.
| `schedules` | For [scheduled pipelines](../pipelines/schedules.md). |
| `tags` | When the Git reference for a pipeline is a tag. |
| `triggers` | For pipelines created by using a [trigger token](../triggers/index.md#configure-cicd-jobs-to-run-in-triggered-pipelines). |
- | `web` | For pipelines created by selecting **Run pipeline** in the GitLab UI, from the project's **CI/CD > Pipelines** section. |
+ | `web` | For pipelines created by selecting **Run pipeline** in the GitLab UI, from the project's **Build > Pipelines** section. |
**Example of `only:refs` and `except:refs`**:
@@ -3114,7 +3114,7 @@ release_job:
This example creates a release:
- When you push a Git tag.
-- When you add a Git tag in the UI at **Repository > Tags**.
+- When you add a Git tag in the UI at **Code > Tags**.
**Additional details**:
diff --git a/doc/development/contributing/first_contribution.md b/doc/development/contributing/first_contribution.md
index 3cf7f222fe4..4bebabbc125 100644
--- a/doc/development/contributing/first_contribution.md
+++ b/doc/development/contributing/first_contribution.md
@@ -302,7 +302,7 @@ Now you're ready to push changes from the community fork to the main GitLab repo
![Create merge request banner](img/mr_button.png)
Select **Create merge request**.
- If you don't see this message, on the left sidebar, select **Merge requests > New merge request**.
+ If you don't see this message, on the left sidebar, select **Code > Merge requests > New merge request**.
1. Take a look at the branch names. You should be merging from your branch
in the community fork to the `master` branch in the GitLab repository.
diff --git a/doc/development/documentation/contribute.md b/doc/development/documentation/contribute.md
index d3b7d9a4d93..b6573665f8d 100644
--- a/doc/development/documentation/contribute.md
+++ b/doc/development/documentation/contribute.md
@@ -54,7 +54,7 @@ When you are ready to update the documentation:
1. In the **Commit message** text box, enter a commit message.
Use 3-5 words, start with a capital letter, and do not end with a period.
1. Select **Commit changes**.
- 1. On the left sidebar, select **Merge requests**.
+ 1. On the left sidebar, select **Code > Merge requests**.
1. Select **New merge request**.
1. For the source branch, select your fork and branch. If you did not create a branch, select `master`.
For the target branch, select the [GitLab repository](https://gitlab.com/gitlab-org/gitlab) `master` branch.
diff --git a/doc/development/documentation/styleguide/index.md b/doc/development/documentation/styleguide/index.md
index 95c843ebf34..23717bb352a 100644
--- a/doc/development/documentation/styleguide/index.md
+++ b/doc/development/documentation/styleguide/index.md
@@ -1201,7 +1201,7 @@ include a visual representation to help readers understand it, you can:
an area of the screen.
- Create a short video of the interaction and link to it.
-## Emojis
+## Emoji
Don't use the Markdown emoji format, for example `:smile:`, for any purpose. Use
[GitLab SVG icons](#gitlab-svg-icons) instead.
diff --git a/doc/development/documentation/styleguide/word_list.md b/doc/development/documentation/styleguide/word_list.md
index 50b8acb6189..18f77c42ca7 100644
--- a/doc/development/documentation/styleguide/word_list.md
+++ b/doc/development/documentation/styleguide/word_list.md
@@ -458,9 +458,9 @@ Instead of:
Do not use **e-mail** with a hyphen. When plural, use **emails** or **email messages**. ([Vale](../testing.md#vale) rule: [`SubstitutionSuggestions.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/SubstitutionSuggestions.yml))
-## emojis
+## emoji
-Use **emojis** to refer to the plural form of **emoji**.
+Use **emoji** to refer to the plural form of **emoji**.
## enable
@@ -695,7 +695,7 @@ Instead of:
## I
-Do not use first-person singular. Use **you** or rewrite the phrase instead. ([Vale](../testing.md#vale) rule: [`FirstPerson.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/FirstPerson.yml))
+Do not use first-person singular. Use **you** or rewrite the phrase instead.
## i.e.
diff --git a/doc/gitlab-basics/feature_branch_workflow.md b/doc/gitlab-basics/feature_branch_workflow.md
index 65445c226ca..ed84d584f81 100644
--- a/doc/gitlab-basics/feature_branch_workflow.md
+++ b/doc/gitlab-basics/feature_branch_workflow.md
@@ -34,6 +34,6 @@ To merge changes from a local branch to a feature branch, follow this workflow.
git push origin feature_name
```
-1. Review your code: On the left sidebar, go to **Repository > Commits**.
+1. Review your code: On the left sidebar, go to **Code > Commits**.
1. [Create a merge request](../user/project/merge_requests/creating_merge_requests.md).
1. Your team lead reviews the code and merges it to the main branch.
diff --git a/doc/operations/feature_flags.md b/doc/operations/feature_flags.md
index df1924ebb99..d718c5ab9d7 100644
--- a/doc/operations/feature_flags.md
+++ b/doc/operations/feature_flags.md
@@ -85,7 +85,7 @@ and the supported strategies are:
- [User List](#user-list)
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 **Deployments > Feature flags**
+or by editing an existing feature flag after creation by navigating to **Deploy > Feature flags**
and selecting **Edit** (**{pencil}**).
### All users
diff --git a/doc/operations/incident_management/incident_timeline_events.md b/doc/operations/incident_management/incident_timeline_events.md
index 6a52accbfb2..a5472b2c984 100644
--- a/doc/operations/incident_management/incident_timeline_events.md
+++ b/doc/operations/incident_management/incident_timeline_events.md
@@ -139,7 +139,7 @@ Added tags are displayed next to the timestamp.
Incident timeline events support the following [GitLab Flavored Markdown](../../user/markdown.md) features.
- [Code](../../user/markdown.md#code-spans-and-blocks).
-- [Emojis](../../user/markdown.md#emojis).
+- [Emoji](../../user/markdown.md#emoji).
- [Emphasis](../../user/markdown.md#emphasis).
- [GitLab-specific references](../../user/markdown.md#gitlab-specific-references).
- [Images](../../user/markdown.md#images), rendered as a link to the uploaded image.
diff --git a/doc/operations/incident_management/status_page.md b/doc/operations/incident_management/status_page.md
index a159757842d..a52790b7f70 100644
--- a/doc/operations/incident_management/status_page.md
+++ b/doc/operations/incident_management/status_page.md
@@ -19,8 +19,8 @@ Selecting an incident displays a detail page with more information about a parti
![Status Page detail](img/status_page_detail_v12_10.png)
- Status on the incident, including when the incident was last updated.
-- The incident title, including any emojis.
-- The description of the incident, including emojis.
+- The incident title, including any emoji.
+- The description of the incident, including emoji.
- Any file attachments provided in the incident description, or comments with a
valid image extension. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/205166) in GitLab 13.1.
- A chronological ordered list of updates to the incident.
@@ -84,7 +84,7 @@ the necessary CI/CD variables to deploy the Status Page to AWS S3:
- `AWS_DEFAULT_REGION` - The AWS region.
- `AWS_ACCESS_KEY_ID` - The AWS access key ID.
- `AWS_SECRET_ACCESS_KEY` - The AWS secret.
-1. On the left sidebar, select **CI/CD > Pipelines**.
+1. On the left sidebar, select **Build > Pipelines**.
1. To deploy the Status Page to S3, select **Run pipeline**.
WARNING:
diff --git a/doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md b/doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md
index 02748f7904c..b85b99d1874 100644
--- a/doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md
+++ b/doc/topics/autodevops/cloud_deployments/auto_devops_with_eks.md
@@ -200,7 +200,7 @@ to monitor it.
After successfully deploying your application, you can view its website and check
on its health on the **Environments** page by navigating to
-**Deployments > Environments**. This page displays details about
+**Operate > Environments**. This page displays details about
the deployed applications, and the right-hand column displays icons that link
you to common environment tasks:
diff --git a/doc/topics/autodevops/cloud_deployments/auto_devops_with_gke.md b/doc/topics/autodevops/cloud_deployments/auto_devops_with_gke.md
index ac3d82c323c..f6a6c16e010 100644
--- a/doc/topics/autodevops/cloud_deployments/auto_devops_with_gke.md
+++ b/doc/topics/autodevops/cloud_deployments/auto_devops_with_gke.md
@@ -204,7 +204,7 @@ to monitor it.
After successfully deploying your application, you can view its website and check
on its health on the **Environments** page by navigating to
-**Deployments > Environments**. This page displays details about
+**Operate > Environments**. This page displays details about
the deployed applications, and the right-hand column displays icons that link
you to common environment tasks:
diff --git a/doc/topics/autodevops/multiple_clusters_auto_devops.md b/doc/topics/autodevops/multiple_clusters_auto_devops.md
index 0b1699d8230..1b6b5bc33c0 100644
--- a/doc/topics/autodevops/multiple_clusters_auto_devops.md
+++ b/doc/topics/autodevops/multiple_clusters_auto_devops.md
@@ -32,7 +32,7 @@ To deploy your environments to different Kubernetes clusters:
For deprecated, [certificate-based clusters](../../user/infrastructure/clusters/index.md#certificate-based-kubernetes-integration-deprecated):
-1. Go to the project and select **Infrastructure > Kubernetes clusters** from the left sidebar.
+1. Go to the project and select **Operate > Kubernetes clusters** from the left sidebar.
1. [Set the environment scope of each cluster](../../user/project/clusters/multiple_kubernetes_clusters.md#setting-the-environment-scope).
1. For each cluster, [add a domain based on its Ingress IP address](../../user/project/clusters/gitlab_managed_clusters.md#base-domain).
diff --git a/doc/tutorials/dependency_scanning.md b/doc/tutorials/dependency_scanning.md
index 51424c3319e..90bc2ec96a2 100644
--- a/doc/tutorials/dependency_scanning.md
+++ b/doc/tutorials/dependency_scanning.md
@@ -104,7 +104,7 @@ scanned for vulnerabilities.
Use the content shown in the [Yarn lockfile](#yarn-lock-file-content) section.
-1. Go to **CI/CD > Pipelines** and confirm that the latest pipeline completed successfully.
+1. Go to **Build > Pipelines** and confirm that the latest pipeline completed successfully.
In the pipeline, dependency scanning runs and the vulnerabilities are detected automatically.
@@ -116,7 +116,7 @@ medium severity vulnerabilities and confirm only the high severity vulnerability
To triage the vulnerabilities:
-1. Go to **Security and Compliance > Vulnerability report**.
+1. Go to **Secure > Vulnerability report**.
1. Select each of the medium severity vulnerabilities by selecting the checkbox in each row.
1. From the **Set status** dropdown list select **Dismiss**. From the **Dismissal reason** dropdown
list select **Used in tests**, add the comment "Used in tests", then select **Change status**.
@@ -161,12 +161,12 @@ To fix the vulnerability:
```
1. Switch to the GitLab browser tab.
-1. Go to **Merge requests**, then select **Create merge request**.
+1. Go to **Code > Merge requests**, then select **Create merge request**.
1. On the **New merge request** page, scroll to the bottom and select **Create merge request**.
Wait for the merge request pipeline to complete.
1. Refresh the page, then select **Merge**.
1. Wait for the pipeline to complete successfully.
-1. Go to **Security and Compliance > Vulnerability report**.
+1. Go to **Secure > Vulnerability report**.
1. Select the **High** vulnerability's description.
A banner confirms that the vulnerability has been resolved in the `main` branch. You would
@@ -174,7 +174,7 @@ To fix the vulnerability:
`yarn.lock` file. For this tutorial, you can skip the verification step.
1. In the **Status** dropdown list, select **Resolve**, then select **Change status**.
-1. Go to **Security and Compliance > Vulnerability report**.
+1. Go to **Secure > Vulnerability report**.
You should now see _no_ vulnerabilities listed in the vulnerability report.
@@ -224,7 +224,7 @@ To add a new vulnerability:
```
1. Switch to the GitLab browser tab.
-1. Go to **Merge requests**, then select **Create merge request**.
+1. Go to **Code > Merge requests**, then select **Create merge request**.
1. On the **New merge request** page, scroll to the bottom and select **Create merge request**.
Wait for the merge request pipeline to complete, then refresh the page. The merge
diff --git a/doc/tutorials/fuzz_testing/index.md b/doc/tutorials/fuzz_testing/index.md
index 41b5068ab72..f51f7cdb427 100644
--- a/doc/tutorials/fuzz_testing/index.md
+++ b/doc/tutorials/fuzz_testing/index.md
@@ -165,7 +165,7 @@ fuzz test using the pipeline you've just created.
To run the fuzz test:
-1. On the left sidebar, select **Merge requests**.
+1. On the left sidebar, select **Code > Merge requests**.
1. Select **New merge request**.
1. In the **Source branch** section, select the `add-fuzz-test` branch.
1. In the **Target branch** section, make sure that your namespace and the `main` branch are selected.
diff --git a/doc/tutorials/hugo/index.md b/doc/tutorials/hugo/index.md
index 0e66d096fe2..97c79e77392 100644
--- a/doc/tutorials/hugo/index.md
+++ b/doc/tutorials/hugo/index.md
@@ -88,7 +88,7 @@ To build a Hugo site with GitLab, you first need to create a `.gitlab-ci.yml` fi
You specify your configuration options in a special file called `.gitlab-ci.yml`. To create a `.gitlab-ci.yml` file:
-1. On the left sidebar, select **Repository > Files**.
+1. On the left sidebar, select **Code > Repository**.
1. Above the file list, select the plus icon ( + ), then select **New file** from the dropdown list.
1. For the filename, enter `.gitlab-ci.yml`. Don't omit the period at the beginning.
1. Select the **Apply a template** dropdown list, then enter "Hugo" in the filter box.
diff --git a/doc/tutorials/manage_user/index.md b/doc/tutorials/manage_user/index.md
index b21454fa5d5..91309d7cb42 100644
--- a/doc/tutorials/manage_user/index.md
+++ b/doc/tutorials/manage_user/index.md
@@ -389,7 +389,7 @@ add different users to that project.
You have now created a project in the parent group.
-In this project, go to **Project information > Members**.
+In this project, go to **Manage > Members**.
The existing members of the parent group (you and Alex) are already members of
this project because when your project belongs to a group, project members inherit
diff --git a/doc/user/application_security/api_fuzzing/index.md b/doc/user/application_security/api_fuzzing/index.md
index 66d38d08e85..e8feb0f4a59 100644
--- a/doc/user/application_security/api_fuzzing/index.md
+++ b/doc/user/application_security/api_fuzzing/index.md
@@ -2032,7 +2032,7 @@ Follow these steps to view details of a fuzzing fault:
1. You can view faults in a project, or a merge request:
- - In a project, go to the project's **Security and Compliance > Vulnerability Report**
+ - In a project, go to the project's **Secure > Vulnerability report**
page. This page shows all vulnerabilities from the default branch only.
- In a merge request, go the merge request's **Security** section and select the **Expand**
button. API Fuzzing faults are available in a section labeled
diff --git a/doc/user/application_security/container_scanning/index.md b/doc/user/application_security/container_scanning/index.md
index 5c604a3fb08..791a73bfdc2 100644
--- a/doc/user/application_security/container_scanning/index.md
+++ b/doc/user/application_security/container_scanning/index.md
@@ -328,7 +328,7 @@ To enable Container Scanning in a project, create a merge request from the Secur
page:
1. In the project where you want to enable Container Scanning, go to
- **Security and Compliance > Security configuration**.
+ **Secure > Security configuration**.
1. In the **Container Scanning** row, select **Configure with a merge request**.
This automatically creates a merge request with the changes necessary to enable Container Scanning.
diff --git a/doc/user/application_security/dast_api/index.md b/doc/user/application_security/dast_api/index.md
index 7f6457e843d..b03f9102dae 100644
--- a/doc/user/application_security/dast_api/index.md
+++ b/doc/user/application_security/dast_api/index.md
@@ -1950,7 +1950,7 @@ Follow these steps to view details of a vulnerability:
1. You can view vulnerabilities in a project, or a merge request:
- - In a project, go to the project's **Security and Compliance > Vulnerability Report**
+ - In a project, go to the project's **Secure > Vulnerability report**
page. This page shows all vulnerabilities from the default branch only.
- In a merge request, go the merge request's **Security** section and select the **Expand**
button. DAST API vulnerabilities are available in a section labeled
diff --git a/doc/user/application_security/dependency_list/index.md b/doc/user/application_security/dependency_list/index.md
index cba87164f12..8fbbcdbc8f2 100644
--- a/doc/user/application_security/dependency_list/index.md
+++ b/doc/user/application_security/dependency_list/index.md
@@ -16,7 +16,7 @@ details about those dependencies, including their known vulnerabilities. It is a
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
For an overview, see [Project Dependency](https://www.youtube.com/watch?v=ckqkn9Tnbw4).
-To see the dependency list, go to your project and select **Security and Compliance > Dependency list**.
+To see the dependency list, go to your project and select **Secure > Dependency list**.
This information is sometimes referred to as a Software Bill of Materials, SBOM, or BOM.
diff --git a/doc/user/application_security/policies/index.md b/doc/user/application_security/policies/index.md
index bd3da0b5913..47d959a1f35 100644
--- a/doc/user/application_security/policies/index.md
+++ b/doc/user/application_security/policies/index.md
@@ -13,7 +13,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Policies in GitLab provide security teams a way to require scans of their choice to be run
whenever a project pipeline runs according to the configuration specified. Security teams can
therefore be confident that the scans they set up have not been changed, altered, or disabled. You
-can access these by navigating to your project's **Security and Compliance > Policies** page.
+can access these by navigating to your project's **Secure > Policies** page.
GitLab supports the following security policies:
diff --git a/doc/user/award_emojis.md b/doc/user/award_emojis.md
index c3aad86461b..6ddd2584ce1 100644
--- a/doc/user/award_emojis.md
+++ b/doc/user/award_emojis.md
@@ -6,11 +6,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Emoji reactions **(FREE)**
-> - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/409884) from "award emojis" to "emoji reactions" in GitLab 16.0.
-> - Reacting with emojis on work items (such as tasks, objectives, and key results) [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393599) in GitLab 16.0.
+> - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/409884) from "award emoji" to "emoji reactions" in GitLab 16.0.
+> - Reacting with emoji on work items (such as tasks, objectives, and key results) [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393599) in GitLab 16.0.
When you're collaborating online, you get fewer opportunities for high-fives
-and thumbs-ups. React with emojis on:
+and thumbs-ups. React with emoji on:
- [Issues](project/issues/index.md).
- [Tasks](tasks.md).
@@ -51,14 +51,14 @@ To add an emoji reaction:
To remove an emoji reaction, select the emoji again.
-## Custom emojis
+## Custom emoji
-You can upload custom emojis to a GitLab instance with the GraphQL API.
-For more information, see [Use custom emojis with GraphQL](../api/graphql/custom_emoji.md).
+You can upload custom emoji to a GitLab instance with the GraphQL API.
+For more information, see [Use custom emoji with GraphQL](../api/graphql/custom_emoji.md).
-Custom emojis don't show in the emoji picker.
+Custom emoji don't show in the emoji picker.
To use them in a text box, type the filename without the extension and surrounded by colons.
For example, for a file named `thank-you.png`, type `:thank-you:`.
-For a list of custom emojis available for GitLab.com, see
+For a list of custom emoji available for GitLab.com, see
[the `custom_emoji` project](https://gitlab.com/custom_emoji/custom_emoji/-/tree/main/img).
diff --git a/doc/user/clusters/management_project.md b/doc/user/clusters/management_project.md
index ff6cf6bb1a8..d7518463c84 100644
--- a/doc/user/clusters/management_project.md
+++ b/doc/user/clusters/management_project.md
@@ -58,7 +58,7 @@ To associate a cluster management project with your cluster:
1. Navigate to the appropriate configuration page. For a:
- [Project-level cluster](../project/clusters/index.md), go to your project's
- **Infrastructure > Kubernetes clusters** page.
+ **Operate > Kubernetes clusters** page.
- [Group-level cluster](../group/clusters/index.md), go to your group's **Kubernetes**
page.
- [Instance-level cluster](../instance/clusters/index.md):
diff --git a/doc/user/compliance/license_list.md b/doc/user/compliance/license_list.md
index 7f55ba50c5b..deec4e28911 100644
--- a/doc/user/compliance/license_list.md
+++ b/doc/user/compliance/license_list.md
@@ -24,7 +24,7 @@ Alternatively, licenses will also appear under the license list when using our d
1. Your project must use at least one of the
[supported languages and package managers](license_compliance/index.md#supported-languages-and-package-managers).
-When everything is configured, on the left sidebar, select **Security & Compliance > License Compliance**.
+When everything is configured, on the left sidebar, select **Secure > License compliance**.
The licenses are displayed, where:
diff --git a/doc/user/discussions/index.md b/doc/user/discussions/index.md
index 03b48fd42b6..cef48bd05e7 100644
--- a/doc/user/discussions/index.md
+++ b/doc/user/discussions/index.md
@@ -103,7 +103,7 @@ To add a commit diff comment:
The comment is displayed on the merge request's **Overview** tab.
-The comment is not displayed on your project's **Repository > Commits** page.
+The comment is not displayed on your project's **Code > Commits** page.
NOTE:
When your comment contains a reference to a commit included in the merge request,
diff --git a/doc/user/group/epics/manage_epics.md b/doc/user/group/epics/manage_epics.md
index 18429d6fe0c..3ccf694dfae 100644
--- a/doc/user/group/epics/manage_epics.md
+++ b/doc/user/group/epics/manage_epics.md
@@ -347,8 +347,8 @@ you might not have permission to.
### Add a new issue to an epic
-You can add an existing issue to an epic, or create a new issue that's
-automatically added to the epic.
+Add an existing issue to an epic, or create a new issue that's automatically
+added to the epic.
#### Add an existing issue to an epic
@@ -385,6 +385,12 @@ To add an existing issue to an epic:
Creating an issue from an epic enables you to maintain focus on the broader context of the epic
while dividing work into smaller parts.
+You can create a new issue from an epic only in projects that are in the epic's group or one of its
+descendant subgroups.
+To create a new issue in a [project that was shared with the epic's group](../../project/members/share_project_with_groups.md),
+first [create the issue directly in the project](../../project/issues/create_issues.md#from-a-project), and
+then [add an existing issue to an epic](#add-an-existing-issue-to-an-epic).
+
Prerequisites:
- You must have at least the Guest role for the issue's project and the epic's group.
diff --git a/doc/user/group/repositories_analytics/index.md b/doc/user/group/repositories_analytics/index.md
index e5ca41accfc..6f5f4905102 100644
--- a/doc/user/group/repositories_analytics/index.md
+++ b/doc/user/group/repositories_analytics/index.md
@@ -18,7 +18,7 @@ It is similar to [repository analytics for projects](../../analytics/repository_
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/263478) in GitLab 13.7.
-The **Analytics > Repositories** group page displays the overall test coverage of all your projects in your group.
+The **Analyze > Repository analytics** group page displays the overall test coverage of all your projects in your group.
In the **Overall activity** section, you can see:
- The number of projects with coverage reports.
@@ -29,7 +29,7 @@ In the **Overall activity** section, you can see:
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/215140) in GitLab 13.9.
-The **Analytics > Repositories** group page displays the average test coverage of all your projects in your group in a graph for the last 30 days.
+The **Analyze > Repository analytics** group page displays the average test coverage of all your projects in your group in a graph for the last 30 days.
## Latest project test coverage list
diff --git a/doc/user/infrastructure/clusters/connect/new_civo_cluster.md b/doc/user/infrastructure/clusters/connect/new_civo_cluster.md
index 7c8065b6143..91429e203f3 100644
--- a/doc/user/infrastructure/clusters/connect/new_civo_cluster.md
+++ b/doc/user/infrastructure/clusters/connect/new_civo_cluster.md
@@ -52,7 +52,7 @@ This project provides you with:
To create a GitLab agent for Kubernetes:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. Select **Connect a cluster (agent)**.
1. From the **Select an agent** dropdown list, select `civo-agent` and select **Register an agent**.
1. GitLab generates a registration token for the agent. Securely store this secret token, as you will need it later.
@@ -91,20 +91,20 @@ Refer to the [Civo Terraform provider](https://registry.terraform.io/providers/c
After configuring your project, manually trigger the provisioning of your cluster. In GitLab:
-1. On the left sidebar, go to **CI/CD > Pipelines**.
+1. On the left sidebar, go to **Build > Pipelines**.
1. Next to **Play** (**{play}**), select the dropdown list icon (**{chevron-lg-down}**).
1. Select **Deploy** to manually trigger the deployment job.
When the pipeline finishes successfully, you can see your new cluster:
- In Civo dashboard: on your Kubernetes tab.
-- In GitLab: from your project's sidebar, select **Infrastructure > Kubernetes clusters**.
+- In GitLab: from your project's sidebar, select **Operate > Kubernetes clusters**.
## Use your cluster
After you provision the cluster, it is connected to GitLab and is ready for deployments. To check the connection:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. In the list, view the **Connection status** column.
For more information about the capabilities of the connection, see [the GitLab agent for Kubernetes documentation](../index.md).
@@ -131,7 +131,7 @@ To remove all resources:
needs: []
```
-1. On the left sidebar, select **CI/CD > Pipelines** and select the most recent pipeline.
+1. On the left sidebar, select **Build > Pipelines** and select the most recent pipeline.
1. For the `destroy` job, select **Play** (**{play}**).
## Civo support
diff --git a/doc/user/infrastructure/clusters/connect/new_eks_cluster.md b/doc/user/infrastructure/clusters/connect/new_eks_cluster.md
index 19bcce581e9..ef51db097d9 100644
--- a/doc/user/infrastructure/clusters/connect/new_eks_cluster.md
+++ b/doc/user/infrastructure/clusters/connect/new_eks_cluster.md
@@ -55,7 +55,7 @@ In GitLab 14.10, a [flag](../../../../administration/feature_flags.md) named `ce
To create a GitLab agent for Kubernetes:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. Select **Connect a cluster (agent)**.
1. From the **Select an agent** dropdown list, select `eks-agent` and select **Register an agent**.
1. GitLab generates a registration token for the agent. Securely store this secret token, as you will need it later.
@@ -139,20 +139,20 @@ View the [AWS Terraform provider](https://registry.terraform.io/providers/hashic
After configuring your project, manually trigger the provisioning of your cluster. In GitLab:
-1. On the left sidebar, go to **CI/CD > Pipelines**.
+1. On the left sidebar, go to **Build > Pipelines**.
1. Next to **Play** (**{play}**), select the dropdown list icon (**{chevron-lg-down}**).
1. Select **Deploy** to manually trigger the deployment job.
When the pipeline finishes successfully, you can view the new cluster:
- In AWS: From the [EKS console](https://console.aws.amazon.com/eks/home), select **Amazon EKS > Clusters**.
-- In GitLab: On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+- In GitLab: On the left sidebar, select **Operate > Kubernetes clusters**.
## Use your cluster
After you provision the cluster, it is connected to GitLab and is ready for deployments. To check the connection:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. In the list, view the **Connection status** column.
For more information about the capabilities of the connection, see [the GitLab agent for Kubernetes documentation](../index.md).
@@ -180,5 +180,5 @@ To remove all resources:
needs: []
```
-1. On the left sidebar, select **CI/CD > Pipelines** and select the most recent pipeline.
+1. On the left sidebar, select **Build > Pipelines** and select the most recent pipeline.
1. For the `destroy` job, select **Play** (**{play}**).
diff --git a/doc/user/infrastructure/clusters/connect/new_gke_cluster.md b/doc/user/infrastructure/clusters/connect/new_gke_cluster.md
index 25a0a7149e0..3d717e0f473 100644
--- a/doc/user/infrastructure/clusters/connect/new_gke_cluster.md
+++ b/doc/user/infrastructure/clusters/connect/new_gke_cluster.md
@@ -62,7 +62,7 @@ In GitLab 14.10, a [flag](../../../../administration/feature_flags.md) named `ce
To create a GitLab agent for Kubernetes:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. Select **Connect a cluster (agent)**.
1. From the **Select an agent** dropdown list, select `gke-agent` and select **Register an agent**.
1. GitLab generates a registration token for the agent. Securely store this secret token, as you will need it later.
@@ -117,20 +117,20 @@ Refer to the [Google Terraform provider](https://registry.terraform.io/providers
After configuring your project, manually trigger the provisioning of your cluster. In GitLab:
-1. On the left sidebar, go to **CI/CD > Pipelines**.
+1. On the left sidebar, go to **Build > Pipelines**.
1. Next to **Play** (**{play}**), select the dropdown list icon (**{chevron-lg-down}**).
1. Select **Deploy** to manually trigger the deployment job.
When the pipeline finishes successfully, you can see your new cluster:
- In GCP: on your [GCP console's Kubernetes list](https://console.cloud.google.com/kubernetes/list).
-- In GitLab: from your project's sidebar, select **Infrastructure > Kubernetes clusters**.
+- In GitLab: from your project's sidebar, select **Operate > Kubernetes clusters**.
## Use your cluster
After you provision the cluster, it is connected to GitLab and is ready for deployments. To check the connection:
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. In the list, view the **Connection status** column.
For more information about the capabilities of the connection, see [the GitLab agent for Kubernetes documentation](../index.md).
@@ -158,5 +158,5 @@ To remove all resources:
needs: []
```
-1. On the left sidebar, select **CI/CD > Pipelines** and select the most recent pipeline.
+1. On the left sidebar, select **Build > Pipelines** and select the most recent pipeline.
1. For the `destroy` job, select **Play** (**{play}**).
diff --git a/doc/user/infrastructure/clusters/migrate_to_gitlab_agent.md b/doc/user/infrastructure/clusters/migrate_to_gitlab_agent.md
index a21c7271e7a..614e0f5a7e5 100644
--- a/doc/user/infrastructure/clusters/migrate_to_gitlab_agent.md
+++ b/doc/user/infrastructure/clusters/migrate_to_gitlab_agent.md
@@ -70,7 +70,7 @@ In your Auto DevOps project, you can use the GitLab agent to connect with your K
- Add a key called `KUBE_NAMESPACE` with a value of the Kubernetes namespace for your deployments to target. Set the same environment scope.
1. Select **Add variable**.
-1. On the left sidebar, select **Infrastructure > Kubernetes clusters**.
+1. On the left sidebar, select **Operate > Kubernetes clusters**.
1. From the certificate-based clusters section, open the cluster that serves the same environment scope.
1. Select the **Details** tab and disable the cluster.
1. Edit your `.gitlab-ci.yml` file and ensure it's using the Auto DevOps template. For example:
@@ -85,7 +85,7 @@ In your Auto DevOps project, you can use the GitLab agent to connect with your K
KUBE_NAMESPACE: "demo-agent"
```
-1. To test your pipeline, on the left sidebar, select **CI/CD > Pipelines** and then **Run pipeline**.
+1. To test your pipeline, on the left sidebar, select **Build > Pipelines** and then **Run pipeline**.
For an example, [view this project](https://gitlab.com/gitlab-examples/ops/gitops-demo/hello-world-service).
diff --git a/doc/user/infrastructure/iac/terraform_state.md b/doc/user/infrastructure/iac/terraform_state.md
index 455f2ce19e8..31c4ad757c8 100644
--- a/doc/user/infrastructure/iac/terraform_state.md
+++ b/doc/user/infrastructure/iac/terraform_state.md
@@ -321,7 +321,7 @@ curl --header "Private-Token: <your_access_token>" --request DELETE "https://git
If you have at least the Maintainer role, you can remove a state file.
-1. On the left sidebar, select **Infrastructure > Terraform states**.
+1. On the left sidebar, select **Operate > Terraform states**.
1. In the **Actions** column, select **Actions** (**{ellipsis_v}**) and then **Remove state file and versions**.
### Remove a state file by using the API
diff --git a/doc/user/markdown.md b/doc/user/markdown.md
index 1d889d75285..c3e4f77411c 100644
--- a/doc/user/markdown.md
+++ b/doc/user/markdown.md
@@ -58,7 +58,7 @@ Features not found in standard Markdown:
- [Color chips written in `HEX`, `RGB` or `HSL`](#colors)
- [Diagrams and flowcharts](#diagrams-and-flowcharts)
-- [Emoji](#emojis)
+- [Emoji](#emoji)
- [Front matter](#front-matter)
- [Inline diffs](#inline-diff)
- [Math equations and symbols written in LaTeX](#math)
@@ -207,9 +207,9 @@ installation of GitLab, a GitLab administrator [must enable it](../administratio
To make Kroki available in GitLab, a GitLab administrator must enable it.
For more information, see the [Kroki integration](../administration/integration/kroki.md) page.
-### Emojis
+### Emoji
-[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#emojis).
+[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#emoji).
::Tabs
@@ -250,13 +250,13 @@ for a list of all supported emoji codes. :thumbsup:
::EndTabs
-#### Emojis and your operating system
+#### Emoji and your operating system
-The previous emoji example uses hard-coded images. Rendered emojis
+The previous emoji example uses hard-coded images. Rendered emoji
in GitLab may be different depending on the OS and browser used.
-Most emojis are natively supported on macOS, Windows, iOS, Android, and fall back on image-based
-emojis where there is no support.
+Most emoji are natively supported on macOS, Windows, iOS, Android, and fall back on image-based
+emoji where there is no support.
<!-- vale gitlab.Spelling = NO -->
@@ -266,7 +266,7 @@ this font installed by default.
<!-- vale gitlab.Spelling = YES -->
-To learn more about adding custom emojis, see [Custom emojis](award_emojis.md#custom-emojis).
+To learn more about adding custom emoji, see [Custom emoji](award_emojis.md#custom-emoji).
### Front matter
diff --git a/doc/user/packages/composer_repository/index.md b/doc/user/packages/composer_repository/index.md
index c9d09e42532..3f8b0761188 100644
--- a/doc/user/packages/composer_repository/index.md
+++ b/doc/user/packages/composer_repository/index.md
@@ -76,7 +76,7 @@ To publish the package with a deploy token:
- `<tag>` is the Git tag name of the version you want to publish.
To publish a branch, use `branch=<branch>` instead of `tag=<tag>`.
-You can view the published package by going to **Packages and registries > Package Registry** and
+You can view the published package by going to **Deploy > Package Registry** and
selecting the **Composer** tab.
## Publish a Composer package by using CI/CD
@@ -99,13 +99,13 @@ You can publish a Composer package to the Package Registry as part of your CI/CD
1. Run the pipeline.
-To view the published package, go to **Packages and registries > Package Registry** and select the **Composer** tab.
+To view the published package, go to **Deploy > Package Registry** and select the **Composer** tab.
### Use a CI/CD template
A more detailed Composer CI/CD file is also available as a `.gitlab-ci.yml` template:
-1. On the left sidebar, select **Project information**.
+1. On the left sidebar, select **Project overview**.
1. Above the file list, select **Set up CI/CD**. If this button is not available, select **CI/CD Configuration** and then **Edit**.
1. From the **Apply a template** list, select **Composer**.
diff --git a/doc/user/packages/conan_repository/index.md b/doc/user/packages/conan_repository/index.md
index f06a7d83f92..1ebd59d18fa 100644
--- a/doc/user/packages/conan_repository/index.md
+++ b/doc/user/packages/conan_repository/index.md
@@ -295,7 +295,7 @@ There are two ways to remove a Conan package from the GitLab Package Registry.
- From the GitLab user interface:
- Go to your project's **Packages and registries > Package Registry**. Remove the
+ Go to your project's **Deploy > Package Registry**. Remove the
package by selecting **Remove repository** (**{remove}**).
## Search for Conan packages in the Package Registry
diff --git a/doc/user/packages/harbor_container_registry/index.md b/doc/user/packages/harbor_container_registry/index.md
index 2bff6f79a27..21468b9d3bb 100644
--- a/doc/user/packages/harbor_container_registry/index.md
+++ b/doc/user/packages/harbor_container_registry/index.md
@@ -71,4 +71,4 @@ To remove the Harbor Registry for a project:
1. Clear the **Active** checkbox under **Enable integration**.
1. Select **Save changes**.
-The **Packages and registries > Harbor Registry** entry is removed from the sidebar.
+The **Operate > Harbor Registry** entry is removed from the sidebar.
diff --git a/doc/user/packages/package_registry/index.md b/doc/user/packages/package_registry/index.md
index 91186e6c159..ce300e26f8c 100644
--- a/doc/user/packages/package_registry/index.md
+++ b/doc/user/packages/package_registry/index.md
@@ -26,7 +26,7 @@ Learn how to use the GitLab Package Registry to build your own custom package wo
You can view packages for your project or group.
1. Go to the project or group.
-1. Go to **Packages and registries > Package Registry**.
+1. Go to **Deploy > Package Registry**.
You can search, sort, and filter packages on this page. You can share your search results by copying
and pasting the URL from your browser.
@@ -131,7 +131,7 @@ You can also remove the Package Registry for your project specifically:
**Packages** feature.
1. Select **Save changes**.
-The **Packages and registries > Package Registry** entry is removed from the sidebar.
+The **Deploy > Package Registry** entry is removed from the sidebar.
## Package Registry visibility permissions
diff --git a/doc/user/packages/package_registry/reduce_package_registry_storage.md b/doc/user/packages/package_registry/reduce_package_registry_storage.md
index 020cad5ac14..4882753d6cf 100644
--- a/doc/user/packages/package_registry/reduce_package_registry_storage.md
+++ b/doc/user/packages/package_registry/reduce_package_registry_storage.md
@@ -29,7 +29,7 @@ You can delete packages by using [the API](../../../api/packages.md#delete-a-pro
To delete a package in the UI, from your group or project:
-1. Go to **Packages and registries > Package Registry**.
+1. Go to **Deploy > Package Registry**.
1. Find the name of the package you want to delete.
1. Select **Delete**.
@@ -46,7 +46,7 @@ You can delete packages by using [the API](../../../api/packages.md#delete-a-pac
To delete package assets in the UI, from your group or project:
-1. Go to **Packages and registries > Package Registry**.
+1. Go to **Deploy > Package Registry**.
1. Find the name of the package you want to delete.
1. Select the package to view additional details.
1. Find the name of the assets you would like to delete.
diff --git a/doc/user/packages/terraform_module_registry/index.md b/doc/user/packages/terraform_module_registry/index.md
index d7f33dd9e79..2f37b75b637 100644
--- a/doc/user/packages/terraform_module_registry/index.md
+++ b/doc/user/packages/terraform_module_registry/index.md
@@ -19,7 +19,7 @@ projects.
To view Terraform modules in your project:
1. Go to the project.
-1. On the left sidebar, select **Packages and registries > Terraform modules**.
+1. On the left sidebar, select **Operate > Terraform modules**.
You can search, sort, and filter modules on this page.
@@ -186,7 +186,7 @@ Where `<namespace>` is the [namespace](../../../user/namespace/index.md) of the
To download a Terraform module:
-1. On the left sidebar, select **Packages and registries > Terraform modules**.
+1. On the left sidebar, select **Operate > Terraform modules**.
1. Select the name of the module you want to download.
1. In the **Activity** section, select the name of the module you want to download.
@@ -217,7 +217,7 @@ You can delete modules by using [the packages API](../../../api/packages.md#dele
To delete a module in the UI, from your project:
-1. On the left sidebar, select **Packages and registries > Terraform modules**.
+1. On the left sidebar, select **Operate > Terraform modules**.
1. Find the name of the package you want to delete.
1. Select **Delete**.
diff --git a/doc/user/packages/workflows/project_registry.md b/doc/user/packages/workflows/project_registry.md
index 7bff6cf8234..1df244cf0c6 100644
--- a/doc/user/packages/workflows/project_registry.md
+++ b/doc/user/packages/workflows/project_registry.md
@@ -35,7 +35,7 @@ of each package management system to publish different package types to the same
Let's take a look at how you might create one project to host all of your packages:
1. Create a new project in GitLab. The project doesn't require any code or content.
-1. On the left sidebar, select **Project information**, and note the project ID.
+1. On the left sidebar, select **Project overview**, and note the project ID.
1. Create an access token for authentication. All package types in the Package Registry can be published by using:
- A [personal access token](../../profile/personal_access_tokens.md).
diff --git a/doc/user/profile/index.md b/doc/user/profile/index.md
index f43e6a9dc45..0a1f217d662 100644
--- a/doc/user/profile/index.md
+++ b/doc/user/profile/index.md
@@ -39,7 +39,7 @@ Prerequisites:
- Have a project that hosts [GitLab Pages](../project/pages/index.md). For more information,
see [changing your username in the GitLab Team Handbook](https://about.gitlab.com/handbook/tools-and-tips/#change-your-username-at-gitlabcom).
- Your username must be between 2 and 255 characters in length, and must not:
- - Contain special characters or emojis.
+ - Contain special characters or emoji.
- End with `.<reserved file extension>`, for example `jon.png`. However, `jonpng` is valid.
To change your username:
diff --git a/doc/user/project/canary_deployments.md b/doc/user/project/canary_deployments.md
index 4b7ca6bbd8e..c4ef6a647db 100644
--- a/doc/user/project/canary_deployments.md
+++ b/doc/user/project/canary_deployments.md
@@ -121,7 +121,7 @@ or by sending requests to the [GraphQL API](../../api/graphql/getting_started.md
To use your [deploy board](../../user/project/deploy_boards.md):
-1. Go to **Deployments > Environments** for your project.
+1. Go to **Operate > Environments** for your project.
1. Set the new weight with the dropdown list on the right side.
1. Confirm your selection.
diff --git a/doc/user/project/clusters/add_eks_clusters.md b/doc/user/project/clusters/add_eks_clusters.md
index 87554e786ab..9a30cbe94e2 100644
--- a/doc/user/project/clusters/add_eks_clusters.md
+++ b/doc/user/project/clusters/add_eks_clusters.md
@@ -54,7 +54,7 @@ To create new a EKS cluster for your project, group, or instance, through
cluster certificates:
1. Go to your:
- - Project's **Infrastructure > Kubernetes clusters** page, for a project-level cluster.
+ - Project's **Operate > Kubernetes clusters** page, for a project-level cluster.
- Group's **Kubernetes** page, for a group-level cluster.
- **Main menu > Admin > Kubernetes**, for an instance-level cluster.
1. Select **Integrate with a cluster certificate**.
@@ -213,7 +213,7 @@ Otherwise, the deployed app isn't externally available outside of the cluster.
GitLab creates a new pipeline, which begins to build, test, and deploy the app.
After the pipeline has finished, your app runs in EKS, and is available
-to users. Select **CI/CD > Environments**.
+to users. Select **Operate > Environments**.
![Deployed Environment](img/environment.png)
diff --git a/doc/user/project/clusters/add_existing_cluster.md b/doc/user/project/clusters/add_existing_cluster.md
index bb85662d442..aaaa72d282e 100644
--- a/doc/user/project/clusters/add_existing_cluster.md
+++ b/doc/user/project/clusters/add_existing_cluster.md
@@ -66,7 +66,7 @@ to grant access.
To add a Kubernetes cluster to your project, group, or instance:
1. Navigate to your:
- 1. Project's **{cloud-gear}** **Infrastructure > Kubernetes clusters** page, for a project-level cluster.
+ 1. Project's **{cloud-gear}** **Operate > Kubernetes clusters** page, for a project-level cluster.
1. Group's **{cloud-gear}** **Kubernetes** page, for a group-level cluster.
1. **Main menu > Admin > Kubernetes** page, for an instance-level cluster.
1. On the **Kubernetes clusters** page, select the **Connect with a certificate** option from the **Actions** dropdown list.
diff --git a/doc/user/project/clusters/add_gke_clusters.md b/doc/user/project/clusters/add_gke_clusters.md
index c6561fffa0b..09dbd70d1bb 100644
--- a/doc/user/project/clusters/add_gke_clusters.md
+++ b/doc/user/project/clusters/add_gke_clusters.md
@@ -60,7 +60,7 @@ To create new Kubernetes clusters to your project, group, or instance, through
cluster certificates:
1. Navigate to your:
- - Project's **{cloud-gear}** **Infrastructure > Kubernetes clusters** page, for a project-level
+ - Project's **{cloud-gear}** **Operate > Kubernetes clusters** page, for a project-level
cluster.
- Group's **{cloud-gear}** **Kubernetes** page, for a group-level cluster.
- **Main menu > Admin > Kubernetes** page, for an instance-level cluster.
diff --git a/doc/user/project/clusters/add_remove_clusters.md b/doc/user/project/clusters/add_remove_clusters.md
index bba05f1e724..470daf499be 100644
--- a/doc/user/project/clusters/add_remove_clusters.md
+++ b/doc/user/project/clusters/add_remove_clusters.md
@@ -17,7 +17,7 @@ To create and manage a new cluster use [Infrastructure as Code](../../infrastruc
When you successfully connect an existing cluster using cluster certificates, the cluster connection to GitLab becomes enabled. To disable it:
1. Go to your:
- - Project's **{cloud-gear}** **Infrastructure > Kubernetes clusters** page, for a project-level cluster.
+ - Project's **{cloud-gear}** **Operate > Kubernetes clusters** page, for a project-level cluster.
- Group's **{cloud-gear}** **Kubernetes** page, for a group-level cluster.
- **Main menu > Admin > Kubernetes** page, for an instance-level cluster.
1. Select the name of the cluster you want to disable.
diff --git a/doc/user/project/clusters/gitlab_managed_clusters.md b/doc/user/project/clusters/gitlab_managed_clusters.md
index b321646d8d8..0c3eb363f5f 100644
--- a/doc/user/project/clusters/gitlab_managed_clusters.md
+++ b/doc/user/project/clusters/gitlab_managed_clusters.md
@@ -45,7 +45,7 @@ your cluster. This can cause deployment jobs to fail.
To clear the cache:
-1. Navigate to your project's **Infrastructure > Kubernetes clusters** page, and select your cluster.
+1. Navigate to your project's **Operate > Kubernetes clusters** page, and select your cluster.
1. Expand the **Advanced settings** section.
1. Select **Clear cluster cache**.
diff --git a/doc/user/project/deploy_boards.md b/doc/user/project/deploy_boards.md
index 09a443614d0..e2f5ef5a58c 100644
--- a/doc/user/project/deploy_boards.md
+++ b/doc/user/project/deploy_boards.md
@@ -127,7 +127,7 @@ To display the deploy boards for a specific [environment](../../ci/environments/
![deploy boards Kubernetes Label](img/deploy_boards_kubernetes_label.png)
Once all of the above are set up and the pipeline has run at least once,
-navigate to the environments page under **Deployments > Environments**.
+go to the environments page under **Operate > Environments**.
Deploy boards are visible by default. You can explicitly select
the triangle next to their respective environment name to hide them.
diff --git a/doc/user/project/issues/create_issues.md b/doc/user/project/issues/create_issues.md
index 3e7cfc12da7..d01a115b012 100644
--- a/doc/user/project/issues/create_issues.md
+++ b/doc/user/project/issues/create_issues.md
@@ -99,7 +99,7 @@ Prerequisites:
To create an issue from a project issue board:
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
-1. Select **Issues > Boards**.
+1. Select **Plan > Issue boards**.
1. At the top of a board list, select **List actions** (**{ellipsis_v}**) **> Create new issue**.
1. Enter the issue's title.
1. Select **Create issue**.
@@ -107,7 +107,7 @@ To create an issue from a project issue board:
To create an issue from a group issue board:
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
-1. Select **Issues > Boards**.
+1. Select **Plan > Issue boards**.
1. At the top of a board list, select **List actions** (**{ellipsis_v}**) **> Create new issue**.
1. Enter the issue's title.
1. Under **Projects**, select the project in the group that the issue should belong to.
diff --git a/doc/user/project/merge_requests/allow_collaboration.md b/doc/user/project/merge_requests/allow_collaboration.md
index d5851050fd4..4cc8f50dd70 100644
--- a/doc/user/project/merge_requests/allow_collaboration.md
+++ b/doc/user/project/merge_requests/allow_collaboration.md
@@ -109,5 +109,5 @@ To see the pipeline status from the merge request page of a forked project
going back to the original project:
1. Create a group containing all the upstream members.
-1. Go to the **Project information > Members** page in the forked project and invite the newly-created
+1. Go to the **Manage > Members** page in the forked project and invite the newly-created
group to the forked project.
diff --git a/doc/user/project/merge_requests/drafts.md b/doc/user/project/merge_requests/drafts.md
index 6f309d2db24..ff5421d5785 100644
--- a/doc/user/project/merge_requests/drafts.md
+++ b/doc/user/project/merge_requests/drafts.md
@@ -59,7 +59,7 @@ when you mark a merge request as ready, notifications are triggered to
When viewing or searching in your project's merge requests list, you can include or exclude
draft merge requests:
-1. Go to your project and select **Merge requests**.
+1. Go to your project and select **Code > Merge requests**.
1. In the navigation bar, select **Open**, **Merged**, **Closed**, or **All** to
filter by merge request status.
1. Select the search box to display a list of filters and select **Draft**, or
diff --git a/doc/user/project/merge_requests/index.md b/doc/user/project/merge_requests/index.md
index 57201e84c9e..652b754188c 100644
--- a/doc/user/project/merge_requests/index.md
+++ b/doc/user/project/merge_requests/index.md
@@ -77,7 +77,7 @@ or:
or:
-1. On the left sidebar, at the top, select **Merge requests** (**{merge-request}**).
+1. On the left sidebar, select **Code > Merge requests** (**{merge-request}**).
1. From the dropdown list, select **Assigned**.
## Filter the list of merge requests
diff --git a/doc/user/project/merge_requests/reviews/index.md b/doc/user/project/merge_requests/reviews/index.md
index 86468af06a2..54ebfd9eecb 100644
--- a/doc/user/project/merge_requests/reviews/index.md
+++ b/doc/user/project/merge_requests/reviews/index.md
@@ -218,7 +218,7 @@ When bulk-editing merge requests in a project, you can edit the following attrib
To update multiple project merge requests at the same time:
-1. In a project, go to **Merge requests**.
+1. In a project, go to **Code > Merge requests**.
1. Select **Bulk edit**. A sidebar on the right-hand side of your screen appears with
editable fields.
1. Select the checkboxes next to each merge request you want to edit.
@@ -236,7 +236,7 @@ When bulk editing merge requests in a group, you can edit the following attribut
To update multiple group merge requests at the same time:
-1. In a group, go to **Merge requests**.
+1. In a group, go to **Code > Merge requests**.
1. Select **Bulk edit**. A sidebar on the right-hand side of your screen appears with
editable fields.
1. Select the checkboxes next to each merge request you want to edit.
diff --git a/doc/user/project/milestones/burndown_and_burnup_charts.md b/doc/user/project/milestones/burndown_and_burnup_charts.md
index c7ed6069cb6..59b11e78622 100644
--- a/doc/user/project/milestones/burndown_and_burnup_charts.md
+++ b/doc/user/project/milestones/burndown_and_burnup_charts.md
@@ -32,12 +32,14 @@ For an overview, check the video demonstration on [Mapping work versus time with
To view a project's burndown chart:
-1. In a project, navigate to **Issues > Milestones**.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
+1. Select **Plan > Milestones**.
1. Select a milestone from the list.
To view a group's burndown chart:
-1. In a group, navigate to **Issues > Milestones**.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
+1. Select **Plan > Milestones**.
1. Select a milestone from the list.
### Use cases for burndown charts
@@ -110,12 +112,14 @@ Burnup charts show the assigned and completed work for a milestone.
To view a project's burnup chart:
-1. In a project, navigate to **Issues > Milestones**.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
+1. Select **Plan > Milestones**.
1. Select a milestone from the list.
To view a group's burnup chart:
-1. In a group, navigate to **Issues > Milestones**.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
+1. Select **Plan > Milestones**.
1. Select a milestone from the list.
### How burnup charts work
diff --git a/doc/user/project/pages/getting_started/pages_ci_cd_template.md b/doc/user/project/pages/getting_started/pages_ci_cd_template.md
index fb12d43ed92..02e662d15b3 100644
--- a/doc/user/project/pages/getting_started/pages_ci_cd_template.md
+++ b/doc/user/project/pages/getting_started/pages_ci_cd_template.md
@@ -25,7 +25,7 @@ these steps, you may have to do additional configuration for the Pages site to g
If everything is configured correctly, the site can take approximately 30 minutes to deploy.
-To view the pipeline, go to **CI/CD > Pipelines**.
+To view the pipeline, go to **Build > Pipelines**.
When the pipeline is finished, go to **Deploy > Pages** to find the link to
your Pages website.
diff --git a/doc/user/project/pages/getting_started/pages_forked_sample_project.md b/doc/user/project/pages/getting_started/pages_forked_sample_project.md
index 823a7c9de71..8332d96d99e 100644
--- a/doc/user/project/pages/getting_started/pages_forked_sample_project.md
+++ b/doc/user/project/pages/getting_started/pages_forked_sample_project.md
@@ -20,7 +20,7 @@ To fork a sample project and create a Pages website:
1. View the sample projects by navigating to the [GitLab Pages examples](https://gitlab.com/pages) group.
1. Select the name of the project you want to [fork](../../repository/forking_workflow.md#create-a-fork).
1. In the upper-right corner, select **Fork**, then choose a namespace to fork to.
-1. For your project, on the left sidebar, select **CI/CD > Pipelines** and then **Run pipeline**.
+1. For your project, on the left sidebar, select **Build > Pipelines** and then **Run pipeline**.
GitLab CI/CD builds and deploys your site.
The site can take approximately 30 minutes to deploy.
diff --git a/doc/user/project/pages/getting_started/pages_from_scratch.md b/doc/user/project/pages/getting_started/pages_from_scratch.md
index ffcc579f684..51f53860fee 100644
--- a/doc/user/project/pages/getting_started/pages_from_scratch.md
+++ b/doc/user/project/pages/getting_started/pages_from_scratch.md
@@ -174,7 +174,7 @@ After you have completed the preceding steps,
deploy your website:
1. Save and commit the `.gitlab-ci.yml` file.
-1. Go to **CI/CD > Pipelines** to watch the pipeline.
+1. Go to **Build > Pipelines** to watch the pipeline.
1. When the pipeline is finished, go to **Deploy > Pages** to find the link to
your Pages website.
diff --git a/doc/user/project/pages/getting_started/pages_new_project_template.md b/doc/user/project/pages/getting_started/pages_new_project_template.md
index 8f149589e6d..ae0dd9507ad 100644
--- a/doc/user/project/pages/getting_started/pages_new_project_template.md
+++ b/doc/user/project/pages/getting_started/pages_new_project_template.md
@@ -19,7 +19,7 @@ configured to generate a Pages site.
![Project templates for Pages](../img/pages_project_templates_v13_1.png)
1. Complete the form and select **Create project**.
-1. From the left sidebar, navigate to your project's **CI/CD > Pipelines**
+1. On the left sidebar, select **Build > Pipelines**
and select **Run pipeline** to trigger GitLab CI/CD to build and deploy your
site.
diff --git a/doc/user/project/pages/getting_started/pages_ui.md b/doc/user/project/pages/getting_started/pages_ui.md
index 6806d3925fc..94dab9dfd17 100644
--- a/doc/user/project/pages/getting_started/pages_ui.md
+++ b/doc/user/project/pages/getting_started/pages_ui.md
@@ -52,7 +52,7 @@ To complete the setup and generate a GitLab Pages deployment:
1. For **Step 4**, add a commit message and select **Commit**. This commit triggers your first
GitLab Pages deployment.
-To view the running pipeline, go to **CI/CD > Pipelines**.
+To view the running pipeline, go to **Build > Pipelines**.
To view the artifacts that were created during the deployment, view the job,
and on the right side, select **Download artifacts**.
diff --git a/doc/user/project/releases/index.md b/doc/user/project/releases/index.md
index 6bcc57d5916..3030df8df41 100644
--- a/doc/user/project/releases/index.md
+++ b/doc/user/project/releases/index.md
@@ -38,7 +38,7 @@ When you create a release, or after, you can:
To view a list of releases:
-- On the left sidebar, select **Deployments > Releases**, or
+- On the left sidebar, select **Deploy > Releases**, or
- On the project's overview page, if at least one release exists, select the number of releases.
@@ -194,7 +194,7 @@ Prerequisites:
In the UI:
-1. On the left sidebar, select **Deployments > Releases**.
+1. On the left sidebar, select **Deploy > Releases**.
1. In the upper-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
1. On the **Edit Release** page, change the release's details.
1. Select **Save changes**.
@@ -236,17 +236,17 @@ the [Releases API](../../../api/releases/index.md#create-a-release).
In the user interface, to associate milestones to a release:
-1. On the left sidebar, select **Deployments > Releases**.
+1. On the left sidebar, select **Deploy > Releases**.
1. In the upper-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
1. From the **Milestones** list, select each milestone you want to associate. You can select multiple milestones.
1. Select **Save changes**.
-On the **Deployments > Releases** page, the **Milestone** is listed in the top
+On the **Deploy > Releases** page, the **Milestone** is listed in the top
section, along with statistics about the issues in the milestones.
![A Release with one associated milestone](img/release_with_milestone_v12_9.png)
-Releases are also visible on the **Issues > Milestones** page, and when you select a milestone
+Releases are also visible on the **Plan > Milestones** page, and when you select a milestone
on this page.
Here is an example of milestones with no releases, one release, and two releases.
@@ -266,7 +266,7 @@ You can be notified by email when a new release is created for your project.
To subscribe to notifications for releases:
-1. On the left sidebar, select **Project information**.
+1. On the left sidebar, select **Project overview**.
1. Select **Notification setting** (the bell icon).
1. In the list, select **Custom**.
1. Select the **New release** checkbox.
@@ -302,8 +302,8 @@ deploy_to_production:
To set a deploy freeze window in the UI, complete these steps:
1. Sign in to GitLab as a user with the Maintainer role.
-1. On the left sidebar, select **Project information**.
-1. In the left navigation menu, go to **Settings > CI/CD**.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
+1. On the left sidebar, select **Settings > CI/CD**.
1. Scroll to **Deploy freezes**.
1. Select **Expand** to see the deploy freeze table.
1. Select **Add deploy freeze** to open the deploy freeze modal.
diff --git a/doc/user/project/repository/git_blame.md b/doc/user/project/repository/git_blame.md
index baac2a788be..235c1f34d1a 100644
--- a/doc/user/project/repository/git_blame.md
+++ b/doc/user/project/repository/git_blame.md
@@ -21,7 +21,7 @@ Prerequisites:
To view the blame for a file:
-1. Go to your project's **Repository > Files**.
+1. Go to your project's **Code > Repository**.
1. Select the file you want to review.
1. In the upper-right corner, select **Blame**.
diff --git a/doc/user/project/repository/git_history.md b/doc/user/project/repository/git_history.md
index a9228b8cabd..edfcc4b1dc2 100644
--- a/doc/user/project/repository/git_history.md
+++ b/doc/user/project/repository/git_history.md
@@ -11,7 +11,7 @@ description: "Documentation on Git file history."
Git file History provides information about the commit history associated
with a file. To use it:
-1. Go to your project's **Repository > Files**.
+1. Go to your project's **Code > Repository**.
1. In the upper-right corner, select **History**.
When you select **History**, this information is displayed:
diff --git a/doc/user/project/repository/gpg_signed_commits/index.md b/doc/user/project/repository/gpg_signed_commits/index.md
index 2648428f119..c06c695ffa2 100644
--- a/doc/user/project/repository/gpg_signed_commits/index.md
+++ b/doc/user/project/repository/gpg_signed_commits/index.md
@@ -230,7 +230,7 @@ You can review commits for a merge request, or for an entire project:
1. Select **Code > Commits**.
1. To review commits for a merge request:
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
- 1. Select **Merge requests**, then select your merge request.
+ 1. Select **Code > Merge requests**, then select your merge request.
1. Select **Commits**.
1. Identify the commit you want to review. Signed commits show either a **Verified**
or **Unverified** badge, depending on the verification status of the GPG
diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md
index 9f0c46591b9..c7a6de91cbf 100644
--- a/doc/user/project/repository/index.md
+++ b/doc/user/project/repository/index.md
@@ -132,7 +132,7 @@ change. This can occur, for example, if Git or a third-party library that GitLab
## Repository languages
For the default branch of each repository, GitLab determines which programming languages
-are used. This information is displayed on the **Project information** page.
+are used. This information is displayed on the **Project overview** page.
![Repository Languages bar](img/repository_languages_v15_2.png)
@@ -140,7 +140,7 @@ When new files are added, this information can take up to five minutes to update
### Add repository languages
-Not all files are detected and listed on the **Project information** page. Documentation,
+Not all files are detected and listed on the **Project overview** page. Documentation,
vendor code, and most markup languages are excluded.
You can change this behavior by overriding the default settings.
@@ -227,7 +227,7 @@ On self-managed GitLab, by default GitLab uses the `du -sk` command to determine
`gitaly_catfile_repo_size`) instead. To switch between different calculation methods, ask an administrator to
[enable or disable](../../../administration/feature_flags.md) these feature flags.
-The **Project information** page shows the size of all files in the repository. The size is
+The **Project overview** page shows the size of all files in the repository. The size is
updated, at most, every 15 minutes. The file size includes repository files, artifacts, and LFS.
The size can differ slightly from one instance to another due to compression, housekeeping, and other factors.
@@ -237,7 +237,7 @@ Administrators can set a [repository size limit](../../admin_area/settings/accou
## Repository contributor statistics
-All code contributors are displayed under your project's **Repository > Contributor statistics**.
+All code contributors are displayed under your project's **Analyze > Contributor statistics**.
The graph shows the contributor with the most commits to the fewest.
@@ -248,7 +248,7 @@ The graph shows the contributor with the most commits to the fewest.
A repository graph displays a visual history of the repository network, including branches and merges.
This graph can help you visualize the Git flow strategy used in the repository.
-Go to your project's **Repository > Graph**.
+Go to your project's **Code > Repository graph**.
![repository Git flow](img/repo_graph.png)
diff --git a/doc/user/project/requirements/index.md b/doc/user/project/requirements/index.md
index b8e9de41062..4079f821064 100644
--- a/doc/user/project/requirements/index.md
+++ b/doc/user/project/requirements/index.md
@@ -49,7 +49,7 @@ Prerequisite:
To create a requirement:
-1. In a project, go to **Issues > Requirements**.
+1. In a project, go to **Plan > Requirements**.
1. Select **New requirement**.
1. Enter a title and description and select **Create requirement**.
@@ -124,7 +124,7 @@ You can search for a requirement from the requirements list page based on the fo
To search for a requirement:
-1. In a project, go to **Issues > Requirements > List**.
+1. In a project, go to **Plan > Requirements > List**.
1. Select the **Search or filter results** field. A dropdown list appears.
1. Select the requirement author or status from the dropdown list or enter plain text to search by requirement title.
1. Press <kbd>Enter</kbd> on your keyboard to filter the list.
@@ -239,7 +239,7 @@ Before you import your file:
To import requirements:
-1. In a project, go to **Issues > Requirements**.
+1. In a project, go to **Plan > Requirements**.
- For a project with requirements, in the
upper-right corner, select the import icon (**{import}**).
- For a project without requirements, in the middle of the page, select **Import CSV**.
@@ -300,7 +300,7 @@ Prerequisite:
To export requirements:
-1. In a project, go to **Issues > Requirements**.
+1. In a project, go to **Plan > Requirements**.
1. In the upper-right corner, select **Export as CSV** (**{export}**).
A confirmation modal appears.
diff --git a/doc/user/project/wiki/index.md b/doc/user/project/wiki/index.md
index 5591d12f5cf..4a53faeee73 100644
--- a/doc/user/project/wiki/index.md
+++ b/doc/user/project/wiki/index.md
@@ -37,7 +37,7 @@ To access a project wiki:
- On any page in the project, use the <kbd>g</kbd> + <kbd>w</kbd>
[wiki keyboard shortcut](../../shortcuts.md).
-If **Wiki** is not listed in the left sidebar of your project, a project administrator
+If **Plan > Wiki** is not listed in the left sidebar of your project, a project administrator
has [disabled it](#enable-or-disable-a-project-wiki).
## Configure a default branch for your wiki
diff --git a/doc/user/reserved_names.md b/doc/user/reserved_names.md
index 6e8a7e7c1cf..bc9de9357f6 100644
--- a/doc/user/reserved_names.md
+++ b/doc/user/reserved_names.md
@@ -20,7 +20,7 @@ under the `TOP_LEVEL_ROUTES`, `PROJECT_WILDCARD_ROUTES` and `GROUP_ROUTES` lists
## Limitations on project and group names
- Project or group names must start with a letter, digit, emoji, or "_".
-- Project or group names can only contain letters, digits, emojis, "_", ".", "+", dashes, or spaces.
+- Project or group names can only contain letters, digits, emoji, "_", ".", "+", dashes, or spaces.
- Project or group slugs must start with a letter or digit.
- Project or group slugs can only contain letters, digits, '_', '.', '+', or dashes.
- Project or group slugs must not contain consecutive special characters.
diff --git a/doc/user/shortcuts.md b/doc/user/shortcuts.md
index d4688837e39..ac3c6bace09 100644
--- a/doc/user/shortcuts.md
+++ b/doc/user/shortcuts.md
@@ -68,24 +68,24 @@ relatively quickly to work, and they take you to another page in the project.
| Keyboard shortcut | Description |
|-----------------------------|-------------|
-| <kbd>g</kbd> + <kbd>o</kbd> | Go to the project overview page (**Project > Details**). |
-| <kbd>g</kbd> + <kbd>v</kbd> | Go to the project activity feed (**Project > Activity**). |
-| <kbd>g</kbd> + <kbd>r</kbd> | Go to the project releases list (**Project > Releases**). |
-| <kbd>g</kbd> + <kbd>f</kbd> | Go to the [project files](#project-files) list (**Repository > Files**). |
-| <kbd>t</kbd> | Go to the project file search page. (**Repository > Files**, select **Find Files**). |
-| <kbd>g</kbd> + <kbd>c</kbd> | Go to the project commits list (**Repository > Commits**). |
-| <kbd>g</kbd> + <kbd>n</kbd> | Go to the [repository graph](#repository-graph) page (**Repository > Graph**). |
-| <kbd>g</kbd> + <kbd>d</kbd> | Go to repository charts (**Analytics > Repository Analytics**). |
-| <kbd>g</kbd> + <kbd>i</kbd> | Go to the project issues list (**Issues > List**). |
-| <kbd>i</kbd> | Go to the New Issue page (**Issues**, select **New Issue** ). |
-| <kbd>g</kbd> + <kbd>b</kbd> | Go to the project issue boards list (**Issues > Boards**). |
-| <kbd>g</kbd> + <kbd>m</kbd> | Go to the project [merge requests](project/merge_requests/index.md) list (**Merge Requests**). |
-| <kbd>g</kbd> + <kbd>p</kbd> | Go to the CI/CD pipelines list (**CI/CD > Pipelines**). |
-| <kbd>g</kbd> + <kbd>j</kbd> | Go to the CI/CD jobs list (**CI/CD > Jobs**). |
-| <kbd>g</kbd> + <kbd>e</kbd> | Go to the project environments (**Deployments > Environments**). |
-| <kbd>g</kbd> + <kbd>k</kbd> | Go to the project Kubernetes cluster integration page (**Infrastructure > Kubernetes clusters**). You must have at least [`maintainer` permissions](permissions.md) to access this page. |
-| <kbd>g</kbd> + <kbd>s</kbd> | Go to the project snippets list (**Snippets**). |
-| <kbd>g</kbd> + <kbd>w</kbd> | Go to the [project wiki](project/wiki/index.md) (**Wiki**), if enabled. |
+| <kbd>g</kbd> + <kbd>o</kbd> | Go to the project overview page (**Project overview**). |
+| <kbd>g</kbd> + <kbd>v</kbd> | Go to the project activity feed (**Manage > Activity**). |
+| <kbd>g</kbd> + <kbd>r</kbd> | Go to the project releases list (**Deploy > Releases**). |
+| <kbd>g</kbd> + <kbd>f</kbd> | Go to the [project files](#project-files) list (**Code > Repository**). |
+| <kbd>t</kbd> | Go to the project file search page. (**Code > Repository**, select **Find Files**). |
+| <kbd>g</kbd> + <kbd>c</kbd> | Go to the project commits list (**Code > Commits**). |
+| <kbd>g</kbd> + <kbd>n</kbd> | Go to the [repository graph](#repository-graph) page (**Code > Repository graph**). |
+| <kbd>g</kbd> + <kbd>d</kbd> | Go to repository charts (**Analyze > Repository analytics**). |
+| <kbd>g</kbd> + <kbd>i</kbd> | Go to the project issues list (**Plan > Issues**). |
+| <kbd>i</kbd> | Go to the New Issue page (**Pan > Issues**, select **New issue** ). |
+| <kbd>g</kbd> + <kbd>b</kbd> | Go to the project issue boards list (**Plan > Issue boards**). |
+| <kbd>g</kbd> + <kbd>m</kbd> | Go to the project [merge requests](project/merge_requests/index.md) list (**Code > Merge requests**). |
+| <kbd>g</kbd> + <kbd>p</kbd> | Go to the CI/CD pipelines list (**Build > Pipelines**). |
+| <kbd>g</kbd> + <kbd>j</kbd> | Go to the CI/CD jobs list (**Build > Jobs**). |
+| <kbd>g</kbd> + <kbd>e</kbd> | Go to the project environments (**Operate > Environments**). |
+| <kbd>g</kbd> + <kbd>k</kbd> | Go to the project Kubernetes cluster integration page (**Operate > Kubernetes clusters**). You must have at least [`maintainer` permissions](permissions.md) to access this page. |
+| <kbd>g</kbd> + <kbd>s</kbd> | Go to the project snippets list (**Code > Snippets**). |
+| <kbd>g</kbd> + <kbd>w</kbd> | Go to the [project wiki](project/wiki/index.md) (**Plan > Wiki**), if enabled. |
| <kbd>.</kbd> | Open the [Web IDE](project/web_ide/index.md). |
### Issues
@@ -123,14 +123,14 @@ These shortcuts are available when viewing [merge requests](project/merge_reques
### Project files
These shortcuts are available when browsing the files in a project (go to
-**Repository > Files**):
+**Code > Repository**):
| Keyboard shortcut | Description |
|-------------------|-------------|
| <kbd>↑</kbd> | Move selection up. |
| <kbd>↓</kbd> | Move selection down. |
| <kbd>Enter</kbd> | Open selection. |
-| <kbd>Escape</kbd> | Go back to file list screen (only while searching for files, **Repository > Files**, then select **Find File**). |
+| <kbd>Escape</kbd> | Go back to file list screen (only while searching for files, **Code > Repository**, then select **Find File**). |
| <kbd>y</kbd> | Go to file permalink (only while viewing a file). |
| <kbd>.</kbd> | Open the [Web IDE](project/web_ide/index.md). |
@@ -219,7 +219,7 @@ These shortcuts are available when editing a file with the [Web IDE](project/web
### Repository graph
These shortcuts are available when viewing the project [repository graph](project/repository/index.md#repository-history-graph)
-page (go to **Repository > Graph**):
+page (go to **Code > Repository graph**):
| Keyboard shortcut | Description |
|--------------------------------------------------------------------|-------------|
diff --git a/spec/frontend/content_editor/extensions/code_suggestion_spec.js b/spec/frontend/content_editor/extensions/code_suggestion_spec.js
index 3a944b7b3e9..86656fb96c3 100644
--- a/spec/frontend/content_editor/extensions/code_suggestion_spec.js
+++ b/spec/frontend/content_editor/extensions/code_suggestion_spec.js
@@ -5,6 +5,7 @@ import {
createDocBuilder,
triggerNodeInputRule,
expectDocumentAfterTransaction,
+ sleep,
} from '../test_utils';
const SAMPLE_README_CONTENT = `# Sample README
@@ -99,17 +100,10 @@ describe('content_editor/extensions/code_suggestion', () => {
tiptapEditor.commands.setContent(doc(initialDoc).toJSON());
jest.spyOn(tiptapEditor, 'isActive').mockReturnValue(true);
- jest.useRealTimers();
- await new Promise((resolve) => {
- setTimeout(() => {
- tiptapEditor.commands.insertCodeSuggestion();
-
- resolve();
- }, 100);
- });
-
- jest.useFakeTimers();
+ tiptapEditor.commands.insertCodeSuggestion();
+ // wait some time to be sure no other transaction happened
+ await sleep();
expect(tiptapEditor.getJSON()).toEqual(doc(initialDoc).toJSON());
});
diff --git a/spec/frontend/content_editor/extensions/paste_markdown_spec.js b/spec/frontend/content_editor/extensions/copy_paste_spec.js
index 10e456d4b4e..e213e7be63d 100644
--- a/spec/frontend/content_editor/extensions/paste_markdown_spec.js
+++ b/spec/frontend/content_editor/extensions/copy_paste_spec.js
@@ -1,5 +1,6 @@
-import PasteMarkdown from '~/content_editor/extensions/paste_markdown';
+import CopyPaste from '~/content_editor/extensions/copy_paste';
import CodeBlockHighlight from '~/content_editor/extensions/code_block_highlight';
+import Loading from '~/content_editor/extensions/loading';
import Diagram from '~/content_editor/extensions/diagram';
import Frontmatter from '~/content_editor/extensions/frontmatter';
import Heading from '~/content_editor/extensions/heading';
@@ -10,7 +11,12 @@ import eventHubFactory from '~/helpers/event_hub_factory';
import { ALERT_EVENT } from '~/content_editor/constants';
import waitForPromises from 'helpers/wait_for_promises';
import MarkdownSerializer from '~/content_editor/services/markdown_serializer';
-import { createTestEditor, createDocBuilder, waitUntilNextDocTransaction } from '../test_utils';
+import {
+ createTestEditor,
+ createDocBuilder,
+ waitUntilNextDocTransaction,
+ sleep,
+} from '../test_utils';
const CODE_BLOCK_HTML = '<pre class="js-syntax-highlight" lang="javascript">var a = 2;</pre>';
const DIAGRAM_HTML =
@@ -19,21 +25,32 @@ const FRONTMATTER_HTML = '<pre lang="yaml" data-lang-params="frontmatter">key: v
const PARAGRAPH_HTML =
'<p dir="auto">Some text with <strong>bold</strong> and <em>italic</em> text.</p>';
-describe('content_editor/extensions/paste_markdown', () => {
+describe('content_editor/extensions/copy_paste', () => {
let tiptapEditor;
let doc;
let p;
let bold;
let italic;
+ let loading;
let heading;
let codeBlock;
let renderMarkdown;
+ let resolveRenderMarkdownPromise;
+ let resolveRenderMarkdownPromiseAndWait;
+
let eventHub;
const defaultData = { 'text/plain': '**bold text**' };
beforeEach(() => {
- renderMarkdown = jest.fn();
eventHub = eventHubFactory();
+ renderMarkdown = jest.fn().mockImplementation(
+ () =>
+ new Promise((resolve) => {
+ resolveRenderMarkdownPromise = resolve;
+ resolveRenderMarkdownPromiseAndWait = (data) =>
+ waitUntilNextDocTransaction({ tiptapEditor, action: () => resolve(data) });
+ }),
+ );
jest.spyOn(eventHub, '$emit');
@@ -41,21 +58,23 @@ describe('content_editor/extensions/paste_markdown', () => {
extensions: [
Bold,
Italic,
+ Loading,
CodeBlockHighlight,
Diagram,
Frontmatter,
Heading,
- PasteMarkdown.configure({ renderMarkdown, eventHub, serializer: new MarkdownSerializer() }),
+ CopyPaste.configure({ renderMarkdown, eventHub, serializer: new MarkdownSerializer() }),
],
});
({
- builders: { doc, p, bold, italic, heading, codeBlock },
+ builders: { doc, p, bold, italic, heading, loading, codeBlock },
} = createDocBuilder({
tiptapEditor,
names: {
bold: { markType: Bold.name },
italic: { markType: Italic.name },
+ loading: { nodeType: Loading.name },
heading: { nodeType: Heading.name },
codeBlock: { nodeType: CodeBlockHighlight.name },
},
@@ -154,15 +173,51 @@ describe('content_editor/extensions/paste_markdown', () => {
});
describe('when pasting raw markdown source', () => {
+ it('shows a loading indicator while markdown is being processed', async () => {
+ const expectedDoc = doc(p(loading({ id: expect.any(String) })));
+
+ await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+
+ it('pastes in the correct position if some content is added before the markdown is processed', async () => {
+ const expectedDoc = doc(p(bold('some markdown'), 'some content'));
+ const resolvedValue = '<strong>some markdown</strong>';
+
+ await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+
+ tiptapEditor.commands.insertContent('some content');
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ expect(tiptapEditor.state.selection.from).toEqual(26); // end of the document
+ });
+
+ it('does not paste anything if the loading indicator is deleted before the markdown is processed', async () => {
+ const expectedDoc = doc(p());
+
+ await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+ tiptapEditor.chain().selectAll().deleteSelection().run();
+ resolveRenderMarkdownPromise('some markdown');
+
+ // wait some time to be sure no transaction happened
+ await sleep();
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+
describe('when rendering markdown succeeds', () => {
+ let resolvedValue;
+
beforeEach(() => {
- renderMarkdown.mockResolvedValueOnce('<strong>bold text</strong>');
+ resolvedValue = '<strong>bold text</strong>';
});
it('transforms pasted text into a prosemirror node', async () => {
const expectedDoc = doc(p(bold('bold text')));
await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -174,6 +229,7 @@ describe('content_editor/extensions/paste_markdown', () => {
tiptapEditor.commands.setContent('Initial text and ');
await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -187,6 +243,7 @@ describe('content_editor/extensions/paste_markdown', () => {
tiptapEditor.commands.setTextSelection({ from: 13, to: 17 });
await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -194,8 +251,7 @@ describe('content_editor/extensions/paste_markdown', () => {
describe('when pasting block content in an existing paragraph', () => {
beforeEach(() => {
- renderMarkdown.mockReset();
- renderMarkdown.mockResolvedValueOnce('<h1>Heading</h1><p><strong>bold text</strong></p>');
+ resolvedValue = '<h1>Heading</h1><p><strong>bold text</strong></p>';
});
it('inserts the block content after the existing paragraph', async () => {
@@ -208,6 +264,7 @@ describe('content_editor/extensions/paste_markdown', () => {
tiptapEditor.commands.setContent('Initial text and ');
await triggerPasteEventHandlerAndWaitForTransaction(buildClipboardEvent());
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -216,9 +273,8 @@ describe('content_editor/extensions/paste_markdown', () => {
describe('when pasting html content', () => {
it('strips out any stray div, pre, span tags', async () => {
- renderMarkdown.mockResolvedValueOnce(
- '<div><span dir="auto"><strong>bold text</strong></span></div><pre><code>some code</code></pre>',
- );
+ const resolvedValue =
+ '<div><span dir="auto"><strong>bold text</strong></span></div><pre><code>some code</code></pre>';
const expectedDoc = doc(p(bold('bold text')), p('some code'));
@@ -231,6 +287,7 @@ describe('content_editor/extensions/paste_markdown', () => {
},
}),
);
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -238,8 +295,7 @@ describe('content_editor/extensions/paste_markdown', () => {
describe('when pasting text/x-gfm', () => {
it('processes the content as markdown, even if html content exists', async () => {
- renderMarkdown.mockResolvedValueOnce('<strong>bold text</strong>');
-
+ const resolvedValue = '<strong>bold text</strong>';
const expectedDoc = doc(p(bold('bold text')));
await triggerPasteEventHandlerAndWaitForTransaction(
@@ -252,6 +308,7 @@ describe('content_editor/extensions/paste_markdown', () => {
},
}),
);
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
@@ -259,9 +316,8 @@ describe('content_editor/extensions/paste_markdown', () => {
describe('when pasting vscode-editor-data', () => {
it('pastes the content as a code block', async () => {
- renderMarkdown.mockResolvedValueOnce(
- '<div class="gl-relative markdown-code-block js-markdown-code">&#x000A;<pre data-sourcepos="1:1-3:3" data-canonical-lang="ruby" class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="nb">puts</span> <span class="s2">"Hello World"</span></span></code></pre>&#x000A;<copy-code></copy-code>&#x000A;</div>',
- );
+ const resolvedValue =
+ '<div class="gl-relative markdown-code-block js-markdown-code">&#x000A;<pre data-sourcepos="1:1-3:3" data-canonical-lang="ruby" class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="nb">puts</span> <span class="s2">"Hello World"</span></span></code></pre>&#x000A;<copy-code></copy-code>&#x000A;</div>';
const expectedDoc = doc(
codeBlock(
@@ -281,12 +337,13 @@ describe('content_editor/extensions/paste_markdown', () => {
},
}),
);
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
it('pastes as regular markdown if language is markdown', async () => {
- renderMarkdown.mockResolvedValueOnce('<p><strong>bold text</strong></p>');
+ const resolvedValue = '<p><strong>bold text</strong></p>';
const expectedDoc = doc(p(bold('bold text')));
@@ -300,6 +357,7 @@ describe('content_editor/extensions/paste_markdown', () => {
},
}),
);
+ await resolveRenderMarkdownPromiseAndWait(resolvedValue);
expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
});
diff --git a/spec/frontend/content_editor/test_utils.js b/spec/frontend/content_editor/test_utils.js
index 2192f75ac74..f1c9fd47eb7 100644
--- a/spec/frontend/content_editor/test_utils.js
+++ b/spec/frontend/content_editor/test_utils.js
@@ -50,6 +50,8 @@ import Video from '~/content_editor/extensions/video';
import HTMLMarks from '~/content_editor/extensions/html_marks';
import HTMLNodes from '~/content_editor/extensions/html_nodes';
+export const DEFAULT_WAIT_TIMEOUT = 100;
+
export const createDocBuilder = ({ tiptapEditor, names = {} }) => {
const docBuilders = builders(tiptapEditor.schema, {
p: { nodeType: 'paragraph' },
@@ -238,6 +240,16 @@ export const waitUntilTransaction = ({ tiptapEditor, number, action }) => {
});
};
+export const sleep = (time = DEFAULT_WAIT_TIMEOUT) => {
+ jest.useRealTimers();
+ const promise = new Promise((resolve) => {
+ setTimeout(resolve, time);
+ });
+ jest.useFakeTimers();
+
+ return promise;
+};
+
export const expectDocumentAfterTransaction = ({ tiptapEditor, number, expectedDoc, action }) => {
return new Promise((resolve) => {
let counter = 0;