Create 3.2.2-docs branch after migrating docs to main repo

This branch contains the 3.2.2 version of the docs but migrated to the
main CouchDB repo. After switching the URL repo in RDT we want to make
sure we still display the stable (aliased to 3.2.2) docs in RDT not
just the latest ones.

Main integration PR https://github.com/apache/couchdb/pull/4164
diff --git a/src/docs/src/api/basics.rst b/src/docs/src/api/basics.rst
index bce96cc..8f9df6f 100644
--- a/src/docs/src/api/basics.rst
+++ b/src/docs/src/api/basics.rst
@@ -597,9 +597,3 @@
 
   The request was invalid, either because the supplied JSON was invalid, or
   invalid information was supplied as part of the request.
-
-- ``503 - Service Unavailable``
-
-  The request can't be serviced at this time, either because the cluster is overloaded,
-  maintenance is underway, or some other reason.
-  The request may be retried without changes, perhaps in a couple of minutes.
diff --git a/src/docs/src/api/database/find.rst b/src/docs/src/api/database/find.rst
index b5a0bd4..2ec5cc6 100644
--- a/src/docs/src/api/database/find.rst
+++ b/src/docs/src/api/database/find.rst
@@ -20,10 +20,9 @@
     :synopsis: Find documents within a given database
 
     Find documents using a declarative JSON querying syntax.
-    Queries will use custom indexes, specified using the :ref:`_index <api/db/find/index>`
-    endpoint, if available.
-    Otherwise, they use the built-in :ref:`_all_docs <api/db/all_docs>` index, which
-    can be arbitrarily slow.
+    Queries can use the built-in :ref:`_all_docs <api/db/all_docs>` index or
+    custom indexes, specified using the :ref:`_index <api/db/find/index>`
+    endpoint.
 
     :param db: Database name
 
diff --git a/src/docs/src/api/server/authn.rst b/src/docs/src/api/server/authn.rst
index c5e2b7b..45e4d45 100644
--- a/src/docs/src/api/server/authn.rst
+++ b/src/docs/src/api/server/authn.rst
@@ -73,7 +73,7 @@
 client can use for the next few requests to CouchDB. Tokens are valid until
 a timeout. When CouchDB sees a valid token in a subsequent request, it will
 authenticate the user by this token without requesting the password again. By
-default, cookies are valid for 10 minutes, but it's adjustable via :config:option:`timeout
+default, cookies are valid for 10 minutes, but it's :config:option:`adjustable
 <chttpd_auth/timeout>`. Also it's possible to make cookies
 :config:option:`persistent <chttpd_auth/allow_persistent_cookies>`.
 
@@ -385,8 +385,8 @@
 
 The :config:option:`required_claims <jwt_auth/required_claims>` config
 setting is a comma-separated list of additional mandatory JWT claims
-that must be present in any presented JWT token. A :statuscode:`400`
-is sent if any are missing.
+that must be present in any presented JWT token. A `:code 400:Bad
+Request` is sent if any are missing.
 
 The ``alg`` claim is mandatory as it used to lookup the correct key for verifying the
 signature.
@@ -407,8 +407,8 @@
     ; Examples
     ; hmac:_default = aGVsbG8=
     ; hmac:foo = aGVsbG8=
-    ; The config values can represent symmetric and asymmetric keys.
-    ; For symmetric keys, the value is base64 encoded;
+    ; The config values can represent symmetric and asymmetrics keys.
+    ; For symmetrics keys, the value is base64 encoded;
     ; hmac:_default = aGVsbG8= # base64-encoded form of "hello"
     ; For asymmetric keys, the value is the PEM encoding of the public
     ; key with newlines replaced with the escape sequence \n.
diff --git a/src/docs/src/api/server/common.rst b/src/docs/src/api/server/common.rst
index fa1c1be..222b896 100644
--- a/src/docs/src/api/server/common.rst
+++ b/src/docs/src/api/server/common.rst
@@ -66,8 +66,6 @@
 
 .. versionchanged:: 2.1.0 Because of how the scheduling replicator works, continuous replication jobs could be periodically stopped and then started later. When they are not running they will not appear in the ``_active_tasks`` endpoint
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"` fields for replication jobs.
-
 .. http:get:: /_active_tasks
     :synopsis: Obtains a list of the tasks running in the server
 
@@ -150,8 +148,6 @@
                 "continuous": false,
                 "doc_id": null,
                 "doc_write_failures": 0,
-                "bulk_get_attempts": 4524,
-                "bulk_get_docs": 4524,
                 "docs_read": 4524,
                 "docs_written": 4524,
                 "missing_revisions_found": 4524,
@@ -544,8 +540,8 @@
                         - **eventsource**: Like, ``continuous``, but sends
                           the events in `EventSource
                           <http://dev.w3.org/html5/eventsource/>`_ format.
-    :query number timeout: Number of *milliseconds* until CouchDB closes the
-      connection. Default is ``60000``.
+    :query number timeout: Number of seconds until CouchDB closes the
+      connection. Default is ``60``.
     :query number heartbeat: Period in *milliseconds* after which an empty
         line is sent in the results. Only applicable for ``longpoll``,
         ``continuous``, and ``eventsource`` feeds. Overrides any timeout to
@@ -661,8 +657,6 @@
 ``/_replicate``
 ===============
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"`  fields to the replication history response object.
-
 .. http:post:: /_replicate
     :synopsis: Starts or cancels the replication
 
@@ -678,7 +672,6 @@
     :<json object create_target_params: An object that contains parameters
       to be used when creating the target database. Can include the
       standard ``q`` and ``n`` parameters.
-    :<json boolean winning_revs_only: Replicate winning revisions only.
     :<json array doc_ids: Array of document IDs to be synchronized.
       ``doc_ids``, ``filter``, and ``selector`` are mutually exclusive.
     :<json string filter: The name of a :ref:`filter function <filterfun>`.
@@ -734,10 +727,6 @@
     :json number doc_write_failures: Number of document write failures
     :json number docs_read:  Number of documents read
     :json number docs_written:  Number of documents written to target
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number end_last_seq:  Last sequence number in changes stream
     :json string end_time:  Date/Time replication operation completed in
       :rfc:`2822` format
