Skip to content

v0.6.0

Latest

Choose a tag to compare

@dmccoystephenson dmccoystephenson released this 18 May 05:14
· 1 commit to main since this release
4aca03c

Added

  • discordWebhook config key — when set, DPM posts a summary notification to the specified Discord channel after each /dpm update run (with per-plugin version diffs) and on any download failure from /dpm get (#83)
  • DiscordNotificationService — sends optional Discord webhook notifications; exceptions are silently swallowed so a failed webhook never affects the command result (#83)
  • Single retry with a 2-second delay on transient network failures: GitHubReleaseService.doFetch() retries once on IOException or 5xx responses; DownloadService.openNetworkStream() retries once on IOException; 4xx responses are not retried (#85)
  • Logger.warn() — always prints to the console regardless of debugMode, used for operator-visible error messages (#80)
  • Server-console audit trail: plugin.getLogger().info() is emitted on success and .warning() on failure for /dpm get, /dpm update, /dpm remove, and /dpm clean --confirm (#81, #87)

Fixed

  • VersionStore now uses the injected dansplugins.dpm.utils.Logger instead of a static JUL logger; load and save failures emit a clearly prefixed warning that always appears in the server console (#82)
  • GitHub rate-limit responses (HTTP 429 and HTTP 403 with X-RateLimit-Remaining: 0) now produce a specific warning advising to configure a githubToken; previously they were logged as generic API errors (#79)
  • GitHub API authentication failures (HTTP 401) now produce a specific warning identifying the token as the cause; previously folded into the generic non-200 path (#88)
  • Network errors, JAR download failures, and missing .jar releases now use Logger.warn() so they always appear in the server console, even when debugMode is off (#80)
  • JAR download stream now sets a 10 s connect timeout and 30 s read timeout; previously URL.openStream() had no timeout, so a hung CDN would stall the async task indefinitely
  • Conflicting JARs (e.g. Plugin-1.0.0.jar) are now removed only after a successful download; previously they were deleted before the network call, silently uninstalling the plugin on any download failure
  • JAR write buffer increased from 1 KiB to 8 KiB, reducing I/O cycles for large plugin files

Removed

  • Multi-line Javadoc blocks from HelpCommand, DansPluginManager, Logger, and TabCompleter (CLAUDE.md violation)

Changed

  • /dpm stats now shows available plugin count (registered minus installed) as a third stat line
  • /dpm list available now appends each plugin's description after its name, separated by an em-dash
  • /dpm remove <plugin-name> --confirm now prints a reinstall hint (/dpm get <name>) after the removal success message
  • /dpm update success message now shows the old and new version tag (e.g. v4.5.0 → v4.6.3) when a plugin was previously tagged; shows only the new tag if no prior tag was stored
  • All "Plugin not found" errors across /dpm get, /dpm update, /dpm info, and /dpm remove now append Use /dpm search <keyword> to find the right name.
  • /dpm remove preview and confirm paths now warn when other installed plugins declare a hard dependency on the plugin being removed
  • Download failures now distinguish between network errors (GitHub unreachable) and file write errors (plugins folder not writable), surfacing a specific hint in each case