diff --git a/app/assets/javascripts/boards/components/board_card_inner.vue b/app/assets/javascripts/boards/components/board_card_inner.vue index 05c786ca61d..4f919019813 100644 --- a/app/assets/javascripts/boards/components/board_card_inner.vue +++ b/app/assets/javascripts/boards/components/board_card_inner.vue @@ -43,7 +43,7 @@ export default { GlTooltip: GlTooltipDirective, }, mixins: [boardCardInner], - inject: ['rootPath', 'scopedLabelsAvailable', 'isEpicBoard'], + inject: ['rootPath', 'scopedLabelsAvailable', 'isEpicBoard', 'issuableType'], props: { item: { type: Object, @@ -77,7 +77,7 @@ export default { }; }, computed: { - ...mapState(['isShowingLabels', 'issuableType', 'allowSubEpics']), + ...mapState(['isShowingLabels', 'allowSubEpics']), ...mapGetters(['isProjectBoard']), cappedAssignees() { // e.g. maxRender is 4, diff --git a/app/assets/javascripts/boards/components/board_content_sidebar.vue b/app/assets/javascripts/boards/components/board_content_sidebar.vue index 392a73b5859..97b017fea58 100644 --- a/app/assets/javascripts/boards/components/board_content_sidebar.vue +++ b/app/assets/javascripts/boards/components/board_content_sidebar.vue @@ -6,7 +6,7 @@ import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdow import { __, sprintf } from '~/locale'; import BoardSidebarTimeTracker from '~/boards/components/sidebar/board_sidebar_time_tracker.vue'; import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue'; -import { ISSUABLE, INCIDENT } from '~/boards/constants'; +import { ISSUABLE, INCIDENT, issuableTypes } from '~/boards/constants'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import SidebarAssigneesWidget from '~/sidebar/components/assignees/sidebar_assignees_widget.vue'; import SidebarConfidentialityWidget from '~/sidebar/components/confidential/sidebar_confidentiality_widget.vue'; @@ -65,6 +65,9 @@ export default { canUpdate: { default: false, }, + issuableType: { + default: issuableTypes.issue, + }, }, inheritAttrs: false, computed: { @@ -75,7 +78,7 @@ export default { 'groupPathForActiveIssue', 'projectPathForActiveIssue', ]), - ...mapState(['sidebarType', 'issuableType']), + ...mapState(['sidebarType']), isIssuableSidebar() { return this.sidebarType === ISSUABLE; }, diff --git a/app/assets/javascripts/boards/components/board_new_issue.vue b/app/assets/javascripts/boards/components/board_new_issue.vue index 8db366e4995..e756db9f5b9 100644 --- a/app/assets/javascripts/boards/components/board_new_issue.vue +++ b/app/assets/javascripts/boards/components/board_new_issue.vue @@ -16,7 +16,7 @@ export default { ProjectSelect, }, mixins: [BoardNewIssueMixin], - inject: ['groupId'], + inject: ['groupId', 'fullPath'], props: { list: { type: Object, @@ -24,7 +24,7 @@ export default { }, }, computed: { - ...mapState(['selectedProject', 'fullPath']), + ...mapState(['selectedProject']), ...mapGetters(['isGroupBoard', 'getBoardItemsByList']), formEventPrefix() { return toggleFormEventPrefix.issue; diff --git a/app/assets/javascripts/boards/components/boards_selector.vue b/app/assets/javascripts/boards/components/boards_selector.vue index 4f90d77c0be..5f8b13d5a57 100644 --- a/app/assets/javascripts/boards/components/boards_selector.vue +++ b/app/assets/javascripts/boards/components/boards_selector.vue @@ -49,6 +49,7 @@ export default { 'hasMissingBoards', 'scopedIssueBoardFeatureEnabled', 'weights', + 'boardType', ], props: { throttleDuration: { @@ -74,7 +75,7 @@ export default { }, computed: { - ...mapState(['boardType', 'board', 'isBoardLoading']), + ...mapState(['board', 'isBoardLoading']), ...mapGetters(['isGroupBoard', 'isProjectBoard']), parentType() { return this.boardType; diff --git a/app/assets/stylesheets/framework/contextual_sidebar.scss b/app/assets/stylesheets/framework/contextual_sidebar.scss index 093c625d7bc..631c8c56ad5 100644 --- a/app/assets/stylesheets/framework/contextual_sidebar.scss +++ b/app/assets/stylesheets/framework/contextual_sidebar.scss @@ -146,13 +146,12 @@ } @mixin top-level-item { + @include gl-h-7; @include gl-px-4; - @include gl-py-3; @include gl-display-flex; @include gl-align-items-center; @include gl-rounded-base; @include gl-w-auto; - @include gl-line-height-normal; transition: none; margin: $sidebar-top-item-tb-margin $sidebar-top-item-lr-margin; diff --git a/app/assets/stylesheets/startup/startup-dark.scss b/app/assets/stylesheets/startup/startup-dark.scss index c7e55289b11..ef39a4c31e8 100644 --- a/app/assets/stylesheets/startup/startup-dark.scss +++ b/app/assets/stylesheets/startup/startup-dark.scss @@ -1136,15 +1136,13 @@ kbd { } .nav-sidebar li > a, .nav-sidebar li > .fly-out-top-item-container { + height: 2rem; padding-left: 0.75rem; padding-right: 0.75rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; display: flex; align-items: center; border-radius: 0.25rem; width: auto; - line-height: 1rem; margin: 1px 8px; } .nav-sidebar li.active > a { @@ -1373,15 +1371,13 @@ kbd { margin-top: 0.25rem; } .nav-sidebar-inner-scroll > div.context-header a { + height: 2rem; padding-left: 0.75rem; padding-right: 0.75rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; display: flex; align-items: center; border-radius: 0.25rem; width: auto; - line-height: 1rem; margin: 1px 8px; padding: 0.25rem; margin-bottom: 0.25rem; diff --git a/app/assets/stylesheets/startup/startup-general.scss b/app/assets/stylesheets/startup/startup-general.scss index f24b6fb9e81..85512e04808 100644 --- a/app/assets/stylesheets/startup/startup-general.scss +++ b/app/assets/stylesheets/startup/startup-general.scss @@ -1136,15 +1136,13 @@ kbd { } .nav-sidebar li > a, .nav-sidebar li > .fly-out-top-item-container { + height: 2rem; padding-left: 0.75rem; padding-right: 0.75rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; display: flex; align-items: center; border-radius: 0.25rem; width: auto; - line-height: 1rem; margin: 1px 8px; } .nav-sidebar li.active > a { @@ -1373,15 +1371,13 @@ kbd { margin-top: 0.25rem; } .nav-sidebar-inner-scroll > div.context-header a { + height: 2rem; padding-left: 0.75rem; padding-right: 0.75rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; display: flex; align-items: center; border-radius: 0.25rem; width: auto; - line-height: 1rem; margin: 1px 8px; padding: 0.25rem; margin-bottom: 0.25rem; diff --git a/doc/architecture/blueprints/gitlab_observability_backend/metrics/supported-deployments.png b/doc/architecture/blueprints/gitlab_observability_backend/metrics/supported-deployments.png index 54c4ed3b48f..9dccc515129 100644 Binary files a/doc/architecture/blueprints/gitlab_observability_backend/metrics/supported-deployments.png and b/doc/architecture/blueprints/gitlab_observability_backend/metrics/supported-deployments.png differ diff --git a/doc/architecture/blueprints/remote_development/img/remote_dev_15_7_1.png b/doc/architecture/blueprints/remote_development/img/remote_dev_15_7_1.png index 330873380d4..aab946923e2 100644 Binary files a/doc/architecture/blueprints/remote_development/img/remote_dev_15_7_1.png and b/doc/architecture/blueprints/remote_development/img/remote_dev_15_7_1.png differ diff --git a/doc/development/deprecation_guidelines/img/deprecation_removal_process.png b/doc/development/deprecation_guidelines/img/deprecation_removal_process.png index e9e7933ae32..3020387d052 100644 Binary files a/doc/development/deprecation_guidelines/img/deprecation_removal_process.png and b/doc/development/deprecation_guidelines/img/deprecation_removal_process.png differ diff --git a/doc/development/testing_guide/img/testing_triangle.png b/doc/development/testing_guide/img/testing_triangle.png index 3ac4955eaff..747bad1d52d 100644 Binary files a/doc/development/testing_guide/img/testing_triangle.png and b/doc/development/testing_guide/img/testing_triangle.png differ diff --git a/doc/operations/incident_management/img/incident_list_v15_6.png b/doc/operations/incident_management/img/incident_list_v15_6.png index fe2a91e2eba..2a13ed6d311 100644 Binary files a/doc/operations/incident_management/img/incident_list_v15_6.png and b/doc/operations/incident_management/img/incident_list_v15_6.png differ diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md index aacb783beb7..03562cd462e 100644 --- a/doc/user/application_security/sast/index.md +++ b/doc/user/application_security/sast/index.md @@ -894,3 +894,7 @@ to reconfigure, using the new and improved job definition default values. include: - template: Security/SAST.gitlab-ci.yml ``` + +### MobSF job fails with error message `Reading from Info.plist` + +This error happens when `Info.plist` file is missing a `CFBundleIdentifier` key and string value. diff --git a/doc/user/search/img/search_navbar_v15_7.png b/doc/user/search/img/search_navbar_v15_7.png index 9175347b36f..775c7f32b37 100644 Binary files a/doc/user/search/img/search_navbar_v15_7.png and b/doc/user/search/img/search_navbar_v15_7.png differ diff --git a/doc/user/search/img/search_scope_v15_7.png b/doc/user/search/img/search_scope_v15_7.png index 6395b5f1cda..96f6e985523 100644 Binary files a/doc/user/search/img/search_scope_v15_7.png and b/doc/user/search/img/search_scope_v15_7.png differ diff --git a/spec/frontend/boards/board_card_inner_spec.js b/spec/frontend/boards/board_card_inner_spec.js index d05e057095d..0df25604d5b 100644 --- a/spec/frontend/boards/board_card_inner_spec.js +++ b/spec/frontend/boards/board_card_inner_spec.js @@ -60,7 +60,6 @@ describe('Board card component', () => { }, state: { ...defaultStore.state, - issuableType: issuableTypes.issue, isShowingLabels: true, }, getters: { @@ -97,6 +96,7 @@ describe('Board card component', () => { rootPath: '/', scopedLabelsAvailable: false, isEpicBoard, + issuableType: issuableTypes.issue, }, }); }; diff --git a/spec/frontend/boards/board_list_helper.js b/spec/frontend/boards/board_list_helper.js index c5c3faf1712..c1d934cf274 100644 --- a/spec/frontend/boards/board_list_helper.js +++ b/spec/frontend/boards/board_list_helper.js @@ -97,6 +97,7 @@ export default function createComponent({ provide: { groupId: null, rootPath: '/', + fullPath: 'gitlab-org', boardId: '1', weightFeatureAvailable: false, boardWeight: null, diff --git a/spec/frontend/boards/components/board_card_spec.js b/spec/frontend/boards/components/board_card_spec.js index 38b79e2e3f3..71a10fe7114 100644 --- a/spec/frontend/boards/components/board_card_spec.js +++ b/spec/frontend/boards/components/board_card_spec.js @@ -61,6 +61,7 @@ describe('Board card', () => { rootPath: '/', scopedLabelsAvailable: false, isEpicBoard: false, + issuableType: 'issue', ...provide, }, }); diff --git a/spec/frontend/boards/components/board_content_sidebar_spec.js b/spec/frontend/boards/components/board_content_sidebar_spec.js index 0d5b1d16e30..cab00390901 100644 --- a/spec/frontend/boards/components/board_content_sidebar_spec.js +++ b/spec/frontend/boards/components/board_content_sidebar_spec.js @@ -7,7 +7,7 @@ import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdow import { stubComponent } from 'helpers/stub_component'; import BoardContentSidebar from '~/boards/components/board_content_sidebar.vue'; import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue'; -import { ISSUABLE } from '~/boards/constants'; +import { ISSUABLE, issuableTypes } from '~/boards/constants'; import SidebarDateWidget from '~/sidebar/components/date/sidebar_date_widget.vue'; import SidebarSeverity from '~/sidebar/components/severity/sidebar_severity.vue'; import SidebarSubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue'; @@ -26,7 +26,6 @@ describe('BoardContentSidebar', () => { sidebarType: ISSUABLE, issues: { [mockIssue.id]: { ...mockIssue, epic: null } }, activeId: mockIssue.id, - issuableType: 'issue', }, getters: { activeBoardItem: () => { @@ -55,6 +54,7 @@ describe('BoardContentSidebar', () => { canUpdate: true, rootPath: '/', groupId: 1, + issuableType: issuableTypes.issue, }, store, stubs: { diff --git a/spec/frontend/boards/components/board_new_issue_spec.js b/spec/frontend/boards/components/board_new_issue_spec.js index f097f42476a..398caa4de62 100644 --- a/spec/frontend/boards/components/board_new_issue_spec.js +++ b/spec/frontend/boards/components/board_new_issue_spec.js @@ -14,7 +14,7 @@ const addListNewIssuesSpy = jest.fn().mockResolvedValue(); const mockActions = { addListNewIssue: addListNewIssuesSpy }; const createComponent = ({ - state = { selectedProject: mockGroupProjects[0], fullPath: mockGroupProjects[0].fullPath }, + state = { selectedProject: mockGroupProjects[0] }, actions = mockActions, getters = { isGroupBoard: () => true, getBoardItemsByList: () => () => [] }, } = {}) => @@ -29,6 +29,7 @@ const createComponent = ({ }, provide: { groupId: 1, + fullPath: mockGroupProjects[0].fullPath, weightFeatureAvailable: false, boardWeight: null, }, diff --git a/spec/frontend/boards/components/boards_selector_spec.js b/spec/frontend/boards/components/boards_selector_spec.js index f3be66db36f..9f7d36330b0 100644 --- a/spec/frontend/boards/components/boards_selector_spec.js +++ b/spec/frontend/boards/components/boards_selector_spec.js @@ -46,7 +46,6 @@ describe('BoardsSelector', () => { isProjectBoard: () => isProjectBoard, }, state: { - boardType: isGroupBoard ? 'group' : 'project', board: mockBoard, }, }); @@ -86,6 +85,7 @@ describe('BoardsSelector', () => { const createComponent = ({ projectBoardsQueryHandler = projectBoardsQueryHandlerSuccess, projectRecentBoardsQueryHandler = projectRecentBoardsQueryHandlerSuccess, + isGroupBoard = false, } = {}) => { fakeApollo = createMockApollo([ [projectBoardsQuery, projectBoardsQueryHandler], @@ -109,6 +109,7 @@ describe('BoardsSelector', () => { multipleIssueBoardsAvailable: true, scopedIssueBoardFeatureEnabled: true, weights: [], + boardType: isGroupBoard ? 'group' : 'project', }, }); }; @@ -233,7 +234,7 @@ describe('BoardsSelector', () => { isProjectBoard: boardType === BoardType.project, isGroupBoard: boardType === BoardType.group, }); - createComponent(); + createComponent({ isGroupBoard: boardType === BoardType.group }); await nextTick();