3x-ui/docs/Tasktracking/2026-04-25-fix-ensuredefaultnodesettings.md
root 4e49f8c072 fix: replace a-descriptions with HTML table and fix ensureDefaultNodeSettings
- Replace a-descriptions/a-descriptions-item with plain HTML table in
  nodes.html — the components were missing from the antd.min.js bundle
  due to tree-shaking, causing the worker node view to render empty
- Fix ensureDefaultNodeSettings to write defaults to both "node" and
  "other" groups for backward compatibility (tests were failing)
2026-04-25 09:36:21 +08:00

1.9 KiB

2026-04-25 Fix ensureDefaultNodeSettings and worker node display

Problem

1. Test failures in config package

Two tests were failing:

  • TestWriteSettingToJSONCreatesSettingsFileWhenMissing
  • TestWriteSettingToJSONBackfillsDefaultNodeSettings

Both failed with: expected other group, got <nil>

2. Worker frontend not showing connected master node

The worker's node management page rendered the card structure but didn't display the master node information. The a-descriptions and a-descriptions-item components were used in the template but were NOT included in the Ant Design Vue bundle (antd.min.js). Vue silently skipped the unregistered components, resulting in an empty card body.

Root Cause

Test failures

ensureDefaultNodeSettings() only wrote defaults to the "node" group. Tests expected the "other" group to also have defaults for backward compatibility.

Worker node display

Ant Design Vue 2.x uses tree-shaking — only components actually imported during the build are included in the bundle. a-descriptions and a-descriptions-item were not imported in the project's Ant Design Vue build config, so they were missing from antd.min.js. When Vue encounters an unregistered component tag, it silently ignores it.

Fix

Test failures

Changed ensureDefaultNodeSettings() to iterate over both "node" and "other" groups, writing defaults to both for backward compatibility.

Worker node display

Replaced a-descriptions / a-descriptions-item with a plain HTML <table> that replicates the same visual layout (label-value pairs with borders). This doesn't depend on any Ant Design Vue component.

Files Changed

  • config/config.go: Modified ensureDefaultNodeSettings() to write to both groups
  • web/html/nodes.html: Replaced a-descriptions with HTML table

Verification

  • go test -race -shuffle=on ./... — all PASS