Upstream's own web installer inserts the single-row AppModel settings
table that the admin Environment tab (Language/Timezone/SMTP) reads
and writes via app()/AppModel::updateSet(). hortusfox-setup bypasses
that installer and never created this row, so AppModel::updateSet()'s
WHERE-less UPDATE matched zero rows: every admin "Save" reported
success but changed nothing, and app_mail_config() was nulling out
$_ENV['SMTP_*'] on every request from the same missing row, silently
breaking outbound mail. Seed the row on first boot, and add
language/workspace options (alongside the existing timezone) so
APP_LANG/APP_WORKSPACE and the seeded row both follow them.