MCPcopy Create free account
hub / github.com/ScriptedAlchemy/tracedecay / check_version_update

Method check_version_update

src/mcp/server.rs:1565–1607  ·  view source on GitHub ↗

Returns a version-update warning if a newer release is available. Results are cached for `VERSION_CHECK_INTERVAL` (15 minutes).

(&self)

Source from the content-addressed store, hash-verified

1563 /// Returns a version-update warning if a newer release is available.
1564 /// Results are cached for `VERSION_CHECK_INTERVAL` (15 minutes).
1565 async fn check_version_update(&self) -> Option<String> {
1566 let current = env!("CARGO_PKG_VERSION");
1567
1568 // Fast path: serve from cache if still fresh.
1569 {
1570 let cache = self.version_cache.lock().ok()?;
1571 if let Some(checked_at) = cache.checked_at {
1572 if checked_at.elapsed() < VERSION_CHECK_INTERVAL {
1573 let latest = cache.latest.as_deref()?;
1574 return if crate::cloud::is_newer_minor_version(current, latest) {
1575 Some(format!(
1576 "⚠️ tracedecay v{current} is installed, but v{latest} is available. \
1577 Run `tracedecay upgrade` to update."
1578 ))
1579 } else {
1580 None
1581 };
1582 }
1583 }
1584 }
1585
1586 // Cache miss or expired – fetch from GitHub (best-effort, 1 s timeout).
1587 let latest = tokio::task::spawn_blocking(crate::cloud::fetch_latest_version)
1588 .await
1589 .ok()
1590 .flatten();
1591
1592 // Update cache regardless of fetch outcome so we don't retry immediately.
1593 if let Ok(mut cache) = self.version_cache.lock() {
1594 cache.latest.clone_from(&latest);
1595 cache.checked_at = Some(Instant::now());
1596 }
1597
1598 let latest = latest?;
1599 if crate::cloud::is_newer_minor_version(current, &latest) {
1600 Some(format!(
1601 "⚠️ tracedecay v{current} is installed, but v{latest} is available. \
1602 Run `tracedecay upgrade` to update."
1603 ))
1604 } else {
1605 None
1606 }
1607 }
1608
1609 /// Process a single raw JSON-RPC line and write the response.
1610 /// Used to replay a peeked `initialize` message that was consumed before

Callers 1

handle_tools_callMethod · 0.80

Calls 1

is_newer_minor_versionFunction · 0.85

Tested by

no test coverage detected