The city text field isn't pre-filled with the current value (unlike
the manual lat/lon fields below it), so it's blank on every
settings-only save -- changing forecast_days, a display toggle, etc.
That fell into the branch that unconditionally set "city": "", so the
resolved city name silently disappeared on every save even though
lat/lon round-tripped fine (those fields *are* pre-filled).
Now only clears the city label when the submitted coordinates
actually differ from what's stored. Verified both directions end to
end: city survives a settings-only save, and still clears correctly
when coordinates are genuinely changed.