From e388922d11bfef5df911c45f81bee5077fea90f2 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 16 May 2025 15:07:26 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo/lint/duplicate_branch.yml | 1 - .../lint/duplicate_case_condition.yml | 4 - GITLAB_KAS_VERSION | 2 +- .../diffs/components/diff_stats.vue | 52 ++++++--- .../gitlab_pages/components/deployments.vue | 35 +++--- .../glql/components/presenters/issuable.vue | 7 +- .../glql/components/presenters/table.vue | 3 +- app/assets/javascripts/glql/core/presenter.js | 4 +- .../groups_projects/components/tab_view.vue | 8 +- .../components/tabs_with_list.vue | 34 ++++-- .../sessions/new/signin_tabs_memoizer.js | 3 + .../queries/project_counts.query.graphql | 20 ++-- .../graphql/queries/projects.query.graphql | 1 + .../queries/user_projects.query.graphql | 2 + .../components/token_access_table.vue | 4 +- .../dashboard_layout.vue | 2 +- .../gridstack_wrapper.vue | 13 ++- .../rapid_diffs/diff_file_component.scss | 6 ++ .../diff_file_header_component.html.haml | 10 +- .../rapid_diffs/diff_file_header_component.rb | 9 ++ .../groups/observability_controller.rb | 47 ++++++++ .../google_cloud/databases_controller.rb | 2 +- app/helpers/icons_helper.rb | 2 +- app/models/group.rb | 8 ++ app/views/groups/observability/show.html.haml | 8 ++ .../observability_sass_features.yml | 8 ++ config/routes/group.rb | 2 + doc/administration/geo/_index.md | 4 +- .../geo/img/geo_architecture_v13_8.png | Bin 0 -> 49547 bytes .../img/geo_overview_v11_5.png | Bin doc/administration/raketasks/maintenance.md | 6 +- .../configure-dev-env-gdk-in-a-box.md | 2 +- .../configure-dev-env-gdk.md | 4 +- .../first_contribution/contribute-gdk.md | 7 ++ .../first_contribution/contribute-gitpod.md | 7 ++ .../first_contribution/contribute-web-ide.md | 7 ++ .../img/bot_ready_v16_6.png | Bin .../img/changes_tab_v15_11.png | Bin .../img/gdk_home_v15_11.png | Bin 0 -> 16636 bytes .../img/mr_button_v15_11.png | Bin .../img/new_merge_request_v15_11.png | Bin .../first_contribution/mr-review.md | 8 +- ...each_batch_users_table_bad_index_v13_7.png | Bin .../each_batch_users_table_filter_v13_7.png | Bin ...batch_users_table_filtered_index_v13_7.png | Bin ...ach_batch_users_table_good_index_v13_7.png | Bin ...ch_batch_users_table_iteration_1_v13_7.png | Bin ...ch_batch_users_table_iteration_2_v13_7.png | Bin ...ch_batch_users_table_iteration_3_v13_7.png | Bin ...ch_batch_users_table_iteration_4_v13_7.png | Bin ...ch_batch_users_table_iteration_5_v13_7.png | Bin .../img/offset_pagination_ui_v13_11.jpg | Bin .../img/project_issues_pagination_v13_11.jpg | Bin .../database/iterating_tables_in_batches.md | 18 ++-- .../database/pagination_guidelines.md | 4 +- doc/development/feature_flags/controls.md | 2 +- .../img/feature-flag-metrics_v15_8.png | Bin doc/development/geo.md | 2 +- .../img/geo_architecture_v13_8.png | Bin 0 -> 49547 bytes .../merge_request_concepts/_index.md | 4 +- .../img/merge_request_reports_v17_11.png | Bin .../img/merge_widget_v17_11.png | Bin .../end_to_end/beginners_guide/_index.md | 2 +- .../gl-devops-lifecycle-by-stage_v12_10.png | Bin doc/tutorials/reviews/_index.md | 2 +- .../img/comment_on_any_diff_line_v16_6.png | Bin 0 -> 12677 bytes locale/gitlab.pot | 21 ++++ .../diff_file_header_component_spec.rb | 4 +- .../diffs/components/diff_stats_spec.js | 15 ++- .../frontend/fixtures/static/signin_tabs.html | 7 ++ .../components/deployments_spec.js | 5 +- .../components/tab_view_spec.js | 19 ++-- .../components/tabs_with_list_spec.js | 29 +++-- .../sessions/new/signin_tabs_memoizer_spec.js | 22 ++++ spec/frontend/token_access/mock_data.js | 6 +- .../gridstack_wrapper_spec.js | 27 +++-- spec/models/group_spec.rb | 39 +++++++ .../groups/observability_controller_spec.rb | 101 ++++++++++++++++++ 78 files changed, 525 insertions(+), 146 deletions(-) delete mode 100644 .rubocop_todo/lint/duplicate_case_condition.yml create mode 100644 app/controllers/groups/observability_controller.rb create mode 100644 app/views/groups/observability/show.html.haml create mode 100644 config/feature_flags/experiment/observability_sass_features.yml create mode 100644 doc/administration/geo/img/geo_architecture_v13_8.png rename doc/administration/geo/{replication => }/img/geo_overview_v11_5.png (100%) rename doc/development/contributing/{ => first_contribution}/img/bot_ready_v16_6.png (100%) rename doc/development/contributing/{ => first_contribution}/img/changes_tab_v15_11.png (100%) create mode 100644 doc/development/contributing/first_contribution/img/gdk_home_v15_11.png rename doc/development/contributing/{ => first_contribution}/img/mr_button_v15_11.png (100%) rename doc/development/contributing/{ => first_contribution}/img/new_merge_request_v15_11.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_bad_index_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_filter_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_filtered_index_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_good_index_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_iteration_1_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_iteration_2_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_iteration_3_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_iteration_4_v13_7.png (100%) rename doc/development/{ => database}/img/each_batch_users_table_iteration_5_v13_7.png (100%) rename doc/development/{ => database}/img/offset_pagination_ui_v13_11.jpg (100%) rename doc/development/{ => database}/img/project_issues_pagination_v13_11.jpg (100%) rename doc/development/{ => feature_flags}/img/feature-flag-metrics_v15_8.png (100%) create mode 100644 doc/development/img/geo_architecture_v13_8.png rename doc/development/{ => merge_request_concepts}/img/merge_request_reports_v17_11.png (100%) rename doc/development/{ => merge_request_concepts}/img/merge_widget_v17_11.png (100%) rename doc/development/testing_guide/end_to_end/{ => beginners_guide}/img/gl-devops-lifecycle-by-stage_v12_10.png (100%) create mode 100644 doc/tutorials/reviews/img/comment_on_any_diff_line_v16_6.png create mode 100644 spec/requests/groups/observability_controller_spec.rb diff --git a/.rubocop_todo/lint/duplicate_branch.yml b/.rubocop_todo/lint/duplicate_branch.yml index 207b7bcb532..2402b6ae378 100644 --- a/.rubocop_todo/lint/duplicate_branch.yml +++ b/.rubocop_todo/lint/duplicate_branch.yml @@ -3,7 +3,6 @@ Lint/DuplicateBranch: Exclude: - 'app/controllers/concerns/issuable_collections.rb' - 'app/controllers/concerns/sorting_preference.rb' - - 'app/controllers/projects/google_cloud/databases_controller.rb' - 'app/helpers/icons_helper.rb' - 'app/helpers/labels_helper.rb' - 'app/models/application_setting_implementation.rb' diff --git a/.rubocop_todo/lint/duplicate_case_condition.yml b/.rubocop_todo/lint/duplicate_case_condition.yml deleted file mode 100644 index d7e1eac2e03..00000000000 --- a/.rubocop_todo/lint/duplicate_case_condition.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -Lint/DuplicateCaseCondition: - Exclude: - - 'app/helpers/icons_helper.rb' diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 5267e0d4a12..e1f61f291ab 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -3030e219d83d55b287a9b3934141a8d5d8d67d22 +b446ea3d1838519a0d8f09885d8e907addd7d780 diff --git a/app/assets/javascripts/diffs/components/diff_stats.vue b/app/assets/javascripts/diffs/components/diff_stats.vue index 0dfb998630d..376233c0533 100644 --- a/app/assets/javascripts/diffs/components/diff_stats.vue +++ b/app/assets/javascripts/diffs/components/diff_stats.vue @@ -1,11 +1,11 @@ @@ -63,21 +75,27 @@ export default {
- {{ diffsCount }} {{ filesText }} + + + + +
-
- + - {{ addedLines }} -
-
- - {{ removedLines }} +
+
+ + + {{ addedLines }} +
+
+ + {{ removedLines }} +
diff --git a/app/assets/javascripts/gitlab_pages/components/deployments.vue b/app/assets/javascripts/gitlab_pages/components/deployments.vue index 4609af0a565..08406f9560c 100644 --- a/app/assets/javascripts/gitlab_pages/components/deployments.vue +++ b/app/assets/javascripts/gitlab_pages/components/deployments.vue @@ -1,5 +1,5 @@ @@ -405,11 +418,11 @@ export default {
{{ tab.text }} {{ numberToMetricPrefix(tabCount(tab)) }}{{ tabCount(tab) }}
@@ -431,6 +444,7 @@ export default { @offset-page-change="onOffsetPageChange" @refetch="onRefetch" @query-complete="onQueryComplete" + @update-count="onUpdateCount" /> diff --git a/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js b/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js index 457bfb9ecc7..f80b54d202f 100644 --- a/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js +++ b/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js @@ -40,6 +40,9 @@ export default class SigninTabsMemoizer { const tab = document.querySelector(`${this.tabSelector} a[href="${anchorName}"]`); if (tab) { tab.click(); + const section = document.querySelector(anchorName); + section.querySelector('[autocomplete=current-password]')?.focus(); + section.querySelector('[autocomplete=username]')?.focus(); } else { const firstTab = document.querySelector(`${this.tabSelector} a`); if (firstTab) { diff --git a/app/assets/javascripts/projects/your_work/graphql/queries/project_counts.query.graphql b/app/assets/javascripts/projects/your_work/graphql/queries/project_counts.query.graphql index b3dbebcc9a8..1f1446a2a8c 100644 --- a/app/assets/javascripts/projects/your_work/graphql/queries/project_counts.query.graphql +++ b/app/assets/javascripts/projects/your_work/graphql/queries/project_counts.query.graphql @@ -1,20 +1,28 @@ -query getProjectCounts { +# Since GraphQL doesn't support string comparison in @skip(if:) +# we use the naming convention of skip${tabValue} in camelCase +query getProjectCounts( + $skipContributed: Boolean = false + $skipStarred: Boolean = false + $skipPersonal: Boolean = false + $skipMember: Boolean = false + $skipInactive: Boolean = false +) { currentUser { id - contributed: contributedProjects { + contributed: contributedProjects @skip(if: $skipContributed) { count } - starred: starredProjects { + starred: starredProjects @skip(if: $skipStarred) { count } } - personal: projects(personal: true) { + personal: projects(personal: true) @skip(if: $skipPersonal) { count } - member: projects(membership: true) { + member: projects(membership: true) @skip(if: $skipMember) { count } - inactive: projects(archived: ONLY, membership: true) { + inactive: projects(archived: ONLY, membership: true) @skip(if: $skipInactive) { count } } diff --git a/app/assets/javascripts/projects/your_work/graphql/queries/projects.query.graphql b/app/assets/javascripts/projects/your_work/graphql/queries/projects.query.graphql index 045ad2cf35e..e003879e76e 100644 --- a/app/assets/javascripts/projects/your_work/graphql/queries/projects.query.graphql +++ b/app/assets/javascripts/projects/your_work/graphql/queries/projects.query.graphql @@ -33,5 +33,6 @@ query getYourWorkProjects( pageInfo { ...PageInfo } + count } } diff --git a/app/assets/javascripts/projects/your_work/graphql/queries/user_projects.query.graphql b/app/assets/javascripts/projects/your_work/graphql/queries/user_projects.query.graphql index 8e4e7e16108..fd61b45c77e 100644 --- a/app/assets/javascripts/projects/your_work/graphql/queries/user_projects.query.graphql +++ b/app/assets/javascripts/projects/your_work/graphql/queries/user_projects.query.graphql @@ -31,6 +31,7 @@ query getYourWorkUserProjects( pageInfo { ...PageInfo } + count } starredProjects( first: $first @@ -48,6 +49,7 @@ query getYourWorkUserProjects( pageInfo { ...PageInfo } + count } } } diff --git a/app/assets/javascripts/token_access/components/token_access_table.vue b/app/assets/javascripts/token_access/components/token_access_table.vue index 5be7dd67640..c29da091aa5 100644 --- a/app/assets/javascripts/token_access/components/token_access_table.vue +++ b/app/assets/javascripts/token_access/components/token_access_table.vue @@ -8,7 +8,7 @@ import { GlSprintf, GlTooltipDirective, } from '@gitlab/ui'; -import { TYPENAME_GROUP } from '~/graphql_shared/constants'; +import { TYPENAME_CI_JOB_TOKEN_ACCESSIBLE_GROUP } from '~/graphql_shared/constants'; import ProjectAvatar from '~/vue_shared/components/project_avatar.vue'; import { s__, __ } from '~/locale'; import { JOB_TOKEN_POLICIES } from '../constants'; @@ -78,7 +78,7 @@ export default { methods: { itemType(item) { // eslint-disable-next-line no-underscore-dangle - return item.__typename === TYPENAME_GROUP ? 'group' : 'project'; + return item.__typename === TYPENAME_CI_JOB_TOKEN_ACCESSIBLE_GROUP ? 'group' : 'project'; }, getPolicies(policyKeys) { return policyKeys?.map((key) => JOB_TOKEN_POLICIES[key]); diff --git a/app/assets/javascripts/vue_shared/components/customizable_dashboard/dashboard_layout.vue b/app/assets/javascripts/vue_shared/components/customizable_dashboard/dashboard_layout.vue index 5f499af2512..bae3c19eea3 100644 --- a/app/assets/javascripts/vue_shared/components/customizable_dashboard/dashboard_layout.vue +++ b/app/assets/javascripts/vue_shared/components/customizable_dashboard/dashboard_layout.vue @@ -1,6 +1,6 @@