Download: 3.4.0

Documentation: 3.4.0

Release highlights

Important notes

JCraft JSch client library is disabled per default

Deprecated JCraft JSch client library is replaced with MINA SSHD client library per default. There is still option to switch to using JCraft JSch client library. Support for JCraft JSch will be removed in the next gerrit release.

Default support for Java 11

The java language level is now set to Java 11 by default for Gerrit.

  • Issue 13494; Generate a Java 11 Eclipse project by default

  • Update dev-{eclipse,intellij} development for Java 11.

Gerrit source code is still compatible with Java 8.

Schema changes

This release doesn’t contain schema changes.

The changes index version has been increased to version 61, new change search operators were added: mergedafter and mergedbefore.

To run off-line reindexing of the changes (optional):

  java -jar gerrit.war reindex --index changes -d site_path

By default the changes index is automatically rebuilt upon the Gerrit startup after the upgrade.

Zero-downtime upgrade

Gerrit supports zero-downtime upgrade from Gerrit v3.3 when configured using a high-availability configuration, when the Git repositories are stored in a shared filesystem such as NFS or similar.

For upgrading with zero-downtime, you should enable the rolling upgrade migration in gerrit.config on both Gerrit servers by setting the gerrit.experimentalRollingUpgrade to true.

During the zero-downtime upgrade, Gerrit end-users would not notice any outage or service disruption. They will be able to perform any read/write Gerrit operation on the GUI or using the Git protocol.

The zero-downtime upgrade consists of the following steps:

  1. Have Gerrit servers upgraded to v3.3 in high-availability configuration, healthy and able to handle the incoming traffic properly.
  2. Set gerrit.experimentalRollingUpgrade to true in gerrit.config on both Gerrit servers.
  3. Set the first Gerrit server unhealthy.
  4. Shutdown the first Gerrit server, upgrade to v3.4 and start Gerrit again.
  5. Verify that the first Gerrit server is working properly and then make it healthy again.
  6. Wait for the first Gerrit server to start serving traffic normally.
  7. Repeat steps 3. to 6. for the second Gerrit server.
  8. Remove gerrit.experimentalRollingUpgrade from gerrit.config on both Gerrit servers.

Downgrade

Downgrade to any Gerrit v3.3.x release is possible, but requires the following manual steps:

  1. Shutdown a migrated Gerrit v3.4.x server
  2. Run Gerrit v3.3.x init
  3. Startup Gerrit v3.3.x server

Breaking changes

is:mergeable predicate is disabled per default.

Computing is:mergeable has a O(N^2) runtime computation complexity depending on the number of open changes on a branch and on the size of the changes. Hence skip this computation per default to avoid the associated runtime effort.

Most Gerrit installation already disabled this feature and thus wouldn’t need to change anything. Otherwise, to restore the previous behaviour this option: change.mergeabilityComputationBehavior should be changed to API_REF_UPDATED_AND_CHANGE_REINDEX.

HTML plugin support is removed

HTML plugins should be migrated to JavaScript plugins. This also implies Polymer 2 plugins wouldn’t work any more. See also this announcement for more details.

These unused JavaScript Plugin API methods were removed:

  • plugin.annotationApi().setLayer(), plugin.annotationApi().enableToggleCheckbox()
  • plugin.changeMetadata().*
  • plugin.changeReply().send()
  • plugin.eventHelper().on(), plugin.eventHelper().captureClick(), plugin.eventHelper().captureTap()
  • plugin.project().*
  • plugin.settings().*
  • plugin.styles().*
  • plugin.theme().*
  • plugin.get(), plugin.post(), plugin.put(), plugin.delete(): Replaced by their counterparts in plugin.restApi().

ChangeAttributeFactory is removed

As noted in the v3.3 release notes, ChangeAttributeFactory has been removed.

Native packaging

New features

Checks UI

Gerrit now has a native UI for displaying run/result info from builds, tests, analyzers, etc. The data for this new Checks UI must be provided by JavaScript plugins using the Checks API. Checks information will be summarized by chips below the commit message. Detailed information is shown on a dedicated Checks tab next to the Files and Comments tabs.

Unresolved Comments ported to latest patchset

Unresolved comments that were left on older patchsets will now also be shown on newer patchsets. The backend provides two new endpoints ported_comments/ and ported_drafts/ for the UI to retrieve the data and for showing the comments in the correct position.

Comment Chips and Context