@@ -784,8 +773,6 @@
                 {
                     "doc_write_failures": 0,
                     "docs_read": 10,
-                    "bulk_get_attempts": 10,
-                    "bulk_get_docs": 10,
                     "docs_written": 10,
                     "end_last_seq": 28,
                     "end_time": "Sun, 11 Aug 2013 20:38:50 GMT",
@@ -799,8 +786,6 @@
                 {
                     "doc_write_failures": 0,
                     "docs_read": 1,
-                    "bulk_get_attempts": 1,
-                    "bulk_get_docs": 1,
                     "docs_written": 1,
                     "end_last_seq": 1,
                     "end_time": "Sat, 10 Aug 2013 15:41:54 GMT",
@@ -927,8 +912,6 @@
         "history" : [
             {
                 "docs_read" : 1000,
-                "bulk_get_attempts": 1000,
-                "bulk_get_docs": 1000,
                 "session_id" : "52c2370f5027043d286daca4de247db0",
                 "recorded_seq" : 1000,
                 "end_last_seq" : 1000,
@@ -1096,8 +1079,6 @@
                         "doc_write_failures": 0,
                         "docs_read": 113,
                         "docs_written": 113,
-                        "bulk_get_attempts": 113,
-                        "bulk_get_docs": 113,
                         "missing_revisions_found": 113,
                         "revisions_checked": 113,
                         "source_seq": "113-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE01ygQLsZsYGqcamiZjKcRqRxwIkGRqA1H-oSbZgk1KMLCzTDE0wdWUBAF6HJIQ",
@@ -1130,8 +1111,6 @@
                         "doc_write_failures": 0,
                         "docs_read": 12,
                         "docs_written": 12,
-                        "bulk_get_attempts": 12,
-                        "bulk_get_docs": 12,
                         "missing_revisions_found": 12,
                         "revisions_checked": 12,
                         "source_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg",
@@ -1163,9 +1142,6 @@
 .. versionchanged:: 3.0.0 In error states the `"info"` field switched
                     from being a string to being an object
 
-.. versionchanged:: 3.3 Added `"bulk_get_attempts"` and `"bulk_get_docs"` the
-                    `"info"` object.
-
 .. http:get:: /_scheduler/docs
     :synopsis: Retrieve information about replication documents from the
                ``_replicator`` database.
@@ -1219,10 +1195,6 @@
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1259,8 +1231,6 @@
                         "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                         "doc_write_failures": 0,
                         "docs_read": 67,
-                        "bulk_get_attempts": 67,
-                        "bulk_get_docs": 67,
                         "docs_written": 67,
                         "missing_revisions_found": 67,
                         "revisions_checked": 67,
@@ -1285,8 +1255,6 @@
                         "changes_pending": null,
                         "checkpointed_source_seq": 0,
                         "doc_write_failures": 0,
-                        "bulk_get_attempts": 12,
-                        "bulk_get_docs": 12,
                         "docs_read": 12,
                         "docs_written": 12,
                         "missing_revisions_found": 12,
@@ -1364,10 +1332,6 @@
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1404,8 +1368,6 @@
                         "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                         "doc_write_failures": 0,
                         "docs_read": 67,
-                        "bulk_get_attempts": 67,
-                        "bulk_get_docs": 67,
                         "docs_written": 67,
                         "missing_revisions_found": 67,
                         "revisions_checked": 67,
@@ -1472,10 +1434,6 @@
         source.
     :json number docs_written: The count of docs which have been written to the
         target.
-    :json number bulk_get_attempts: The total count of attempted doc revisions
-        fetched with ``_bulk_get``.
-    :json number bulk_get_docs: The total count of successful docs fetched with
-        ``_bulk_get``.
     :json number changes_pending: The count of changes not yet replicated.
     :json number doc_write_failures: The count of docs which failed to be
         written to the target.
@@ -1510,8 +1468,6 @@
                 "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg",
                 "doc_write_failures": 0,
                 "docs_read": 67,
-                "bulk_get_attempts": 67,
-                "bulk_get_docs": 67,
                 "docs_written": 67,
                 "missing_revisions_found": 67,
                 "revisions_checked": 67,
@@ -1891,9 +1847,9 @@
         ...remaining couchdb metrics from _stats and _system
 
 If an additional port config option is specified, then a client can call this API using
-that port which does not require authentication. This option is ``false`` (OFF)
-by default. When the option is ``true`` (ON), the default ports for a 3 node cluster
-are ``17986``, ``27986``, ``37986``.
+that port which does not require authentication. This option is ``false``(OFF) by default.
+When the option ``true``(ON), the default ports for a 3 node cluster are ``17986``,
+``27986``, ``37986``.
 See :ref:`Configuration of Prometheus Endpoint <config/prometheus>` for details.
 
 .. code-block:: http
diff --git a/src/docs/src/best-practices/reverse-proxies.rst b/src/docs/src/best-practices/reverse-proxies.rst
index a04fc76..46102ac 100644
--- a/src/docs/src/best-practices/reverse-proxies.rst
+++ b/src/docs/src/best-practices/reverse-proxies.rst
@@ -104,9 +104,8 @@
 .. code-block:: text
 
     location /couchdb {
-        rewrite ^ $request_uri;
-        rewrite ^/couchdb/(.*) /$1 break;
-        proxy_pass http://localhost:5984$uri;
+        rewrite /couchdb/(.*) /$1 break;
+        proxy_pass http://localhost:5984;
         proxy_redirect off;
         proxy_buffering off;
         proxy_set_header Host $host;
diff --git a/src/docs/src/best-practices/views.rst b/src/docs/src/best-practices/views.rst
index ffc8399..335e795 100644
--- a/src/docs/src/best-practices/views.rst
+++ b/src/docs/src/best-practices/views.rst
@@ -29,7 +29,7 @@
 means that two design documents with identical view code will share the same
 on-disk view index files.
 
-Here is a worked example, assuming your ``/db/_design/ddoc`` needs to be updated.
+Here is a worked example, assuming your ``/db/_design/ddoc`` needs tobe updated.
 
 1. Upload the old design doc to ``/db/_design/ddoc-old`` (or copy the document)
    if you want an easy way to rollback in case of problems. The ``ddoc-old``
diff --git a/src/docs/src/cluster/sharding.rst b/src/docs/src/cluster/sharding.rst
index d7bc3e2..01408d4 100644
--- a/src/docs/src/cluster/sharding.rst
+++ b/src/docs/src/cluster/sharding.rst
@@ -64,12 +64,9 @@
 
 These settings specify the default sharding parameters for newly created
 databases. These can be overridden in the ``etc/local.ini`` file by copying the
-text above, and replacing the values with your new defaults.
-If ``[couch_peruser]`` ``q`` is set, that value is used for per-user databases.
-(By default, it is set to 1, on the assumption that per-user dbs will be quite
-small and there will be many of them.)  The values can also be set on a
-per-database basis by specifying the ``q`` and ``n`` query parameters when the
-database is created. For example:
+text above, and replacing the values with your new defaults.  The values can
+also be set on a per-database basis by specifying the ``q`` and ``n`` query
+parameters when the database is created. For example:
 
 .. code-block:: bash
 
@@ -103,13 +100,10 @@
     request. There are no special roles for nodes inside the cluster.
 
 The size of the required quorum can be configured at request time by
-setting the ``r`` parameter for document reads, and the ``w``
-parameter for document writes. The ``_view``, ``_find``, and
-``_search`` endpoints read only one copy no matter what quorum is
-configured, effectively making a quorum of 1 for these requests.
-
-For example, here is a request that directs the coordinating node to
-send a response once at least two nodes have responded:
+setting the ``r`` parameter for document and view reads, and the ``w``
+parameter for document writes. For example, here is a request that
+directs the coordinating node to send a response once at least two nodes
+have responded:
 
 .. code-block:: bash
 
diff --git a/src/docs/src/cluster/theory.rst b/src/docs/src/cluster/theory.rst
index fd0ab36..0ea50e8 100644
--- a/src/docs/src/cluster/theory.rst
+++ b/src/docs/src/cluster/theory.rst
@@ -44,6 +44,7 @@
 A shard is a part of a database. It can be replicated multiple times. The more
 copies of a shard, the more you can scale out. If you have 4 replicas, that
 means that all 4 copies of this specific shard will live on at most 4 nodes.
+With one replica you can have only one node, just as with CouchDB 1.x.
 No node can have more than one copy of each shard replica. The default for
 CouchDB since 3.0.0 is ``q=2`` and ``n=3``, meaning each database (and secondary
 index) is split into 2 shards, with 3 replicas per shard, for a total of 6
diff --git a/src/docs/src/config/auth.rst b/src/docs/src/config/auth.rst
index cb92f31..70ec276 100644
--- a/src/docs/src/config/auth.rst
+++ b/src/docs/src/config/auth.rst
@@ -116,8 +116,6 @@
 
     .. config:option:: require_valid_user :: Force user authentication
 
-        .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd] section
-
         When this option is set to ``true``, no requests are allowed from
         anonymous users. Everyone must be authenticated. ::
 
@@ -136,7 +134,7 @@
 .. config:section:: chttpd_auth :: Authentication Configuration
 
     .. versionchanged:: 3.2 These options were moved to [chttpd_auth] section:
-                        `authentication_redirect`, `timeout`,
+                        `authentication_redirect`, `require_valid_user`, `timeout`,
                         `auth_cache_size`, `allow_persistent_cookies`, `iterations`,
                         `min_iterations`, `max_iterations`, `secret`, `users_db_public`,
                         `x_auth_roles`, `x_auth_token`, `x_auth_username`,
@@ -196,33 +194,6 @@
             [chttpd_auth]
             authentication_redirect = /_utils/session.html
 
-    .. config:option:: hash_algorithms :: Supported hash algorithms for cookie auth
-
-        .. versionadded:: 3.3
-
-        Sets the HMAC hash algorithm used for cookie authentication. You can provide a
-        comma-separated list of hash algorithms. New cookie sessions or
-        session updates are calculated with the first hash algorithm. All values in the
-        list can be used to decode the cookie session. ::
-
-            [chttpd_auth]
-            hash_algorithms = sha256, sha
-
-        .. note::
-            You can select any hash algorithm the version of erlang used in your CouchDB
-            install supports. The common list of available hashes might be: ::
-
-                sha, sha224, sha256, sha384, sha512
-
-            To retrieve a complete list of supported hash algorithms you can use our
-            ``bin/remsh`` script and retrieve a full list of available hash algorithms
-            with ``crypto:supports(hashs).``.
-
-        .. warning::
-            We do not recommend using the following hash algorithms: ::
-
-                md4, md5
-
     .. config:option:: iterations :: PBKDF2 iterations count
 
         .. versionadded:: 1.3
@@ -230,9 +201,7 @@
 
         The number of iterations for password hashing by the PBKDF2 algorithm.
         A higher  number provides better hash durability, but comes at a cost
-        in performance for each request that requires authentication.
-        When using hundreds of thousands of iterations, use session cookies, or the performance hit will be huge.
-        (The internal hashing algorithm is SHA1, which affects the recommended number of iterations.) ::
+        in performance for each request that requires authentication. ::
 
             [chttpd_auth]
             iterations = 10000
@@ -310,6 +279,16 @@
                 [chttpd_auth]
                 users_db_public = true
 
+    .. config:option:: require_valid_user :: Force user authentication
+
+        .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd_auth] section
+
+        When this option is set to ``true``, no requests are allowed from
+        anonymous users. Everyone must be authenticated. ::
+
+            [chttpd_auth]
+            require_valid_user = false
+
     .. config:option:: secret :: Authentication secret token
 
         .. versionchanged:: 3.2 moved from [couch_httpd_auth] to [chttpd_auth] section
@@ -382,8 +361,8 @@
     .. config:option:: required_claims :: Mandatory claims in JWT tokens
 
         This parameter is a comma-separated list of additional mandatory JWT claims
-        that must be present in any presented JWT token. A :http:statuscode:`404`
-        is sent if any are missing. ::
+        that must be present in any presented JWT token. A
+        `:code 400:Bad Request` is sent if any are missing. ::
 
             [jwt_auth]
                 required_claims = exp,iat
diff --git a/src/docs/src/config/cluster.rst b/src/docs/src/config/cluster.rst
index 8801b9c..e0772b3 100644
--- a/src/docs/src/config/cluster.rst
+++ b/src/docs/src/config/cluster.rst
@@ -22,9 +22,9 @@
 Cluster Options
 ===============
 
-.. config:section:: cluster :: Cluster Options
+.. config:section:: cluster :: cluster Options
 
-    .. config:option:: q :: Default number of shards for newly created database
+    .. config:option:: q
 
     Sets the default number of shards for newly created databases. The
     default value, ``2``, splits a database into 2 separate partitions. ::
@@ -42,7 +42,7 @@
     .. seealso::
         :http:put:`PUT /{db} </{db}>`
 
-    .. config:option:: n :: Number of replicas of each document
+    .. config:option:: n
 
     Sets the number of replicas of each document in a cluster. CouchDB will
     only place one replica per node in a cluster. When set up through the
@@ -54,7 +54,7 @@
         [cluster]
         n = 3
 
-    .. config:option:: placement :: Sets the cluster-wide replica placement policy
+    .. config:option:: placement
 
     .. warning::
 
@@ -75,8 +75,7 @@
     .. seealso::
         :ref:`cluster/databases/placement`
 
-    .. config:option:: seedlist:: Optional, comma-delimited list of nodes that should \
-        be contacted to join cluster
+    .. config:option:: seedlist
 
     An optional, comma-delimited list of node names that this node should
     contact in order to join a cluster. If a seedlist is configured the ``_up``
@@ -97,22 +96,20 @@
     communication channel. There are a few configuration knobs for this system,
     although in general the defaults work well.
 
-    .. config:option:: buffer_count :: Number of buffered messages before dropping
+    .. config:option:: buffer_count
 
     The local RPC server will buffer messages if a remote node goes unavailable.
     This flag determines how many messages will be buffered before the local
     server starts dropping messages. Default value is ``2000``.
 
-    .. config:option:: server_per_node :: Enable or disable one local `gen_server` \
-        process per node
+    .. config:option:: server_per_node
 
     By default, rexi will spawn one local gen_server process for each node in
     the cluster. Disabling this flag will cause CouchDB to use a single process
     for all RPC communication, which is not recommended in high throughput
     deployments.
 
-    .. config:option:: stream_limit :: Number of send messages without waiting \
-        for acknowledgement from the coordinator
+    .. config:option:: stream_limit
 
         .. versionadded:: 3.0
 
diff --git a/src/docs/src/config/compaction.rst b/src/docs/src/config/compaction.rst
index 620c2b9..86113ed 100644
--- a/src/docs/src/config/compaction.rst
+++ b/src/docs/src/config/compaction.rst
@@ -104,19 +104,19 @@
 The following settings control the resource allocation for a given compaction
 channel.
 
-    .. config:option:: capacity :: Maximum number of items
+    .. config:option:: capacity
 
         The maximum number of items the channel can hold (lowest priority item
         is removed to make room for new items). Defaults to 9999.
 
-    .. config:option:: concurrency :: Maximum number of concurrent jobs
+    .. config:option:: concurrency
 
         The maximum number of jobs that can run concurrently in this channel.
         Defaults to 1.
 
-    .. config:option:: from :: Time window start
+    .. config: option:: from
 
-    .. config:option:: to :: Time window end
+    .. config: option:: to
 
         The time period during which this channel is allowed to execute
         compactions. The value for each of these parameters must obey the format
@@ -125,7 +125,7 @@
         regardless of the period defined here. The default is to allow the
         channel to execute compactions all the time.
 
-    .. config:option:: strict_window :: Run compaction only within the time window
+    .. config: option:: strict_window
 
         If set to ``true``, any compaction that is still running after the end of
         the allowed perio will be suspended, and then resumed during the next
@@ -135,32 +135,32 @@
 There are also several settings that collectively control whether a channel will
 enqueue a file for compaction and how it prioritizes files within its queue:
 
-    .. config:option:: max_priority :: Maximum priority of item to be enqueued
+    .. config:option:: max_priority
 
         Each item must have a priority lower than this to be enqueued. Defaults
         to infinity.
 
-    .. config:option:: max_size :: Maximum size of item to be enqueued
+    .. config:option:: max_size
 
         The item must be no larger than this many bytes in length to be
         enqueued. Defaults to infinity.
 
-    .. config:option:: min_priority :: Minimum priority of item to be enqueued
+    .. config:option:: min_priority
 
         The item must have a priority at least this high to be enqueued.
         Defaults to 5.0 for ratio and 16 MB for slack.
 
-    .. config:option:: min_changes :: Minimum number of changes of item to be enqueued
+    .. config:option:: min_changes
 
         The minimum number of changes since last compaction before the item will
         be enqueued. Defaults to 0. Currently only works for databases.
 
-    .. config:option:: min_size :: Minimum size of item to be enqueued
+    .. config:option:: min_size
 
         The item must be at least this many bytes in length to be enqueued.
         Defaults to 1mb (1048576 bytes).
 
-    .. config:option:: priority :: Method for priority calculation
+    .. config:option:: priority
 
         The method used to calculate priority. Can be ratio (calculated as
         ``sizes.file/sizes.active``) or slack (calculated as ``sizes.file -
diff --git a/src/docs/src/config/couch-peruser.rst b/src/docs/src/config/couch-peruser.rst
index 1517c04..dc5e7a3 100644
--- a/src/docs/src/config/couch-peruser.rst
+++ b/src/docs/src/config/couch-peruser.rst
@@ -13,23 +13,23 @@
 .. default-domain:: config
 .. highlight:: ini
 
-=================
-Database Per User
-=================
+=============
+couch_peruser
+=============
 
 .. _config/couch_peruser:
 
-Database Per User Options
-=========================
+couch_peruser Options
+=====================
 
-.. config:section:: couch_peruser :: Database Per User Options
+.. config:section:: couch_peruser :: couch_peruser Options
 
-    .. config:option:: enable :: Enable private per-user database pattern
+    .. config:option:: enable
 
     If set to ``true``, couch_peruser ensures that a private per-user
     database exists for each document in ``_users``. These databases are
-    writable only by the corresponding user. Database names are in the following
-    form: ``userdb-{UTF-8 hex encoded username}``. ::
+    writable only by the corresponding user. Databases are in the following
+    form: ``userdb-{hex encoded username}``. ::
 
         [couch_peruser]
         enable = false
@@ -37,20 +37,7 @@
     .. note::
         The ``_users`` database must exist before couch_peruser can be enabled.
 
-    .. tip::
-        Under NodeJS, user names can be converted to and from database names thusly:
-
-    .. code:: javascript
-
-        function dbNameToUsername(prefixedHexName) {
-          return Buffer.from(prefixedHexName.replace('userdb-', ''), 'hex').toString('utf8');
-        }
-
-        function usernameToDbName(name) {
-          return 'userdb-' + Buffer.from(name).toString('hex');
-        }
-
-    .. config:option:: delete_dbs :: Enable deleting user-db after user delete
+    .. config:option:: delete_dbs
 
     If set to ``true`` and a user is deleted, the respective database gets
     deleted as well. ::
@@ -62,7 +49,7 @@
     ``_couchdb.roles=['_admin']`` claim to for the peruser database to be properly
     created and accessible for the user provided in the ``sub=`` claim.
 
-    .. config:option:: q :: Sharding value for per-user databases
+    .. config:option:: q
 
     If set, specify the sharding value for per-user databases. If unset, the
     cluster default value will be used.
diff --git a/src/docs/src/config/http.rst b/src/docs/src/config/http.rst
index 19f4341..4bda36b 100644
--- a/src/docs/src/config/http.rst
+++ b/src/docs/src/config/http.rst
@@ -129,7 +129,7 @@
             [chttpd]
             changes_timeout = 60000 ; 60 seconds
 
-    .. config:option:: config_whitelist :: Config options whitelist
+    .. config:option:: config_whitelist :: Config options while list
 
         .. versionchanged:: 3.2 moved from [httpd] to [chttpd] section
 
@@ -490,7 +490,7 @@
         [chttpd]
         enable_cors = true
 
-    .. config:option:: credentials :: Enable credentials support in CouchDB
+    .. config:option:: credentials
 
         By default, neither authentication headers nor cookies are included in
         requests and responses. To do so requires both setting
@@ -503,7 +503,7 @@
         CouchDB will respond to a credentials-enabled CORS request with an
         additional header, ``Access-Control-Allow-Credentials=true``.
 
-    .. config:option:: origins :: List of allowed origins
+    .. config:option:: origins
 
         List of origins separated by a comma, ``*`` means accept all. You can’t
         set ``origins = *`` and ``credentials = true`` option at the same
@@ -521,21 +521,21 @@
         Note that by default, no origins are accepted. You must define them
         explicitly.
 
-    .. config:option:: headers :: List of accepted headers
+    .. config:option:: headers
 
         List of accepted headers separated by a comma::
 
             [cors]
             headers = X-Couch-Id, X-Couch-Rev
 
-    .. config:option:: methods :: List of accepted methods
+    .. config:option:: methods
 
         List of accepted methods::
 
             [cors]
             methods = GET,POST
 
-    .. config:option:: max_age :: Set Access-Control-Max-Age header
+    .. config:option:: max_age
 
         Sets the ``Access-Control-Max-Age`` header in seconds. Use it to
         avoid repeated ``OPTIONS`` requests.
diff --git a/src/docs/src/config/ioq.rst b/src/docs/src/config/ioq.rst
index ef931b3..bcf902b 100644
--- a/src/docs/src/config/ioq.rst
+++ b/src/docs/src/config/ioq.rst
@@ -42,7 +42,7 @@
             [ioq]
             ratio = 0.01
 
-.. config:section:: ioq.bypass :: Bypass Selected IO Classes
+.. config:section:: ioq.bypass :: Bypass selected IO classes by setting these to true
 
     System administrators can choose to submit specific classes of IO directly
     to the underlying file descriptor or OS process, bypassing the queues
@@ -50,28 +50,28 @@
     latency, but relinquishes some control over prioritization. The following
     classes are recognized:
 
-    .. config:option:: os_process :: Bypass IO messages to external processes
+    .. config:option:: os_process
 
         Messages on their way to an external process (e.g., ``couchjs``).
 
-    .. config:option:: read :: Bypass Disk IO read requests
+    .. config:option:: read
 
         Disk IO fulfilling interactive read requests.
 
-    .. config:option:: write :: Bypass Disk IO write requests
+    .. config:option:: write
 
         Disk IO required to update a database.
 
-    .. config:option:: view_update :: Bypass Disk IO view update requests
+    .. config:option:: view_update
 
         Disk IO required to update views and other secondary indexes.
 
-    .. config:option:: shard_sync :: Bypass Disk IO for shard syncing requests
+    .. config:option:: shard_sync
 
         Disk IO issued by the background replication processes that fix any
         inconsistencies between shard copies.
 
-    .. config:option:: compaction :: Bypass Disk IO for compaction job requests
+    .. config:option:: compaction
 
         Disk IO issued by compaction jobs.
 
diff --git a/src/docs/src/config/logging.rst b/src/docs/src/config/logging.rst
index 26422f6..d9aae6a 100644
--- a/src/docs/src/config/logging.rst
+++ b/src/docs/src/config/logging.rst
@@ -22,7 +22,7 @@
 Logging options
 ================
 
-.. config:section:: log :: Logging Options
+.. config:section:: log :: Logging options
 
     CouchDB logging configuration.
 
@@ -54,7 +54,7 @@
         This path should be readable and writable for user that runs CouchDB
         service (`couchdb` by default).
 
-    .. config:option:: write_buffer :: File log write buffer size
+    .. config:option:: write_buffer
 
        Specifies the size of the file log write buffer in bytes, to enable
        delayed log writes. Only used by the ``file``
@@ -63,7 +63,7 @@
             [log]
             write_buffer = 0
 
-    .. config:option:: write_delay :: Wait delay before commiting logs to disk
+    .. config:option:: write_delay
 
         Specifies the wait in milliseconds before committing logs to disk, to
         enable delayed log writes. Only used by the ``file``
@@ -97,7 +97,7 @@
         - ``emergency`` or ``emerg``
         - ``none``: Disables logging any messages.
 
-    .. config:option:: include_sasl :: Include SASL information in logs
+    .. config:option:: include_sasl
 
         Includes `SASL`_ information in logs::
 
@@ -106,11 +106,7 @@
 
         .. _SASL: http://www.erlang.org/doc/apps/sasl/
 
-    .. config:option:: syslog_host :: Syslog host
-
-        .. note::
-
-            Setting `syslog_host` is mandatory for ``syslog`` to work!
+    .. config:option:: syslog_host
 
         Specifies the syslog host to send logs to. Only used by the
         ``syslog`` :option:`writer <log/writer>`::
@@ -118,7 +114,7 @@
             [log]
             syslog_host = localhost
 
-    .. config:option:: syslog_port :: Syslog port
+    .. config:option:: syslog_port
 
         Specifies the syslog port to connect to when sending logs. Only used by
         the ``syslog`` :option:`writer <log/writer>`::
@@ -126,7 +122,7 @@
             [log]
             syslog_port = 514
 
-    .. config:option:: syslog_appid :: Application name for syslog
+    .. config:option:: syslog_appid
 
         Specifies application name to the ``syslog``
         :option:`writer <log/writer>`::
@@ -134,20 +130,10 @@
             [log]
             syslog_appid = couchdb
 
-    .. config:option:: syslog_facility :: Syslog designations for message sources
+    .. config:option:: syslog_facility
 
         Specifies the syslog facility to use with the ``syslog``
         :option:`writer <log/writer>`::
 
             [log]
             syslog_facility = local2
-
-    .. note::
-        CouchDB's ``syslog`` only knows how to use UDP logging. Please ensure that your
-        ``syslog`` server has UDP logging enabled.
-
-        For ``rsyslog`` you can enable the UDP module `imudp` in ``/etc/rsyslog.conf``::
-
-            # provides UDP syslog reception
-            module(load="imudp")
-            input(type="imudp" port="514")
diff --git a/src/docs/src/config/misc.rst b/src/docs/src/config/misc.rst
index 5c76d2a..719ca14 100644
--- a/src/docs/src/config/misc.rst
+++ b/src/docs/src/config/misc.rst
@@ -24,7 +24,7 @@
 
 .. config:section:: attachments :: Configuration of Attachment Storage
 
-    .. config:option:: compression_level :: Set zlib compression level
+    .. config:option:: compression_level
 
         Defines zlib compression level for the attachments from ``1`` (lowest,
         fastest) to ``9`` (highest, slowest). A value of ``0`` disables
@@ -33,7 +33,7 @@
             [attachments]
             compression_level = 8
 
-    .. config:option:: compressible_types :: List of attachment types for compression
+    .. config:option:: compressible_types
 
         Since compression is ineffective for some types of files, it is
         possible to let CouchDB compress only some types of attachments,
@@ -49,7 +49,7 @@
 
 .. config:section:: stats :: Statistic Calculation
 
-    .. config:option:: interval :: Statistics gathering interval
+    .. config:option:: interval
 
         Interval between gathering statistics in seconds::
 
@@ -218,11 +218,11 @@
 
 .. config:section:: csp :: Content-Security-Policy
 
-    You can configure ``Content-Security-Policy`` header for Fauxton, attachments and
-    show/list functions separately. See `MDN Content-Security-Policy <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy>`_
-    for more details on CSP.
+  You can configure ``Content-Security-Policy`` header for Fauxton, attachments and
+  show/list functions separately. See `MDN Content-Security-Policy <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy>`_
+  for more details on CSP.
 
-    .. config:option:: utils_enable :: Enable Content-Security-Policy header (Fauxton)
+    .. config:option:: utils_enable
 
         Enable the sending of the header ``Content-Security-Policy`` for ``/_utils``.
         Defaults to ``true``::
@@ -230,35 +230,35 @@
             [csp]
             utils_enable = true
 
-    .. config:option:: utils_header_value :: Set CSP-Header value (Fauxton)
+    .. config:option:: utils_header_value
 
         Specifies the exact header value to send. Defaults to::
 
             [csp]
             utils_header_value = default-src 'self'; img-src 'self'; font-src *; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';
 
-    .. config:option:: attachments_enable :: Enable CSP-Header (attachments)
+    .. config:option:: attachments_enable
 
         Enable sending the ``Content-Security-Policy`` header for attachments::
 
             [csp]
             attachments_enable = true
 
-    .. config:option:: attachments_header_value :: Set CSP-Header value (attachments)
+    .. config:option:: attachments_header_value
 
         Specifies the exact header value to send. Defaults to::
 
             [csp]
             attachments_header_value = sandbox
 
-    .. config:option:: showlist_enable :: Enable CSP-Header (Show/List-Functions)
+    .. config:option:: showlist_enable
 
         Enable sending the ``Content-Security-Policy`` header for show and list functions::
 
             [csp]
             showlist_enable = true
 
-    .. config:option:: showlist_header_value :: Set CSP-Header value (Show/List-Functions)
+    .. config:option:: showlist_header_value
 
         Specifies the exact header value to send. Defaults to::
 
@@ -270,14 +270,14 @@
 
     Experimental support of CSP headers for ``/_utils`` (Fauxton).
 
-    .. config:option:: enable :: Enable CSP-Header (deprecated)
+    .. config:option:: enable
 
         Enable the sending of the Header ``Content-Security-Policy``::
 
             [csp]
             enable = true
 
-    .. config:option:: header_value :: Set CSP-Header value (deprecated)
+    .. config:option:: header_value
 
         You can change the default value for the Header which is sent::
 
@@ -291,8 +291,7 @@
 
 .. config:section:: purge :: Configuration of Database Purge
 
-    .. config:option:: max_document_id_number :: Allowed number of documents \
-        per Delete-Request
+    .. config:option:: max_document_id_number
 
         .. versionadded:: 3.0
 
@@ -301,8 +300,7 @@
             [purge]
             max_document_id_number = 100
 
-    .. config:option:: max_revisions_number :: Allowed number of accumulated \
-        revisions per Purge-Request
+    .. config:option:: max_revisions_number
 
         .. versionadded:: 3.0
 
@@ -312,8 +310,7 @@
             [purge]
             max_revisions_number = 1000
 
-    .. config:option:: index_lag_warn_seconds :: Allowed duration for purge \
-        checkpoint document
+    .. config:option:: index_lag_warn_seconds
 
         .. versionadded:: 3.0
 
@@ -330,8 +327,7 @@
 
 .. config:section:: prometheus :: Configuration of Prometheus Options
 
-    .. config:option:: additional_port :: Enable a separate, non-authenticated port \
-        for prometheus data
+    .. config:option:: additional_port
 
         .. versionadded:: 3.2
 
@@ -340,7 +336,7 @@
             [prometheus]
             additional_port = true
 
-    .. config:option:: bind_address :: IP address binding
+    .. config:option:: bind_address
 
         .. versionadded:: 3.2
 
@@ -349,11 +345,11 @@
             [prometheus]
             bind_address = 127.0.0.1
 
-    .. config:option:: port :: Port for querying Prometheus data without authentication
+    .. config:option:: port
 
         .. versionadded:: 3.2
 
-        The port on which clients can query prometheus endpoint data without authentication::
+        The port on which clients can query prometheus endpoint data without authentication
 
             [prometheus]
             port = 17986
diff --git a/src/docs/src/config/query-servers.rst b/src/docs/src/config/query-servers.rst
index 1d81665..cba7646 100644
--- a/src/docs/src/config/query-servers.rst
+++ b/src/docs/src/config/query-servers.rst
@@ -65,7 +65,7 @@
 
 For more info about the available options, please consult ``couchjs -h``.
 
-.. _Mozilla SpiderMonkey: https://spidermonkey.dev/
+.. _Mozilla SpiderMonkey: https://developer.mozilla.org/en/docs/SpiderMonkey
 
 .. seealso::
     The :ref:`Mango Query Server <api/db/_find>` is a declarative language
@@ -92,7 +92,8 @@
             [query_server_config]
             commit_freq = 5
 
-    .. config:option:: os_process_limit :: Query Server process hard limit
+    .. config:option:: os_process_limit :: Query Server process hard
+                       limit
 
         Hard limit on the number of OS processes usable by Query
         Servers. The default value is ``100``::
@@ -106,7 +107,8 @@
         resources. Production settings are typically 10-20 times the
         default value.
 
-    .. config:option:: os_process_soft_limit :: Query Server process soft limit
+    .. config:option:: os_process_soft_limit :: Query Server process
+                       soft limit
 
         Soft limit on the number of OS processes usable by Query
         Servers. The default value is ``100``::
@@ -241,7 +243,7 @@
 
         Set to ``true`` to disable the "index all fields" text index. This can lead
         to out of memory issues when there are documents with nested array fields.
-        Defaults to ``false``.::
+        Defaults to ``false``.
 
             [mango]
             index_all_disabled = false
@@ -251,20 +253,20 @@
         Sets the default number of results that will be returned in a
         :ref:`_find <api/db/_find>` response. Individual requests can override this
         by setting ``limit`` directly in the query parameters.
-        Defaults to ``25``.::
+        Defaults to ``25``.
 
             [mango]
             default_limit = 25
 
-    .. config:option:: index_scan_warning_threshold :: Ratio threshold that generates \
-        an index scan warning
+    .. config:option:: index_scan_warning_threshold :: Ratio threshold that generates an
+       index scan warning
 
         This sets the ratio between documents scanned and results matched that
         will generate a warning in the _find response. For example, if a query
         requires reading 100 documents to return 10 rows, a warning will be
         generated if this value is ``10``.
 
-        Defaults to ``10``. Setting the value to ``0`` disables the warning.::
+        Defaults to ``10``. Setting the value to ``0`` disables the warning.
 
             [mango]
             index_scan_warning_threshold = 10
diff --git a/src/docs/src/config/replicator.rst b/src/docs/src/config/replicator.rst
index 1f94efe..d76e908 100644
--- a/src/docs/src/config/replicator.rst
+++ b/src/docs/src/config/replicator.rst
@@ -23,7 +23,7 @@
 
 .. config:section:: replicator :: Replicator Database Configuration
 
-    .. config:option:: max_jobs :: Maximum replications jobs
+    .. config:option:: max_jobs
 
         .. versionadded:: 2.1
 
@@ -43,7 +43,7 @@
              [replicator]
              max_jobs = 500
 
-    .. config:option:: interval :: Checking interval of replication jobs
+    .. config:option:: interval
 
         .. versionadded:: 2.1
 
@@ -54,7 +54,7 @@
              [replicator]
              interval = 60000
 
-    .. config:option:: max_churn :: Maximum number of jobs to start and stop
+    .. config:option:: max_churn
 
         .. versionadded:: 2.1
 
@@ -66,7 +66,7 @@
              [replicator]
              max_churn = 20
 
-    .. config:option:: max_history :: Maximum number of events recorded for each job
+    .. config:option:: max_history
 
         Maximum number of events recorded for each job. This parameter defines
         an upper bound on the consecutive failure count for a job, and in turn
@@ -77,8 +77,7 @@
              [replicator]
              max_history = 20
 
-    .. config:option:: update_docs :: Update replication document with error and \
-        triggered states
+    .. config:option:: update_docs
 
         .. versionadded:: 2.1
 
@@ -89,7 +88,7 @@
              [replicator]
              update_docs = false
 
-    .. config:option:: worker_batch_size :: Batch size of workers
+    .. config:option:: worker_batch_size
 
         With lower batch sizes checkpoints are done more frequently. Lower
         batch sizes also reduce the total amount of used RAM memory::
@@ -97,7 +96,7 @@
             [replicator]
             worker_batch_size = 500
 
-    .. config:option:: worker_processes :: Number of worker processes
+    .. config:option:: worker_processes
 
         More worker processes can give higher network throughput but can also
         imply more disk and network IO::
@@ -105,14 +104,14 @@
             [replicator]
             worker_processes = 4
 
-    .. config:option:: http_connections :: Maximum number of HTTP connections
+    .. config:option:: http_connections
 
         Maximum number of HTTP connections per replication::
 
             [replicator]
             http_connections = 20
 
-    .. config:option:: connection_timeout :: Per replication connection timeout
+    .. config:option:: connection_timeout
 
         HTTP connection timeout per replication.
         This is divided by three (3) when the replicator makes changes feed requests.
@@ -122,7 +121,7 @@
             [replicator]
             connection_timeout = 30000
 
-    .. config:option:: retries_per_request :: Number of retries per request
+    .. config:option:: retries_per_request
 
         .. versionchanged:: 2.1.1
 
@@ -136,7 +135,7 @@
             [replicator]
             retries_per_request = 5
 
-    .. config:option:: socket_options :: Erlang socket options
+    .. config:option:: socket_options
 
         Some socket options that might boost performance in some scenarios:
 
@@ -152,7 +151,7 @@
 
         .. _inet: http://www.erlang.org/doc/man/inet.html#setopts-2
 
-    .. config:option:: checkpoint_interval :: Replication checkpoint interval
+    .. config:option:: checkpoint_interval
 
         .. versionadded:: 1.6
 
@@ -167,7 +166,7 @@
         higher values will lower bandwidth and make fewer requests for
         infrequently updated databases.
 
-    .. config:option:: use_checkpoints :: Use checkpoints during replication
+    .. config:option:: use_checkpoints
 
         .. versionadded:: 1.6
 
@@ -188,21 +187,21 @@
             Disabling checkpoints is **not recommended** as CouchDB will scan
             the Source database's changes feed from the beginning.
 
-    .. config:option:: cert_file :: Path to user PEM certificate file
+    .. config:option:: cert_file
 
         Path to a file containing the user's certificate::
 
             [replicator]
             cert_file = /full/path/to/server_cert.pem
 
-    .. config:option:: key_file :: Path to private user PEM file
+    .. config:option:: key_file
 
         Path to file containing user's private PEM encoded key::
 
             [replicator]
             key_file = /full/path/to/server_key.pem
 
-    .. config:option:: password :: Optional password for protected key file
+    .. config:option:: password
 
         String containing the user's password. Only used if the private key file
         is password protected::
@@ -210,14 +209,14 @@
             [replicator]
             password = somepassword
 
-    .. config:option:: verify_ssl_certificates :: Check peer certificates
+    .. config:option:: verify_ssl_certificates
 
         Set to true to validate peer certificates::
 
             [replicator]
             verify_ssl_certificates = false
 
-    .. config:option:: ssl_trusted_certificates_file :: Trusted peer certificates
+    .. config:option:: ssl_trusted_certificates_file
 
         File containing a list of peer trusted certificates (in the PEM
         format)::
@@ -225,8 +224,7 @@
             [replicator]
             ssl_trusted_certificates_file = /etc/ssl/certs/ca-certificates.crt
 
-    .. config:option:: ssl_certificate_max_depth :: Maximum peer certificate \
-        depth checking size
+    .. config:option:: ssl_certificate_max_depth
 
         Maximum peer certificate depth (must be set even if certificate
         validation is off)::
@@ -234,7 +232,7 @@
             [replicator]
             ssl_certificate_max_depth = 3
 
-    .. config:option:: auth_plugins :: List of replicator client authentication plugins
+    .. config:option:: auth_plugins
 
         .. versionadded:: 2.2
 
@@ -249,7 +247,7 @@
           [replicator]
           auth_plugins = couch_replicator_auth_session,couch_replicator_auth_noop
 
-    .. config:option:: usage_coeff :: Usage coefficient decay
+    .. config:option:: usage_coeff
 
         .. versionadded:: 3.2.0
 
@@ -261,7 +259,7 @@
             [replicator]
             usage_coeff = 0.5
 
-    .. config:option:: priority_coeff :: Priority coefficient decays
+    .. config:option:: priority_coeff
 
         .. versionadded:: 3.2.0
 
@@ -285,25 +283,15 @@
 
 .. config:section:: replicator.shares :: Per-Database Fair Share Allocation
 
-    .. config:option:: $replicator_db :: Value for a replicator database
+    .. config:option:: $replicator_db
 
         .. versionadded:: 3.2.0
 
-        Fair share configuration section. Higher share values results in a
+        Fair share configuration section. More shares result in a
         higher chance that jobs from that db get to run. The default
         value is 100, minimum is 1 and maximum is 1000. The
-        configuration may be set even if the database does not exist.
-
-        In this context the option ``$replicator_db`` acts as a placeholder
-        for your replicator database name. The default replicator database is
-        ``_replicator``. Additional replicator databases can be created. To be
-        recognized as such by the system, their database names should end with
-        ``/_replicator``. See the :ref:`Replicator Database <replicator>`
-        section for more info.
-
-        ::
+        configuration may be set even if the database does not exist::
 
             [replicator.shares]
-            _replicator = 50
-            foo/_replicator = 25
-            bar/_replicator = 25
+            _replicator_db = 100
+            $another/_replicator_db = 100
diff --git a/src/docs/src/config/resharding.rst b/src/docs/src/config/resharding.rst
index 91531aa..b20e85f 100644
--- a/src/docs/src/config/resharding.rst
+++ b/src/docs/src/config/resharding.rst
@@ -23,7 +23,7 @@
 
 .. config:section:: resharding :: Resharding Configuration
 
-    .. config:option:: max_jobs :: Maximum resharding jobs per node
+    .. config:option:: max_jobs
 
         Maximum number of resharding jobs per cluster node. This includes
         completed, failed, and running jobs. If the job appears in the
@@ -34,7 +34,7 @@
              [reshard]
              max_jobs = 48
 
-    .. config:option:: max_history :: Maximum size of the event log
+    .. config:option:: max_history
 
         Each resharding job maintains a timestamped event log. This setting
         limits the maximum size of that log::
@@ -42,8 +42,7 @@
              [reshard]
              max_history = 20
 
-    .. config:option:: max_retries :: Maximum number of retries before failing \
-        resharding job
+    .. config:option:: max_retries
 
         How many times to retry shard splitting steps if they fail. For
         example, if indexing or topping off fails, it will be retried up to
@@ -52,14 +51,14 @@
              [reshard]
              max_retries = 1
 
-    .. config:option:: retry_interval_sec :: Wait time between resharding retries
+    .. config:option:: retry_interval_sec
 
         How long to wait between subsequent retries::
 
              [reshard]
              retry_interval_sec = 10
 
-    .. config:option:: delete_source :: Delete source after resharding
+    .. config:option:: delete_source
 
         Indicates if the source shard should be deleted after resharding has
         finished. By default, it is ``true`` as that would recover the space
@@ -69,7 +68,7 @@
              [reshard]
              delete_source = true
 
-    .. config:option:: update_shard_map_timeout_sec :: Shard map update waiting time
+    .. config:option:: update_shard_map_timeout_sec
 
         How many seconds to wait for the shard map update operation to
         complete. If there is a large number of shard db changes waiting to
@@ -78,7 +77,7 @@
             [reshard]
             update_shard_map_timeout_sec = 60
 
-    .. config:option:: source_close_timeout_sec :: Source shard wait time before close
+    .. config:option:: source_close_timeout_sec
 
         How many seconds to wait for the source shard to close. "Close" in this
         context means that client requests which keep the database open have
@@ -87,8 +86,7 @@
             [reshard]
             source_close_timeout_sec = 600
 
-    .. config:option:: require_node_param :: Require node parameter when creating \
-        resharding job
+    .. config:option:: require_node_param
 
         Require users to specify a ``node`` parameter when creating resharding
         jobs. This can be used as a safety check to avoid inadvertently
@@ -97,8 +95,7 @@
             [reshard]
             require_node_param = false
 
-    .. config:option:: require_range_param :: Require range parameter when creating \
-        resharding job
+    .. config:option:: require_range_param
 
         Require users to specify a ``range`` parameter when creating resharding
         jobs. This can be used as a safety check to avoid inadvertently
diff --git a/src/docs/src/contributing.rst b/src/docs/src/contributing.rst
index 17f66d5..31df6c9 100644
--- a/src/docs/src/contributing.rst
+++ b/src/docs/src/contributing.rst
@@ -192,7 +192,7 @@
 
 #. Line length
 
-   * The maximum line length is ``90`` characters.
+   * The maximum line length is ``80`` characters.
 
 #. Links
 
diff --git a/src/docs/src/docs.app.src b/src/docs/src/docs.app.src
index 737b9c0..35e262a 100644
--- a/src/docs/src/docs.app.src
+++ b/src/docs/src/docs.app.src
@@ -14,5 +14,5 @@
     {description, "CouchDB Documentation"},
     {vsn, git},
     {registered, []},
-    {applications, [kernel, stdlib]}
+    {applications, [kernel]}
 ]}.
diff --git a/src/docs/src/install/unix.rst b/src/docs/src/install/unix.rst
index 2623d96..17539c9 100644
--- a/src/docs/src/install/unix.rst
+++ b/src/docs/src/install/unix.rst
@@ -193,33 +193,6 @@
 
     sudo yum install erlang-reltool
 
-Fedora 36
----------
-
-On Fedora 36, you may need these packages in addition to the ones listed above:
-
-* `mozjs91-devel`
-* `erlang-rebar`
-
-If the system contains dangling links to Erlang chunk files, the compiler will
-abort. They can be deleted with the following command::
-
-    find -L /usr/lib64/erlang/lib/ -type l -name chunks | xargs rm -f
-
-Fauxton is not built on the Node.js version (v16) shipped by the system. The
-installation of v12.22.12 can be done via::
-
-    wget https://nodejs.org/download/release/v12.22.12/node-v12.22.12-linux-x64.tar.gz
-    mkdir -p /usr/local/lib/nodejs
-    tar -xvf node-v12.22.12-linux-x64.tar.gz -C /usr/local/lib/nodejs
-    export PATH=/usr/local/lib/nodejs/node-v12.22.12-linux-x64/bin:$PATH
-
-Note that due to a problem with the Python package sphinx-build, it is not
-possible to compile the documentation on Fedora 36. You can skip compiling the
-documentation via::
-
-    ./configure --disable-docs --spidermonkey-version 91
-
 Mac OS X
 --------
 
diff --git a/src/docs/src/install/upgrading.rst b/src/docs/src/install/upgrading.rst
index 97364a7..eff3dca 100644
--- a/src/docs/src/install/upgrading.rst
+++ b/src/docs/src/install/upgrading.rst
@@ -69,8 +69,8 @@
 #. Upgrade that CouchDB install in place.
 #. Start CouchDB.
 #. Double-check that the node has re-joined the cluster through the
-   :ref:`/_membership<api/server/membership>` endpoint. If your load balancer has
-   health check functionality driven by the :ref:`/_up<api/server/up>` endpoint,
+   `/_membership <api/server/membership>` endpoint. If your load balancer has
+   health check functionality driven by the `/_up <api/server/up>` endpoint,
    check whether it thinks the node is healthy as well.
 #. Repeat the last 4 steps on the remaining nodes in the cluster.
 #. Relax! You're done.
diff --git a/src/docs/src/intro/security.rst b/src/docs/src/intro/security.rst
index 0a4aebb..30c2da8 100644
--- a/src/docs/src/intro/security.rst
+++ b/src/docs/src/intro/security.rst
@@ -307,7 +307,7 @@
 - **salt** (*string*): Hash salt. Used for both ``simple`` and ``pbkdf2``
   ``password_scheme`` options.
 - **iterations** (*integer*): Number of iterations to derive key, used for ``pbkdf2``
-  ``password_scheme`` See the :ref:`configuration API <config/chttpd_auth>`:: for details.
+  ``password_scheme``
 - **type** (*string*): Document type. Constantly has the value ``user``
 
 Additionally, you may specify any custom fields that relate to the target
diff --git a/src/docs/src/json-structure.rst b/src/docs/src/json-structure.rst
index 2220244..d3d0f0a 100644
--- a/src/docs/src/json-structure.rst
+++ b/src/docs/src/json-structure.rst
@@ -282,8 +282,6 @@
 | use_checkpoints (optional)     | Whether to use replication checkpoints      |
 |                                | or not.                                     |
 +--------------------------------+---------------------------------------------+
-| winning_revs_only (optional)   | Replicate only the winning revisions.       |
-+--------------------------------+---------------------------------------------+
 
 .. _replication-status:
 
@@ -324,10 +322,6 @@
 +--------------------+-------------------------------------------+
 | missing_found      | Number of missing documents found         |
 +--------------------+-------------------------------------------+
-| bulk_get_attempts  | Number of attempted _bulk_get fetches     |
-+--------------------+-------------------------------------------+
-| bulk_get_docs      | Number of documents read with _bulk_get   |
-+--------------------+-------------------------------------------+
 
 .. _request_object:
 
diff --git a/src/docs/src/maintenance/compaction.rst b/src/docs/src/maintenance/compaction.rst
index c15344f..d022f55 100644
--- a/src/docs/src/maintenance/compaction.rst
+++ b/src/docs/src/maintenance/compaction.rst
@@ -141,24 +141,6 @@
 re-entering. If ``strict_window`` is left at its default of false, the active
 compactions will be allowed to complete but no new compactions will be started.
 
-.. note::
-    When a channel is created, a 60s timer is started to check if the channel
-    should be processing any compactions based on the time window defined in your config.
-
-    The channel is set to pending and after 60s it checks if it should be running
-    at all and is set to paused if not.
-    At the end of the check another 60s timer is started to schedule another check.
-
-    Eventually, when in the time window, it starts processing compactions.
-    But since it will continue running a check every 60s running compaction
-    processes will be suspended when exiting the time window and resume them when
-    re-entering the window.
-
-    This means that for the first 60s after exiting the time window,
-    or when a channel is created and you are outside the time window,
-    compactions are run for up to 60s.This is different to the behavior of the
-    old compaction daemon which would cancel the compactions outright.
-
 Migration Guide
 ---------------
 
diff --git a/src/docs/src/query-server/index.rst b/src/docs/src/query-server/index.rst
index 5673655..02be469 100644
--- a/src/docs/src/query-server/index.rst
+++ b/src/docs/src/query-server/index.rst
@@ -27,7 +27,7 @@
 `Content-Type` header of a `temporary view`. Design documents that do not
 specify a ``language`` property are assumed to be of type `javascript`.
 
-.. _Mozilla SpiderMonkey: https://spidermonkey.dev/
+.. _Mozilla SpiderMonkey: https://developer.mozilla.org/en/docs/SpiderMonkey
 
 .. toctree::
     :maxdepth: 2
diff --git a/src/docs/src/replication/conflicts.rst b/src/docs/src/replication/conflicts.rst
index f876400..67675dd 100644
--- a/src/docs/src/replication/conflicts.rst
+++ b/src/docs/src/replication/conflicts.rst
@@ -112,7 +112,7 @@
 by returning a :statuscode:`409` error. This is because, when you
 PUT a new version of a document, you must give the ``_rev`` of the previous
 version. If that ``_rev`` has already been superseded, the update is rejected
-with a :statuscode:`409` response.
+with a  :statuscode:`409` response.
 
 So imagine two users on the same node are fetching Bob's business card, updating
 it concurrently, and writing it back:
diff --git a/src/docs/src/replication/replicator.rst b/src/docs/src/replication/replicator.rst
index 8f02587..4786786 100644
--- a/src/docs/src/replication/replicator.rst
+++ b/src/docs/src/replication/replicator.rst
@@ -26,9 +26,6 @@
    their jobs. Previously replication jobs were scheduled without any regard of
    their originating database.
 
-.. versionchanged:: 3.3.0 ``winning_revs_only: true`` replicator option to
-   replicate the winning document revisions.
-
 The ``_replicator`` database works like any other in CouchDB, but
 documents added to it will trigger replications. Create (``PUT`` or
 ``POST``) a document to start replication. ``DELETE`` a replication
@@ -804,34 +801,3 @@
 they are used. If they are not, then URL userinfo is checked. If credentials
 are found there, then those credentials are used, otherwise basic auth header
 is used.
-
-Replicate Winning Revisions Only
-================================
-
-Use the ``winning_revs_only: true`` option to replicate "winning" document
-revisions only. These are the revisions that would be returned by the ``GET
-db/doc`` API endpoint by default, or appear in the ``_changes`` feed with the
-default parameters.
-
-.. code-block:: http
-
-    POST http://couchdb:5984/_replicate HTTP/1.1
-    Accept: application/json
-    Content-Type: application/json
-
-    {
-        "winning_revs_only" : true
-        "source" : "http://source:5984/recipes",
-        "target" : "http://target:5984/recipes",
-    }
-
-Replication with this mode discards conflicting revisions, so it could be one
-way to remove conflicts through replication.
-
-Replication IDs and checkpoint IDs, generated by ``winning_revs_only: true``
-replications will be different than those generated by default, so it is
-possible to first replicate the winning revisions, then later, to
-"backfill" the rest of the revisions with a regular replication job.
-
-``winning_revs_only: true`` option can be combined with filters or other
-options like ``continuous: true`` or ``create_target: true``.
diff --git a/src/docs/src/setup/cluster.rst b/src/docs/src/setup/cluster.rst
index ea6f6cd..5588b97 100644
--- a/src/docs/src/setup/cluster.rst
+++ b/src/docs/src/setup/cluster.rst
@@ -248,7 +248,7 @@
 
 When you click "Setup Cluster" you are asked for admin credentials again, and
 then to add nodes by IP address. To get more nodes, go through the same install
-procedure for each node, using the same machine to perform the setup process.
+procedure for each node, using the same machien to perform the setup process.
 Be sure to specify the total number of nodes you expect to add to the cluster
 before adding nodes.
 
@@ -362,10 +362,7 @@
         ]
     }
 
