Skip to main content

MIGRATION_026

Constant MIGRATION_026 

Source
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