Comment state (resolved, unresolved, draft) is summarized by chips below the commit message. The Comments Tab and the Change Log will not just show the comment thread, but also the snippet of code (where the comment was made) as context.

REST APIs

  • Accounts
  • Changes
  • Groups
  • Projects

End-to-end tests

Plugin changes

Gerrit UI changes

  • Limit overview image interactions to primary mouse button

  • Fix: cannot select names in hovercards in the reply dialog

  • Fix thick border on votes in reply dialog

  • Add a simple hovercard for check runs

  • Add hover states to summary chips

  • Align relation chain section with the change info section and button

  • Show ‘show all’ button only when commit message has 17 or more lines

  • Show hovercard actions in submit requirement account chips

  • Update UX for selecting and filter checks

  • Show hovercard actions in change log

  • Fix condition check of show_file_comment_button

  • Do not try to open reply dialog when change is not loaded

  • Fix Show all button on related changes for wide screen

  • Explicitly refit overlay for cherry pick dialog

  • Align text and radio button in cherry pick dialog

  • PolyGerrit: Simplify some regular expressions

  • Redesign Show all button in related changes

  • Add View Diff button to comment context

  • Fix show more button

  • Comments tab - radio buttons

  • Issue 14057; Add check for undefined commentThread property in submit dialog

  • Do not render confirm submit dialog until it is opened

  • Show unresolved comments in the confirm submit dialog

  • Show View Diff button for merge change messages

  • trigger range highlight on long range comment chip hover

  • Issue 13905; Fix attention icon in reply dialog

  • Enable prev/next button on first/last file to go to change page

  • A11y - when dialog opened make rest of page unfocusable

  • Add feedback button to top bar

  • Fix the “View Diff” button padding

  • Disable cherry pick button if branch is not specified

  • Add tooltip when Send Reply button is disabled

  • Do not show quick approve button on merged changes

  • Use RestApiService instead of Polymer element

  • Move chunks - UX improvements

  • Show quick-approve button even when change is already approved

  • A11y - Shortcuts tables in dialog

  • A11y - return focus when closing dialog

  • Provide clearer above / below mapping for context expansion buttons

  • Ensure changes with outdated patchsets have a disabled submit button

  • Add Publish button to editor

  • Update Save button to Save & Close file in edit view

  • A11y - Fix reading whole diff preferences dialog

  • Replace polymer readonly attribute with ts readonly

  • Issue 13511; Fix repositioning the reply dialog when the attention section expands

  • Issue 13506; Change the tooltip of the ‘MODIFY’ button to be fancier

  • Fix ‘Send’ button being enabled even without the user making any changes

  • Add more functionalities to hovercard

  • Change when and how attention can be modified in the reply dialog

  • Use a selection chip also in the attention summary of the reply dialog

  • Issue 13427; Do not show attention related hovercard actions to guest users

Documentation changes

  • Documentation: SHA-1 iso. SHA1

  • Issue 14295; Tidy up cross-repository-changes documentation

  • Add user privacy documentation

  • Document how to get pretty-printed JSON for REST calls

  • Fix image url in documentation page

  • Documentation: avoid * in ref expressions.

  • Document a 24h waiting period for features/API extension

  • Update the documentation of ReviewInput.tag

  • Document when cherry pick fields in ChangeInfo are set

  • Fix documentation of config_web_links field in ProjectAccessInfo

  • Add documentation for change.maxFiles and change.maxPatchSets

  • Add user documentation for ported comments

  • DeleteTags: document corner case behavior

  • CreateTag: document why we don’t check for visibility

  • CommitsCollection: document parseBody() call

  • Tidy up dev-plugins documentation table of files

  • Add more details of what a plugin’s documentation contains

  • Fix documentation for MoveAPI keepAllVotes option

  • Issue 11621; Document that a CVE should be filed for security issues

  • Document that external-ids paths variably nested

  • Documentation: clarify how the default branch is set

  • Document log4j config override

  • Document how to generate the html documentation

  • Replace obsolete ACCOUNT_GROUPS table in documentation

  • Document how vacant non-Google ESC seats get refilled

JGit changes

  • Update JGit to c82818e0e

