diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 67dfeebaf7d..634c0a2e55c 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -44,7 +44,6 @@ Graphql/Descriptions: # WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/267606 FactoryBot/InlineAssociation: Exclude: - - 'ee/spec/factories/geo/event_log.rb' - 'ee/spec/factories/merge_request_blocks.rb' - 'ee/spec/factories/vulnerabilities/feedback.rb' - 'spec/factories/atlassian_identities.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 10eeb3d68c6..2b795e2c604 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -d1f4340a1123d2436c7544d6ba64635c4c8f6104 +58bf16b78b3c99757a2f283a5befe57a2cb7f009 diff --git a/app/assets/javascripts/clusters/components/fluentd_output_settings.vue b/app/assets/javascripts/clusters/components/fluentd_output_settings.vue index 369cb2fa0f3..aaad0009ef3 100644 --- a/app/assets/javascripts/clusters/components/fluentd_output_settings.vue +++ b/app/assets/javascripts/clusters/components/fluentd_output_settings.vue @@ -54,15 +54,17 @@ export default { required: false, }, }, - data: () => ({ - currentServerSideSettings: { - host: null, - port: null, - protocol: null, - wafLogEnabled: null, - ciliumLogEnabled: null, - }, - }), + data() { + return { + currentServerSideSettings: { + host: null, + port: null, + protocol: null, + wafLogEnabled: null, + ciliumLogEnabled: null, + }, + }; + }, computed: { isSaving() { return [UPDATING].includes(this.status); diff --git a/app/assets/javascripts/clusters/components/ingress_modsecurity_settings.vue b/app/assets/javascripts/clusters/components/ingress_modsecurity_settings.vue index 26767c32275..277d2c33b73 100644 --- a/app/assets/javascripts/clusters/components/ingress_modsecurity_settings.vue +++ b/app/assets/javascripts/clusters/components/ingress_modsecurity_settings.vue @@ -53,11 +53,13 @@ export default { }), }, }, - data: () => ({ - modSecurityLogo, - initialValue: null, - initialMode: null, - }), + data() { + return { + modSecurityLogo, + initialValue: null, + initialMode: null, + }; + }, computed: { modSecurityEnabled: { get() { diff --git a/app/assets/javascripts/notes/components/note_actions.vue b/app/assets/javascripts/notes/components/note_actions.vue index 907a4316a93..e1f3c964ed8 100644 --- a/app/assets/javascripts/notes/components/note_actions.vue +++ b/app/assets/javascripts/notes/components/note_actions.vue @@ -259,19 +259,28 @@ export default { class="line-resolve-btn note-action-button" @click="onResolve" /> - - - - - + + + + + + + + + + +import ForkForm from './fork_form.vue'; + +export default { + components: { + ForkForm, + }, + props: { + forkIllustration: { + type: String, + required: true, + }, + endpoint: { + type: String, + required: true, + }, + projectFullPath: { + type: String, + required: true, + }, + projectId: { + type: String, + required: true, + }, + projectName: { + type: String, + required: true, + }, + projectPath: { + type: String, + required: true, + }, + projectDescription: { + type: String, + required: true, + }, + projectVisibility: { + type: String, + required: true, + }, + }, +}; + + + + + + + {{ s__('ForkProject|Fork project') }} + + {{ s__('ForkProject|A fork is a copy of a project.') }} + + {{ + s__( + 'ForkProject|Forking a repository allows you to make changes without affecting the original project.', + ) + }} + + + + + + + diff --git a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue index fd35c16ab63..7112b23775d 100644 --- a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue +++ b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue @@ -45,23 +45,23 @@ export default { GlFormRadioGroup, GlFormSelect, }, + inject: { + newGroupPath: { + default: '', + }, + visibilityHelpPath: { + default: '', + }, + }, props: { endpoint: { type: String, required: true, }, - newGroupPath: { - type: String, - required: true, - }, projectFullPath: { type: String, required: true, }, - visibilityHelpPath: { - type: String, - required: true, - }, projectId: { type: String, required: true, diff --git a/app/assets/javascripts/pages/projects/forks/new/index.js b/app/assets/javascripts/pages/projects/forks/new/index.js index 420639eefb7..372967c8a1e 100644 --- a/app/assets/javascripts/pages/projects/forks/new/index.js +++ b/app/assets/javascripts/pages/projects/forks/new/index.js @@ -1,11 +1,12 @@ import Vue from 'vue'; -import ForkForm from './components/fork_form.vue'; +import App from './components/app.vue'; import ForkGroupsList from './components/fork_groups_list.vue'; const mountElement = document.getElementById('fork-groups-mount-element'); if (gon.features.forkProjectForm) { const { + forkIllustration, endpoint, newGroupPath, projectFullPath, @@ -20,9 +21,14 @@ if (gon.features.forkProjectForm) { // eslint-disable-next-line no-new new Vue({ el: mountElement, + provide: { + newGroupPath, + visibilityHelpPath, + }, render(h) { - return h(ForkForm, { + return h(App, { props: { + forkIllustration, endpoint, newGroupPath, projectFullPath, diff --git a/app/assets/javascripts/releases/components/app_edit_new.vue b/app/assets/javascripts/releases/components/app_edit_new.vue index b16bb76c305..a8c7b7c857a 100644 --- a/app/assets/javascripts/releases/components/app_edit_new.vue +++ b/app/assets/javascripts/releases/components/app_edit_new.vue @@ -86,12 +86,11 @@ export default { ]; }, }, - mounted() { - // eslint-disable-next-line promise/catch-or-return - this.initializeRelease().then(() => { - // Focus the first non-disabled input element - this.$el.querySelector('input:enabled').focus(); - }); + async mounted() { + await this.initializeRelease(); + + // Focus the first non-disabled input or button element + this.$el.querySelector('input:enabled, button:enabled').focus(); }, methods: { ...mapActions('detail', [ diff --git a/app/assets/javascripts/releases/components/tag_field_new.vue b/app/assets/javascripts/releases/components/tag_field_new.vue index 660fd7ac950..21360a5c6cb 100644 --- a/app/assets/javascripts/releases/components/tag_field_new.vue +++ b/app/assets/javascripts/releases/components/tag_field_new.vue @@ -1,20 +1,29 @@ @@ -69,17 +100,34 @@ export default { :invalid-feedback="__('Tag name is required')" > - + @hide.once="markInputAsDirty" + > + + + + + {{ query }} + + + + + diff --git a/app/assets/javascripts/security_configuration/components/configuration_table.vue b/app/assets/javascripts/security_configuration/components/configuration_table.vue index d1ac7190c37..4a3f988296c 100644 --- a/app/assets/javascripts/security_configuration/components/configuration_table.vue +++ b/app/assets/javascripts/security_configuration/components/configuration_table.vue @@ -1,5 +1,5 @@ diff --git a/app/assets/javascripts/security_configuration/components/manage_sast.vue b/app/assets/javascripts/security_configuration/components/manage_sast.vue index 5169096d563..a2528edd914 100644 --- a/app/assets/javascripts/security_configuration/components/manage_sast.vue +++ b/app/assets/javascripts/security_configuration/components/manage_sast.vue @@ -14,9 +14,11 @@ export default { default: '', }, }, - data: () => ({ - isLoading: false, - }), + data() { + return { + isLoading: false, + }; + }, methods: { async mutate() { this.isLoading = true; diff --git a/app/assets/javascripts/security_configuration/components/features_constants.js b/app/assets/javascripts/security_configuration/components/scanners_constants.js similarity index 66% rename from app/assets/javascripts/security_configuration/components/features_constants.js rename to app/assets/javascripts/security_configuration/components/scanners_constants.js index c0eef0611a0..9846df0b4bf 100644 --- a/app/assets/javascripts/security_configuration/components/features_constants.js +++ b/app/assets/javascripts/security_configuration/components/scanners_constants.js @@ -1,5 +1,5 @@ import { helpPagePath } from '~/helpers/help_page_helper'; -import { s__ } from '~/locale'; +import { __, s__ } from '~/locale'; import { REPORT_TYPE_SAST, @@ -9,58 +9,65 @@ import { REPORT_TYPE_DEPENDENCY_SCANNING, REPORT_TYPE_CONTAINER_SCANNING, REPORT_TYPE_COVERAGE_FUZZING, + REPORT_TYPE_API_FUZZING, REPORT_TYPE_LICENSE_COMPLIANCE, } from '~/vue_shared/security_reports/constants'; /** * Translations & helpPagePaths for Static Security Configuration Page */ -export const SAST_NAME = s__('Static Application Security Testing (SAST)'); -export const SAST_DESCRIPTION = s__('Analyze your source code for known vulnerabilities.'); +export const SAST_NAME = __('Static Application Security Testing (SAST)'); +export const SAST_DESCRIPTION = __('Analyze your source code for known vulnerabilities.'); export const SAST_HELP_PATH = helpPagePath('user/application_security/sast/index'); -export const DAST_NAME = s__('Dynamic Application Security Testing (DAST)'); -export const DAST_DESCRIPTION = s__('Analyze a review version of your web application.'); +export const DAST_NAME = __('Dynamic Application Security Testing (DAST)'); +export const DAST_DESCRIPTION = __('Analyze a review version of your web application.'); export const DAST_HELP_PATH = helpPagePath('user/application_security/dast/index'); -export const DAST_PROFILES_NAME = s__('DAST Scans'); -export const DAST_PROFILES_DESCRIPTION = s__('Analyze a review version of your web application.'); +export const DAST_PROFILES_NAME = __('DAST Scans'); +export const DAST_PROFILES_DESCRIPTION = __( + 'Saved scan settings and target site settings which are reusable.', +); export const DAST_PROFILES_HELP_PATH = helpPagePath('user/application_security/dast/index'); -export const SECRET_DETECTION_NAME = s__('Secret Detection'); -export const SECRET_DETECTION_DESCRIPTION = s__( +export const SECRET_DETECTION_NAME = __('Secret Detection'); +export const SECRET_DETECTION_DESCRIPTION = __( 'Analyze your source code and git history for secrets.', ); export const SECRET_DETECTION_HELP_PATH = helpPagePath( 'user/application_security/secret_detection/index', ); -export const DEPENDENCY_SCANNING_NAME = s__('Dependency Scanning'); -export const DEPENDENCY_SCANNING_DESCRIPTION = s__( +export const DEPENDENCY_SCANNING_NAME = __('Dependency Scanning'); +export const DEPENDENCY_SCANNING_DESCRIPTION = __( 'Analyze your dependencies for known vulnerabilities.', ); export const DEPENDENCY_SCANNING_HELP_PATH = helpPagePath( 'user/application_security/dependency_scanning/index', ); -export const CONTAINER_SCANNING_NAME = s__('Container Scanning'); -export const CONTAINER_SCANNING_DESCRIPTION = s__( +export const CONTAINER_SCANNING_NAME = __('Container Scanning'); +export const CONTAINER_SCANNING_DESCRIPTION = __( 'Check your Docker images for known vulnerabilities.', ); export const CONTAINER_SCANNING_HELP_PATH = helpPagePath( 'user/application_security/container_scanning/index', ); -export const COVERAGE_FUZZING_NAME = s__('Coverage Fuzzing'); -export const COVERAGE_FUZZING_DESCRIPTION = s__( +export const COVERAGE_FUZZING_NAME = __('Coverage Fuzzing'); +export const COVERAGE_FUZZING_DESCRIPTION = __( 'Find bugs in your code with coverage-guided fuzzing.', ); export const COVERAGE_FUZZING_HELP_PATH = helpPagePath( 'user/application_security/coverage_fuzzing/index', ); -export const LICENSE_COMPLIANCE_NAME = s__('License Compliance'); -export const LICENSE_COMPLIANCE_DESCRIPTION = s__( +export const API_FUZZING_NAME = __('API Fuzzing'); +export const API_FUZZING_DESCRIPTION = __('Find bugs in your code with API fuzzing.'); +export const API_FUZZING_HELP_PATH = helpPagePath('user/application_security/api_fuzzing/index'); + +export const LICENSE_COMPLIANCE_NAME = __('License Compliance'); +export const LICENSE_COMPLIANCE_DESCRIPTION = __( 'Search your project dependencies for their licenses and apply policies.', ); export const LICENSE_COMPLIANCE_HELP_PATH = helpPagePath( @@ -71,7 +78,7 @@ export const UPGRADE_CTA = s__( 'SecurityConfiguration|Available with %{linkStart}upgrade or free trial%{linkEnd}', ); -export const features = [ +export const scanners = [ { name: SAST_NAME, description: SAST_DESCRIPTION, @@ -90,12 +97,6 @@ export const features = [ helpPath: DAST_PROFILES_HELP_PATH, type: REPORT_TYPE_DAST_PROFILES, }, - { - name: SECRET_DETECTION_NAME, - description: SECRET_DETECTION_DESCRIPTION, - helpPath: SECRET_DETECTION_HELP_PATH, - type: REPORT_TYPE_SECRET_DETECTION, - }, { name: DEPENDENCY_SCANNING_NAME, description: DEPENDENCY_SCANNING_DESCRIPTION, @@ -108,12 +109,24 @@ export const features = [ helpPath: CONTAINER_SCANNING_HELP_PATH, type: REPORT_TYPE_CONTAINER_SCANNING, }, + { + name: SECRET_DETECTION_NAME, + description: SECRET_DETECTION_DESCRIPTION, + helpPath: SECRET_DETECTION_HELP_PATH, + type: REPORT_TYPE_SECRET_DETECTION, + }, { name: COVERAGE_FUZZING_NAME, description: COVERAGE_FUZZING_DESCRIPTION, helpPath: COVERAGE_FUZZING_HELP_PATH, type: REPORT_TYPE_COVERAGE_FUZZING, }, + { + name: API_FUZZING_NAME, + description: API_FUZZING_DESCRIPTION, + helpPath: API_FUZZING_HELP_PATH, + type: REPORT_TYPE_API_FUZZING, + }, { name: LICENSE_COMPLIANCE_NAME, description: LICENSE_COMPLIANCE_DESCRIPTION, diff --git a/app/assets/javascripts/security_configuration/components/upgrade.vue b/app/assets/javascripts/security_configuration/components/upgrade.vue index 04f3763d5da..518eb57731d 100644 --- a/app/assets/javascripts/security_configuration/components/upgrade.vue +++ b/app/assets/javascripts/security_configuration/components/upgrade.vue @@ -1,6 +1,6 @@
+ {{ s__('ForkProject|A fork is a copy of a project.') }} + + {{ + s__( + 'ForkProject|Forking a repository allows you to make changes without affecting the original project.', + ) + }} +