You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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