Skip to content

v0.2.6

Latest

Choose a tag to compare

@MudDev MudDev released this 05 May 18:16
· 33 commits to main since this release
5fac823

This is a stability and reliability release focused on the file swarm push system, xID resolution performance, and broader UI translation coverage, and fixed tray icon frozen stats.

Sync & Push Reliability

  • content.db now stays in sync with disk. When ContentDbDict lazy-loads a content.json from disk, it now also writes the row back to content.db. Previously a divergence between the on-disk file and the DB row could make a peer appear permanently stale to others during listModified exchanges.
  • Stuck-file recovery on startup. New ContentManager.flagStaleFiles() walks every loaded content.json, compares declared file sizes to what's on disk, and adds any missing or size-mismatched files to bad_files so they get re-downloaded. Files with a disk mtime newer than their content.json are skipped (these are unsigned local edits by site owners and must not be overwritten). Own sites are skipped entirely.
  • Forced content diffs after needFile. Site.downloadContent now passes force=True to loadContent, so newly fetched content.json bytes are always diffed against the previous version, fixes a bug where a lazy-loaded self.contents could match disk on timestamp and silently skip the diff, leaving newly-referenced files unflagged.
  • content.json exempted from hierarchy rejection. During peer updates, getFileInfo returns False for content.json files (they define the hierarchy and aren't listed in their own files dict). The hierarchy check now skips that case so legitimate content.json updates from peers are no longer dropped.
  • Inline-delivered files now credit the push counter. When actionUpdate ships inline files alongside a content.json, those files are already at the peer, pushFilesToPeer now credits them against push_pending["pushed_count"] instead of redundantly issuing actionPushFile calls. Push targets are reached faster with less network traffic.

xID Resolution

A significant rework of the XidResolver plugin caching and timeout behavior, addressing slow/blocking resolves when chain RPC endpoints are degraded.

  • Hard gevent.Timeout on RPC fetches has been reduced from 10s → 8s and wrapped in a hard timeout so a stuck call cannot block the hub. Slow calls (> 0.5s) are now logged at DEBUG.
  • Stale-cache fallback on RPC failure. If resolve_with_proof fails outright, the resolver now serves the previous cached address (if any) rather than falling through to a 3-call fallback path that adds ~24s of blocking time when the RPC is down.
  • Persistent on-disk cache at <data_dir>/xid_cache.json. Identity cache is no longer lost on restart; saves are batched and flushed via atexit.
  • Aggressive positive caching, fast negative recovery. Positive identity TTL extended from 5 minutes → 30 days (revocation is handled separately via freshness check). Negative TTL reduced from 60s → 30s, names are permanent on-chain, so negatives almost always indicate typos or transient state and should recover quickly.
  • Detailed timing logs added across the resolve path (resolve_with_proof, get_attested_root, fallback resolve/dns/peers) for diagnosing slow resolutions.

Translations (PR #23 by @mx5kevin)

Substantial new translation coverage across core UI plugins:

  • Translate UI: added Arabic (ar), Korean (kr), Portuguese (pt), Ukrainian (uk)
  • Sidebar, Trayicon, UIConfig, UiFileManager, OptionalManager, MergerSite: language packs added
  • Dashboard site: added Korean and German language packs
  • General language pack styling polish

Tray Fix (PR #24 by @MudDev )

The stats on the system tray where not being updated, this has been fixed.

Publish reliability (PR #25 by @MudDev )

Publisher now prioritizes peers with fresh connection activity and detects stale TCP sockets up-front, eliminating the "first publish times out, second one works" pattern caused by dead-but-cached connections lingering until the 20-minute idle ping.


Full changelog: v0.2.5...v0.2.6

New Contributors

Full Changelog: v0.2.5...v0.2.6