diff --git a/app/assets/javascripts/issuable_suggestions/components/app.vue b/app/assets/javascripts/issues/suggestions/components/app.vue
similarity index 100%
rename from app/assets/javascripts/issuable_suggestions/components/app.vue
rename to app/assets/javascripts/issues/suggestions/components/app.vue
diff --git a/app/assets/javascripts/issuable_suggestions/components/item.vue b/app/assets/javascripts/issues/suggestions/components/item.vue
similarity index 100%
rename from app/assets/javascripts/issuable_suggestions/components/item.vue
rename to app/assets/javascripts/issues/suggestions/components/item.vue
diff --git a/app/assets/javascripts/issuable_suggestions/index.js b/app/assets/javascripts/issues/suggestions/index.js
similarity index 100%
rename from app/assets/javascripts/issuable_suggestions/index.js
rename to app/assets/javascripts/issues/suggestions/index.js
diff --git a/app/assets/javascripts/issuable_suggestions/queries/issues.query.graphql b/app/assets/javascripts/issues/suggestions/queries/issues.query.graphql
similarity index 100%
rename from app/assets/javascripts/issuable_suggestions/queries/issues.query.graphql
rename to app/assets/javascripts/issues/suggestions/queries/issues.query.graphql
diff --git a/app/assets/javascripts/issuable_type_selector/components/info_popover.vue b/app/assets/javascripts/issues/type_selector/components/info_popover.vue
similarity index 100%
rename from app/assets/javascripts/issuable_type_selector/components/info_popover.vue
rename to app/assets/javascripts/issues/type_selector/components/info_popover.vue
diff --git a/app/assets/javascripts/issuable_type_selector/index.js b/app/assets/javascripts/issues/type_selector/index.js
similarity index 100%
rename from app/assets/javascripts/issuable_type_selector/index.js
rename to app/assets/javascripts/issues/type_selector/index.js
diff --git a/app/assets/javascripts/pages/projects/issues/form.js b/app/assets/javascripts/pages/projects/issues/form.js
index 07d6943e2875..c17c127d560a 100644
--- a/app/assets/javascripts/pages/projects/issues/form.js
+++ b/app/assets/javascripts/pages/projects/issues/form.js
@@ -4,8 +4,8 @@ import $ from 'jquery';
import IssuableForm from 'ee_else_ce/issuable_form';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import GLForm from '~/gl_form';
-import initSuggestions from '~/issuable_suggestions';
-import initIssuableTypeSelector from '~/issuable_type_selector';
+import initSuggestions from '~/issues/suggestions';
+import initIssuableTypeSelector from '~/issues/type_selector';
import LabelsSelect from '~/labels_select';
import MilestoneSelect from '~/milestones/milestone_select';
import IssuableTemplateSelectors from '~/templates/issuable_template_selectors';
diff --git a/app/assets/javascripts/vue_shared/components/header_ci_component.vue b/app/assets/javascripts/vue_shared/components/header_ci_component.vue
index 6ace0bd88f81..9bff469b6701 100644
--- a/app/assets/javascripts/vue_shared/components/header_ci_component.vue
+++ b/app/assets/javascripts/vue_shared/components/header_ci_component.vue
@@ -5,6 +5,7 @@ import {
GlSafeHtmlDirective,
GlAvatarLink,
GlAvatarLabeled,
+ GlTooltip,
} from '@gitlab/ui';
import { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';
import { glEmojiTag } from '../../emoji';
@@ -26,6 +27,7 @@ export default {
GlButton,
GlAvatarLink,
GlAvatarLabeled,
+ GlTooltip,
},
directives: {
GlTooltip: GlTooltipDirective,
diff --git a/app/assets/javascripts/vue_shared/components/storage_counter/usage_graph.stories.js b/app/assets/javascripts/vue_shared/components/storage_counter/usage_graph.stories.js
deleted file mode 100644
index 00aa5519ec61..000000000000
--- a/app/assets/javascripts/vue_shared/components/storage_counter/usage_graph.stories.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/* eslint-disable @gitlab/require-i18n-strings */
-import '@gitlab/ui/dist/utility_classes.css';
-import UsageGraph from './usage_graph.vue';
-
-export default {
- component: UsageGraph,
- title: 'vue_shared/components/storage_counter/usage_graph',
-};
-
-const Template = (args, { argTypes }) => ({
- components: { UsageGraph },
- props: Object.keys(argTypes),
- template: '
#{_('Access denied! Please verify you can add deploy keys to this repository.')}
") diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml index dff1b5e3d04a..be4beea78e1c 100644 --- a/app/views/layouts/_page.html.haml +++ b/app/views/layouts/_page.html.haml @@ -3,6 +3,7 @@ = render "layouts/nav/sidebar/#{nav}" .content-wrapper.content-wrapper-margin{ class: "#{@content_wrapper_class}" } .mobile-overlay + = render_if_exists 'layouts/header/verification_reminder' = yield :group_invite_members_banner .alert-wrapper.gl-force-block-formatting-context = render 'shared/outdated_browser' diff --git a/app/views/shared/doorkeeper/applications/_form.html.haml b/app/views/shared/doorkeeper/applications/_form.html.haml index 180c658dbdcc..adfd7ea98b76 100644 --- a/app/views/shared/doorkeeper/applications/_form.html.haml +++ b/app/views/shared/doorkeeper/applications/_form.html.haml @@ -16,13 +16,14 @@ = f.check_box :confidential, class: 'form-check-input' = f.label :confidential, class: 'label-bold form-check-label' %span.form-text.text-muted - = _('The application will be used where the client secret can be kept confidential. Native mobile apps and Single Page Apps are considered non-confidential.') + = _('Enable only for confidential applications exclusively used by a trusted backend server that can securely store the client secret. Do not enable for native-mobile, single-page, or other JavaScript applications because they cannot keep the client secret confidential.') .form-group.form-check = f.check_box :expire_access_tokens, class: 'form-check-input' = f.label :expire_access_tokens, class: 'label-bold form-check-label' %span.form-text.text-muted - = _('Access tokens expire after 2 hours. A refresh token may be used at any time to generate a new access token. Non-expiring access tokens are deprecated. Clear this setting to enable backward compatibility.') + = _('Enable access tokens to expire after 2 hours. If disabled, tokens do not expire.') + = link_to _('Learn more.'), help_page_path('integration/oauth_provider.md', anchor: 'expiring-access-tokens'), target: '_blank', rel: 'noopener noreferrer' .form-group = f.label :scopes, class: 'label-bold' diff --git a/app/views/shared/doorkeeper/applications/_index.html.haml b/app/views/shared/doorkeeper/applications/_index.html.haml index 8ccb4bcdbe05..0359c28794c0 100644 --- a/app/views/shared/doorkeeper/applications/_index.html.haml +++ b/app/views/shared/doorkeeper/applications/_index.html.haml @@ -9,7 +9,7 @@ - if oauth_authorized_applications_enabled = _("Manage applications that can use GitLab as an OAuth provider, and applications that you've authorized to use your account.") - else - = _("Manage applications that can use GitLab as an OAuth provider.") + = _("Manage applications that use GitLab as an OAuth provider.") - else = _("Manage applications that you've authorized to use your account.") .col-lg-8 diff --git a/data/deprecations/14-5-deprecation-vsa-announce-deprecation-of-vsa-filtering-calculation.yml b/data/deprecations/14-5-deprecation-vsa-announce-deprecation-of-vsa-filtering-calculation.yml index 2961fab74876..922c58be67e7 100644 --- a/data/deprecations/14-5-deprecation-vsa-announce-deprecation-of-vsa-filtering-calculation.yml +++ b/data/deprecations/14-5-deprecation-vsa-announce-deprecation-of-vsa-filtering-calculation.yml @@ -3,7 +3,7 @@ announcement_date: "2021-11-22" # The date of the milestone release when this feature was first announced as deprecated. This should almost always be the 22nd of a month (YYYY-MM-22), unless you did an out of band blog post. removal_milestone: "15.0" # The milestone when this feature is planned to be removed body: | # Do not modify this line, instead modify the lines below. - We are changing how the date filter works in Value Stream Analytics. Instead of filtering by the time that the issue or merge request was created, the date filter will filter by the end event time of the given stage. This will result in completely different figures after this change has rolled out. + We are changing how the date filter works in Value Stream Analytics. Instead of filtering by the time that the issue or merge request was created, the date filter will filter by the end event time of the given stage. This will result in completely different figures after this change has rolled out. If you monitor Value Stream Analytics metrics and rely on the date filter, to avoid losing data, you must save the data prior to this change. stage: manage # (optional - may be required in the future) String value of the stage that the feature was created in. e.g., Growth diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index b4f69b379eeb..88f08eb48be9 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -17119,6 +17119,7 @@ Name of the feature that the callout is for. | `TWO_FACTOR_AUTH_RECOVERY_SETTINGS_CHECK` | Callout feature name for two_factor_auth_recovery_settings_check. | | `ULTIMATE_TRIAL` | Callout feature name for ultimate_trial. | | `UNFINISHED_TAG_CLEANUP_CALLOUT` | Callout feature name for unfinished_tag_cleanup_callout. | +| `VERIFICATION_REMINDER` | Callout feature name for verification_reminder. | | `WEB_IDE_ALERT_DISMISSED` | Callout feature name for web_ide_alert_dismissed. | | `WEB_IDE_CI_ENVIRONMENTS_GUIDANCE` | Callout feature name for web_ide_ci_environments_guidance. | diff --git a/doc/user/application_security/policies/index.md b/doc/user/application_security/policies/index.md index 18f8fd167e3e..10bd04cbc3f9 100644 --- a/doc/user/application_security/policies/index.md +++ b/doc/user/application_security/policies/index.md @@ -243,9 +243,9 @@ Only project Owners have the [permissions](../../permissions.md#project-members- to select Security Policy Project. Once your policy is complete, save it by selecting **Create merge request** -at the bottom of the editor. You will be redirected to the merge request on the project's +at the bottom of the editor. You are redirected to the merge request on the project's configured security policy project. If one does not link to your project, a security -policy project will be automatically created. Existing policies can also be +policy project is automatically created. Existing policies can also be removed from the editor interface by selecting **Delete policy** at the bottom of the editor. @@ -293,7 +293,7 @@ This rule enforces the defined actions and schedules a scan on the provided date | `type` | `string` | `schedule` | The rule's type. | | `branches` | `array` of `string` | `*` or the branch's name | The branch the given policy applies to (supports wildcard). | | `cadence` | `string` | CRON expression (for example, `0 0 * * *`) | A whitespace-separated string containing five fields that represents the scheduled time. | -| `clusters` | `object` | | The cluster where the given policy will enforce running selected scans (only for `container_scanning`/`cluster_image_scanning` scans). The key of the object is the name of the Kubernetes cluster configured for your project in GitLab. In the optionally provided value of the object, you can precisely select Kubernetes resources that will be scanned. | +| `clusters` | `object` | | The cluster where the given policy enforces running selected scans (only for `container_scanning`/`cluster_image_scanning` scans). The key of the object is the name of the Kubernetes cluster configured for your project in GitLab. In the optionally provided value of the object, you can precisely select Kubernetes resources that are scanned. | #### `cluster` schema @@ -301,10 +301,10 @@ Use this schema to define `clusters` objects in the [`schedule` rule type](#sche | Field | Type | Possible values | Description | |--------------|---------------------|--------------------------|-------------| -| `containers` | `array` of `string` | | The container name that will be scanned (only the first value is currently supported). | -| `resources` | `array` of `string` | | The resource name that will be scanned (only the first value is currently supported). | -| `namespaces` | `array` of `string` | | The namespace that will be scanned (only the first value is currently supported). | -| `kinds` | `array` of `string` | `deployment`/`daemonset` | The resource kind that should be scanned (only the first value is currently supported). | +| `containers` | `array` of `string` | | The container name to be scanned (only the first value is currently supported). | +| `resources` | `array` of `string` | | The resource name to be scanned (only the first value is currently supported). | +| `namespaces` | `array` of `string` | | The namespace to be scanned (only the first value is currently supported). | +| `kinds` | `array` of `string` | `deployment`/`daemonset` | The resource kind to be scanned (only the first value is currently supported). | ### `scan` action type @@ -333,8 +333,8 @@ Note the following: - A secret detection scan runs in `normal` mode when executed as part of a pipeline, and in [`historic`](../secret_detection/index.md#full-history-secret-detection) mode when executed as part of a scheduled scan. -- A container scanning and cluster image scanning scans configured for the `pipeline` rule type will ignore the cluster defined in the `clusters` object. - They will use predefined CI/CD variables defined for your project. Cluster selection with the `clusters` object is supported for the `schedule` rule type. +- A container scanning and cluster image scanning scans configured for the `pipeline` rule type ignores the cluster defined in the `clusters` object. + They use predefined CI/CD variables defined for your project. Cluster selection with the `clusters` object is supported for the `schedule` rule type. Cluster with name provided in `clusters` object must be created and configured for the project. To be able to successfully perform the `container_scanning`/`cluster_image_scanning` scans for the cluster you must follow instructions for the [Cluster Image Scanning feature](../cluster_image_scanning/index.md#prerequisites). - The SAST scan uses the default template and runs in a [child pipeline](../../../ci/pipelines/parent_child_pipelines.md). diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake index e83c4cbdb399..79bd3329e202 100644 --- a/lib/tasks/gitlab/db.rake +++ b/lib/tasks/gitlab/db.rake @@ -49,7 +49,7 @@ namespace :gitlab do # Drop all extra schema objects GitLab owns Gitlab::Database::EXTRA_SCHEMAS.each do |schema| - connection.execute("DROP SCHEMA IF EXISTS #{connection.quote_table_name(schema)}") + connection.execute("DROP SCHEMA IF EXISTS #{connection.quote_table_name(schema)} CASCADE") end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index b6f92514a89f..9c970d48c3e9 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -1736,9 +1736,6 @@ msgstr "" msgid "Access denied for your LDAP account." msgstr "" -msgid "Access denied! Please verify you can add deploy keys to this repository." -msgstr "" - msgid "Access denied: %{error}" msgstr "" @@ -12941,6 +12938,9 @@ msgstr "" msgid "Enable access to the performance bar for non-administrators in a given group." msgstr "" +msgid "Enable access tokens to expire after 2 hours. If disabled, tokens do not expire." +msgstr "" + msgid "Enable admin mode" msgstr "" @@ -13013,6 +13013,9 @@ msgstr "" msgid "Enable multipart emails" msgstr "" +msgid "Enable only for confidential applications exclusively used by a trusted backend server that can securely store the client secret. Do not enable for native-mobile, single-page, or other JavaScript applications because they cannot keep the client secret confidential." +msgstr "" + msgid "Enable or disable the Pseudonymizer data collection." msgstr "" @@ -21259,7 +21262,7 @@ msgstr "" msgid "Manage applications that can use GitLab as an OAuth provider, and applications that you've authorized to use your account." msgstr "" -msgid "Manage applications that can use GitLab as an OAuth provider." +msgid "Manage applications that use GitLab as an OAuth provider." msgstr "" msgid "Manage applications that you've authorized to use your account." @@ -37553,9 +37556,6 @@ msgstr "" msgid "UsageQuota|Increase storage temporarily" msgstr "" -msgid "UsageQuota|LFS Objects" -msgstr "" - msgid "UsageQuota|LFS storage" msgstr "" @@ -37586,9 +37586,6 @@ msgstr "" msgid "UsageQuota|Purchased storage available" msgstr "" -msgid "UsageQuota|Repositories" -msgstr "" - msgid "UsageQuota|Repository" msgstr "" @@ -37667,9 +37664,6 @@ msgstr "" msgid "UsageQuota|Wiki content." msgstr "" -msgid "UsageQuota|Wikis" -msgstr "" - msgid "UsageQuota|You have consumed all of your additional storage, please purchase more to unlock your projects over the free %{actualRepositorySizeLimit} limit." msgstr "" @@ -38390,6 +38384,18 @@ msgstr "" msgid "Verification status" msgstr "" +msgid "VerificationReminder|Pipeline failing? To keep GitLab spam and abuse free we ask that you verify your identity with a valid payment method." +msgstr "" + +msgid "VerificationReminder|Until then, free pipeline minutes on shared runners are unavailable. %{validateLinkStart}Validate your account%{validateLinkEnd} or %{docsLinkStart}use your own runners%{docsLinkEnd}." +msgstr "" + +msgid "VerificationReminder|Your account has been validated." +msgstr "" + +msgid "VerificationReminder|You’ll now be able to take advantage of free pipeline minutes on shared runners." +msgstr "" + msgid "Verified" msgstr "" diff --git a/package.json b/package.json index 648847af81e3..8829e164bb0f 100644 --- a/package.json +++ b/package.json @@ -55,9 +55,9 @@ "@babel/preset-env": "^7.10.1", "@gitlab/at.js": "1.5.7", "@gitlab/favicon-overlay": "2.0.0", - "@gitlab/svgs": "1.221.0", + "@gitlab/svgs": "1.223.0", "@gitlab/tributejs": "1.0.0", - "@gitlab/ui": "32.40.0", + "@gitlab/ui": "32.41.0", "@gitlab/visual-review-tools": "1.6.1", "@rails/actioncable": "6.1.4-1", "@rails/ujs": "6.1.4-1", diff --git a/spec/frontend/issuable_suggestions/components/app_spec.js b/spec/frontend/issues/suggestions/components/app_spec.js similarity index 94% rename from spec/frontend/issuable_suggestions/components/app_spec.js rename to spec/frontend/issues/suggestions/components/app_spec.js index fb8ef00567cb..e47a1a6da82e 100644 --- a/spec/frontend/issuable_suggestions/components/app_spec.js +++ b/spec/frontend/issues/suggestions/components/app_spec.js @@ -1,6 +1,6 @@ import { shallowMount } from '@vue/test-utils'; -import App from '~/issuable_suggestions/components/app.vue'; -import Suggestion from '~/issuable_suggestions/components/item.vue'; +import App from '~/issues/suggestions/components/app.vue'; +import Suggestion from '~/issues/suggestions/components/item.vue'; describe('Issuable suggestions app component', () => { let wrapper; diff --git a/spec/frontend/issuable_suggestions/components/item_spec.js b/spec/frontend/issues/suggestions/components/item_spec.js similarity index 98% rename from spec/frontend/issuable_suggestions/components/item_spec.js rename to spec/frontend/issues/suggestions/components/item_spec.js index 45f96103e3ec..a41ba7a38c2c 100644 --- a/spec/frontend/issuable_suggestions/components/item_spec.js +++ b/spec/frontend/issues/suggestions/components/item_spec.js @@ -1,7 +1,7 @@ import { GlTooltip, GlLink, GlIcon } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; import { TEST_HOST } from 'helpers/test_constants'; -import Suggestion from '~/issuable_suggestions/components/item.vue'; +import Suggestion from '~/issues/suggestions/components/item.vue'; import UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue'; import mockData from '../mock_data'; diff --git a/spec/frontend/issuable_suggestions/mock_data.js b/spec/frontend/issues/suggestions/mock_data.js similarity index 100% rename from spec/frontend/issuable_suggestions/mock_data.js rename to spec/frontend/issues/suggestions/mock_data.js diff --git a/spec/frontend/issuable_type_selector/components/__snapshots__/info_popover_spec.js.snap b/spec/frontend/issues/type_selector/components/__snapshots__/info_popover_spec.js.snap similarity index 100% rename from spec/frontend/issuable_type_selector/components/__snapshots__/info_popover_spec.js.snap rename to spec/frontend/issues/type_selector/components/__snapshots__/info_popover_spec.js.snap diff --git a/spec/frontend/issuable_type_selector/components/info_popover_spec.js b/spec/frontend/issues/type_selector/components/info_popover_spec.js similarity index 81% rename from spec/frontend/issuable_type_selector/components/info_popover_spec.js rename to spec/frontend/issues/type_selector/components/info_popover_spec.js index 975977ffeb3d..b4844114018e 100644 --- a/spec/frontend/issuable_type_selector/components/info_popover_spec.js +++ b/spec/frontend/issues/type_selector/components/info_popover_spec.js @@ -1,5 +1,5 @@ import { shallowMount } from '@vue/test-utils'; -import InfoPopover from '~/issuable_type_selector/components/info_popover.vue'; +import InfoPopover from '~/issues/type_selector/components/info_popover.vue'; describe('Issuable type info popover', () => { let wrapper; diff --git a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap index 9f5b772a5c7f..a72528ae36b3 100644 --- a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap +++ b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap @@ -152,7 +152,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = aria-label="Search" class="gl-form-input gl-search-box-by-type-input form-control" placeholder="Search" - type="text" + type="search" />