93d032a144
Status presenters (showWarning/showError/showStatus and extension/tool error presenters) baked theme.fg() into Text at construction, so a warning shown while the auto-theme default guess was dark kept the dark-mode color after async appearance detection switched the active theme to light — dark-catppuccin Mocha yellow on the light Latte background (1.12:1 contrast, effectively invisible). Add Text.setStyleFn(), a foreground styler evaluated at render time, and route the transient status presenters through it. Because the coding agent invalidates status components on onThemeChange, a theme swap now re-shapes them against the live theme instead of replaying the palette active when they were constructed. Fixes #6337