fix(devnet): offer Terminal module in config editor and migrate legacy ckb.toml#468
Conversation
…y ckb.toml Two gaps kept the ckb-tui integration (#463) from reaching users: - The config editor's Edit RPC Modules dialog used a hardcoded option list that predated ckb-tui, so Terminal (and RichIndexer) could not be enabled from the TUI even though the bundled ckb.toml enables them. - initChainIfNeeded only copies the devnet template into fresh config folders, so chains initialized before #463 never received the Terminal RPC module or the enabled tcp_listen_address. Clearing chain data does not help — the config files persist — so offckb status dashboards stayed empty on develop. Add Terminal/RichIndexer to the rpc.modules fixed-array spec, and run a comment-preserving text migration on node start that appends Terminal to rpc.modules and enables tcp_listen_address (127.0.0.1:18114) in existing devnet configs. The migration is a no-op on current configs and never breaks node startup on unparseable files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughAdds Terminal and RichIndexer to devnet RPC configuration metadata, introduces non-fatal migration of legacy ChangesDevnet RPC configuration
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant initChainIfNeeded
participant migrateLegacyDevnetRpcConfig
participant ckb.toml
participant toml
initChainIfNeeded->>migrateLegacyDevnetRpcConfig: migrate devnet configuration
migrateLegacyDevnetRpcConfig->>ckb.toml: read file
migrateLegacyDevnetRpcConfig->>toml: parse RPC settings
toml-->>migrateLegacyDevnetRpcConfig: return configuration state
migrateLegacyDevnetRpcConfig->>ckb.toml: write updated TOML
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/node/init-chain.ts`:
- Around line 97-100: Update the tcp_listen_address handling in the loop that
uses the commented-line match so only the stock loopback value is uncommented;
keep non-stock commented values unchanged and replace them with an enabled
127.0.0.1:18114 entry instead.
- Around line 97-100: Update the uncommenting logic around the
tcp_listen_address match to restore only the stock loopback default; leave
commented non-loopback addresses disabled unless explicitly opted in. Preserve
the existing indentation and return behavior for an approved default, while
preventing arbitrary matched values from being enabled.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 83d92093-049c-4ec4-8a5a-bfc414b73a90
📒 Files selected for processing (5)
.changeset/tidy-ravens-serve.mdsrc/node/init-chain.tssrc/tui/devnet-config-metadata.tstests/devnet-config-metadata.test.tstests/init-chain.test.ts
…gration Uncommenting any commented tcp_listen_address could turn a legacy '# tcp_listen_address = "0.0.0.0:18114"' into a public RPC listener. Now only the stock 127.0.0.1:18114 line is restored in place; non-stock commented values stay disabled and an enabled loopback entry is added instead. Addresses CodeRabbit review on #468. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Problem
Reported in RET-277: on
develop, the devnet config editor still doesn't offer theterminaloption added for ckb-tui, andoffckb statusshows empty dashboards even after clearing local data.Two root causes, neither of them stale data:
FIXED_ARRAY_SPECSinsrc/tui/devnet-config-metadata.tsstill listed the pre-ckb-tui module set, soTerminal(andRichIndexer) could not be enabled from the config TUI — even though fix(status): enable Terminal RPC module and TCP streaming for devnet #463/fix(status): enable Terminal RPC module and TCP streaming for devnet #464 addedTerminalto the bundledckb.tomland the embedded reference template. No amount of data clearing changes a hardcoded list.initChainIfNeededonly copiesckb/devnet/ckb.tomlwhen config files are missing. Chains initialized before fix(status): enable Terminal RPC module and TCP streaming for devnet #463 keep ackb.tomlwithout theTerminalRPC module and withtcp_listen_addresscommented out forever — and clearing chaindata/doesn't touch config files — sooffckb status(ckb-tui) keeps showing N/A metrics and empty mempool/logs panels.Fix
TerminalandRichIndexerto therpc.modulesfixed-array spec so the config editor offers them (with a comment to keep the list in sync with the template).initChainIfNeeded(coversoffckb node, daemon mode, andoffckb create) that upgrades a legacy devnetckb.tomlin place:"Terminal"torpc.modules(single-line and hand-formatted multi-line arrays both handled; custom module subsets preserved);rpc.tcp_listen_addressby uncommenting the stock line, or insertstcp_listen_address = "127.0.0.1:18114"when absent; an explicitly configured address is left untouched.Tests
tests/init-chain.test.ts: 9 new cases — legacy config migration through both entry points, no-op on the current template, custom module subsets, multi-line arrays, inserted vs. uncommented vs. explicitly-settcp_listen_address, unparseable and missing files.tests/devnet-config-metadata.test.ts(new): guards the TUI option list against drifting from the bundled template'srpc.modulesagain.tsc --noEmitand eslint clean.🤖 Generated with Claude Code