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
