Skip to content

feat(settings): rich per-setting detail panel - #9

Merged
zackkitzmiller merged 1 commit into
mainfrom
feat/settings-detail-panel
Jul 27, 2026
Merged

feat(settings): rich per-setting detail panel#9
zackkitzmiller merged 1 commit into
mainfrom
feat/settings-detail-panel

Conversation

@zackkitzmiller

Copy link
Copy Markdown
Member

Summary

Reworks the Settings Configuration screen so each Pi-hole setting shows a thorough detail panel β€” description, type, default, current value, allowed inputs, and modified status β€” matching what Pi-hole's own web UI displays. The metadata was already fetched via GET /api/config?detailed=true but discarded during flatten; this carries it through and renders it in a "Gloss"-styled panel.

Changes

  • tree.go β€” leaf now carries FTL metadata (description, type, default, allowed, modified); newDetailLeaf populates it instead of collapsing to just value.
  • detail.go (new) β€” responsive detail panel: side-by-side on wide terminals (β‰₯88 inner cols), stacked beneath the table on narrow ones. Width-gated so it never renders wider than its container (which would wrap the whole layout), and the description is prioritized in the height budget so it survives on narrow/SSH-sized panes.
  • settings.go β€” splits available width between the table and the panel (configSplit) and composes them (renderConfigTree).
  • site/index.html β€” dev/prod React loader; .gitignore β€” ignore .claude/.

Test plan

  • go test ./internal/... β€” all pass (incl. new metadata-capture, panel-contents, and narrow-width no-overflow regression tests)
  • go vet clean, golines ≀80 cols
  • Verified against a live Pi-hole that FTL returns description, and confirmed the panel renders it in both side-by-side and stacked layouts
  • Reviewer: eyeball the panel at a few terminal sizes (wide, ~80-col SSH, very short)

Rework the Settings config screen to mirror Pi-hole's web UI, showing a
per-setting detail panel with description, type, default, current value,
allowed inputs, and modified status β€” sourced from FTL's
/api/config?detailed=true metadata that was previously discarded on flatten.

- tree.go: carry FTL metadata through the leaf model (newDetailLeaf)
- detail.go: responsive Gloss detail panel (side-by-side / stacked), width-
  gated so it never overflows narrow terminals, with the description
  prioritized in the height budget so it survives on narrow/SSH panes
- settings.go: split width between table and panel; compose the two
- tests: metadata capture, panel contents, narrow-width no-overflow guard

Also: dev/prod React loader + .gitignore .claude/.
@netlify

netlify Bot commented Jul 27, 2026

Copy link
Copy Markdown

βœ… Deploy Preview for tihole ready!

Name Link
πŸ”¨ Latest commit 40a2f5d
πŸ” Latest deploy log https://app.netlify.com/projects/tihole/deploys/6a6759e2c3adb80009c969bb
😎 Deploy Preview https://deploy-preview-9--tihole.netlify.app
πŸ“± Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
πŸ€– Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@zackkitzmiller
zackkitzmiller merged commit 0f3c522 into main Jul 27, 2026
5 checks passed
@zackkitzmiller
zackkitzmiller deleted the feat/settings-detail-panel branch July 27, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant