Fix 1: purge 0-byte .db orphans before backup

Interrupted installs and aborted sqlite3.connect calls sometimes leave a 0-byte nexo.db file behind in ~/.nexo/ or ~/.nexo/data/. Those empty shells broke the pre-update backup two different ways: they masked the real DB during _find_primary_db_path selection (whichever path was scanned first won), and they got copied into the backup as empty DBs that later confused _restore_dbs on rollback.

The new _purge_zero_byte_db_files() helper runs at the top of _backup_dbs(). It scans NEXO_HOME and its data/ subdir, removes any .db file whose st_size is zero, never touches SRC_DIR (the repo checkout) or the backups/ tree, and swallows errors so backup never aborts on orphan cleanup.

Fix 2: keep ~/.claude/settings.json in sync with the NEXO default

Claude Code reads its default model from ~/.claude/settings.json, not from NEXO’s internal client_runtime_profiles. After v5.6.0 shipped, the 4.6 → 4.7 heal was correctly updating NEXO’s profile while Claude Code happily kept booting on the old model until someone noticed and edited settings.json by hand.

The new sync_claude_code_model() helper in client_sync.py is called right after heal_runtime_profiles() migrates the claude_code profile. It is deliberately conservative:

• If settings.json is missing, it is a no-op.
• If settings.json exists but has no top-level "model" field, it is a no-op (never seeds a field the user did not opt in to).
• If the value already matches, no rewrite happens.
• Otherwise the model field is updated and everything else in the file is preserved.

How to upgrade

Run nexo update. The two fixes land on your next update. Nothing else to do.