- Fix do-0x20-encode: clearing pending when toggling back to original (Disabled/Default)
- Do0x20EncodeDisplay: uncheck uses pending.OldValue when present
- EffectiveConfigFieldDisplay: use pending.OldValue as _valueAtActivation when re-entering with pending
- Effective config: validation errors/warnings in toolbar and save modal, revert from modal
- Custom displays: Do0x20EncodeDisplay (tri-state), KeyOnlyOrValueDisplay
- ExplicitToggleState, config/apply support for do-0x20-encode, option help and tests
- All multi fields use EffectiveMultiValueConfigFieldDescriptor; registry has
RegisterMultiDescriptor/RegisterMultiComponent/RegisterMulti; every multi
option registered; plain multi fallback removed (AddMultiDescriptor throws).
- Descriptor-driven validation: base descriptor ValidateValue + Validate();
integer descriptor enforces Min/Max; ListenAddressMultiValidator for
listen-address; single/flag commit uses Descriptor.Validate (no session
field issues for inline edits).
- Multi list editor: local _displayItems so remove/add/edit update UI
immediately; remove button PreventBlurOnMouseDown; inline validation
message under input (ec-multi-list-input-group); root div not span.
- Save flow: on successful backup restore call OnCloseAndEndEdit then
OnSaveCompleted so session and pending changes are cleared and config
is reloaded.
- Server uses descriptor-only (no custom multi component); ServerMultiValueDisplay
removed. RegisterValidatedSingle added for future single-field validation.
- Multi-value: show editable badge next to (none); clicking activates edit and opens add row
- List editor: when empty and add allowed, do not show (none) row; auto-focus new-item input on open and when clicking add item
- Toolbar: make 'X change(s)' clickable to open save dialog (keyboard accessible)