docs(09-05): add tooltip fix plan and debug session
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
status: diagnosed
|
||||||
|
trigger: "Tooltip info buttons on Remote Config wizard step: hovering doesn't show anything, icon placement is wrong (above field instead of beside helpText)"
|
||||||
|
created: 2026-04-01T00:00:00Z
|
||||||
|
updated: 2026-04-01T00:00:00Z
|
||||||
|
---
|
||||||
|
|
||||||
|
## Current Focus
|
||||||
|
|
||||||
|
hypothesis: Two distinct root causes — onClick-only toggle (no hover), and icon placed above TextFieldMD3 instead of beside helpText
|
||||||
|
test: Code review of FieldRenderer.tsx lines 83-109 and TextFieldMD3.tsx lines 65-67
|
||||||
|
expecting: Confirm both issues from source
|
||||||
|
next_action: Report diagnosis
|
||||||
|
|
||||||
|
## Symptoms
|
||||||
|
|
||||||
|
expected: (1) Hovering tooltip button shows tooltip text. (2) Icon is beside the helpText under the field.
|
||||||
|
actual: (1) Nothing happens on hover — only click toggles. (2) Icon is above the TextFieldMD3 component.
|
||||||
|
errors: none
|
||||||
|
reproduction: Open Remote Config wizard, hover over any info button
|
||||||
|
started: Since phase-09 tooltip implementation
|
||||||
|
|
||||||
|
## Eliminated
|
||||||
|
|
||||||
|
(none needed — root causes identified on first pass)
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
|
||||||
|
- timestamp: 2026-04-01T00:00:00Z
|
||||||
|
checked: FieldRenderer.tsx lines 83-109 (text input default branch)
|
||||||
|
found: |
|
||||||
|
The tooltip button at lines 85-94 uses onClick={() => setShowTooltip(v => !v)} only.
|
||||||
|
There are NO onMouseEnter/onMouseLeave handlers, and no CSS hover-triggered tooltip.
|
||||||
|
The tooltip text (lines 95-99) is only rendered when showTooltip state is true,
|
||||||
|
which only changes on click — never on hover.
|
||||||
|
implication: Root cause of Issue 1 — tooltip requires click, not hover
|
||||||
|
|
||||||
|
- timestamp: 2026-04-01T00:00:00Z
|
||||||
|
checked: FieldRenderer.tsx lines 83-109 (DOM structure of text input branch)
|
||||||
|
found: |
|
||||||
|
The DOM order is:
|
||||||
|
<div flex-col>
|
||||||
|
{tooltipText && <button>icon</button>} ← lines 85-94: icon ABOVE field
|
||||||
|
{tooltipText && showTooltip && <p>text</p>} ← lines 95-99: tooltip text ABOVE field
|
||||||
|
<TextFieldMD3 helpText={field.helpText} /> ← lines 100-107: field with helpText inside
|
||||||
|
</div>
|
||||||
|
The icon button is a sibling rendered BEFORE TextFieldMD3, placing it above the field.
|
||||||
|
Meanwhile, helpText is rendered INSIDE TextFieldMD3 (TextFieldMD3.tsx lines 65-67),
|
||||||
|
so the icon cannot be "beside the helpText" from its current position.
|
||||||
|
implication: Root cause of Issue 2 — icon is structurally above the field, not beside helpText
|
||||||
|
|
||||||
|
- timestamp: 2026-04-01T00:00:00Z
|
||||||
|
checked: TextFieldMD3.tsx lines 65-67
|
||||||
|
found: |
|
||||||
|
helpText is rendered inside TextFieldMD3:
|
||||||
|
{helpText && !error && (
|
||||||
|
<p className="text-xs text-on-surface-container/70">{helpText}</p>
|
||||||
|
)}
|
||||||
|
This is encapsulated inside the component — FieldRenderer has no way to inject
|
||||||
|
an icon beside it without either: (a) passing the icon as a prop, or (b) moving
|
||||||
|
helpText rendering out of TextFieldMD3.
|
||||||
|
implication: Fix requires changing TextFieldMD3 interface or moving helpText rendering
|
||||||
|
|
||||||
|
## Resolution
|
||||||
|
|
||||||
|
root_cause: |
|
||||||
|
ISSUE 1 — Tooltip doesn't show on hover:
|
||||||
|
File: src/components/ui/FieldRenderer.tsx, lines 85-94
|
||||||
|
The tooltip button only has an onClick handler that toggles showTooltip state.
|
||||||
|
There are no onMouseEnter/onMouseLeave handlers and no CSS :hover mechanism.
|
||||||
|
The tooltip content (lines 95-99) is conditionally rendered only when showTooltip === true,
|
||||||
|
which never becomes true from hovering.
|
||||||
|
|
||||||
|
ISSUE 2 — Icon placed above field instead of beside helpText:
|
||||||
|
File: src/components/ui/FieldRenderer.tsx, lines 83-109
|
||||||
|
The icon button is rendered as a sibling BEFORE <TextFieldMD3>, placing it visually
|
||||||
|
above the text field. The helpText is rendered INSIDE TextFieldMD3 (TextFieldMD3.tsx
|
||||||
|
line 65-67), making it impossible for the icon in FieldRenderer to sit beside it.
|
||||||
|
To place the icon beside helpText, either:
|
||||||
|
(a) TextFieldMD3 needs a new prop (e.g., helpTextSuffix or helpTextIcon) to render
|
||||||
|
content inline with the helpText paragraph, or
|
||||||
|
(b) helpText rendering moves out of TextFieldMD3 back into FieldRenderer, where the
|
||||||
|
icon and helpText can be placed in a flex-row together.
|
||||||
|
|
||||||
|
fix: (not applied — diagnosis only)
|
||||||
|
verification: (not applied — diagnosis only)
|
||||||
|
files_changed: []
|
||||||
Reference in New Issue
Block a user