diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-19 18:08:39 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-19 18:08:39 +0000 |
commit | ce493944f48fb2ad08a5381a7ed1f37ced637bd1 (patch) | |
tree | 565c5c3bf18ce60fd6442d7581fc1af7ba148dd1 | |
parent | e9ea5bbdf998d0bafe14cfd3d70fa545d8ebed83 (diff) | |
download | gitlab-ce-ce493944f48fb2ad08a5381a7ed1f37ced637bd1.tar.gz |
Add latest changes from gitlab-org/gitlab@master
610 files changed, 7382 insertions, 714 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 196f184f924..da2f5700b3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,494 +2,6 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 13.1.0 (2020-06-22) - -### Removed (4 changes, 2 of them are from the community) - -- Remove deprecated dashboard & group milestone pages. !13237 -- Removed UltraAuth integration for OmniAuth. !29330 (Kartikey Tanna) -- Remove all search autocomplete for groups/projects/other. !31187 -- Remove temporary datepicker position fix as it is no longer required. !31836 (Arun Kumar Mohan) - -### Fixed (154 changes, 57 of them are from the community) - -- Fix 'Active' checkbox text in Pipeline Schedule form to be a label. !27054 (Jonston Chan) -- Fix back button when switching MR tabs. !29862 (Lee Tickett) -- Remove ability to scroll Issue while in Design View. !29881 -- Fix merge request note label URLs. !30428 (Lee Tickett) -- Fix default path when creating project from group template. !30597 (Lee Tickett) -- Group authorization refresh to consider shared groups. !31204 -- Fix group transfer service to deny moving group to its subgroup. !31495 (Abhisek Datta) -- Fix issuable listings with any label filter. !31729 -- Move prepend to last in ee-app-services. !31838 (Rajendra Kadam) -- Fallback to lowest visibility level in snippet visibility radio. !31847 (Jacopo Beschi @jacopo-beschi) -- Add class stubs and fix leaky constant alert in query limit helper spec. !31949 (Rajendra Kadam) -- Remove usage of spam constants in spec. !31959 (Rajendra Kadam) -- Fix leaky constant issue in uninstall progress service check. !32036 (Rajendra Kadam) -- Fix leaky constant issue in commit entity spec. !32039 (Rajendra Kadam) -- Fix leaky constant issue in task completion status spec. !32043 (Rajendra Kadam) -- Fix leaky constant issue in admin mode migration spec. !32074 (Rajendra Kadam) -- Fix leaky constant issue in sidekiq middleware server metric spec. !32104 (Rajendra Kadam) -- Fix leaky constant issue in sidekiq middleware client metric spec. !32108 (Rajendra Kadam) -- Fix leaky constant issue in path regex spec. !32115 (Rajendra Kadam) -- Fix leaky constant issue importer and cache headers spec. !32122 (Rajendra Kadam) -- Fix leaky constant issue in relation factory spec. !32129 (Rajendra Kadam) -- Fix leaky constant issue in test coverage spec. !32134 (Rajendra Kadam) -- Prevent emails to user on expiry of impersonation token. !32140 -- Fix leaky constant issue in diff collection spec. !32163 (Rajendra Kadam) -- Fix leaky constant issue in migration helpers, with lock retries and ignored cols spec. !32170 (Rajendra Kadam) -- Fix leaky constant issue in factory spec. !32174 (Rajendra Kadam) -- Fix leaky constant issue in creds factory spec. !32176 (Rajendra Kadam) -- Use applogger in project import state file. !32182 (Rajendra Kadam) -- Use applogger in project.rb. !32183 (Rajendra Kadam) -- Use applogger in chat_team.rb. !32184 (Rajendra Kadam) -- Use applogger in repository model. !32185 (Rajendra Kadam) -- Use applogger in build and ssh host key. !32187 (Rajendra Kadam) -- Use applogger in cache attrs and highest role ruby files. !32189 (Rajendra Kadam) -- Use applogger in legacy project and namespace. !32190 (Rajendra Kadam) -- Use applogger in base.rb. !32191 (Rajendra Kadam) -- Use applogger in usage ping and webhook service. !32192 (Rajendra Kadam) -- Use applogger in exclusive_lease_guard. !32194 (Rajendra Kadam) -- Use applogger in groups destroy service and label create service. !32195 (Rajendra Kadam) -- Use applogger in merge_service.rb. !32196 (Rajendra Kadam) -- Use applogger in project create service and after import service. !32198 (Rajendra Kadam) -- Use applogger in update stats service. !32200 (Rajendra Kadam) -- Use applogger in base attachment service. !32201 (Rajendra Kadam) -- Use applogger in export service. !32203 (Rajendra Kadam) -- Use applogger in akismet service. !32205 (Rajendra Kadam) -- Use applogger in file mover file. !32206 (Rajendra Kadam) -- Use applogger in commit signature worker. !32207 (Rajendra Kadam) -- Use applogger in delete user worker. !32209 (Rajendra Kadam) -- Use applogger in email receiver worker. !32211 (Rajendra Kadam) -- Use applogger in artifact worker. !32212 (Rajendra Kadam) -- Use applogger in new note worker. !32213 (Rajendra Kadam) -- Fix duplicate filename displayed in design todos. !32274 (Arun Kumar Mohan) -- Add value length validations for instance level variable. !32303 -- Resolve image overflow at releases list panel. !32307 -- Clean up shared/tmp folder after Import/Export. !32326 -- Fix creating release evidence if release is created via UI. !32441 -- GraphQL hasNextPage and hasPreviousPage return correct values. !32476 -- Fix loading and empty state styling for alerts list. !32531 -- Resolve incorrect x-axis padding on the Environments Dashboard. !32533 -- Fix time_tracking help link. !32552 -- Don't display confidential note icon on confidential issue public notes. !32571 -- Update container expiration policy database defaults. !32600 -- Fix rendering of emojis in status tooltips. !32604 -- Hid copy contents button when blob has rendering error. !32632 -- Avoid refresh to show endedAt after mutation. !32636 -- Fix for metrics creation when saving MR. !32668 -- Skip the individual JIRA issues if failed to import vs failing the whole batch. !32673 -- Hide "Import from Jira" option from non-entitled users. !32685 -- Fix broken help link on operations settings page. !32722 -- Allow different in bulk editing issues. !32734 -- Fix whitespace changes overgrowing the diff container. !32774 -- Improve spacing and wrapping of group actions buttons and stats in group list view. !32786 -- Fix "Broadcast Messages" table overflow and button alignment. !32801 -- Fix 404 when downloading a non-archive artifact. !32811 -- Make commits author button confirm to Pajamas specs. !32821 -- Fix filename duplication in design notes in activity feeds. !32823 (Arun Kumar Mohan) -- Prevent multiple Auto DevOps deployment jobs running concurrently when using manual rollout. !32824 -- Implement displaying downstream pipeline error details. !32844 -- Fix Runner heartbeats that results in considering them offline. !32851 -- Conan package registry support for the conan_export.tgz file. !32866 -- Fix plural message in account deletion section. !32868 -- Fix atomic processing bumping a lock_version. !32914 -- AsciiDoc: Add support for built-in alignment roles. !32928 (mnrvwl) -- Fix a bug where some Vue apps would be unable to load when DAG tab is disabled. !32966 -- Fix undefined error in Gitlab::Git::Diff. !32967 -- Fix spelling error on Ci::RunnersFinder. !32985 (Arthur de Lapertosa Lisboa) -- Fix polling for resource events. !33025 -- Fix broken CSS classes inside alert management list. !33038 -- Fix bug in snippet create mutation with non ActiveRecord errors. !33085 -- Fix overflow issue in MR and Issue comments. !33100 -- Fix alignment of button text on the Edit Release page. !33104 -- Deduplicate URL parameters when requesting merge request diffs which causes diffs load to fail. !33117 -- Fix tabbing through form fields in projects/new flow. !33209 -- Fix incorrect commit search results returned when searching with ref. !33216 -- Fix NoMethodError by using the correct method to report exceptions to Sentry. !33260 -- Fix KaTeX font paths. !33338 -- Resolve Fix Incomplete Kubernetes Cluster Status List. !33344 -- Fix auto-merge not running after discussions resolved. !33371 -- Fix bug in snippets updating only file_name or content. !33375 -- Fix invisible emoji modal on Set Status form when clicked the second time. !33398 -- vertically center action icon in the CI pipeline. !33427 (Nathanael Weber) -- Wrap auto merge parameters update in database transaction. !33471 -- Return 404 response when redirecting request with invalid url. !33492 -- Fix ambiguous string concatenation on CleanupProjectsWithMissingNamespace. !33497 -- Fix snippet repository import edge cases. !33506 -- Rust CI template: Replace --all with --workspace on cargo test. !33517 (Markus Becker) -- Make markdown textarea links tab-accessible. !33518 -- Pass hard delete option to snippets bulk destroy. !33520 -- Fix CI rules for ECS related jobs. !33527 -- Update GitLab Workhorse to v8.34.0. !33543 -- Fix snippet repository import fail with older export files. !33584 -- Web IDE: Create template files in the folder from which new file request was made. !33585 (Ashesh Vidyut) -- Improve header acccessibility. !33603 -- Remove non migrated snippets from failed imports. !33621 -- Prevent duplicate issues when importing from CSV. !33626 -- Fix sidebar spacing for alert details. !33630 -- Fix linking alerts to created issues for the Generic alerts intergration. !33647 -- Resolve spacing ux debt on Release assets form field. !33684 -- Fix pagination link header. !33714 (Max Wittig) -- Fix Value Stream Analytics summary when using non-english locale. !33717 -- Fix bug with variable substitution in alerts. !33772 -- Allow wiki pages with +<> characters in their title to be saved. !33803 -- Fix force_remove_source_branch not working in API. !33804 -- Fix prometheus alerts not being automatically created. !33806 -- Fix pagination for resource label events. !33821 -- Fix relative URL root in wiki_base_path. !33841 -- Return code navigation path for nil diff_refs. !33850 -- Record audit event when an admin creates a new SSH Key for a user via the API. !33859 (Rajendra Kadam) -- Do not create duplicate issues for exising Alert Management alerts. !33860 -- Add link text to collapsed left sidebar links for screen readers. !33866 -- Update text in error tracking list error message. !33872 -- Adjust wrong column reference for ResetMergeStatus (background job). !33899 -- Fixed dashboard YAML file validaiton for files which do not contain object as root element. !33935 -- Fix design note scrolling. !33939 -- Update validates_hostname gem with support for more TLDs. !34010 -- Update wording of addMultipleToDiscussionWarning. !34088 -- Show all storages in settings. !34093 -- Set author as nullable in snippet GraphQL Type. !34135 -- Fix rendering of very long paths in merge request file tree. !34153 -- Remove not null constraint from events tables. !34190 -- Ensure we always generate a valid wiki event URL. !34191 -- Send information about attached files to the GraphQL mutation. !34221 -- Update issue limits template to use minutes. !34254 -- Add route for the lost-and-found group and update the route of orphaned projects. !34285 -- GraphQL - properly handle pagination of millisecond-precision timestamps. !34352 -- Fix 500 error in BlobController#delete. !34367 -- Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup, a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31. !34399 (verenion) -- Fix issues with scroll on iOS / iPad OS. !34486 -- Fix order of integrations to be sorted alphabetically. !34501 -- Fix undefined method error. !34522 -- Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API. !34535 (Rajendra Kadam) -- Removed default artifact name for Terraform template. !34557 -- Footer system message fix. -- Set experiementation cookie for GitLab domain only. -- Add DS detection of build.gradle.kts. - -### Changed (76 changes, 5 of them are from the community) - -- Add a GraphQL endpoint to fetch Jira projects through its REST API. !28190 -- Change legends in monitor dashboards to tabular layout. !30131 -- Move pipelines routing under /-/ scope. !30730 -- Set markdown toolbar to use hyphens for lists. !31426 -- Use sprites for comment icons on Commits. !31696 -- Rate limit project export by user. !31719 -- Reorder diffs compare versions dropdowns. !31770 (Gilang Gumilar) -- Enable the `in this group` action in the Search dropdown. !31939 -- Externalize i18n strings from ./app/views/shared/_promo.html.haml. !32109 (Gilang Gumilar) -- Add Usage Ping count for all searches. !32111 -- Add tags_count to container registry api and controller. !32141 -- Externalize i18n strings from ./app/views/shared/milestones/_sidebar.html.haml. !32150 (Gilang Gumilar) -- Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml. !32162 (Gilang Gumilar) -- Improve Container Registry UI header. !32424 -- Added node size to cluster index. !32435 -- Update operations metrics settings title and description to make them general. !32494 -- Track merge_requests_users usage data. !32562 -- Adds cluster CPU and Memory to cluster index. !32601 -- Allow the snippet create service to accept an array of files. !32649 -- Move review related controllers/workers outside EE. !32663 -- Move the Members section from settings to the side nav for projects. !32667 -- Show more context in unresolved jump button. !32737 -- Exclude extra.server fields from exceptions_json.log. !32770 -- Improve new/unknown sign-in email styling. !32808 -- Allow the snippet update service to accept an array of files. !32832 -- Add new issue link to email notification header. !32833 -- Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium to 1.7.4. !32931 -- Update artifacts section to show when an artifact is locked. !32992 -- Include tag count in the image repository list. !33027 -- Clean up gitlab-shell install-from-source path. !33057 -- Increase LFS token default time to 2 hours. !33140 -- Add explicit mention of Merge request in Slack message. !33152 -- Expose `release_links.type` via API. !33154 -- Add link_type column to release_links table. !33156 -- Move broadcast notification dismiss button to the top. !33174 -- Remove null constraint for JID in GroupImportState. !33181 -- Added provider type icon to cluster list. !33196 -- Remove search icon from Project find file button. !33198 -- Refine SAST language detection by frameworks. !33226 -- Render Merge request reference as link. !33248 -- Upgrade to Gitaly v13.1.0-rc1. !33302 -- Show disabled suggestion button with tooltip message. !33357 -- Add update validations to SnippetInputAction. !33379 -- Add snippet DB visibility check in spec. !33388 (Jacopo Beschi @jacopo-beschi) -- Add Hugo logo to project templates. !33402 -- Add GitBook logo to project templates. !33403 -- Add GoMicro logo to project templates. !33404 -- Add Jekyll logo to project templates. !33405 -- Add Hexo logo to project templates. !33406 -- Rename Add Designs button. !33491 -- Add CPU, memory usage charts to self monitoring default dashboard. !33532 -- Add database migrations to design_management_designs.filename to enforce a 255 character limit, and modify any filenames that exceed that limit. !33565 -- Track Sentry error status updates with dedicated actions. !33623 -- Alert Managament: Change sorting order to have newest alerts first. !33642 -- Add blobs field to SnippetType in GraphQL. !33657 -- Format metrics column chart x axis dates. !33681 -- Style ToastUI contextual menus. !33719 -- Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG. !33799 -- Add whether instance has Auto DevOps enabled to usage ping. !33811 -- Update local IP address and domain name allow list input label. !33812 -- Add date time format to the monitor stacked-column chart. !33814 -- Allow Tf Plan to genrate multiple reports. !33867 -- Remove async_merge_request_check_mergeability feature flag. !33917 -- Filter potentially-sensitive Sidekiq arguments from logs and Sentry. !33967 -- Update Static Site Editor toolbar to group inline-code and code-block buttons together. !34006 -- Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS. !34076 -- Add ability to filter self monitoring resource usage charts by instance name. !34084 -- Pick repository storage based on weight. !34095 -- Display error for YAML files that are too large. !34199 -- Change copy of webhooks / integration help text. !34301 -- Update board header icons. !34366 -- Show Redis instance in performance bar. !34377 -- Add secret detection template to Auto DevOps. !34467 -- Add allowed actions to snippet input action. !34499 -- Change from vendor specific to Gitlab. !34576 -- Assign alerts sidebar base. - -### Performance (19 changes, 1 of them is from the community) - -- Improve performance of commit search by limiting the number of results requested. !32260 -- Add GraphQL lookahead support. !32373 -- Update index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial index for secret_detection. !32584 -- Add index on id and type for Snippets. !32885 -- Use build_stubbed to avoid interacting with the DB in todos helper specs. !32906 (Arun Kumar Mohan) -- Optimize SQL queries on Milestone index page. !32953 -- Add build report results data model. !32991 -- Adjust condition for partial indexes on services table. !33044 -- Add index to issues and epics on last_edited_by_id. !33075 -- Fix preconnect typo in rel link. !33255 -- Add project_id, user_id, status, ref index to ci_pipelines. !33290 -- Move migration related to ci_builds to post_deployment. !33416 -- Reduce redundant queries for Search API users scope. !33795 -- Speed up boot time in production. !33929 -- Harden CI pipelines usage data queries with an index. !34045 -- Add partial index on locked merge requets. !34127 -- Lazy load commit_date and authored_date on Commit. !34181 -- Optimize container repository for groups query. !34364 -- Enable CI Atomic Processing by default. - -### Added (149 changes, 14 of them are from the community) - -- Add rake task to verify encrypted data through secrets. !21851 -- User can apply multiple suggestions at the same time. !22439 (Jesse Hall) -- Resolve Add a button to assign users who have commented on an issue. !23883 -- Resolve Graph code coverage changes over time for a project. !26174 -- Add doc for custom validators in api styleguide. !26734 (Rajendra Kadam) -- Add Scheduled Job for Monitoring Monitor Group Demo Environments. !27360 -- Add setting to allow merge on skipped pipeline. !27490 (Mathieu Parent) -- Add dark theme (alpha). !28252 -- Show estimate on issues list. !28271 (Lee Tickett) -- Make Fixed Email Notification Generally Available. !28338 (jacopo-beschi) -- Add a link to the `renamed` viewer to fully expand the renamed file (if it's text). !28448 -- Focus and toggle metrics dashboard panels via keyboard. !28603 -- Remove `scoped_approval_rules` feature flag. !28864 (Lee Tickett) -- Create Group import UI for creating new Groups. !29271 -- Add finder for group-level runners. !29283 (Arthur de Lapertosa Lisboa) -- Allow customization of badge key_text and key_width. !29381 (Fabian Schneider @fabsrc) -- Support Workhorse directly uploading files to S3. !29389 -- Add frontend support for multiline comments. !29516 -- Support first_name and last_name attributes in LDAP user sync. !29542 -- Add link to status page detail view for status page published issues. !30249 -- Add metrics dashboard name to document title. !30392 -- Backfill StatusPage::Published incidents and enable a publish quick action for EE. !30906 -- Add missing Merge Request fields. !30935 -- Show build status on branch list. !30948 (Lee Tickett) -- Add mutation to create commits in GraphQL. !31102 -- Add GraphQL support for authored and assigned Merge Requests. !31227 -- Add usage data metrics for terraform states. !31280 -- Add usage data metrics for terraform reports. !31281 -- Add API endpoint for listing bridge jobs. !31370 (Abhijith Sivarajan) -- SpamVerdictService can call external spam check endpoint. !31449 -- Move Admin note feature to GitLab Core. !31457 (Rajendra) -- Add DAG serializer for pipelines controller. !31583 -- Save repository storages in application settings with weights. !31645 -- Add API endpoint for resource milestone events. !31720 -- Show import in progress screen for group imports. !31731 -- Add Verify/FailFast CI template. !31812 -- Improve Add/Remove Issue Labels API. !31864 (Lee Tickett) -- Add mutation to create a merge request in GraphQL. !31867 -- Add warning popup for Elastic Stack update. !31972 -- Add API support for sharing groups with groups. !32008 -- Add the container expiration policy attribute to the project GraphQL type. !32100 -- Add GraphQL support for project and group labels. !32113 -- Add number of database calls to Prometheus metrics and logs for sidekiq and request. !32131 -- Filter pipelines by status. !32151 -- Filter pipelines based on url query params. !32230 -- Add metrics for Redis usage during Sidekiq job execution. !32265 -- Add filters to merge request fields. !32328 -- Support reading .editorconfig files inside of the Web IDE. !32378 -- [Frontend] Resolvable design discussions. !32399 -- Table index added to `metrics_dashboard_annotations` for future pruning of stale metrics Annotations for metrics dashboards are now checked for valid start and end dates. !32433 -- Enable GitLab-Flavored Markdown processing for design links. !32446 -- Filter Pipelines by Tag Name. !32470 -- Adds sorting by column to alert management list. !32478 -- Add project specific repository storage API. !32493 -- Adapt Limitable for system-wide features. !32574 -- Add application limits to instance level CI/CD variables. !32575 -- Add model for project level security auto-fix settings. !32577 -- Expose Jira imported issues count in GraphQL. !32580 -- Organize alerts by status tabs. !32582 -- Add note to ECS CI template. !32597 -- Add metrics for Redis usage during web requests. !32605 -- Add database and GraphQL support for alert assignees. !32609 -- Set fingerprints and increment events count for Alert Management alerts. !32613 -- Process stuck jira import jobs. !32643 -- Allow user to add custom links to their metrics dashboard panels. !32646 -- Add tags to experimental queue selector attributes. !32651 -- Allow generic endpoint to receive alerts from external Prometheus. !32676 -- Customize the Cloud Native Buildpack builder used with Auto Build. !32691 -- Add timezone display to alert based issue start time. !32702 -- Display dates on metrics dashboards in UTC time zone. !32746 -- Store Todo resolution method. !32753 -- Add experience_level to user_preferences. !32784 -- Remove metrics dashboard annotations attached to time periods older than two weeks. !32838 -- Monitor:Health metrics instrumenation. !32846 -- Adds PostHog as a CI/CD Managed Application. !32856 -- Groups API has top_level_only option to exclude subgroups. !32870 -- Create operations_feature_flags_issues table. !32876 -- Add api.js methods to update issues and merge requests. !32893 -- Render user-defined links in dashboard yml file on metrics dashboard. !32895 -- Add accessibility report MR widget. !32902 -- Add a GraphQL mutation for toggling the resolved state of a Discussion. !32934 -- Add container expiration policy objects to the GraphQL API. !32944 -- Don't hide Commit tab in Web IDE when there are no changes yet. !32979 -- Add column for alert slack notifications. !33017 -- Add ability to insert an image via SSE. !33029 -- Add user root query to GraphQL API. !33041 -- Adds groupMembership and projectMembership to GraphQL API. !33049 -- Alerts list pagination. !33073 -- Add ApplicationSetting ui changes for repository_storages_weighted. !33096 -- Display confirmation modal when user exits SSE and there are unsaved changes. !33103 -- Add column dashboard_timezone to project_metrics_setting. !33120 -- Allow the assignment of alerts to users from the alert detail view. !33122 -- Add solarized dark for Web IDE. !33148 -- Add support for artifacts/exclude configuration. !33170 -- Add root users query to GraphQL API. !33195 -- Added validation for YAML files with metrics dashboard definitions. !33202 -- Create issue from alert. !33213 -- Add max import file size option. !33215 (Roger Meier) -- Add system note when assigning user to alert. !33217 -- Add count of alerts from all sources to usage ping. !33220 -- Add button to create an issue from an alert management alert. !33221 -- Add more detail to alert integration settings description. !33244 -- Add Evidence to Releases GraphQL endpoint. !33254 -- Add support for pasting images in the Web IDE. !33256 -- Add ProjectAccessToken table. !33272 -- Automatically resolve alert when associated issue closes. !33278 -- Add `link_type` to `ReleaseLink` GraphQL type. !33386 -- Add members to project graphQL endpoint. !33418 -- Update Static Site Editor WYSIWYG mode to hide front matter. !33441 -- Added delete action for Dashboard Annotations in GraphQL. !33468 -- Create graphQL endpoint for Jira users import. !33501 -- Support IAP protected prometheus installations. !33508 -- New instance-level variables UI. !33510 -- Provide `__range` variable for Prometheus queries. !33521 -- Add support for `git filter-repo` to repository cleanup. !33576 -- Close open reply input fields in the design view sidebar when leaving a new comment. !33587 -- Add dashboard schema validation warnings as metrics dashboard GraphQL field. !33592 -- Add time range to user-defined links in metrics dashboard. !33663 -- Increase events count for Prometheus alerts. !33706 -- Track pod logs refresh action. !33802 -- Add secret detection template. !33869 -- Add DAG visualization MVC. !33958 -- Introduce a feature flag for Vue-based UI for all import providers. !33980 -- Add sticky title on Issue pages. !33983 -- Allow Release asset links to be associated with a type. !33998 -- Support user-defined Grafana links in metrics dashboard. !34003 -- Adds AWS guidance to CI/CD > Add Variable modal. !34009 -- Show custom attributes within Admin Pages. !34017 (Roger Meier) -- Enable Slack notifications for alerts. !34038 -- Container expiration policy regular expressions are now validated. !34063 -- Add todo when alert is assigned to a user. !34104 -- Track merge requests submitted by Static Site Editor. !34105 -- Turn off alert issue creation by default. !34107 -- Add detailed logs of each Redis instance usage during job execution and web requests. !34110 -- Add API to schedule project repository storage moves. !34119 -- Add validation step on backend for metrics dashboard links. !34204 -- Track when Static Site Editor is initialized. !34215 -- Bring SAST to Core - brakeman. !34217 -- Mask key comments when exposing SSH/Deploy Keys via the API. !34255 -- Convert `:release` yaml to `release-cli` commands. !34261 -- Validate regex before sending them to CleanupContainerRepositoryWorker. !34282 -- Add secret_detection to DOWNLOADABLE_TYPES. !34313 -- Enable ability to assign alerts to users with corresponding system notes and todos. !34360 -- Enable CI Inheriting Env Variables feature. !34495 -- Show tooltip on error detail page when hovering over dates. !34506 -- Add native code intelligence. !34542 -- Bump cluster-applications version to v0.20.0. !34569 -- Add search argument for AlertStatusCountsResolver. !34596 -- Allow CI_JOB_TOKEN for authenticating to the Terraform state API. !34618 - -### Other (65 changes, 36 of them are from the community) - -- Improve fast-forward merge is not possible message. !22834 (Ben Bodenmiller) -- Remove unused WAF indexes from CI variables. !30021 -- Update the visual design of badges in some areas. !31646 -- Extract featurable concern from ProjectFeature. !31700 (Alexander Randa) -- Remove update function logic from list model. !31900 (nuwe1) -- Remove nextpage function logic from list model. !31904 (nuwe1) -- Squash database migrations prior to 2019 into one. !31936 -- Update deprecated slot syntax in app/assets/javascripts/reports/components/grouped_test_reports_app.vue. !31975 (Gilang Gumilar) -- Replace slot syntax for Vue 3 migration. !31987 (gaslan) -- Update deprecated slot syntax in ./app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue. !31994 (Gilang Gumilar) -- Update deprecated slot syntax in ./app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue. !31995 (Gilang Gumilar) -- Update deprecated slot syntax in ./app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue. !32010 (Gilang Gumilar) -- Update deprecated slot syntax in ./app/assets/javascripts/environments/components/environments_app.vue. !32011 (Gilang Gumilar) -- Remove setLoadingState logic from issue model. !32226 (nuwe1) -- Remove addAssignee logic from issue model. !32231 (nuwe1) -- Remove addLabel Logic from issue models. !32233 (nuwe1) -- Remove addMilestone logic from issue model. !32235 (nuwe1) -- Remove destroy function logic from list model. !32237 (nuwe1) -- Remove findAssignee logic from issue model. !32238 (nuwe1) -- Remove findLabel logic from issue model. !32239 (nuwe1) -- Remove findIssue logic from list model. !32241 (nuwe1) -- Remove moveIssue logic from list model. !32242 (nuwe1) -- Remove newIssue logic from list model. !32244 (nuwe1) -- Remove removeAllAssignees logic from issue model. !32247 (nuwe1) -- Remove removeAssignee logic from issue model. !32248 (nuwe1) -- Clarify verbiage for stuck job messages. !32250 -- Remove removeLabel logic from issue model. !32251 (nuwe1) -- Remove removeLabels logic from issue model. !32252 (nuwe1) -- Remove removeMilestone logic from issue model. !32253 (nuwe1) -- Remove removeMultipleIssues logic from list model. !32254 (nuwe1) -- Remove setFetchingState logic from issue model. !32255 (nuwe1) -- Remove updateData logic from issue model. !32256 (nuwe1) -- Update U2F docs for Firefox 67+. !32289 (Takuya Noguchi) -- Update alert management mobile table alignment. !32295 -- Include available instance memory in usage ping. !32315 -- Moves merge request reviews into Core. !32558 -- Update GitLab Runner Helm Chart to 0.17.0. !32634 -- Add snowplow tracking for logs page. !32704 -- Extend "Remember me" token after each login. !32730 -- Assign alerts sidebar container fix. !32743 -- Add anchor for creating a branch. !32745 -- Tidy. !32759 (Lee Tickett) -- Less verbose JiraService error logs. !32847 -- Reduced padding and increased emphasis of titles within the epic tree. !32873 -- Remove obsolete users.ghost column. !32957 -- Move NoPrimary table def to last context in spec. !33015 (Rajendra Kadam) -- Document github rate limit behavior. !33090 -- Added build_id column to requirements_management_test_reports table. !33184 -- Add version history information on U2F support. !33229 (Takuya Noguchi) -- Convert IP spoofing errors into client errors. !33280 -- Update docs to reflect move web IDE Terminal and file sync to Core. !33419 -- Add hovering icon for sorting columns on alert management list. !33429 -- Avoid javascript for omniauth logins. !33459 (Diego Louzán) -- Add opacity transition to active design discussion pins. !33493 -- Update GitLab Runner Helm Chart to 0.17.1. !33504 -- Make project selector in various dashboard more translatable. !33771 -- Update Workhorse to v8.35.0. !33817 -- Remove FF hide_token_from_runners_api. !33947 -- Bump omniauth_openid_connect to 0.3.5. !34030 (Roger Meier) -- Specify tiers for SAML SSO at self-hosted plans. !34040 (Takuya Noguchi) -- Backfill failed imported snippet repositories. !34052 -- Use GitLab SVG icon for file attacher action. !34196 -- Add GraphQL snippet FileInputType. !34442 -- Update red hex values to match GitLab UI. !34544 -- Remove removeIssue logic from list model. (nuwe1) - - ## 13.0.6 (2020-06-10) - No changes. @@ -140,6 +140,7 @@ gem 'deckar01-task_list', '2.3.1' gem 'gitlab-markup', '~> 1.7.1' gem 'github-markup', '~> 1.7.0', require: 'github/markup' gem 'commonmarker', '~> 0.20' +gem 'kramdown', '~> 2.2.1' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 6.1.2' gem 'org-ruby', '~> 0.9.12' diff --git a/Gemfile.lock b/Gemfile.lock index 2e3537e223f..cfccca87bf8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -575,7 +575,8 @@ GEM kgio (2.11.3) knapsack (1.17.0) rake - kramdown (2.1.0) + kramdown (2.2.1) + rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) kubeclient (4.6.0) @@ -1282,6 +1283,7 @@ DEPENDENCIES jwt (~> 2.1.0) kaminari (~> 1.0) knapsack (~> 1.17) + kramdown (~> 2.2.1) kubeclient (~> 4.6.0) letter_opener_web (~> 1.3.4) license_finder (~> 5.4) diff --git a/app/assets/javascripts/lib/utils/axios_startup_calls.js b/app/assets/javascripts/lib/utils/axios_startup_calls.js new file mode 100644 index 00000000000..a86c8efca1f --- /dev/null +++ b/app/assets/javascripts/lib/utils/axios_startup_calls.js @@ -0,0 +1,47 @@ +import { isEmpty } from 'lodash'; +import { mergeUrlParams } from './url_utility'; + +// We should probably not couple this utility to `gon.gitlab_url` +// Also, this would replace occurrences that aren't at the beginning of the string +const removeGitLabUrl = url => url.replace(gon.gitlab_url, ''); + +const getFullUrl = req => { + const url = removeGitLabUrl(req.url); + return mergeUrlParams(req.params || {}, url); +}; + +const setupAxiosStartupCalls = axios => { + const { startup_calls: startupCalls } = window.gl || {}; + + if (!startupCalls || isEmpty(startupCalls)) { + return; + } + + // TODO: To save performance of future axios calls, we can + // remove this interceptor once the "startupCalls" have been loaded + axios.interceptors.request.use(req => { + const fullUrl = getFullUrl(req); + + const existing = startupCalls[fullUrl]; + + if (existing) { + // eslint-disable-next-line no-param-reassign + req.adapter = () => + existing.fetchCall.then(res => + // eslint-disable-next-line promise/no-nesting + res.json().then(data => ({ + data, + status: res.status, + statusText: res.statusText, + headers: res.headers, + config: req, + request: req, + })), + ); + } + + return req; + }); +}; + +export default setupAxiosStartupCalls; diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js index 4eec5bffc66..9d517f45caa 100644 --- a/app/assets/javascripts/lib/utils/axios_utils.js +++ b/app/assets/javascripts/lib/utils/axios_utils.js @@ -1,6 +1,7 @@ import axios from 'axios'; import csrf from './csrf'; import suppressAjaxErrorsDuringNavigation from './suppress_ajax_errors_during_navigation'; +import setupAxiosStartupCalls from './axios_startup_calls'; axios.defaults.headers.common[csrf.headerKey] = csrf.token; // Used by Rails to check if it is a valid XHR request @@ -14,6 +15,8 @@ axios.interceptors.request.use(config => { return config; }); +setupAxiosStartupCalls(axios); + // Remove the global counter axios.interceptors.response.use( response => { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 79a164a5574..1baaf0b9ee8 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -329,13 +329,6 @@ class ApplicationController < ActionController::Base end end - def event_filter - @event_filter ||= - EventFilter.new(params[:event_filter].presence || cookies[:event_filter]).tap do |new_event_filter| - cookies[:event_filter] = new_event_filter.filter - end - end - # JSON for infinite scroll via Pager object def pager_json(partial, count, locals = {}) html = render_to_string( diff --git a/app/controllers/concerns/filters_events.rb b/app/controllers/concerns/filters_events.rb new file mode 100644 index 00000000000..c82d0318fd3 --- /dev/null +++ b/app/controllers/concerns/filters_events.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module FiltersEvents + def event_filter + @event_filter ||= new_event_filter.tap { |ef| cookies[:event_filter] = ef.filter } + end + + private + + def new_event_filter + active_filter = params[:event_filter].presence || cookies[:event_filter] + EventFilter.new(active_filter) + end +end diff --git a/app/controllers/dashboard/projects_controller.rb b/app/controllers/dashboard/projects_controller.rb index 25c48fadf49..b9200534dee 100644 --- a/app/controllers/dashboard/projects_controller.rb +++ b/app/controllers/dashboard/projects_controller.rb @@ -6,6 +6,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController include OnboardingExperimentHelper include SortingHelper include SortingPreference + include FiltersEvents prepend_before_action(only: [:index]) { authenticate_sessionless_user!(:rss) } before_action :set_non_archived_param diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index dd9e6488bc5..07cc31fb7d3 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -2,6 +2,7 @@ class DashboardController < Dashboard::ApplicationController include IssuableCollectionsAction + include FiltersEvents prepend_before_action(only: [:issues]) { authenticate_sessionless_user!(:rss) } prepend_before_action(only: [:issues_calendar]) { authenticate_sessionless_user!(:ics) } diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index fba374dbb44..2162d397da3 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -7,6 +7,7 @@ class GroupsController < Groups::ApplicationController include PreviewMarkdown include RecordUserLastActivity include SendFileUpload + include FiltersEvents extend ::Gitlab::Utils::Override respond_to :html diff --git a/app/controllers/projects/pipelines/tests_controller.rb b/app/controllers/projects/pipelines/tests_controller.rb new file mode 100644 index 00000000000..6e4b5155a4f --- /dev/null +++ b/app/controllers/projects/pipelines/tests_controller.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Projects + module Pipelines + class TestsController < Projects::ApplicationController + before_action :pipeline + before_action :authorize_read_pipeline! + before_action :authorize_read_build! + before_action :validate_feature_flag! + + def summary + respond_to do |format| + format.json do + render json: TestReportSerializer + .new(project: project, current_user: @current_user) + .represent(pipeline.test_report_summary) + end + end + end + + private + + def validate_feature_flag! + render_404 unless Feature.enabled?(:build_report_summary, project) + end + + def pipeline + project.all_pipelines.find(tests_params[:id]) + end + + def tests_params + params.permit(:id) + end + end + end +end diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb index 0b6c0db211e..a8189a82c56 100644 --- a/app/controllers/projects/pipelines_controller.rb +++ b/app/controllers/projects/pipelines_controller.rb @@ -186,7 +186,7 @@ class Projects::PipelinesController < Projects::ApplicationController format.json do render json: TestReportSerializer .new(current_user: @current_user) - .represent(pipeline_test_report, project: project) + .represent(pipeline_test_report, project: project, details: true) end end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f0ddd62e996..e0fdfda7421 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -8,6 +8,7 @@ class ProjectsController < Projects::ApplicationController include SendFileUpload include RecordUserLastActivity include ImportUrlParams + include FiltersEvents prepend_before_action(only: [:show]) { authenticate_sessionless_user!(:rss) } diff --git a/app/finders/user_recent_events_finder.rb b/app/finders/user_recent_events_finder.rb index 3f2e813d381..e9136919a7e 100644 --- a/app/finders/user_recent_events_finder.rb +++ b/app/finders/user_recent_events_finder.rb @@ -46,7 +46,7 @@ class UserRecentEventsFinder SQL # Workaround for https://github.com/rails/rails/issues/24193 - Event.from([Arel.sql(sql)]) + ensure_design_visibility(Event.from([Arel.sql(sql)])) end # rubocop: enable CodeReuse/ActiveRecord @@ -59,4 +59,11 @@ class UserRecentEventsFinder def projects target_user.project_interactions.to_sql end + + # TODO: remove when the :design_activity_events feature flag is removed. + def ensure_design_visibility(events) + return events if Feature.enabled?(:design_activity_events) + + events.not_design + end end diff --git a/app/graphql/mutations/merge_requests/update.rb b/app/graphql/mutations/merge_requests/update.rb new file mode 100644 index 00000000000..b583fdfca9b --- /dev/null +++ b/app/graphql/mutations/merge_requests/update.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Mutations + module MergeRequests + class Update < Base + graphql_name 'MergeRequestUpdate' + + description 'Update attributes of a merge request' + + argument :title, GraphQL::STRING_TYPE, + required: false, + description: copy_field_description(Types::MergeRequestType, :title) + + argument :target_branch, GraphQL::STRING_TYPE, + required: false, + description: copy_field_description(Types::MergeRequestType, :target_branch) + + argument :description, GraphQL::STRING_TYPE, + required: false, + description: copy_field_description(Types::MergeRequestType, :description) + + def resolve(args) + merge_request = authorized_find!(args.slice(:project_path, :iid)) + attributes = args.slice(:title, :description, :target_branch).compact + + ::MergeRequests::UpdateService + .new(merge_request.project, current_user, attributes) + .execute(merge_request) + + errors = errors_on_object(merge_request) + + { + merge_request: merge_request.reset, + errors: errors + } + end + end + end +end diff --git a/app/graphql/types/mutation_type.rb b/app/graphql/types/mutation_type.rb index 8874c56dfdb..135cd5e392d 100644 --- a/app/graphql/types/mutation_type.rb +++ b/app/graphql/types/mutation_type.rb @@ -20,6 +20,7 @@ module Types mount_mutation Mutations::Issues::SetDueDate mount_mutation Mutations::Issues::Update mount_mutation Mutations::MergeRequests::Create + mount_mutation Mutations::MergeRequests::Update mount_mutation Mutations::MergeRequests::SetLabels mount_mutation Mutations::MergeRequests::SetLocked mount_mutation Mutations::MergeRequests::SetMilestone diff --git a/app/graphql/types/namespace_type.rb b/app/graphql/types/namespace_type.rb index 1714284a5cf..43666048edb 100644 --- a/app/graphql/types/namespace_type.rb +++ b/app/graphql/types/namespace_type.rb @@ -27,6 +27,9 @@ module Types description: 'Indicates if Large File Storage (LFS) is enabled for namespace' field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true, description: 'Indicates if users can request access to namespace' + field :storage_size_limit, GraphQL::INT_TYPE, null: true, + description: 'Total storage limit of the root namespace in bytes', + resolve: -> (obj, _args, _ctx) { Namespace::RootStorageSize.new(obj).limit } field :root_storage_statistics, Types::RootStorageStatisticsType, null: true, diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bdfdf5a69b3..e8bd5ad9b9b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -335,6 +335,15 @@ module ApplicationHelper } end + def page_startup_api_calls + @api_startup_calls + end + + def add_page_startup_api_call(api_path, options: {}) + @api_startup_calls ||= {} + @api_startup_calls[api_path] = options + end + def autocomplete_data_sources(object, noteable_type) return {} unless object && noteable_type diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index c1f343edd10..d4e07713cda 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -29,7 +29,11 @@ module EventsHelper def event_action_name(event) target = if event.target_type - if event.note? + if event.design? || event.design_note? + 'design' + elsif event.wiki_page? + 'wiki page' + elsif event.note? event.note_target_type else event.target_type.titleize.downcase @@ -58,11 +62,30 @@ module EventsHelper end def event_filter_visible(feature_key) + return designs_visible? if feature_key == :designs return true unless @project @project.feature_available?(feature_key, current_user) end + def designs_visible? + return false unless Feature.enabled?(:design_activity_events) + + if @project + design_activity_enabled?(@project) + elsif @group + design_activity_enabled?(@group) + elsif @projects + @projects.with_namespace.include_project_feature.any? { |p| design_activity_enabled?(p) } + else + true + end + end + + def design_activity_enabled?(project) + Ability.allowed?(current_user, :read_design_activity, project) + end + def comments_visible? event_filter_visible(:repository) || event_filter_visible(:merge_requests) || @@ -94,6 +117,12 @@ module EventsHelper elsif event.milestone? words << "##{event.target_iid}" if event.target_iid words << "in" + elsif event.design? + words << event.design.to_reference + words << "in" + elsif event.wiki_page? + words << event.target_title + words << "in" elsif event.target prefix = if event.merge_request? @@ -187,6 +216,15 @@ module EventsHelper end end + def event_design_title_html(event) + capture do + concat content_tag(:span, _('design'), class: "event-target-type append-right-4") + concat link_to(event.design.reference_link_text, design_url(event.design), + title: event.target_title, + class: 'has-tooltip event-design event-target-link append-right-4') + end + end + def event_wiki_page_target_url(event) project_wiki_url(event.project, event.target&.canonical_slug || Wiki::HOMEPAGE) end @@ -214,6 +252,18 @@ module EventsHelper sprite_icon(icon_name, size: size) if icon_name end + DESIGN_ICONS = { + 'created' => 'upload', + 'updated' => 'pencil', + 'destroyed' => ICON_NAMES_BY_EVENT_TYPE['destroyed'], + 'archived' => 'archive' + }.freeze + + def design_event_icon(action, size: 24) + icon_name = DESIGN_ICONS[action] + sprite_icon(icon_name, size: size) if icon_name + end + def icon_for_profile_event(event) if current_path?('users#show') content_tag :div, class: "system-note-image #{event.action_name.parameterize}-icon" do @@ -229,6 +279,8 @@ module EventsHelper def inline_event_icon(event) unless current_path?('users#show') content_tag :span, class: "system-note-image-inline d-none d-sm-flex append-right-4 #{event.action_name.parameterize}-icon align-self-center" do + next design_event_icon(event.action, size: 14) if event.design? + icon_for_event(event.action_name, size: 14) end end @@ -244,7 +296,7 @@ module EventsHelper private - def design_url(design, opts) + def design_url(design, opts = {}) designs_project_issue_url( design.project, design.issue, diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 497e1a4d74a..8e8fd774310 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -80,6 +80,7 @@ module Ci has_one :pipeline_config, class_name: 'Ci::PipelineConfig', inverse_of: :pipeline has_many :daily_build_group_report_results, class_name: 'Ci::DailyBuildGroupReportResult', foreign_key: :last_pipeline_id + has_many :latest_builds_report_results, through: :latest_builds, source: :report_results accepts_nested_attributes_for :variables, reject_if: :persisted? @@ -802,6 +803,10 @@ module Ci complete? && latest_report_builds(reports_scope).exists? end + def test_report_summary + Gitlab::Ci::Reports::TestReportSummary.new(latest_builds_report_results) + end + def test_reports Gitlab::Ci::Reports::TestReports.new.tap do |test_reports| latest_report_builds(Ci::JobArtifact.test_reports).preload(:project).find_each do |build| diff --git a/app/models/event_collection.rb b/app/models/event_collection.rb index 4c178e27b75..6c268bf6c36 100644 --- a/app/models/event_collection.rb +++ b/app/models/event_collection.rb @@ -45,9 +45,10 @@ class EventCollection private def apply_feature_flags(events) - return events if ::Feature.enabled?(:wiki_events) + events = events.not_wiki_page unless ::Feature.enabled?(:wiki_events) + events = events.not_design unless ::Feature.enabled?(:design_activity_events) - events.not_wiki_page + events end def project_events diff --git a/app/models/project.rb b/app/models/project.rb index 89e55c5f6bb..f46583d1d98 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -455,6 +455,7 @@ class Project < ApplicationRecord scope :with_statistics, -> { includes(:statistics) } scope :with_namespace, -> { includes(:namespace) } scope :with_import_state, -> { includes(:import_state) } + scope :include_project_feature, -> { includes(:project_feature) } scope :with_service, ->(service) { joins(service).eager_load(service) } scope :with_shared_runners, -> { where(shared_runners_enabled: true) } scope :with_container_registry, -> { where(container_registry_enabled: true) } diff --git a/app/models/snippet_input_action.rb b/app/models/snippet_input_action.rb index 7f4ab775ab0..52c77be1f45 100644 --- a/app/models/snippet_input_action.rb +++ b/app/models/snippet_input_action.rb @@ -18,6 +18,7 @@ class SnippetInputAction validates :file_path, presence: true validates :content, presence: true, if: -> (action) { action.create_action? || action.update_action? } validate :ensure_same_file_path_and_previous_path, if: :update_action? + validate :ensure_different_file_path_and_previous_path, if: :move_action? validate :ensure_allowed_action def initialize(action: nil, previous_path: nil, file_path: nil, content: nil, allowed_actions: nil) @@ -52,6 +53,12 @@ class SnippetInputAction errors.add(:file_path, "can't be different from the previous_path attribute") end + def ensure_different_file_path_and_previous_path + return if previous_path != file_path + + errors.add(:file_path, 'must be different from the previous_path attribute') + end + def ensure_allowed_action return if @allowed_actions.empty? diff --git a/app/policies/concerns/find_group_projects.rb b/app/policies/concerns/find_group_projects.rb index e2cb90079c7..aad9081bd7d 100644 --- a/app/policies/concerns/find_group_projects.rb +++ b/app/policies/concerns/find_group_projects.rb @@ -3,11 +3,11 @@ module FindGroupProjects extend ActiveSupport::Concern - def group_projects_for(user:, group:) + def group_projects_for(user:, group:, only_owned: true) GroupProjectsFinder.new( group: group, current_user: user, - options: { include_subgroups: true, only_owned: true } + options: { include_subgroups: true, only_owned: only_owned } ).execute end end diff --git a/app/policies/group_policy.rb b/app/policies/group_policy.rb index 136ac4cce63..bfd598525f6 100644 --- a/app/policies/group_policy.rb +++ b/app/policies/group_policy.rb @@ -42,6 +42,14 @@ class GroupPolicy < BasePolicy @subject.subgroup_creation_level == ::Gitlab::Access::MAINTAINER_SUBGROUP_ACCESS end + condition(:design_management_enabled) do + group_projects_for(user: @user, group: @subject, only_owned: false).any? { |p| p.design_management_enabled? } + end + + rule { design_management_enabled }.policy do + enable :read_design_activity + end + rule { public_group }.policy do enable :read_group enable :read_package @@ -70,6 +78,10 @@ class GroupPolicy < BasePolicy enable :read_board end + rule { ~can?(:read_group) }.policy do + prevent :read_design_activity + end + rule { has_access }.enable :read_namespace rule { developer }.policy do diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index f87c72007ec..6ff16b71ea3 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -545,11 +545,13 @@ class ProjectPolicy < BasePolicy rule { can?(:read_issue) }.policy do enable :read_design + enable :read_design_activity end # Design abilities could also be prevented in the issue policy. rule { design_management_disabled }.policy do prevent :read_design + prevent :read_design_activity prevent :create_design prevent :destroy_design end diff --git a/app/serializers/test_suite_entity.rb b/app/serializers/test_suite_entity.rb index 53fa830718a..d04fd5f6a84 100644 --- a/app/serializers/test_suite_entity.rb +++ b/app/serializers/test_suite_entity.rb @@ -9,9 +9,11 @@ class TestSuiteEntity < Grape::Entity expose :failed_count expose :skipped_count expose :error_count - expose :suite_error - expose :test_cases, using: TestCaseEntity do |test_suite| - test_suite.suite_error ? [] : test_suite.test_cases.values.flat_map(&:values) + with_options if: -> (_, opts) { opts[:details] } do |test_suite| + expose :suite_error + expose :test_cases, using: TestCaseEntity do |test_suite| + test_suite.suite_error ? [] : test_suite.test_cases.values.flat_map(&:values) + end end end diff --git a/app/services/event_create_service.rb b/app/services/event_create_service.rb index 89c3225dbcd..fdf777f2bbe 100644 --- a/app/services/event_create_service.rb +++ b/app/services/event_create_service.rb @@ -97,23 +97,16 @@ class EventCreateService end def save_designs(current_user, create: [], update: []) - created = create.group_by(&:project).flat_map do |project, designs| - Feature.enabled?(:design_activity_events, project) ? designs : [] - end.to_set - updated = update.group_by(&:project).flat_map do |project, designs| - Feature.enabled?(:design_activity_events, project) ? designs : [] - end.to_set - return [] if created.empty? && updated.empty? + return [] unless Feature.enabled?(:design_activity_events) - records = created.zip([:created].cycle) + updated.zip([:updated].cycle) + records = create.zip([:created].cycle) + update.zip([:updated].cycle) + return [] if records.empty? create_record_events(records, current_user) end def destroy_designs(designs, current_user) - designs = designs.select do |design| - Feature.enabled?(:design_activity_events, design.project) - end + return [] unless Feature.enabled?(:design_activity_events) return [] unless designs.present? create_record_events(designs.zip([:destroyed].cycle), current_user) diff --git a/app/services/snippets/update_service.rb b/app/services/snippets/update_service.rb index 6cdc2c374da..1c097ed447a 100644 --- a/app/services/snippets/update_service.rb +++ b/app/services/snippets/update_service.rb @@ -38,7 +38,8 @@ module Snippets # Once we can perform different operations through this service # we won't need to keep track of the `content` and `file_name` fields if snippet_files.any? - params.merge!(content: snippet_files[0].content, file_name: snippet_files[0].file_path) + params[:content] = snippet_files[0].content if snippet_files[0].content + params[:file_name] = snippet_files[0].file_path end snippet.assign_attributes(params) diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml index c042cd2c3e3..83f7d743755 100644 --- a/app/views/events/_event.html.haml +++ b/app/views/events/_event.html.haml @@ -7,6 +7,8 @@ - if event.wiki_page? = render "events/event/wiki", event: event + - elsif event.design? + = render 'events/event/design', event: event - elsif event.created_project_action? = render "events/event/created_project", event: event - elsif event.push_action? diff --git a/app/views/events/event/_design.html.haml b/app/views/events/event/_design.html.haml new file mode 100644 index 00000000000..edaab3ec5a1 --- /dev/null +++ b/app/views/events/event/_design.html.haml @@ -0,0 +1,11 @@ += icon_for_profile_event(event) + += event_user_info(event) + +.event-title.d-flex.flex-wrap + = inline_event_icon(event) + %span.event-type.d-inline-block.append-right-4{ class: event.action_name } + = event.action_name + = event_design_title_html(event) + = render "events/event_scope", event: event + diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml index 886d4109ff5..5fcafb9332e 100644 --- a/app/views/layouts/_head.html.haml +++ b/app/views/layouts/_head.html.haml @@ -25,6 +25,8 @@ %meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' } + = render 'layouts/startup_js' + -# Open Graph - http://ogp.me/ %meta{ property: 'og:type', content: "object" } %meta{ property: 'og:site_name', content: site_name } diff --git a/app/views/layouts/_startup_js.html.haml b/app/views/layouts/_startup_js.html.haml new file mode 100644 index 00000000000..3eb68df07c6 --- /dev/null +++ b/app/views/layouts/_startup_js.html.haml @@ -0,0 +1,13 @@ +- return unless page_startup_api_calls.present? + += javascript_tag nonce: true do + :plain + var gl = window.gl || {}; + gl.startup_calls = #{page_startup_api_calls.to_json}; + if (gl.startup_calls && window.fetch) { + Object.keys(gl.startup_calls).forEach(apiCall => { + gl.startup_calls[apiCall] = { + fetchCall: fetch(apiCall) + }; + }); + } diff --git a/app/views/projects/_files.html.haml b/app/views/projects/_files.html.haml index 20d4084f428..5d2ceacfe3e 100644 --- a/app/views/projects/_files.html.haml +++ b/app/views/projects/_files.html.haml @@ -4,6 +4,9 @@ - project = local_assigns.fetch(:project) { @project } - content_url = local_assigns.fetch(:content_url) { @tree.readme ? project_blob_path(@project, tree_join(@ref, @tree.readme.path)) : project_tree_path(@project, @ref) } - show_auto_devops_callout = show_auto_devops_callout?(@project) +- add_page_startup_api_call logs_file_project_ref_path(@project, ref, @path, format: "json", offset: 0) +- if @tree.readme + - add_page_startup_api_call project_blob_path(@project, tree_join(@ref, @tree.readme.path), viewer: "rich", format: "json") #tree-holder.tree-holder.clearfix .nav-block diff --git a/app/views/shared/_event_filter.html.haml b/app/views/shared/_event_filter.html.haml index 1b2e8d3799d..0346765226d 100644 --- a/app/views/shared/_event_filter.html.haml +++ b/app/views/shared/_event_filter.html.haml @@ -17,4 +17,6 @@ = event_filter_link EventFilter::COMMENTS, _('Comments'), s_('EventFilterBy|Filter by comments') - if Feature.enabled?(:wiki_events) && (@project.nil? || @project.has_wiki?) = event_filter_link EventFilter::WIKI, _('Wiki'), s_('EventFilterBy|Filter by wiki') + - if event_filter_visible(:designs) + = event_filter_link EventFilter::DESIGNS, _('Designs'), s_('EventFilterBy|Filter by designs') = event_filter_link EventFilter::TEAM, _('Team'), s_('EventFilterBy|Filter by team') diff --git a/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml b/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml new file mode 100644 index 00000000000..4878eeb26e7 --- /dev/null +++ b/changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml @@ -0,0 +1,5 @@ +--- +title: Support first_name and last_name attributes in LDAP user sync +merge_request: 29542 +author: +type: added diff --git a/changelogs/unreleased/118613-spam-api-call.yml b/changelogs/unreleased/118613-spam-api-call.yml new file mode 100644 index 00000000000..68d4aa27071 --- /dev/null +++ b/changelogs/unreleased/118613-spam-api-call.yml @@ -0,0 +1,5 @@ +--- +title: SpamVerdictService can call external spam check endpoint +merge_request: 31449 +author: +type: added diff --git a/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml b/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml new file mode 100644 index 00000000000..579485e7488 --- /dev/null +++ b/changelogs/unreleased/13049-design-view-allow-comment-pins-on-designs-to-be-resolvable.yml @@ -0,0 +1,5 @@ +--- +title: "[Frontend] Resolvable design discussions" +merge_request: 32399 +author: +type: added diff --git a/changelogs/unreleased/13049-graphql-resolve-discussion.yml b/changelogs/unreleased/13049-graphql-resolve-discussion.yml new file mode 100644 index 00000000000..850d5b5aac4 --- /dev/null +++ b/changelogs/unreleased/13049-graphql-resolve-discussion.yml @@ -0,0 +1,5 @@ +--- +title: Add a GraphQL mutation for toggling the resolved state of a Discussion +merge_request: 32934 +author: +type: added diff --git a/changelogs/unreleased/17555-custom-text-for-badges.yml b/changelogs/unreleased/17555-custom-text-for-badges.yml new file mode 100644 index 00000000000..61132efa264 --- /dev/null +++ b/changelogs/unreleased/17555-custom-text-for-badges.yml @@ -0,0 +1,5 @@ +--- +title: Allow customization of badge key_text and key_width +merge_request: 29381 +author: Fabian Schneider @fabsrc +type: added diff --git a/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml b/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml new file mode 100644 index 00000000000..370d8f8ceb3 --- /dev/null +++ b/changelogs/unreleased/191455-add-a-button-to-assign-users-who-have-commented-on-an-issue.yml @@ -0,0 +1,5 @@ +--- +title: Resolve Add a button to assign users who have commented on an issue +merge_request: 23883 +author: +type: added diff --git a/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml b/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml new file mode 100644 index 00000000000..df303695865 --- /dev/null +++ b/changelogs/unreleased/191455-add-a-button-to-quickly-assign-users-who-have-commented-on-an-issu.yml @@ -0,0 +1,5 @@ +--- +title: Add api.js methods to update issues and merge requests +merge_request: 32893 +author: +type: added diff --git a/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml b/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml new file mode 100644 index 00000000000..0ee3d01d030 --- /dev/null +++ b/changelogs/unreleased/195692-too-much-x-axis-padding-on-the-environments-dashboard-content.yml @@ -0,0 +1,5 @@ +--- +title: Resolve incorrect x-axis padding on the Environments Dashboard +merge_request: 32533 +author: +type: fixed diff --git a/changelogs/unreleased/196544-nodemetrics-size.yml b/changelogs/unreleased/196544-nodemetrics-size.yml new file mode 100644 index 00000000000..1319ef2f624 --- /dev/null +++ b/changelogs/unreleased/196544-nodemetrics-size.yml @@ -0,0 +1,5 @@ +--- +title: Added node size to cluster index +merge_request: 32435 +author: +type: changed diff --git a/changelogs/unreleased/196630-commit-tab.yml b/changelogs/unreleased/196630-commit-tab.yml new file mode 100644 index 00000000000..38b158d1520 --- /dev/null +++ b/changelogs/unreleased/196630-commit-tab.yml @@ -0,0 +1,5 @@ +--- +title: Don't hide Commit tab in Web IDE when there are no changes yet +merge_request: 32979 +author: +type: added diff --git a/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml b/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml new file mode 100644 index 00000000000..dfd80b80241 --- /dev/null +++ b/changelogs/unreleased/196784-add-container-expiration-policy-to-graphql-project.yml @@ -0,0 +1,5 @@ +--- +title: Add the container expiration policy attribute to the project GraphQL type +merge_request: 32100 +author: +type: added diff --git a/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml b/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml new file mode 100644 index 00000000000..3205401f5db --- /dev/null +++ b/changelogs/unreleased/196784-graphql-mutations-for-container-expiration-policies.yml @@ -0,0 +1,5 @@ +--- +title: Add container expiration policy objects to the GraphQL API +merge_request: 32944 +author: +type: added diff --git a/changelogs/unreleased/197426-error-details-timeago-tooltip.yml b/changelogs/unreleased/197426-error-details-timeago-tooltip.yml new file mode 100644 index 00000000000..926f22bfa68 --- /dev/null +++ b/changelogs/unreleased/197426-error-details-timeago-tooltip.yml @@ -0,0 +1,5 @@ +--- +title: Show tooltip on error detail page when hovering over dates +merge_request: 34506 +author: +type: added diff --git a/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml b/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml new file mode 100644 index 00000000000..8e9f49ad14f --- /dev/null +++ b/changelogs/unreleased/199245-search-api-seems-to-ignore-ref-returns-spurious-results-from-maste.yml @@ -0,0 +1,5 @@ +--- +title: Fix incorrect commit search results returned when searching with ref +merge_request: 33216 +author: +type: fixed diff --git a/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml b/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml new file mode 100644 index 00000000000..58d02d65b71 --- /dev/null +++ b/changelogs/unreleased/199250-expose-release-yaml-as-steps-via-api-2.yml @@ -0,0 +1,5 @@ +--- +title: Convert `:release` yaml to `release-cli` commands +merge_request: 34261 +author: +type: added diff --git a/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml b/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml new file mode 100644 index 00000000000..0a654b11442 --- /dev/null +++ b/changelogs/unreleased/199732-show-more-context-to-jump-unresolved-button.yml @@ -0,0 +1,5 @@ +--- +title: Show more context in unresolved jump button +merge_request: 32737 +author: +type: changed diff --git a/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml b/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml new file mode 100644 index 00000000000..4457947639f --- /dev/null +++ b/changelogs/unreleased/200016-display-downstream-pipeline-errors.yml @@ -0,0 +1,5 @@ +--- +title: Implement displaying downstream pipeline error details +merge_request: 32844 +author: +type: fixed diff --git a/changelogs/unreleased/20069-ci-secrets-rake-task.yml b/changelogs/unreleased/20069-ci-secrets-rake-task.yml new file mode 100644 index 00000000000..6c75d8945e5 --- /dev/null +++ b/changelogs/unreleased/20069-ci-secrets-rake-task.yml @@ -0,0 +1,5 @@ +--- +title: Add rake task to verify encrypted data through secrets +merge_request: 21851 +author: +type: added diff --git a/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml b/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml new file mode 100644 index 00000000000..a8d892db2ff --- /dev/null +++ b/changelogs/unreleased/205424-add-api-for-share-groups-with-groups.yml @@ -0,0 +1,5 @@ +--- +title: Add API support for sharing groups with groups +merge_request: 32008 +author: +type: added diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml new file mode 100644 index 00000000000..f897faeeaa2 --- /dev/null +++ b/changelogs/unreleased/207257-specify-asset-types-in-releases-2.yml @@ -0,0 +1,5 @@ +--- +title: Expose `release_links.type` via API +merge_request: 33154 +author: +type: changed diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml new file mode 100644 index 00000000000..bf5de47e7ff --- /dev/null +++ b/changelogs/unreleased/207257-specify-asset-types-in-releases-3.yml @@ -0,0 +1,5 @@ +--- +title: Add `link_type` to `ReleaseLink` GraphQL type +merge_request: 33386 +author: +type: added diff --git a/changelogs/unreleased/207257-specify-asset-types-in-releases.yml b/changelogs/unreleased/207257-specify-asset-types-in-releases.yml new file mode 100644 index 00000000000..ee11eb72389 --- /dev/null +++ b/changelogs/unreleased/207257-specify-asset-types-in-releases.yml @@ -0,0 +1,5 @@ +--- +title: Add link_type column to release_links table +merge_request: 33156 +author: +type: changed diff --git a/changelogs/unreleased/207990-secret-detection-ci-template.yml b/changelogs/unreleased/207990-secret-detection-ci-template.yml new file mode 100644 index 00000000000..246ac1c096a --- /dev/null +++ b/changelogs/unreleased/207990-secret-detection-ci-template.yml @@ -0,0 +1,5 @@ +--- +title: Add secret detection template +merge_request: 33869 +author: +type: added diff --git a/changelogs/unreleased/208412-featurable.yml b/changelogs/unreleased/208412-featurable.yml new file mode 100644 index 00000000000..02adcccec0b --- /dev/null +++ b/changelogs/unreleased/208412-featurable.yml @@ -0,0 +1,5 @@ +--- +title: Extract featurable concern from ProjectFeature +merge_request: 31700 +author: Alexander Randa +type: other diff --git a/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml b/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml new file mode 100644 index 00000000000..2947e9d261c --- /dev/null +++ b/changelogs/unreleased/208970-group_auth_update_to_consider_shared_groups.yml @@ -0,0 +1,5 @@ +--- +title: Group authorization refresh to consider shared groups +merge_request: 31204 +author: +type: fixed diff --git a/changelogs/unreleased/209025-design-filename-limit-migrations.yml b/changelogs/unreleased/209025-design-filename-limit-migrations.yml new file mode 100644 index 00000000000..92379b29e34 --- /dev/null +++ b/changelogs/unreleased/209025-design-filename-limit-migrations.yml @@ -0,0 +1,6 @@ +--- +title: Add database migrations to design_management_designs.filename to enforce + a 255 character limit, and modify any filenames that exceed that limit +merge_request: 33565 +author: +type: changed diff --git a/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml b/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml new file mode 100644 index 00000000000..a6eca5f5ad6 --- /dev/null +++ b/changelogs/unreleased/209345-add-ds-detect-kotlin-build-file.yml @@ -0,0 +1,5 @@ +--- +title: Add DS detection of build.gradle.kts +merge_request: !32727 +author: +type: fixed diff --git a/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml b/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml new file mode 100644 index 00000000000..840f72be481 --- /dev/null +++ b/changelogs/unreleased/21002-slack-opened-merge-request-webhook-message-is-malformed.yml @@ -0,0 +1,5 @@ +--- +title: Add explicit mention of Merge request in Slack message +merge_request: 33152 +author: +type: changed diff --git a/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml b/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml new file mode 100644 index 00000000000..7b3ad814382 --- /dev/null +++ b/changelogs/unreleased/210281-label-for-pipeline-schedule-active.yml @@ -0,0 +1,5 @@ +--- +title: Fix 'Active' checkbox text in Pipeline Schedule form to be a label +merge_request: 27054 +author: Jonston Chan +type: fixed diff --git a/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml b/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml new file mode 100644 index 00000000000..4e8aa0d7ca5 --- /dev/null +++ b/changelogs/unreleased/210482-update-descriptions-on-the-integrations-and-webhooks-pages-at-the-.yml @@ -0,0 +1,5 @@ +--- +title: Change copy of webhooks / integration help text +merge_request: 34301 +author: +type: changed diff --git a/changelogs/unreleased/210550-conan-export-tgz.yml b/changelogs/unreleased/210550-conan-export-tgz.yml new file mode 100644 index 00000000000..bffd0b8b644 --- /dev/null +++ b/changelogs/unreleased/210550-conan-export-tgz.yml @@ -0,0 +1,5 @@ +--- +title: Conan package registry support for the conan_export.tgz file +merge_request: 32866 +author: +type: fixed diff --git a/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml b/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml new file mode 100644 index 00000000000..9db7b230ded --- /dev/null +++ b/changelogs/unreleased/211340-change-chart-legend-format-to-tabular-format.yml @@ -0,0 +1,5 @@ +--- +title: Change legends in monitor dashboards to tabular layout +merge_request: 30131 +author: +type: changed diff --git a/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml b/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml new file mode 100644 index 00000000000..7e9edaad64b --- /dev/null +++ b/changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml @@ -0,0 +1,5 @@ +--- +title: Added delete action for Dashboard Annotations in GraphQL +merge_request: 33468 +author: +type: added diff --git a/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml b/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml new file mode 100644 index 00000000000..cb172caf997 --- /dev/null +++ b/changelogs/unreleased/211828-placement-of-add-designs-button-could-be-confusing-with-the-additi.yml @@ -0,0 +1,5 @@ +--- +title: Rename Add Designs button +merge_request: 33491 +author: +type: changed diff --git a/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml b/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml new file mode 100644 index 00000000000..dcfe1e56491 --- /dev/null +++ b/changelogs/unreleased/212063-images-overflow-at-releases-list-panel.yml @@ -0,0 +1,5 @@ +--- +title: Resolve image overflow at releases list panel +merge_request: 32307 +author: +type: fixed diff --git a/changelogs/unreleased/212848.yml b/changelogs/unreleased/212848.yml new file mode 100644 index 00000000000..c4a33866d62 --- /dev/null +++ b/changelogs/unreleased/212848.yml @@ -0,0 +1,5 @@ +--- +title: Removed UltraAuth integration for OmniAuth +merge_request: 29330 +author: Kartikey Tanna +type: removed diff --git a/changelogs/unreleased/212882-add-cpu-mem-charts.yml b/changelogs/unreleased/212882-add-cpu-mem-charts.yml new file mode 100644 index 00000000000..52e645cead7 --- /dev/null +++ b/changelogs/unreleased/212882-add-cpu-mem-charts.yml @@ -0,0 +1,5 @@ +--- +title: Add CPU, memory usage charts to self monitoring default dashboard +merge_request: 33532 +author: +type: changed diff --git a/changelogs/unreleased/212882-add-instance-variable.yml b/changelogs/unreleased/212882-add-instance-variable.yml new file mode 100644 index 00000000000..19131ff7ab9 --- /dev/null +++ b/changelogs/unreleased/212882-add-instance-variable.yml @@ -0,0 +1,5 @@ +--- +title: Add ability to filter self monitoring resource usage charts by instance name +merge_request: 34084 +author: +type: changed diff --git a/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml b/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml new file mode 100644 index 00000000000..e0674b167a2 --- /dev/null +++ b/changelogs/unreleased/213009-when-filtering-by-groups-icons-are-misaligned.yml @@ -0,0 +1,6 @@ +--- +title: Improve spacing and wrapping of group actions buttons and stats in group list + view +merge_request: 32786 +author: +type: fixed diff --git a/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml b/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml new file mode 100644 index 00000000000..b542581f0f8 --- /dev/null +++ b/changelogs/unreleased/213587-ide-ipad-scroll-issue.yml @@ -0,0 +1,5 @@ +--- +title: Fix issues with scroll on iOS / iPad OS +merge_request: 34486 +author: +type: fixed diff --git a/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml b/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml new file mode 100644 index 00000000000..c8d405afc01 --- /dev/null +++ b/changelogs/unreleased/213597-add-in-this-group-option-to-search-dropdown-where-not-present.yml @@ -0,0 +1,5 @@ +--- +title: Enable the `in this group` action in the Search dropdown +merge_request: 31939 +author: +type: changed diff --git a/changelogs/unreleased/213699-remove-search-results-autocomplete.yml b/changelogs/unreleased/213699-remove-search-results-autocomplete.yml new file mode 100644 index 00000000000..539d4695658 --- /dev/null +++ b/changelogs/unreleased/213699-remove-search-results-autocomplete.yml @@ -0,0 +1,5 @@ +--- +title: Remove all search autocomplete for groups/projects/other +merge_request: 31187 +author: +type: removed diff --git a/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml b/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml new file mode 100644 index 00000000000..7c446d40128 --- /dev/null +++ b/changelogs/unreleased/213824-update-red-variables-in-gitlab-scss-to-match-gitlab-ui.yml @@ -0,0 +1,5 @@ +--- +title: Update red hex values to match GitLab UI +merge_request: 34544 +author: +type: other diff --git a/changelogs/unreleased/213881-alerts-list-pagination.yml b/changelogs/unreleased/213881-alerts-list-pagination.yml new file mode 100644 index 00000000000..310152722ed --- /dev/null +++ b/changelogs/unreleased/213881-alerts-list-pagination.yml @@ -0,0 +1,5 @@ +--- +title: Alerts list pagination +merge_request: 33073 +author: +type: added diff --git a/changelogs/unreleased/213923-add-range-var.yml b/changelogs/unreleased/213923-add-range-var.yml new file mode 100644 index 00000000000..71a1bc5e381 --- /dev/null +++ b/changelogs/unreleased/213923-add-range-var.yml @@ -0,0 +1,5 @@ +--- +title: Provide `__range` variable for Prometheus queries +merge_request: 33521 +author: +type: added diff --git a/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml b/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml new file mode 100644 index 00000000000..2cb3569a38e --- /dev/null +++ b/changelogs/unreleased/214102-move-the-members-section-from-settings-to-the-side-nav-for-project.yml @@ -0,0 +1,5 @@ +--- +title: Move the Members section from settings to the side nav for projects +merge_request: 32667 +author: +type: changed diff --git a/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml b/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml new file mode 100644 index 00000000000..762c8dc1992 --- /dev/null +++ b/changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml @@ -0,0 +1,5 @@ +--- +title: Add timezone display to alert based issue start time +merge_request: 32702 +author: +type: added diff --git a/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml b/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml new file mode 100644 index 00000000000..b313bfc9dcb --- /dev/null +++ b/changelogs/unreleased/214250-usage-ping-counts-for-all-search.yml @@ -0,0 +1,5 @@ +--- +title: Add Usage Ping count for all searches +merge_request: 32111 +author: +type: changed diff --git a/changelogs/unreleased/214281-modify-dashboard-title.yml b/changelogs/unreleased/214281-modify-dashboard-title.yml new file mode 100644 index 00000000000..19919dd664b --- /dev/null +++ b/changelogs/unreleased/214281-modify-dashboard-title.yml @@ -0,0 +1,5 @@ +--- +title: Add metrics dashboard name to document title +merge_request: 30392 +author: +type: added diff --git a/changelogs/unreleased/214370-add-timezone-setting.yml b/changelogs/unreleased/214370-add-timezone-setting.yml new file mode 100644 index 00000000000..03c564da54c --- /dev/null +++ b/changelogs/unreleased/214370-add-timezone-setting.yml @@ -0,0 +1,5 @@ +--- +title: Display dates on metrics dashboards in UTC time zone +merge_request: 32746 +author: +type: added diff --git a/changelogs/unreleased/214370-extend-metrics-settings.yml b/changelogs/unreleased/214370-extend-metrics-settings.yml new file mode 100644 index 00000000000..56045e3cb5d --- /dev/null +++ b/changelogs/unreleased/214370-extend-metrics-settings.yml @@ -0,0 +1,5 @@ +--- +title: Update operations metrics settings title and description to make them general +merge_request: 32494 +author: +type: changed diff --git a/changelogs/unreleased/214493-invaid-uri.yml b/changelogs/unreleased/214493-invaid-uri.yml new file mode 100644 index 00000000000..13d6e261804 --- /dev/null +++ b/changelogs/unreleased/214493-invaid-uri.yml @@ -0,0 +1,5 @@ +--- +title: Return 404 response when redirecting request with invalid url. +merge_request: 33492 +author: +type: fixed diff --git a/changelogs/unreleased/214556-user-defined-alert-identification.yml b/changelogs/unreleased/214556-user-defined-alert-identification.yml new file mode 100644 index 00000000000..d65f76e97c0 --- /dev/null +++ b/changelogs/unreleased/214556-user-defined-alert-identification.yml @@ -0,0 +1,5 @@ +--- +title: Set fingerprints and increment events count for Alert Management alerts +merge_request: 32613 +author: +type: added diff --git a/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml b/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml new file mode 100644 index 00000000000..e7d56cf3189 --- /dev/null +++ b/changelogs/unreleased/214921-improve-tabbing-behavior-when-creating-new-projects.yml @@ -0,0 +1,5 @@ +--- +title: Fix tabbing through form fields in projects/new flow +merge_request: 33209 +author: +type: fixed diff --git a/changelogs/unreleased/215497-add-custom-links-to-panel.yml b/changelogs/unreleased/215497-add-custom-links-to-panel.yml new file mode 100644 index 00000000000..e542a4dfffc --- /dev/null +++ b/changelogs/unreleased/215497-add-custom-links-to-panel.yml @@ -0,0 +1,5 @@ +--- +title: Allow user to add custom links to their metrics dashboard panels +merge_request: 32646 +author: +type: added diff --git a/changelogs/unreleased/215517-tab-docs-ff.yml b/changelogs/unreleased/215517-tab-docs-ff.yml new file mode 100644 index 00000000000..9ff5f4802ae --- /dev/null +++ b/changelogs/unreleased/215517-tab-docs-ff.yml @@ -0,0 +1,5 @@ +--- +title: Add DAG visualization MVC +merge_request: 33958 +author: +type: added diff --git a/changelogs/unreleased/215618_mutation_to_create_a_commit.yml b/changelogs/unreleased/215618_mutation_to_create_a_commit.yml new file mode 100644 index 00000000000..9850681d1ef --- /dev/null +++ b/changelogs/unreleased/215618_mutation_to_create_a_commit.yml @@ -0,0 +1,5 @@ +--- +title: Add mutation to create commits in GraphQL +merge_request: 31102 +author: +type: added diff --git a/changelogs/unreleased/215619_add_mutation_to_create_mr.yml b/changelogs/unreleased/215619_add_mutation_to_create_mr.yml new file mode 100644 index 00000000000..477f8b60d5e --- /dev/null +++ b/changelogs/unreleased/215619_add_mutation_to_create_mr.yml @@ -0,0 +1,5 @@ +--- +title: Add mutation to create a merge request in GraphQL +merge_request: 31867 +author: +type: added diff --git a/changelogs/unreleased/215658-add-users-graphql.yml b/changelogs/unreleased/215658-add-users-graphql.yml new file mode 100644 index 00000000000..a28ae9f1a12 --- /dev/null +++ b/changelogs/unreleased/215658-add-users-graphql.yml @@ -0,0 +1,5 @@ +--- +title: Add user root query to GraphQL API +merge_request: 33041 +author: +type: added diff --git a/changelogs/unreleased/215658-graphql-memberships.yml b/changelogs/unreleased/215658-graphql-memberships.yml new file mode 100644 index 00000000000..1dd970dbfe6 --- /dev/null +++ b/changelogs/unreleased/215658-graphql-memberships.yml @@ -0,0 +1,5 @@ +--- +title: Adds groupMembership and projectMembership to GraphQL API +merge_request: 33049 +author: +type: added diff --git a/changelogs/unreleased/215658-root-users-query.yml b/changelogs/unreleased/215658-root-users-query.yml new file mode 100644 index 00000000000..24c388ba826 --- /dev/null +++ b/changelogs/unreleased/215658-root-users-query.yml @@ -0,0 +1,5 @@ +--- +title: Add root users query to GraphQL API +merge_request: 33195 +author: +type: added diff --git a/changelogs/unreleased/215668-settings-auto-fix.yml b/changelogs/unreleased/215668-settings-auto-fix.yml new file mode 100644 index 00000000000..b0ac2c15fcf --- /dev/null +++ b/changelogs/unreleased/215668-settings-auto-fix.yml @@ -0,0 +1,5 @@ +--- +title: Add model for project level security auto-fix settings +merge_request: 32577 +author: +type: added diff --git a/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml b/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml new file mode 100644 index 00000000000..e401c881223 --- /dev/null +++ b/changelogs/unreleased/215711-improve-performance-of-search-api-advanced-users-scope.yml @@ -0,0 +1,5 @@ +--- +title: Reduce redundant queries for Search API users scope. +merge_request: 33795 +author: +type: performance diff --git a/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml b/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml new file mode 100644 index 00000000000..5191aca5caf --- /dev/null +++ b/changelogs/unreleased/215946-add-gitlab-to-do-for-user-when-they-are-assigned-to-an-alert.yml @@ -0,0 +1,5 @@ +--- +title: Add todo when alert is assigned to a user +merge_request: 34104 +author: +type: added diff --git a/changelogs/unreleased/216045-capture-todo-resolution.yml b/changelogs/unreleased/216045-capture-todo-resolution.yml new file mode 100644 index 00000000000..cc43635a120 --- /dev/null +++ b/changelogs/unreleased/216045-capture-todo-resolution.yml @@ -0,0 +1,5 @@ +--- +title: Store Todo resolution method +merge_request: 32753 +author: +type: added diff --git a/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml b/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml new file mode 100644 index 00000000000..0a8df78d0c7 --- /dev/null +++ b/changelogs/unreleased/216088-disable-container-expiration-policy-when-invalid-regex-is-present.yml @@ -0,0 +1,5 @@ +--- +title: Validate regex before sending them to CleanupContainerRepositoryWorker +merge_request: 34282 +author: +type: added diff --git a/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml b/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml new file mode 100644 index 00000000000..c6df3112d90 --- /dev/null +++ b/changelogs/unreleased/216088-regex-validation-on-container-expiration-policy.yml @@ -0,0 +1,5 @@ +--- +title: Container expiration policy regular expressions are now validated +merge_request: 34063 +author: +type: added diff --git a/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml b/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml new file mode 100644 index 00000000000..becb89455fd --- /dev/null +++ b/changelogs/unreleased/216097-add-application-limits-to-ci-instancevariable.yml @@ -0,0 +1,5 @@ +--- +title: Add application limits to instance level CI/CD variables +merge_request: 32575 +author: +type: added diff --git a/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml b/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml new file mode 100644 index 00000000000..16884a14a1e --- /dev/null +++ b/changelogs/unreleased/216103-personal-access-token-pat-expiry-is-notifying-a-for-impersonation-.yml @@ -0,0 +1,5 @@ +--- +title: Prevent emails to user on expiry of impersonation token +merge_request: 32140 +author: +type: fixed diff --git a/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml b/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml new file mode 100644 index 00000000000..834fef6f01b --- /dev/null +++ b/changelogs/unreleased/216142-resolve-alert-when-associated-issue-closes.yml @@ -0,0 +1,5 @@ +--- +title: Automatically resolve alert when associated issue closes +merge_request: 33278 +author: +type: added diff --git a/changelogs/unreleased/216145-jira-users-import-endpoint.yml b/changelogs/unreleased/216145-jira-users-import-endpoint.yml new file mode 100644 index 00000000000..54c3a130b07 --- /dev/null +++ b/changelogs/unreleased/216145-jira-users-import-endpoint.yml @@ -0,0 +1,5 @@ +--- +title: Create graphQL endpoint for Jira users import +merge_request: 33501 +author: +type: added diff --git a/changelogs/unreleased/216145-project-members-graphql.yml b/changelogs/unreleased/216145-project-members-graphql.yml new file mode 100644 index 00000000000..b64407b8b35 --- /dev/null +++ b/changelogs/unreleased/216145-project-members-graphql.yml @@ -0,0 +1,5 @@ +--- +title: Add members to project graphQL endpoint +merge_request: 33418 +author: +type: added diff --git a/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml b/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml new file mode 100644 index 00000000000..25b0c302cf2 --- /dev/null +++ b/changelogs/unreleased/216160-fix-label-any-with-custom-sorting.yml @@ -0,0 +1,5 @@ +--- +title: Fix issuable listings with any label filter +merge_request: 31729 +author: +type: fixed diff --git a/changelogs/unreleased/216174-track-mr-usage.yml b/changelogs/unreleased/216174-track-mr-usage.yml new file mode 100644 index 00000000000..90374fa85f7 --- /dev/null +++ b/changelogs/unreleased/216174-track-mr-usage.yml @@ -0,0 +1,5 @@ +--- +title: Track merge_requests_users usage data +merge_request: 32562 +author: +type: changed diff --git a/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml b/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml new file mode 100644 index 00000000000..ab77ed18444 --- /dev/null +++ b/changelogs/unreleased/216326-send-alerts-to-slack-db-settings.yml @@ -0,0 +1,5 @@ +--- +title: Add column for alert slack notifications +merge_request: 33017 +author: +type: added diff --git a/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml b/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml new file mode 100644 index 00000000000..1d211732e04 --- /dev/null +++ b/changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml @@ -0,0 +1,5 @@ +--- +title: Render user-defined links in dashboard yml file on metrics dashboard +merge_request: 32895 +author: +type: added diff --git a/changelogs/unreleased/216640-insert-image-modal.yml b/changelogs/unreleased/216640-insert-image-modal.yml new file mode 100644 index 00000000000..46d43736921 --- /dev/null +++ b/changelogs/unreleased/216640-insert-image-modal.yml @@ -0,0 +1,5 @@ +--- +title: Add ability to insert an image via SSE +merge_request: 33029 +author: +type: added diff --git a/changelogs/unreleased/216677-track-static-site-editor-initializations.yml b/changelogs/unreleased/216677-track-static-site-editor-initializations.yml new file mode 100644 index 00000000000..e8d87d70250 --- /dev/null +++ b/changelogs/unreleased/216677-track-static-site-editor-initializations.yml @@ -0,0 +1,5 @@ +--- +title: Track when Static Site Editor is initialized +merge_request: 34215 +author: +type: added diff --git a/changelogs/unreleased/216678-sse-track-merge-requests.yml b/changelogs/unreleased/216678-sse-track-merge-requests.yml new file mode 100644 index 00000000000..30d3f722b50 --- /dev/null +++ b/changelogs/unreleased/216678-sse-track-merge-requests.yml @@ -0,0 +1,5 @@ +--- +title: Track merge requests submitted by Static Site Editor +merge_request: 34105 +author: +type: added diff --git a/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml b/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml new file mode 100644 index 00000000000..cfcd401f6ca --- /dev/null +++ b/changelogs/unreleased/216735-fix-prometheus-alerts-not-being-created.yml @@ -0,0 +1,5 @@ +--- +title: Fix prometheus alerts not being automatically created +merge_request: 33806 +author: +type: fixed diff --git a/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml b/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml new file mode 100644 index 00000000000..286453d9575 --- /dev/null +++ b/changelogs/unreleased/216749-improve-the-container-registry-ui-header-section-with-relevant-met.yml @@ -0,0 +1,5 @@ +--- +title: Improve Container Registry UI header +merge_request: 32424 +author: +type: changed diff --git a/changelogs/unreleased/216757-add-tags-count.yml b/changelogs/unreleased/216757-add-tags-count.yml new file mode 100644 index 00000000000..22737f7a914 --- /dev/null +++ b/changelogs/unreleased/216757-add-tags-count.yml @@ -0,0 +1,5 @@ +--- +title: Add tags_count to container registry api and controller +merge_request: 32141 +author: +type: changed diff --git a/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml b/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml new file mode 100644 index 00000000000..c9b7a195002 --- /dev/null +++ b/changelogs/unreleased/216757-include-tag-count-in-the-image-repository-list-view-of-the-contain.yml @@ -0,0 +1,5 @@ +--- +title: Include tag count in the image repository list +merge_request: 33027 +author: +type: changed diff --git a/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml b/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml new file mode 100644 index 00000000000..c7fec94b9fb --- /dev/null +++ b/changelogs/unreleased/216785-use-ci-job-token-for-terraform-state-auth.yml @@ -0,0 +1,5 @@ +--- +title: Allow CI_JOB_TOKEN for authenticating to the Terraform state API +merge_request: 34618 +author: +type: added diff --git a/changelogs/unreleased/216797-style-toastui-menus.yml b/changelogs/unreleased/216797-style-toastui-menus.yml new file mode 100644 index 00000000000..0f87d9cef1e --- /dev/null +++ b/changelogs/unreleased/216797-style-toastui-menus.yml @@ -0,0 +1,5 @@ +--- +title: Style ToastUI contextual menus +merge_request: 33719 +author: +type: changed diff --git a/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml b/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml new file mode 100644 index 00000000000..2885d9d5e26 --- /dev/null +++ b/changelogs/unreleased/216834-frontmatter-wysiwyg-removal.yml @@ -0,0 +1,5 @@ +--- +title: Update Static Site Editor WYSIWYG mode to hide front matter +merge_request: 33441 +author: +type: added diff --git a/changelogs/unreleased/216835-instrument-db-calls.yml b/changelogs/unreleased/216835-instrument-db-calls.yml new file mode 100644 index 00000000000..6e1af13b4c7 --- /dev/null +++ b/changelogs/unreleased/216835-instrument-db-calls.yml @@ -0,0 +1,6 @@ +--- +title: Add number of database calls to Prometheus metrics and logs for sidekiq and + request +merge_request: 32131 +author: +type: added diff --git a/changelogs/unreleased/216865-confirm-leave-site.yml b/changelogs/unreleased/216865-confirm-leave-site.yml new file mode 100644 index 00000000000..3d6b47db91f --- /dev/null +++ b/changelogs/unreleased/216865-confirm-leave-site.yml @@ -0,0 +1,5 @@ +--- +title: Display confirmation modal when user exits SSE and there are unsaved changes +merge_request: 33103 +author: +type: added diff --git a/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml b/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml new file mode 100644 index 00000000000..f4a06320e47 --- /dev/null +++ b/changelogs/unreleased/216871-snippets-author-can-t-be-blank-error.yml @@ -0,0 +1,5 @@ +--- +title: Fallback to lowest visibility level in snippet visibility radio +merge_request: 31847 +author: Jacopo Beschi @jacopo-beschi +type: fixed diff --git a/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml b/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml new file mode 100644 index 00000000000..1194adab7a3 --- /dev/null +++ b/changelogs/unreleased/216880-frontend-add-sticky-issue-titles.yml @@ -0,0 +1,5 @@ +--- +title: Add sticky title on Issue pages +merge_request: 33983 +author: +type: added diff --git a/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml b/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml new file mode 100644 index 00000000000..4b2b857cb85 --- /dev/null +++ b/changelogs/unreleased/216908-pass-limit-and-offset-when-searching-for-commits.yml @@ -0,0 +1,5 @@ +--- +title: Improve performance of commit search by limiting the number of results requested +merge_request: 32260 +author: +type: performance diff --git a/changelogs/unreleased/216939-remove-async-mr-check-ff.yml b/changelogs/unreleased/216939-remove-async-mr-check-ff.yml new file mode 100644 index 00000000000..b66cb44de4b --- /dev/null +++ b/changelogs/unreleased/216939-remove-async-mr-check-ff.yml @@ -0,0 +1,5 @@ +--- +title: Remove async_merge_request_check_mergeability feature flag +merge_request: 33917 +author: +type: changed diff --git a/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml b/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml new file mode 100644 index 00000000000..c109a644871 --- /dev/null +++ b/changelogs/unreleased/217034-auto-creation-of-issues-for-alerts-off-by-default.yml @@ -0,0 +1,5 @@ +--- +title: Turn off alert issue creation by default +merge_request: 34107 +author: +type: added diff --git a/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml b/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml new file mode 100644 index 00000000000..45aea72ae24 --- /dev/null +++ b/changelogs/unreleased/217105-remove-FF-hide_token_from_runners_api.yml @@ -0,0 +1,5 @@ +--- +title: Remove FF hide_token_from_runners_api +merge_request: 33947 +author: +type: other diff --git a/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml b/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml new file mode 100644 index 00000000000..b3f61c924fa --- /dev/null +++ b/changelogs/unreleased/217168-close-open-reply-input-fields-in-the-design-view-sidebar-when-leav.yml @@ -0,0 +1,6 @@ +--- +title: Close open reply input fields in the design view sidebar when leaving a new + comment +merge_request: 33587 +author: +type: added diff --git a/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml b/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml new file mode 100644 index 00000000000..da139df5643 --- /dev/null +++ b/changelogs/unreleased/217366-expose-jira-successfully-imported-issues-count-in-graphql.yml @@ -0,0 +1,5 @@ +--- +title: Expose Jira imported issues count in GraphQL +merge_request: 32580 +author: +type: added diff --git a/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml b/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml new file mode 100644 index 00000000000..9306f5a9144 --- /dev/null +++ b/changelogs/unreleased/217566-add-warning-of-potential-data-loss-on-elastic-stack-upgrade-2.yml @@ -0,0 +1,5 @@ +--- +title: Add warning popup for Elastic Stack update +merge_request: 31972 +author: +type: added diff --git a/changelogs/unreleased/217570-improve-performance-for-blame-api.yml b/changelogs/unreleased/217570-improve-performance-for-blame-api.yml new file mode 100644 index 00000000000..390e19dc333 --- /dev/null +++ b/changelogs/unreleased/217570-improve-performance-for-blame-api.yml @@ -0,0 +1,5 @@ +--- +title: Lazy load commit_date and authored_date on Commit +merge_request: 34181 +author: +type: performance diff --git a/changelogs/unreleased/217616-fix-note-confidential.yml b/changelogs/unreleased/217616-fix-note-confidential.yml new file mode 100644 index 00000000000..d9e1f8a9b26 --- /dev/null +++ b/changelogs/unreleased/217616-fix-note-confidential.yml @@ -0,0 +1,5 @@ +--- +title: Don't display confidential note icon on confidential issue public notes +merge_request: 32571 +author: +type: fixed diff --git a/changelogs/unreleased/217666-prometheus-api-client.yml b/changelogs/unreleased/217666-prometheus-api-client.yml new file mode 100644 index 00000000000..cb1f4eb193b --- /dev/null +++ b/changelogs/unreleased/217666-prometheus-api-client.yml @@ -0,0 +1,5 @@ +--- +title: Include available instance memory in usage ping +merge_request: 32315 +author: +type: other diff --git a/changelogs/unreleased/217670-alerts-count.yml b/changelogs/unreleased/217670-alerts-count.yml new file mode 100644 index 00000000000..5a3995be0ce --- /dev/null +++ b/changelogs/unreleased/217670-alerts-count.yml @@ -0,0 +1,5 @@ +--- +title: Organize alerts by status tabs +merge_request: 32582 +author: +type: added diff --git a/changelogs/unreleased/217680-health-metric-instrumentation.yml b/changelogs/unreleased/217680-health-metric-instrumentation.yml new file mode 100644 index 00000000000..b1f55701c08 --- /dev/null +++ b/changelogs/unreleased/217680-health-metric-instrumentation.yml @@ -0,0 +1,5 @@ +--- +title: Track Sentry error status updates with dedicated actions +merge_request: 33623 +author: +type: changed diff --git a/changelogs/unreleased/217680-health-metrics-instrumentation.yml b/changelogs/unreleased/217680-health-metrics-instrumentation.yml new file mode 100644 index 00000000000..77ae44aaf38 --- /dev/null +++ b/changelogs/unreleased/217680-health-metrics-instrumentation.yml @@ -0,0 +1,5 @@ +--- +title: Monitor:Health metrics instrumenation +merge_request: 32846 +author: +type: added diff --git a/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml b/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml new file mode 100644 index 00000000000..27b6d0dd58c --- /dev/null +++ b/changelogs/unreleased/217692-design-view-highlight-focused-design-pins-follow-up.yml @@ -0,0 +1,5 @@ +--- +title: Add opacity transition to active design discussion pins +merge_request: 33493 +author: +type: other diff --git a/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml b/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml new file mode 100644 index 00000000000..8369dbc3def --- /dev/null +++ b/changelogs/unreleased/217736-add-related-dashboard-links-in-metrics-dashboard-mvc2.yml @@ -0,0 +1,5 @@ +--- +title: Add time range to user-defined links in metrics dashboard +merge_request: 33663 +author: +type: added diff --git a/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml b/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml new file mode 100644 index 00000000000..c90ceb3190b --- /dev/null +++ b/changelogs/unreleased/217743-match-commits-filter-author-button-to-spec.yml @@ -0,0 +1,5 @@ +--- +title: Make commits author button confirm to Pajamas specs +merge_request: 32821 +author: +type: fixed diff --git a/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml b/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml new file mode 100644 index 00000000000..d9a68248010 --- /dev/null +++ b/changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml @@ -0,0 +1,5 @@ +--- +title: Add project_id, user_id, status, ref index to ci_pipelines +merge_request: 33290 +author: +type: performance diff --git a/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml b/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml new file mode 100644 index 00000000000..79ffa011f63 --- /dev/null +++ b/changelogs/unreleased/217816-add-evidence-to-releases-graphql-endpoint.yml @@ -0,0 +1,5 @@ +--- +title: Add Evidence to Releases GraphQL endpoint +merge_request: 33254 +author: +type: added diff --git a/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml b/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml new file mode 100644 index 00000000000..d237974389a --- /dev/null +++ b/changelogs/unreleased/217834-remove-FF-ci_dependency_variables.yml @@ -0,0 +1,5 @@ +--- +title: Enable CI Inheriting Env Variables feature +merge_request: 34495 +author: +type: added diff --git a/changelogs/unreleased/217934-snippet-description-files.yml b/changelogs/unreleased/217934-snippet-description-files.yml new file mode 100644 index 00000000000..193188beeb8 --- /dev/null +++ b/changelogs/unreleased/217934-snippet-description-files.yml @@ -0,0 +1,5 @@ +--- +title: Send information about attached files to the GraphQL mutation +merge_request: 34221 +author: +type: fixed diff --git a/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml b/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml new file mode 100644 index 00000000000..b62aa0a8c20 --- /dev/null +++ b/changelogs/unreleased/217936-validate-the-size-of-the-value-for-instance-level-variables.yml @@ -0,0 +1,5 @@ +--- +title: Add value length validations for instance level variable +merge_request: 32303 +author: +type: fixed diff --git a/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml b/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml new file mode 100644 index 00000000000..2d06af04985 --- /dev/null +++ b/changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml @@ -0,0 +1,5 @@ +--- +title: Make project selector in various dashboard more translatable +merge_request: 33771 +author: +type: other diff --git a/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml b/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml new file mode 100644 index 00000000000..bdb87ceee3b --- /dev/null +++ b/changelogs/unreleased/218007-fix-incomplete-kubernetes-cluster-status-list.yml @@ -0,0 +1,5 @@ +--- +title: Resolve Fix Incomplete Kubernetes Cluster Status List +merge_request: 33344 +author: +type: fixed diff --git a/changelogs/unreleased/218025-xff-is-a-400-error.yml b/changelogs/unreleased/218025-xff-is-a-400-error.yml new file mode 100644 index 00000000000..737fc01315e --- /dev/null +++ b/changelogs/unreleased/218025-xff-is-a-400-error.yml @@ -0,0 +1,5 @@ +--- +title: Convert IP spoofing errors into client errors +merge_request: 33280 +author: +type: other diff --git a/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml b/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml new file mode 100644 index 00000000000..fa95f5e36c5 --- /dev/null +++ b/changelogs/unreleased/218036-cannot-delete-account-on-gitlab-com.yml @@ -0,0 +1,5 @@ +--- +title: Add index to issues and epics on last_edited_by_id +merge_request: 33075 +author: +type: performance diff --git a/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml b/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml new file mode 100644 index 00000000000..65b51037ce6 --- /dev/null +++ b/changelogs/unreleased/218045-feature-flag-remove-feature-flag-for-create-issue-from-alert-detai.yml @@ -0,0 +1,5 @@ +--- +title: Add button to create an issue from an alert management alert +merge_request: 33221 +author: +type: added diff --git a/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml b/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml new file mode 100644 index 00000000000..db500c26f45 --- /dev/null +++ b/changelogs/unreleased/218045-remove-create-issue-feature-flag-FE.yml @@ -0,0 +1,5 @@ +--- +title: Create issue from alert +merge_request: 33213 +author: +type: added diff --git a/changelogs/unreleased/218165-add-note-no-extend-ecs.yml b/changelogs/unreleased/218165-add-note-no-extend-ecs.yml new file mode 100644 index 00000000000..7952028f97e --- /dev/null +++ b/changelogs/unreleased/218165-add-note-no-extend-ecs.yml @@ -0,0 +1,5 @@ +--- +title: Add note to ECS CI template +merge_request: 32597 +author: +type: added diff --git a/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml b/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml new file mode 100644 index 00000000000..5be7a069ece --- /dev/null +++ b/changelogs/unreleased/218230-bugfix-save-wiki-page-modifications-with-certain-characters.yml @@ -0,0 +1,5 @@ +--- +title: Allow wiki pages with +<> characters in their title to be saved +merge_request: 33803 +author: +type: fixed diff --git a/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml b/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml new file mode 100644 index 00000000000..101b8c60287 --- /dev/null +++ b/changelogs/unreleased/218287-release-evidence-is-not-being-collected-if-release-is-created-via-.yml @@ -0,0 +1,5 @@ +--- +title: Fix creating release evidence if release is created via UI +merge_request: 32441 +author: +type: fixed diff --git a/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml b/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml new file mode 100644 index 00000000000..075caecc1c7 --- /dev/null +++ b/changelogs/unreleased/218340-graphql-haspreviouspage-and-hasnextpage.yml @@ -0,0 +1,5 @@ +--- +title: GraphQL hasNextPage and hasPreviousPage return correct values +merge_request: 32476 +author: +type: fixed diff --git a/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml b/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml new file mode 100644 index 00000000000..b385ee3a25c --- /dev/null +++ b/changelogs/unreleased/218414-refine-sast-analyzer-language-detection.yml @@ -0,0 +1,5 @@ +--- +title: Refine SAST language detection by frameworks +merge_request: 33226 +author: +type: changed diff --git a/changelogs/unreleased/218464-expiration-policy-defaults.yml b/changelogs/unreleased/218464-expiration-policy-defaults.yml new file mode 100644 index 00000000000..ac25d58b034 --- /dev/null +++ b/changelogs/unreleased/218464-expiration-policy-defaults.yml @@ -0,0 +1,5 @@ +--- +title: Update container expiration policy database defaults +merge_request: 32600 +author: +type: fixed diff --git a/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml b/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml new file mode 100644 index 00000000000..fa212bf2121 --- /dev/null +++ b/changelogs/unreleased/218510-hide-copy-btn-for-rendering-error.yml @@ -0,0 +1,5 @@ +--- +title: Hid copy contents button when blob has rendering error +merge_request: 32632 +author: +type: fixed diff --git a/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml b/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml new file mode 100644 index 00000000000..0713e96b714 --- /dev/null +++ b/changelogs/unreleased/218560-allow-generic-endpoint-to-receive-alerts-from-external-prometheus.yml @@ -0,0 +1,5 @@ +--- +title: Allow generic endpoint to receive alerts from external Prometheus +merge_request: 32676 +author: +type: added diff --git a/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml b/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml new file mode 100644 index 00000000000..da712f0aa59 --- /dev/null +++ b/changelogs/unreleased/218569-dont-show-import-from-jira-button-for-non-entitled-users.yml @@ -0,0 +1,5 @@ +--- +title: Hide "Import from Jira" option from non-entitled users +merge_request: 32685 +author: +type: fixed diff --git a/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml b/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml new file mode 100644 index 00000000000..758b08c3a42 --- /dev/null +++ b/changelogs/unreleased/218582-fix-artifact-downloads-without-new-route.yml @@ -0,0 +1,5 @@ +--- +title: Fix 404 when downloading a non-archive artifact +merge_request: 32811 +author: +type: fixed diff --git a/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml b/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml new file mode 100644 index 00000000000..5ac63075c1f --- /dev/null +++ b/changelogs/unreleased/218648-remove-jira-httperror-non-actionable-exceptions.yml @@ -0,0 +1,5 @@ +--- +title: Less verbose JiraService error logs +merge_request: 32847 +author: +type: other diff --git a/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml b/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml new file mode 100644 index 00000000000..a556ae4b924 --- /dev/null +++ b/changelogs/unreleased/218707-search-criteria-for-alert-status-counts.yml @@ -0,0 +1,5 @@ +--- +title: Add search argument for AlertStatusCountsResolver +merge_request: 34596 +author: +type: added diff --git a/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml b/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml new file mode 100644 index 00000000000..843d27d1cea --- /dev/null +++ b/changelogs/unreleased/218716-iterate-on-epic-tree-card-spacing.yml @@ -0,0 +1,5 @@ +--- +title: Reduced padding and increased emphasis of titles within the epic tree +merge_request: 32873 +author: +type: other diff --git a/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml b/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml new file mode 100644 index 00000000000..926db344ade --- /dev/null +++ b/changelogs/unreleased/218733-add-manual-rollout-resource-group.yml @@ -0,0 +1,6 @@ +--- +title: Prevent multiple Auto DevOps deployment jobs running concurrently when using + manual rollout +merge_request: 32824 +author: +type: fixed diff --git a/changelogs/unreleased/218757-fix-polling-for-events.yml b/changelogs/unreleased/218757-fix-polling-for-events.yml new file mode 100644 index 00000000000..10accb9ba4d --- /dev/null +++ b/changelogs/unreleased/218757-fix-polling-for-events.yml @@ -0,0 +1,5 @@ +--- +title: Fix polling for resource events +merge_request: 33025 +author: +type: fixed diff --git a/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml b/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml new file mode 100644 index 00000000000..f48f7d11cca --- /dev/null +++ b/changelogs/unreleased/218823-wiki-base-path-relative-url-root.yml @@ -0,0 +1,5 @@ +--- +title: Fix relative URL root in wiki_base_path +merge_request: 33841 +author: +type: fixed diff --git a/changelogs/unreleased/219002-remove-ghost-column.yml b/changelogs/unreleased/219002-remove-ghost-column.yml new file mode 100644 index 00000000000..0af12a67b20 --- /dev/null +++ b/changelogs/unreleased/219002-remove-ghost-column.yml @@ -0,0 +1,5 @@ +--- +title: Remove obsolete users.ghost column +merge_request: 32957 +author: +type: other 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/219074-safe-link-validation.yml b/changelogs/unreleased/219074-safe-link-validation.yml new file mode 100644 index 00000000000..afce591505a --- /dev/null +++ b/changelogs/unreleased/219074-safe-link-validation.yml @@ -0,0 +1,5 @@ +--- +title: Add validation step on backend for metrics dashboard links +merge_request: 34204 +author: +type: added diff --git a/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml b/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml new file mode 100644 index 00000000000..232842c3c5a --- /dev/null +++ b/changelogs/unreleased/219145-comment-button-does-not-show-up-on-mr-when-comments-are-set-to-new.yml @@ -0,0 +1,5 @@ +--- +title: Fix overflow issue in MR and Issue comments +merge_request: 33100 +author: +type: fixed diff --git a/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml b/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml new file mode 100644 index 00000000000..b9f98664dff --- /dev/null +++ b/changelogs/unreleased/219151-follow-up-from-fallback-to-lowest-visibility-level-in-snippet-visi.yml @@ -0,0 +1,5 @@ +--- +title: Add snippet DB visibility check in spec +merge_request: 33388 +author: Jacopo Beschi @jacopo-beschi +type: changed diff --git a/changelogs/unreleased/219210-column-date-format.yml b/changelogs/unreleased/219210-column-date-format.yml new file mode 100644 index 00000000000..6b71df17130 --- /dev/null +++ b/changelogs/unreleased/219210-column-date-format.yml @@ -0,0 +1,5 @@ +--- +title: Format metrics column chart x axis dates +merge_request: 33681 +author: +type: changed diff --git a/changelogs/unreleased/219210-stacked-column-date-format.yml b/changelogs/unreleased/219210-stacked-column-date-format.yml new file mode 100644 index 00000000000..86ce1103c97 --- /dev/null +++ b/changelogs/unreleased/219210-stacked-column-date-format.yml @@ -0,0 +1,5 @@ +--- +title: Add date time format to the monitor stacked-column chart +merge_request: 33814 +author: +type: changed diff --git a/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml b/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml new file mode 100644 index 00000000000..469a372e78e --- /dev/null +++ b/changelogs/unreleased/219228-add-web-ide-solarized-dark-theme-support.yml @@ -0,0 +1,5 @@ +--- +title: Add solarized dark for Web IDE +merge_request: 33148 +author: +type: added diff --git a/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml b/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml new file mode 100644 index 00000000000..fc732222a6f --- /dev/null +++ b/changelogs/unreleased/219391-follow-up-from-add-type-field-to-asset-links-on-edit-release-page.yml @@ -0,0 +1,5 @@ +--- +title: Resolve spacing ux debt on Release assets form field +merge_request: 33684 +author: +type: fixed diff --git a/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml b/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml new file mode 100644 index 00000000000..4581e4d0566 --- /dev/null +++ b/changelogs/unreleased/219395-metrics-dashboard-validation-fix-500-for-empty-.yml @@ -0,0 +1,6 @@ +--- +title: Fixed dashboard YAML file validaiton for files which do not contain object + as root element +merge_request: 33935 +author: +type: fixed diff --git a/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml b/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml new file mode 100644 index 00000000000..4a4e268171e --- /dev/null +++ b/changelogs/unreleased/219582-fix-ambiguous_string_concat_on_cleanup_projects_with_missing_names.yml @@ -0,0 +1,5 @@ +--- +title: Fix ambiguous string concatenation on CleanupProjectsWithMissingNamespace +merge_request: 33497 +author: +type: fixed diff --git a/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml b/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml new file mode 100644 index 00000000000..d60ab67bee9 --- /dev/null +++ b/changelogs/unreleased/219658-add-route-to-ghost-lost-and-found-group.yml @@ -0,0 +1,5 @@ +--- +title: Add route for the lost-and-found group and update the route of orphaned projects +merge_request: 34285 +author: +type: fixed diff --git a/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml b/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml new file mode 100644 index 00000000000..9a3557f0673 --- /dev/null +++ b/changelogs/unreleased/220014-default-for-SAST_EXCLUDED_PATHS-DS_EXCLUDED_PATHS.yml @@ -0,0 +1,5 @@ +--- +title: Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS +merge_request: 34076 +author: +type: changed diff --git a/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml b/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml new file mode 100644 index 00000000000..1c58bf63840 --- /dev/null +++ b/changelogs/unreleased/220051-duplicate-issues-created-when-importing-from-csv.yml @@ -0,0 +1,5 @@ +--- +title: Prevent duplicate issues when importing from CSV +merge_request: 33626 +author: +type: fixed diff --git a/changelogs/unreleased/220058.yml b/changelogs/unreleased/220058.yml new file mode 100644 index 00000000000..4327732eef7 --- /dev/null +++ b/changelogs/unreleased/220058.yml @@ -0,0 +1,5 @@ +--- +title: Fix sidebar spacing for alert details +merge_request: 33630 +author: +type: fixed diff --git a/changelogs/unreleased/220144-substitute-variables-in-alerts.yml b/changelogs/unreleased/220144-substitute-variables-in-alerts.yml new file mode 100644 index 00000000000..b270feee3eb --- /dev/null +++ b/changelogs/unreleased/220144-substitute-variables-in-alerts.yml @@ -0,0 +1,5 @@ +--- +title: Fix bug with variable substitution in alerts +merge_request: 33772 +author: +type: fixed diff --git a/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml b/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml new file mode 100644 index 00000000000..e6c409337ef --- /dev/null +++ b/changelogs/unreleased/220148-fix-vsa-issue-summary-title.yml @@ -0,0 +1,5 @@ +--- +title: Fix Value Stream Analytics summary when using non-english locale +merge_request: 33717 +author: +type: fixed diff --git a/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml b/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml new file mode 100644 index 00000000000..7d319fb4f91 --- /dev/null +++ b/changelogs/unreleased/220185-mask-key-comments-when-exposing-ssh-deploy-keys-via-the-api.yml @@ -0,0 +1,5 @@ +--- +title: Mask key comments when exposing SSH/Deploy Keys via the API +merge_request: 34255 +author: +type: added diff --git a/changelogs/unreleased/220192-fix-pagination-pd.yml b/changelogs/unreleased/220192-fix-pagination-pd.yml new file mode 100644 index 00000000000..e0785d09008 --- /dev/null +++ b/changelogs/unreleased/220192-fix-pagination-pd.yml @@ -0,0 +1,5 @@ +--- +title: Fix pagination for resource label events +merge_request: 33821 +author: +type: fixed diff --git a/changelogs/unreleased/220195-display-epics-on-swimlanes.yml b/changelogs/unreleased/220195-display-epics-on-swimlanes.yml new file mode 100644 index 00000000000..46880ee8b8d --- /dev/null +++ b/changelogs/unreleased/220195-display-epics-on-swimlanes.yml @@ -0,0 +1,5 @@ +--- +title: Update board header icons +merge_request: 34366 +author: +type: changed diff --git a/changelogs/unreleased/220209-optimize-container-repository-query.yml b/changelogs/unreleased/220209-optimize-container-repository-query.yml new file mode 100644 index 00000000000..6376d06cb53 --- /dev/null +++ b/changelogs/unreleased/220209-optimize-container-repository-query.yml @@ -0,0 +1,5 @@ +--- +title: Optimize container repository for groups query +merge_request: 34364 +author: +type: performance diff --git a/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml b/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml new file mode 100644 index 00000000000..e6a8a952561 --- /dev/null +++ b/changelogs/unreleased/220300-do-not-create-duplicate-alert-issues.yml @@ -0,0 +1,5 @@ +--- +title: Do not create duplicate issues for exising Alert Management alerts +merge_request: 33860 +author: +type: fixed diff --git a/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml b/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml new file mode 100644 index 00000000000..fc1198d8344 --- /dev/null +++ b/changelogs/unreleased/220415-feature-flag-enable-alert-slack-notifications.yml @@ -0,0 +1,5 @@ +--- +title: Enable Slack notifications for alerts +merge_request: 34038 +author: +type: added diff --git a/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml b/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml new file mode 100644 index 00000000000..39231901fae --- /dev/null +++ b/changelogs/unreleased/220477-harden-ci-pipelines-usage-data-queries.yml @@ -0,0 +1,5 @@ +--- +title: Harden CI pipelines usage data queries with an index +merge_request: 34045 +author: +type: performance diff --git a/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml b/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml new file mode 100644 index 00000000000..15e671bad56 --- /dev/null +++ b/changelogs/unreleased/220616-group-code-icons-in-toolbar.yml @@ -0,0 +1,5 @@ +--- +title: Update Static Site Editor toolbar to group inline-code and code-block buttons together +merge_request: 34006 +author: +type: changed diff --git a/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml b/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml new file mode 100644 index 00000000000..9f01694f06a --- /dev/null +++ b/changelogs/unreleased/220954-replace-fa-file-image-o-with-gitlab-media-icon.yml @@ -0,0 +1,5 @@ +--- +title: Use GitLab SVG icon for file attacher action +merge_request: 34196 +author: +type: other diff --git a/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml b/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml new file mode 100644 index 00000000000..58d594fe4f8 --- /dev/null +++ b/changelogs/unreleased/221052-fix-custom-slashcommand-receiving-500.yml @@ -0,0 +1,5 @@ +--- +title: Fix undefined method error +merge_request: 34522 +author: +type: fixed diff --git a/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml b/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml new file mode 100644 index 00000000000..7fca5a43e6c --- /dev/null +++ b/changelogs/unreleased/221136-docs-product-feedback-slack-notifications-service-doc-outdated.yml @@ -0,0 +1,5 @@ +--- +title: Fix order of integrations to be sorted alphabetically +merge_request: 34501 +author: +type: fixed diff --git a/changelogs/unreleased/221174-graphql-pagination-bug.yml b/changelogs/unreleased/221174-graphql-pagination-bug.yml new file mode 100644 index 00000000000..70765ae708b --- /dev/null +++ b/changelogs/unreleased/221174-graphql-pagination-bug.yml @@ -0,0 +1,5 @@ +--- +title: GraphQL - properly handle pagination of millisecond-precision timestamps +merge_request: 34352 +author: +type: fixed diff --git a/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml new file mode 100644 index 00000000000..f6f54617e1a --- /dev/null +++ b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_form_d.yml @@ -0,0 +1,5 @@ +--- +title: Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml +merge_request: 32162 +author: Gilang Gumilar +type: changed diff --git a/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml new file mode 100644 index 00000000000..54168b42538 --- /dev/null +++ b/changelogs/unreleased/22691-externalize-i18n-strings-from---app-views-shared-milestones-_sideba.yml @@ -0,0 +1,5 @@ +--- +title: Externalize i18n strings from ./app/views/shared/milestones/_sidebar.html.haml +merge_request: 32150 +author: Gilang Gumilar +type: changed diff --git a/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml b/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml new file mode 100644 index 00000000000..fb2b87754da --- /dev/null +++ b/changelogs/unreleased/22691-externelize-i18n-strings-from---app-views-shared-_promo-html-haml.yml @@ -0,0 +1,5 @@ +--- +title: Externalize i18n strings from ./app/views/shared/_promo.html.haml +merge_request: 32109 +author: Gilang Gumilar +type: changed diff --git a/changelogs/unreleased/22822-ide-paste-images.yml b/changelogs/unreleased/22822-ide-paste-images.yml new file mode 100644 index 00000000000..26a3adf70a6 --- /dev/null +++ b/changelogs/unreleased/22822-ide-paste-images.yml @@ -0,0 +1,5 @@ +--- +title: Add support for pasting images in the Web IDE +merge_request: 33256 +author: +type: added diff --git a/changelogs/unreleased/22834-ff-merge-msg.yml b/changelogs/unreleased/22834-ff-merge-msg.yml new file mode 100644 index 00000000000..6e2e09bd654 --- /dev/null +++ b/changelogs/unreleased/22834-ff-merge-msg.yml @@ -0,0 +1,5 @@ +--- +title: Improve fast-forward merge is not possible message +merge_request: 22834 +author: Ben Bodenmiller +type: other diff --git a/changelogs/unreleased/22868-fix-remove-button-alignment.yml b/changelogs/unreleased/22868-fix-remove-button-alignment.yml new file mode 100644 index 00000000000..63c755d2479 --- /dev/null +++ b/changelogs/unreleased/22868-fix-remove-button-alignment.yml @@ -0,0 +1,5 @@ +--- +title: Fix "Broadcast Messages" table overflow and button alignment +merge_request: 32801 +author: +type: fixed diff --git a/changelogs/unreleased/23352-editorconfig.yml b/changelogs/unreleased/23352-editorconfig.yml new file mode 100644 index 00000000000..a80fb3556c8 --- /dev/null +++ b/changelogs/unreleased/23352-editorconfig.yml @@ -0,0 +1,5 @@ +--- +title: Support reading .editorconfig files inside of the Web IDE +merge_request: 32378 +author: +type: added diff --git a/changelogs/unreleased/25486-batch-suggestions.yml b/changelogs/unreleased/25486-batch-suggestions.yml new file mode 100644 index 00000000000..157e50c2a15 --- /dev/null +++ b/changelogs/unreleased/25486-batch-suggestions.yml @@ -0,0 +1,5 @@ +--- +title: User can apply multiple suggestions at the same time. +merge_request: 22439 +author: Jesse Hall +type: added diff --git a/changelogs/unreleased/25830-find-file-button.yml b/changelogs/unreleased/25830-find-file-button.yml new file mode 100644 index 00000000000..cd0b2104ac2 --- /dev/null +++ b/changelogs/unreleased/25830-find-file-button.yml @@ -0,0 +1,5 @@ +--- +title: Remove search icon from Project find file button +merge_request: 33198 +author: +type: changed diff --git a/changelogs/unreleased/28154-move-controllers-outside-ee.yml b/changelogs/unreleased/28154-move-controllers-outside-ee.yml new file mode 100644 index 00000000000..3fa60392c65 --- /dev/null +++ b/changelogs/unreleased/28154-move-controllers-outside-ee.yml @@ -0,0 +1,5 @@ +--- +title: Move review related controllers/workers outside EE +merge_request: 32663 +author: +type: changed diff --git a/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml b/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml new file mode 100644 index 00000000000..85f6aa53840 --- /dev/null +++ b/changelogs/unreleased/28589-emoji-status-popover-doesn-t-show-emoji-when-it-s-in-the-message.yml @@ -0,0 +1,5 @@ +--- +title: Fix rendering of emojis in status tooltips +merge_request: 32604 +author: +type: fixed diff --git a/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml b/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml new file mode 100644 index 00000000000..bec0d8d3c95 --- /dev/null +++ b/changelogs/unreleased/30707-show-outdated-status-of-suggestions.yml @@ -0,0 +1,5 @@ +--- +title: Show disabled suggestion button with tooltip message +merge_request: 33357 +author: +type: changed diff --git a/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml b/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml new file mode 100644 index 00000000000..565fed3508e --- /dev/null +++ b/changelogs/unreleased/30853-footer-system-message-covers-horizontal-scrollbar.yml @@ -0,0 +1,5 @@ +--- +title: Footer system message fix +merge_request: +author: +type: fixed diff --git a/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml b/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml new file mode 100644 index 00000000000..34bc383ec38 --- /dev/null +++ b/changelogs/unreleased/32230-reorder-diffs-compare-versions-dropdowns.yml @@ -0,0 +1,5 @@ +--- +title: Reorder diffs compare versions dropdowns. +merge_request: 31770 +author: Gilang Gumilar +type: changed diff --git a/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml b/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml new file mode 100644 index 00000000000..6ed24768729 --- /dev/null +++ b/changelogs/unreleased/33040-doc-cicd-yaml-clarify-rules-if-when-behaviour.yml @@ -0,0 +1,5 @@ +--- +doc: "cicd: yaml: clarify rules:if when behaviour" +merge_request: 33040 +author: Melvin Vermeeren +type: changed diff --git a/changelogs/unreleased/33185-add-missing-install-instruction.yml b/changelogs/unreleased/33185-add-missing-install-instruction.yml new file mode 100644 index 00000000000..db82588bd04 --- /dev/null +++ b/changelogs/unreleased/33185-add-missing-install-instruction.yml @@ -0,0 +1,5 @@ +--- +doc: "doc: install: add missing exiftool dependency" +merge_request: 33185 +author: Stefan Schrijvers +type: fixed diff --git a/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml b/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml new file mode 100644 index 00000000000..d2ee2c50d00 --- /dev/null +++ b/changelogs/unreleased/33743-graph-code-coverage-changes-over-time-for-a-project.yml @@ -0,0 +1,5 @@ +--- +title: Resolve Graph code coverage changes over time for a project +merge_request: 26174 +author: +type: added diff --git a/changelogs/unreleased/37412-update-error-tracking-list-message.yml b/changelogs/unreleased/37412-update-error-tracking-list-message.yml new file mode 100644 index 00000000000..5c6ece8dd51 --- /dev/null +++ b/changelogs/unreleased/37412-update-error-tracking-list-message.yml @@ -0,0 +1,5 @@ +--- +title: Update text in error tracking list error message +merge_request: 33872 +author: +type: fixed diff --git a/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml b/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml new file mode 100644 index 00000000000..e2ab210a333 --- /dev/null +++ b/changelogs/unreleased/39545-cleanup-dynamic-milestone-pages.yml @@ -0,0 +1,5 @@ +--- +title: Remove deprecated dashboard & group milestone pages +merge_request: 13237 +author: +type: removed diff --git a/changelogs/unreleased/500-metrics-creation.yml b/changelogs/unreleased/500-metrics-creation.yml new file mode 100644 index 00000000000..83a93e2ff04 --- /dev/null +++ b/changelogs/unreleased/500-metrics-creation.yml @@ -0,0 +1,5 @@ +--- +title: Fix for metrics creation when saving MR +merge_request: 32668 +author: +type: fixed diff --git a/changelogs/unreleased/Fix-spelling-error.yml b/changelogs/unreleased/Fix-spelling-error.yml new file mode 100644 index 00000000000..c851da131fe --- /dev/null +++ b/changelogs/unreleased/Fix-spelling-error.yml @@ -0,0 +1,5 @@ +--- +title: Fix spelling error on Ci::RunnersFinder +merge_request: 32985 +author: Arthur de Lapertosa Lisboa +type: fixed diff --git a/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml b/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml new file mode 100644 index 00000000000..27c9dbaf3b6 --- /dev/null +++ b/changelogs/unreleased/Remove-addAssignee-logic-from-issues-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove addAssignee logic from issue model +merge_request: 32231 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml b/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml new file mode 100644 index 00000000000..df0e490e1ca --- /dev/null +++ b/changelogs/unreleased/Remove-addLabel-function-logic-from-issue-models.yml @@ -0,0 +1,5 @@ +--- +title: Remove addLabel Logic from issue models +merge_request: 32233 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml b/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml new file mode 100644 index 00000000000..7c537b04d84 --- /dev/null +++ b/changelogs/unreleased/Remove-addMilestone-logic-from-issue-models.yml @@ -0,0 +1,5 @@ +--- +title: Remove addMilestone logic from issue model +merge_request: 32235 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml b/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml new file mode 100644 index 00000000000..a32c3d5f847 --- /dev/null +++ b/changelogs/unreleased/Remove-clickable-styling-from-loading-row.yml @@ -0,0 +1,5 @@ +--- +title: Fix loading and empty state styling for alerts list +merge_request: 32531 +author: +type: fixed diff --git a/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml b/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml new file mode 100644 index 00000000000..2832db23bed --- /dev/null +++ b/changelogs/unreleased/Remove-destroy-function-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove destroy function logic from list model +merge_request: 32237 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml b/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml new file mode 100644 index 00000000000..7e4bfe78cf6 --- /dev/null +++ b/changelogs/unreleased/Remove-findAssignee-logic-from-issues-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove findAssignee logic from issue model +merge_request: 32238 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml b/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml new file mode 100644 index 00000000000..97fa19ca080 --- /dev/null +++ b/changelogs/unreleased/Remove-findLabel-logic-from-issues-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove findLabel logic from issue model +merge_request: 32239 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml b/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml new file mode 100644 index 00000000000..74d57ff4f14 --- /dev/null +++ b/changelogs/unreleased/Remove-findissue-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove findIssue logic from list model +merge_request: 32241 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml b/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml new file mode 100644 index 00000000000..9323405a02c --- /dev/null +++ b/changelogs/unreleased/Remove-moveIssue-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove moveIssue logic from list model +merge_request: 32242 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml b/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml new file mode 100644 index 00000000000..978533e9285 --- /dev/null +++ b/changelogs/unreleased/Remove-newIssue-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove newIssue logic from list model +merge_request: 32244 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml b/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml new file mode 100644 index 00000000000..d548c912513 --- /dev/null +++ b/changelogs/unreleased/Remove-nextPage-function-logic-from-listmodel.yml @@ -0,0 +1,5 @@ +--- +title: Remove nextpage function logic from list model +merge_request: 31904 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml new file mode 100644 index 00000000000..df0488a3882 --- /dev/null +++ b/changelogs/unreleased/Remove-removeAllAssignees-logic-from-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeAllAssignees logic from issue model +merge_request: 32247 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml new file mode 100644 index 00000000000..257f95de712 --- /dev/null +++ b/changelogs/unreleased/Remove-removeAssignee-logic-from-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeAssignee logic from issue model +merge_request: 32248 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml b/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml new file mode 100644 index 00000000000..8d929b1a448 --- /dev/null +++ b/changelogs/unreleased/Remove-removeIssue-function-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeIssue logic from list model +merge_request: +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml b/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml new file mode 100644 index 00000000000..a04939f68f4 --- /dev/null +++ b/changelogs/unreleased/Remove-removeLabel-logic-from-issues-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeLabel logic from issue model +merge_request: 32251 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml b/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml new file mode 100644 index 00000000000..18398999113 --- /dev/null +++ b/changelogs/unreleased/Remove-removeLabels-logic-from-issues-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeLabels logic from issue model +merge_request: 32252 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml b/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml new file mode 100644 index 00000000000..ff000f33c53 --- /dev/null +++ b/changelogs/unreleased/Remove-removeMilestone-logic-from-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeMilestone logic from issue model +merge_request: 32253 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml b/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml new file mode 100644 index 00000000000..ba525900849 --- /dev/null +++ b/changelogs/unreleased/Remove-removeMultipleIssues-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove removeMultipleIssues logic from list model +merge_request: 32254 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml b/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml new file mode 100644 index 00000000000..5295fed6e98 --- /dev/null +++ b/changelogs/unreleased/Remove-setFetchingState-logic-from-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove setFetchingState logic from issue model +merge_request: 32255 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml b/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml new file mode 100644 index 00000000000..38c2b29d18f --- /dev/null +++ b/changelogs/unreleased/Remove-setLoadingState-logic-From-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove setLoadingState logic from issue model +merge_request: 32226 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml b/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml new file mode 100644 index 00000000000..6b13103b332 --- /dev/null +++ b/changelogs/unreleased/Remove-update-fuction-logic-from-list-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove update function logic from list model +merge_request: 31900 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml b/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml new file mode 100644 index 00000000000..27af15c3cc5 --- /dev/null +++ b/changelogs/unreleased/Remove-updateData-logic-from-issue-model.yml @@ -0,0 +1,5 @@ +--- +title: Remove updateData logic from issue model +merge_request: 32256 +author: nuwe1 +type: other diff --git a/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml b/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml new file mode 100644 index 00000000000..48a48e34c69 --- /dev/null +++ b/changelogs/unreleased/aalakkad-fix-time-tracking-help-link.yml @@ -0,0 +1,5 @@ +--- +title: Fix time_tracking help link +merge_request: 32552 +author: +type: fixed diff --git a/changelogs/unreleased/ab-alert-usage-ping.yml b/changelogs/unreleased/ab-alert-usage-ping.yml new file mode 100644 index 00000000000..408e511cd36 --- /dev/null +++ b/changelogs/unreleased/ab-alert-usage-ping.yml @@ -0,0 +1,5 @@ +--- +title: Add count of alerts from all sources to usage ping +merge_request: 33220 +author: +type: added diff --git a/changelogs/unreleased/ab-cleanup-migrations.yml b/changelogs/unreleased/ab-cleanup-migrations.yml new file mode 100644 index 00000000000..803040ab69b --- /dev/null +++ b/changelogs/unreleased/ab-cleanup-migrations.yml @@ -0,0 +1,5 @@ +--- +title: Squash database migrations prior to 2019 into one +merge_request: 31936 +author: +type: other diff --git a/changelogs/unreleased/ab-monitor-demo-environments-2.yml b/changelogs/unreleased/ab-monitor-demo-environments-2.yml new file mode 100644 index 00000000000..19bb53079d8 --- /dev/null +++ b/changelogs/unreleased/ab-monitor-demo-environments-2.yml @@ -0,0 +1,5 @@ +--- +title: Add Scheduled Job for Monitoring Monitor Group Demo Environments +merge_request: 27360 +author: +type: added diff --git a/changelogs/unreleased/ab-services-partial-indexes.yml b/changelogs/unreleased/ab-services-partial-indexes.yml new file mode 100644 index 00000000000..15dad096f7b --- /dev/null +++ b/changelogs/unreleased/ab-services-partial-indexes.yml @@ -0,0 +1,5 @@ +--- +title: Adjust condition for partial indexes on services table +merge_request: 33044 +author: +type: performance diff --git a/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml b/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml new file mode 100644 index 00000000000..8f5ef68ba5b --- /dev/null +++ b/changelogs/unreleased/add-api-endpoint-for-resource-milestone-events-pd.yml @@ -0,0 +1,5 @@ +--- +title: Add API endpoint for resource milestone events +merge_request: 31720 +author: +type: added diff --git a/changelogs/unreleased/add-doc-custom-validators.yml b/changelogs/unreleased/add-doc-custom-validators.yml new file mode 100644 index 00000000000..86e32801bdc --- /dev/null +++ b/changelogs/unreleased/add-doc-custom-validators.yml @@ -0,0 +1,5 @@ +--- +title: Add doc for custom validators in api styleguide +merge_request: 26734 +author: Rajendra Kadam +type: added diff --git a/changelogs/unreleased/add-experience-level-to-user-preferences.yml b/changelogs/unreleased/add-experience-level-to-user-preferences.yml new file mode 100644 index 00000000000..2029ebc90d5 --- /dev/null +++ b/changelogs/unreleased/add-experience-level-to-user-preferences.yml @@ -0,0 +1,5 @@ +--- +title: Add experience_level to user_preferences +merge_request: 32784 +author: +type: added diff --git a/changelogs/unreleased/add-global-plans.yml b/changelogs/unreleased/add-global-plans.yml new file mode 100644 index 00000000000..cafd6cfc227 --- /dev/null +++ b/changelogs/unreleased/add-global-plans.yml @@ -0,0 +1,5 @@ +--- +title: Adapt Limitable for system-wide features +merge_request: 32574 +author: +type: added diff --git a/changelogs/unreleased/add-group-runners-finder.yml b/changelogs/unreleased/add-group-runners-finder.yml new file mode 100644 index 00000000000..a90eb2c2e42 --- /dev/null +++ b/changelogs/unreleased/add-group-runners-finder.yml @@ -0,0 +1,5 @@ +--- +title: Add finder for group-level runners +merge_request: 29283 +author: Arthur de Lapertosa Lisboa +type: added diff --git a/changelogs/unreleased/add-tags-to-queue-attributes.yml b/changelogs/unreleased/add-tags-to-queue-attributes.yml new file mode 100644 index 00000000000..fd609109a67 --- /dev/null +++ b/changelogs/unreleased/add-tags-to-queue-attributes.yml @@ -0,0 +1,5 @@ +--- +title: Add tags to experimental queue selector attributes +merge_request: 32651 +author: +type: added diff --git a/changelogs/unreleased/add_build_reference.yml b/changelogs/unreleased/add_build_reference.yml new file mode 100644 index 00000000000..70db43c810d --- /dev/null +++ b/changelogs/unreleased/add_build_reference.yml @@ -0,0 +1,5 @@ +--- +title: Added build_id column to requirements_management_test_reports table +merge_request: 33184 +author: +type: other diff --git a/changelogs/unreleased/ajk-GQL-user-mrs.yml b/changelogs/unreleased/ajk-GQL-user-mrs.yml new file mode 100644 index 00000000000..103ae1d33dd --- /dev/null +++ b/changelogs/unreleased/ajk-GQL-user-mrs.yml @@ -0,0 +1,5 @@ +--- +title: Add GraphQL support for authored and assigned Merge Requests +merge_request: 31227 +author: +type: added diff --git a/changelogs/unreleased/ajk-design-activity-c.yml b/changelogs/unreleased/ajk-design-activity-c.yml new file mode 100644 index 00000000000..e9a0ad4b998 --- /dev/null +++ b/changelogs/unreleased/ajk-design-activity-c.yml @@ -0,0 +1,5 @@ +--- +title: Add design activity in event streams +merge_request: 33534 +author: +type: added diff --git a/changelogs/unreleased/ajk-design-ref-filter.yml b/changelogs/unreleased/ajk-design-ref-filter.yml new file mode 100644 index 00000000000..0f77e344d65 --- /dev/null +++ b/changelogs/unreleased/ajk-design-ref-filter.yml @@ -0,0 +1,5 @@ +--- +title: Enable GitLab-Flavored Markdown processing for design links +merge_request: 32446 +author: +type: added diff --git a/changelogs/unreleased/ajk-gql-add-mr-author.yml b/changelogs/unreleased/ajk-gql-add-mr-author.yml new file mode 100644 index 00000000000..f4d8048f54b --- /dev/null +++ b/changelogs/unreleased/ajk-gql-add-mr-author.yml @@ -0,0 +1,5 @@ +--- +title: Add missing Merge Request fields +merge_request: 30935 +author: +type: added diff --git a/changelogs/unreleased/ajk-gql-labels.yml b/changelogs/unreleased/ajk-gql-labels.yml new file mode 100644 index 00000000000..8716e536492 --- /dev/null +++ b/changelogs/unreleased/ajk-gql-labels.yml @@ -0,0 +1,5 @@ +--- +title: Add GraphQL support for project and group labels +merge_request: 32113 +author: +type: added diff --git a/changelogs/unreleased/ajk-gql-lookahead.yml b/changelogs/unreleased/ajk-gql-lookahead.yml new file mode 100644 index 00000000000..e1d920ba57a --- /dev/null +++ b/changelogs/unreleased/ajk-gql-lookahead.yml @@ -0,0 +1,5 @@ +--- +title: Add GraphQL lookahead support +merge_request: 32373 +author: +type: performance diff --git a/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml b/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml new file mode 100644 index 00000000000..02c84076fc3 --- /dev/null +++ b/changelogs/unreleased/ajk-gql-mr-resolvers-split.yml @@ -0,0 +1,5 @@ +--- +title: Add filters to merge request fields +merge_request: 32328 +author: +type: added diff --git a/changelogs/unreleased/ajk-gql-mr-update.yml b/changelogs/unreleased/ajk-gql-mr-update.yml new file mode 100644 index 00000000000..7d0b76f4df1 --- /dev/null +++ b/changelogs/unreleased/ajk-gql-mr-update.yml @@ -0,0 +1,5 @@ +--- +title: Add mutation to update merge requests +merge_request: 34748 +author: +type: added diff --git a/changelogs/unreleased/ajk-safe-wiki-event-url.yml b/changelogs/unreleased/ajk-safe-wiki-event-url.yml new file mode 100644 index 00000000000..4e25186e024 --- /dev/null +++ b/changelogs/unreleased/ajk-safe-wiki-event-url.yml @@ -0,0 +1,5 @@ +--- +title: Ensure we always generate a valid wiki event URL +merge_request: 34191 +author: +type: fixed diff --git a/changelogs/unreleased/ak-update-google-auth.yml b/changelogs/unreleased/ak-update-google-auth.yml new file mode 100644 index 00000000000..cb91b9ebe93 --- /dev/null +++ b/changelogs/unreleased/ak-update-google-auth.yml @@ -0,0 +1,5 @@ +--- +title: Support IAP protected prometheus installations +merge_request: 33508 +author: +type: added diff --git a/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml b/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml new file mode 100644 index 00000000000..3d4e35b7322 --- /dev/null +++ b/changelogs/unreleased/al-214420-pass-hard-delete-on-snippets-destroy.yml @@ -0,0 +1,5 @@ +--- +title: Pass hard delete option to snippets bulk destroy +merge_request: 33520 +author: +type: fixed diff --git a/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml b/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml new file mode 100644 index 00000000000..de49e91fe13 --- /dev/null +++ b/changelogs/unreleased/al-215200-snippets-by-type-usage-counter.yml @@ -0,0 +1,5 @@ +--- +title: Add index on id and type for Snippets +merge_request: 32885 +author: +type: performance diff --git a/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml b/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml new file mode 100644 index 00000000000..89a3d978487 --- /dev/null +++ b/changelogs/unreleased/al-217784-add-blobs-field-to-snippets-in-graphql.yml @@ -0,0 +1,5 @@ +--- +title: Add blobs field to SnippetType in GraphQL +merge_request: 33657 +author: +type: changed diff --git a/changelogs/unreleased/alert-assignee-dropdown.yml b/changelogs/unreleased/alert-assignee-dropdown.yml new file mode 100644 index 00000000000..3ad54932780 --- /dev/null +++ b/changelogs/unreleased/alert-assignee-dropdown.yml @@ -0,0 +1,5 @@ +--- +title: Allow the assignment of alerts to users from the alert detail view +merge_request: 33122 +author: +type: added diff --git a/changelogs/unreleased/alert-assignee-list-view.yml b/changelogs/unreleased/alert-assignee-list-view.yml new file mode 100644 index 00000000000..cb942b87c0b --- /dev/null +++ b/changelogs/unreleased/alert-assignee-list-view.yml @@ -0,0 +1,5 @@ +--- +title: Add database and GraphQL support for alert assignees +merge_request: 32609 +author: +type: added diff --git a/changelogs/unreleased/alert-management-mobile-alignment.yml b/changelogs/unreleased/alert-management-mobile-alignment.yml new file mode 100644 index 00000000000..04f2c3224ff --- /dev/null +++ b/changelogs/unreleased/alert-management-mobile-alignment.yml @@ -0,0 +1,5 @@ +--- +title: Update alert management mobile table alignment +merge_request: 32295 +author: +type: other diff --git a/changelogs/unreleased/alert-system-notes-tool-tip.yml b/changelogs/unreleased/alert-system-notes-tool-tip.yml new file mode 100644 index 00000000000..3129a4ff521 --- /dev/null +++ b/changelogs/unreleased/alert-system-notes-tool-tip.yml @@ -0,0 +1,5 @@ +--- +title: Enable ability to assign alerts to users with corresponding system notes and todos +merge_request: 34360 +author: +type: added diff --git a/changelogs/unreleased/alert-system-notes.yml b/changelogs/unreleased/alert-system-notes.yml new file mode 100644 index 00000000000..2cff9e8b2a4 --- /dev/null +++ b/changelogs/unreleased/alert-system-notes.yml @@ -0,0 +1,5 @@ +--- +title: Add system note when assigning user to alert +merge_request: 33217 +author: +type: added diff --git a/changelogs/unreleased/alert-table-classes-hotfix.yml b/changelogs/unreleased/alert-table-classes-hotfix.yml new file mode 100644 index 00000000000..46d4ae10cbb --- /dev/null +++ b/changelogs/unreleased/alert-table-classes-hotfix.yml @@ -0,0 +1,5 @@ +--- +title: Fix broken CSS classes inside alert management list +merge_request: 33038 +author: +type: fixed diff --git a/changelogs/unreleased/allow_skipped.yml b/changelogs/unreleased/allow_skipped.yml new file mode 100644 index 00000000000..b920298f42e --- /dev/null +++ b/changelogs/unreleased/allow_skipped.yml @@ -0,0 +1,5 @@ +--- +title: Add setting to allow merge on skipped pipeline +merge_request: 27490 +author: Mathieu Parent +type: added diff --git a/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml b/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml new file mode 100644 index 00000000000..799e32d1578 --- /dev/null +++ b/changelogs/unreleased/andr3-218471-code-review-diff-overlaps-sidebar.yml @@ -0,0 +1,5 @@ +--- +title: Fix whitespace changes overgrowing the diff container +merge_request: 32774 +author: +type: fixed diff --git a/changelogs/unreleased/asciidoc-alignment-roles.yml b/changelogs/unreleased/asciidoc-alignment-roles.yml new file mode 100644 index 00000000000..d53d3705243 --- /dev/null +++ b/changelogs/unreleased/asciidoc-alignment-roles.yml @@ -0,0 +1,5 @@ +--- +title: 'AsciiDoc: Add support for built-in alignment roles.' +merge_request: 32928 +author: mnrvwl +type: fixed diff --git a/changelogs/unreleased/assign-alerts-sidebar-base.yml b/changelogs/unreleased/assign-alerts-sidebar-base.yml new file mode 100644 index 00000000000..3785df5e8e0 --- /dev/null +++ b/changelogs/unreleased/assign-alerts-sidebar-base.yml @@ -0,0 +1,5 @@ +--- +title: Assign alerts sidebar base +merge_request 32642: +author: +type: changed diff --git a/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml b/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml new file mode 100644 index 00000000000..cdf9bb479ce --- /dev/null +++ b/changelogs/unreleased/assign-alerts-sidebar-container-fix.yml @@ -0,0 +1,5 @@ +--- +title: Assign alerts sidebar container fix +merge_request: 32743 +author: +type: other diff --git a/changelogs/unreleased/autodevops-secrets.yml b/changelogs/unreleased/autodevops-secrets.yml new file mode 100644 index 00000000000..dd1df110620 --- /dev/null +++ b/changelogs/unreleased/autodevops-secrets.yml @@ -0,0 +1,5 @@ +--- +title: Add secret detection template to Auto DevOps +merge_request: 34467 +author: +type: changed diff --git a/changelogs/unreleased/aws-guidance.yml b/changelogs/unreleased/aws-guidance.yml new file mode 100644 index 00000000000..ab3725c1397 --- /dev/null +++ b/changelogs/unreleased/aws-guidance.yml @@ -0,0 +1,5 @@ +--- +title: Adds AWS guidance to CI/CD > Add Variable modal +merge_request: 34009 +author: +type: added diff --git a/changelogs/unreleased/browse-locked-artifact.yml b/changelogs/unreleased/browse-locked-artifact.yml new file mode 100644 index 00000000000..d89739a3de6 --- /dev/null +++ b/changelogs/unreleased/browse-locked-artifact.yml @@ -0,0 +1,5 @@ +--- +title: Update artifacts section to show when an artifact is locked +merge_request: 32992 +author: +type: changed diff --git a/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml b/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml new file mode 100644 index 00000000000..b222b69f295 --- /dev/null +++ b/changelogs/unreleased/bump_ci_auto_deploy_0_16.yml @@ -0,0 +1,5 @@ +--- +title: Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG +merge_request: 33799 +author: +type: changed diff --git a/changelogs/unreleased/bump_cluster_applications_version.yml b/changelogs/unreleased/bump_cluster_applications_version.yml new file mode 100644 index 00000000000..7ea7407350d --- /dev/null +++ b/changelogs/unreleased/bump_cluster_applications_version.yml @@ -0,0 +1,5 @@ +--- +title: Bump cluster-applications version to v0.20.0 +merge_request: 34569 +author: +type: added diff --git a/changelogs/unreleased/cablett-email-link.yml b/changelogs/unreleased/cablett-email-link.yml new file mode 100644 index 00000000000..405bcb649c5 --- /dev/null +++ b/changelogs/unreleased/cablett-email-link.yml @@ -0,0 +1,5 @@ +--- +title: Add new issue link to email notification header +merge_request: 32833 +author: +type: changed diff --git a/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml b/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml new file mode 100644 index 00000000000..4d2128c5910 --- /dev/null +++ b/changelogs/unreleased/cablett-merge-request-merged-email-ref.yml @@ -0,0 +1,5 @@ +--- +title: Render Merge request reference as link +merge_request: 33248 +author: +type: changed diff --git a/changelogs/unreleased/calebw-update-stuck-runner-message.yml b/changelogs/unreleased/calebw-update-stuck-runner-message.yml new file mode 100644 index 00000000000..57c48377ae5 --- /dev/null +++ b/changelogs/unreleased/calebw-update-stuck-runner-message.yml @@ -0,0 +1,5 @@ +--- +title: Clarify verbiage for stuck job messages. +merge_request: 32250 +author: +type: other diff --git a/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml b/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml new file mode 100644 index 00000000000..f32424612b9 --- /dev/null +++ b/changelogs/unreleased/change_from_vendor_specific_to_gitlab.yml @@ -0,0 +1,5 @@ +--- +title: Change from vendor specific to Gitlab +merge_request: 34576 +author: +type: changed diff --git a/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml b/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml new file mode 100644 index 00000000000..a9415ef2def --- /dev/null +++ b/changelogs/unreleased/chore-bump-omniauth_openid_connect.yml @@ -0,0 +1,5 @@ +--- +title: Bump omniauth_openid_connect to 0.3.5 +merge_request: 34030 +author: Roger Meier +type: other diff --git a/changelogs/unreleased/chore-styles-removal.yml b/changelogs/unreleased/chore-styles-removal.yml new file mode 100644 index 00000000000..b395ad5cf20 --- /dev/null +++ b/changelogs/unreleased/chore-styles-removal.yml @@ -0,0 +1,5 @@ +--- +title: Remove temporary datepicker position fix as it is no longer required +merge_request: 31836 +author: Arun Kumar Mohan +type: removed diff --git a/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml b/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml new file mode 100644 index 00000000000..91e3117bffa --- /dev/null +++ b/changelogs/unreleased/ci-rust-cargo-test-workspace-option.yml @@ -0,0 +1,5 @@ +--- +title: "Rust CI template: Replace --all with --workspace on cargo test." +merge_request: 33517 +author: Markus Becker +type: fixed diff --git a/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml b/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml new file mode 100644 index 00000000000..d14cf0f9382 --- /dev/null +++ b/changelogs/unreleased/clean-up-install-from-source-gitlab-shell.yml @@ -0,0 +1,5 @@ +--- +title: Clean up gitlab-shell install-from-source path +merge_request: 33057 +author: +type: changed diff --git a/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml b/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml new file mode 100644 index 00000000000..0d7f75d24b8 --- /dev/null +++ b/changelogs/unreleased/cngo-add-link-text-to-collapsed-left-sidebar.yml @@ -0,0 +1,5 @@ +--- +title: Add link text to collapsed left sidebar links for screen readers +merge_request: 33866 +author: +type: fixed diff --git a/changelogs/unreleased/cngo-improve-header-accessibility.yml b/changelogs/unreleased/cngo-improve-header-accessibility.yml new file mode 100644 index 00000000000..384db4602b2 --- /dev/null +++ b/changelogs/unreleased/cngo-improve-header-accessibility.yml @@ -0,0 +1,5 @@ +--- +title: Improve header acccessibility +merge_request: 33603 +author: +type: fixed diff --git a/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml b/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml new file mode 100644 index 00000000000..5da2079f9b4 --- /dev/null +++ b/changelogs/unreleased/cngo-make-markdown-textarea-links-tab-accessible.yml @@ -0,0 +1,5 @@ +--- +title: Make markdown textarea links tab-accessible +merge_request: 33518 +author: +type: fixed diff --git a/changelogs/unreleased/create-branch-url.yml b/changelogs/unreleased/create-branch-url.yml new file mode 100644 index 00000000000..84f89bba805 --- /dev/null +++ b/changelogs/unreleased/create-branch-url.yml @@ -0,0 +1,5 @@ +--- +title: Add anchor for creating a branch +merge_request: 32745 +author: +type: other diff --git a/changelogs/unreleased/create-ops-ff-issues-table.yml b/changelogs/unreleased/create-ops-ff-issues-table.yml new file mode 100644 index 00000000000..9d6395d26cc --- /dev/null +++ b/changelogs/unreleased/create-ops-ff-issues-table.yml @@ -0,0 +1,5 @@ +--- +title: Create operations_feature_flags_issues table +merge_request: 32876 +author: +type: added diff --git a/changelogs/unreleased/curd-auto-merge-in-transaction.yml b/changelogs/unreleased/curd-auto-merge-in-transaction.yml new file mode 100644 index 00000000000..9a9cfbea1c7 --- /dev/null +++ b/changelogs/unreleased/curd-auto-merge-in-transaction.yml @@ -0,0 +1,5 @@ +--- +title: Wrap auto merge parameters update in database transaction +merge_request: 33471 +author: +type: fixed diff --git a/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml b/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml new file mode 100644 index 00000000000..d4b91718861 --- /dev/null +++ b/changelogs/unreleased/data-endpoint-for-dag-visualization-2.yml @@ -0,0 +1,5 @@ +--- +title: Add DAG serializer for pipelines controller +merge_request: 31583 +author: +type: added diff --git a/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml b/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml new file mode 100644 index 00000000000..96ad1bc440d --- /dev/null +++ b/changelogs/unreleased/dblessing-new-sign-in-email-beautification.yml @@ -0,0 +1,5 @@ +--- +title: Improve new/unknown sign-in email styling +merge_request: 32808 +author: +type: changed diff --git a/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml b/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml new file mode 100644 index 00000000000..ebe823442f0 --- /dev/null +++ b/changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml @@ -0,0 +1,5 @@ +--- +title: Add GitBook logo to project templates +merge_request: 33403 +author: +type: changed diff --git a/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml b/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml new file mode 100644 index 00000000000..19bce8e3c28 --- /dev/null +++ b/changelogs/unreleased/dennis-project-templates-add-gomicro-logo.yml @@ -0,0 +1,5 @@ +--- +title: Add GoMicro logo to project templates +merge_request: 33404 +author: +type: changed diff --git a/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml b/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml new file mode 100644 index 00000000000..59ae2a3a99a --- /dev/null +++ b/changelogs/unreleased/dennis-project-templates-add-hexo-logo.yml @@ -0,0 +1,5 @@ +--- +title: Add Hexo logo to project templates +merge_request: 33406 +author: +type: changed diff --git a/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml b/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml new file mode 100644 index 00000000000..df2305c1406 --- /dev/null +++ b/changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml @@ -0,0 +1,5 @@ +--- +title: Add Hugo logo to project templates +merge_request: 33402 +author: +type: changed diff --git a/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml b/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml new file mode 100644 index 00000000000..1cb28444cbc --- /dev/null +++ b/changelogs/unreleased/dennis-project-templates-add-jekyll-logo.yml @@ -0,0 +1,5 @@ +--- +title: Add Jekyll logo to project templates +merge_request: 33405 +author: +type: changed diff --git a/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml b/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml new file mode 100644 index 00000000000..80d2ec6d7ba --- /dev/null +++ b/changelogs/unreleased/dennis-update-webhooks-page-from-whitelist-to-allowlist.yml @@ -0,0 +1,5 @@ +--- +title: Update local IP address and domain name allow list input label +merge_request: 33812 +author: +type: changed diff --git a/changelogs/unreleased/design-view-scrolling-issue-bug.yml b/changelogs/unreleased/design-view-scrolling-issue-bug.yml new file mode 100644 index 00000000000..d47ecfa848a --- /dev/null +++ b/changelogs/unreleased/design-view-scrolling-issue-bug.yml @@ -0,0 +1,5 @@ +--- +title: Remove ability to scroll Issue while in Design View +merge_request: 29881 +author: +type: fixed diff --git a/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml b/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml new file mode 100644 index 00000000000..8e96cf2d53a --- /dev/null +++ b/changelogs/unreleased/docs-auto-build-cnb-custom-builder.yml @@ -0,0 +1,5 @@ +--- +title: Customize the Cloud Native Buildpack builder used with Auto Build +merge_request: 32691 +author: +type: added diff --git a/changelogs/unreleased/docs-firefox-u2f-api.yml b/changelogs/unreleased/docs-firefox-u2f-api.yml new file mode 100644 index 00000000000..c15a81694f5 --- /dev/null +++ b/changelogs/unreleased/docs-firefox-u2f-api.yml @@ -0,0 +1,5 @@ +--- +title: Update U2F docs for Firefox 67+ +merge_request: 32289 +author: Takuya Noguchi +type: other diff --git a/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml b/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml new file mode 100644 index 00000000000..a48e6e235f9 --- /dev/null +++ b/changelogs/unreleased/docs-fj-update-web-ide-terminal-doc-core.yml @@ -0,0 +1,5 @@ +--- +title: Update docs to reflect move web IDE Terminal and file sync to Core +merge_request: 33419 +author: +type: other diff --git a/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml b/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml new file mode 100644 index 00000000000..9ad183db112 --- /dev/null +++ b/changelogs/unreleased/docs-saml-sso-from-core-at-self-hosted.yml @@ -0,0 +1,5 @@ +--- +title: Specify tiers for SAML SSO at self-hosted plans +merge_request: 34040 +author: Takuya Noguchi +type: other diff --git a/changelogs/unreleased/docs-u2f-version-history.yml b/changelogs/unreleased/docs-u2f-version-history.yml new file mode 100644 index 00000000000..e847faa317e --- /dev/null +++ b/changelogs/unreleased/docs-u2f-version-history.yml @@ -0,0 +1,5 @@ +--- +title: Add version history information on U2F support +merge_request: 33229 +author: Takuya Noguchi +type: other diff --git a/changelogs/unreleased/downloadable_reports.yml b/changelogs/unreleased/downloadable_reports.yml new file mode 100644 index 00000000000..58f2c6d5ee1 --- /dev/null +++ b/changelogs/unreleased/downloadable_reports.yml @@ -0,0 +1,5 @@ +--- +title: Add secret_detection to DOWNLOADABLE_TYPES +merge_request: 34313 +author: +type: added diff --git a/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml b/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml new file mode 100644 index 00000000000..dbe7c17f61d --- /dev/null +++ b/changelogs/unreleased/dz-redirect-unscoped-pipelines-routes.yml @@ -0,0 +1,5 @@ +--- +title: Move pipelines routing under /-/ scope +merge_request: 30730 +author: +type: changed diff --git a/changelogs/unreleased/ee-app-services-1.yml b/changelogs/unreleased/ee-app-services-1.yml new file mode 100644 index 00000000000..bbd916a9d2c --- /dev/null +++ b/changelogs/unreleased/ee-app-services-1.yml @@ -0,0 +1,5 @@ +--- +title: Move prepend to last in ee-app-services +merge_request: 31838 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml b/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml new file mode 100644 index 00000000000..b16051b7303 --- /dev/null +++ b/changelogs/unreleased/emilyring-cluster-list-refactor-provider-icon.yml @@ -0,0 +1,5 @@ +--- +title: Added provider type icon to cluster list +merge_request: 33196 +author: +type: changed diff --git a/changelogs/unreleased/emilyring-remove-tf-plan-name.yml b/changelogs/unreleased/emilyring-remove-tf-plan-name.yml new file mode 100644 index 00000000000..c7bbb46c82f --- /dev/null +++ b/changelogs/unreleased/emilyring-remove-tf-plan-name.yml @@ -0,0 +1,5 @@ +--- +title: Removed default artifact name for Terraform template +merge_request: 34557 +author: +type: fixed diff --git a/changelogs/unreleased/emilyring-tf-widget-multiple.yml b/changelogs/unreleased/emilyring-tf-widget-multiple.yml new file mode 100644 index 00000000000..1bd7a002ede --- /dev/null +++ b/changelogs/unreleased/emilyring-tf-widget-multiple.yml @@ -0,0 +1,5 @@ +--- +title: Allow Tf Plan to genrate multiple reports +merge_request: 33867 +author: +type: changed diff --git a/changelogs/unreleased/enable-atomic-processing-by-default.yml b/changelogs/unreleased/enable-atomic-processing-by-default.yml new file mode 100644 index 00000000000..691728b4ae4 --- /dev/null +++ b/changelogs/unreleased/enable-atomic-processing-by-default.yml @@ -0,0 +1,5 @@ +--- +title: Enable CI Atomic Processing by default +merge_request: +author: +type: performance diff --git a/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml b/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml new file mode 100644 index 00000000000..2fac0330b5c --- /dev/null +++ b/changelogs/unreleased/exclude-server-fields-from-exceptions-log.yml @@ -0,0 +1,5 @@ +--- +title: Exclude extra.server fields from exceptions_json.log +merge_request: 32770 +author: +type: changed diff --git a/changelogs/unreleased/experimentation-cookie-domain.yml b/changelogs/unreleased/experimentation-cookie-domain.yml new file mode 100644 index 00000000000..94e102305fe --- /dev/null +++ b/changelogs/unreleased/experimentation-cookie-domain.yml @@ -0,0 +1,5 @@ +---
+title: Set experiementation cookie for GitLab domain only
+merge_request:
+author:
+type: fixed
diff --git a/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml b/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml new file mode 100644 index 00000000000..6a9efcff172 --- /dev/null +++ b/changelogs/unreleased/feat-admin-pages-show-custom-attributes.yml @@ -0,0 +1,5 @@ +--- +title: Show custom attributes within Admin Pages +merge_request: 34017 +author: Roger Meier +type: added diff --git a/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml b/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml new file mode 100644 index 00000000000..02298d74233 --- /dev/null +++ b/changelogs/unreleased/feature-api-add-bridge-api-endpoint.yml @@ -0,0 +1,5 @@ +--- +title: Add API endpoint for listing bridge jobs. +merge_request: 31370 +author: Abhijith Sivarajan +type: added diff --git a/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml b/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml new file mode 100644 index 00000000000..f548d243a05 --- /dev/null +++ b/changelogs/unreleased/feature-bump-cluster-applications-to-0-16-0.yml @@ -0,0 +1,5 @@ +--- +title: Adds PostHog as a CI/CD Managed Application +merge_request: 32856 +author: +type: added diff --git a/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml b/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml new file mode 100644 index 00000000000..1bb65ee2127 --- /dev/null +++ b/changelogs/unreleased/feature-gb-artifacts-exclude-feature-flag.yml @@ -0,0 +1,5 @@ +--- +title: Add support for artifacts/exclude configuration +merge_request: 33170 +author: +type: added diff --git a/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml b/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml new file mode 100644 index 00000000000..e3375d85821 --- /dev/null +++ b/changelogs/unreleased/feature-show-memory-cpu-on-cluster-list.yml @@ -0,0 +1,5 @@ +--- +title: Adds cluster CPU and Memory to cluster index +merge_request: 32601 +author: +type: changed diff --git a/changelogs/unreleased/filter-from-url-query-params-pipeline.yml b/changelogs/unreleased/filter-from-url-query-params-pipeline.yml new file mode 100644 index 00000000000..e1de53cb4ef --- /dev/null +++ b/changelogs/unreleased/filter-from-url-query-params-pipeline.yml @@ -0,0 +1,5 @@ +--- +title: Filter pipelines based on url query params +merge_request: 32230 +author: +type: added diff --git a/changelogs/unreleased/filter-pipelines-by-status.yml b/changelogs/unreleased/filter-pipelines-by-status.yml new file mode 100644 index 00000000000..e768fb3e112 --- /dev/null +++ b/changelogs/unreleased/filter-pipelines-by-status.yml @@ -0,0 +1,5 @@ +--- +title: Filter pipelines by status +merge_request: 32151 +author: +type: added diff --git a/changelogs/unreleased/filter-pipelines-by-tag-name.yml b/changelogs/unreleased/filter-pipelines-by-tag-name.yml new file mode 100644 index 00000000000..259fd8e9808 --- /dev/null +++ b/changelogs/unreleased/filter-pipelines-by-tag-name.yml @@ -0,0 +1,5 @@ +--- +title: Filter Pipelines by Tag Name +merge_request: 32470 +author: +type: added diff --git a/changelogs/unreleased/fix-atomic-processing-lock-version.yml b/changelogs/unreleased/fix-atomic-processing-lock-version.yml new file mode 100644 index 00000000000..9db891d651f --- /dev/null +++ b/changelogs/unreleased/fix-atomic-processing-lock-version.yml @@ -0,0 +1,5 @@ +--- +title: Fix atomic processing bumping a lock_version +merge_request: 32914 +author: +type: fixed diff --git a/changelogs/unreleased/fix-design-notes-filename-duplication.yml b/changelogs/unreleased/fix-design-notes-filename-duplication.yml new file mode 100644 index 00000000000..5d82323f6f2 --- /dev/null +++ b/changelogs/unreleased/fix-design-notes-filename-duplication.yml @@ -0,0 +1,5 @@ +--- +title: Fix filename duplication in design notes in activity feeds +merge_request: 32823 +author: Arun Kumar Mohan +type: fixed diff --git a/changelogs/unreleased/fix-design-todos-filename-duplication.yml b/changelogs/unreleased/fix-design-todos-filename-duplication.yml new file mode 100644 index 00000000000..901e8bbc8e3 --- /dev/null +++ b/changelogs/unreleased/fix-design-todos-filename-duplication.yml @@ -0,0 +1,5 @@ +--- +title: Fix duplicate filename displayed in design todos +merge_request: 32274 +author: Arun Kumar Mohan +type: fixed diff --git a/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml b/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml new file mode 100644 index 00000000000..cca6bb4eac3 --- /dev/null +++ b/changelogs/unreleased/fix-ecs-detached-branch-pipeline.yml @@ -0,0 +1,5 @@ +--- +title: Fix CI rules for ECS related jobs +merge_request: 33527 +author: +type: fixed diff --git a/changelogs/unreleased/fix-group-transfer-to-subgroup.yml b/changelogs/unreleased/fix-group-transfer-to-subgroup.yml new file mode 100644 index 00000000000..41294ceca36 --- /dev/null +++ b/changelogs/unreleased/fix-group-transfer-to-subgroup.yml @@ -0,0 +1,5 @@ +--- +title: Fix group transfer service to deny moving group to its subgroup +merge_request: 31495 +author: Abhisek Datta +type: fixed diff --git a/changelogs/unreleased/fix-invalid-error-tracking-method.yml b/changelogs/unreleased/fix-invalid-error-tracking-method.yml new file mode 100644 index 00000000000..90a49dcd8bd --- /dev/null +++ b/changelogs/unreleased/fix-invalid-error-tracking-method.yml @@ -0,0 +1,5 @@ +--- +title: Fix NoMethodError by using the correct method to report exceptions to Sentry +merge_request: 33260 +author: +type: fixed diff --git a/changelogs/unreleased/fix-max_import_size.yml b/changelogs/unreleased/fix-max_import_size.yml new file mode 100644 index 00000000000..0cd9ceaa4d9 --- /dev/null +++ b/changelogs/unreleased/fix-max_import_size.yml @@ -0,0 +1,5 @@ +--- +title: Add max import file size option +merge_request: 33215 +author: Roger Meier +type: added diff --git a/changelogs/unreleased/fix-omniauth-buttons-js.yml b/changelogs/unreleased/fix-omniauth-buttons-js.yml new file mode 100644 index 00000000000..9350af2cdd0 --- /dev/null +++ b/changelogs/unreleased/fix-omniauth-buttons-js.yml @@ -0,0 +1,5 @@ +--- +title: Avoid javascript for omniauth logins +merge_request: 33459 +author: Diego Louzán +type: other diff --git a/changelogs/unreleased/fix-pagination-link.yml b/changelogs/unreleased/fix-pagination-link.yml new file mode 100644 index 00000000000..d2c1fc1eb94 --- /dev/null +++ b/changelogs/unreleased/fix-pagination-link.yml @@ -0,0 +1,5 @@ +--- +title: Fix pagination link header +merge_request: 33714 +author: Max Wittig +type: fixed diff --git a/changelogs/unreleased/fix-runner-hearbeat.yml b/changelogs/unreleased/fix-runner-hearbeat.yml new file mode 100644 index 00000000000..8125bad48ab --- /dev/null +++ b/changelogs/unreleased/fix-runner-hearbeat.yml @@ -0,0 +1,5 @@ +--- +title: Fix Runner heartbeats that results in considering them offline +merge_request: 32851 +author: +type: fixed diff --git a/changelogs/unreleased/fix-selecting-status-emoji-twice.yml b/changelogs/unreleased/fix-selecting-status-emoji-twice.yml new file mode 100644 index 00000000000..b4da2f096b6 --- /dev/null +++ b/changelogs/unreleased/fix-selecting-status-emoji-twice.yml @@ -0,0 +1,5 @@ +--- +title: Fix invisible emoji modal on Set Status form when clicked the second time +merge_request: 33398 +author: +type: fixed diff --git a/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml b/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml new file mode 100644 index 00000000000..c0fd8b45692 --- /dev/null +++ b/changelogs/unreleased/fix-typo-issues-limit-settings-template.yml @@ -0,0 +1,5 @@ +--- +title: Update issue limits template to use minutes +merge_request: 34254 +author: +type: fixed diff --git a/changelogs/unreleased/fix-vertically-center-action-icon.yml b/changelogs/unreleased/fix-vertically-center-action-icon.yml new file mode 100644 index 00000000000..40c97bbc73b --- /dev/null +++ b/changelogs/unreleased/fix-vertically-center-action-icon.yml @@ -0,0 +1,5 @@ +--- +title: vertically center action icon in the CI pipeline +merge_request: 33427 +author: Nathanael Weber +type: fixed diff --git a/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml b/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml new file mode 100644 index 00000000000..bb9904faa50 --- /dev/null +++ b/changelogs/unreleased/fix_back_button_when_switching_mr_tabs.yml @@ -0,0 +1,5 @@ +--- +title: Fix back button when switching MR tabs +merge_request: 29862 +author: Lee Tickett +type: fixed diff --git a/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml b/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml new file mode 100644 index 00000000000..500b688f13f --- /dev/null +++ b/changelogs/unreleased/fix_default_path_when_creating_project_from_group_template.yml @@ -0,0 +1,5 @@ +--- +title: Fix default path when creating project from group template +merge_request: 30597 +author: Lee Tickett +type: fixed diff --git a/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml b/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml new file mode 100644 index 00000000000..33572c95188 --- /dev/null +++ b/changelogs/unreleased/fix_deleting_user_psql_error_on_events_table_v2.yml @@ -0,0 +1,5 @@ +--- +title: Remove not null constraint from events tables +merge_request: 34190 +author: +type: fixed diff --git a/changelogs/unreleased/fix_mr_note_label_urls.yml b/changelogs/unreleased/fix_mr_note_label_urls.yml new file mode 100644 index 00000000000..5558fe22804 --- /dev/null +++ b/changelogs/unreleased/fix_mr_note_label_urls.yml @@ -0,0 +1,5 @@ +--- +title: Fix merge request note label URLs +merge_request: 30428 +author: Lee Tickett +type: fixed diff --git a/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml b/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml new file mode 100644 index 00000000000..7db554864c9 --- /dev/null +++ b/changelogs/unreleased/fix_nil_class_for_bytesize_error.yml @@ -0,0 +1,5 @@ +--- +title: Fix undefined error in Gitlab::Git::Diff +merge_request: 32967 +author: +type: fixed diff --git a/changelogs/unreleased/fix_preconnect_typo.yml b/changelogs/unreleased/fix_preconnect_typo.yml new file mode 100644 index 00000000000..433bab8ec9d --- /dev/null +++ b/changelogs/unreleased/fix_preconnect_typo.yml @@ -0,0 +1,5 @@ +--- +title: Fix preconnect typo in rel link +merge_request: 33255 +author: +type: performance diff --git a/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml b/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml new file mode 100644 index 00000000000..0dfd311efb9 --- /dev/null +++ b/changelogs/unreleased/fj-218516-add-validation-to-move-action.yml @@ -0,0 +1,5 @@ +--- +title: Add validation for move action in SnippetInputAction +merge_request: 34911 +author: +type: other diff --git a/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml b/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml new file mode 100644 index 00000000000..ac25131bd1f --- /dev/null +++ b/changelogs/unreleased/fj-add-allowed-actions-to-snippet-input-action.yml @@ -0,0 +1,5 @@ +--- +title: Add allowed actions to snippet input action +merge_request: 34499 +author: +type: changed diff --git a/changelogs/unreleased/fj-add-snippet-file-input-action.yml b/changelogs/unreleased/fj-add-snippet-file-input-action.yml new file mode 100644 index 00000000000..583e5038633 --- /dev/null +++ b/changelogs/unreleased/fj-add-snippet-file-input-action.yml @@ -0,0 +1,5 @@ +--- +title: Add GraphQL snippet FileInputType +merge_request: 34442 +author: +type: other diff --git a/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml new file mode 100644 index 00000000000..cd3a5ead9e6 --- /dev/null +++ b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-create-service.yml @@ -0,0 +1,5 @@ +--- +title: Allow the snippet create service to accept an array of files +merge_request: 32649 +author: +type: changed diff --git a/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml new file mode 100644 index 00000000000..8892a5166ea --- /dev/null +++ b/changelogs/unreleased/fj-add-snippet-files-param-to-snippet-update-service.yml @@ -0,0 +1,5 @@ +--- +title: Allow the snippet update service to accept an array of files +merge_request: 32832 +author: +type: changed diff --git a/changelogs/unreleased/fj-add-validations-snippet-input-action.yml b/changelogs/unreleased/fj-add-validations-snippet-input-action.yml new file mode 100644 index 00000000000..005ec4ccf9d --- /dev/null +++ b/changelogs/unreleased/fj-add-validations-snippet-input-action.yml @@ -0,0 +1,5 @@ +--- +title: Add update validations to SnippetInputAction +merge_request: 33379 +author: +type: changed diff --git a/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml b/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml new file mode 100644 index 00000000000..e6ac0146923 --- /dev/null +++ b/changelogs/unreleased/fj-avoid-updating-snippet-content-when-not-present.yml @@ -0,0 +1,5 @@ +--- +title: Avoid updating snippet content when snippet_files content is not present +merge_request: 34865 +author: +type: fixed diff --git a/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml b/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml new file mode 100644 index 00000000000..d2ea7fe1be1 --- /dev/null +++ b/changelogs/unreleased/fj-backfill-imported-snippet-repositories.yml @@ -0,0 +1,5 @@ +--- +title: Backfill failed imported snippet repositories +merge_request: 34052 +author: +type: other diff --git a/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml b/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml new file mode 100644 index 00000000000..c0dc036f79f --- /dev/null +++ b/changelogs/unreleased/fj-bump-lfs-token-default-expiration-time.yml @@ -0,0 +1,5 @@ +--- +title: Increase LFS token default time to 2 hours +merge_request: 33140 +author: +type: changed diff --git a/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml b/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml new file mode 100644 index 00000000000..925f7ff9a25 --- /dev/null +++ b/changelogs/unreleased/fj-change-snippet-author-nullable-graphql-type.yml @@ -0,0 +1,5 @@ +--- +title: Set author as nullable in snippet GraphQL Type +merge_request: 34135 +author: +type: fixed diff --git a/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml b/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml new file mode 100644 index 00000000000..5a6fd312ee4 --- /dev/null +++ b/changelogs/unreleased/fj-fix-import-from-different-types-exports.yml @@ -0,0 +1,5 @@ +--- +title: Fix snippet repository import fail with older export files +merge_request: 33584 +author: +type: fixed diff --git a/changelogs/unreleased/fj-fix-single-param-update.yml b/changelogs/unreleased/fj-fix-single-param-update.yml new file mode 100644 index 00000000000..8d5f9dd80d4 --- /dev/null +++ b/changelogs/unreleased/fj-fix-single-param-update.yml @@ -0,0 +1,5 @@ +--- +title: Fix bug in snippets updating only file_name or content +merge_request: 33375 +author: +type: fixed diff --git a/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml b/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml new file mode 100644 index 00000000000..4d5bbceb870 --- /dev/null +++ b/changelogs/unreleased/fj-fix-snippet-create-mutation-non-activerecord-errors.yml @@ -0,0 +1,5 @@ +--- +title: Fix bug in snippet create mutation with non ActiveRecord errors +merge_request: 33085 +author: +type: fixed diff --git a/changelogs/unreleased/fj-fix-snippet-import-from-database.yml b/changelogs/unreleased/fj-fix-snippet-import-from-database.yml new file mode 100644 index 00000000000..a8c9678405b --- /dev/null +++ b/changelogs/unreleased/fj-fix-snippet-import-from-database.yml @@ -0,0 +1,5 @@ +--- +title: Fix snippet repository import edge cases +merge_request: 33506 +author: +type: fixed diff --git a/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml b/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml new file mode 100644 index 00000000000..d040ee3fccd --- /dev/null +++ b/changelogs/unreleased/fj-fix-snippet-import-when-fails.yml @@ -0,0 +1,5 @@ +--- +title: Remove non migrated snippets from failed imports +merge_request: 33621 +author: +type: fixed diff --git a/changelogs/unreleased/followup-leakyconst-master-check.yml b/changelogs/unreleased/followup-leakyconst-master-check.yml new file mode 100644 index 00000000000..3c0e00510f1 --- /dev/null +++ b/changelogs/unreleased/followup-leakyconst-master-check.yml @@ -0,0 +1,5 @@ +--- +title: Move NoPrimary table def to last context in spec +merge_request: 33015 +author: Rajendra Kadam +type: other diff --git a/changelogs/unreleased/fox-comment-icons-commits.yml b/changelogs/unreleased/fox-comment-icons-commits.yml new file mode 100644 index 00000000000..9eb198629ae --- /dev/null +++ b/changelogs/unreleased/fox-comment-icons-commits.yml @@ -0,0 +1,5 @@ +--- +title: Use sprites for comment icons on Commits +merge_request: 31696 +author: +type: changed diff --git a/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml b/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml new file mode 100644 index 00000000000..d79f751a48f --- /dev/null +++ b/changelogs/unreleased/georgekoltsov-import-export-tmp-folder-cleanup.yml @@ -0,0 +1,5 @@ +--- +title: Clean up shared/tmp folder after Import/Export +merge_request: 32326 +author: +type: fixed diff --git a/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml b/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml new file mode 100644 index 00000000000..8c2ea5800a5 --- /dev/null +++ b/changelogs/unreleased/gitaly-version-v13.1.0-rc1.yml @@ -0,0 +1,5 @@ +--- +title: Upgrade to Gitaly v13.1.0-rc1 +merge_request: 33302 +author: +type: changed diff --git a/changelogs/unreleased/gitlab-ui-badge-integration-2.yml b/changelogs/unreleased/gitlab-ui-badge-integration-2.yml new file mode 100644 index 00000000000..fef025138d5 --- /dev/null +++ b/changelogs/unreleased/gitlab-ui-badge-integration-2.yml @@ -0,0 +1,5 @@ +--- +title: Update the visual design of badges in some areas +merge_request: 31646 +author: +type: other diff --git a/changelogs/unreleased/gl-cluster-applications-json.yml b/changelogs/unreleased/gl-cluster-applications-json.yml new file mode 100644 index 00000000000..d27029eb769 --- /dev/null +++ b/changelogs/unreleased/gl-cluster-applications-json.yml @@ -0,0 +1,6 @@ +--- +title: Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium + to 1.7.4 +merge_request: 32931 +author: +type: changed diff --git a/changelogs/unreleased/id-code-nav-500-error.yml b/changelogs/unreleased/id-code-nav-500-error.yml new file mode 100644 index 00000000000..e88980602c3 --- /dev/null +++ b/changelogs/unreleased/id-code-nav-500-error.yml @@ -0,0 +1,5 @@ +--- +title: Return code navigation path for nil diff_refs +merge_request: 33850 +author: +type: fixed diff --git a/changelogs/unreleased/id-code-navigation-enable-feature.yml b/changelogs/unreleased/id-code-navigation-enable-feature.yml new file mode 100644 index 00000000000..e1f9a9c1978 --- /dev/null +++ b/changelogs/unreleased/id-code-navigation-enable-feature.yml @@ -0,0 +1,5 @@ +--- +title: Add native code intelligence +merge_request: 34542 +author: +type: added diff --git a/changelogs/unreleased/improve_issue_labels_api.yml b/changelogs/unreleased/improve_issue_labels_api.yml new file mode 100644 index 00000000000..e57aba6ab59 --- /dev/null +++ b/changelogs/unreleased/improve_issue_labels_api.yml @@ -0,0 +1,5 @@ +--- +title: Improve Add/Remove Issue Labels API +merge_request: 31864 +author: Lee Tickett +type: added diff --git a/changelogs/unreleased/improve_storage_move_workflow.yml b/changelogs/unreleased/improve_storage_move_workflow.yml new file mode 100644 index 00000000000..c5e74e07267 --- /dev/null +++ b/changelogs/unreleased/improve_storage_move_workflow.yml @@ -0,0 +1,5 @@ +--- +title: Add project specific repository storage API +merge_request: 32493 +author: +type: added diff --git a/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml b/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml new file mode 100644 index 00000000000..29ccc347d09 --- /dev/null +++ b/changelogs/unreleased/increase-events-count-for-prometheus-alerts.yml @@ -0,0 +1,5 @@ +--- +title: Increase events count for Prometheus alerts +merge_request: 33706 +author: +type: added diff --git a/changelogs/unreleased/instance-variables-ui.yml b/changelogs/unreleased/instance-variables-ui.yml new file mode 100644 index 00000000000..26d59c0fafd --- /dev/null +++ b/changelogs/unreleased/instance-variables-ui.yml @@ -0,0 +1,5 @@ +--- +title: New instance-level variables UI +merge_request: 33510 +author: +type: added diff --git a/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml b/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml new file mode 100644 index 00000000000..22e72c5bb8f --- /dev/null +++ b/changelogs/unreleased/instance_auto_devops_enabled_usage_ping.yml @@ -0,0 +1,5 @@ +--- +title: Add whether instance has Auto DevOps enabled to usage ping +merge_request: 33811 +author: +type: changed diff --git a/changelogs/unreleased/issue-bulk-update.yml b/changelogs/unreleased/issue-bulk-update.yml new file mode 100644 index 00000000000..968c16f4d25 --- /dev/null +++ b/changelogs/unreleased/issue-bulk-update.yml @@ -0,0 +1,5 @@ +--- +title: Allow different in bulk editing issues +merge_request: 32734 +author: +type: fixed diff --git a/changelogs/unreleased/jc-pick-weighted-repository.yml b/changelogs/unreleased/jc-pick-weighted-repository.yml new file mode 100644 index 00000000000..803741e00cc --- /dev/null +++ b/changelogs/unreleased/jc-pick-weighted-repository.yml @@ -0,0 +1,5 @@ +--- +title: Pick repository storage based on weight +merge_request: 34095 +author: +type: changed diff --git a/changelogs/unreleased/jc-show-all-storages.yml b/changelogs/unreleased/jc-show-all-storages.yml new file mode 100644 index 00000000000..fac5d5bb813 --- /dev/null +++ b/changelogs/unreleased/jc-show-all-storages.yml @@ -0,0 +1,5 @@ +--- +title: Show all storages in settings +merge_request: 34093 +author: +type: fixed diff --git a/changelogs/unreleased/jc-ui-repository-storages-weighted.yml b/changelogs/unreleased/jc-ui-repository-storages-weighted.yml new file mode 100644 index 00000000000..eefe0012310 --- /dev/null +++ b/changelogs/unreleased/jc-ui-repository-storages-weighted.yml @@ -0,0 +1,5 @@ +--- +title: Add ApplicationSetting ui changes for repository_storages_weighted +merge_request: 33096 +author: +type: added diff --git a/changelogs/unreleased/jc-weighted-repository-storages.yml b/changelogs/unreleased/jc-weighted-repository-storages.yml new file mode 100644 index 00000000000..060c1a26494 --- /dev/null +++ b/changelogs/unreleased/jc-weighted-repository-storages.yml @@ -0,0 +1,5 @@ +--- +title: Save repository storages in application settings with weights +merge_request: 31645 +author: +type: added diff --git a/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml b/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml new file mode 100644 index 00000000000..21c60bc9871 --- /dev/null +++ b/changelogs/unreleased/jcunha-bump-deploy-image-to-0-17-0.yml @@ -0,0 +1,6 @@ +--- +title: Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup, + a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31 +merge_request: 34399 +author: verenion +type: fixed diff --git a/changelogs/unreleased/jdb-mutliline-comment-fe.yml b/changelogs/unreleased/jdb-mutliline-comment-fe.yml new file mode 100644 index 00000000000..da4b6e28dd5 --- /dev/null +++ b/changelogs/unreleased/jdb-mutliline-comment-fe.yml @@ -0,0 +1,5 @@ +--- +title: Add frontend support for multiline comments +merge_request: 29516 +author: +type: added diff --git a/changelogs/unreleased/jej-api-for-root-groups.yml b/changelogs/unreleased/jej-api-for-root-groups.yml new file mode 100644 index 00000000000..d859273f912 --- /dev/null +++ b/changelogs/unreleased/jej-api-for-root-groups.yml @@ -0,0 +1,5 @@ +--- +title: Groups API has top_level_only option to exclude subgroups +merge_request: 32870 +author: +type: added diff --git a/changelogs/unreleased/jh-drop_jid_null_constraint.yml b/changelogs/unreleased/jh-drop_jid_null_constraint.yml new file mode 100644 index 00000000000..ef1637c814e --- /dev/null +++ b/changelogs/unreleased/jh-drop_jid_null_constraint.yml @@ -0,0 +1,5 @@ +--- +title: Remove null constraint for JID in GroupImportState +merge_request: 33181 +author: +type: changed diff --git a/changelogs/unreleased/jh-group_import_status.yml b/changelogs/unreleased/jh-group_import_status.yml new file mode 100644 index 00000000000..9441ad39216 --- /dev/null +++ b/changelogs/unreleased/jh-group_import_status.yml @@ -0,0 +1,5 @@ +--- +title: Show import in progress screen for group imports +merge_request: 31731 +author: +type: added diff --git a/changelogs/unreleased/jh-group_import_ui_frontend.yml b/changelogs/unreleased/jh-group_import_ui_frontend.yml new file mode 100644 index 00000000000..e820607cc76 --- /dev/null +++ b/changelogs/unreleased/jh-group_import_ui_frontend.yml @@ -0,0 +1,5 @@ +--- +title: Create Group import UI for creating new Groups +merge_request: 29271 +author: +type: added diff --git a/changelogs/unreleased/jh-rate_limit_project_export.yml b/changelogs/unreleased/jh-rate_limit_project_export.yml new file mode 100644 index 00000000000..743755b1c49 --- /dev/null +++ b/changelogs/unreleased/jh-rate_limit_project_export.yml @@ -0,0 +1,5 @@ +--- +title: Rate limit project export by user +merge_request: 31719 +author: +type: changed diff --git a/changelogs/unreleased/jira-projects-api-wrapper.yml b/changelogs/unreleased/jira-projects-api-wrapper.yml new file mode 100644 index 00000000000..4fe86aa3f4c --- /dev/null +++ b/changelogs/unreleased/jira-projects-api-wrapper.yml @@ -0,0 +1,5 @@ +--- +title: Add a GraphQL endpoint to fetch Jira projects through its REST API +merge_request: 28190 +author: +type: changed diff --git a/changelogs/unreleased/jivanvl-add-snowplow-logs.yml b/changelogs/unreleased/jivanvl-add-snowplow-logs.yml new file mode 100644 index 00000000000..bc0d3592e74 --- /dev/null +++ b/changelogs/unreleased/jivanvl-add-snowplow-logs.yml @@ -0,0 +1,5 @@ +--- +title: Add snowplow tracking for logs page +merge_request: 32704 +author: +type: other diff --git a/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml b/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml new file mode 100644 index 00000000000..99798f4c58a --- /dev/null +++ b/changelogs/unreleased/jivanvl-make-chart-panels-focusable-keyboard.yml @@ -0,0 +1,5 @@ +--- +title: Focus and toggle metrics dashboard panels via keyboard +merge_request: 28603 +author: +type: added diff --git a/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml b/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml new file mode 100644 index 00000000000..5d797b0f7a1 --- /dev/null +++ b/changelogs/unreleased/kborges-github-import-rake-add-rate-limit-doc.yml @@ -0,0 +1,5 @@ +--- +title: Document github rate limit behavior +merge_request: 33090 +author: +type: other diff --git a/changelogs/unreleased/leaky-constant-fix-11.yml b/changelogs/unreleased/leaky-constant-fix-11.yml new file mode 100644 index 00000000000..b373491e61c --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-11.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in commit entity spec +merge_request: 32039 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-14.yml b/changelogs/unreleased/leaky-constant-fix-14.yml new file mode 100644 index 00000000000..b124371e415 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-14.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in task completion status spec +merge_request: 32043 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-22.yml b/changelogs/unreleased/leaky-constant-fix-22.yml new file mode 100644 index 00000000000..ebeaceee09f --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-22.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in admin mode migration spec +merge_request: 32074 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-28.yml b/changelogs/unreleased/leaky-constant-fix-28.yml new file mode 100644 index 00000000000..d1a04a25caa --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-28.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in sidekiq middleware server metric spec +merge_request: 32104 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-29.yml b/changelogs/unreleased/leaky-constant-fix-29.yml new file mode 100644 index 00000000000..eafa7e599c6 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-29.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in sidekiq middleware client metric spec +merge_request: 32108 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-3.yml b/changelogs/unreleased/leaky-constant-fix-3.yml new file mode 100644 index 00000000000..3ad8fd7a15f --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-3.yml @@ -0,0 +1,5 @@ +--- +title: Add class stubs and fix leaky constant alert in query limit helper spec +merge_request: 31949 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-30.yml b/changelogs/unreleased/leaky-constant-fix-30.yml new file mode 100644 index 00000000000..f4f957d5b08 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-30.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in path regex spec +merge_request: 32115 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-32.yml b/changelogs/unreleased/leaky-constant-fix-32.yml new file mode 100644 index 00000000000..a5c5674d5da --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-32.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue importer and cache headers spec +merge_request: 32122 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-33.yml b/changelogs/unreleased/leaky-constant-fix-33.yml new file mode 100644 index 00000000000..f53da019813 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-33.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in relation factory spec +merge_request: 32129 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-34.yml b/changelogs/unreleased/leaky-constant-fix-34.yml new file mode 100644 index 00000000000..822b9ed0471 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-34.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in test coverage spec +merge_request: 32134 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-36.yml b/changelogs/unreleased/leaky-constant-fix-36.yml new file mode 100644 index 00000000000..1c487a8329e --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-36.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in diff collection spec +merge_request: 32163 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-37.yml b/changelogs/unreleased/leaky-constant-fix-37.yml new file mode 100644 index 00000000000..af986b7bb13 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-37.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in migration helpers, with lock retries and ignored cols spec +merge_request: 32170 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-38.yml b/changelogs/unreleased/leaky-constant-fix-38.yml new file mode 100644 index 00000000000..7ed7fc71da6 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-38.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in factory spec +merge_request: 32174 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-39.yml b/changelogs/unreleased/leaky-constant-fix-39.yml new file mode 100644 index 00000000000..13ea6ac7cb4 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-39.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in creds factory spec +merge_request: 32176 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-5.yml b/changelogs/unreleased/leaky-constant-fix-5.yml new file mode 100644 index 00000000000..b67057fe237 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-5.yml @@ -0,0 +1,5 @@ +--- +title: Remove usage of spam constants in spec +merge_request: 31959 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/leaky-constant-fix-9.yml b/changelogs/unreleased/leaky-constant-fix-9.yml new file mode 100644 index 00000000000..e361c58c746 --- /dev/null +++ b/changelogs/unreleased/leaky-constant-fix-9.yml @@ -0,0 +1,5 @@ +--- +title: Fix leaky constant issue in uninstall progress service check +merge_request: 32036 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/lm-change-sorting.yml b/changelogs/unreleased/lm-change-sorting.yml new file mode 100644 index 00000000000..d061995cb48 --- /dev/null +++ b/changelogs/unreleased/lm-change-sorting.yml @@ -0,0 +1,5 @@ +--- +title: 'Alert Managament: Change sorting order to have newest alerts first' +merge_request: 33642 +author: +type: changed diff --git a/changelogs/unreleased/lm-hover-state-sort.yml b/changelogs/unreleased/lm-hover-state-sort.yml new file mode 100644 index 00000000000..4a701511787 --- /dev/null +++ b/changelogs/unreleased/lm-hover-state-sort.yml @@ -0,0 +1,5 @@ +--- +title: Add hovering icon for sorting columns on alert management list +merge_request: 33429 +author: +type: other diff --git a/changelogs/unreleased/lm-sorting-list.yml b/changelogs/unreleased/lm-sorting-list.yml new file mode 100644 index 00000000000..e1a9dceec5c --- /dev/null +++ b/changelogs/unreleased/lm-sorting-list.yml @@ -0,0 +1,5 @@ +--- +title: Adds sorting by column to alert management list +merge_request: 32478 +author: +type: added diff --git a/changelogs/unreleased/long-path-mr-bug.yml b/changelogs/unreleased/long-path-mr-bug.yml new file mode 100644 index 00000000000..ab171f3da5d --- /dev/null +++ b/changelogs/unreleased/long-path-mr-bug.yml @@ -0,0 +1,5 @@ +--- +title: Fix rendering of very long paths in merge request file tree +merge_request: 34153 +author: +type: fixed diff --git a/changelogs/unreleased/markdown-toolbar-list-style.yml b/changelogs/unreleased/markdown-toolbar-list-style.yml new file mode 100644 index 00000000000..4121af3e744 --- /dev/null +++ b/changelogs/unreleased/markdown-toolbar-list-style.yml @@ -0,0 +1,5 @@ +--- +title: Set markdown toolbar to use hyphens for lists +merge_request: 31426 +author: +type: changed diff --git a/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml b/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml new file mode 100644 index 00000000000..9d047e66b4b --- /dev/null +++ b/changelogs/unreleased/mattkasa-207510-terraform-state-usage-ping.yml @@ -0,0 +1,5 @@ +--- +title: Add usage data metrics for terraform states +merge_request: 31280 +author: +type: added diff --git a/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml b/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml new file mode 100644 index 00000000000..8656f398610 --- /dev/null +++ b/changelogs/unreleased/mattkasa-207532-add-usage-ping-for-terraform-reports.yml @@ -0,0 +1,5 @@ +--- +title: Add usage data metrics for terraform reports +merge_request: 31281 +author: +type: added diff --git a/changelogs/unreleased/mg-fix-katex-fonts.yml b/changelogs/unreleased/mg-fix-katex-fonts.yml new file mode 100644 index 00000000000..71acf5ca351 --- /dev/null +++ b/changelogs/unreleased/mg-fix-katex-fonts.yml @@ -0,0 +1,5 @@ +--- +title: Fix KaTeX font paths +merge_request: 33338 +author: +type: fixed diff --git a/changelogs/unreleased/mo-add-build-report-result.yml b/changelogs/unreleased/mo-add-build-report-result.yml new file mode 100644 index 00000000000..4b24a194500 --- /dev/null +++ b/changelogs/unreleased/mo-add-build-report-result.yml @@ -0,0 +1,5 @@ +--- +title: Add build report results data model +merge_request: 32991 +author: +type: performance diff --git a/changelogs/unreleased/move_migration_to_post_deployment.yml b/changelogs/unreleased/move_migration_to_post_deployment.yml new file mode 100644 index 00000000000..d70ab5249c4 --- /dev/null +++ b/changelogs/unreleased/move_migration_to_post_deployment.yml @@ -0,0 +1,5 @@ +--- +title: Move migration related to ci_builds to post_deployment +merge_request: 33416 +author: +type: performance diff --git a/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml b/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml new file mode 100644 index 00000000000..675f08ffe27 --- /dev/null +++ b/changelogs/unreleased/mwaw-210289-add-metrics-dashboard-validation-to-grapql.yml @@ -0,0 +1,5 @@ +--- +title: Add dashboard schema validation warnings as metrics dashboard GraphQL field +merge_request: 33592 +author: +type: added diff --git a/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml b/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml new file mode 100644 index 00000000000..7c07e780906 --- /dev/null +++ b/changelogs/unreleased/mwaw-210289-metrics-dashboard-file-validation-mvc-1.yml @@ -0,0 +1,5 @@ +--- +title: Added validation for YAML files with metrics dashboard definitions. +merge_request: 33202 +author: +type: added diff --git a/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml new file mode 100644 index 00000000000..454f6aab8e9 --- /dev/null +++ b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-database-layer.yml @@ -0,0 +1,6 @@ +--- +title: Table index added to `metrics_dashboard_annotations` for future pruning of stale metrics + Annotations for metrics dashboards are now checked for valid start and end dates. +merge_request: 32433 +author: +type: added diff --git a/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml new file mode 100644 index 00000000000..4dfeb792c5a --- /dev/null +++ b/changelogs/unreleased/mwaw-211433-metrics-dashboard-annotations-reaper-job-worker.yml @@ -0,0 +1,5 @@ +--- +title: Remove metrics dashboard annotations attached to time periods older than two weeks. +merge_request: 32838 +author: +type: added diff --git a/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml b/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml new file mode 100644 index 00000000000..dc24c002774 --- /dev/null +++ b/changelogs/unreleased/nfriend-enable-release_asset_link_type-f.yml @@ -0,0 +1,5 @@ +--- +title: Allow Release asset links to be associated with a type +merge_request: 33998 +author: +type: added diff --git a/changelogs/unreleased/nfriend-fix-release-button-alignment.yml b/changelogs/unreleased/nfriend-fix-release-button-alignment.yml new file mode 100644 index 00000000000..79c6087fc54 --- /dev/null +++ b/changelogs/unreleased/nfriend-fix-release-button-alignment.yml @@ -0,0 +1,5 @@ +--- +title: Fix alignment of button text on the Edit Release page +merge_request: 33104 +author: +type: fixed diff --git a/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml b/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml new file mode 100644 index 00000000000..f7eb40584af --- /dev/null +++ b/changelogs/unreleased/nicolasdular-broadcast-notification-close-btn.yml @@ -0,0 +1,5 @@ +--- +title: Move broadcast notification dismiss button to the top +merge_request: 33174 +author: +type: changed diff --git a/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml b/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml new file mode 100644 index 00000000000..f0fbc00325c --- /dev/null +++ b/changelogs/unreleased/nicolasdular-expose-storage-limit-in-api.yml @@ -0,0 +1,5 @@ +--- +title: Expose storage size limit for namespaces in GraphQL +merge_request: 34882 +author: +type: changed diff --git a/changelogs/unreleased/notes-ee-feature.yml b/changelogs/unreleased/notes-ee-feature.yml new file mode 100644 index 00000000000..38d9471ce39 --- /dev/null +++ b/changelogs/unreleased/notes-ee-feature.yml @@ -0,0 +1,5 @@ +--- +title: Move Admin note feature to GitLab Core +merge_request: 31457 +author: Rajendra +type: added diff --git a/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml b/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml new file mode 100644 index 00000000000..8bd0a746504 --- /dev/null +++ b/changelogs/unreleased/ntepluhina-fix-note-scrolling.yml @@ -0,0 +1,5 @@ +--- +title: Fix design note scrolling +merge_request: 33939 +author: +type: fixed diff --git a/changelogs/unreleased/optimize-milestones-page.yml b/changelogs/unreleased/optimize-milestones-page.yml new file mode 100644 index 00000000000..dd067c08faf --- /dev/null +++ b/changelogs/unreleased/optimize-milestones-page.yml @@ -0,0 +1,5 @@ +--- +title: Optimize SQL queries on Milestone index page +merge_request: 32953 +author: +type: performance diff --git a/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml b/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml new file mode 100644 index 00000000000..88efab2233c --- /dev/null +++ b/changelogs/unreleased/osw-add-redis-metrics-to-sidekiq-job-run.yml @@ -0,0 +1,5 @@ +--- +title: Add metrics for Redis usage during Sidekiq job execution +merge_request: 32265 +author: +type: added diff --git a/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml b/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml new file mode 100644 index 00000000000..77602f9a31c --- /dev/null +++ b/changelogs/unreleased/osw-add-redis-metrics-to-web-requests.yml @@ -0,0 +1,5 @@ +--- +title: Add metrics for Redis usage during web requests +merge_request: 32605 +author: +type: added diff --git a/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml b/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml new file mode 100644 index 00000000000..27e673437e7 --- /dev/null +++ b/changelogs/unreleased/osw-pass-state-id-instead-state-to-background-migration.yml @@ -0,0 +1,5 @@ +--- +title: Adjust wrong column reference for ResetMergeStatus (background job) +merge_request: 33899 +author: +type: fixed diff --git a/changelogs/unreleased/osw-separate-redis-logs.yml b/changelogs/unreleased/osw-separate-redis-logs.yml new file mode 100644 index 00000000000..dbef2557df7 --- /dev/null +++ b/changelogs/unreleased/osw-separate-redis-logs.yml @@ -0,0 +1,6 @@ +--- +title: Add detailed logs of each Redis instance usage during job execution and web + requests +merge_request: 34110 +author: +type: added diff --git a/changelogs/unreleased/perf-use-build-stubbed.yml b/changelogs/unreleased/perf-use-build-stubbed.yml new file mode 100644 index 00000000000..0f78d8649df --- /dev/null +++ b/changelogs/unreleased/perf-use-build-stubbed.yml @@ -0,0 +1,5 @@ +--- +title: Use build_stubbed to avoid interacting with the DB in todos helper specs +merge_request: 32906 +author: Arun Kumar Mohan +type: performance diff --git a/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml b/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml new file mode 100644 index 00000000000..9deb3e23517 --- /dev/null +++ b/changelogs/unreleased/ph-28154-moveFrontendBatchCommentsFiles.yml @@ -0,0 +1,5 @@ +--- +title: Moves merge request reviews into Core +merge_request: 32558 +author: +type: other diff --git a/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml b/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml new file mode 100644 index 00000000000..a4837dd7df8 --- /dev/null +++ b/changelogs/unreleased/pl-alert-management-fix-multiple-issue-creation.yml @@ -0,0 +1,5 @@ +--- +title: Fix linking alerts to created issues for the Generic alerts intergration +merge_request: 33647 +author: +type: fixed diff --git a/changelogs/unreleased/psi-dark-theme.yml b/changelogs/unreleased/psi-dark-theme.yml new file mode 100644 index 00000000000..21257280afb --- /dev/null +++ b/changelogs/unreleased/psi-dark-theme.yml @@ -0,0 +1,5 @@ +--- +title: Add dark theme (alpha) +merge_request: 28252 +author: +type: added diff --git a/changelogs/unreleased/rails-logger-cop-1.yml b/changelogs/unreleased/rails-logger-cop-1.yml new file mode 100644 index 00000000000..c9b37eb9244 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-1.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in project import state file +merge_request: 32182 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-10.yml b/changelogs/unreleased/rails-logger-cop-10.yml new file mode 100644 index 00000000000..c81a504350c --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-10.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in exclusive_lease_guard +merge_request: 32194 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-11.yml b/changelogs/unreleased/rails-logger-cop-11.yml new file mode 100644 index 00000000000..fa337bf4658 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-11.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in groups destroy service and label create service +merge_request: 32195 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-12.yml b/changelogs/unreleased/rails-logger-cop-12.yml new file mode 100644 index 00000000000..c08f8d5426a --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-12.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in merge_service.rb +merge_request: 32196 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-13.yml b/changelogs/unreleased/rails-logger-cop-13.yml new file mode 100644 index 00000000000..ab0414f0ae3 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-13.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in project create service and after import service +merge_request: 32198 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-14.yml b/changelogs/unreleased/rails-logger-cop-14.yml new file mode 100644 index 00000000000..07f332d9d35 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-14.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in update stats service +merge_request: 32200 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-15.yml b/changelogs/unreleased/rails-logger-cop-15.yml new file mode 100644 index 00000000000..1c9ccafe5cb --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-15.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in base attachment service +merge_request: 32201 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-16.yml b/changelogs/unreleased/rails-logger-cop-16.yml new file mode 100644 index 00000000000..be60fdce4d0 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-16.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in export service +merge_request: 32203 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-17.yml b/changelogs/unreleased/rails-logger-cop-17.yml new file mode 100644 index 00000000000..013457961cf --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-17.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in akismet service +merge_request: 32205 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-18.yml b/changelogs/unreleased/rails-logger-cop-18.yml new file mode 100644 index 00000000000..d5ebd1b4a11 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-18.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in file mover file +merge_request: 32206 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-19.yml b/changelogs/unreleased/rails-logger-cop-19.yml new file mode 100644 index 00000000000..b56f06caf73 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-19.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in commit signature worker +merge_request: 32207 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-2.yml b/changelogs/unreleased/rails-logger-cop-2.yml new file mode 100644 index 00000000000..0685f503e44 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-2.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in project.rb +merge_request: 32183 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-20.yml b/changelogs/unreleased/rails-logger-cop-20.yml new file mode 100644 index 00000000000..1128b8022e3 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-20.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in delete user worker +merge_request: 32209 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-21.yml b/changelogs/unreleased/rails-logger-cop-21.yml new file mode 100644 index 00000000000..099142ff482 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-21.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in email receiver worker +merge_request: 32211 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-22.yml b/changelogs/unreleased/rails-logger-cop-22.yml new file mode 100644 index 00000000000..df22074b16a --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-22.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in artifact worker +merge_request: 32212 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-23.yml b/changelogs/unreleased/rails-logger-cop-23.yml new file mode 100644 index 00000000000..4e7513570e9 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-23.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in new note worker +merge_request: 32213 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-3.yml b/changelogs/unreleased/rails-logger-cop-3.yml new file mode 100644 index 00000000000..b7de674cdb6 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-3.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in chat_team.rb +merge_request: 32184 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-4.yml b/changelogs/unreleased/rails-logger-cop-4.yml new file mode 100644 index 00000000000..a7f76711de7 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-4.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in repository model +merge_request: 32185 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-5.yml b/changelogs/unreleased/rails-logger-cop-5.yml new file mode 100644 index 00000000000..4e758bde275 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-5.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in build and ssh host key +merge_request: 32187 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-6.yml b/changelogs/unreleased/rails-logger-cop-6.yml new file mode 100644 index 00000000000..a5fea225b08 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-6.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in cache attrs and highest role ruby files +merge_request: 32189 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-7.yml b/changelogs/unreleased/rails-logger-cop-7.yml new file mode 100644 index 00000000000..b8482ccef54 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-7.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in legacy project and namespace +merge_request: 32190 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-8.yml b/changelogs/unreleased/rails-logger-cop-8.yml new file mode 100644 index 00000000000..4765c087bb7 --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-8.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in base.rb +merge_request: 32191 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-logger-cop-9.yml b/changelogs/unreleased/rails-logger-cop-9.yml new file mode 100644 index 00000000000..8e740f6f1bd --- /dev/null +++ b/changelogs/unreleased/rails-logger-cop-9.yml @@ -0,0 +1,5 @@ +--- +title: Use applogger in usage ping and webhook service +merge_request: 32192 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rc-add_dashboard_timezone.yml b/changelogs/unreleased/rc-add_dashboard_timezone.yml new file mode 100644 index 00000000000..190d3faadec --- /dev/null +++ b/changelogs/unreleased/rc-add_dashboard_timezone.yml @@ -0,0 +1,5 @@ +--- +title: Add column dashboard_timezone to project_metrics_setting +merge_request: 33120 +author: +type: added diff --git a/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml b/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml new file mode 100644 index 00000000000..6f65d844a7a --- /dev/null +++ b/changelogs/unreleased/rearchitect-fixed-pipelines-notification-v2.yml @@ -0,0 +1,5 @@ +--- +title: Make Fixed Email Notification Generally Available +merge_request: 28338 +author: jacopo-beschi +type: added diff --git a/changelogs/unreleased/reduce-repo-size.yml b/changelogs/unreleased/reduce-repo-size.yml new file mode 100644 index 00000000000..8483cc0a705 --- /dev/null +++ b/changelogs/unreleased/reduce-repo-size.yml @@ -0,0 +1,5 @@ +--- +title: Add support for `git filter-repo` to repository cleanup +merge_request: 33576 +author: +type: added diff --git a/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml b/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml new file mode 100644 index 00000000000..72508bd724c --- /dev/null +++ b/changelogs/unreleased/refactor-stuck-imports-jobs-worker.yml @@ -0,0 +1,5 @@ +--- +title: Process stuck jira import jobs +merge_request: 32643 +author: +type: added diff --git a/changelogs/unreleased/remove-a11y-widget-ff.yml b/changelogs/unreleased/remove-a11y-widget-ff.yml new file mode 100644 index 00000000000..0f99d7a1e93 --- /dev/null +++ b/changelogs/unreleased/remove-a11y-widget-ff.yml @@ -0,0 +1,5 @@ +--- +title: Add accessibility report MR widget +merge_request: 32902 +author: +type: added diff --git a/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml b/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml new file mode 100644 index 00000000000..41a1759281d --- /dev/null +++ b/changelogs/unreleased/remove-redundant-modsecurity-indexes.yml @@ -0,0 +1,5 @@ +--- +title: Remove unused WAF indexes from CI variables +merge_request: 30021 +author: +type: other 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/changelogs/unreleased/replace-slot-for-vue-3-migration.yml b/changelogs/unreleased/replace-slot-for-vue-3-migration.yml new file mode 100644 index 00000000000..c2f1e2a4697 --- /dev/null +++ b/changelogs/unreleased/replace-slot-for-vue-3-migration.yml @@ -0,0 +1,5 @@ +--- +title: Replace slot syntax for Vue 3 migration +merge_request: 31987 +author: gaslan +type: other diff --git a/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml b/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml new file mode 100644 index 00000000000..47e984576c5 --- /dev/null +++ b/changelogs/unreleased/reword-addMultipleToDiscussionWarning.yml @@ -0,0 +1,5 @@ +--- +title: Update wording of addMultipleToDiscussionWarning +merge_request: 34088 +author: +type: fixed diff --git a/changelogs/unreleased/rf-brakeman-to-core.yml b/changelogs/unreleased/rf-brakeman-to-core.yml new file mode 100644 index 00000000000..3f2d4536815 --- /dev/null +++ b/changelogs/unreleased/rf-brakeman-to-core.yml @@ -0,0 +1,5 @@ +--- +title: Bring SAST to Core - brakeman +merge_request: 34217 +author: +type: added diff --git a/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml b/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml new file mode 100644 index 00000000000..e9ecbc0cd66 --- /dev/null +++ b/changelogs/unreleased/rp-use-gitlab-yaml-loader-blob-viewer.yml @@ -0,0 +1,5 @@ +--- +title: Display error for YAML files that are too large +merge_request: 34199 +author: +type: changed diff --git a/changelogs/unreleased/rspec-rails-fast-failure-template.yml b/changelogs/unreleased/rspec-rails-fast-failure-template.yml new file mode 100644 index 00000000000..c466c68075a --- /dev/null +++ b/changelogs/unreleased/rspec-rails-fast-failure-template.yml @@ -0,0 +1,5 @@ +--- +title: Add Verify/FailFast CI template +merge_request: 31812 +author: +type: added diff --git a/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml b/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml new file mode 100644 index 00000000000..50a32041395 --- /dev/null +++ b/changelogs/unreleased/sav-1566-pat-for-projects-db-changes.yml @@ -0,0 +1,5 @@ +--- +title: Add ProjectAccessToken table +merge_request: 33272 +author: +type: added diff --git a/changelogs/unreleased/schedule_storage_move_api.yml b/changelogs/unreleased/schedule_storage_move_api.yml new file mode 100644 index 00000000000..8c205aade84 --- /dev/null +++ b/changelogs/unreleased/schedule_storage_move_api.yml @@ -0,0 +1,5 @@ +--- +title: Add API to schedule project repository storage moves +merge_request: 34119 +author: +type: added diff --git a/changelogs/unreleased/services-usage-1.yml b/changelogs/unreleased/services-usage-1.yml new file mode 100644 index 00000000000..d202273ca8c --- /dev/null +++ b/changelogs/unreleased/services-usage-1.yml @@ -0,0 +1,5 @@ +--- +title: Record audit event when an admin creates a new SSH Key for a user via the API +merge_request: 33859 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/services-usage-2.yml b/changelogs/unreleased/services-usage-2.yml new file mode 100644 index 00000000000..8cc4e96d520 --- /dev/null +++ b/changelogs/unreleased/services-usage-2.yml @@ -0,0 +1,5 @@ +--- +title: Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API +merge_request: 34535 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml b/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml new file mode 100644 index 00000000000..bfeadcfded5 --- /dev/null +++ b/changelogs/unreleased/sh-add-partial-index-locked-merge-requests.yml @@ -0,0 +1,5 @@ +--- +title: Add partial index on locked merge requets +merge_request: 34127 +author: +type: performance diff --git a/changelogs/unreleased/sh-avoid-extra-route-reload.yml b/changelogs/unreleased/sh-avoid-extra-route-reload.yml new file mode 100644 index 00000000000..7c363ac92d8 --- /dev/null +++ b/changelogs/unreleased/sh-avoid-extra-route-reload.yml @@ -0,0 +1,5 @@ +--- +title: Speed up boot time in production +merge_request: 33929 +author: +type: performance diff --git a/changelogs/unreleased/sh-extend-remember-me-token.yml b/changelogs/unreleased/sh-extend-remember-me-token.yml new file mode 100644 index 00000000000..ddee3f8be7e --- /dev/null +++ b/changelogs/unreleased/sh-extend-remember-me-token.yml @@ -0,0 +1,5 @@ +--- +title: Extend "Remember me" token after each login +merge_request: 32730 +author: +type: other diff --git a/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml b/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml new file mode 100644 index 00000000000..c4aa8d22ca3 --- /dev/null +++ b/changelogs/unreleased/sh-fix-auto-merge-after-resolve-discussions.yml @@ -0,0 +1,5 @@ +--- +title: Fix auto-merge not running after discussions resolved +merge_request: 33371 +author: +type: fixed diff --git a/changelogs/unreleased/sh-fix-delete-blob-failure.yml b/changelogs/unreleased/sh-fix-delete-blob-failure.yml new file mode 100644 index 00000000000..ec3a48a09f2 --- /dev/null +++ b/changelogs/unreleased/sh-fix-delete-blob-failure.yml @@ -0,0 +1,5 @@ +--- +title: Fix 500 error in BlobController#delete +merge_request: 34367 +author: +type: fixed diff --git a/changelogs/unreleased/sh-fix-issue-219991.yml b/changelogs/unreleased/sh-fix-issue-219991.yml new file mode 100644 index 00000000000..f09cb34b761 --- /dev/null +++ b/changelogs/unreleased/sh-fix-issue-219991.yml @@ -0,0 +1,5 @@ +--- +title: Fix force_remove_source_branch not working in API +merge_request: 33804 +author: +type: fixed diff --git a/changelogs/unreleased/sh-update-workhorse-8-34-0.yml b/changelogs/unreleased/sh-update-workhorse-8-34-0.yml new file mode 100644 index 00000000000..5ecb3840463 --- /dev/null +++ b/changelogs/unreleased/sh-update-workhorse-8-34-0.yml @@ -0,0 +1,5 @@ +--- +title: Update GitLab Workhorse to v8.34.0 +merge_request: 33543 +author: +type: fixed diff --git a/changelogs/unreleased/sh-workhorse-direct-access-upload.yml b/changelogs/unreleased/sh-workhorse-direct-access-upload.yml new file mode 100644 index 00000000000..41aee482891 --- /dev/null +++ b/changelogs/unreleased/sh-workhorse-direct-access-upload.yml @@ -0,0 +1,5 @@ +--- +title: Support Workhorse directly uploading files to S3 +merge_request: 29389 +author: +type: added diff --git a/changelogs/unreleased/show-redis-instance-in-performance-bar.yml b/changelogs/unreleased/show-redis-instance-in-performance-bar.yml new file mode 100644 index 00000000000..80dbd33f110 --- /dev/null +++ b/changelogs/unreleased/show-redis-instance-in-performance-bar.yml @@ -0,0 +1,5 @@ +--- +title: Show Redis instance in performance bar +merge_request: 34377 +author: +type: changed diff --git a/changelogs/unreleased/show_build_status_in_branch_list.yml b/changelogs/unreleased/show_build_status_in_branch_list.yml new file mode 100644 index 00000000000..259b916af10 --- /dev/null +++ b/changelogs/unreleased/show_build_status_in_branch_list.yml @@ -0,0 +1,5 @@ +--- +title: Show build status on branch list +merge_request: 30948 +author: Lee Tickett +type: added diff --git a/changelogs/unreleased/show_estimate_on_issues_list.yml b/changelogs/unreleased/show_estimate_on_issues_list.yml new file mode 100644 index 00000000000..9845fcc2f57 --- /dev/null +++ b/changelogs/unreleased/show_estimate_on_issues_list.yml @@ -0,0 +1,5 @@ +--- +title: Show estimate on issues list +merge_request: 28271 +author: Lee Tickett +type: added diff --git a/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml b/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml new file mode 100644 index 00000000000..143a85b2986 --- /dev/null +++ b/changelogs/unreleased/sidekiq-arguments-logging-tokens.yml @@ -0,0 +1,5 @@ +--- +title: Filter potentially-sensitive Sidekiq arguments from logs and Sentry +merge_request: 33967 +author: +type: changed diff --git a/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml b/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml new file mode 100644 index 00000000000..89e4261c40d --- /dev/null +++ b/changelogs/unreleased/skip-importing-failed-jira-issue-instead-of-entrire-batch.yml @@ -0,0 +1,5 @@ +--- +title: Skip the individual JIRA issues if failed to import vs failing the whole batch +merge_request: 32673 +author: +type: fixed diff --git a/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml b/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml new file mode 100644 index 00000000000..cbbce1b2b34 --- /dev/null +++ b/changelogs/unreleased/support-grafana-links-in-metrics-dashboard.yml @@ -0,0 +1,5 @@ +--- +title: Support user-defined Grafana links in metrics dashboard +merge_request: 34003 +author: +type: added diff --git a/changelogs/unreleased/switch-diff-view-fix.yml b/changelogs/unreleased/switch-diff-view-fix.yml new file mode 100644 index 00000000000..ff3e1e11e49 --- /dev/null +++ b/changelogs/unreleased/switch-diff-view-fix.yml @@ -0,0 +1,6 @@ +--- +title: Deduplicate URL parameters when requesting merge request diffs which causes + diffs load to fail +merge_request: 33117 +author: +type: fixed diff --git a/changelogs/unreleased/sy-publish-command.yml b/changelogs/unreleased/sy-publish-command.yml new file mode 100644 index 00000000000..cfc46e8f1c1 --- /dev/null +++ b/changelogs/unreleased/sy-publish-command.yml @@ -0,0 +1,6 @@ +--- +title: Backfill StatusPage::Published incidents and enable a publish quick action + for EE +merge_request: 30906 +author: +type: added diff --git a/changelogs/unreleased/sy-publish-status-ui-fe.yml b/changelogs/unreleased/sy-publish-status-ui-fe.yml new file mode 100644 index 00000000000..f0de124efb1 --- /dev/null +++ b/changelogs/unreleased/sy-publish-status-ui-fe.yml @@ -0,0 +1,5 @@ +--- +title: Add link to status page detail view for status page published issues +merge_request: 30249 +author: +type: added diff --git a/changelogs/unreleased/templates-current-folder-fix.yml b/changelogs/unreleased/templates-current-folder-fix.yml new file mode 100644 index 00000000000..9b4999c9d54 --- /dev/null +++ b/changelogs/unreleased/templates-current-folder-fix.yml @@ -0,0 +1,5 @@ +--- +title: "Web IDE: Create template files in the folder from which new file request was made" +merge_request: 33585 +author: Ashesh Vidyut +type: fixed diff --git a/changelogs/unreleased/tidy_put_projects_issues_spec.yml b/changelogs/unreleased/tidy_put_projects_issues_spec.yml new file mode 100644 index 00000000000..ef0d8d1745d --- /dev/null +++ b/changelogs/unreleased/tidy_put_projects_issues_spec.yml @@ -0,0 +1,5 @@ +--- +title: Tidy +merge_request: 32759 +author: Lee Tickett +type: other diff --git a/changelogs/unreleased/tr-avoid-alert-refetch.yml b/changelogs/unreleased/tr-avoid-alert-refetch.yml new file mode 100644 index 00000000000..3dafc79a366 --- /dev/null +++ b/changelogs/unreleased/tr-avoid-alert-refetch.yml @@ -0,0 +1,5 @@ +--- +title: Avoid refresh to show endedAt after mutation +merge_request: 32636 +author: +type: fixed diff --git a/changelogs/unreleased/tr-fix-broken-incident-link.yml b/changelogs/unreleased/tr-fix-broken-incident-link.yml new file mode 100644 index 00000000000..bea818796d0 --- /dev/null +++ b/changelogs/unreleased/tr-fix-broken-incident-link.yml @@ -0,0 +1,5 @@ +--- +title: Fix broken help link on operations settings page +merge_request: 32722 +author: +type: fixed diff --git a/changelogs/unreleased/tr-reword-alert-service.yml b/changelogs/unreleased/tr-reword-alert-service.yml new file mode 100644 index 00000000000..e7665822e72 --- /dev/null +++ b/changelogs/unreleased/tr-reword-alert-service.yml @@ -0,0 +1,5 @@ +--- +title: Add more detail to alert integration settings description +merge_request: 33244 +author: +type: added diff --git a/changelogs/unreleased/track-pod-logs-refresh-action.yml b/changelogs/unreleased/track-pod-logs-refresh-action.yml new file mode 100644 index 00000000000..a7d9021a90e --- /dev/null +++ b/changelogs/unreleased/track-pod-logs-refresh-action.yml @@ -0,0 +1,5 @@ +--- +title: Track pod logs refresh action +merge_request: 33802 +author: +type: added diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml new file mode 100644 index 00000000000..f4775f7db5c --- /dev/null +++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-admin-pro.yml @@ -0,0 +1,5 @@ +--- +title: Update deprecated slot syntax in ./app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue +merge_request: 31994 +author: Gilang Gumilar +type: other diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml new file mode 100644 index 00000000000..8ee3646bcd1 --- /dev/null +++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---app-assets-javascripts-pages-projects-.yml @@ -0,0 +1,5 @@ +--- +title: Update deprecated slot syntax in ./app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue +merge_request: 31995 +author: Gilang Gumilar +type: other diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml new file mode 100644 index 00000000000..a18b4990414 --- /dev/null +++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---clusters-applications-vue.yml @@ -0,0 +1,5 @@ +--- +title: Update deprecated slot syntax in ./app/assets/javascripts/clusters/components/remove_cluster_confirmation.vue +merge_request: 32010 +author: Gilang Gumilar +type: other diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml new file mode 100644 index 00000000000..a4f77b53937 --- /dev/null +++ b/changelogs/unreleased/update-deprecated-slot-syntax-in---javascripts-environments_app-vue.yml @@ -0,0 +1,5 @@ +--- +title: Update deprecated slot syntax in ./app/assets/javascripts/environments/components/environments_app.vue +merge_request: 32011 +author: Gilang Gumilar +type: other diff --git a/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml b/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml new file mode 100644 index 00000000000..b880020aa7f --- /dev/null +++ b/changelogs/unreleased/update-deprecated-slot-syntax-in-app-assets-javascripts-reports-component.yml @@ -0,0 +1,5 @@ +--- +title: Update deprecated slot syntax in app/assets/javascripts/reports/components/grouped_test_reports_app.vue +merge_request: 31975 +author: Gilang Gumilar +type: other diff --git a/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml new file mode 100644 index 00000000000..98f8ec0c03b --- /dev/null +++ b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-0.yml @@ -0,0 +1,5 @@ +--- +title: Update GitLab Runner Helm Chart to 0.17.0 +merge_request: 32634 +author: +type: other diff --git a/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml new file mode 100644 index 00000000000..74cf7405268 --- /dev/null +++ b/changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-17-1.yml @@ -0,0 +1,5 @@ +--- +title: Update GitLab Runner Helm Chart to 0.17.1 +merge_request: 33504 +author: +type: other diff --git a/changelogs/unreleased/update-index-artifacts-expire.yml b/changelogs/unreleased/update-index-artifacts-expire.yml new file mode 100644 index 00000000000..9eaed111aa8 --- /dev/null +++ b/changelogs/unreleased/update-index-artifacts-expire.yml @@ -0,0 +1,6 @@ +--- +title: Update index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial index + for secret_detection +merge_request: 32584 +author: +type: performance diff --git a/changelogs/unreleased/update-validates-hostname-gem.yml b/changelogs/unreleased/update-validates-hostname-gem.yml new file mode 100644 index 00000000000..4665ebe2724 --- /dev/null +++ b/changelogs/unreleased/update-validates-hostname-gem.yml @@ -0,0 +1,5 @@ +--- +title: Update validates_hostname gem with support for more TLDs +merge_request: 34010 +author: +type: fixed diff --git a/changelogs/unreleased/update-workhorse-version-master.yml b/changelogs/unreleased/update-workhorse-version-master.yml new file mode 100644 index 00000000000..3a8aa981668 --- /dev/null +++ b/changelogs/unreleased/update-workhorse-version-master.yml @@ -0,0 +1,5 @@ +--- +title: Update Workhorse to v8.35.0 +merge_request: 33817 +author: +type: other diff --git a/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml b/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml new file mode 100644 index 00000000000..3a9cc4c383a --- /dev/null +++ b/changelogs/unreleased/upgrade-renamed-diff-show-full-diff-for-renamed-files.yml @@ -0,0 +1,5 @@ +--- +title: Add a link to the `renamed` viewer to fully expand the renamed file (if it's text) +merge_request: 28448 +author: +type: added diff --git a/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml b/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml new file mode 100644 index 00000000000..39dccc2fbde --- /dev/null +++ b/changelogs/unreleased/vs-fix-account-delete-plural-msg.yml @@ -0,0 +1,5 @@ +--- +title: Fix plural message in account deletion section +merge_request: 32868 +author: +type: fixed diff --git a/changelogs/unreleased/xanf-use-new-import-ui-templates.yml b/changelogs/unreleased/xanf-use-new-import-ui-templates.yml new file mode 100644 index 00000000000..32546178546 --- /dev/null +++ b/changelogs/unreleased/xanf-use-new-import-ui-templates.yml @@ -0,0 +1,5 @@ +--- +title: Introduce a feature flag for Vue-based UI for all import providers +merge_request: 33980 +author: +type: added diff --git a/config/routes/pipelines.rb b/config/routes/pipelines.rb index cc3c3400526..c100526180e 100644 --- a/config/routes/pipelines.rb +++ b/config/routes/pipelines.rb @@ -26,6 +26,12 @@ resources :pipelines, only: [:index, :new, :create, :show, :destroy] do resources :stages, only: [], param: :name do post :play_manual end + + resources :tests, only: [], controller: 'pipelines/tests' do + collection do + get :summary + end + end end end diff --git a/doc/api/feature_flags.md b/doc/api/feature_flags.md index f3af662c972..1931e0a368b 100644 --- a/doc/api/feature_flags.md +++ b/doc/api/feature_flags.md @@ -9,7 +9,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. NOTE: **Note** -This API is behind a [feature flag](../user/project/operations/feature_flags.md#feature-flag-behavior-change-in-130). If this flag is not enabled in your environment, you can use the [legacy feature flags API](feature_flags_legacy.md). +This API is behind a [feature flag](../user/project/operations/feature_flags.md#enable-or-disable-feature-flag-strategies). +If this flag is not enabled in your environment, you can use the [legacy feature flags API](feature_flags_legacy.md). API for accessing resources of [GitLab Feature Flags](../user/project/operations/feature_flags.md). diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 85bdf183e31..8366affc4ef 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -5024,6 +5024,11 @@ type Group { shareWithGroupLock: Boolean """ + Total storage limit of the root namespace in bytes + """ + storageSizeLimit: Int + + """ The permission level required to create subgroups within the group """ subgroupCreationLevel: String @@ -7321,6 +7326,61 @@ enum MergeRequestState { opened } +""" +Autogenerated input type of MergeRequestUpdate +""" +input MergeRequestUpdateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Description of the merge request (Markdown rendered as HTML for caching) + """ + description: String + + """ + The iid of the merge request to mutate + """ + iid: String! + + """ + The project the merge request to mutate is in + """ + projectPath: ID! + + """ + Target branch of the merge request + """ + targetBranch: String + + """ + Title of the merge request + """ + title: String +} + +""" +Autogenerated return type of MergeRequestUpdate +""" +type MergeRequestUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The merge request after mutation + """ + mergeRequest: MergeRequest +} + type Metadata { """ Revision @@ -7607,6 +7667,11 @@ type Mutation { mergeRequestSetMilestone(input: MergeRequestSetMilestoneInput!): MergeRequestSetMilestonePayload mergeRequestSetSubscription(input: MergeRequestSetSubscriptionInput!): MergeRequestSetSubscriptionPayload mergeRequestSetWip(input: MergeRequestSetWipInput!): MergeRequestSetWipPayload + + """ + Update attributes of a merge request + """ + mergeRequestUpdate(input: MergeRequestUpdateInput!): MergeRequestUpdatePayload removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload removeProjectFromSecurityDashboard(input: RemoveProjectFromSecurityDashboardInput!): RemoveProjectFromSecurityDashboardPayload runDastScan(input: RunDASTScanInput!): RunDASTScanPayload @@ -7743,6 +7808,11 @@ type Namespace { rootStorageStatistics: RootStorageStatistics """ + Total storage limit of the root namespace in bytes + """ + storageSizeLimit: Int + + """ Visibility of the namespace """ visibility: String diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 0b6ba6bc5e2..fb755d34468 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -13757,6 +13757,20 @@ "deprecationReason": null }, { + "name": "storageSizeLimit", + "description": "Total storage limit of the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "subgroupCreationLevel", "description": "The permission level required to create subgroups within the group", "args": [ @@ -20433,6 +20447,152 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "MergeRequestUpdateInput", + "description": "Autogenerated input type of MergeRequestUpdate", + "fields": null, + "inputFields": [ + { + "name": "projectPath", + "description": "The project the merge request to mutate is in", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "The iid of the merge request to mutate", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "title", + "description": "Title of the merge request", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "targetBranch", + "description": "Target branch of the merge request", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "description", + "description": "Description of the merge request (Markdown rendered as HTML for caching)", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "MergeRequestUpdatePayload", + "description": "Autogenerated return type of MergeRequestUpdate", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mergeRequest", + "description": "The merge request after mutation", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "MergeRequest", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "Metadata", "description": null, @@ -22267,6 +22427,33 @@ "deprecationReason": null }, { + "name": "mergeRequestUpdate", + "description": "Update attributes of a merge request", + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "MergeRequestUpdateInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "MergeRequestUpdatePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "removeAwardEmoji", "description": null, "args": [ @@ -22978,6 +23165,20 @@ "deprecationReason": null }, { + "name": "storageSizeLimit", + "description": "Total storage limit of the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "visibility", "description": "Visibility of the namespace", "args": [ diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index a170d4e76ef..289a560f548 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -745,6 +745,7 @@ Autogenerated return type of EpicTreeReorder | `requireTwoFactorAuthentication` | Boolean | Indicates if all users in this group are required to set up two-factor authentication | | `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces | | `shareWithGroupLock` | Boolean | Indicates if sharing a project with another group within this group is prevented | +| `storageSizeLimit` | Int | Total storage limit of the root namespace in bytes | | `subgroupCreationLevel` | String | The permission level required to create subgroups within the group | | `twoFactorGracePeriod` | Int | Time before two-factor authentication is enforced | | `userPermissions` | GroupPermissions! | Permissions for the current user on the resource | @@ -1100,6 +1101,16 @@ Autogenerated return type of MergeRequestSetWip | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `mergeRequest` | MergeRequest | The merge request after mutation | +## MergeRequestUpdatePayload + +Autogenerated return type of MergeRequestUpdate + +| Name | Type | Description | +| --- | ---- | ---------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `mergeRequest` | MergeRequest | The merge request after mutation | + ## Metadata | Name | Type | Description | @@ -1157,6 +1168,7 @@ Represents a milestone. | `path` | String! | Path of the namespace | | `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace | | `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces | +| `storageSizeLimit` | Int | Total storage limit of the root namespace in bytes | | `visibility` | String | Visibility of the namespace | ## Note diff --git a/doc/development/feature_flags/development.md b/doc/development/feature_flags/development.md index a44bc70439e..0b918478668 100644 --- a/doc/development/feature_flags/development.md +++ b/doc/development/feature_flags/development.md @@ -32,8 +32,8 @@ request removing the feature flag or the merge request where the default value o the feature flag is set to true. If the feature contains any DB migration it should include a changelog entry for DB changes. -In the rare case that you need the feature flag to be on automatically, use -`default_enabled: true` when checking: +If you need the feature flag to be on automatically, use `default_enabled: true` +when checking: ```ruby Feature.enabled?(:feature_flag, project, default_enabled: true) diff --git a/doc/development/feature_flags/process.md b/doc/development/feature_flags/process.md index 57360f5b771..00e9ab72f15 100644 --- a/doc/development/feature_flags/process.md +++ b/doc/development/feature_flags/process.md @@ -21,6 +21,19 @@ should be leveraged: - Merge requests that make changes hidden behind a feature flag, or remove an existing feature flag because a feature is deemed stable must have the ~"feature flag" label assigned. +- When development of a feature will be spread across multiple merge + requests, you can use the following workflow: + + 1. Introduce a feature flag which is **off** by default, in the first merge request. + 1. Submit incremental changes via one or more merge requests, ensuring that any + new code added can only be reached if the feature flag is **on**. + You can keep the feature flag enabled on your local GDK during development. + 1. When the feature is ready to be tested, enable the feature flag for + a specific project and ensure that there are no issues with the implementation. + 1. When the feature is ready to be announced, create a merge request that adds + documentation about the feature, including [documentation for the feature flag itself](../documentation/feature_flags.md), + and a changelog entry. In the same merge request either flip the feature flag to + be **on by default** or remove it entirely in order to enable the new behavior. One might be tempted to think that feature flags will delay the release of a feature by at least one month (= one release). This is not the case. A feature @@ -29,6 +42,8 @@ flag does not have to stick around for a specific amount of time is deemed stable. Stable means it works on GitLab.com without causing any problems, such as outages. +Please also read the [development guide for feature flags](development.md). + ### When to use feature flags Starting with GitLab 11.4, developers are required to use feature flags for diff --git a/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png b/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png Binary files differnew file mode 100644 index 00000000000..9d500600bc5 --- /dev/null +++ b/doc/user/infrastructure/img/terraform_plan_widget_v13_2.png diff --git a/doc/user/infrastructure/index.md b/doc/user/infrastructure/index.md index c17d1831b50..bb8cf3228d9 100644 --- a/doc/user/infrastructure/index.md +++ b/doc/user/infrastructure/index.md @@ -212,18 +212,17 @@ Let's explore how to configure a GitLab Terraform Report artifact: - terraform plan -out=$PLAN - terraform show --json $PLAN | convert_report > $PLAN_JSON artifacts: - name: plan - paths: - - $PLAN reports: terraform: $PLAN_JSON ``` For a full example, see [Example `.gitlab-ci.yaml` file](#example-gitlab-ciyaml-file). + For an example displaying multiple reports, see [`.gitlab-ci.yaml` multiple reports file](#mulitple-terraform-plan-reports). + 1. Running the pipeline displays the widget in the merge request, like this: - ![MR Terraform widget](img/terraform_plan_widget_v13_0.png) + ![MR Terraform widget](img/terraform_plan_widget_v13_2.png) 1. Clicking the **View Full Log** button in the widget takes you directly to the plan output present in the pipeline logs: @@ -273,9 +272,6 @@ plan: - terraform plan -out=$PLAN - terraform show --json $PLAN | convert_report > $PLAN_JSON artifacts: - name: plan - paths: - - ${TF_ROOT}/plan.tfplan reports: terraform: ${TF_ROOT}/tfplan.json @@ -294,3 +290,60 @@ apply: - master ``` + +### Mulitple Terraform Plan reports + +Starting with 13.2, you can display mutiple reports on the Merge Request page. The reports will also display the `artifact: name:`. See example below for a suggested setup. + +```yaml +image: + name: registry.gitlab.com/gitlab-org/gitlab-build-images:terraform + entrypoint: + - '/usr/bin/env' + - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' + +cache: + paths: + - .terraform + +stages: + - build + +.terraform-plan-generation: + stage: build + variables: + PLAN: plan.tfplan + JSON_PLAN_FILE: tfplan.json + before_script: + - cd ${TERRAFORM_DIRECTORY} + - terraform --version + - terraform init + - apk --no-cache add jq + script: + - terraform validate + - terraform plan -out=${PLAN} + - terraform show --json ${PLAN} | jq -r '([.resource_changes[]?.change.actions?]|flatten)|{"create":(map(select(.=="create"))|length),"update":(map(select(.=="update"))|length),"delete":(map(select(.=="delete"))|length)}' > ${JSON_PLAN_FILE} + artifacts: + reports: + terraform: ${TERRAFORM_DIRECTORY}/${JSON_PLAN_FILE} + +review_plan: + extends: .terraform-plan-generation + variables: + TERRAFORM_DIRECTORY: "review/" + # Review will not include an artifact name + +staging_plan: + extends: .terraform-plan-generation + variables: + TERRAFORM_DIRECTORY: "staging/" + artifacts: + name: Staging + +production_plan: + extends: .terraform-plan-generation + variables: + TERRAFORM_DIRECTORY: "production/" + artifacts: + name: Production +``` diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md index a39725c7d02..8f090593984 100644 --- a/doc/user/project/issues/design_management.md +++ b/doc/user/project/issues/design_management.md @@ -242,3 +242,35 @@ To disable it: ```ruby Feature.disable(:design_management_reference_filter_gfm_pipeline) ``` + +## Design activity records + +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33051) in GitLab 13.1 +> - It's deployed behind a feature flag, disabled by default. +> - It's enabled on GitLab.com. +> - To use it in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-design-events-core-only). **(CORE ONLY)** + +User activity events on designs (creation, deletion, and updates) are tracked by GitLab and +displayed on the [user profile](../../profile/index.md#user-profile), +[group](../../group/index.md#view-group-activity), +and [project](../index.md#project-activity) activity pages. + +### Enable or disable Design Events **(CORE ONLY)** + +User activity for designs is under development and not ready for production use. It is +deployed behind a feature flag that is **disabled by default**. +[GitLab administrators with access to the GitLab Rails console](../../../administration/troubleshooting/navigating_gitlab_via_rails_console.md#starting-a-rails-console-session) +can enable it for your instance. You're welcome to test it, but use it at your +own risk. + +To enable it: + +```ruby +Feature.enable(:design_activity_events) +``` + +To disable it: + +```ruby +Feature.disable(:design_activity_events) +``` diff --git a/doc/user/project/operations/feature_flags.md b/doc/user/project/operations/feature_flags.md index f9ef33f628c..17c649455a3 100644 --- a/doc/user/project/operations/feature_flags.md +++ b/doc/user/project/operations/feature_flags.md @@ -35,125 +35,147 @@ To create and enable a feature flag: 1. Navigate to your project's **Operations > Feature Flags**. 1. Click the **New feature flag** button. -1. Enter a name that starts with a letter and contains only lowercase letters, digits, underscores (`_`) - and dashes (`-`), and does not end with a dash (`-`) or underscore (`_`). -1. Enter a description (optional, 255 characters max). -1. Enter details about how the flag should be applied: - - In GitLab 13.0 and earlier: Enter an environment spec, - enable or disable the flag in this environment, and select a rollout strategy. - - In GitLab 13.1 and later (when [this feature flag](#feature-flag-behavior-change-in-130) is enabled): Select a strategy and then - the environments to apply the strategy to. +1. Fill in the details: + - Enter a name that starts with a letter and contains only lowercase letters, digits, underscores (`_`), + or dashes (`-`), and does not end with a dash (`-`) or underscore (`_`). + - Enter a description (optional, 255 characters max). + - In GitLab 13.0 and earlier, add **Environment specs**. For each environment, + include the: + - Status (default enabled) + - [Rollout strategy](#rollout-strategy-legacy) (defaults to all users) + - In GitLab 13.1 and later, add Feature Flag [**Strategies**](#feature-flag-strategies). For + each strategy, include the: + - Type (defaults to [All users](#all-users)) + - Environment (defaults to all environments) 1. Click **Create feature flag**. -The feature flag is displayed in the list. It is enabled by default. +You can change these settings by clicking the **{pencil}** (edit) button +next to any feature flag in the list. -## Disable a feature flag for a specific environment - -In [GitLab 13.0 and earlier](https://gitlab.com/gitlab-org/gitlab/-/issues/8621), -to disable a feature flag for a specific environment: - -1. Navigate to your project's **Operations > Feature Flags**. -1. For the feature flag you want to disable, click the Pencil icon. -1. To disable the flag: - - In GitLab 13.0 and earlier: Slide the Status toggle for the environment. Or, to delete the - environment spec, on the right, click the **Remove (X)** icon. - - In GitLab 13.1 and later (when [this feature flag](#feature-flag-behavior-change-in-130) is - enabled): For each strategy it applies to, under **Environments**, delete the environment. -1. Click **Save changes**. - -## Disable a feature flag for all environments - -To disable a feature flag for all environments: - -1. Navigate to your project's **Operations > Feature Flags**. -1. For the feature flag you want to disable, slide the Status toggle to **Disabled**. - -The feature flag is displayed on the **Disabled** tab. +## Rollout strategy (legacy) -## Feature flag behavior change in 13.0 - -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35555) in GitLab 13.0. - -Starting in GitLab 13.0, you can apply a feature flag strategy across multiple environments, -without defining the strategy multiple times. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2. -This feature is under development and not ready for production use. It is -deployed behind a feature flag that is **disabled by default**. -[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md) -can enable it for your instance. +In GitLab 13.0 and earlier, the **Rollout strategy** setting affects which users will experience +the feature as enabled. Choose the percentage of users that the feature will be enabled +for. The rollout strategy will have no effect if the environment spec is disabled. -To enable it: +It can be set to: -```ruby -Feature.enable(:feature_flags_new_version) -``` - -To disable it: - -```ruby -Feature.disable(:feature_flags_new_version) -``` +- All users +- [Percent rollout (logged in users)](#percent-rollout-logged-in-users) + - Optionally, you can click the **Include additional user IDs** checkbox and add a list + of specific users IDs to enable the feature for. +- [User IDs](#user-ids) ## Feature flag strategies -GitLab Feature Flag uses [Unleash](https://unleash.github.io) -as the feature flag engine. In Unleash, there is a concept of rulesets for granular feature flag controls, -called [strategies](https://unleash.github.io/docs/activation_strategy). -Supported strategies for GitLab Feature Flags are described below. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35555) in GitLab 13.0. +> - It's deployed behind a feature flag, disabled by default. +> - It's enabled on GitLab.com. +> - To use it in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-feature-flag-strategies). **(CORE ONLY)** -### Rollout strategy +You can apply a feature flag strategy across multiple environments, without defining +the strategy multiple times. -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2. +GitLab Feature Flags use [Unleash](https://unleash.github.io) as the feature flag +engine. In Unleash, there are [strategies](https://unleash.github.io/docs/activation_strategy) +for granular feature flag controls. GitLab Feature Flags can have multiple strategies, +and the supported strategies are: -The selected rollout strategy affects which users will experience the feature as enabled. +- [All users](#all-users) +- [Percent rollout (logged in users)](#percent-rollout-logged-in-users) +- [User IDs](#user-ids) +- [List](#list) -The status of an environment spec ultimately determines whether or not a feature is enabled at all. -For instance, a feature will always be disabled for every user if the matching environment spec has a disabled status, regardless of the chosen rollout strategy. -However, a feature will be enabled for 50% of logged-in users if the matching environment spec has an enabled status along with a **Percent rollout (logged in users)** strategy set to 50%. +Strategies can be added to feature flags when [creating a feature flag](#create-a-feature-flag), +or by editing an existing feature flag after creation by navigating to **Operations > Feature Flags** +and clicking **{pencil}** (edit). -#### All users +### All users -Enables the feature for all users. It is implemented using the Unleash -[`default`](https://unleash.github.io/docs/activation_strategy#default) -activation strategy. +Enables the feature for all users. It uses the [`default`](https://unleash.github.io/docs/activation_strategy#default) +Unleash activation strategy. -#### Percent rollout (logged in users) +### Percent rollout (logged in users) -Enables the feature for a percentage of authenticated users. It is -implemented using the Unleash +Enables the feature for a percentage of authenticated users. It uses the [`gradualRolloutUserId`](https://unleash.github.io/docs/activation_strategy#gradualrolloutuserid) -activation strategy. +Unleash activation strategy. -Set a value of 15%, for example, to enable the feature for 15% of authenticated users. +For example, set a value of 15% to enable the feature for 15% of authenticated users. -A rollout percentage may be between 0% and 100%. +The rollout percentage can be from 0% to 100%. CAUTION: **Caution:** If this strategy is selected, then the Unleash client **must** be given a user ID for the feature to be enabled. See the [Ruby example](#ruby-application-example) below. -#### User IDs +### User IDs > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8240) in GitLab 12.2. [Updated](https://gitlab.com/gitlab-org/gitlab/-/issues/34363) to be defined per environment in GitLab 12.6. -A feature flag may be enabled for a list of target users. It is implemented +Enables the feature for a list of target users. It is implemented using the Unleash [`userWithId`](https://unleash.github.io/docs/activation_strategy#userwithid) activation strategy. -User IDs should be a comma-separated list of values. For example, `user@example.com, user2@example.com`, or `username1,username2,username3`, etc. +Enter user IDs as a comma-separated list of values. For example, +`user@example.com, user2@example.com`, or `username1,username2,username3`, and so on. CAUTION: **Caution:** The Unleash client **must** be given a user ID for the feature to be enabled for target users. See the [Ruby example](#ruby-application-example) below. -#### List +### List > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35930) in GitLab 13.1. -A feature flag can be enabled for lists of users created with the [Feature Flag User List API](../../../api/feature_flag_user_lists.md). +Enables the feature for lists of users created with the [Feature Flag User List API](../../../api/feature_flag_user_lists.md). Similar to [User IDs](#user-ids), it uses the Unleash [`userWithId`](https://unleash.github.io/docs/activation_strategy#userwithid) activation strategy. +### Enable or disable feature flag strategies + +This feature is under development, but is ready for testing. It's +deployed behind a feature flag that is **disabled by default**. +[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md) +can enable it for your instance. + +To enable it: + +```ruby +Feature.enable(:feature_flags_new_version) +``` + +To disable it: + +```ruby +Feature.disable(:feature_flags_new_version) +``` + +## Disable a feature flag for a specific environment + +In [GitLab 13.0 and earlier](https://gitlab.com/gitlab-org/gitlab/-/issues/8621), +to disable a feature flag for a specific environment: + +1. Navigate to your project's **Operations > Feature Flags**. +1. For the feature flag you want to disable, click the Pencil icon. +1. To disable the flag: + - In GitLab 13.0 and earlier: Slide the Status toggle for the environment. Or, to delete the + environment spec, on the right, click the **Remove (X)** icon. + - In GitLab 13.1 and later: For each strategy it applies to, under **Environments**, delete the environment. + +1. Click **Save changes**. + +## Disable a feature flag for all environments + +To disable a feature flag for all environments: + +1. Navigate to your project's **Operations > Feature Flags**. +1. For the feature flag you want to disable, slide the Status toggle to **Disabled**. + +The feature flag is displayed on the **Disabled** tab. + ## Integrate feature flags with your application To use feature flags with your application, get access credentials from GitLab. diff --git a/doc/user/project/protected_tags.md b/doc/user/project/protected_tags.md index e80b8098bec..bb5bca39398 100644 --- a/doc/user/project/protected_tags.md +++ b/doc/user/project/protected_tags.md @@ -12,7 +12,7 @@ This feature evolved out of [protected branches](protected_branches.md) ## Overview -Protected tags will prevent anyone from updating or deleting the tag, as and will prevent creation of matching tags based on the permissions you have selected. By default, anyone without Maintainer permission will be prevented from creating tags. +Protected tags will prevent anyone from updating or deleting the tag, and will prevent creation of matching tags based on the permissions you have selected. By default, anyone without Maintainer permission will be prevented from creating tags. ## Configuring protected tags diff --git a/lib/api/pipelines.rb b/lib/api/pipelines.rb index c09bca26a41..8cac6ad6bed 100644 --- a/lib/api/pipelines.rb +++ b/lib/api/pipelines.rb @@ -120,7 +120,7 @@ module API authorize! :read_build, pipeline - present pipeline.test_reports, with: TestReportEntity + present pipeline.test_reports, with: TestReportEntity, details: true end desc 'Deletes a pipeline' do diff --git a/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb b/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb new file mode 100644 index 00000000000..3db2244d641 --- /dev/null +++ b/lib/banzai/filter/jira_import/adf_to_commonmark_filter.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module Banzai + module Filter + module JiraImport + # Uses Kramdown to convert from the Atlassian Document Format (json) + # into CommonMark + # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/ + class AdfToCommonmarkFilter < HTML::Pipeline::TextFilter + def initialize(text, context = nil, result = nil) + super(text, context, result) + end + + def call + Kramdown::Document.new(@text, input: 'AtlassianDocumentFormat', html_tables: true).to_commonmark + rescue ::Kramdown::Error => e + # If we get an error, then just return the original text so at + # least the user knows something went wrong + "#{e.message}\n\n#{@text}" + end + end + end + end +end diff --git a/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb b/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb new file mode 100644 index 00000000000..8af0279673c --- /dev/null +++ b/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Banzai + module Pipeline + module JiraImport + class AdfCommonmarkPipeline < BasePipeline + def self.filters + FilterArray[ + Filter::JiraImport::AdfToCommonmarkFilter + ] + end + end + end + end +end diff --git a/lib/event_filter.rb b/lib/event_filter.rb index 538727dc422..eab64d05114 100644 --- a/lib/event_filter.rb +++ b/lib/event_filter.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class EventFilter + include Gitlab::Utils::StrongMemoize + attr_accessor :filter ALL = 'all' @@ -10,6 +12,7 @@ class EventFilter COMMENTS = 'comments' TEAM = 'team' WIKI = 'wiki' + DESIGNS = 'designs' def initialize(filter) # Split using comma to maintain backward compatibility Ex/ "filter1,filter2" @@ -38,6 +41,8 @@ class EventFilter events.where(action: [:created, :updated, :closed, :reopened], target_type: 'Issue') when WIKI wiki_events(events) + when DESIGNS + design_events(events) else events end @@ -47,7 +52,8 @@ class EventFilter private def apply_feature_flags(events) - return events.not_wiki_page unless Feature.enabled?(:wiki_events) + events = events.not_wiki_page unless Feature.enabled?(:wiki_events) + events = events.not_design unless can_view_design_activity? events end @@ -58,8 +64,18 @@ class EventFilter events.for_wiki_page end + def design_events(events) + return events.for_design if can_view_design_activity? + + events + end + def filters - [ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM, WIKI] + [ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM, WIKI, DESIGNS] + end + + def can_view_design_activity? + Feature.enabled?(:design_activity_events) end end diff --git a/lib/gitlab/ci/reports/test_report_summary.rb b/lib/gitlab/ci/reports/test_report_summary.rb new file mode 100644 index 00000000000..85b83b790e7 --- /dev/null +++ b/lib/gitlab/ci/reports/test_report_summary.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module Gitlab + module Ci + module Reports + class TestReportSummary + attr_reader :all_results + + def initialize(all_results) + @all_results = all_results + end + + def total + TestSuiteSummary.new(all_results) + end + + def total_time + total.total_time + end + + def total_count + total.total_count + end + + def success_count + total.success_count + end + + def failed_count + total.failed_count + end + + def skipped_count + total.skipped_count + end + + def error_count + total.error_count + end + + def test_suites + all_results + .group_by(&:tests_name) + .transform_values { |results| TestSuiteSummary.new(results) } + end + end + end + end +end diff --git a/lib/gitlab/ci/reports/test_suite_summary.rb b/lib/gitlab/ci/reports/test_suite_summary.rb new file mode 100644 index 00000000000..707b443a113 --- /dev/null +++ b/lib/gitlab/ci/reports/test_suite_summary.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +module Gitlab + module Ci + module Reports + class TestSuiteSummary + attr_reader :results + + def initialize(results) + @results = results + end + + def name + @name ||= results.first.tests_name + end + + # rubocop: disable CodeReuse/ActiveRecord + def total_time + @total_time ||= results.sum(&:tests_duration) + end + + def success_count + @success_count ||= results.sum(&:tests_success) + end + + def failed_count + @failed_count ||= results.sum(&:tests_failed) + end + + def skipped_count + @skipped_count ||= results.sum(&:tests_skipped) + end + + def error_count + @error_count ||= results.sum(&:tests_errored) + end + + def total_count + @total_count ||= [success_count, failed_count, skipped_count, error_count].sum + end + # rubocop: disable CodeReuse/ActiveRecord + end + end + end +end diff --git a/lib/kramdown/converter/commonmark.rb b/lib/kramdown/converter/commonmark.rb new file mode 100644 index 00000000000..c7257d8278d --- /dev/null +++ b/lib/kramdown/converter/commonmark.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true + +module Kramdown + module Converter + # Overrides the base Kramdown converter to add any special + # behaviour for CommonMark. + # + # Currently we support an option `html_tables` that outputs + # an HTML table instead of a Markdown table. This is to + # support possibly being given complex tables, such as from ADF. + # + # Note: this is only an initial implementation. Currently don't + # strip out IALs or other specific kramdown syntax. + class Commonmark < ::Kramdown::Converter::Kramdown + def convert_table(el, opts) + return super unless @options[:html_tables] + + opts[:alignment] = el.options[:alignment] + result = inner(el, opts) + + "<table>\n#{result}</table>\n\n" + end + + def convert_thead(el, opts) + return super unless @options[:html_tables] + + "<thead>\n#{inner(el, opts)}</thead>\n" + end + + def convert_tbody(el, opts) + return super unless @options[:html_tables] + + "<tbody>\n#{inner(el, opts)}</tbody>\n" + end + + def convert_tfoot(el, opts) + return super unless @options[:html_tables] + + "<tfoot>\n#{inner(el, opts)}</tfoot>\n" + end + + def convert_tr(el, opts) + return super unless @options[:html_tables] + + "<tr>\n#{el.children.map {|c| convert(c, opts) }.join}</tr>\n" + end + + def convert_td(el, opts) + return super unless @options[:html_tables] + + # We need to add two linefeeds in order for any inner text to + # be processed as markdown. The HTML block must be "closed", + # as referenced in the CommonMark spec + # @see https://spec.commonmark.org/0.29/#html-blocks + "<td>\n\n#{inner(el, opts)}</td>\n" + end + + def convert_th(el, opts) + return super unless @options[:html_tables] + + # We need to add two linefeeds in order for any inner text to + # be processed as markdown. The HTML block must be "closed", + # as referenced in the CommonMark spec + # @see https://spec.commonmark.org/0.29/#html-blocks + "<th>\n\n#{inner(el, opts)}</th>\n" + end + end + end +end diff --git a/lib/kramdown/parser/atlassian_document_format.rb b/lib/kramdown/parser/atlassian_document_format.rb new file mode 100644 index 00000000000..4ceb879a04c --- /dev/null +++ b/lib/kramdown/parser/atlassian_document_format.rb @@ -0,0 +1,381 @@ +# frozen_string_literal: true + +module Kramdown + module Parser + # Parses an Atlassian Document Format (ADF) json into a + # Kramdown AST tree, for conversion to another format. + # The primary goal is to convert in GitLab Markdown. + # + # This parser does NOT resolve external resources, such as media/attachments. + # A special url is generated for media based on the id, for example + # ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c) + # so that a later filter/process can resolve those. + # + # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/ ADF Document Structure + # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/playground/ ADF Playground + # @see https://developer.atlassian.com/cloud/jira/platform/apis/document/viewer/ ADF Viewer + class AtlassianDocumentFormat < Kramdown::Parser::Base + unless defined?(TOP_LEVEL_BLOCK_NODES) + TOP_LEVEL_BLOCK_NODES = %w[blockquote + bulletList + codeBlock + heading + mediaGroup + mediaSingle + orderedList + panel + paragraph + rule + table].freeze + + CHILD_BLOCK_NODES = %w[listItem + media + table_cell + table_header + table_row].freeze + + INLINE_NODES = %w[emoji + hardBreak + inlineCard + mention + text].freeze + + MARKS = %w[code + em + link + strike + strong + subsup + textColor + underline].freeze + + TABLE_CELL_NODES = %w[blockquote + bulletList + codeBlock + heading + mediaGroup + orderedList + panel + paragraph + rule].freeze + + LIST_ITEM_NODES = %w[bulletList + codeBlock + mediaSingle + orderedList + paragraph].freeze + + PANEL_NODES = %w[bulletList + heading + orderedList + paragraph].freeze + + PANEL_EMOJIS = { info: ':information_source:', + note: ':notepad_spiral:', + warning: ':warning:', + success: ':white_check_mark:', + error: ':octagonal_sign:' }.freeze + + # The default language for code blocks is `java`, as indicated in + # You can't change the default in Jira. There was a comment that indicated + # Confluence can set the default language. + # @see https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=advanced&_ga=2.5135221.773220073.1591894917-438867908.1591894917 + # @see https://jira.atlassian.com/browse/JRASERVER-29184?focusedCommentId=832255&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-832255 + CODE_BLOCK_DEFAULT_LANGUAGE = 'java' + end + + def parse + ast = Gitlab::Json.parse(@source) + + validate_document(ast) + + process_content(@root, ast, TOP_LEVEL_BLOCK_NODES) + rescue ::JSON::ParserError => e + msg = 'Invalid Atlassian Document Format JSON' + Gitlab::AppLogger.error msg + Gitlab::AppLogger.error e + + raise ::Kramdown::Error, msg + end + + def process_content(element, ast_node, allowed_types) + ast_node['content'].each do |node| + next unless allowed_types.include?(node['type']) + + public_send("process_#{node['type'].underscore}", element, node) # rubocop:disable GitlabSecurity/PublicSend + end + end + + def process_blockquote(element, ast_node) + new_element = Element.new(:blockquote) + element.children << new_element + + process_content(new_element, ast_node, TOP_LEVEL_BLOCK_NODES) + end + + def process_bullet_list(element, ast_node) + new_element = Element.new(:ul) + element.children << new_element + + process_content(new_element, ast_node, %w[listItem]) + end + + def process_code_block(element, ast_node) + code_text = gather_text(ast_node) + lang = ast_node.dig('attrs', 'language') || CODE_BLOCK_DEFAULT_LANGUAGE + + element.children << Element.new(:codeblock, code_text, {}, { lang: lang }) + end + + def process_emoji(element, ast_node) + emoji = ast_node.dig('attrs', 'text') || ast_node.dig('attrs', 'shortName') + return unless emoji + + add_text(emoji, element, :text) + end + + def process_hard_break(element, ast_node) + element.children << Element.new(:br) + end + + def process_heading(element, ast_node) + level = ast_node.dig('attrs', 'level').to_i.clamp(1, 6) + options = { level: level } + new_element = Element.new(:header, nil, nil, options) + element.children << new_element + + process_content(new_element, ast_node, INLINE_NODES) + extract_element_text(new_element, new_element.options[:raw_text] = +'') + end + + def process_inline_card(element, ast_node) + url = ast_node.dig('attrs', 'url') + data = ast_node.dig('attrs', 'data') + + if url + # we don't pull a description from the link and create a panel, + # just convert to a normal link + new_element = Element.new(:text, url) + element.children << wrap_element(new_element, :a, nil, { 'href' => url }) + elsif data + # data is JSONLD (https://json-ld.org/), so for now output + # as a codespan of text, with `adf-inlineCard: ` at the start + text = "adf-inlineCard: #{data}" + element.children << Element.new(:codespan, text, nil, { lang: 'adf-inlinecard' }) + end + end + + def process_list_item(element, ast_node) + new_element = Element.new(:li) + element.children << new_element + + process_content(new_element, ast_node, LIST_ITEM_NODES) + end + + def process_media(element, ast_node) + media_url = "adf-media://#{ast_node['attrs']['id']}" + + case ast_node['attrs']['type'] + when 'file' + attrs = { 'src' => media_url, 'alt' => ast_node['attrs']['collection'] } + media_element = Element.new(:img, nil, attrs) + when 'link' + attrs = { 'href' => media_url } + media_element = wrap_element(Element.new(:text, media_url), :a, nil, attrs) + end + + media_element = wrap_element(media_element, :p) + element.children << media_element + end + + # wraps a single media element. + # Currently ignore attrs.layout and attrs.width + def process_media_single(element, ast_node) + new_element = Element.new(:p) + element.children << new_element + + process_content(new_element, ast_node, %w[media]) + end + + # wraps a group media element. + # Currently ignore attrs.layout and attrs.width + def process_media_group(element, ast_node) + ul_element = Element.new(:ul) + element.children << ul_element + + ast_node['content'].each do |node| + next unless node['type'] == 'media' + + li_element = Element.new(:li) + ul_element.children << li_element + + process_media(li_element, node) + end + end + + def process_mention(element, ast_node) + # Make it `@adf-mention:` since there is no guarantee that it is + # a valid username in our system. This gives us an + # opportunity to replace it later. Mention name can have + # spaces, so double quote it + mention_text = ast_node.dig('attrs', 'text')&.gsub('@', '') + mention_text = %Q("#{mention_text}") if mention_text.match?(/ /) + mention_text = %Q(@adf-mention:#{mention_text}) + + add_text(mention_text, element, :text) + end + + def process_ordered_list(element, ast_node) + # `attrs.order` is not supported in the Kramdown AST + new_element = Element.new(:ol) + element.children << new_element + + process_content(new_element, ast_node, %w[listItem]) + end + + # since we don't have something similar, then put <hr> around it and + # add a bolded status text (eg: "Error:") to the front of it. + def process_panel(element, ast_node) + panel_type = ast_node.dig('attrs', 'panelType') + return unless %w[info note warning success error].include?(panel_type) + + panel_header_text = "#{PANEL_EMOJIS[panel_type.to_sym]} " + panel_header_element = Element.new(:text, panel_header_text) + + new_element = Element.new(:blockquote) + new_element.children << panel_header_element + element.children << new_element + + process_content(new_element, ast_node, PANEL_NODES) + end + + def process_paragraph(element, ast_node) + new_element = Element.new(:p) + element.children << new_element + + process_content(new_element, ast_node, INLINE_NODES) + end + + def process_rule(element, ast_node) + element.children << Element.new(:hr) + end + + def process_table(element, ast_node) + table = Element.new(:table, nil, nil, { alignment: [:default, :default] }) + element.children << table + + tbody = Element.new(:tbody) + table.children << tbody + + process_content(tbody, ast_node, %w[tableRow]) + end + + # we ignore the attributes, attrs.background, attrs.colspan, + # attrs.colwidth, and attrs.rowspan + def process_table_cell(element, ast_node) + new_element = Element.new(:td) + element.children << new_element + + process_content(new_element, ast_node, TABLE_CELL_NODES) + end + + # we ignore the attributes, attrs.background, attrs.colspan, + # attrs.colwidth, and attrs.rowspan + def process_table_header(element, ast_node) + new_element = Element.new(:th) + element.children << new_element + + process_content(new_element, ast_node, TABLE_CELL_NODES) + end + + def process_table_row(element, ast_node) + new_element = Element.new(:tr) + element.children << new_element + + process_content(new_element, ast_node, %w[tableHeader tableCell]) + end + + def process_text(element, ast_node) + new_element = Element.new(:text, ast_node['text']) + new_element = apply_marks(new_element, ast_node, MARKS) + element.children << new_element + end + + private + + def validate_document(ast) + return if ast['type'] == 'doc' + + raise ::JSON::ParserError, 'missing doc node' + end + + # ADF marks are an attribute on the node. For kramdown, + # we have to wrap the node with an element for the mark. + def apply_marks(element, ast_node, allowed_types) + return element unless ast_node['marks'] + + new_element = element + + ast_node['marks'].each do |mark| + next unless allowed_types.include?(mark['type']) + + case mark['type'] + when 'code' + new_element = Element.new(:codespan, ast_node['text']) + when 'em' + new_element = wrap_element(new_element, :em) + when 'link' + attrs = { 'href' => mark.dig('attrs', 'href') } + attrs['title'] = mark.dig('attrs', 'title') + new_element = wrap_element(new_element, :a, nil, attrs) + when 'strike' + new_element = wrap_element(new_element, :html_element, 'del', {}, category: :span) + when 'strong' + new_element = wrap_element(new_element, :strong) + when 'subsup' + type = mark.dig('attrs', 'type') + + case type + when 'sub' + new_element = wrap_element(new_element, :html_element, 'sub', {}, category: :span) + when 'sup' + new_element = wrap_element(new_element, :html_element, 'sup', {}, category: :span) + else + next + end + when 'textColor' + color = mark.dig('attrs', 'color') + new_element = wrap_element(new_element, :html_element, 'span', { color: color }, category: :span) + when 'underline' + new_element = wrap_element(new_element, :html_element, 'u', {}, category: :span) + else + next + end + end + + new_element + end + + def wrap_element(element, type, *args) + wrapper = Element.new(type, *args) + wrapper.children << element + wrapper + end + + def extract_element_text(element, raw) + raw << element.value.to_s if element.type == :text + element.children.each { |c| extract_element_text(c, raw) } + end + + def gather_text(ast_node) + ast_node['content'].inject('') do |memo, node| + node['type'] == 'text' ? (memo + node['text']) : memo + end + end + + def method_missing(method, *args) + raise NotImplementedError, "method `#{method}` not implemented yet" + end + end + end +end diff --git a/lib/object_storage/direct_upload.rb b/lib/object_storage/direct_upload.rb index 5eab882039d..f973114e035 100644 --- a/lib/object_storage/direct_upload.rb +++ b/lib/object_storage/direct_upload.rb @@ -92,7 +92,11 @@ module ObjectStorage # Implements https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html def get_url - connection.get_object_url(bucket_name, object_name, expire_at) + if google? + connection.get_object_https_url(bucket_name, object_name, expire_at) + else + connection.get_object_url(bucket_name, object_name, expire_at) + end end # Implements https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html @@ -166,6 +170,10 @@ module ObjectStorage provider == 'AWS' end + def google? + provider == 'Google' + end + def requires_multipart_upload? aws? && !has_length end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 11747bbeae9..d13207d6c41 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -9104,6 +9104,9 @@ msgstr "" msgid "EventFilterBy|Filter by comments" msgstr "" +msgid "EventFilterBy|Filter by designs" +msgstr "" + msgid "EventFilterBy|Filter by epic events" msgstr "" diff --git a/package.json b/package.json index 87252948738..02a67664a11 100644 --- a/package.json +++ b/package.json @@ -216,7 +216,7 @@ "yarn-deduplicate": "^1.1.1" }, "blockedDependencies": { - "bootstrap-vue": "https://docs.gitlab.com/ee/development/fe_guide/dependencies.md#bootstrapvue" + "bootstrap-vue": "https://docs.gitlab.com/ee/development/fe_guide/dependencies.html#bootstrapvue" }, "resolutions": { "chokidar": "^3.4.0", diff --git a/public/robots.txt b/public/robots.txt index 20cd97a596f..12ceba88395 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -8,7 +8,10 @@ # Only some crawlers respect this setting, e.g. Googlebot does not # Crawl-delay: 1 -# Based on details in https://gitlab.com/gitlab-org/gitlab/blob/master/config/routes.rb, https://gitlab.com/gitlab-org/gitlab/blob/master/spec/routing, and using application +# Based on details in https://gitlab.com/gitlab-org/gitlab/blob/master/config/routes.rb, +# https://gitlab.com/gitlab-org/gitlab/blob/master/spec/routing, and using application + +# Global routes User-Agent: * Disallow: /autocomplete/users Disallow: /search @@ -16,62 +19,48 @@ Disallow: /api Disallow: /admin Disallow: /profile Disallow: /dashboard -Disallow: /projects/new -Disallow: /groups/new -Disallow: /groups/*/edit Disallow: /users Disallow: /help +Disallow: /s/ # Only specifically allow the Sign In page to avoid very ugly search results Allow: /users/sign_in -# Global snippets +# Generic resource routes like new, edit, raw +# This will block routes like: +# - /projects/new +# - /gitlab-org/gitlab-foss/issues/123/-/edit User-Agent: * -Disallow: /s/ -Disallow: /snippets/new -Disallow: /snippets/*/edit -Disallow: /snippets/*/raw +Disallow: /*/new +Disallow: /*/edit +Disallow: /*/raw + +# Group details +User-Agent: * +Disallow: /groups/*/analytics +Disallow: /groups/*/contribution_analytics +Disallow: /groups/*/group_members # Project details User-Agent: * Disallow: /*/*.git -Disallow: /*/*/fork/new -Disallow: /*/-/archive/ -Disallow: /*/*/repository/archive* -Disallow: /*/*/activity -Disallow: /*/*/new -Disallow: /*/*/edit -Disallow: /*/*/raw -Disallow: /*/*/blame -Disallow: /*/*/commits/*/* -Disallow: /*/*/commit/*.patch -Disallow: /*/*/commit/*.diff -Disallow: /*/*/compare -Disallow: /*/*/branches/new -Disallow: /*/*/tags/new -Disallow: /*/*/network -Disallow: /*/*/graphs -Disallow: /*/*/milestones/new -Disallow: /*/*/milestones/*/edit -Disallow: /*/*/issues/new -Disallow: /*/*/issues/*/edit -Disallow: /*/*/-/merge_requests/new -Disallow: /*/*/-/merge_requests/*.patch -Disallow: /*/*/-/merge_requests/*.diff -Disallow: /*/*/-/merge_requests/*/edit -Disallow: /*/*/-/merge_requests/*/diffs -Disallow: /*/*/project_members/import -Disallow: /*/*/labels/new -Disallow: /*/*/labels/*/edit -Disallow: /*/*/wikis/*/edit -Disallow: /*/*/snippets/new -Disallow: /*/*/snippets/*/edit -Disallow: /*/*/snippets/*/raw -Disallow: /*/*/deploy_keys -Disallow: /*/*/hooks -Disallow: /*/*/services -Disallow: /*/*/protected_branches -Disallow: /*/*/uploads/ -Disallow: /*/-/group_members +Disallow: /*/archive/ +Disallow: /*/repository/archive* +Disallow: /*/activity +Disallow: /*/blame +Disallow: /*/commits +Disallow: /*/commit +Disallow: /*/commit/*.patch +Disallow: /*/commit/*.diff +Disallow: /*/compare +Disallow: /*/network +Disallow: /*/graphs +Disallow: /*/merge_requests/*.patch +Disallow: /*/merge_requests/*.diff +Disallow: /*/merge_requests/*/diffs +Disallow: /*/deploy_keys +Disallow: /*/hooks +Disallow: /*/services +Disallow: /*/protected_branches +Disallow: /*/uploads/ Disallow: /*/project_members -Disallow: /groups/*/-/contribution_analytics -Disallow: /groups/*/-/analytics +Disallow: /*/settings diff --git a/spec/controllers/dashboard/projects_controller_spec.rb b/spec/controllers/dashboard/projects_controller_spec.rb index ee043fde0ff..1e1d9519f78 100644 --- a/spec/controllers/dashboard/projects_controller_spec.rb +++ b/spec/controllers/dashboard/projects_controller_spec.rb @@ -5,13 +5,14 @@ require 'spec_helper' RSpec.describe Dashboard::ProjectsController do include ExternalAuthorizationServiceHelpers + let_it_be(:user) { create(:user) } + describe '#index' do context 'user not logged in' do it_behaves_like 'authenticates sessionless user', :index, :atom end context 'user logged in' do - let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project) } let_it_be(:project2) { create(:project) } @@ -71,8 +72,6 @@ RSpec.describe Dashboard::ProjectsController do context 'json requests' do render_views - let(:user) { create(:user) } - before do sign_in(user) end @@ -114,16 +113,14 @@ RSpec.describe Dashboard::ProjectsController do end context 'atom requests' do - let(:user) { create(:user) } - before do sign_in(user) end describe '#index' do - context 'project pagination' do - let(:projects) { create_list(:project, 2, creator: user) } + let_it_be(:projects) { create_list(:project, 2, creator: user) } + context 'project pagination' do before do allow(Kaminari.config).to receive(:default_per_page).and_return(1) @@ -138,6 +135,37 @@ RSpec.describe Dashboard::ProjectsController do expect(assigns(:events).count).to eq(2) end end + + describe 'rendering' do + include DesignManagementTestHelpers + render_views + + let(:project) { projects.first } + let!(:design_event) { create(:design_event, project: project) } + let!(:wiki_page_event) { create(:wiki_page_event, project: project) } + let!(:issue_event) { create(:closed_issue_event, project: project) } + let(:design) { design_event.design } + let(:wiki_page) { wiki_page_event.wiki_page } + let(:issue) { issue_event.issue } + + before do + enable_design_management + project.add_developer(user) + end + + it 'renders all kinds of event without error', :aggregate_failures do + get :index, format: :atom + + expect(assigns(:events)).to include(design_event, wiki_page_event, issue_event) + expect(response).to render_template('dashboard/projects/index') + expect(response.body).to include( + "uploaded design #{design.to_reference}", + "created wiki page #{wiki_page.title}", + "joined project #{project.full_name}", + "closed issue #{issue.to_reference}" + ) + end + end end end end diff --git a/spec/controllers/dashboard_controller_spec.rb b/spec/controllers/dashboard_controller_spec.rb index d27817c0a82..cf15cf9256b 100644 --- a/spec/controllers/dashboard_controller_spec.rb +++ b/spec/controllers/dashboard_controller_spec.rb @@ -24,15 +24,20 @@ RSpec.describe DashboardController do end describe "GET activity as JSON" do + include DesignManagementTestHelpers render_views let(:user) { create(:user) } let(:project) { create(:project, :public, issues_access_level: ProjectFeature::PRIVATE) } + let(:other_project) { create(:project, :public) } before do + enable_design_management create(:event, :created, project: project, target: create(:issue)) create(:wiki_page_event, :created, project: project) create(:wiki_page_event, :updated, project: project) + create(:design_event, project: project) + create(:design_event, author: user, project: other_project) sign_in(user) @@ -42,12 +47,27 @@ RSpec.describe DashboardController do context 'when user has permission to see the event' do before do project.add_developer(user) + other_project.add_developer(user) end it 'returns count' do get :activity, params: { format: :json } - expect(json_response['count']).to eq(3) + expect(json_response['count']).to eq(6) + end + + describe 'design_activity_events feature flag' do + context 'it is off' do + before do + stub_feature_flags(design_activity_events: false) + end + + it 'excludes design activity' do + get :activity, params: { format: :json } + + expect(json_response['count']).to eq(4) + end + end end end diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index dce7105c073..b655fa7ee62 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -1138,6 +1138,48 @@ RSpec.describe GroupsController do it_behaves_like 'disabled when using an external authorization service' end + describe "GET #activity as JSON" do + include DesignManagementTestHelpers + render_views + + let(:project) { create(:project, :public, group: group) } + let(:other_project) { create(:project, :public, group: group) } + + def get_activity + get :activity, params: { format: :json, id: group.to_param } + end + + before do + enable_design_management + issue = create(:issue, project: project) + create(:event, :created, project: project, target: issue) + create(:design_event, project: project) + create(:design_event, project: other_project) + + sign_in(user) + + request.cookies[:event_filter] = 'all' + end + + it 'returns count' do + get_activity + + expect(json_response['count']).to eq(3) + end + + context 'the design_activity_events feature flag is disabled' do + before do + stub_feature_flags(design_activity_events: false) + end + + it 'does not include the design activity' do + get_activity + + expect(json_response['count']).to eq(1) + end + end + end + describe 'GET #issues' do subject { get :issues, params: { id: group.to_param } } diff --git a/spec/controllers/projects/pipelines/tests_controller_spec.rb b/spec/controllers/projects/pipelines/tests_controller_spec.rb new file mode 100644 index 00000000000..78d29e9825e --- /dev/null +++ b/spec/controllers/projects/pipelines/tests_controller_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Projects::Pipelines::TestsController do + let(:user) { create(:user) } + let(:project) { create(:project, :public, :repository) } + let(:pipeline) { create(:ci_pipeline, project: project) } + + before do + sign_in(user) + end + + describe 'GET #summary.json' do + context 'when pipeline has build report results' do + let(:pipeline) { create(:ci_pipeline, :with_report_results, project: project) } + + it 'renders test report summary data' do + get_tests_summary_json + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['total_count']).to eq(2) + end + end + + context 'when pipeline does not have build report results' do + it 'renders test report summary data' do + get_tests_summary_json + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['total_count']).to eq(0) + end + end + + context 'when feature is disabled' do + before do + stub_feature_flags(build_report_summary: false) + end + + it 'returns 404' do + get_tests_summary_json + + expect(response).to have_gitlab_http_status(:not_found) + expect(response.body).to be_empty + end + end + end + + def get_tests_summary_json + get :summary, + params: { + namespace_id: project.namespace, + project_id: project, + id: pipeline.id + }, + format: :json + end +end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 8aae9ef85be..56baa09b4bd 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -86,11 +86,13 @@ RSpec.describe ProjectsController do end describe "GET #activity as JSON" do + include DesignManagementTestHelpers render_views let(:project) { create(:project, :public, issues_access_level: ProjectFeature::PRIVATE) } before do + enable_design_management create(:event, :created, project: project, target: create(:issue)) sign_in(user) @@ -103,11 +105,44 @@ RSpec.describe ProjectsController do project.add_developer(user) end - it 'returns count' do + def get_activity(project) get :activity, params: { namespace_id: project.namespace, id: project, format: :json } + end + + it 'returns count' do + get_activity(project) expect(json_response['count']).to eq(1) end + + context 'design events are visible' do + include DesignManagementTestHelpers + let(:other_project) { create(:project, namespace: user.namespace) } + + before do + enable_design_management + create(:design_event, project: project) + request.cookies[:event_filter] = EventFilter::DESIGNS + end + + it 'returns correct count' do + get_activity(project) + + expect(json_response['count']).to eq(1) + end + + context 'the feature flag is disabled' do + before do + stub_feature_flags(design_activity_events: false) + end + + it 'returns correct count' do + get_activity(project) + + expect(json_response['count']).to eq(0) + end + end + end end context 'when user has no permission to see the event' do diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb index 9403967aa0a..76a38f15245 100644 --- a/spec/factories/ci/builds.rb +++ b/spec/factories/ci/builds.rb @@ -302,6 +302,12 @@ FactoryBot.define do end end + trait :report_results do + after(:build) do |build| + build.report_results << build(:ci_build_report_result) + end + end + trait :test_reports do after(:build) do |build| build.job_artifacts << create(:ci_job_artifact, :junit, job: build) diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb index 85cdeaca12c..3a1bad8d285 100644 --- a/spec/factories/ci/pipelines.rb +++ b/spec/factories/ci/pipelines.rb @@ -65,6 +65,14 @@ FactoryBot.define do add_attribute(:protected) { true } end + trait :with_report_results do + status { :success } + + after(:build) do |pipeline, evaluator| + pipeline.builds << build(:ci_build, :report_results, pipeline: pipeline, project: pipeline.project) + end + end + trait :with_test_reports do status { :success } diff --git a/spec/factories/events.rb b/spec/factories/events.rb index 60bb3044191..ecbda5fbfd3 100644 --- a/spec/factories/events.rb +++ b/spec/factories/events.rb @@ -21,7 +21,7 @@ FactoryBot.define do factory :closed_issue_event do action { :closed } - target factory: :closed_issue + target { association(:closed_issue, project: project) } end factory :wiki_page_event do diff --git a/spec/features/projects/activity/user_sees_design_activity_spec.rb b/spec/features/projects/activity/user_sees_design_activity_spec.rb new file mode 100644 index 00000000000..01b707b0ad7 --- /dev/null +++ b/spec/features/projects/activity/user_sees_design_activity_spec.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'Projects > Activity > User sees design Activity', :js do + include DesignManagementTestHelpers + + let_it_be(:uploader) { create(:user) } + let_it_be(:editor) { create(:user) } + let_it_be(:deleter) { create(:user) } + let_it_be(:archiver) { create(:user) } + + def design_activity(user, action) + [user.name, user.to_reference, action, 'design'].join(' ') + end + + shared_examples 'being able to see design activity' do + let_it_be(:issue) { create(:issue, project: project) } + let_it_be(:design) { create(:design, issue: issue) } + + before_all do + project.add_developer(user) # implicitly adds a project join event. + common_attrs = { project: project, design: design } + create(:design_event, :created, author: uploader, **common_attrs) + create(:design_event, :updated, author: editor, **common_attrs) + create(:design_event, :destroyed, author: deleter, **common_attrs) + create(:design_event, :archived, author: archiver, **common_attrs) + end + + before do + enable_design_management + sign_in(user) + end + + it 'shows the design comment action in the activity page' do + visit activity_project_path(project) + + expect(page).to have_content('joined project') + expect(page).to have_content(design_activity(uploader, 'uploaded')) + expect(page).to have_content(design_activity(editor, 'revised')) + expect(page).to have_content(design_activity(deleter, 'deleted')) + expect(page).to have_content(design_activity(archiver, 'archived')) + end + + it 'allows filtering out the design events', :aggregate_failures do + visit activity_project_path(project, event_filter: EventFilter::ISSUE) + + expect(page).not_to have_content(design_activity(uploader, 'uploaded')) + expect(page).not_to have_content(design_activity(editor, 'revised')) + expect(page).not_to have_content(design_activity(deleter, 'deleted')) + expect(page).not_to have_content(design_activity(archiver, 'archived')) + end + + it 'allows filtering in the design events', :aggregate_failures do + visit activity_project_path(project, event_filter: EventFilter::DESIGNS) + + expect(page).not_to have_content('joined project') + expect(page).to have_content(design_activity(uploader, 'uploaded')) + expect(page).to have_content(design_activity(editor, 'revised')) + expect(page).to have_content(design_activity(deleter, 'deleted')) + expect(page).to have_content(design_activity(archiver, 'archived')) + end + end + + context 'the project is public' do + let_it_be(:project) { create(:project, :repository, :public) } + let_it_be(:user) { create(:user) } + + it_behaves_like 'being able to see design activity' + end + + context 'the project is private' do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user, developer_projects: [project]) } + + it_behaves_like 'being able to see design activity' + end +end diff --git a/spec/finders/user_recent_events_finder_spec.rb b/spec/finders/user_recent_events_finder_spec.rb index 04ba05c68e4..21a7d295dde 100644 --- a/spec/finders/user_recent_events_finder_spec.rb +++ b/spec/finders/user_recent_events_finder_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' RSpec.describe UserRecentEventsFinder do - let(:current_user) { create(:user) } - let(:project_owner) { create(:user) } + let_it_be(:project_owner, reload: true) { create(:user) } + let_it_be(:current_user, reload: true) { create(:user) } let(:private_project) { create(:project, :private, creator: project_owner) } let(:internal_project) { create(:project, :internal, creator: project_owner) } let(:public_project) { create(:project, :public, creator: project_owner) } @@ -36,5 +36,30 @@ RSpec.describe UserRecentEventsFinder do expect(finder.execute).to be_empty end + + describe 'design_activity_events feature flag' do + let_it_be(:event_a) { create(:design_event, author: project_owner) } + let_it_be(:event_b) { create(:design_event, author: project_owner) } + + context 'the design_activity_events feature-flag is enabled' do + it 'only includes design events in enabled projects', :aggregate_failures do + events = finder.execute + + expect(events).to include(event_a) + expect(events).to include(event_b) + end + end + + context 'the design_activity_events feature-flag is disabled' do + it 'excludes design events', :aggregate_failures do + stub_feature_flags(design_activity_events: false) + + events = finder.execute + + expect(events).not_to include(event_a) + expect(events).not_to include(event_b) + end + end + end end end diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json new file mode 100644 index 00000000000..5ad414b43b9 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "blockquote", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a sample quote" + }, + { + "type": "text", + "text": " with lorem ipsum dolor sit amet..." + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md new file mode 100644 index 00000000000..9564e11fc3b --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/blockquote.md @@ -0,0 +1,2 @@ +> This is a sample quote with lorem ipsum dolor sit amet... + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json new file mode 100644 index 00000000000..0e2b34b0790 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.json @@ -0,0 +1,72 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "bulletList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Item 1" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Item 2", + "marks": [ + { + "type": "strong" + } + ] + } + ] + }, + { + "type": "bulletList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Sub-item 1" + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Sub-item 1 paragraph" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md new file mode 100644 index 00000000000..b7de76b973f --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/bullet_list.md @@ -0,0 +1,8 @@ +* Item 1 + +* **Item 2** + + * Sub-item 1 + + Sub-item 1 paragraph + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json new file mode 100644 index 00000000000..26f468626c2 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "codeBlock", + "attrs": { + "language": "javascript" + }, + "content": [ + { + "type": "text", + "text": "export function makeIssue({ parentIssue, project, users }) {\n\n const issueType = pickRandom(project.issueTypes)\n\n console.log(data)\n\n return data\n}" + } + ] + }, + { + "type": "bulletList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Item 1" + } + ] + }, + { + "type": "codeBlock", + "content": [ + { + "type": "text", + "text": "public DemoClass()\n{\n // assign default value\n x = 0;\n}" + } + ] + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md new file mode 100644 index 00000000000..77eee3081db --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_block.md @@ -0,0 +1,17 @@ + export function makeIssue({ parentIssue, project, users }) { + + const issueType = pickRandom(project.issueTypes) + + console.log(data) + + return data + } + +* Item 1 + + public DemoClass() + { + // assign default value + x = 0; + } + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json new file mode 100644 index 00000000000..884715709f7 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is some " + }, + { + "type": "text", + "text": "inline code", + "marks": [ + { + "type": "code" + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md new file mode 100644 index 00000000000..a52d00bfd38 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/code_mark.md @@ -0,0 +1,2 @@ +This is some `inline code` + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json new file mode 100644 index 00000000000..c69ad6b4260 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.json @@ -0,0 +1,964 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a complex issue…and this is normal text" + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "rule" + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - Dark Gray" + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Light Gray", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#97a0af" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Purple", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#6554c0" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Teal", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#00b8d9" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Green", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#36b37e" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Red", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#ff5630" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Color - " + }, + { + "type": "text", + "text": "Orange", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#ff991f" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "rule" + }, + { + "type": "paragraph", + "content": [ + { + "type": "inlineCard", + "attrs": { + "url": "https://gitlab-jira.atlassian.net/browse/DEMO-1" + } + }, + { + "type": "text", + "text": " " + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "inlineCard", + "attrs": { + "data": { + "@context": "https://json-ld.org/contexts/person.jsonld", + "@id": "http://dbpedia.org/resource/John_Lennon", + "name": "John Lennon", + "born": "1940-10-09", + "spouse": "http://dbpedia.org/resource/Cynthia_Lennon" + } + } + }, + { + "type": "text", + "text": " " + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "External Link", + "marks": [ + { + "type": "link", + "attrs": { + "href": "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25718" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "rule" + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "blockquote", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a block quote" + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "panel", + "attrs": { + "panelType": "success" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Success info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "info" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Info info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "note" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Note info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "warning" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Warning info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "error" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Error info panel" + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "rule" + }, + { + "type": "paragraph", + "content": [ + { + "type": "mention", + "attrs": { + "id": "5e32f803e127810e82875bc1", + "text": "jhope" + } + }, + { + "type": "text", + "text": " what up" + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "paragraph", + "content": [ + { + "type": "emoji", + "attrs": { + "shortName": ":grinning:", + "id": "1f600", + "text": "\uD83D\uDE00" + } + }, + { + "type": "text", + "text": " " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":rofl:", + "id": "1f923", + "text": "\uD83E\uDD23" + } + }, + { + "type": "text", + "text": " " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":partying_face:", + "id": "1f973", + "text": "\uD83E\uDD73" + } + }, + { + "type": "text", + "text": " " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":heart_eyes:", + "id": "1f60d", + "text": "\uD83D\uDE0D" + } + }, + { + "type": "text", + "text": " " + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "table", + "attrs": { + "isNumberColumnEnabled": false, + "layout": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableHeader", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 1 Row 1", + "marks": [ + { + "type": "strong" + } + ] + } + ] + } + ] + }, + { + "type": "tableHeader", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 2 Row 1", + "marks": [ + { + "type": "strong" + } + ] + } + ] + } + ] + }, + { + "type": "tableHeader", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 3 Row 1", + "marks": [ + { + "type": "strong" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 1 Row 2" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 2 Row 2" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 3 Row 2" + } + ] + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 1 Row 3" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 2 Row 3" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Col 3 Row 3" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 1 + }, + "content": [ + { + "type": "text", + "text": "Header 1" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 2 + }, + "content": [ + { + "type": "text", + "text": "Header 2" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 3 + }, + "content": [ + { + "type": "text", + "text": "Header 3" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 4 + }, + "content": [ + { + "type": "text", + "text": "Header 4" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 5 + }, + "content": [ + { + "type": "text", + "text": "Header 5" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 6 + }, + "content": [ + { + "type": "text", + "text": "Header 6" + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "bulletList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Bullet point list item 1" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Bullet point list Item 2" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Bullet point list Item 3" + } + ] + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "orderedList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list Item 1" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 2" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 3" + } + ] + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Underline", + "marks": [ + { + "type": "underline" + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Superscript", + "marks": [ + { + "type": "subsup", + "attrs": { + "type": "sup" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Subscript", + "marks": [ + { + "type": "subsup", + "attrs": { + "type": "sub" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Bold", + "marks": [ + { + "type": "strong" + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Italic", + "marks": [ + { + "type": "em" + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Strikethrough", + "marks": [ + { + "type": "strike" + } + ] + } + ] + }, + { + "type": "codeBlock", + "attrs": { + "language": "javascript" + }, + "content": [ + { + "type": "text", + "text": "export function makeIssue({ parentIssue, project, users }) {\n \n const issueType = pickRandom(project.issueTypes)\n\n let data = {\n fields: {\n summary: faker.lorem.sentence(),\n issuetype: {\n id: issueType.id\n },\n project: {\n id: project.id\n },\n reporter: {\n id: pickRandom(users)\n }\n }\n }\n\n if (issueType.subtask) {\n data = {\n parent: {\n key: parentIssue\n }\n }\n }\n\n console.log(data)\n\n return data\n}" + } + ] + }, + { + "type": "mediaSingle", + "attrs": { + "layout": "center" + }, + "content": [ + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c", + "type": "file", + "collection": "jira-10050-field-description", + "width": 400, + "height": 400 + } + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "mediaSingle", + "attrs": { + "layout": "center" + }, + "content": [ + { + "type": "media", + "attrs": { + "id": "6a5b48c6-70bd-4747-9ac8-a9abc9adb1f4", + "type": "file", + "collection": "jira-10050-field-description", + "width": 1280, + "height": 789 + } + } + ] + }, + { + "type": "mediaSingle", + "attrs": { + "layout": "center" + }, + "content": [ + { + "type": "media", + "attrs": { + "id": "e818a88d-9185-4a7f-8882-18339a0f0966", + "type": "file", + "collection": "jira-10050-field-description", + "width": 1280, + "height": 598 + } + } + ] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "paragraph", + "content": [] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "blob:" + }, + { + "type": "text", + "text": "https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408", + "marks": [ + { + "type": "link", + "attrs": { + "href": "https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408" + } + } + ] + } + ] + }, + { + "type": "paragraph", + "content": [] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md new file mode 100644 index 00000000000..7933e6425f9 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/complex_document.md @@ -0,0 +1,220 @@ +This is a complex issue…and this is normal text + + + +* * * + +Color - Dark Gray + +Color - <span color="#97a0af">Light Gray</span> + +Color - <span color="#6554c0">Purple</span> + +Color - <span color="#00b8d9">Teal</span> + +Color - <span color="#36b37e">Green</span> + +Color - <span color="#ff5630">Red</span> + +Color - <span color="#ff991f">Orange</span> + + + +* * * + +[https://gitlab-jira.atlassian.net/browse/DEMO-1][1] + +`adf-inlineCard: +{"@context"=>"https://json-ld.org/contexts/person.jsonld", +"@id"=>"http://dbpedia.org/resource/John_Lennon", "name"=>"John Lennon", +"born"=>"1940-10-09", +"spouse"=>"http://dbpedia.org/resource/Cynthia_Lennon"}` + +[External Link][2] + + + +* * * + + + +> This is a block quote + + + +> \:white\_check\_mark: Success info panel + +> \:information\_source: Info info panel + +> \:notepad\_spiral: Note info panel + +> \:warning: Warning info panel + +> \:octagonal\_sign: Error info panel + + + + + +* * * + +@adf-mention:jhope what up + + + +😀 🤣 🥳 😍 + + + +<table> +<tbody> +<tr> +<th> + +**Col 1 Row 1** + +</th> +<th> + +**Col 2 Row 1** + +</th> +<th> + +**Col 3 Row 1** + +</th> +</tr> +<tr> +<td> + +Col 1 Row 2 + +</td> +<td> + +Col 2 Row 2 + +</td> +<td> + +Col 3 Row 2 + +</td> +</tr> +<tr> +<td> + +Col 1 Row 3 + +</td> +<td> + +Col 2 Row 3 + +</td> +<td> + +Col 3 Row 3 + +</td> +</tr> +</tbody> +</table> + + +# Header 1 + +## Header 2 + +### Header 3 + +#### Header 4 + +##### Header 5 + +###### Header 6 + + + +* Bullet point list item 1 + +* Bullet point list Item 2 + +* Bullet point list Item 3 + + + +1. Number list Item 1 + +2. Number list item 2 + +3. Number list item 3 + + + +<u>Underline</u> + +<sup>Superscript</sup> + +<sub>Subscript</sub> + +**Bold** + +*Italic* + +<del>Strikethrough</del> + + export function makeIssue({ parentIssue, project, users }) { + + const issueType = pickRandom(project.issueTypes) + + let data = { + fields: { + summary: faker.lorem.sentence(), + issuetype: { + id: issueType.id + }, + project: { + id: project.id + }, + reporter: { + id: pickRandom(users) + } + } + } + + if (issueType.subtask) { + data = { + parent: { + key: parentIssue + } + } + } + + console.log(data) + + return data + } + +![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c) + + + +![jira-10050-field-description](adf-media://6a5b48c6-70bd-4747-9ac8-a9abc9adb1f4) + +![jira-10050-field-description](adf-media://e818a88d-9185-4a7f-8882-18339a0f0966) + + + + + +blob:[https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408][3] + + + + + +[1]: https://gitlab-jira.atlassian.net/browse/DEMO-1 +[2]: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25718 +[3]: https://gitlab-jira.atlassian.net/5eb8e93b-7b15-446f-82d9-9d82ad7b8ea5#media-blob-url=true&id=572b2c1b-1b38-44ba-904a-649ee1861917&collection=upload-user-collection-426749591&contextId=10042&mimeType=image%2Fpng&name=import-jira-issues.png&size=294408 diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json new file mode 100644 index 00000000000..3a7944d2509 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Grinning with unicode " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":grinning:", + "text": "😀" + } + }, + { + "type": "text", + "text": " and heart eyes with raw unicode " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":heart_eyes:", + "id": "1f60d", + "text": "\uD83D\uDE0D" + } + }, + { + "type": "text", + "text": ", non-standard Atlassian " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":awthanks:", + "id": "atlassian-awthanks", + "text": ":awthanks:" + } + }, + { + "type": "text", + "text": ", non-standard customer emoji " + }, + { + "type": "emoji", + "attrs": { + "shortName": ":thumbsup::skin-tone-2:" + } + }, + { + "type": "text", + "text": ", and invalid is ignored " + }, + { + "type": "emoji", + "attrs": { + "id": "1f44d" + } + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md new file mode 100644 index 00000000000..11adf377188 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/emoji.md @@ -0,0 +1,4 @@ +Grinning with unicode 😀 and heart eyes with raw unicode 😍, non-standard +Atlassian :awthanks:, non-standard customer emoji +:thumbsup::skin-tone-2:, and invalid is ignored + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json new file mode 100644 index 00000000000..564570c016e --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a sample paragraph" + }, + { + "type": "hardBreak" + }, + { + "type": "text", + "text": "with lorem ipsum dolor sit amet..." + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md new file mode 100644 index 00000000000..d8c4a8dca53 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/hard_break.md @@ -0,0 +1,3 @@ +This is a sample paragraph +with lorem ipsum dolor sit amet... + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json new file mode 100644 index 00000000000..dbc756f3603 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "heading", + "attrs": { + "level": 1 + }, + "content": [ + { + "type": "text", + "text": "Header 1" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 2 + }, + "content": [ + { + "type": "text", + "text": "Header 2", + "marks": [ + { + "type": "strong" + } + ] + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 3 + }, + "content": [ + { + "type": "text", + "text": "Header 3" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 4 + }, + "content": [ + { + "type": "text", + "text": "Header 4", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#ff6347" + } + } + ] + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 5 + }, + "content": [ + { + "type": "text", + "text": "Header 5" + } + ] + }, + { + "type": "heading", + "attrs": { + "level": 6 + }, + "content": [ + { + "type": "text", + "text": "Header 6" + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md new file mode 100644 index 00000000000..073ae1fdef4 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/heading.md @@ -0,0 +1,12 @@ +# Header 1 + +## **Header 2** + +### Header 3 + +#### <span color="#ff6347">Header 4</span> + +##### Header 5 + +###### Header 6 + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json new file mode 100644 index 00000000000..8b7428debc2 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "An inline card (url): " + }, + { + "type": "inlineCard", + "attrs": { + "url": "https://gitlab-jira.atlassian.net/browse/DEMO-1" + } + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Some prelude text " + }, + { + "type": "inlineCard", + "attrs": { + "data": { + "@context": "https://json-ld.org/contexts/person.jsonld", + "@id": "http://dbpedia.org/resource/John_Lennon", + "name": "John Lennon", + "born": "1940-10-09", + "spouse": "http://dbpedia.org/resource/Cynthia_Lennon" + } + } + }, + { + "type": "text", + "text": " some following text" + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md new file mode 100644 index 00000000000..655102941a7 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/inline_card.md @@ -0,0 +1,13 @@ +An inline card (url): +[https://gitlab-jira.atlassian.net/browse/DEMO-1][1] + +Some prelude text `adf-inlineCard: +{"@context"=>"https://json-ld.org/contexts/person.jsonld", +"@id"=>"http://dbpedia.org/resource/John_Lennon", "name"=>"John Lennon", +"born"=>"1940-10-09", +"spouse"=>"http://dbpedia.org/resource/Cynthia_Lennon"}` some following +text + + + +[1]: https://gitlab-jira.atlassian.net/browse/DEMO-1 diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json new file mode 100644 index 00000000000..6305592d175 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_json.json @@ -0,0 +1,16 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a second paragraph" + } + ] + } + ] +} +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json new file mode 100644 index 00000000000..c9f10eeeb79 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_no_doc.json @@ -0,0 +1,13 @@ +{ + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a sample paragraph" + }, + { + "type": "text", + "text": " with lorem ipsum dolor sit amet..." + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json new file mode 100644 index 00000000000..ebb74624333 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/invalid_node_type.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "invalid", + "content": [ + { + "type": "text", + "text": "This is a sample paragraph" + }, + { + "type": "text", + "text": " with lorem ipsum dolor sit amet..." + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a second paragraph" + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json new file mode 100644 index 00000000000..bf6facf1b05 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.json @@ -0,0 +1,44 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a " + }, + { + "type": "text", + "text": "link without title", + "marks": [ + { + "type": "link", + "attrs": { + "href": "http://example.com" + } + } + ] + }, + { + "type": "text", + "text": " and a " + }, + { + "type": "text", + "text": "link with title", + "marks": [ + { + "type": "link", + "attrs": { + "href": "http://example.net", + "title": "Link Title" + } + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md new file mode 100644 index 00000000000..cd42b2297cf --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/link_mark.md @@ -0,0 +1,6 @@ +This is a [link without title][1] and a [link with title][2] + + + +[1]: http://example.com +[2]: http://example.net "Link Title" diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json new file mode 100644 index 00000000000..a51da964e0e --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "mediaGroup", + "content": [ + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c", + "type": "file", + "collection": "jira-10050-field-description", + "width": 400, + "height": 400 + } + }, + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-abcde", + "type": "file", + "collection": "jira-10050-field-description", + "width": 400, + "height": 400 + } + } + ] + }, + { + "type": "rule" + }, + { + "type": "mediaGroup", + "content": [ + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c-link1", + "type": "link", + "collection": "jira-10050-field-description-links", + "width": 400, + "height": 400 + } + }, + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c-link2", + "type": "link", + "collection": "jira-10050-field-description-links", + "width": 400, + "height": 400 + } + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md new file mode 100644 index 00000000000..7b602d8fc2b --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_group.md @@ -0,0 +1,10 @@ +* ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c) + +* ![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-abcde) + +* * * + +* [adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link1](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link1) + +* [adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link2](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c-link2) + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json new file mode 100644 index 00000000000..0ecf2dcf03d --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.json @@ -0,0 +1,42 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "mediaSingle", + "attrs": { + "layout": "center" + }, + "content": [ + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-ac3a5887750c", + "type": "file", + "collection": "jira-10050-field-description", + "width": 400, + "height": 400 + } + } + ] + }, + { + "type": "mediaSingle", + "attrs": { + "layout": "center" + }, + "content": [ + { + "type": "media", + "attrs": { + "id": "79411c6b-50e0-477f-b4ed-abcd", + "type": "file", + "collection": "another-jira-10050-field-description", + "width": 400, + "height": 400 + } + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md new file mode 100644 index 00000000000..5ed1bbb55e1 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/media_single.md @@ -0,0 +1,4 @@ +![jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-ac3a5887750c) + +![another-jira-10050-field-description](adf-media://79411c6b-50e0-477f-b4ed-abcd) + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json new file mode 100644 index 00000000000..81a087c57d9 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.json @@ -0,0 +1,44 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Mentioning " + }, + { + "type": "mention", + "attrs": { + "id": "ABCDE-ABCDE-ABCDE-ABCDE", + "text": "@testuser", + "userType": "APP" + } + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Mentioning " + }, + { + "type": "mention", + "attrs": { + "id": "ABCDE-ABCDE-ABCDE-ABCDE", + "text": "@test user", + "userType": "APP" + } + }, + { + "type": "text", + "text": " with space in user name" + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md new file mode 100644 index 00000000000..f22c6421d8c --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/mention.md @@ -0,0 +1,4 @@ +Mentioning @adf-mention:testuser + +Mentioning @adf-mention:\"test user\" with space in user name + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json new file mode 100644 index 00000000000..b63bf087b23 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.json @@ -0,0 +1,151 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "orderedList", + "content": [ + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list Item 1" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 2" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 3" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 4" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 5" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 6" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 7" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 8" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 9" + } + ] + } + ] + }, + { + "type": "listItem", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Number list item 10" + } + ] + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md new file mode 100644 index 00000000000..435bfadbd74 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/ordered_list.md @@ -0,0 +1,20 @@ +1. Number list Item 1 + +2. Number list item 2 + +3. Number list item 3 + +4. Number list item 4 + +5. Number list item 5 + +6. Number list item 6 + +7. Number list item 7 + +8. Number list item 8 + +9. Number list item 9 + +10. Number list item 10 + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json new file mode 100644 index 00000000000..e3982d23a9e --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.json @@ -0,0 +1,117 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "panel", + "attrs": { + "panelType": "success" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Success info panel" + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Second paragraph" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "info" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Info info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "note" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Note info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "warning" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Warning info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "error" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Error info panel" + } + ] + } + ] + }, + { + "type": "panel", + "attrs": { + "panelType": "unknown" + }, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Unknown panel" + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md new file mode 100644 index 00000000000..fe3a10e4878 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/panel.md @@ -0,0 +1,12 @@ +> \:white\_check\_mark: Success info panel +> +> Second paragraph + +> \:information\_source: Info info panel + +> \:notepad\_spiral: Note info panel + +> \:warning: Warning info panel + +> \:octagonal\_sign: Error info panel + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json new file mode 100644 index 00000000000..e5b99dbd112 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a sample paragraph" + }, + { + "type": "text", + "text": " with lorem ipsum dolor sit amet..." + } + ] + }, + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is a second paragraph" + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md new file mode 100644 index 00000000000..661110e0267 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/paragraph.md @@ -0,0 +1,4 @@ +This is a sample paragraph with lorem ipsum dolor sit amet... + +This is a second paragraph + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json new file mode 100644 index 00000000000..c2566a84713 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.json @@ -0,0 +1,9 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "rule" + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md new file mode 100644 index 00000000000..8ccef4e8dfb --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/rule.md @@ -0,0 +1,2 @@ +* * * + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json new file mode 100644 index 00000000000..21d364d642f --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.json @@ -0,0 +1,56 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is " + }, + { + "type": "text", + "text": "stricken", + "marks": [ + { + "type": "strike" + } + ] + }, + { + "type": "text", + "text": " and " + }, + { + "type": "text", + "text": "superscripted", + "marks": [ + { + "type": "subsup", + "attrs": { + "type": "sup" + } + } + ] + }, + { + "type": "text", + "text": " and " + }, + { + "type": "text", + "text": "subscripted", + "marks": [ + { + "type": "subsup", + "attrs": { + "type": "sub" + } + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md new file mode 100644 index 00000000000..e4dda350907 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strike_sup_sub_mark.md @@ -0,0 +1,3 @@ +This is <del>stricken</del> and <sup>superscripted</sup> and +<sub>subscripted</sub> + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json new file mode 100644 index 00000000000..7ab1a7c1461 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Hello " + }, + { + "type": "text", + "text": "strong", + "marks": [ + { + "type": "strong" + } + ] + }, + { + "type": "text", + "text": " and " + }, + { + "type": "text", + "text": "emphasis", + "marks": [ + { + "type": "em" + } + ] + }, + { + "type": "text", + "text": " and " + }, + { + "type": "text", + "text": "strongly emphasised", + "marks": [ + { + "type": "em" + }, + { + "type": "strong" + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md new file mode 100644 index 00000000000..d0dcbb231ae --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/strong_em_mark.md @@ -0,0 +1,2 @@ +Hello **strong** and *emphasis* and ***strongly emphasised*** + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/table.json b/spec/fixtures/lib/kramdown/atlassian_document_format/table.json new file mode 100644 index 00000000000..ad12c2875c0 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/table.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "table", + "attrs": { + "isNumberColumnEnabled": false, + "layout": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Row one, cell one", + "marks": [ + { + "type": "strong" + } + ] + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": {}, + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "Row one, cell two" + } + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/table.md b/spec/fixtures/lib/kramdown/atlassian_document_format/table.md new file mode 100644 index 00000000000..4e0c53338df --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/table.md @@ -0,0 +1,18 @@ +<table> +<tbody> +<tr> +<td> + +**Row one, cell one** + +</td> +<td> + +Row one, cell two + +</td> +</tr> +</tbody> +</table> + + diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json new file mode 100644 index 00000000000..2690233d4f6 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.json @@ -0,0 +1,40 @@ +{ + "version": 1, + "type": "doc", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "text", + "text": "This is " + }, + { + "type": "text", + "text": "underlined", + "marks": [ + { + "type": "underline" + } + ] + }, + { + "type": "text", + "text": " and " + }, + { + "type": "text", + "text": "red", + "marks": [ + { + "type": "textColor", + "attrs": { + "color": "#ff6347" + } + } + ] + } + ] + } + ] +} diff --git a/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md new file mode 100644 index 00000000000..75c9de3b451 --- /dev/null +++ b/spec/fixtures/lib/kramdown/atlassian_document_format/underline_text_color_mark.md @@ -0,0 +1,2 @@ +This is <u>underlined</u> and <span color="#ff6347">red</span> + diff --git a/spec/graphql/mutations/merge_requests/update_spec.rb b/spec/graphql/mutations/merge_requests/update_spec.rb new file mode 100644 index 00000000000..4a1fdf6e74b --- /dev/null +++ b/spec/graphql/mutations/merge_requests/update_spec.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Mutations::MergeRequests::Update do + let(:merge_request) { create(:merge_request) } + let(:user) { create(:user) } + + subject(:mutation) { described_class.new(object: nil, context: { current_user: user }, field: nil) } + + specify { expect(described_class).to require_graphql_authorizations(:update_merge_request) } + + describe '#resolve' do + let(:attributes) { { title: 'new title', description: 'new description', target_branch: 'new-branch' } } + let(:mutated_merge_request) { subject[:merge_request] } + + subject do + mutation.resolve(project_path: merge_request.project.full_path, iid: merge_request.iid, **attributes) + end + + it 'raises an error if the resource is not accessible to the user' do + expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) + end + + context 'when the user can update the merge request' do + before do + merge_request.project.add_developer(user) + end + + it 'applies all attributes' do + expect(mutated_merge_request).to eq(merge_request) + expect(mutated_merge_request).to have_attributes(attributes) + expect(subject[:errors]).to be_empty + end + + context 'the merge request is invalid' do + before do + merge_request.allow_broken = true + merge_request.update!(source_project: nil) + end + + it 'returns error information, and changes were not applied' do + expect(mutated_merge_request).not_to have_attributes(attributes) + expect(subject[:errors]).not_to be_empty + end + end + + context 'our change is invalid' do + let(:attributes) { { target_branch: 'this is not a branch' } } + + it 'returns error information, and changes were not applied' do + expect(mutated_merge_request).not_to have_attributes(attributes) + expect(subject[:errors]).not_to be_empty + end + end + + context 'when passing subset of attributes' do + let(:attributes) { { title: 'no, this title' } } + + it 'only changes the mentioned attributes' do + expect { subject }.not_to change { merge_request.reset.description } + + expect(mutated_merge_request).to have_attributes(attributes) + end + end + end + end +end diff --git a/spec/graphql/types/namespace_type_spec.rb b/spec/graphql/types/namespace_type_spec.rb index 741698021e7..0080dc3b5cc 100644 --- a/spec/graphql/types/namespace_type_spec.rb +++ b/spec/graphql/types/namespace_type_spec.rb @@ -8,7 +8,7 @@ describe GitlabSchema.types['Namespace'] do it 'has the expected fields' do expected_fields = %w[ id name path full_name full_path description description_html visibility - lfs_enabled request_access_enabled projects root_storage_statistics + lfs_enabled request_access_enabled storage_size_limit projects root_storage_statistics ] expect(described_class).to have_graphql_fields(*expected_fields) diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 75377356445..0b13acbc577 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -209,6 +209,16 @@ describe ApplicationHelper do end end + describe '#page_startup_api_calls' do + it 'returns map containing JS Page Startup Calls' do + helper.add_page_startup_api_call("testURL") + + startup_calls = helper.page_startup_api_calls + + expect(startup_calls["testURL"]).to eq({}) + end + end + describe '#autocomplete_data_sources' do let(:project) { create(:project) } let(:noteable_type) { Issue } diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb index 6f24308757d..15d617c0b02 100644 --- a/spec/helpers/events_helper_spec.rb +++ b/spec/helpers/events_helper_spec.rb @@ -227,4 +227,133 @@ describe EventsHelper do end end end + + describe '#event_filter_visible' do + include DesignManagementTestHelpers + + let_it_be(:project) { create(:project) } + let_it_be(:current_user) { create(:user) } + + subject { helper.event_filter_visible(key) } + + before do + enable_design_management + project.add_reporter(current_user) + allow(helper).to receive(:current_user).and_return(current_user) + end + + def disable_read_design_activity(object) + allow(Ability).to receive(:allowed?) + .with(current_user, :read_design_activity, eq(object)) + .and_return(false) + end + + context 'for :designs' do + let(:key) { :designs } + + context 'there is no relevant instance variable' do + it { is_expected.to be(true) } + end + + context 'the feature flag is off' do + before do + stub_feature_flags(design_activity_events: false) + end + + it { is_expected.to be(false) } + end + + context 'a project has been assigned' do + before do + assign(:project, project) + end + + it { is_expected.to be(true) } + + context 'the current user cannot read design activity' do + before do + disable_read_design_activity(project) + end + + it { is_expected.to be(false) } + end + + context 'the feature flag is off' do + before do + stub_feature_flags(design_activity_events: false) + end + + it { is_expected.to be(false) } + end + end + + context 'projects have been assigned' do + before do + assign(:projects, Project.where(id: project.id)) + end + + it { is_expected.to be(true) } + + context 'the collection is empty' do + before do + assign(:projects, Project.none) + end + + it { is_expected.to be(false) } + end + + context 'the current user cannot read design activity' do + before do + disable_read_design_activity(project) + end + + it { is_expected.to be(false) } + end + + context 'the feature flag is off' do + before do + stub_feature_flags(design_activity_events: false) + end + + it { is_expected.to be(false) } + end + end + + context 'a group has been assigned' do + let_it_be(:group) { create(:group) } + + before do + assign(:group, group) + end + + context 'there are no projects in the group' do + it { is_expected.to be(false) } + end + + context 'the group has at least one project' do + before do + create(:project_group_link, project: project, group: group) + end + + it { is_expected.to be(true) } + + context 'the current user cannot read design activity' do + before do + disable_read_design_activity(group) + end + + it { is_expected.to be(false) } + end + + context 'the feature flag is off' do + before do + stub_feature_flags(design_activity_events: false) + end + + it { is_expected.to be(false) } + end + end + end + end + end end diff --git a/spec/javascripts/fly_out_nav_spec.js b/spec/javascripts/fly_out_nav_browser_spec.js index afcf132bea3..f84cee72042 100644 --- a/spec/javascripts/fly_out_nav_spec.js +++ b/spec/javascripts/fly_out_nav_browser_spec.js @@ -1,3 +1,7 @@ +// this file can't be migrated to jest because it relies on the browser to perform integration tests: +// (specifically getClientBoundingRect and mouse movements) +// see: https://gitlab.com/groups/gitlab-org/-/epics/895#what-if-theres-a-karma-spec-which-is-simply-unmovable-to-jest-ie-it-is-dependent-on-a-running-browser-environment + import { GlBreakpointInstance } from '@gitlab/ui/dist/utils'; import { calculateTop, diff --git a/spec/javascripts/vue_shared/components/tooltip_on_truncate_spec.js b/spec/javascripts/vue_shared/components/tooltip_on_truncate_browser_spec.js index 5f432f2a1b5..da964a2d5b9 100644 --- a/spec/javascripts/vue_shared/components/tooltip_on_truncate_spec.js +++ b/spec/javascripts/vue_shared/components/tooltip_on_truncate_browser_spec.js @@ -1,3 +1,7 @@ +// this file can't be migrated to jest because it relies on the browser to perform integration tests: +// (specifically testing around css properties `overflow` and `white-space`) +// see: https://gitlab.com/groups/gitlab-org/-/epics/895#what-if-theres-a-karma-spec-which-is-simply-unmovable-to-jest-ie-it-is-dependent-on-a-running-browser-environment + import { mount, shallowMount } from '@vue/test-utils'; import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue'; diff --git a/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb b/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb new file mode 100644 index 00000000000..debb9493c23 --- /dev/null +++ b/spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Banzai::Filter::JiraImport::AdfToCommonmarkFilter do + include FilterSpecHelper + + let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' } + + it 'renders a complex document' do + source = fixture_file(File.join(fixtures_path, 'complex_document.json')) + target = fixture_file(File.join(fixtures_path, 'complex_document.md')) + + expect(filter(source)).to eq target + end + + it 'renders original source when it is invalid JSON' do + source = fixture_file(File.join(fixtures_path, 'invalid_json.json')) + + expect(filter(source)).to eq "Invalid Atlassian Document Format JSON\n\n#{source}" + end + + it 'renders original source when missing document node' do + source = fixture_file(File.join(fixtures_path, 'invalid_no_doc.json')) + + expect(filter(source)).to eq "Invalid Atlassian Document Format JSON\n\n#{source}" + end +end diff --git a/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb b/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb new file mode 100644 index 00000000000..7eaf886f22e --- /dev/null +++ b/spec/lib/banzai/pipeline/jira_import/adf_commonmark_pipeline_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Banzai::Pipeline::JiraImport::AdfCommonmarkPipeline do + let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' } + + it 'converts text in Atlassian Document Format ' do + source = fixture_file(File.join(fixtures_path, 'paragraph.json')) + target = fixture_file(File.join(fixtures_path, 'paragraph.md')) + output = described_class.call(source, {})[:output] + + expect(output).to eq target + end +end diff --git a/spec/lib/event_filter_spec.rb b/spec/lib/event_filter_spec.rb index da6e1f9458f..42458d9c306 100644 --- a/spec/lib/event_filter_spec.rb +++ b/spec/lib/event_filter_spec.rb @@ -30,6 +30,7 @@ describe EventFilter do let_it_be(:left_event) { create(:event, :left, project: public_project, target: public_project) } let_it_be(:wiki_page_event) { create(:wiki_page_event) } let_it_be(:wiki_page_update_event) { create(:wiki_page_event, :updated) } + let_it_be(:design_event) { create(:design_event) } let(:filtered_events) { described_class.new(filter).apply_filter(Event.all) } @@ -91,6 +92,24 @@ describe EventFilter do end end + context 'with the "design" filter' do + let(:filter) { described_class::DESIGNS } + + it 'returns only design events' do + expect(filtered_events).to contain_exactly(design_event) + end + + context 'the :design_activity_events feature is disabled' do + before do + stub_feature_flags(design_activity_events: false) + end + + it 'does not return design events' do + expect(filtered_events).to match_array(Event.not_design) + end + end + end + context 'with the "wiki" filter' do let(:filter) { described_class::WIKI } diff --git a/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb b/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb new file mode 100644 index 00000000000..34ca5c764d2 --- /dev/null +++ b/spec/lib/gitlab/ci/reports/test_report_summary_spec.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Ci::Reports::TestReportSummary do + let(:build_report_result_1) { build(:ci_build_report_result) } + let(:build_report_result_2) { build(:ci_build_report_result, :with_junit_success) } + let(:test_report_summary) { described_class.new([build_report_result_1, build_report_result_2]) } + + describe '#total' do + subject { test_report_summary.total } + + context 'when test report summary has several build report results' do + it 'returns test suite summary object' do + expect(subject).to be_a_kind_of(Gitlab::Ci::Reports::TestSuiteSummary) + end + end + end + + describe '#total_time' do + subject { test_report_summary.total_time } + + context 'when test report summary has several build report results' do + it 'returns the total' do + expect(subject).to eq(0.84) + end + end + end + + describe '#total_count' do + subject { test_report_summary.total_count } + + context 'when test report summary has several build report results' do + it 'returns the total count' do + expect(subject).to eq(4) + end + end + end + + describe '#success_count' do + subject { test_report_summary.success_count } + + context 'when test suite summary has several build report results' do + it 'returns the total success' do + expect(subject).to eq(2) + end + end + end + + describe '#failed_count' do + subject { test_report_summary.failed_count } + + context 'when test suite summary has several build report results' do + it 'returns the total failed' do + expect(subject).to eq(0) + end + end + end + + describe '#error_count' do + subject { test_report_summary.error_count } + + context 'when test suite summary has several build report results' do + it 'returns the total errored' do + expect(subject).to eq(2) + end + end + end + + describe '#skipped_count' do + subject { test_report_summary.skipped_count } + + context 'when test suite summary has several build report results' do + it 'returns the total skipped' do + expect(subject).to eq(0) + end + end + end + + describe '#test_suites' do + subject { test_report_summary.test_suites } + + context 'when test report summary has several build report results' do + it 'returns test suites grouped by name' do + expect(subject.keys).to eq(["rspec"]) + expect(subject.keys.size).to eq(1) + end + end + end +end diff --git a/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb b/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb new file mode 100644 index 00000000000..5bbef62b43d --- /dev/null +++ b/spec/lib/gitlab/ci/reports/test_suite_summary_spec.rb @@ -0,0 +1,79 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Ci::Reports::TestSuiteSummary do + let(:build_report_result_1) { build(:ci_build_report_result) } + let(:build_report_result_2) { build(:ci_build_report_result, :with_junit_success) } + let(:test_suite_summary) { described_class.new([build_report_result_1, build_report_result_2]) } + + describe '#name' do + subject { test_suite_summary.name } + + context 'when test suite summary has several build report results' do + it 'returns the suite name' do + expect(subject).to eq("rspec") + end + end + end + + describe '#total_time' do + subject { test_suite_summary.total_time } + + context 'when test suite summary has several build report results' do + it 'returns the total time' do + expect(subject).to eq(0.84) + end + end + end + + describe '#success_count' do + subject { test_suite_summary.success_count } + + context 'when test suite summary has several build report results' do + it 'returns the total success' do + expect(subject).to eq(2) + end + end + end + + describe '#failed_count' do + subject { test_suite_summary.failed_count } + + context 'when test suite summary has several build report results' do + it 'returns the total failed' do + expect(subject).to eq(0) + end + end + end + + describe '#error_count' do + subject { test_suite_summary.error_count } + + context 'when test suite summary has several build report results' do + it 'returns the total errored' do + expect(subject).to eq(2) + end + end + end + + describe '#skipped_count' do + subject { test_suite_summary.skipped_count } + + context 'when test suite summary has several build report results' do + it 'returns the total skipped' do + expect(subject).to eq(0) + end + end + end + + describe '#total_count' do + subject { test_suite_summary.total_count } + + context 'when test suite summary has several build report results' do + it 'returns the total count' do + expect(subject).to eq(4) + end + end + end +end diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index da543180c9c..b5562a84db5 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -226,6 +226,7 @@ ci_pipelines: - daily_build_group_report_results - latest_builds - daily_report_results +- latest_builds_report_results ci_refs: - project - ci_pipelines diff --git a/spec/lib/kramdown/parser/atlassian_document_format_spec.rb b/spec/lib/kramdown/parser/atlassian_document_format_spec.rb new file mode 100644 index 00000000000..0ba4d430320 --- /dev/null +++ b/spec/lib/kramdown/parser/atlassian_document_format_spec.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +require 'spec_helper' + +context Kramdown::Parser::AtlassianDocumentFormat do + let_it_be(:options) { { input: 'AtlassianDocumentFormat', html_tables: true } } + let_it_be(:fixtures_path) { 'lib/kramdown/atlassian_document_format' } + + context 'markdown render' do + shared_examples 'render elements to markdown' do |base_name| + let(:json_file) { "#{base_name}.json" } + let(:markdown_file) { "#{base_name}.md" } + + it "renders #{base_name}" do + source = fixture_file(File.join(fixtures_path, json_file)) + target = fixture_file(File.join(fixtures_path, markdown_file)) + parser = Kramdown::Document.new(source, options) + + expect(parser.to_commonmark).to eq target + end + end + + it_behaves_like 'render elements to markdown', 'blockquote' + it_behaves_like 'render elements to markdown', 'bullet_list' + it_behaves_like 'render elements to markdown', 'code_block' + it_behaves_like 'render elements to markdown', 'emoji' + it_behaves_like 'render elements to markdown', 'hard_break' + it_behaves_like 'render elements to markdown', 'heading' + it_behaves_like 'render elements to markdown', 'inline_card' + it_behaves_like 'render elements to markdown', 'media_group' + it_behaves_like 'render elements to markdown', 'media_single' + it_behaves_like 'render elements to markdown', 'mention' + it_behaves_like 'render elements to markdown', 'ordered_list' + it_behaves_like 'render elements to markdown', 'panel' + it_behaves_like 'render elements to markdown', 'paragraph' + it_behaves_like 'render elements to markdown', 'rule' + it_behaves_like 'render elements to markdown', 'table' + + it_behaves_like 'render elements to markdown', 'strong_em_mark' + it_behaves_like 'render elements to markdown', 'code_mark' + it_behaves_like 'render elements to markdown', 'link_mark' + it_behaves_like 'render elements to markdown', 'strike_sup_sub_mark' + it_behaves_like 'render elements to markdown', 'underline_text_color_mark' + + it_behaves_like 'render elements to markdown', 'complex_document' + + it 'renders header id to html' do + source = fixture_file(File.join(fixtures_path, 'heading.json')) + parser = Kramdown::Document.new(source, options) + + expect(parser.to_html).to include('id="header-2"') + end + + it 'logs an error with invalid json' do + source = fixture_file(File.join(fixtures_path, 'invalid_json.json')) + + expect(Gitlab::AppLogger).to receive(:error).with(/Invalid Atlassian Document Format JSON/) + expect(Gitlab::AppLogger).to receive(:error).with(any_args) + expect { Kramdown::Document.new(source, options) }.to raise_error(::Kramdown::Error, /Invalid Atlassian Document Format JSON/) + end + + it 'logs an error if no valid document node' do + source = fixture_file(File.join(fixtures_path, 'invalid_no_doc.json')) + + expect(Gitlab::AppLogger).to receive(:error).with(/Invalid Atlassian Document Format JSON/) + expect(Gitlab::AppLogger).to receive(:error).with(any_args) + expect { Kramdown::Document.new(source, options) }.to raise_error(::Kramdown::Error, /Invalid Atlassian Document Format JSON/) + end + + it 'invalid node gets ignored' do + source = fixture_file(File.join(fixtures_path, 'invalid_node_type.json')) + parser = Kramdown::Document.new(source, options) + + expect(parser.to_commonmark).to eq "This is a second paragraph\n\n" + end + end +end diff --git a/spec/lib/object_storage/direct_upload_spec.rb b/spec/lib/object_storage/direct_upload_spec.rb index c3890c72852..c286a2e6fbe 100644 --- a/spec/lib/object_storage/direct_upload_spec.rb +++ b/spec/lib/object_storage/direct_upload_spec.rb @@ -60,6 +60,38 @@ describe ObjectStorage::DirectUpload do end end + describe '#get_url' do + subject { described_class.new(credentials, bucket_name, object_name, has_length: true) } + + context 'when AWS is used' do + it 'calls the proper method' do + expect_next_instance_of(::Fog::Storage, credentials) do |connection| + expect(connection).to receive(:get_object_url).once + end + + subject.get_url + end + end + + context 'when Google is used' do + let(:credentials) do + { + provider: 'Google', + google_storage_access_key_id: 'GOOGLE_ACCESS_KEY_ID', + google_storage_secret_access_key: 'GOOGLE_SECRET_ACCESS_KEY' + } + end + + it 'calls the proper method' do + expect_next_instance_of(::Fog::Storage, credentials) do |connection| + expect(connection).to receive(:get_object_https_url).once + end + + subject.get_url + end + end + end + describe '#to_hash' do subject { direct_upload.to_hash } diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 782a4206c36..5769e371478 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -2891,6 +2891,39 @@ describe Ci::Pipeline, :mailer do end end + describe '#test_report_summary' do + subject { pipeline.test_report_summary } + + context 'when pipeline has multiple builds with report results' do + let(:pipeline) { create(:ci_pipeline, :success, project: project) } + + before do + create(:ci_build, :success, :report_results, name: 'rspec', pipeline: pipeline, project: project) + create(:ci_build, :success, :report_results, name: 'java', pipeline: pipeline, project: project) + end + + it 'returns test report summary with collected data', :aggregate_failures do + expect(subject.total_time).to be(0.84) + expect(subject.total_count).to be(4) + expect(subject.success_count).to be(0) + expect(subject.failed_count).to be(0) + expect(subject.error_count).to be(4) + expect(subject.skipped_count).to be(0) + end + end + + context 'when pipeline does not have any builds with report results' do + it 'returns empty test report sumary', :aggregate_failures do + expect(subject.total_time).to be(0) + expect(subject.total_count).to be(0) + expect(subject.success_count).to be(0) + expect(subject.failed_count).to be(0) + expect(subject.error_count).to be(0) + expect(subject.skipped_count).to be(0) + end + end + end + describe '#test_reports' do subject { pipeline.test_reports } diff --git a/spec/models/event_collection_spec.rb b/spec/models/event_collection_spec.rb index 6d1954700bf..17cf328f852 100644 --- a/spec/models/event_collection_spec.rb +++ b/spec/models/event_collection_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' describe EventCollection do + include DesignManagementTestHelpers + describe '#to_a' do let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project_empty_repo, group: group) } @@ -10,6 +12,10 @@ describe EventCollection do let_it_be(:user) { create(:user) } let_it_be(:merge_request) { create(:merge_request) } + before do + enable_design_management + end + context 'with project events' do let_it_be(:push_event_payloads) do Array.new(9) do @@ -21,11 +27,13 @@ describe EventCollection do let_it_be(:merge_request_events) { create_list(:event, 10, :commented, project: project, target: merge_request) } let_it_be(:closed_issue_event) { create(:closed_issue_event, project: project, author: user) } let_it_be(:wiki_page_event) { create(:wiki_page_event, project: project) } + let_it_be(:design_event) { create(:design_event, project: project) } let(:push_events) { push_event_payloads.map(&:event) } it 'returns an Array of events', :aggregate_failures do most_recent_20_events = [ wiki_page_event, + design_event, closed_issue_event, *push_events, *merge_request_events @@ -54,6 +62,31 @@ describe EventCollection do end end + context 'the design_activity_events feature flag is disabled' do + before do + stub_feature_flags(design_activity_events: false) + end + + it 'omits the design events when using to_a' do + events = described_class.new(projects).to_a + + expect(events).not_to include(design_event) + end + + it 'omits the wiki page events when using all_project_events' do + events = described_class.new(projects).all_project_events + + expect(events).not_to include(design_event) + end + end + + it 'includes the design events' do + collection = described_class.new(projects) + + expect(collection.to_a).to include(design_event) + expect(collection.all_project_events).to include(design_event) + end + context 'the wiki_events feature flag is enabled' do before do stub_feature_flags(wiki_events: true) @@ -81,7 +114,7 @@ describe EventCollection do it 'can paginate through events' do events = described_class.new(projects, offset: 20).to_a - expect(events.length).to eq(1) + expect(events.length).to eq(2) end it 'returns an empty Array when crossing the maximum page number' do diff --git a/spec/models/snippet_input_action_spec.rb b/spec/models/snippet_input_action_spec.rb index 5e379a48171..87ce2dac8ba 100644 --- a/spec/models/snippet_input_action_spec.rb +++ b/spec/models/snippet_input_action_spec.rb @@ -8,12 +8,12 @@ describe SnippetInputAction do where(:action, :file_path, :content, :previous_path, :allowed_actions, :is_valid, :invalid_field) do :create | 'foobar' | 'foobar' | 'foobar' | nil | true | nil - :move | 'foobar' | 'foobar' | 'foobar' | nil | true | nil + :move | 'foobar' | 'foobar' | 'foo1' | nil | true | nil :delete | 'foobar' | 'foobar' | 'foobar' | nil | true | nil :update | 'foobar' | 'foobar' | 'foobar' | nil | true | nil :foo | 'foobar' | 'foobar' | 'foobar' | nil | false | :action 'create' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil - 'move' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil + 'move' | 'foobar' | 'foobar' | 'foo1' | nil | true | nil 'delete' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil 'update' | 'foobar' | 'foobar' | 'foobar' | nil | true | nil 'foo' | 'foobar' | 'foobar' | 'foobar' | nil | false | :action @@ -21,6 +21,12 @@ describe SnippetInputAction do '' | 'foobar' | 'foobar' | 'foobar' | nil | false | :action :move | 'foobar' | 'foobar' | nil | nil | false | :previous_path :move | 'foobar' | 'foobar' | '' | nil | false | :previous_path + :move | 'foobar' | 'foobar' | 'foobar' | nil | false | :file_path + :move | nil | 'foobar' | 'foobar' | nil | false | :file_path + :move | '' | 'foobar' | 'foobar' | nil | false | :file_path + :move | nil | 'foobar' | 'foo1' | nil | false | :file_path + :move | 'foobar' | nil | 'foo1' | nil | true | nil + :move | 'foobar' | '' | 'foo1' | nil | true | nil :create | 'foobar' | nil | 'foobar' | nil | false | :content :create | 'foobar' | '' | 'foobar' | nil | false | :content :create | nil | 'foobar' | 'foobar' | nil | false | :file_path diff --git a/spec/policies/group_policy_spec.rb b/spec/policies/group_policy_spec.rb index 6b17a8285a2..df398963655 100644 --- a/spec/policies/group_policy_spec.rb +++ b/spec/policies/group_policy_spec.rb @@ -661,4 +661,61 @@ describe GroupPolicy do end end end + + describe 'design activity' do + let_it_be(:group) { create(:group, :public) } + let(:current_user) { nil } + + subject { described_class.new(current_user, group) } + + context 'when design management is not available' do + it { is_expected.not_to be_allowed(:read_design_activity) } + + context 'even when there are projects in the group' do + before do + create_list(:project_group_link, 2, group: group) + end + + it { is_expected.not_to be_allowed(:read_design_activity) } + end + end + + context 'when design management is available globally' do + include DesignManagementTestHelpers + + before do + enable_design_management + end + + context 'the group has no projects' do + it { is_expected.not_to be_allowed(:read_design_activity) } + end + + context 'the group has a project' do + let(:project) { create(:project, :public) } + + before do + create(:project_group_link, project: project, group: group) + end + + it { is_expected.to be_allowed(:read_design_activity) } + + context 'which does not have design management enabled' do + before do + project.update(lfs_enabled: false) + end + + it { is_expected.not_to be_allowed(:read_design_activity) } + + context 'but another project does' do + before do + create(:project_group_link, project: create(:project, :public), group: group) + end + + it { is_expected.to be_allowed(:read_design_activity) } + end + end + end + end + end end diff --git a/spec/policies/project_policy_spec.rb b/spec/policies/project_policy_spec.rb index 6ec63ba61ca..c616e69deea 100644 --- a/spec/policies/project_policy_spec.rb +++ b/spec/policies/project_policy_spec.rb @@ -855,6 +855,28 @@ describe ProjectPolicy do end end + describe 'design permissions' do + subject { described_class.new(guest, project) } + + let(:design_permissions) do + %i[read_design_activity read_design] + end + + context 'when design management is not available' do + it { is_expected.not_to be_allowed(*design_permissions) } + end + + context 'when design management is available' do + include DesignManagementTestHelpers + + before do + enable_design_management + end + + it { is_expected.to be_allowed(*design_permissions) } + end + end + describe 'read_build_report_results' do subject { described_class.new(guest, project) } diff --git a/spec/serializers/test_suite_entity_spec.rb b/spec/serializers/test_suite_entity_spec.rb index bd88d235013..83d3086ea6b 100644 --- a/spec/serializers/test_suite_entity_spec.rb +++ b/spec/serializers/test_suite_entity_spec.rb @@ -2,36 +2,46 @@ require 'spec_helper' -describe TestSuiteEntity do - let(:pipeline) { create(:ci_pipeline, :with_test_reports) } +RSpec.describe TestSuiteEntity do + let(:pipeline) { create(:ci_pipeline, :with_test_reports) } let(:test_suite) { pipeline.test_reports.test_suites.each_value.first } - let(:entity) { described_class.new(test_suite) } + let(:user) { create(:user) } + let(:request) { double('request', current_user: user) } - describe '#as_json' do - subject(:as_json) { entity.as_json } + subject { described_class.new(test_suite, request: request).as_json } + + context 'when details option is not present' do + it 'does not expose suite error and test cases', :aggregate_failures do + expect(subject).not_to include(:test_cases) + expect(subject).not_to include(:suite_error) + end + end + + context 'when details option is present' do + subject { described_class.new(test_suite, request: request, details: true).as_json } it 'contains the suite name' do - expect(as_json[:name]).to be_present + expect(subject[:name]).to be_present end it 'contains the total time' do - expect(as_json[:total_time]).to be_present + expect(subject[:total_time]).to be_present end it 'contains the counts' do - expect(as_json[:total_count]).to eq(4) - expect(as_json[:success_count]).to eq(2) - expect(as_json[:failed_count]).to eq(2) - expect(as_json[:skipped_count]).to eq(0) - expect(as_json[:error_count]).to eq(0) + expect(subject[:total_count]).to eq(4) + expect(subject[:success_count]).to eq(2) + expect(subject[:failed_count]).to eq(2) + expect(subject[:skipped_count]).to eq(0) + expect(subject[:error_count]).to eq(0) end it 'contains the test cases' do - expect(as_json[:test_cases].count).to eq(4) + expect(subject[:test_cases].count).to eq(4) end it 'contains an empty error message' do - expect(as_json[:suite_error]).to be_nil + expect(subject[:suite_error]).to be_nil end context 'with a suite error' do @@ -40,27 +50,27 @@ describe TestSuiteEntity do end it 'contains the suite name' do - expect(as_json[:name]).to be_present + expect(subject[:name]).to be_present end it 'contains the total time' do - expect(as_json[:total_time]).to be_present + expect(subject[:total_time]).to be_present end it 'returns all the counts as 0' do - expect(as_json[:total_count]).to eq(0) - expect(as_json[:success_count]).to eq(0) - expect(as_json[:failed_count]).to eq(0) - expect(as_json[:skipped_count]).to eq(0) - expect(as_json[:error_count]).to eq(0) + expect(subject[:total_count]).to eq(0) + expect(subject[:success_count]).to eq(0) + expect(subject[:failed_count]).to eq(0) + expect(subject[:skipped_count]).to eq(0) + expect(subject[:error_count]).to eq(0) end it 'returns no test cases' do - expect(as_json[:test_cases]).to be_empty + expect(subject[:test_cases]).to be_empty end it 'returns a suite error' do - expect(as_json[:suite_error]).to eq('a really bad error') + expect(subject[:suite_error]).to eq('a really bad error') end end end diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb index 73c089334ed..d23d34e2951 100644 --- a/spec/services/event_create_service_spec.rb +++ b/spec/services/event_create_service_spec.rb @@ -275,15 +275,6 @@ describe EventCreateService do specify { expect { result }.not_to change { Event.count } } specify { expect { result }.not_to exceed_query_limit(0) } end - - context 'the feature flag is enabled for a single project' do - before do - stub_feature_flags(design_activity_events: project) - end - - specify { expect(result).not_to be_empty } - specify { expect { result }.to change { Event.count }.by(1) } - end end describe '#save_designs' do @@ -310,9 +301,7 @@ describe EventCreateService do expect(events.map(&:design)).to match_array(updated) end - it_behaves_like 'feature flag gated multiple event creation' do - let(:project) { created.first.project } - end + it_behaves_like 'feature flag gated multiple event creation' end describe '#destroy_designs' do @@ -332,9 +321,7 @@ describe EventCreateService do expect(events.map(&:design)).to match_array(designs) end - it_behaves_like 'feature flag gated multiple event creation' do - let(:project) { designs.first.project } - end + it_behaves_like 'feature flag gated multiple event creation' end end end diff --git a/spec/services/snippets/update_service_spec.rb b/spec/services/snippets/update_service_spec.rb index 7e6441ad2f9..22ddca5f345 100644 --- a/spec/services/snippets/update_service_spec.rb +++ b/spec/services/snippets/update_service_spec.rb @@ -349,6 +349,18 @@ describe Snippets::UpdateService do end end + context 'when snippet_file content is not present' do + let(:snippet_files) { [{ action: :move, previous_path: file_path, file_path: 'new_file_path' }] } + + it 'does not update snippet content' do + content = snippet.content + + expect(subject).to be_success + + expect(snippet.reload.content).to eq content + end + end + context 'when snippet_files param is invalid' do let(:snippet_files) { [{ action: 'invalid_action' }] } |