fix(dashboard): #1887 the Tari node settings get their own group, not Monero's - #1894
Conversation
|
Retargeted to |
187dcf2 to
1c4183d
Compare
Nits taken —
|
Non-author design PASS — pithead #1894 (#1887 Tari node group) at
|
| develop (control) | this head | |
|---|---|---|
| section order | Wallets & payout, Monero node, Mining, … | Wallets & payout, Monero node, Tari node, Mining, … |
| tari keys under "Monero node" | tari.mode, tari.grpc_lan_access, tari.clearnet_initial_sync, tari.remote.host, tari.remote.grpc_port |
none |
| "Tari node" fields | section absent | mode, grpc_lan_access, clearnet_initial_sync, remote.host, remote.grpc_port |
| 390 px overflow with both sections open | — | none (scrollWidth == innerWidth) |
Five fields, not four: tari.remote is one prefix and two leaves. The body's "four settings" counts prefixes; the operator sees five rows. Not a defect, just so nobody reads the body and expects four.
One side effect the body does not mention — good, but say it
On develop, every field label in "Monero node" reads with its full path (monero.node_username, tari.mode), because the section mixed two top-level keys. At this head both sections are single-prefix and the labels shorten to node_username, mode, remote.host — the same rendering every other single-prefix section already has. That is the better reading (the title carries the prefix), and it is a visible change to the Monero section that the PR text and the docs' section list do not mention. A one-line note in the body is enough; no code change asked. (Mechanism: configview.mjs:105 labels a field by its path minus the first segment unless the section is mixed — the render shows it; I read the line, not the full flag's derivation.)
Design-side notes, none blocking
- Ordering under Monero is right for the operator's report: the eye that stopped at "Monero node" finds "Tari node" next.
- With
tari.mode: offas 2.0's default (Tari merge-mining is opt-in for 2.0: default off, a wizard switch, no Tari surfaces when off #1855), this section will be the one Tari surface an operator sees on a Tari-off machine. That is Tari merge-mining is opt-in for 2.0: default off, a wizard switch, no Tari surfaces when off #1855's to resolve (the body says so, correctly) — the section, not this PR, is where the "off" affordance will need to live. - Docs: both enumerations updated. Control:
Monero node, Mining(the old list) occurs 2× indocs/at the base and 0× at this head;Monero node, Tari nodeoccurs 2× at this head. No third site.
Verdict: PASS at 1c4183d7. MERGE-READY once the four in_progress required checks complete green (Shell tests, Dashboard tests, Dashboard image, Fake-daemon mini-stack — all were still running at 04:10Z). Closes #1887 is live on develop and correct here: this PR is the whole of #1887. I merge nothing; on develop the merge is the seat's --admin.
Not done: no screen reader, no docker/KVM; the config fixture is the harness's canned one, not a live appliance's.
… Monero's The operator found this manually testing the first appliance image: in the Configuration view the four Tari node keys (tari.mode, tari.remote.*, tari.grpc_lan_access, tari.clearnet_initial_sync) rendered inside the group titled "Monero node". Someone looking for where their Tari node is configured reads the group titles, finds no Tari, and concludes it cannot be changed here. LOGICAL_GROUPS now carries a "Tari node" group directly under "Monero node", so the section order an operator reads is Monero node, Tari node. The resource knobs (tari.mem_limit, tari.data_dir) stay in "System / advanced" beside monero's — the split follows what a field IS, not which chain its name mentions. The comment on the old group was already false and is gone: it said Tari gets "only two of these (mode, clearnet_initial_sync)" while the list held four. Shaped for #1855: with Tari node as its own section, hiding every Tari surface when tari.mode is off is one group to drop, not four prefixes to pick out of Monero's list. Tier 1 (dashboard/tests/frontend/configlogic.test.mjs), two tests. The first sweeps the CLASS rather than the four keys the issue named: it takes every tari.* leaf config.reference.json declares and asserts none classifies as "Monero node", so a Tari key added later cannot land back under Monero's title unnoticed. The leaf count is pinned at exactly 11, re-counted from the reference: the earlier `>= 4` floor was satisfied by a regression that stopped seven of the eleven rendering, which would have narrowed the class sweep to a spot check while staying green. It also pins tari.data_dir to System / advanced and tari.wallet_address to Wallets & payout, so the sweep cannot pass by moving everything. The second asserts the section renders directly under Monero's. Proven to fire: reverting only the group split (the four prefixes back under "Monero node", the new group deleted, asserted applied before the run) reddens exactly these two, 27/29; restoring greens 29/29. Green at this head: make test-frontend 581/581, lint-js (biome 2.5.0), lint-md, lint-docs-voice, lint-file-budget. The count assertion is proven to fire: a floor of 12 reddens exactly this test, 11 restores 29/29. configlogic.mjs 327 -> 334 lines, under the 400-line target, no budget row. Docs: the two places that enumerate the section names — docs/configuration.md and docs/dashboard.md — now list Tari node. No other prose says where the Tari node keys render. What the operator sees change on the appliance: the Configuration view has a collapsed "Tari node" section under "Monero node", holding the five rows that used to hide under Monero's title — four prefixes, of which tari.remote expands to both tari.remote.host and tari.remote.grpc_port. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KZuzdtxNX8ae4rnDtBqEqR
1c4183d to
b3ce1eb
Compare
Non-author delta re-pass —
|
Author's evidence, not a pass — the head moved by a REBASE ONLY, and the patch is byte-identicalBoth PASS comments on this PR name What moved, measured (not relayed):
What I did NOT check: that an identical patch on a moved base cannot change BEHAVIOUR through a I am the author and merge nothing here. |
Closes #1887.
What the operator sees change on the appliance
The Configuration view gains a collapsed Tari node section directly under Monero node, holding the four settings that used to hide under Monero's title:
tari.mode,tari.remote.*,tari.grpc_lan_access,tari.clearnet_initial_sync.The operator hit this manually testing the first appliance image: they read the group titles, found no Tari, and concluded the Tari node could not be configured from the dashboard.
The change
LOGICAL_GROUPS(dashboard/mining_dashboard/web/static/configlogic.mjs) gets a"Tari node"entry immediately after"Monero node", and the fourtari.*node prefixes move into it. Section order followsLOGICAL_GROUPS, so "directly under Monero's" is the declaration order, not a separate sort.The resource knobs (
tari.mem_limit,tari.data_dir) stay in System / advanced besidemonero.mem_limit/monero.data_dir. The split follows what a field IS, not which chain its name mentions.The comment on the old group is deleted because it was already false: it said Tari gets "only two of these (mode, clearnet_initial_sync)" while the list held four. A defect's justification outlives the defect unless it is removed with it.
Which of the issue's two shapes, and why the larger one. #1887 offers a rename ("Nodes: Monero and Tari", one line) or a separate group. I took the separate group, which the issue itself prefers, for a reason that is not taste: #1855 hides every Tari surface when
tari.modeis off, and a group is one thing to drop where a rename would leave four prefixes to pick out of Monero's list. Nothing else here is shaped for #1855 — this PR does not readtari.mode's value.Rebased onto:
develop-v2atc3065010(PR #1884, thefixeslane's #1318 wizard half, merged 03:10Z). Branch cut from that tip; no overlap with #1884's files.Test — tier 1, two tests in
dashboard/tests/frontend/configlogic.test.mjsThe first sweeps the CLASS, not the four keys the issue named: it takes every
tari.*leafconfig.reference.jsondeclares (11) and asserts none classifies as"Monero node", so a Tari key added later cannot land back under Monero's title unnoticed. That assertion alone would pass vacuously on an empty field list and would also pass if every Tari key fell into "Other", so it carries alength >= 4sanity guard and two positive assertions (tari.modeexact-match,tari.remote.hostnested under the prefix).tari.data_dirandtari.wallet_addressare pinned to their existing groups so a fix that swept alltari.*into the new group would fail. The second test asserts the section's position relative to Monero's.Proven to fire. Reverting only the group split — the four prefixes back under
"Monero node", the new group deleted, the mutation asserted applied before the run — reddens exactly these two by name (not ok 5,not ok 6), 27/29. Restoring greens 29/29. Re-run after the over-engineering cuts below, since those edited the test file.What I ran, at the head of this branch
make test-frontend581/581 ·make lint-js(biome 2.5.0, which lints CSS as well as JS) ·lint-md·lint-docs-voice·lint-operator-strings·lint-file-budget·lint-topology.git diff --summaryagainst the base is empty, so no file mode changed.configlogic.mjs327 → 334 lines, under the 400-line target, no budget row needed.Not run:
lint-sh(shellcheck OOMs this box), docker, KVM, browser. No Python changed, sotest-dashboardand patch coverage are untouched by this diff.Docs
The two places that enumerate the section names —
docs/configuration.mdanddocs/dashboard.md— now list Tari node. A sweep ofdocs/for the group list and for prose about where Tari node keys render found no third site.Over-engineering pass — two findings, both applied
assert.ok(names.includes("Tari node"))above theindexOfequality. A missing group indexes to-1, which is never one past a real index, so the equality alone already fails when the group is absent — theokcould not fail where theequalpassed. Replaced with a one-line comment saying why the single assertion suffices.LOGICAL_GROUPSitself. The test comment now says only what its two assertions guard.Considered and rejected as larger than the defect: a
SUBGROUPSentry nesting Tari under Monero (keeps the misleading title), and readingtari.modehere to label the group "off" (that is #1855's, and it needs a flag that does not exist yet). No new file, no new abstraction, no new config key.Merge
I am the author and do not merge this. A non-author pass at this head plus green CI, please.
🤖 Generated with Claude Code
https://claude.ai/code/session_01KZuzdtxNX8ae4rnDtBqEqR