Create release notes for Gerrit 3.10

Change-Id: I6c5a7439b6cbbd342eb8f627162d15e30ca88e87
diff --git a/pages/site/releases/3.10.md b/pages/site/releases/3.10.md
new file mode 100644
index 0000000..4eadc21
--- /dev/null
+++ b/pages/site/releases/3.10.md
@@ -0,0 +1,422 @@
+---
+title: "Gerrit 3.10.x"
+permalink: 3.10.html
+hide_sidebar: true
+hide_navtoggle: true
+toc: true
+---
+
+## Release highlights
+
+### Rebase merge commits
+It's now possible to rebase merge commits directly from the UI.
+
+### Further improve Suggest Fixes
+It's now possible to have plugin generated suggested fixes directly in the
+UI. This opens the door for AI integration in the review process with Gerrit
+Code Review.
+
+Please see more details
+[here](https://gerrit-review.googlesource.com/Documentation/user-suggest-edits.html)
+
+### Import changes from other servers
+Imported projects from other servers is now fully supported, including also
+queries by change number on Lucene.
+
+### List enabled features/experiments via REST API
+It's now possible to list all experiments currently enabled on a Gerrit server
+by hitting the `config/server/experiments` endpoint. Please see more details
+[here](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#list-experiments)
+
+### Index management is now more accessible
+A number of rest endpoints have been added to simplify management and
+observability of Gerrit indexes. It's now possible to:
+- [List
+  indexes](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#list-indexes)
+- [Get a
+  index](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#_get_index),
+  along side information on it's version.
+- [Create
+  snapshots](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#snapshot-index)
+  of the index. These can then be used as backups of the index.
+- [Re-index an index
+  version](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#_reindex_an_index_version).
+  It is also possible to specify whether to re-use up-to-date index documents.
+
+### Less email notifications
+Attention has been put on reducing the number of email notifications that Gerrit
+users receive even when no actions need to be taken.
+
+- Gerrit no longer send emails to everyone when additional reviewers or CCs are
+  added. Please note, this is also a breaking change, see more details on the
+  change, [Change 400822](https://gerrit-review.googlesource.com/400822)
+
+- Only add owner and uploader to the attention set if the label is copied over to
+the latest patchset, avoiding emails for votes on older patchsets that don't
+affect the latest one. The reason for the user being in the attention set is
+also automatically updated.
+
+- Stop always cc'ing all "reviewers by email", as otherwise they receive more
+emails than intended.
+
+### Support project~changeNumber when querying for changes
+So far querying changes using the `change:` predicate did not
+allow to use the `project~changeNumber` format. However, since
+[Change 387794](https://gerrit-review.googlesource.com/c/gerrit/+/387794) this is the default ID
+format returned in the ChangeInfo. Being able to use it directly for
+further queries would be advantageous.
+
+i.e. https://gerrit-review.googlesource.com/q/change:gerrit~399319
+
+This reinforces the concept that `project~changeNumber` should be the Id to use
+when trying to unique identify changes. This should be preferred to
+`project~branch~changeId` as this can theoretically contain duplicates, as
+specified in [Issue 313935024](https://issues.gerritcodereview.com/issues/313935024)
+
+### Configurable H2 cache pruning
+Schedule of cache pruning of H2 caches is now configurable. This means that it
+doesn't necessarily need to run on startup, therefore improving Gerrit startup
+times. Find more information in the
+[docs](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cachePruning).
+
+### Improved H2 Cache performances
+Indexes have been added to the H2 cache databases, greatly improving performance
+of persistent caches, especially pruning and building bloom filters.
+
+### Allow fixes in Human comments via Rest API
+
+Robot Comments have been officially deprecated for some time and the [checks API
+framework](https://gerrit-review.googlesource.com/Documentation/pg-plugin-checks-api.html)
+is recommended since Gerrit 3.6. This is great as it provides a way of greatly
+reducing the size of the repository. However, unlike fixes suggested in
+Robot-Comments, Human Suggested fixes could not be applied programmatically,
+until now.
+
+Gerrit 3.10 introduces a way of suggesting fixes that could then be
+programmatically applied with the the [Apply Stored
+Fixes](https://review.gerrithub.io/Documentation/rest-api-changes.html#apply-stored-fix)
+endpoint.
+This is done by adding an extra field `fix_suggestions` in
+[CommentInfo](https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#comment-info)
+that will be stored separately on NoteDB.
+
+We don't consider this a breaking change as the comment info payload is
+serialized as JSON and unknown fields should be ignore when parsing such data
+format. To be extra cautious, this field is only written if the experiment is
+enabled.
+
+The experiment can be enabled in `gerrit.config` like so
+```
+[experiments]
+          enabled = GerritBackendFeature__allow_fix_suggestions_in_comments
+ ```
+
+### Native log deletion
+So far Gerrit admins have always needed to rely on external tools to delete old
+logs files, now this feature is brought within Gerrit itself and made easily
+configurable. See more details under
+[log.timeToKeep](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html)
+
+### Support for secondary emails
+It's now possible to update the commit message with a secondary email, both in
+the UI and via Rest API.
+
+### Update author and committer from the UI
+It's now possible to update the author and the committer identities directly in
+the UI.
+
+## Important Notes
+* [Change 394841](https://gerrit-review.googlesource.com/394841) The commit-msg
+  hook now operates as a no-op for temporary commits, which are identified by a
+  lowercase word followed by an exclamation mark (e.g., fixup!, squash!).
+  Configure gerrit.createChangeId to 'always' to force creation on these cases.
+
+### Submit Requirement Changes
+* [Change 396517](https://gerrit-review.googlesource.com/396517) allow a
+  max_count = 50 for label predicates for SRs.
+* [Issue 325070428](https://crbug.com/gerrit/325070428) Fixed PostReview to not
+  execute the submit rules twice when the SUBMIT_REQUIREMENTS or SUBMITTABLE
+  options were requested
+
+### Schema and index changes
+
+The `accounts` index version has been increased to version 14. The `changes`
+index version has been increased to version 86. The `groups` index version has
+been increased to version 11. The `projects` index version has been increased to
+version 9.
+
+The schema version hasn't been updated, however, because Lucen was bumped 2
+versions from 7.x to 9.8 the upgrade is supported only from Gerrit v3.9, as
+Lucene libraries do not support more than one version upgrade at a time.
+
+### Online index schema upgrade from 3.9
+By default, if you’re upgrading from 3.9, the index is automatically rebuilt
+upon Gerrit startup after the upgrade.
+
+If you’re upgrading from 3.8 or an earlier version, you must use the Offline
+upgrade steps below, because of the Lucene upgrade mentioned above.
+
+### Offline upgrade
+- Download the new gerrit.war
+- Stop Gerrit
+- Ensure all installed plugins are compatible with the new API
+- Run init `java -jar gerrit.war init -d site_path --batch`
+- Reindex if you are upgrading from a 3.9 versions you don’t need to run reindex
+  (see Online index schema upgrade from 3.9 above). If you still want to you
+  will need to run reindex:
+
+  `java -jar gerrit.war reindex -d site_path` If you are upgrading from a 3.8 or
+  an earlier version, you must run a reindex of all indexes:
+
+  `java -jar gerrit.war reindex -d site_path` See the
+  [reindex](https://gerrit-documentation.storage.googleapis.com/Documentation/3.9.0/pgm-reindex.html)
+  command for other options.
+
+### Downgrade
+ Downgrade to any Gerrit v3.9 release is possible, but requires the following
+manual steps:
+
+1. Shutdown all migrated Gerrit servers
+2. Update the gerrit.war and plugins to the previous v3.7/v3.8 version
+3. Run offline change reindexing using the previous gerrit.war version
+
+```sh
+  java -jar gerrit.war init -d site_path --batch
+  java -jar gerrit.war reindex -d site_path
+```
+
+4. Startup Gerrit server
+
+### Native packaging
+Updated almalinux to 9.3.
+
+### Breaking Changes
+
+* [Change 409738](https://gerrit-review.googlesource.com/409738) Added
+  validation for label copy conditions
+* [Change 407417](https://gerrit-review.googlesource.com/407417) Branch links
+  in change metadata now ignore status
+
+  This means that clicking the branch link in the change detail section returns
+  all changes associated with that branch, rather than the ones matching the
+  change's status. This will return a much greater number of changes than
+  before, potentially impacting plugin/workflow performance.
+* [Change 404717](https://gerrit-review.googlesource.com/404717 )Deprecate review
+  command without project argument
+* [Issue 325070428](https://crbug.com/gerrit/325070428) Added new
+  current_revision_number field to ChangeInfo that contains the current patch
+  set number
+
+  If the consumer is "well designed" adding one extra field in the JSON response
+  should not break any existing behaviour. However, as it's a change in the
+  response payload, we're highlighting this as potentially breaking change.
+* [Change 400821](https://gerrit-review.googlesource.com/400821)
+  AutoMerger#lookupFromGitOrMergeInMemory: Remove mergeStrategy parameter
+
+  This only impacts plugins.
+* [Change 401198](https://gerrit-review.googlesource.com/401198) DiffOperations:
+  Remove unused diffOptions parameter from load methods
+
+  Potentially breaking change as it impacts plugins that use the DiffOperations
+  interface.
+
+* [Deprecated robot-comments](#deprecated-robot-comments)
+
+* [Change 401977](https://gerrit-review.googlesource.com/401977) Use
+  RetryScheduler with backoff when server returns 429
+
+  Gerrit UI will now automatically retry the Rest API calls to the backend when
+  the HTTP status code is 429. This could lead to duplicated requests sent to
+  the backend and consequently higher load on the system.
+
+* [Change 396859](https://gerrit-review.googlesource.com/396859) Disable
+  dropdown items for downlading files >50 MB
+
+  The 50MB limit is hardcoded and cannot be changed via configuration.
+
+### Other changes
+* [Change 409729](https://gerrit-review.googlesource.com/409729) Added REST
+  endpoint to get the commit message of a change
+* [Change 391494](https://gerrit-review.googlesource.com/391494) committer and
+  author identities can be updated in change edit mode via REST
+* [Change 394795](https://gerrit-review.googlesource.com/394795) Remove
+  ActionType, ChangeActions and RevisionActions enums forwarded as properties
+  from ChangeActionsPluginApi implementation
+* [Issue 240676565](https://crbug.com/gerrit/240676565) Reviewer updates for
+  reviewers by email are returned in change details
+* [Issue 326096919](https://crbug.com/gerrit/326096919) Fixed internal server
+  error when posting a review with a ReviewerInput that didn't set the
+  'reviewer' field.
+* [Change 412617](https://gerrit-review.googlesource.com/412617) Fix bug that
+  allows inserting a broken pack
+* [Change 413077](https://gerrit-review.googlesource.com/413077) Plugins can use
+  VersionedConfigFile to read/write a config file stored in git
+* [Change 399657](https://gerrit-review.googlesource.com/399657) Fix WorkQueue
+  bug to ensure reliable execution of scheduled tasks
+* [Change 392460](https://gerrit-review.googlesource.com/392460) Added commit
+  sha and change number to "commit already exists (in change)" Push Rejected
+  response.
+* [Change 399237](https://gerrit-review.googlesource.com/399237) Improved
+  WorkQueue task thread names
+* [Change 412438](https://gerrit-review.googlesource.com/412438) Fix behavior of
+  rules.enable config to disable prolog
+
+## Other Changes related to Multi-Site
+* [Change 399618](https://gerrit-review.googlesource.com/399618) Populate
+  project-created event with instanceId
+* [Change 398918](https://gerrit-review.googlesource.com/398918) Don't fire
+  project-created events not produced locally
+* [Change 417000](https://gerrit-review.googlesource.com/417000) Allow to
+ reindex changes without notifying listeners
+* [Change 413257](https://gerrit-review.googlesource.com/413257) Allow listing
+  tags in descending order
+
+## Plugin changes
+- codemirror-editor updated to: d4f9247d3efb6a0e461af701986235511d05b7e3
+- commit-message-length-validator updated to: c38e0a9d36767092b20558b28eff7f546c6d754c
+- delete-project updated to: ea78b4b817151f47f6e3aca7bf1e90f14518caa1
+- download-commands updated to: 978e803c87416eb9e96236446b15b167017c0385
+- gitiles updated to: 4e8bd706e87eb11e3cfe2bfa9bbcb29020f39482
+- hooks updated to: f975f914312b258f84957d19f96014c3edd12644
+- plugin-manager updated to: cdd2d2d69666a70a16ac02bacf8e7fbbf4ca9979
+- replication updated to: 012f04240eafe6dfa21fd94e012e97498881c621
+- reviewnotes updated to: 18c867b6a957b3ddeb7a9e9789819fc60bdcd99a
+- singleusergroup updated to: 4bee62cbbc21979b841843dd5faaf79470a35966
+- webhooks updated to: 2e5ec3b3bcf5e7ba50edba9eca3c15c8057ad6c2
+
+## JGit changes
+Bump JGit version to c0b415f. You can retrieve the full list of changes
+  with:
+
+  ```shell
+  git log --no-merges --abbrev-commit --format=oneline  bf70c9f4c2e35548bc6d7853284b2c4d5e1d29ef...c0b415fb028b4c1f29b6df749323bbb11599495d
+  ```
+
+Notable changes are:
+  * 81d64c913 Cache refreshed loose ref dirs in SnapshottingRefDirectory
+  * 72fa0a53e TreeRevFilter: correct changedPathFilter usage for multi-paths inclusion
+  * 9e841dd4a PathFilterGroup: implement getPathsBestEffort()
+  * c1eba8abe DfsPackFile: get commitGraph.readChangePaths from repo config
+  * 21f7fdff7 Introduce core.trustLooseRefStat config
+  * 5c94dcc56 DfsObjDatabase: Let object database instantiate DfsPackFiles
+  * 049749558 DfsPackFile: Abstract the bitmap loading to support other backends
+  * 3e624306d Allow to discover bitmap on disk created after the packfile
+  * 15363e4c3 PackWriterBitmapPreparer: Do not generate bitmaps for excessive branch tips.
+  * c64664925 CherryPick: add ability to customise cherry-picked commit message
+  * ba5adc4ce Add tests for handling pack files removal during fetch
+  * ee4443091 PackWriterBitmapPreparer: Set limit on excessive branch count
+  * 788487316 BasePackFetchConnection: Skip object/ref lookups if local repo is empty
+  * faa50c683 LooseObjects: Use File#exists when possible
+  * b2abab271 DfsReader: give subclasses visiblity over the pack bitmap index
+  * e25bf9573 PackBitmapIndex/StoredBitmap: Expose size and counts
+  * 52c18ae15 PackWriter/Statistics: Remove the bitmapt hit stats
+  * ab132937f FooterLine: Protect from ill-formed message
+  * 340cc787a Improve footer parsing to allow multiline footers.
+  * aab75dba7 BitmapIndex: Add interface to track bitmaps found (or not)
+  * 4f18c5095 Optimize RefDirectory.getRefsByPrefix(String...)
+  * b761a0fc3 Use try-with-resource to ensure UploadPack is closed
+  * 3937300f3 Optimise Git protocol v2 `ref-prefix` scanning
+  * 5f563e386 UploadPack: use want-refs as advertised set in fetch v2
+  * 093bde518 BasePackFetchConnection: Avoid full clone with useNegotiationTip
+  * 8ca649c16 Generate SBOMs using cyclonedx maven plugin
+  * f91afe5f5 DfsPackFile: Do not attempt to read stream if pack doesn't have it
+  * 9323b430b PackObjectSizeIndexLoader: Log wrong bytes on exception
+  * 0f078da4e FileBasedConfig: in-process synchronization for load() and save()
+  * cb46ee354 FileBasedConfig: ensure correct snapshot if no file
+  * f93ccb7fd RebaseCommand: return correct status on stash apply conflicts
+  * 42917767f UploadPack: Delay freeing refs in sendPack()
+
+
+## Documentation changes
+* [Issue 312899496](https://gerrit-review.googlesource.com/q/bug:312899496)
+  Reworked the project config documentation page
+* [Issue 312890385](https://gerrit-review.googlesource.com/q/bug:312890385)
+  Improved the submit requirements documentation
+* [Change 395681](https://gerrit-review.googlesource.com/395681) Update
+  instructions about filing security issues
+* [Change 395997](https://gerrit-review.googlesource.com/395997) Update
+  documentation for the ChangeInfo.
+* [Change 398418](https://gerrit-review.googlesource.com/398418) Document Byte
+  Buddy issue with running mock tests
+* [Change 399697](https://gerrit-review.googlesource.com/399697)
+  submit-requirements.txt: Document how to restore SRs via REST
+* [Issue 313411537](https://gerrit-review.googlesource.com/q/bug:313411537)
+  Improve docs around submit requirements and access rights
+* [Change 400398](https://gerrit-review.googlesource.com/400398) SR
+  documentation: Mention that label function should be set to NoBlock
+* [Issue 320820903](https://gerrit-review.googlesource.com/q/bug:320820903)
+  Update docs on Project ownership.
+* [Change 410725](https://gerrit-review.googlesource.com/410725) Document
+  behaviour of RetryScheduler
+
+## Other dependency changes
+
+* [Change 389854](https://gerrit-review.googlesource.com/389854) Update protobuf
+  version to 21.7
+* [Change 408697](https://gerrit-review.googlesource.com/408697) update Soy
+  library
+* [Change 387360](https://gerrit-review.googlesource.com/387360) Update Bazel
+  version to 7.0.0
+* [Change 391534](https://gerrit-review.googlesource.com/391534) Bazel: Add
+  support for JDK 21
+* [Issue 319778767,](https://crbug.com/gerrit/319778767,) Update
+  commons-compress to 1.25.0
+* [Change 399557](https://gerrit-review.googlesource.com/399557) Update reload4j
+  to 1.2.25
+* [Issue 317782004](https://crbug.com/gerrit/317782004) Update httpcore to
+  4.4.16
+* [Issue 317790747](https://crbug.com/gerrit/317790747) Update auto-value to
+  1.10.4
+* [Issue 317782000](https://crbug.com/gerrit/317782000) Update httpclient to
+  4.5.14
+* [Change 400697](https://gerrit-review.googlesource.com/400697) Upgrade yarn
+  deps (January 2024)
+* [Change 412497](https://gerrit-review.googlesource.com/412497) Update Truth to
+  1.4.2.
+
+## Frontend changes
+* [Issue 315957653](https://crbug.com/gerrit/315957653) account-chip hover-card
+  shows correct email for author and committer
+* [Change 397457](https://gerrit-review.googlesource.com/397457) Add syntax
+  highlight support for cjs, cts, and mts file
+* [Change 400824](https://gerrit-review.googlesource.com/400824) Fix scrolling
+  to diff rows covered by the header UI
+* [Change 402837](https://gerrit-review.googlesource.com/402837) Revert CLs
+should still say Ready To Submit UI supports updating commit message using a
+registered secondary email
+* [Change 407157](https://gerrit-review.googlesource.com/407157) Add plugin
+  endpoint for account links
+* [Change 407660](https://gerrit-review.googlesource.com/407660) Turn Reply
+  button into Sign in button when logged out
+* [Change 407820](https://gerrit-review.googlesource.com/407820) Improve
+  reviewer autocomplete on restricted refs/branches
+* [Change 407823](https://gerrit-review.googlesource.com/407823) Show checks
+  findings on file list
+* [Change 407825](https://gerrit-review.googlesource.com/407825) Prevent pencil
+  wrapping by itself in change metadata
+* [Issue 40015337](https://crbug.com/gerrit/40015337) Fix browser BACK button
+  when going to plugin pages
+* [Change 416260](https://gerrit-review.googlesource.com/416260) Diff processor
+  was simplified. It does not split up into multiple async chunks of work
+  anymore.
+* [Change 396859](https://gerrit-review.googlesource.com/396859) Disable
+  dropdown items for downlading files >50 MB
+* [Change 401384](https://gerrit-review.googlesource.com/401384) Stop
+  considering combo key after first hit
+* [Change 403277](https://gerrit-review.googlesource.com/403277) Only show the
+  "Show Blame" button if blame is enabled.
+* [Change 416001](https://gerrit-review.googlesource.com/416001) Add a
+  `replysent` plugin event
+* [Change 411358](https://gerrit-review.googlesource.com/411358) Fix revision
+  actions constantly showing as "loading" when not signed in
+* [Issue 40004507](https://crbug.com/gerrit/40004507) Added support for
+  filtering branches/tags in plugins.
+* [Issue 330574510](https://crbug.com/gerrit/330574510) Fix issue with
+  gr-file-list-header not working correctly after writing a comment
+* [Change 394446](https://gerrit-review.googlesource.com/394446) fix tabbing for
+  non-emojis starting with colon
+* [Change 395461](https://gerrit-review.googlesource.com/395461) Fix emoji
+  selector for all keys
+* [Change 399797](https://gerrit-review.googlesource.com/399797) Enable
+  highlighting for Qt code components
+ 
\ No newline at end of file