This update includes this change, which (when configured) will make repacking with Gerrit less racy by ensuring a pruned object is still available for some amount of time after repacking finishes.

  • Update jgit to 9bfb0f3a4

  • Update jgit to 4560bdf7e

  • InitJgitConfig: Git protocol v2 is enabled per default

  • Add passing the ‘compression-level’ argument to the JGit ArchiveCommand

  • Update JGit to 59420886e98bfcb574511cea191ccb3953004610

  • Update JGit to 415788df2

  • Issue 13544; Upgrade JGit to 5cd485e5

Elasticsearch changes

  • Move elasticsearch back to WORKSPACE

  • Elasticsearch: Add support for configuring REST client timeouts

Other dependency changes

  • Issue 14075; Bazel: Specify exact dependencies for licenses rules

  • Upgrade Flexmark to 0.50.42

  • Upgrade jackson-core to 2.12.0

  • Upgrade protobuf version to 3.14.0

  • Upgrade jetty version to 9.4.36.v20210114

  • Upgrade rules_nodejs version to 3.2.3

  • Upgrade MINA SSHD version to 2.6.0

  • Trim dependencies in httpd/auth/restapi/BUILD

Other core changes

  • Issue 13140; Issue 14330; OpenID: Remove support for Yahoo! OpenID provider

  • ChangeInfo: change _number from int to Integer

  • PatchScriptFactory: Access Metrics constants in static way

  • MissingMetaObjectException: Add default serialVersionUID

  • Flush file diff cache after change Ic1eeccfeb6b18f6

  • Support panning magnified image by dragging

  • Add comments on boolean arg for calls of ProjectLevelConfig#getWithInheritance

  • Re-render diff when useNewImageDiffUi is changed

  • Include the boy scout rule in Gerrit contribution guide

  • Add the meta_diff endpoint to the Change API

  • Indicate soft hyphen in diff

  • Use MINA sshd library for key generation and export

  • Issue 12599; Git transport: Switch to using Apache MINA ssh client per default

  • Issue 12599; Git transport: Add option to switch to using MINA ssh client

  • Update file status colors

  • Make rows in change log with same height (36px)

  • Fix file size for executable files in new diff cache

  • Ensure image diff data URLs are accepted by goog.html.SafeUrl

  • Issue 14301; Fix change reload not loading because js error in checks service

  • Issue 14300; Revert “Revert “Convert gr-app_test to typescript””

  • Convert SectionSortCache to use get/loader instead of getIfPresent/put

  • Add comments chips to tab navigation

  • Issue 14300; Revert “Convert gr-app_test to typescript”

  • Expose auto-value-gson in plugin API

  • Improve vote chips in dark theme

  • Let image diff builder know when to use new UI

  • Add border outline for +1, -1

  • Glossary terms regarding Events

  • Improve alert message for syntax highlighting turned off

  • Show both ‘Expand All’ and ‘Collapse All’ if some files are expanded

  • Add the missing green-400 color

  • Add basic overlay / blink image viewer

  • Fix regression - enable insensitive search for repo search

  • Introduce a glossary section

  • Move all soy templates files to unique namespaces

  • Add commitSha to the Checks API fetch() interface

  • Load multiple groups more efficiently

  • Persist group cache by uuid

  • Preload comments with context

  • Add simple attempt support to Checks UI

  • Update the header of the Checks tab

  • Specify background color for dark theme for ported comments

  • Move InternalGroup to the entities package

  • Add an internalId to check runs and results

  • Fix expanded result rows to not react on click to expand/collapse

  • Issue 12639; Bump guice version to 5.0.1

  • Compute AutoMerge commits synchronously when processing merge commits

  • Reduce tooltip delay from 500 to 200 ms

  • Add comment context to draft comments

  • Add 6 colors for check result tags

  • Update colors

  • SubmitRecords: Accept empty records from the change index

  • ChangeData: Disallow computing submit rules when serving query results

  • Fix computation of ChangeData#merge

  • Describe Timing reporting constants

  • Adapt old path in FileInfoJsonNewImpl to old diff cache representation

  • Fix NPE in FileInfoJsonComparingImpl when base = null

  • Add ChangeInfo to the ChangeData that the Checks API send to plugins

  • Introduce reporting constants - Timing

  • Navigate to previous unreviewed file when pressing “p”

  • Add timeout to DiffOperations

  • Switch GetDiff to use the new diff cache

  • Add spacing between party poppers and text in the comment tab

  • Add more spacing between related changes sections

  • Stop container jump on show all/less in Other Labels

  • Implement host-level default for ‘HEAD’ when new projects are created.

  • Add user guide for using topics.

  • Fix auto-merge detection in new diff cache

  • Replace tap by click event

  • Ignore new work-in-progress status if it hasn’t changed

  • Add frontend reporting of “usp” URL parameter

  • Add tracking to the global Gerrit object

  • Fix endpoint parameters for check result rows

  • Fix typing of ‘reply’ event

  • Add link that mentions bots to the attention set user guide

  • Introduce reporting constants - Execution

  • Lowercase C in ‘No Comments’

  • GrCursorManager: One-way-bind index

  • Move GrCursorManager element hooks to parents

  • Issue 14214; Fix alert text color

  • Replace this.async() with setTimeout()

  • Dark launch the new diff cache for the list files endpoint

  • Nothing to be forward-compatible with Lit 2

  • Replace at-/de-tached with dis-connectedCallback

  • Introduce reporting constants - Life Cycle

  • Related changes sections use all space if needed

  • Autocomplete for adding topic

  • Update designdoc to current state

  • Show toast when user stars a change

  • Issue 14199; Add attention operator for auto-complete

  • UI improvements for show all bar in commit message

  • Clean up ported comments experiment

  • Fix tracking of plugin-api calls

  • Update logic for clicking checks chips in the summary

  • Adapt old/new paths of the new diff cache to current Get Diff behaviour

  • Add tooltips to check links

  • Do not mark file reviewed when navigating using “n”

  • Read SubmitRecords back from NoteDb if allowClosed is false

  • PatchScriptFactory: Add logging statements for dark launch in mismatch

  • Minor improvements to ported comments message without range

  • Show arrows that indicate collapsed ancestors/descendents

  • Add count of results to section headers of check results

  • Add a ‘usp’ URL parameter that can be used for tracking

  • Hide comment context if screen width is less than 1200 px

  • Minor improvements to comment context

  • Add a request parameter to the Get Diff endpoint to use new diff cache

  • Issue 12983; Allow users to specify default branch when creating a repo

  • Add commit message to ChangeData of Checks API interface

  • Move show file comment to RenderPreferences

  • Convert ranged comment and move chips into hints

  • Implement syntax highlighting for comment context

  • Only show run and results filters in new Checks UI when needed

  • Modify the GetDiff endpoint to use the redesigned diff cache

  • Use Python 3 in populate-fixture-data.py

  • Fix reading empty subsections from plugin config

  • Add tracking for all frontend API calls

  • Add regular polling for checks

  • Implement patchset picker for new Checks UI

  • ProjectLevelConfig: Cache parsed config and avoid reparsing

  • Feedback for triggered actions

  • Fix tiny performance nit in ApprovalInferance

  • Enforce size limits for post submit diffs

  • Do not call Diff Cache when not needed

  • New Change Summary - fixing styling issues

  • Use StringBuilder instead of String concatenation to avoid O(n^2) performance.

  • Add separator between date and patchset in change log

  • Add a loading state to the checks model and use it for the summary

  • Fix how the change gets updated in the change-model and -service

  • Issue 14141; Add more data to successful runs in the new Checks UI

  • Update all rows of a change on the dashboard when one is changed

  • Handle checks summary chip clicks by filtering the tab accordingly

  • ReviewJson: Load SubmitRecords from ChangeData to avoid reevaluation in loop

  • Fix caching for SubmitRecords in ChangeData

  • Implement expanding and collapsing of run and result sections

  • Replace all colors with css vars defined in app-theme

  • Fix chip styles in Checks UI for dark theme

  • Introduce components for new image diff UI

  • Fix alignment of runnable chip title

  • Retry the creation of auto-merge commits more persistently

  • Use primary background color var to support dark theme

  • Retry submits more persistently

  • Add ‘parentof’ operator that matches parent changes for a change

  • Allow CCs to change the attention set

  • Avoid using underscores for private properties

  • Implement filtering and lazy loading of checks

  • New change summary - align count nonvisible changes

  • Change the long comment threshold from 5 to 10.

  • Adding sameTopic, mergeConflicts, cherrypicks to new change summary

  • Fix rebase action in new change summary

  • Expose instanceId in GerritInfo

  • Add readonly to restApiService property

  • Properly check the required ‘action’ property

  • Change the Checks fetch API to send a data object

  • Add a plugin endpoint to the expanded check result

  • Add support for top-level actions

  • Do not render more than 5 links in one check result row

  • Fix the gap between commit message and summaries

  • Limit total lines of context shown

  • Highlight the entire line in comment context for line comments

  • Click on comment chip will select same category in comments tab

  • Move render only properties to RenderPreferences

  • Filter out merged changes when submitting a topic

  • Issue 14102; Return empty context if the comment range is outside file boundaries

  • GetChange: provide meta=SHA1 option

  • Change expand diff context shortcut to be a toggle

  • New Change Summary - small fixes

  • Disallow creating projects with Gerrit internal refs as branch input

  • Add context padding to comment context request

  • Add zero state messages for Checks and Comments

  • Reduce the gap between commit message and summaries

  • GetChange: populate ChangeInfo.metaRevId with the NoteDb meta ref SHA1

  • Change cursor to pointer for run selection chips

  • Fix ‘Completed without results.’ font-weight

  • Highlight comment range

  • Vertically align first run section with first result section

  • Show the lines of code around a comment as context

  • Adding Related changes to new change summary

  • Request comment context along with the comments from server

  • Exclude unneeded ref prefixes when getting refs

  • Set commit message min-height to 100px

  • Add resolved text to comment

  • Filter robotComments without Human Reply

  • Change horizontal padding of summary chip from 4px to 8px

  • Add experiment ID for new image diff UI

  • Support experiment features in Gerrit backend

  • Create and move plugin APIs to api/ folder

  • Issue 14080; Split configs for RevisionDiffIT to different subclasses

  • Manually revert RefFilterOptions.returnMostRecentRefChanges

  • Check for old and new file modes in FileDiffCacheImpl

  • Handle single file diffs for non-existent files

  • Fix the alignment of the Change Info section

  • Change SAVE to SEND AS WIP

  • Set min-width for search

  • Add handling for run actions in new Checks UI

  • uploadPackAuditEventLog: Avoid commit timestamp mismatch

  • Find out why the error-manager initiates page reloads

  • Fix bug: don’t lookup in NoteDb when reading cached changes

  • InternalServerWithUserMessageException: Add serialVersionUID

  • Issue 14046; Fix bug: Do not change WIP status when not needed during rebase

  • Fix long range comment selection on Firefox

  • Clarify LOST value of LineNumber

  • Fix the height and background color of comments tab header

  • Fix the metadata reviewers line height

  • Small styling fix of successful check summary

  • Collapsing related changes

  • Issue 13836; Add a css var for coloring change log entries by service users

  • Fix account overflow problems in Change Log

  • Fix bug: also advertise refs/changes/../robot-comments when applicable

  • Fix bug not loading robot comments notes

  • Show all bar when editing commit message

  • Clean up auto reload dashboard experiment

  • Fix CmdLineParser.MyParser to not throw ClassCastException

  • Add option to dismiss new messages toast

  • Issue 13717; Add reviewers to attention set when replying to WIP changes

  • Some small checks summary UI tweaks

  • Fix a tiny bug in FileDiffCache for commit messages

  • Add selection of check run chips

  • Update comment tooltip if shortcuts are disabled

  • Drop outdated comments from Change.java

  • Configure maximum allowed value for the number of context padding lines

  • Add the context-padding parameter to the comment context

  • Issue 13571; Suppress keyboard shortcuts if user has disabled them

  • Revise the summary of the new Checks UI

  • Inline entity protobufs directly into cache protobufs

  • Fix FilesInCommitCollection when parent = 0

  • Add to missing declare statements

  • New Change Summary - Submitted together

  • FileEdits: Simplify instance creation

  • Retry more often on submit

  • Show avatars for unresolved comments authors

  • Extract persistent cache base factory

  • Move DiffLayer to the API

  • Move move-link-click event details to API

  • Move LineNumber to API

  • Move ContentLoadNeededEventDetail to the API

  • Make GrDiffGroupRange use LineRange

  • Fix being able to reload the Checks UI

  • Comments summary - unresolved comments + styling

  • Introducing new component for relation chain

  • Use a new custom exception instead of StorageException on submit

  • Left align ‘No changes need your attention’ message’

  • Add a RefFilterOption to always return all most recent ref changes

  • Send all user’s votes instead of only changed votes

  • Add single file diff to the DiffOperations interface

  • Issue 14034; Fix bug of removableReviewers without votes

  • Add extra width to display full names

  • Resolve TODO about removing SPECIAL_PATCH_SET_NUM

  • Comments Summary - initial work

  • Issue 13392; Fix text overflow in account labels

  • Issue 12536; Auto focus on the first input field

  • Issue 14000; Fix being able to flip your own attention flag

  • Fix font-weight in new Checks UI

  • LocalDiskRepositoryManager: Don’t compute base path before it is needed

  • Handle the comment context for merge list

  • Fix comment context for commit messages

  • New change summary - commit message with show all bar

  • Apply same spacing rules for long range chips as in move detection

  • Add message that files were not changed on submit

  • Fix loading of plugin provided coverage layer

  • Allow user to re-vote their same vote

  • ReviewerRecommender: Fix an imprecise comment

  • Add author name to new messages toast

  • Issue 2335; Add repository browser link to repo detail page

  • Adapt getRefs + filter to use the more efficient implementation

  • Use quotes in search query only when neccessary

  • Use the redesigned diff cache in the list files endpoint

  • Fix diff cursor side for chunks on first or last line of file

  • Add undefined check for accessing account id

  • Change linked URL for topic

  • Return the commit message and merge list for auto-merge with > 2 parents

  • Prevent duplicate ranged comment chips on rerender

  • Update message text in ported comments

  • Replace the placeholders in checks tab with something more decent

  • Allow posting the same vote on a new patchset

  • Do not show fake runs by default, but allow them to be toggled

  • Introduce material web components for use

  • Prevent skipping chunks on first or last line of file

  • A11y - announce that change is in edit mode

  • Propagate error’s text received from backend to a plugin

  • Add an option for checks to provide HTML results

  • Issue 12838; Add manual sync of cursor for gr-change-list

  • Move CommentRange to api/

  • Move GetOAuthToken out of the core restapi

  • Return empty comment context if line and range info are not available

  • Add basic support for expanding a checks row

  • Fix issue with rounding in calculation of time duration

  • Reload dashboard when visibility changes

  • Issue 13970; Increase the memory allocation for acceptance tests to 512m

  • Move the Side enum to the API

  • Reload ported comments when patchset picker is changed

  • Issue 13914; Prioritize ‘ADDED’ entries over ‘DELETED’ for file diffs

  • Refine the Checks Results UI

  • A11y - Each page should have only one main

  • Fix getSelection error

  • Reland: Use LoadingCache#getAll in AccountCacheImpl

  • Adapt voting chips to new chip style sizing

  • Handle clicks on new checks chips

  • Refine the UI of the checks chips

  • Add long range comment chip

  • Add ported drafts to comment count string

  • Throw one exception for both unresolvable commits and permission denied

  • Move OAuth and LDAP support out of server target

  • Add lit elements for Runs and Results

  • Only allow involved users to change the attention set

  • Disallow creating branches in Gerrit internal or tag refs namespaces

  • Create Branch: clarify that BranchInput and URL should match for ref

  • Add tracking when user navigates to original comment

  • Propagate the exception cause in CherryPickChange#cherryPick

  • DeleteRef: clarify ‘prefix’ argument

  • Make code compile in Eclipse

  • Rebase: Include conflicting files into the conflict response

  • Allow rebase with conflicts

  • Exempt JimFS from Library-Compliance.

  • tools/coverage.sh: Expand bash aliases and source bash profile

  • Add handling for Commit message and Rebase change messages

  • Add handling for ported comments with side=Parent

  • CheckAccess: print a useful message if no rules apply

  • restapi/project: move CheckAccessReadView into CheckAccess

  • restapi/project: add some comments

  • restapi/accounts: clarify permission related behaviors

  • Introduce the new DiffsOperations interface

  • Replace enable_context with enable-context in docs

  • Set path to null after filling the comment context

  • Allow users to select which changes to cherry pick

  • Create enum for the progress status of cherry picked change

  • Expose the entire commit message instead of only the subject

  • Disallow creating changes on internal Gerrit refs

  • Filter disabled experiments from settings view

  • Add the file diff cache

  • ExternalUser: Allow specifying a PropertyMap

  • Expose email addresses for ExternalUsers

  • Increase visibility of failed retries

  • Avoid passing @Singleton to args4j

  • Move ExternalUser from change.query into server package

  • Add status chip to file dropdown in diff view

  • Issue 13571; Add preference to disable all keyboard shortcuts

  • Update _computeMessageContent to use optional properties

  • Add diff between patchset N vs N - 1 on uploaded messages

  • Use current timestamp for creating group

  • CurrentUser: Expose set of ExternalId.Keys

  • GroupBackend: Accept CurrentUser instead of IdentifiedUser

  • CreateChange: Allow specifying correct project

  • Take empty arrays into account to break down chunks

  • Disallow creating changes on NoteDb refs

  • Fix compile error because of required new actions parameter

  • Fix unquoted properties of HTMLElementEventMap

  • Verify destination change of cherry-pick before trying to update it

  • Fix the z-index of the main header

  • Add top-level actions for Checks API

  • Allow porting comments to contribute to comment count string

  • Update comment route to handle comments created with side=PARENT

  • Only request ported comments when experiment is enabled

  • Add checks service

  • Add a model for router and change

  • Update existing change on cherry-pick with CommitApi

  • Implement mergedafter and mergedbefore change search operator

  • Change the default permissions from READ on refs/* to refs/heads/*

  • Support refs/users/self for the GET branch rest endpoint

  • Fixes for tools/coverage.sh

  • Adopt last updated time predicates to reuse for merged time predicates

  • Add an extension point to extend the change message on post review

  • Port drafts across patchsets

  • New change summary - introduce edit pencil

  • Fix PluginLogFile to not open multiple appenders when run in parallel

  • Port comments across patchsets

  • Fix for text selection in comment

  • Hide quick-approve for your own change or if you have already given max vote

  • Move __editing property to be part of only UIDraft

  • Add missing parameter to getThreadsBy* call

  • Add an option to keep votes when moving the change to another branch.

  • Clean up error reporting

  • Issue 13770; Do not add owner to the attention set when added as reviewer

  • Define a default errFn for REST API calls from plugins

  • Convert commentSide to diffSide in GrCommentThread

  • Move chunks: Add links to line numbers

  • Change all components to use the service for rest-api-interface

  • Add a service for rest-api

  • Set AutocompleteSuggestion property value to be string

  • Expose the mergedOn date of a change in ChangeNotes

  • Ignore no-unused-vars rule on args pattern ^_

  • Do not collapse lines of code with less than 4 lines

  • Get rid of some globals

  • Avoid throwing IllegalArgumentException when failing to parse an enum

  • Extend PatchSetWebLink to include subject and branch name

  • Replace non-standard event.path with event.composedPath

  • Show Submitted Date in change summary

  • Issue 13728; Fix dashboard not showing up for not-logged in user

  • A11y - improve announcing

  • Add a constant for ‘current’

  • Issue 13734; Fix the change message for removing cc

  • Move java_tools javac argument into tools parameter.

  • Fix A11y regression

  • Fix DynamicOptions to support a custom bean

  • Exempt guava from LC review

  • New change summary ui - flag, metadata

  • Do not re-initialise toast displayed time when navigating

  • Add braces to arrow functions returning void

  • Add simple visual distinction for move control text

  • A11y - Fix tabbing out of searchbar

  • Replace comment route in url bar with meaningful url

  • Clean-up ChangeNotesCache.Weigher

  • Add basic scaffolding for the checks tab

  • Add ‘prefer null’ to frontend style guide

  • Wrap isAtStart/End() in GrDiffCursor

  • Move some of the old diff cache entities to a new package

  • Add the git file diff cache

  • Make isAtStart/End() return true when no stops

  • Show all comments upon creation if user had hidden them

  • Show robot id for robot comments in comment card

  • Pass on CursorMoveResult

  • Show reviewer on comment tooltip

  • ChangeInfo: Serve reviewers when LABELS are requested

  • A11y - Improve diff a11y

  • Show alert when syntax highlighting is turned off

  • Improve description of moved chunks

  • Fix empty filter handling in list-view

  • Issue 13689; Bazel: Fix eclipse project generation

  • Fix Shift-A shortcut for hiding the left side of the diff

  • Update stops when a diff starts or stops loading

  • Make show_on… fields boolean

  • ProjectConfig: Write resolved groups to file

  • ChangeNotes: Don’t use ChangeIndex when we can avoid it

  • Issue 13612; Fix bazel run_shell usage for newer versions

  • Issue 13669; Remove –line-height-code in favor of calc() rules

  • Reduce boiler plate for event listening

  • When added as author, be added as CC and not reviewer

  • auth-check: Set content length only if authorization is valid

  • Add new ChecksApi to PluginApi

  • Treat spaces as ordinary characters in diff view

  • Issue 13658; Convert comment counts to comment thread counts around the UI

  • Specify line-height for code in terms of rem

  • Refuse to expand skip groups with WHOLE_FILE

  • Fix showing “Add Patchset Description” for users that are not logged in

  • Support diffing for octopus merges against a specific parent

  • Fix broken link to release notes of 2.2.2 in prolog cookbook

  • Update developer list in Maven pom files

  • Abort cursor movements across a loading diff

  • Issue 7458; Fix iron-dropdown positioning

  • Abort cursor moves via a sentinel, not a callback

  • Don’t unset scroll on non-existant stop

  • ported draft comments: Require authentication

  • Allow multiple plugins to provide coverage data

  • Hide patch file download when the commit has multiple parents

  • Add support to skip chunks

  • Issue 13336; Support accessing other users’ named queries

  • Only request ported drafts if user is logged in

  • Catch errors in getPortedComments request

  • Allow adding and removing invisible users to the attention set

  • Issue 13336; Support to query for user specific named destinations

  • Ensure users are active on the change when adding to attention set

  • Use ChangeData in LabelJson

  • Add latency tracking for porting comments

  • Add hasDrafts property to re-compute attention set

  • Fix headline for user queries for users without name

  • A11y - headlines for Diff Page

  • A11y - headlines for Change Page

  • Flip the defaults of the attention and assignee flags

  • A11y - headlines for Dashboard Page

  • Add the GitModifiedFilesCache and ModifiedFilesCache

  • Add constant for Service Users

  • Linkify branch name in repo detail list

  • Do not navigate to Base vs X if X is Base and file is unchanged

  • Submit emails should always be sent

  • Issue 13522; Fix topic creation in command line to send a topicEditedEvent

  • Improve message if submit fails due to non-fulfilled submit requirements

  • Add fatal to consistency and validation error enums

  • Add keyboard shortcut ‘f’ to open file list in diff view

  • Fix DefaultPermissionBackend#absentUser to work outside the request scope

  • Issue 13543; Fix navigate back to change page with ‘[’ on first diff.

  • Update mixins to avoid compilation issues

  • Required fixes to match internal google rules

  • Ensure that all assignment to window.Gerrit properties are safe

  • Use overridden ChangeEmail#add instead of OutgoingEmail#add

  • Show comment in viewport when navigating to Base vs X

  • Do not skip lines marked as dueToMove

  • Replace parseInt() with Number

  • Fix TseTse errors

  • DefaultPermissionBackend: Reuse current user where possible

  • Add event detail interfaces for dispatchEventThroughTarget

  • Replace “Since” by “Waiting”

  • Fix patchset comparison when adding coverages

  • Compute known groups lazily when writing groups to the trace

  • Fix TseTse errors.

  • Toggle default to show unresolved comments

  • Do not add reviewer to the attention set when they add themselves

  • Fix attention set tip not showing up

  • Add email notification option ATTENTION_SET_ONLY

  • Add more fine logging to SubmitStrategyOp

  • Replace dispatchEvent with dispatchEventThroughTarget

  • Add a header about attention set for all change emails

  • IdentifiedUser.RequestFactory#runAs allow passing properties

  • Allow user preference to receive emails only when in attention set

  • Fix TseTse error

  • Convert patchNum into integer if possible

  • Bold the user name, if they are in the attention set

  • Fix showing the CC section in the attention modify section

  • Change attention set logic to take unresolved state into account

  • Do not add the owner to an otherwise empty attention set

  • Fix “Do not update attention set” message

  • Do not rely on SortedMap / Set semantics for Flogger tags

  • Cache the comment context

  • Add ‘Since’ and ‘Submitted’ columns to dashboard sections

  • Change the sorting of changes in the ‘Your Turn’ dashboard section

  • Highlight the dashboard rows with attention as reviewer

  • Use auto-value-gson

  • Maintain all attention set updates in ChangeNotesState

  • ReceivePackRefCache, locate patch-sets instead of refs

  • Include repo config into CommitReceivedEvent

  • PostWatchedProjects: Throw BRE in case of empty input

  • CheckAccess: Return ACL debug logs

  • download-commands: use unqiue constants for each download command

Bugfix releases

3.4.1 (in development)

  • Breaking changes

    • Elasticsearch: Support for EOL version 7.4 is discontinued, as it became EOL in early April.