diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index a79bba24edb..fe2c766f76c 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -324,7 +324,6 @@ linters: - "ee/app/views/admin/geo/projects/_registry_never.html.haml" - "ee/app/views/admin/licenses/_upload_trial_license.html.haml" - "ee/app/views/admin/licenses/new.html.haml" - - "ee/app/views/admin/licenses/show.html.haml" - "ee/app/views/admin/monitoring/ee/_nav.html.haml" - "ee/app/views/admin/projects/_shared_runner_status.html.haml" - "ee/app/views/admin/users/_auditor_access_level_radio.html.haml" diff --git a/app/assets/javascripts/pipelines/pipeline_details_bundle.js b/app/assets/javascripts/pipelines/pipeline_details_bundle.js index e5ac7775476..ae67fe8b888 100644 --- a/app/assets/javascripts/pipelines/pipeline_details_bundle.js +++ b/app/assets/javascripts/pipelines/pipeline_details_bundle.js @@ -147,6 +147,9 @@ const createTestDetails = detailsEndpoint => { const createDagApp = () => { const el = document.querySelector('#js-pipeline-dag-vue'); + if (!el) { + return; + } const graphUrl = el.dataset?.pipelineDataPath; // eslint-disable-next-line no-new new Vue({ diff --git a/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml b/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml new file mode 100644 index 00000000000..a56c63353ad --- /dev/null +++ b/changelogs/unreleased/219022-fix-pipelines-apps-not-loading.yml @@ -0,0 +1,5 @@ +--- +title: Fix a bug where some Vue apps would be unable to load when DAG tab is disabled +merge_request: 32966 +author: +type: fixed diff --git a/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml b/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml new file mode 100644 index 00000000000..f577053d074 --- /dev/null +++ b/changelogs/unreleased/remove_scoped_approval_rules_feature_flag.yml @@ -0,0 +1,5 @@ +--- +title: Remove `scoped_approval_rules` feature flag +merge_request: 28864 +author: Lee Tickett +type: added diff --git a/config/locales/en.yml b/config/locales/en.yml index c95232ae540..ed0552ab452 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -272,4 +272,5 @@ en: long: "%B %d, %Y %H:%M" short: "%d %b %H:%M" timeago_tooltip: "%b %-d, %Y %-l:%M%P" + with_timezone: "%Y-%m-%d %H:%M:%S %z" pm: pm diff --git a/doc/administration/geo/replication/datatypes.md b/doc/administration/geo/replication/datatypes.md index b464c0177d3..93f0bd830f3 100644 --- a/doc/administration/geo/replication/datatypes.md +++ b/doc/administration/geo/replication/datatypes.md @@ -147,7 +147,9 @@ successfully, you must replicate their data using some other means. | [Conan Repository](../../../user/packages/conan_repository/index.md) | [No](https://gitlab.com/groups/gitlab-org/-/epics/2346) | No | | | [NuGet Repository](../../../user/packages/nuget_repository/index.md) | [No](https://gitlab.com/groups/gitlab-org/-/epics/2346) | No | | | [PyPi Repository](../../../user/packages/pypi_repository/index.md) | [No](https://gitlab.com/groups/gitlab-org/-/epics/2554) | No | | -| [External merge request diffs](../../merge_request_diffs.md) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/33817) | No | | +| [External merge request diffs](../../merge_request_diffs.md) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/33817) | No | | +| [Terraform State](../../terraform_state.md) | [No](https://gitlab.com/groups/gitlab-org/-/epics/3112)(*3*) | No | | +| [Vulnerability Export](../../../user/application_security/security_dashboard/#export-vulnerabilities-1) | [No](https://gitlab.com/groups/gitlab-org/-/epics/3111)(*3*) | No | | | | Content in object storage | **Yes** | No | | - (*1*): The integrity can be verified manually using @@ -155,3 +157,5 @@ successfully, you must replicate their data using some other means. the output between them. - (*2*): GitLab versions 11.11.x and 12.0.x are affected by [a bug that prevents any new LFS objects from replicating](https://gitlab.com/gitlab-org/gitlab/-/issues/32696). +- (*3*): If you are using Object Storage, the replication can be performed by the + Object Storage provider if supported. Please see [Geo with Object Storage](object_storage.md) diff --git a/doc/development/i18n/externalization.md b/doc/development/i18n/externalization.md index a81e656fc27..7848c8b11d9 100644 --- a/doc/development/i18n/externalization.md +++ b/doc/development/i18n/externalization.md @@ -260,8 +260,22 @@ n_("%{project_name}", "%d projects selected", count) % { project_name: 'GitLab' ### Namespaces -Sometimes you need to add some context to the text that you want to translate -(if the word occurs in a sentence and/or the word is ambiguous). +A namespace is a way to group translations that belong together. They provide context to our translators by adding a prefix followed by the bar symbol (`|`). For example: + +```ruby +_('Namespace|Translated string') +``` + +A namespace provide the following benefits: + +- It addresses ambiguity in words, for example: `Promotions|Promote` vs `Epic|Promote` +- It allows translators to focus on translating externalized strings that belong to the same product area rather than arbitrary ones. +- It gives a linguistic context to help the translator. + +In some cases, namespaces don't make sense, for example, +for ubiquitous UI words and phrases such as "Cancel" or phrases like "Save changes" a namespace could +be counterproductive. + Namespaces should be PascalCase. - In Ruby/HAML: diff --git a/doc/development/migration_style_guide.md b/doc/development/migration_style_guide.md index 46fc94a4b2d..32ea461f4e9 100644 --- a/doc/development/migration_style_guide.md +++ b/doc/development/migration_style_guide.md @@ -559,6 +559,11 @@ Before PostgreSQL 11, adding a column with a default was problematic as it would have caused a full table rewrite. The corresponding helper `add_column_with_default` has been deprecated and will be removed in a later release. +NOTE: **Note:** +If a backport adding a column with a default value is needed for %12.9 or earlier versions, +it should use `add_column_with_default` helper. If a [large table](https://gitlab.com/gitlab-org/gitlab/-/blob/master/rubocop/migration_helpers.rb#L12) +is involved, backporting to %12.9 is contraindicated. + ## Changing the column default One might think that changing a default column with `change_column_default` is an diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md index 306bfead0e8..dda1bc35159 100644 --- a/doc/user/project/issues/design_management.md +++ b/doc/user/project/issues/design_management.md @@ -3,10 +3,6 @@ > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/660) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.2. > - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212566) to GitLab Core in 13.0. -CAUTION: **Warning:** -This an **alpha** feature and is subject to change at any time without -prior notice. - ## Overview Design Management allows you to upload design assets (wireframes, mockups, etc.) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 75b4bef695c..cbc836cd21e 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -1151,6 +1151,9 @@ msgstr "" msgid "Active Users:" msgstr "" +msgid "Active users" +msgstr "" + msgid "Activity" msgstr "" @@ -2690,6 +2693,9 @@ msgstr "" msgid "Are you sure you want to remove the attachment?" msgstr "" +msgid "Are you sure you want to remove the license?" +msgstr "" + msgid "Are you sure you want to remove this identity?" msgstr "" @@ -3561,6 +3567,9 @@ msgstr "" msgid "Business metrics (Custom)" msgstr "" +msgid "Buy License" +msgstr "" + msgid "Buy more Pipeline minutes" msgstr "" @@ -6631,6 +6640,9 @@ msgstr "" msgid "CustomCycleAnalytics|Update stage" msgstr "" +msgid "Customer Portal" +msgstr "" + msgid "Customize colors" msgstr "" @@ -8973,6 +8985,9 @@ msgstr "" msgid "Expired %{expiredOn}" msgstr "" +msgid "Expired:" +msgstr "" + msgid "Expires" msgstr "" @@ -8982,6 +8997,9 @@ msgstr "" msgid "Expires in %{expires_at}" msgstr "" +msgid "Expires on" +msgstr "" + msgid "Expires:" msgstr "" @@ -11467,6 +11485,9 @@ msgstr "" msgid "If enabled, and if object storage is enabled, GitLab will handle Object Storage replication using Geo" msgstr "" +msgid "If there is no previous license or if the previous license has expired, some GitLab functionality will be blocked until a new, valid license is uploaded." +msgstr "" + msgid "If this was a mistake you can %{leave_link_start}leave the %{source_type}%{link_end}." msgstr "" @@ -11491,6 +11512,9 @@ msgstr "" msgid "If you recently signed in and recognize the IP address, you may disregard this email." msgstr "" +msgid "If you remove this license, GitLab will fall back on the previous license, if any." +msgstr "" + msgid "If your HTTP repository is not publicly accessible, add your credentials." msgstr "" @@ -12689,6 +12713,9 @@ msgstr "" msgid "License Compliance" msgstr "" +msgid "License History" +msgstr "" + msgid "License-Check" msgstr "" @@ -15761,6 +15788,12 @@ msgstr "" msgid "Plain diff" msgstr "" +msgid "Plan" +msgstr "" + +msgid "Plan:" +msgstr "" + msgid "PlantUML" msgstr "" @@ -17883,6 +17916,9 @@ msgstr "" msgid "Remove group" msgstr "" +msgid "Remove license" +msgstr "" + msgid "Remove limit" msgstr "" @@ -20580,6 +20616,9 @@ msgstr "" msgid "Started asynchronous removal of all repository check states." msgstr "" +msgid "Started:" +msgstr "" + msgid "Starting..." msgstr "" @@ -20709,6 +20748,9 @@ msgstr "" msgid "Stay updated about the performance and health of your environment by configuring Prometheus to monitor your deployments." msgstr "" +msgid "Still, we recommend keeping a backup saved somewhere. Otherwise, if you ever need it and have lost it, you will need to request GitLab Inc. to send it to you again." +msgstr "" + msgid "Stop Terminal" msgstr "" @@ -23476,6 +23518,9 @@ msgstr "" msgid "Upload New File" msgstr "" +msgid "Upload New License" +msgstr "" + msgid "Upload a certificate for your domain with all intermediates" msgstr "" @@ -23494,6 +23539,9 @@ msgstr "" msgid "Uploaded on" msgstr "" +msgid "Uploaded:" +msgstr "" + msgid "Uploading changes to terminal" msgstr "" @@ -23989,6 +24037,9 @@ msgstr "" msgid "Using required encryption strategy when encrypted field is missing!" msgstr "" +msgid "Valid from" +msgstr "" + msgid "Validate" msgstr "" @@ -25039,7 +25090,7 @@ msgstr "" msgid "You don’t have access to Value Stream Analytics for this group" msgstr "" -msgid "You have a license(s) that activates at a future date. Please see the License History table below." +msgid "You have a license that activates at a future date. Please see the License History table below." msgstr "" msgid "You have been granted %{access_level} access to the %{source_link} %{source_type}." @@ -25273,6 +25324,9 @@ msgstr "" msgid "Your Groups" msgstr "" +msgid "Your License" +msgstr "" + msgid "Your Personal Access Tokens will expire in %{days_to_expire} days or less" msgstr "" @@ -25375,6 +25429,9 @@ msgstr "" msgid "Your license is valid from" msgstr "" +msgid "Your license will be included in your GitLab backup and will survive upgrades, so in normal usage you should never need to re-upload your .gitlab-license file." +msgstr "" + msgid "Your message here" msgstr "" diff --git a/spec/features/groups/analytics/cycle_analytics_spec.rb b/spec/features/groups/analytics/cycle_analytics_spec.rb deleted file mode 100644 index 54be861dfb4..00000000000 --- a/spec/features/groups/analytics/cycle_analytics_spec.rb +++ /dev/null @@ -1,60 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe 'Group value stream analytics' do - let_it_be(:group) { create(:group) } - let_it_be(:user) { create(:user) } - - RSpec::Matchers.define :have_pushed_frontend_feature_flags do |expected| - def to_js(key, value) - "\"#{key}\":#{value}" - end - - match do |actual| - expected.all? do |feature_flag_name, enabled| - page.html.include?(to_js(feature_flag_name, enabled)) - end - end - - failure_message do |actual| - missing = expected.select do |feature_flag_name, enabled| - !page.html.include?(to_js(feature_flag_name, enabled)) - end - - formatted_missing_flags = missing.map { |feature_flag_name, enabled| to_js(feature_flag_name, enabled) }.join("\n") - - "The following feature flag(s) cannot be found in the frontend HTML source: #{formatted_missing_flags}" - end - end - - before do - stub_licensed_features(cycle_analytics_for_groups: true) - - group.add_owner(user) - - sign_in(user) - end - - it 'pushes frontend feature flags' do - visit group_analytics_cycle_analytics_path(group) - - expect(page).to have_pushed_frontend_feature_flags( - cycleAnalyticsScatterplotEnabled: true, - cycleAnalyticsScatterplotMedianEnabled: true, - valueStreamAnalyticsPathNavigation: true - ) - end - - context 'when `value_stream_analytics_path_navigation` is disabled for a group' do - before do - stub_feature_flags(value_stream_analytics_path_navigation: false, thing: group) - end - - it 'pushes disabled feature flag to the frontend' do - visit group_analytics_cycle_analytics_path(group) - - expect(page).to have_pushed_frontend_feature_flags(valueStreamAnalyticsPathNavigation: false) - end - end -end