Add 3.12.3 release notes
Change-Id: I19bd47d98d518969127645bc10376b618b6a8eb4
diff --git a/pages/site/releases/3.12.md b/pages/site/releases/3.12.md
index 003cd20..69c59dd 100644
--- a/pages/site/releases/3.12.md
+++ b/pages/site/releases/3.12.md
@@ -6,11 +6,13 @@
toc: true
---
-Download: **[3.12.2](https://gerrit-releases.storage.googleapis.com/gerrit-3.12.2.war)**
+Download: **[3.12.3](https://gerrit-releases.storage.googleapis.com/gerrit-3.12.3.war)**
+| [3.12.2](https://gerrit-releases.storage.googleapis.com/gerrit-3.12.2.war)
| [3.12.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.12.1.war)
| [3.12.0](https://gerrit-releases.storage.googleapis.com/gerrit-3.12.0.war)
-Documentation: **[3.12.2](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.2/index.html)**
+Documentation: **[3.12.3](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.3/index.html)**
+| [3.12.2](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.2/index.html)
| [3.12.1](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.1/index.html)
| [3.12.0](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.0/index.html)
@@ -676,6 +678,186 @@
## Bugfix releases
+### 3.12.3
+
+* Bug Fixes
+
+ * [Change 495501](https://gerrit-review.googlesource.com/495501):
+ `sequence set` SSH command now enforces strictly increasing sequence values.
+
+ Attempts to set a sequence (for `changes`, `accounts`, or `groups`) to a value lower than its
+ current value are now rejected immediately.
+
+ * [Issue 439435039](https://issues.gerritcodereview.com/issues/439435039):
+ Check for account existence with username scheme for `HTTP` and `HTTP_LDAP` only.
+
+ Previously, when LDAP authentication was enabled, user lookups were incorrectly performed
+ using the `username` external ID scheme, which could lead to failed logins.
+ This change restricts username-based lookups to `HTTP` and `HTTP_LDAP` authentication
+ protocols only, ensuring `LDAP` uses the correct `gerrit` scheme.
+
+ * [Issue 439859126](https://issues.gerritcodereview.com/issues/439859126):
+ Return `HTTP 401` for any incoming authentication request with a password longer than `71` chars
+
+ Fixed password validation to explicitly fail when a password is longer than 71 characters,
+ matching the Bcrypt limitation. This prevents internal errors and ensures clients receive a
+ proper `HTTP 401 (Unauthorized)` response instead of an internal exception.
+
+ * [Issue 444049514](https://issues.gerritcodereview.com/issues/444049514):
+ Prevent blocking HTTP calls to wait indefinitely.
+
+ Fixed an issue where, under heavy concurrent Git/HTTP load, some worker threads could remain
+ stuck indefinitely due to unbounded blocking in synchronous write callbacks.
+ Blocking callbacks are now properly capped by the configured `httpd.idleTimeout`, ensuring
+ idle or stalled Git/HTTP requests are terminated and threads are released as expected.
+
+ * [Issue 397701289](https://issues.gerritcodereview.com/issues/397701289):
+ Notify reviewers on change edit in UI.
+
+ Restored reviewer notifications when a change is edited through the web UI. This makes
+ notification behavior consistent with other change updates, ensuring reviewers are informed when
+ an edit may require another review.
+
+ * [Change 510442](https://gerrit-review.googlesource.com/510442):
+ Allow WorkQueue to be used with the failsafe.dev library in the `high-availability`
+ plugin to schedule retryable tasks.
+
+ * [Issue 446941362](https://issues.gerritcodereview.com/issues/446941362):
+ Fixed git-upload-pack errors on replicas by skipping unloadable changes.
+
+ Fixed an issue where corrupted or unloadable changes could cause Internal Server Errors during
+ `git-upload-pack` on replicas.
+
+ * [Issue 456521736](https://issues.gerritcodereview.com/issues/456521736):
+ Avoid _"change N missing from ChangeSet[][]"_ error when submitting a change with a stale index
+ entry.
+
+ Fixed an issue where submitting a change could fail if its index entry was out of sync with
+ the underlying NoteDb data. Gerrit can now backfill missing change information directly from
+ the repository when the index is stale, ensuring that valid changes can still be submitted
+ without repeated retries.
+
+ A new configuration option, `change.backfillMergeSuperSet`, controls this behavior.
+ When enabled, Gerrit reloads change data from the repository instead of failing due to a stale
+ index, making change submissions more reliable in setups that use asynchronous indexing or
+ multiple primaries.
+
+ * [Change 497281](https://gerrit-review.googlesource.com/497281):
+ Fixed the name of the operations endpoint latency metric to ensure accurate per-endpoint
+ performance tracking.
+
+ Corrected the name of the operations endpoint latency metric, which was previously using the
+ same name as the general `performance/operations` metric.
+
+ * [Issue 440670678](https://issues.gerritcodereview.com/issues/440670678):
+ Introduce listener hook for project-wide change index deletions.
+
+ Previously, when all changes for a project were deleted from the index, no listener notifications
+ were triggered. This prevented plugins such as `high-availability` and `multi-site` from
+ detecting these deletions and cleaning up related state.
+
+ A new listener hook, `onAllChangesDeletedForProject`, has been added and is now invoked whenever
+ a project’s indexed changes are removed in bulk. This ensures that dependent plugins are
+ notified consistently and can react reliably to project-wide deletions.
+
+* Documentation Updates
+
+ * [Change 500401](https://gerrit-review.googlesource.com/500401):
+ Document the HTTP password limit of `71` chars.
+
+ * [Change 520901](https://gerrit-review.googlesource.com/520901):
+ Document the REST API Get Patch `parent` parameter.
+
+ * [Change 515462](https://gerrit-review.googlesource.com/515462):
+ Remove instructions to build with Java 17.
+
+* UI Fixes
+
+ * [Change 511981](https://gerrit-review.googlesource.com/511981):
+ `gr-access-section`: Fix bug with deleting permissions in handleAddedPermissionRemoved.
+
+ Resolved an issue where removing a permission (e.g., Delete Own Changes) could also
+ unintentionally remove another permission (e.g., `Delete Changes`) and incorrectly display an
+ `undo` option. The UI now correctly tracks and removes only the selected permission, and the
+ undo button appears only for previously saved permissions.
+
+ * [Change 515221](https://gerrit-review.googlesource.com/515221):
+ Allow Change Owners to suggest edits in comments.
+
+ Change owners can now propose suggested edits directly in comments, even if they are not the
+ original authors of the change.
+
+ * [Change 517961](https://gerrit-review.googlesource.com/517961):
+ `gr-permission`: Fix deleting rule in `gr-rule-editor`.
+
+ Resolved a UI issue where deleting a rule could affect the wrong entry due to DOM node reuse.
+
+ * [Change 512922](https://gerrit-review.googlesource.com/512922):
+ Fix rendering of multiple suggested edits when comments contain tabs.
+
+ Previously, only the first suggested edit was shown when a comment contained multiple suggestions.
+ Now, all suggestions are displayed correctly, allowing users to view and apply each one
+ individually.
+
+ * [Change 509501](https://gerrit-review.googlesource.com/509501):
+ `gr-textarea`: Fix `getSelection()` on Safari.
+
+ Resolved an issue in the text area component where pressing `Option + Right Arrow` on Safari
+ did not move the cursor or update the text selection as expected.
+
+ * [Change 509463](https://gerrit-review.googlesource.com/509463):
+ Fix bug with `disabledMenuActions` in `gr-change-actions`.
+
+ Fixed a UI issue where menu actions were not properly disabled when `disabledMenuActions` was
+ set, allowing users to trigger actions multiple times while one was still running.
+
+ * [Issue 445614699](https://issues.gerritcodereview.com/issues/445614699):
+ Fix deleting text under Firefox when selecting all text.
+
+ Resolved a compatibility issue in the text area component where deleting all selected text did
+ not work correctly in Firefox.
+
+ * [Issue 440874371](https://issues.gerritcodereview.com/issues/440874371):
+ Avoid hacking the `GitRepositoryManager` on init, which broke the initialisation of a Gerrit
+ site with `Zookeeper`.
+
+ Resolved an issue that caused Gerrit site initialization to fail when using a global ref
+ database such as `Zookeeper`.
+
+* Enhancements
+
+ * [Issue 440798012](https://issues.gerritcodereview.com/issues/440798012):
+ Add scheduled reindexing of accounts.
+
+ Add scheduled reindexing of accounts. Previously scheduling reindexing was possible only for
+ `Changes`, `Projects` and `Groups`.
+
+* Dependency Updates
+
+ * [Issue 442989229](https://issues.gerritcodereview.com/issues/442989229):
+ Update Jetty to `9.4.57.v20241219`.
+
+ Please refer to the
+ `jetty.project` [changelog](https://github.com/jetty/jetty.project/compare/jetty-9.4.53.v20231009...jetty-9.4.57.v20241219)
+ for details.
+
+* Plugin changes
+
+ * `delete-project` updated to `b1a05c0c2ef2d5fe60f0c4c5863576707540dbbf`
+
+ Notable changes are:
+ * [Issue 440670678](https://issues.gerritcodereview.com/issues/440670678):
+ Use centralized change index deletion when removing a project.
+
+ Updated project deletion to use the higher-level `ChangeIndexer.deleteAllForProject()` API
+ instead of calling low-level index operations directly. This ensures that all project changes
+ are removed from the index in bulk and it triggers the appropriate deletion notifications.
+
+ You can retrieve the full list of changes with:
+ ```shell
+ git log --no-merges --oneline 08035f1ef90258629346ab033af27c454a7fcc2d..b1a05c0c2ef2d5fe60f0c4c5863576707540dbbf
+ ```
+
### 3.12.2
* Bug Fixes