-If the cluster is enabled and ``all_nodes`` and ``cluster_nodes`` lists don't match, use curl to add nodes with
-PUT ``/_node/_local/_nodes/couchdb@<reachable-ip-address|fully-qualified-domain-name>``
-and remove nodes with
-DELETE ``/_node/_local/_nodes/couchdb@<reachable-ip-address|fully-qualified-domain-name>``
+Ensure the ``all_nodes`` and ``cluster_nodes`` lists match.
 
 You CouchDB cluster is now set up.
 
diff --git a/src/docs/src/whatsnew/3.0.rst b/src/docs/src/whatsnew/3.0.rst
index b70c418..e208b04 100644
--- a/src/docs/src/whatsnew/3.0.rst
+++ b/src/docs/src/whatsnew/3.0.rst
@@ -176,7 +176,7 @@
   This should resolve a long-standing gradual memory increase bug in CouchDB.
 
 * :ghissue:`2613`: Simultaneous attempts to create the same new database should
-  no longer result in a :statuscode:`500` error.
+  no longer result in a :code 500: error.
 
 * :ghissue:`2678`: Defaults for the ``smoosh`` compaction daemon are now consistent
   with the shipped ``default.ini`` file.
@@ -268,9 +268,9 @@
 
 * :ghissue:`1875`, :ghissue:`2437`, :ghissue:`2423`: CouchDB now supports linking against
   SpiderMonkey 60 or SpiderMonkey 1.8.5. SpiderMonkey 60 provides enhanced support for
