const MIGRATION_026: &str = r#"
ALTER TABLE servers ADD COLUMN catalog_generation TEXT;
"#;Expand description
Remember which server generation wrote the cached catalog.
The cache was version-blind: nothing recorded which Jellyfin generation produced a row, so a server upgraded underneath the app kept serving rows parsed under the previous generation’s assumptions.
This deliberately does not clear synced_at the way MIGRATION_025 did.
The column starts NULL, which reads as “no generation recorded yet”, and the
first connection after upgrading simply records what it finds. Invalidation
happens only when the recorded generation actually changes — punishing
every existing user with a full re-fetch for a server upgrade that has not
happened would cost real bandwidth to defend against nothing. At the time of
writing no installed server is on the newer generation at all.
TRACES: UR-085 | DR-284