simple list of pds servers with open registration

Add version range fallback to detect Cirrus, Cocoon without cron data

+17
+17
backend/routes/pages.ts
··· 396 396 return m ? m[1] : version; 397 397 } 398 398 399 + /** Known non-overlapping version ranges for each tracked software */ 400 + const VERSION_RANGES: Array<{ prefix: string; softwareId: string }> = [ 401 + { prefix: "0.4.", softwareId: "bluesky-pds" }, 402 + { prefix: "0.0.", softwareId: "millipds" }, 403 + { prefix: "0.10.", softwareId: "cirrus" }, 404 + { prefix: "0.8.", softwareId: "cocoon" }, 405 + ]; 406 + 399 407 /** Detect software from DB field, version-to-software map, or version string */ 400 408 function detectSoftwareId( 401 409 server: PdsServer, ··· 421 429 for (const sw of PDS_SOFTWARE_REGISTRY) { 422 430 if (sw.id !== "bluesky-pds" && vLower.startsWith(sw.id)) { 423 431 return sw.id; 432 + } 433 + } 434 + 435 + // 5. Match by known version ranges (non-overlapping major.minor prefixes) 436 + if (semver) { 437 + for (const range of VERSION_RANGES) { 438 + if (semver.startsWith(range.prefix)) { 439 + return range.softwareId; 440 + } 424 441 } 425 442 } 426 443