-  ES5, ES6, and ES2016+. Full compatibility information is available at the
-  `ECMAScript compatibility table`_. Click on "Show obsolete platforms", then look for
-  "FF 60 ESR" in the list of engine types.
+  ES5, ES6, and ES2016+. Full compatibility information is available at the `ECMAScript
+  compatibility table`_: click on "Show obsolete platforms," then look for "FF 60 ESR"
+  in the list of engine types.
 
   However, it was discovered that on some ARM 64-bit distributions, SM 60 segfaults
   frequently, including the SM 60 packages on CentOS 8 and Debian 10.
@@ -419,7 +419,7 @@
   to match other case clauses.
 
 * :ghissue:`1897`: The ``/{db}/_bulk_docs`` endpoint now correctly catches invalid
-  (*i.e.*, non-hexadecimal) ``_rev_`` values and responds with a :statuscode:`400` error.
+  (*i.e.*, non-hexadecimal) ``_rev_`` values and responds with a :code 400: error.
 
 * :ghissue:`2321`: CouchDB no longer requires Basic auth credentials to reach the
   ``/_session`` endpoint for login, even when ``require_valid_user`` is enabled.
@@ -435,8 +435,8 @@
 * :ghissue:`2153`: CouchDB no longer may return a ``badmatch`` error when querying
   ``all_docs`` with a passed ``keys`` array.
 
