Flexible update sources. The update registry now reads a configurable updates.sources list (with Paper/Geyser fallbacks), instantiates fetchers by type via reflection, and can register new sources at runtime—supporting bundled fetchers for Hangar, Modrinth, CurseForge, GitHub Releases, Jenkins, and any custom UpdateFetcher implementation you wire in.
Quick-install workflow & GUI. /nu2l now covers GUI access, asset selection, URL analysis, installed-plugin detection, config persistence, and scheduling of the first install without blocking the main thread, while the in-game overview lists managed plugins and guides players through linking new sources.
Asynchronous update pipeline and manual runs. UpdateHandler drives a scheduled fetch→download→install pipeline off-thread, resolves file destinations, copes with network hiccups, and exposes manual executions that report progress and outcomes back to the caller.
Lifecycle-aware post-update handling. When enabled, the plugin now registers loaded plugins for lifecycle control, queues post-update actions until players have left, enforces a restart cooldown, reloads plugins in-place when possible, and shuts down the server to complete installs if needed.
Persistent update tracking & migrations. Build/version metadata is stored in a normalized plugins.yml, legacy schemas are auto-migrated, and old config.yml entries are moved across with informative logging, giving the updater a reliable baseline for comparisons.