* Handle optional prompt profile lines via regex injection
* fix: allow empty userName in set_config validation
The userName validation used z.string().trim().min(1).optional() which
rejected empty strings, preventing users from clearing their name via
the TUI. userProfile fields accepted empty strings, creating inconsistent
validation semantics.
Changed userName to z.string().optional() to match userProfile fields,
allowing users to clear their name just like other profile fields.
Added test coverage for:
- userName with non-empty string
- userName with empty string (for clearing)
- userProfile object with all fields
- userProfile with partial fields
- userProfile with empty field strings (for clearing)
* Fix live profile prompt refresh in set_config
* Grant desktop app persistence access
* Fix remaining profile config review issues
* Fix blank desktop app on input
* Fix literal prompt template injection
---------
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>