diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 25456ec1e..74d5e05fe 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -55,6 +55,23 @@ jobs:
rm Gemfile.lock
make all
+ doc-gen:
+ runs-on: ubuntu-latest
+ container:
+ image: debian:bookworm
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Install packages
+ run: |
+ apt-get update
+ apt-get install -y capnproto golang
+ - name: Vet and build doc generator
+ working-directory: contrib/doc-gen
+ run: |
+ go vet ./...
+ go build ./...
+
verify-commits:
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/destroy.html b/_doc/en/31.0.0/ipc/blocktemplate/destroy.html
new file mode 100644
index 000000000..a58b4eb20
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/destroy.html
@@ -0,0 +1,16 @@
+---
+name: destroy
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/destroy/
+---
+
+
Method on interface BlockTemplate.
+destroy @0 (
+ context :Context
+) -> (
+
+);
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getBlock.html b/_doc/en/31.0.0/ipc/blocktemplate/getBlock.html
new file mode 100644
index 000000000..80364d5c7
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getBlock.html
@@ -0,0 +1,16 @@
+---
+name: getBlock
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getBlock/
+---
+
+Method on interface BlockTemplate.
+getBlock @2 (
+ context :Context
+) -> (
+ result :Data
+);
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getBlockHeader.html b/_doc/en/31.0.0/ipc/blocktemplate/getBlockHeader.html
new file mode 100644
index 000000000..7b5f084cb
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getBlockHeader.html
@@ -0,0 +1,16 @@
+---
+name: getBlockHeader
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getBlockHeader/
+---
+
+Method on interface BlockTemplate.
+getBlockHeader @1 (
+ context :Context
+) -> (
+ result :Data
+);
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseMerklePath.html b/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseMerklePath.html
new file mode 100644
index 000000000..c927dff62
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseMerklePath.html
@@ -0,0 +1,23 @@
+---
+name: getCoinbaseMerklePath
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getCoinbaseMerklePath/
+---
+
+Method on interface BlockTemplate.
+getCoinbaseMerklePath @6 (
+ context :Context
+) -> (
+ result :List(Data)
+);
+
+
Compute merkle path to the coinbase transaction
+
+ - returns
+ - merkle path ordered from the deepest
+
+
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseTx.html b/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseTx.html
new file mode 100644
index 000000000..75d79fb06
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getCoinbaseTx.html
@@ -0,0 +1,19 @@
+---
+name: getCoinbaseTx
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getCoinbaseTx/
+---
+
+Method on interface BlockTemplate.
+getCoinbaseTx @5 (
+ context :Context
+) -> (
+ result :CoinbaseTx
+);
+
+
Return fields needed to construct a coinbase transaction
+
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getTxFees.html b/_doc/en/31.0.0/ipc/blocktemplate/getTxFees.html
new file mode 100644
index 000000000..eb58a2e2e
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getTxFees.html
@@ -0,0 +1,16 @@
+---
+name: getTxFees
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getTxFees/
+---
+
+Method on interface BlockTemplate.
+getTxFees @3 (
+ context :Context
+) -> (
+ result :List(Int64)
+);
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/getTxSigops.html b/_doc/en/31.0.0/ipc/blocktemplate/getTxSigops.html
new file mode 100644
index 000000000..f33f91d1f
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/getTxSigops.html
@@ -0,0 +1,16 @@
+---
+name: getTxSigops
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/getTxSigops/
+---
+
+Method on interface BlockTemplate.
+getTxSigops @4 (
+ context :Context
+) -> (
+ result :List(Int64)
+);
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/index.html b/_doc/en/31.0.0/ipc/blocktemplate/index.html
new file mode 100644
index 000000000..17a1eca6f
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/index.html
@@ -0,0 +1,24 @@
+---
+name: BlockTemplate
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+btcifaceindex: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/
+---
+
+Methods on the BlockTemplate IPC interface:
+
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/interruptWait.html b/_doc/en/31.0.0/ipc/blocktemplate/interruptWait.html
new file mode 100644
index 000000000..5cf84ba1e
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/interruptWait.html
@@ -0,0 +1,19 @@
+---
+name: interruptWait
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/interruptWait/
+---
+
+Method on interface BlockTemplate.
+interruptWait @9 (
+
+) -> (
+
+);
+
+
Interrupts the current wait for the next block template.
+
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/submitSolution.html b/_doc/en/31.0.0/ipc/blocktemplate/submitSolution.html
new file mode 100644
index 000000000..149964e90
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/submitSolution.html
@@ -0,0 +1,35 @@
+---
+name: submitSolution
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/submitSolution/
+---
+
+Method on interface BlockTemplate.
+submitSolution @7 (
+ context :Context,
+ version :UInt32,
+ timestamp :UInt32,
+ nonce :UInt32,
+ coinbase :Data
+) -> (
+ result :Bool
+);
+
+
Construct and broadcast the block. Modifies the template in place, updating the fields listed below as well as the merkle root.
+
+ - param [in]
version
+ - version block header field
+ - param [in]
timestamp
+ - time block header field (unix timestamp)
+ - param [in]
nonce
+ - nonce block header field
+ - param [in]
coinbase
+ - complete coinbase transaction (including witness) @note unlike the submitblock RPC, this method does NOT add the coinbase witness automatically.
+ - returns
+ - if the block was processed, does not necessarily indicate validity. @note Returns true if the block is already known, which can happen if the solved block is constructed and broadcast by multiple nodes (e.g. both the miner who constructed the template and the pool).
+
+
+
diff --git a/_doc/en/31.0.0/ipc/blocktemplate/waitNext.html b/_doc/en/31.0.0/ipc/blocktemplate/waitNext.html
new file mode 100644
index 000000000..ff2879b20
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/blocktemplate/waitNext.html
@@ -0,0 +1,26 @@
+---
+name: waitNext
+btcversion: 31.0.0
+btcgroup: blocktemplate
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/blocktemplate/waitNext/
+---
+
+Method on interface BlockTemplate.
+
+
+
Waits for fees in the next block to rise, a new tip or the timeout.
+
+ - param [in]
options
+ - Control the timeout (default forever) and by how much total fees for the next block should rise (default infinite).
+ - returns
+ - a new BlockTemplate or nothing if the timeout occurs. On testnet this will additionally return a template with difficulty 1 if the tip is more than 20 minutes old.
+
+
+
diff --git a/_doc/en/31.0.0/ipc/echo/destroy.html b/_doc/en/31.0.0/ipc/echo/destroy.html
new file mode 100644
index 000000000..d96879ebf
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/echo/destroy.html
@@ -0,0 +1,16 @@
+---
+name: destroy
+btcversion: 31.0.0
+btcgroup: echo
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/echo/destroy/
+---
+
+Method on interface Echo.
+destroy @0 (
+ context :Context
+) -> (
+
+);
+
diff --git a/_doc/en/31.0.0/ipc/echo/echo.html b/_doc/en/31.0.0/ipc/echo/echo.html
new file mode 100644
index 000000000..c4308677c
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/echo/echo.html
@@ -0,0 +1,20 @@
+---
+name: echo
+btcversion: 31.0.0
+btcgroup: echo
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/echo/echo/
+---
+
+Method on interface Echo.
+echo @1 (
+ context :Context,
+ echo :Text
+) -> (
+ result :Text
+);
+
+
diff --git a/_doc/en/31.0.0/ipc/echo/index.html b/_doc/en/31.0.0/ipc/echo/index.html
new file mode 100644
index 000000000..97edaaac2
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/echo/index.html
@@ -0,0 +1,16 @@
+---
+name: Echo
+btcversion: 31.0.0
+btcgroup: echo
+btcdoctype: IPC
+btchtml: true
+btcifaceindex: true
+permalink: en/doc/31.0.0/ipc/echo/
+---
+
+Methods on the Echo IPC interface:
+
+
diff --git a/_doc/en/31.0.0/ipc/index.html b/_doc/en/31.0.0/ipc/index.html
new file mode 100644
index 000000000..b3472d035
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/index.html
@@ -0,0 +1,9 @@
+---
+name: ipcindex
+btcversion: 31.0.0
+btcgroup: index
+btcdoctype: IPC
+permalink: en/doc/31.0.0/ipc/
+---
+
+
diff --git a/_doc/en/31.0.0/ipc/init/index.html b/_doc/en/31.0.0/ipc/init/index.html
new file mode 100644
index 000000000..900b64419
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/init/index.html
@@ -0,0 +1,16 @@
+---
+name: Init
+btcversion: 31.0.0
+btcgroup: init
+btcdoctype: IPC
+btchtml: true
+btcifaceindex: true
+permalink: en/doc/31.0.0/ipc/init/
+---
+
+Methods on the Init IPC interface:
+
+
diff --git a/_doc/en/31.0.0/ipc/init/makeEcho.html b/_doc/en/31.0.0/ipc/init/makeEcho.html
new file mode 100644
index 000000000..efb4a902d
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/init/makeEcho.html
@@ -0,0 +1,17 @@
+---
+name: makeEcho
+btcversion: 31.0.0
+btcgroup: init
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/init/makeEcho/
+---
+
+Method on interface Init.
+makeEcho @1 (
+ context :Context
+) -> (
+ result :Echo
+);
+Returns the Echo interface.
+
diff --git a/_doc/en/31.0.0/ipc/init/makeMining.html b/_doc/en/31.0.0/ipc/init/makeMining.html
new file mode 100644
index 000000000..c5c96e40a
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/init/makeMining.html
@@ -0,0 +1,17 @@
+---
+name: makeMining
+btcversion: 31.0.0
+btcgroup: init
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/init/makeMining/
+---
+
+Method on interface Init.
+makeMining @3 (
+ context :Context
+) -> (
+ result :Mining
+);
+Returns the Mining interface.
+
diff --git a/_doc/en/31.0.0/ipc/mining/checkBlock.html b/_doc/en/31.0.0/ipc/mining/checkBlock.html
new file mode 100644
index 000000000..9a4834934
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/checkBlock.html
@@ -0,0 +1,35 @@
+---
+name: checkBlock
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/checkBlock/
+---
+
+Method on interface Mining.
+checkBlock @5 (
+ context :Context,
+ block :Data,
+ options :BlockCheckOptions
+) -> (
+ reason :Text,
+ debug :Text,
+ result :Bool
+);
+
+
Checks if a given block is valid.
+
+ - param [in]
block
+ - the block to check
+ - param [in]
options
+ - verification options: the proof-of-work check can be skipped in order to verify a template generated by external software.
+ - param [out]
reason
+ - failure reason (BIP22)
+ - param [out]
debug
+ - more detailed rejection reason
+ - returns
+ - whether the block is valid For signets the challenge verification is skipped when check_pow is false.
+
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/createNewBlock.html b/_doc/en/31.0.0/ipc/mining/createNewBlock.html
new file mode 100644
index 000000000..d65c2c374
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/createNewBlock.html
@@ -0,0 +1,31 @@
+---
+name: createNewBlock
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/createNewBlock/
+---
+
+Method on interface Mining.
+
+
+
Construct a new block template.
+
+ - param [in]
options
+ - options for creating the block
+ - param [in]
cooldown
+ - wait for tip to be connected and IBD to complete. If the best header is ahead of the tip, wait for the tip to catch up. It's recommended to disable this on regtest and signets with only one miner, as these could stall.
+ - returns
BlockTemplate
+ - a block template.
+ - returns
std::nullptr
+ - if the node is shut down or interrupt() is called.
+
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/getTip.html b/_doc/en/31.0.0/ipc/mining/getTip.html
new file mode 100644
index 000000000..af15fa75b
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/getTip.html
@@ -0,0 +1,20 @@
+---
+name: getTip
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/getTip/
+---
+
+Method on interface Mining.
+getTip @2 (
+ context :Context
+) -> (
+ result :BlockRef,
+ hasResult :Bool
+);
+
+
Returns the hash and height for the tip of this chain
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/index.html b/_doc/en/31.0.0/ipc/mining/index.html
new file mode 100644
index 000000000..200fde6fe
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/index.html
@@ -0,0 +1,21 @@
+---
+name: Mining
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+btcifaceindex: true
+permalink: en/doc/31.0.0/ipc/mining/
+---
+
+Methods on the Mining IPC interface:
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/interrupt.html b/_doc/en/31.0.0/ipc/mining/interrupt.html
new file mode 100644
index 000000000..4f5aa07e6
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/interrupt.html
@@ -0,0 +1,19 @@
+---
+name: interrupt
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/interrupt/
+---
+
+Method on interface Mining.
+interrupt @6 (
+
+) -> (
+
+);
+
+
Interrupts createNewBlock and waitTipChanged.
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/isInitialBlockDownload.html b/_doc/en/31.0.0/ipc/mining/isInitialBlockDownload.html
new file mode 100644
index 000000000..0db79b6ef
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/isInitialBlockDownload.html
@@ -0,0 +1,19 @@
+---
+name: isInitialBlockDownload
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/isInitialBlockDownload/
+---
+
+Method on interface Mining.
+isInitialBlockDownload @1 (
+ context :Context
+) -> (
+ result :Bool
+);
+
+
Returns whether IBD is still in progress.
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/isTestChain.html b/_doc/en/31.0.0/ipc/mining/isTestChain.html
new file mode 100644
index 000000000..53224347d
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/isTestChain.html
@@ -0,0 +1,19 @@
+---
+name: isTestChain
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/isTestChain/
+---
+
+Method on interface Mining.
+isTestChain @0 (
+ context :Context
+) -> (
+ result :Bool
+);
+
+
If this chain is exclusively used for testing
+
+
diff --git a/_doc/en/31.0.0/ipc/mining/waitTipChanged.html b/_doc/en/31.0.0/ipc/mining/waitTipChanged.html
new file mode 100644
index 000000000..94f9a1b2d
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/mining/waitTipChanged.html
@@ -0,0 +1,31 @@
+---
+name: waitTipChanged
+btcversion: 31.0.0
+btcgroup: mining
+btcdoctype: IPC
+btchtml: true
+permalink: en/doc/31.0.0/ipc/mining/waitTipChanged/
+---
+
+Method on interface Mining.
+waitTipChanged @3 (
+ context :Context,
+ currentTip :Data,
+ timeout :Float64 = 1.7976931348623157e308
+) -> (
+ result :BlockRef
+);
+
+
Waits for the connected tip to change. During node initialization, this will wait until the tip is connected (regardless of `timeout`).
+
+ - param [in]
current_tip
+ - block hash of the current chain tip. Function waits for the chain tip to differ from this.
+ - param [in]
timeout
+ - how long to wait for a new tip (default is forever)
+ - returns
BlockRef
+ - hash and height of the current chain tip after this call.
+ - returns
std::nullopt
+ - if the node is shut down or interrupt() is called.
+
+
+
diff --git a/_doc/en/31.0.0/ipc/structs/index.html b/_doc/en/31.0.0/ipc/structs/index.html
new file mode 100644
index 000000000..02ca185c4
--- /dev/null
+++ b/_doc/en/31.0.0/ipc/structs/index.html
@@ -0,0 +1,48 @@
+---
+name: structs
+btcversion: 31.0.0
+btcgroup: structs
+btcdoctype: IPC
+btchtml: true
+btcstructs:
+ - BlockCheckOptions
+ - BlockCreateOptions
+ - BlockRef
+ - BlockWaitOptions
+ - CoinbaseTx
+permalink: en/doc/31.0.0/ipc/structs/
+---
+
+Shared Cap'n Proto structs used by the IPC interfaces.
+BlockCheckOptions
+struct BlockCheckOptions {
+ checkMerkleRoot @0 :Bool = true;
+ checkPow @1 :Bool = true;
+}
+BlockCreateOptions
+struct BlockCreateOptions {
+ useMempool @0 :Bool = true;
+ blockReservedWeight @1 :UInt64 = 8000;
+ coinbaseOutputMaxAdditionalSigops @2 :UInt64 = 400;
+}
+BlockRef
+struct BlockRef {
+ hash @0 :Data;
+ height @1 :Int32;
+}
+BlockWaitOptions
+struct BlockWaitOptions {
+ timeout @0 :Float64 = 1.7976931348623157e308;
+ feeThreshold @1 :Int64 = 2100000000000000;
+}
+CoinbaseTx
+struct CoinbaseTx {
+ version @0 :UInt32;
+ sequence @1 :UInt32;
+ scriptSigPrefix @2 :Data;
+ witness @3 :Data;
+ blockRewardRemaining @4 :Int64;
+ requiredOutputs @5 :List(Data);
+ lockTime @6 :UInt32;
+}
+
diff --git a/_doc/en/ipc-index.html b/_doc/en/ipc-index.html
new file mode 100644
index 000000000..92fbc62e4
--- /dev/null
+++ b/_doc/en/ipc-index.html
@@ -0,0 +1,9 @@
+---
+name: ipcdocsindex
+btcversion: ipc-index
+btcgroup: index
+btcdoctype: IPC
+permalink: en/doc/ipc/
+---
+
+
diff --git a/_includes/navigation.html b/_includes/navigation.html
index 1ef37b201..84361e5f6 100644
--- a/_includes/navigation.html
+++ b/_includes/navigation.html
@@ -37,7 +37,7 @@
{% assign groups = site.doc | group_by:"btcversion" | sort_by: "btcversion" | reverse %}
{% for group in groups %}
- {% if group.name != "index" %}
+ {% if group.name != "index" and group.name != "ipc-index" %}
{% for article in group.items %}
{% if article.name == "index" %}
- {{group.name}}
@@ -47,6 +47,25 @@
{% endfor %}
+
+ {% for article in site.doc %}
+ {% if article.name == "ipcdocsindex" %}
+ IPC Docs
+ {% endif %}
+ {% endfor %}
+ {% assign ipc_groups = site.doc | group_by:"btcversion" | sort_by: "btcversion" | reverse %}
+
+ {% for group in ipc_groups %}
+ {% if group.name != "index" and group.name != "ipc-index" %}
+ {% for article in group.items %}
+ {% if article.name == "ipcindex" %}
+ - {{group.name}}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+
+
{% endif %}
diff --git a/_layouts/doc.html b/_layouts/doc.html
index 9ceab1f67..e5f04872a 100644
--- a/_layouts/doc.html
+++ b/_layouts/doc.html
@@ -1,13 +1,14 @@
{% include browser_magic.html %}
-{% if page.name != "index" and page.name != "rpcindex" %}
- {% assign custom_title = page.name | append: " (" | append: page.btcversion | append: " RPC)" %}
+{% assign doctype = page.btcdoctype | default: "RPC" %}
+{% if page.name != "index" and page.name != "rpcindex" and page.name != "ipcindex" and page.name != "ipcdocsindex" %}
+ {% assign custom_title = page.name | append: " (" | append: page.btcversion | append: " " | append: doctype | append: ")" %}
{% else %}
- {% if page.btcversion != "index" %}
- {% assign custom_title = "Bitcoin Core " | append: page.btcversion | append: " RPC" %}
+ {% if page.btcversion != "index" and page.btcversion != "ipc-index" %}
+ {% assign custom_title = "Bitcoin Core " | append: page.btcversion | append: " " | append: doctype %}
{% else %}
- {% assign custom_title = "Bitcoin Core RPC" %}
+ {% assign custom_title = "Bitcoin Core " | append: doctype %}
{% endif %}
{% endif %}
{% include head.html %}
@@ -23,7 +24,7 @@
- {% if page.btcversion != "index" %}
+ {% if page.btcversion != "index" and page.btcversion != "ipc-index" %}