Files
TZERO78 c0d8f66c8a fix: v7.3.4 — migrate-config false-positive type mismatches, trailing entry, template drift
Round two of UX cleanup on scripts/migrate-config.sh after a real
production config (full notification setup, legacy hooks,
retention.yearly from an old release) exposed several false positives
and a missing template field.

Fixed
- Stop flagging `template=null` vs scalar as a type mismatch. A null
  value in the template marks a "not configured yet" slot —
  kopia.password_file, notifications.service, notifications.url and
  similar. The live system produced pages of false-positive `!` lines.
  Now suppressed in either direction; only genuine clashes surface.
- Trailing empty `! ` entry in the type-mismatch block removed. The
  block was built with `+= "$line"$'\n'` plus a terminating newline,
  printing one blank `! ` at the end. Switched to a proper bash array
  and `printf '%s\n' "${arr[@]}"`.
- Template now ships backup.database_backup. The Pydantic schema has
  had it (default "true") since 5.x but config_template.json was
  missing it — every install that still had the key got it flagged
  as "unknown" on first migrate.

Documentation
- Known legacy renames table in docs/CONFIGURATION.md. The script
  doesn't auto-rename (no opinion on your data), but the doc tells you
  which "Unknown" lines (retention.yearly → annual, pre/post_backup_hook
  → backup.hooks.*) are safe to --prune-unknown once you've copied the
  value to the new key.

Tests: 1124 passing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 06:44:32 +00:00
..