Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive Japanese documentation for setting up and building partner-chains-node and related Cardano infrastructure for the Midnight testnet. The changes include new documentation files covering Ubuntu server setup, Docker configuration, Cardano node installation, and validator registration, along with a new React component for generating pool certificate code.
Changes:
- Added interactive React component (GeneratePoolCertCode) for generating pool registration commands with user-configurable parameters
- Added 10 new documentation files covering complete setup from Ubuntu server configuration through Midnight node deployment
- Updated CSS styling for improved tab component appearance and layout adjustments
- Reorganized sidebar positions for logical documentation flow
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/src/css/custom.scss | Added trailing newline for consistency |
| docs/src/css/custom.css | Added tab padding CSS variables for improved UI spacing |
| docs/src/components/TemplateCodeGenerator.module.css | Modified grid layout configuration and removed display properties |
| docs/src/components/GeneratePoolCertCode.tsx | New component for interactive pool certificate command generation |
| docs/docs/midnight/testnet-02/setup-ubuntu-server.md | New guide for Ubuntu Server 22.04 initial security setup |
| docs/docs/midnight/testnet-02/setup-grafana.md | Updated sidebar position for proper ordering |
| docs/docs/midnight/testnet-02/partner-chains-node.md | New guide for Partner-Chains-Node construction |
| docs/docs/midnight/testnet-02/midnight-node.md | New guide for Midnight Node construction |
| docs/docs/midnight/testnet-02/cardano-preview-topology.md | New guide for topology and firewall configuration |
| docs/docs/midnight/testnet-02/cardano-preview-register-stake.md | New guide for stake address registration |
| docs/docs/midnight/testnet-02/cardano-preview-register-pool.md | New guide for stake pool registration |
| docs/docs/midnight/testnet-02/cardano-preview-node.md | New comprehensive guide for Cardano node installation |
| docs/docs/midnight/testnet-02/cardano-preview-bp-keys.md | New guide for BP key creation |
| docs/docs/midnight/testnet-02/cardano-preview-addresses.md | New guide for address creation |
| docs/docs/midnight/testnet-02/blocklog.md | Updated sidebar position for proper ordering |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -1,10 +1,8 @@ | |||
| .wrapper { | |||
There was a problem hiding this comment.
The display: grid property was removed from the .wrapper class, but the gap property remains. Without display: grid or display: flex, the gap property has no effect. This could be intentional if you're removing grid layout, but if you intended to keep the gap between child elements, you need to keep the display: grid or use an alternative layout method.
| .wrapper { | |
| .wrapper { | |
| display: grid; |
| gap: 16px; | ||
| } | ||
|
|
||
| .header { |
There was a problem hiding this comment.
The display: flex property was removed from the .header class, but align-items and justify-content properties remain. These flexbox properties only work when the element has display: flex or display: inline-flex. Without it, these properties will have no effect.
| .header { | |
| .header { | |
| display: flex; |
| if (v === undefined || v === null) { | ||
| } |
There was a problem hiding this comment.
The if block at lines 94-95 checks for undefined or null values but doesn't assign anything to v. This results in an empty block that serves no purpose. Either add logic to handle undefined/null values, or remove this block entirely since line 96 already converts the value to a string.
| if (v === undefined || v === null) { | |
| } |
| if (name == "PLEDGE") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = ""; | ||
| } else{ | ||
| const pledge = Number(all['PLEDGE'] || ""); | ||
| v = String(pledge * 1000000); | ||
| } | ||
| } | ||
| if (name == "COST") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = ""; | ||
| } else { | ||
| const cost = Number(all['COST'] || ""); | ||
| v = String(cost * 1000000); | ||
| } | ||
| } | ||
| if (name == "MARGIN") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = ""; | ||
| } else { | ||
| const margin = Number(all['MARGIN'] || ""); | ||
| v = String(margin / 100); | ||
| } | ||
| } | ||
| if (name == "RELAY_IP") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = "0.0.0.0"; | ||
| } | ||
| v = String(v); | ||
| } | ||
| if (name == "RELAY_PORT") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = "6000"; | ||
| } | ||
| v = String(v); | ||
| } | ||
| if (name == "META_URL") { | ||
| if (v === undefined || v === null || v === "") { | ||
| v = "https://example.com/poolMetaData.json"; | ||
| } | ||
| v = String(v); | ||
| } |
There was a problem hiding this comment.
Using equality operator == instead of strict equality ===. In JavaScript, it's recommended to use === for comparisons to avoid type coercion issues. This applies to all variable name comparisons in this function.
| ### apt リポジトリをアップデート | ||
|
|
||
| ```bash | ||
| sudo apt get update -y |
There was a problem hiding this comment.
The command contains a typo: apt get should be apt-get (with a hyphen). This will cause the command to fail.
| sudo apt get update -y | |
| sudo apt-get update -y |
| </Tabs> | ||
|
|
||
| <Tabs groupId="node" queryString="node"> | ||
| <TabItem value="airgap" value="エアギャップマシン"> |
There was a problem hiding this comment.
The value attribute has a duplicate definition: value="airgap" is specified twice in the same TabItem element. Remove the second occurrence and keep only one.
| <TabItem value="airgap" value="エアギャップマシン"> | |
| <TabItem value="airgap" label="エアギャップマシン"> |
| ### Validator 登録ウィザード (1/3) | ||
|
|
||
| ```bash | ||
| /midnight-node wizards register1 |
There was a problem hiding this comment.
The command path /midnight-node wizards is inconsistent with the earlier command on line 154 which uses /midnight-node wizard (singular). This should likely be /midnight-node wizard register1 for consistency.
| /midnight-node wizards register1 | |
| /midnight-node wizard register1 |
| -------------------------------------------------------------------------------------- | ||
| 9358d225224197089ac7cd05f6b4e771b053e6be969cde7a97693b71344ffb83 0 10000000000 lovelace + TxOutDatumNone | ||
| ``` | ||
|
|
There was a problem hiding this comment.
Missing closing backtick in the markdown file. The final line 133 (after the code block) appears to be incomplete or missing a closing delimiter.
| const [relayIp, setRelayIp] = useState(""); | ||
| const [relayPort, setRelayPort] = useState(""); | ||
| const [metaUrl, setMetaUrl] = useState(""); | ||
| const [vars, setVars] = useState<Record<string, string>>({ |
There was a problem hiding this comment.
Unused variable setVars.
| const [vars, setVars] = useState<Record<string, string>>({ | |
| const [vars] = useState<Record<string, string>>({ |
| children = "", | ||
| }: Props) { | ||
| const seedTemplate = (typeof children === "string" && children.length > 0) | ||
| ? children : "" |
There was a problem hiding this comment.
Avoid automated semicolon insertion (91% of all statements in the enclosing function have an explicit semicolon).
| ? children : "" | |
| ? children : ""; |
No description provided.