diff --git a/.rubocop_todo/rspec/be_eq.yml b/.rubocop_todo/rspec/be_eq.yml index b51f7e7c78e..65b84951a86 100644 --- a/.rubocop_todo/rspec/be_eq.yml +++ b/.rubocop_todo/rspec/be_eq.yml @@ -468,7 +468,6 @@ RSpec/BeEq: - 'ee/spec/services/projects/restore_service_spec.rb' - 'ee/spec/services/projects/update_service_spec.rb' - 'ee/spec/services/quick_actions/interpret_service_spec.rb' - - 'ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb' - 'ee/spec/services/search/project_service_spec.rb' - 'ee/spec/services/search/zoekt/indexing_task_service_spec.rb' - 'ee/spec/services/security/configuration/project_set_continuous_vulnerability_scanning_service_spec.rb' diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index 52a44e41293..b3b51e63e7a 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -2950,7 +2950,6 @@ RSpec/FeatureCategory: - 'spec/lib/gitlab/uploads_transfer_spec.rb' - 'spec/lib/gitlab/url_blockers/domain_allowlist_entry_spec.rb' - 'spec/lib/gitlab/url_builder_spec.rb' - - 'spec/lib/gitlab/url_sanitizer_spec.rb' - 'spec/lib/gitlab/usage/metric_spec.rb' - 'spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb' - 'spec/lib/gitlab/usage/metrics/instrumentations/active_user_count_metric_spec.rb' diff --git a/.rubocop_todo/rspec/receive_messages.yml b/.rubocop_todo/rspec/receive_messages.yml index 581c114c0d1..97b93e6b1bc 100644 --- a/.rubocop_todo/rspec/receive_messages.yml +++ b/.rubocop_todo/rspec/receive_messages.yml @@ -154,7 +154,6 @@ RSpec/ReceiveMessages: - 'ee/spec/services/merge_requests/mergeability/check_jira_status_service_spec.rb' - 'ee/spec/services/merge_requests/mergeability/check_path_locks_service_spec.rb' - 'ee/spec/services/resource_access_tokens/create_service_spec.rb' - - 'ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb' - 'ee/spec/services/search/project_service_spec.rb' - 'ee/spec/services/security/orchestration/assign_service_spec.rb' - 'ee/spec/services/security/scan_result_policies/generate_policy_violation_comment_service_spec.rb' diff --git a/CHANGELOG.md b/CHANGELOG.md index 0989e16c57e..2e7e2e0f17a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. +## 17.9.2 (2025-03-11) + +### Fixed (3 changes) + +- [Fix the pipe search for zoekt exact search mode](https://gitlab.com/gitlab-org/security/gitlab/-/commit/22030051963d488575df6a2cca19e1d4e0d82a2d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183373)) +- [Prevent deletion of project_bot users with non-expiring access tokens](https://gitlab.com/gitlab-org/security/gitlab/-/commit/0249d460f0f6b7f867e7a4171e0effae2e4e5135) +- [Use correct project when fetching managed resources templates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/9bac9ffcd01abff2bf0d4d38829655e394dea3b3) + +### Security (8 changes) + +- [Vendor GraphQL gem](https://gitlab.com/gitlab-org/security/gitlab/-/commit/e78a52dcafa4c7316e01d4dcd35a33ab9623f532) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4841)) +- [Ruby-SAML updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/780f136abbf4b27c18485e5c173aaa18acfcb644) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4828)) +- [Prevent custom role to activate group members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/efbd1afae3cce6bb4e03e91ed82b7af27671977f) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4833)) +- [approval_rules name is unbounded](https://gitlab.com/gitlab-org/security/gitlab/-/commit/9a4e857ea3223fe56536a81f3d1fdadb833eca8d) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4838)) +- [Limit preview size](https://gitlab.com/gitlab-org/security/gitlab/-/commit/b2ce61725c9946766a2a964377fc756d87e8234e) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4821)) +- [Maintainer can inject shell code in Google integration configurations that...](https://gitlab.com/gitlab-org/security/gitlab/-/commit/7fd30226d79520b742abd9edc01055766f56c39b) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4824)) +- [Filter out internal notes if the recipient do not have access](https://gitlab.com/gitlab-org/security/gitlab/-/commit/a55e5b359912daa90ef07c73ebd66b4bb9b0e2c3) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4815)) +- [Mask unencoded userinfo in project mirror errors](https://gitlab.com/gitlab-org/security/gitlab/-/commit/af6f445b66c3353652c47ad36b1c700c2c0572a1) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4789)) + ## 17.9.1 (2025-02-26) ### Fixed (1 change) @@ -1096,6 +1115,19 @@ entry. - [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/c932e35efdc0e3c6f316a3c2d37045e115ce8cd5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176452)) - [Finalize migration BackfillRemoteDevelopmentAgentConfigsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/da4c63d7aab3685c3fbe9d1e48f68ba2162a0b5e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172769)) +## 17.8.5 (2025-03-11) + +### Security (8 changes) + +- [Vendor GraphQL gem](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1d1019ef7f1f447b9438221ff734f07cb8cfc6f7) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4840)) +- [Ruby-SAML updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/f68b16e4319f01144c90b725e6ec62b3c2ca42bd) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4829)) +- [Prevent custom role to activate group members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/a1d818293e11796c71553e2c5eaba4e2f358db79) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4834)) +- [approval_rules name is unbounded](https://gitlab.com/gitlab-org/security/gitlab/-/commit/89018f0df2df5c9b3c656a0981384ee3872a54e1) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4837)) +- [Limit preview size](https://gitlab.com/gitlab-org/security/gitlab/-/commit/9824f5746a38e95dbfa5d991b69c18ec3e5c1194) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4822)) +- [Maintainer can inject shell code in Google integration configurations that...](https://gitlab.com/gitlab-org/security/gitlab/-/commit/688e445b811a4ffa2e2a175effe4f211af57afe8) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4825)) +- [Filter out internal notes if the recipient do not have access](https://gitlab.com/gitlab-org/security/gitlab/-/commit/117de613cd4025a41c93a25809dd4c5bd47df7b4) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4814)) +- [Mask unencoded userinfo in project mirror errors](https://gitlab.com/gitlab-org/security/gitlab/-/commit/73a0c85541ef22125c52be1b4980ced1bfbc1dba) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4777)) + ## 17.8.4 (2025-02-26) ### Security (4 changes) @@ -1596,6 +1628,19 @@ entry. - [Remove default on `group_saved_replies_flag feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/75d49fe13646e1e0d3b68233ac4a965c86853917) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175647)) - [Remove use_actual_plan_in_license_check flag](https://gitlab.com/gitlab-org/gitlab/-/commit/b8c3fe16aedb69c82ff52d1c695d72e933c4b946) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175649)) +## 17.7.7 (2025-03-11) + +### Security (8 changes) + +- [Vendor GraphQL gem](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1c7e70de86d4bdd9395c9bcda9f816a608d78a3d) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4839)) +- [Ruby-SAML updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/8ac8f914d289f182de00be49d10f15e7db7bd7a3) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4830)) +- [Prevent custom role to activate group members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1c01e25b256b30a8edca3024909c9b1df56adb59) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4835)) +- [approval_rules name is unbounded](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1db850c51fcd8ceab50bced39165464c0943a45b) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4836)) +- [Limit preview size](https://gitlab.com/gitlab-org/security/gitlab/-/commit/0ca0f0bad8d2d470b10491fa672e3134cb0d5acf) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4823)) +- [Maintainer can inject shell code in Google integration configurations that...](https://gitlab.com/gitlab-org/security/gitlab/-/commit/f22e6beb143b983e2bd76c08beff215816a52079) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4826)) +- [Filter out internal notes if the recipient do not have access](https://gitlab.com/gitlab-org/security/gitlab/-/commit/17181360562c5f5b9c4907eb8f8d3aad12b7748b) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4813)) +- [Mask unencoded userinfo in project mirror errors](https://gitlab.com/gitlab-org/security/gitlab/-/commit/a7a51b42149a2db1c39a948604c2296c61b1ddb9) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/4778)) + ## 17.7.6 (2025-02-26) ### Fixed (1 change) diff --git a/Gemfile b/Gemfile index bd729bf6ba8..6f2ae29d566 100644 --- a/Gemfile +++ b/Gemfile @@ -95,7 +95,7 @@ gem 'doorkeeper', '~> 5.8', '>= 5.8.1', feature_category: :system_access gem 'doorkeeper-openid_connect', '~> 1.8.10', feature_category: :system_access gem 'doorkeeper-device_authorization_grant', '~> 1.0.0', feature_category: :system_access gem 'rexml', '~> 3.4.0', feature_category: :shared -gem 'ruby-saml', '~> 1.17.0', feature_category: :system_access +gem 'ruby-saml', '~> 1.18.0', path: 'vendor/gems/ruby-saml', feature_category: :system_access gem 'omniauth', '~> 2.1.0', feature_category: :system_access gem 'omniauth-auth0', '~> 3.1', feature_category: :system_access gem 'omniauth-azure-activedirectory-v2', '~> 2.0', feature_category: :system_access @@ -164,7 +164,7 @@ gem 'grape-path-helpers', '~> 2.0.1', feature_category: :api gem 'rack-cors', '~> 2.0.1', require: 'rack/cors', feature_category: :shared # GraphQL API -gem 'graphql', '~> 2.4.1', feature_category: :api +gem 'graphql', '2.4.11', path: 'vendor/gems/graphql', feature_category: :api gem 'graphql-docs', '~> 5.0.0', group: [:development, :test], feature_category: :api gem 'apollo_upload_server', '~> 2.1.6', feature_category: :api gem 'graphlient', '~> 0.8.0', feature_category: :importers # Used by BulkImport feature (group::import) diff --git a/Gemfile.checksum b/Gemfile.checksum index a8eae8cf8a6..adb431de223 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -294,7 +294,6 @@ {"name":"grape_logging","version":"1.8.4","platform":"ruby","checksum":"efcc3e322dbd5d620a68f078733b7db043cf12680144cd03c982f14115c792d1"}, {"name":"graphlient","version":"0.8.0","platform":"ruby","checksum":"98c408da1d083454e9f5e274f3b0b6261e2a0c2b5f2ed7b3ef9441d46f8e7cb1"}, {"name":"graphlyte","version":"1.0.0","platform":"ruby","checksum":"b5af4ab67dde6e961f00ea1c18f159f73b52ed11395bb4ece297fe628fa1804d"}, -{"name":"graphql","version":"2.4.8","platform":"ruby","checksum":"f6ff824c5e476af06fe47179a72f865336abfabfaca3bd6fb58e3d196e3f6fb5"}, {"name":"graphql-client","version":"0.23.0","platform":"ruby","checksum":"f238b8e451676baad06bd15f95396e018192243dcf12c4e6d13fb41d9a2babc1"}, {"name":"graphql-docs","version":"5.0.0","platform":"ruby","checksum":"76baca6e5a803a4b6a9fbbbfdbf16742b7c4c546c8592b6e1a7aa4e79e562d04"}, {"name":"grpc","version":"1.63.0","platform":"aarch64-linux","checksum":"dc75c5fd570b819470781d9512105dddfdd11d984f38b8e60bb946f92d1f79ee"}, @@ -639,7 +638,6 @@ {"name":"ruby-lsp-rspec","version":"0.1.22","platform":"ruby","checksum":"e982edf5cd6ec1530c3f5fa7e423624ad00532ebeff7fc94e02c7516a9b759c0"}, {"name":"ruby-magic","version":"0.6.0","platform":"ruby","checksum":"7b2138877b7d23aff812c95564eba6473b74b815ef85beb0eb792e729a2b6101"}, {"name":"ruby-progressbar","version":"1.11.0","platform":"ruby","checksum":"cc127db3866dc414ffccbf92928a241e585b3aa2b758a5563e74a6ee0f57d50a"}, -{"name":"ruby-saml","version":"1.17.0","platform":"ruby","checksum":"0419839ba3312d255e35fe3cc7ae155e4a241fd468796caebcf61164aa01b8a9"}, {"name":"ruby-statistics","version":"4.1.0","platform":"ruby","checksum":"7d697abd5dc4e6141d21ecb4165482807564f11bbe154cf1c60a2677b507f2a9"}, {"name":"ruby2_keywords","version":"0.0.5","platform":"ruby","checksum":"ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef"}, {"name":"rubyntlm","version":"0.6.3","platform":"ruby","checksum":"5b321456dba3130351f7451f8669f1afa83a0d26fd63cdec285b7b88e667102d"}, diff --git a/Gemfile.lock b/Gemfile.lock index 20b6d1e2664..5b65de7b52f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -170,6 +170,14 @@ PATH google-protobuf (~> 3) grpc +PATH + remote: vendor/gems/graphql + specs: + graphql (2.4.11) + base64 + fiber-storage + logger + PATH remote: vendor/gems/mail-smtp_pool specs: @@ -206,6 +214,13 @@ PATH nokogiri (>= 1.4.4) omniauth (~> 2.0) +PATH + remote: vendor/gems/ruby-saml + specs: + ruby-saml (1.18.0) + nokogiri (>= 1.13.10) + rexml + PATH remote: vendor/gems/sidekiq-7.2.4 specs: @@ -941,9 +956,6 @@ GEM faraday (~> 2.0) graphql-client graphlyte (1.0.0) - graphql (2.4.8) - base64 - fiber-storage graphql-client (0.23.0) activesupport (>= 3.0) graphql (>= 1.13.0) @@ -1707,9 +1719,6 @@ GEM ruby-magic (0.6.0) mini_portile2 (~> 2.8) ruby-progressbar (1.11.0) - ruby-saml (1.17.0) - nokogiri (>= 1.13.10) - rexml ruby-statistics (4.1.0) ruby2_keywords (0.0.5) rubyntlm (0.6.3) @@ -2153,7 +2162,7 @@ DEPENDENCIES grape_logging (~> 1.8, >= 1.8.4) graphlient (~> 0.8.0) graphlyte (~> 1.0.0) - graphql (~> 2.4.1) + graphql (= 2.4.11)! graphql-docs (~> 5.0.0) grpc (= 1.63.0) gssapi (~> 1.3.1) @@ -2303,7 +2312,7 @@ DEPENDENCIES ruby-lsp-rspec (~> 0.1.10) ruby-magic (~> 0.6) ruby-progressbar (~> 1.10) - ruby-saml (~> 1.17.0) + ruby-saml (~> 1.18.0)! rubyzip (~> 2.3.2) rugged (~> 1.6) sanitize (~> 6.0.2) diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum index 48c05959577..ff1ad0a160a 100644 --- a/Gemfile.next.checksum +++ b/Gemfile.next.checksum @@ -294,7 +294,6 @@ {"name":"grape_logging","version":"1.8.4","platform":"ruby","checksum":"efcc3e322dbd5d620a68f078733b7db043cf12680144cd03c982f14115c792d1"}, {"name":"graphlient","version":"0.8.0","platform":"ruby","checksum":"98c408da1d083454e9f5e274f3b0b6261e2a0c2b5f2ed7b3ef9441d46f8e7cb1"}, {"name":"graphlyte","version":"1.0.0","platform":"ruby","checksum":"b5af4ab67dde6e961f00ea1c18f159f73b52ed11395bb4ece297fe628fa1804d"}, -{"name":"graphql","version":"2.4.8","platform":"ruby","checksum":"f6ff824c5e476af06fe47179a72f865336abfabfaca3bd6fb58e3d196e3f6fb5"}, {"name":"graphql-client","version":"0.23.0","platform":"ruby","checksum":"f238b8e451676baad06bd15f95396e018192243dcf12c4e6d13fb41d9a2babc1"}, {"name":"graphql-docs","version":"5.0.0","platform":"ruby","checksum":"76baca6e5a803a4b6a9fbbbfdbf16742b7c4c546c8592b6e1a7aa4e79e562d04"}, {"name":"grpc","version":"1.63.0","platform":"aarch64-linux","checksum":"dc75c5fd570b819470781d9512105dddfdd11d984f38b8e60bb946f92d1f79ee"}, @@ -649,7 +648,6 @@ {"name":"ruby-lsp-rspec","version":"0.1.22","platform":"ruby","checksum":"e982edf5cd6ec1530c3f5fa7e423624ad00532ebeff7fc94e02c7516a9b759c0"}, {"name":"ruby-magic","version":"0.6.0","platform":"ruby","checksum":"7b2138877b7d23aff812c95564eba6473b74b815ef85beb0eb792e729a2b6101"}, {"name":"ruby-progressbar","version":"1.11.0","platform":"ruby","checksum":"cc127db3866dc414ffccbf92928a241e585b3aa2b758a5563e74a6ee0f57d50a"}, -{"name":"ruby-saml","version":"1.17.0","platform":"ruby","checksum":"0419839ba3312d255e35fe3cc7ae155e4a241fd468796caebcf61164aa01b8a9"}, {"name":"ruby-statistics","version":"4.1.0","platform":"ruby","checksum":"7d697abd5dc4e6141d21ecb4165482807564f11bbe154cf1c60a2677b507f2a9"}, {"name":"ruby2_keywords","version":"0.0.5","platform":"ruby","checksum":"ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef"}, {"name":"rubyntlm","version":"0.6.3","platform":"ruby","checksum":"5b321456dba3130351f7451f8669f1afa83a0d26fd63cdec285b7b88e667102d"}, diff --git a/Gemfile.next.lock b/Gemfile.next.lock index fea74b24d17..699a2f93827 100644 --- a/Gemfile.next.lock +++ b/Gemfile.next.lock @@ -170,6 +170,14 @@ PATH google-protobuf (~> 3) grpc +PATH + remote: vendor/gems/graphql + specs: + graphql (2.4.11) + base64 + fiber-storage + logger + PATH remote: vendor/gems/mail-smtp_pool specs: @@ -206,6 +214,13 @@ PATH nokogiri (>= 1.4.4) omniauth (~> 2.0) +PATH + remote: vendor/gems/ruby-saml + specs: + ruby-saml (1.18.0) + nokogiri (>= 1.13.10) + rexml + PATH remote: vendor/gems/sidekiq-7.2.4 specs: @@ -953,9 +968,6 @@ GEM faraday (~> 2.0) graphql-client graphlyte (1.0.0) - graphql (2.4.8) - base64 - fiber-storage graphql-client (0.23.0) activesupport (>= 3.0) graphql (>= 1.13.0) @@ -1739,9 +1751,6 @@ GEM ruby-magic (0.6.0) mini_portile2 (~> 2.8) ruby-progressbar (1.11.0) - ruby-saml (1.17.0) - nokogiri (>= 1.13.10) - rexml ruby-statistics (4.1.0) ruby2_keywords (0.0.5) rubyntlm (0.6.3) @@ -2187,7 +2196,7 @@ DEPENDENCIES grape_logging (~> 1.8, >= 1.8.4) graphlient (~> 0.8.0) graphlyte (~> 1.0.0) - graphql (~> 2.4.1) + graphql (= 2.4.11)! graphql-docs (~> 5.0.0) grpc (= 1.63.0) gssapi (~> 1.3.1) @@ -2337,7 +2346,7 @@ DEPENDENCIES ruby-lsp-rspec (~> 0.1.10) ruby-magic (~> 0.6) ruby-progressbar (~> 1.10) - ruby-saml (~> 1.17.0) + ruby-saml (~> 1.18.0)! rubyzip (~> 2.3.2) rugged (~> 1.6) sanitize (~> 6.0.2) diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js index 10c22609858..c7ee7699d9c 100644 --- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js +++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js @@ -388,9 +388,12 @@ export const PROJECT_FILES_GO_BACK = { defaultKeys: ['esc'], }; +const { blobOverflowMenu } = gon.features ?? {}; export const PROJECT_FILES_GO_TO_PERMALINK = { id: 'projectFiles.goToFilePermalink', - description: __('Go to file permalink (while viewing a file)'), + description: blobOverflowMenu + ? __('Copy file permalink') + : __('Go to file permalink (while viewing a file)'), defaultKeys: ['y'], }; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js index 9f8d7272e5c..13ecfaf1a54 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js @@ -3,6 +3,12 @@ import { moveToFilePermalink } from '~/blob/utils'; export default class ShortcutsBlob { constructor(shortcuts) { + const { blobOverflowMenu } = gon.features ?? {}; + if (blobOverflowMenu) { + // TODO: Remove ShortcutsBlob entirely once these feature flags are removed. + return; + } + shortcuts.add(PROJECT_FILES_GO_TO_PERMALINK, moveToFilePermalink); } } diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js index 0a35ba64c07..fd54a7b9605 100644 --- a/app/assets/javascripts/blob_edit/edit_blob.js +++ b/app/assets/javascripts/blob_edit/edit_blob.js @@ -1,4 +1,5 @@ import $ from 'jquery'; +import { __ } from '~/locale'; import { renderGFM } from '~/behaviors/markdown/render_gfm'; import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base'; import { FileTemplateExtension } from '~/editor/extensions/source_editor_file_template_ext'; @@ -8,6 +9,7 @@ import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { addEditorMarkdownListeners } from '~/lib/utils/text_markdown'; import FilepathFormMediator from '~/blob/filepath_form_mediator'; +import { HTTP_STATUS_PAYLOAD_TOO_LARGE } from '~/lib/utils/http_status'; import { visitUrl } from '~/lib/utils/url_utility'; import Api from '~/api'; @@ -163,6 +165,18 @@ export default class EditBlob { } } + static createBlobAlert = (error) => { + if (error.response.status === HTTP_STATUS_PAYLOAD_TOO_LARGE) { + createAlert({ + message: __('The blob is too large to render'), + }); + } else { + createAlert({ + message: BLOB_PREVIEW_ERROR, + }); + } + }; + editModeLinkClickHandler(e) { e.preventDefault(); @@ -191,11 +205,9 @@ export default class EditBlob { currentPane.empty().append(data); renderGFM(currentPane.get(0)); }) - .catch(() => - createAlert({ - message: BLOB_PREVIEW_ERROR, - }), - ); + .catch((error) => { + EditBlob.createBlobAlert(error); + }); } } diff --git a/app/assets/javascripts/glql/components/common/facade.vue b/app/assets/javascripts/glql/components/common/facade.vue index 964cd963a70..057ec6c5d22 100644 --- a/app/assets/javascripts/glql/components/common/facade.vue +++ b/app/assets/javascripts/glql/components/common/facade.vue @@ -31,7 +31,6 @@ export default { data() { return { loadOnClick: true, - presenterPreview: null, presenterComponent: null, error: { diff --git a/app/assets/javascripts/glql/components/presenters/issuable.vue b/app/assets/javascripts/glql/components/presenters/issuable.vue index eb4791d0085..07b305c1ac4 100644 --- a/app/assets/javascripts/glql/components/presenters/issuable.vue +++ b/app/assets/javascripts/glql/components/presenters/issuable.vue @@ -46,6 +46,7 @@ export default {