bubbles/v2 textinput truncates the placeholder to its first rune when the
input width is 0 (the default): it sizes the placeholder buffer to
Width()+1 and early-returns after the first character. Set a non-zero
width on every text input (defaultInputWidth) and resize inputs
responsively to the terminal on WindowSizeMsg via FormStep.SetWidth, so
placeholders render in full and inputs fill the available width.
Adds a regression test asserting the placeholder renders past its first
rune.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cover the deploy-critical pure logic:
- GenerateConfigTOML: round-trip decode of values + a guard asserting the
config port is always containerAppPort (host port must not leak)
- GenerateWireguardConfig: MTU emitted/commented, PROTO default UDP
- WriteConfigFile / WriteWireguardConfigFile: numeric validation rejects
bad input and does not write a file
- FormStep.Values(): text/password/select resolution and select default
fallback
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>