-* :ghissue:`2137`: If search is not available, return a :statuscode:`400` instead of a
-  :statuscode:`500` status code.
+* :ghissue:`2137`: If search is not available, return a :code 400: instead of a
+  :code 500: status code.
 
 * :ghissue:`2077`: Any failed ``fsync(2)`` calls are now correctly raised to avoid
   data corruption arising from retry attempts.
@@ -540,8 +540,8 @@
 * :ghissue:`2337`: The md5 shim (introduced to support FIPS-compliance) is now
   used consistently throughout the code base.
 
-* :ghissue:`2270`: Negative and non-integer ``heartbeat`` values now return
-  :statuscode:`400`.
+* :ghissue:`2270`: Negative and non-integer ``heartbeat`` values now return :code 400:
+  Bad Request.
 
 * :ghissue:`2268`: When rescheduling jobs, CouchDB now stops sufficient running jobs
   to make room for the pending jobs.
diff --git a/src/docs/src/whatsnew/3.2.rst b/src/docs/src/whatsnew/3.2.rst
index d9962c5..9e079a2 100644
--- a/src/docs/src/whatsnew/3.2.rst
+++ b/src/docs/src/whatsnew/3.2.rst
@@ -178,7 +178,7 @@
     ``enable_xframe_options``, ``max_http_request_size``.
 
   * Config options moved from ``[couch_httpd_auth]`` to ``[chttpd_auth]``:
-    ``authentication_redirect``, ``timeout``, ``auth_cache_size``,
+    ``authentication_redirect``, ``require_valid_user``, ``timeout``, ``auth_cache_size``,
     ``allow_persistent_cookies``, ``iterations``, ``min_iterations``, ``max_iterations``,
     ``password_scheme``, ``proxy_use_secret``, ``public_fields``, ``secret``,
     ``users_db_public``, ``x_auth_roles``, ``x_auth_token``, ``x_auth_username``,
diff --git a/src/docs/templates/index.html b/src/docs/templates/index.html
new file mode 100644
index 0000000..3c4b0e9
--- /dev/null
+++ b/src/docs/templates/index.html
@@ -0,0 +1,195 @@
+<!--
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+-->
+
+{% extends "layout.html" %}
+{% set title = _('Overview') %}
+{% block body %}
+  <h1>Apache CouchDB<sup>&reg;</sup> {{ release|e }} Documentation</h1>
+  <p>
+    {{ _('Welcome! This is') }}
+    {% block description %}{{ _('the documentation for') }} Apache CouchDB<sup>&reg;</sup>
+    {{ release|e }}{% if last_updated %}, {{ _('last updated') }} {{ last_updated|e }}{% endif %}{% endblock %}.
+</p>
+{% block tables %}
+<h2>Meet CouchDB</h2>
+<table class="contentstable" align="center">
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("whatsnew/" + version) }}">
+          What's new in CouchDB {{ version }}?
+        </a>
+        <br />
+        <span class="linkdescr">
+          or browse <a href="{{ pathto("whatsnew/index") }}">all "What's new" documents</a>
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/why") }}">
+          Why CouchDB?
+        </a>
+        <br />
+        <span class="linkdescr">why you might want to use CouchDB</span>
+      </p>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/overview") }}">
+          Technical Overview
+        </a>
+        <br />
+        <span class="linkdescr">a quick overview of technology used</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/consistency") }}">
+          Eventual Consistency
+        </a>
+        <br />
+        <span class="linkdescr">how CouchDB handles synchronization</span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+<h2>Getting started</h2>
+<table class="contentstable" align="center">
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("install/index") }}">
+          Installation guides
+        </a>
+        <br />
+        <span class="linkdescr">
+          install CouchDB on <a href="{{ pathto("install/windows") }}">Windows</a>,
+          <a href="{{ pathto("install/mac") }}">OS X</a> or
+          <a href="{{ pathto("install/unix") }}">Linux</a>
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/tour") }}">
+          Tutorial
+        </a>
+        <br />
+        <span class="linkdescr">start using CouchDB with <a href="{{ pathto("fauxton/index") }}">Fauxton</a> and
+          <a href="{{ pathto("intro/curl") }}">cURL</a></span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("intro/api") }}">
+          HTTP API overview
+        </a>
+        <br />
+        <span class="linkdescr">a short walk though the API</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("cluster/index") }}">
+          Clustering
+        </a>
+        <br />
+        <span class="linkdescr">setup and manage a cluster of nodes</span>
+      </p>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("ddocs/views/intro") }}">
+          Guide to Views
+        </a>
+        <br />
+        <span class="linkdescr">how to query documents with MapReduce</span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("api/database/find") }}">
+          Mango Query Server
+        </a>
+        <br />
+        <span class="linkdescr">
+          simple JSON CouchDB queries without MapReduce
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("replication/intro") }}">
+          Replication
+        </a>
+        <br />
+        <span class="linkdescr">
+          painless master-master data synchronization
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("ddocs/ddocs") }}">
+          Design Documents
+        </a>
+        <br />
+        <span class="linkdescr">
+          transform, update or validate your documents
+        </span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+<h2>Reference Documentation &amp; Advanced Topics</h2>
+<table class="contentstable" align="center"><tr>
+  <tr>
+    <td width="50%">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("api/index") }}">
+          Complete HTTP API Reference
+        </a>
+        <br />
+        <span class="linkdescr">
+          something to come back to
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("config/index") }}">
+          Configuration Reference
+        </a>
+        <br />
+        <span class="linkdescr">tweak CouchDB to your liking</span>
+      </p>
+    </td>
+    <td width="50%" style="vertical-align: top;">
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("maintenance/index") }}">
+          Maintenance
+        </a>
+        <br />
+        <span class="linkdescr">
+          how to take care of your CouchDB
+        </span>
+      </p>
+      <p class="biglink">
+        <a class="biglink" href="{{ pathto("partitioned-dbs/index") }}">
+          Partitioned Databases
+        </a>
+        <br />
+        <span class="linkdescr">
+          how to use Partitioned Databases in CouchDB
+        </span>
+      </p>
+    </td>
+  </tr>
+</table>
+
+
+<h2>Links</h2>
+<table class="contentstable" align="center"><tr>
+  <td>
+    <p class="biglink"><a class="biglink" href="http://couchdb.apache.org/#download">Download CouchDB</a></p>
+    <p class="biglink"><a class="biglink" href="{{ pathto("http-api") }}">HTTP API Reference</a></p>
+    <p class="biglink"><a class="biglink" href="{{ pathto("config-ref") }}">Configuration Reference</a></p>
+  </td></tr>
+</table>
+{% endblock %}
+{% endblock %}