Releases: Dans-Plugins/Dans-Plugin-Manager
Releases · Dans-Plugins/Dans-Plugin-Manager
v0.6.0
Added
discordWebhookconfig key — when set, DPM posts a summary notification to the specified Discord channel after each/dpm updaterun (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 onIOExceptionor 5xx responses;DownloadService.openNetworkStream()retries once onIOException; 4xx responses are not retried (#85) Logger.warn()— always prints to the console regardless ofdebugMode, 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
VersionStorenow uses the injecteddansplugins.dpm.utils.Loggerinstead 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 agithubToken; 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
.jarreleases now useLogger.warn()so they always appear in the server console, even whendebugModeis 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, andTabCompleter(CLAUDE.md violation)
Changed
/dpm statsnow shows available plugin count (registered minus installed) as a third stat line/dpm list availablenow appends each plugin's description after its name, separated by an em-dash/dpm remove <plugin-name> --confirmnow prints a reinstall hint (/dpm get <name>) after the removal success message/dpm updatesuccess 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 removenow appendUse /dpm search <keyword> to find the right name. /dpm removepreview 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
v0.5.0
What's New in 0.5.0
Added
- Docker-based integration test CI (
integration-test/test_dpm.py+.github/workflows/integration.yml) that spins up an OMCSI Spigot stack, deploys DPM, and assertsdpm list,dpm get, anddpm searchproduce the expected output; runs on workflow dispatch and nightly schedule /dpm getnow auto-downloads missing hard dependencies that are registered DPC plugins before downloading the requested plugin(s); transitive dependencies are resolved recursively and circular chains are handled safely/dpm update [plugin-name ...]— when plugin names are provided, only those plugins are updated; tab-completion offers installed plugin names at every argument position/dpm search <keyword>— searches registered plugin names and descriptions (case-insensitive substring match); results are colour-coded by install status/dpm statsnow shows installed plugin count alongside the total registered count/dpm reload— reloadsconfig.ymland re-applies live settings (e.g.githubToken) without a server restart/dpm remove <plugin-name> [--confirm]— previews the JAR to be deleted; pass--confirmto actually remove it- Tab-completion for
/dpm remove,/dpm clean,/dpm get,/dpm list, and/dpm update - One-line descriptions added to all 28 registered plugins; shown by
/dpm info - Dependency declarations on
ProjectRecord— hard and soft DPC-to-DPC relationships;/dpm infoshows each dependency and install status /dpm getaccepts multiple plugin names/dpm list installedand/dpm list availablesubcommands
Changed
PluginFolderService: O(1) batch directory scan viafindAllConflictingJarsandfilterInstalled; eliminates O(N×M) loops across commandsGitHubReleaseServicecaches release responses for the session;/dpm reloadclears the cache/dpm cleanpreviews deletions by default; pass--confirmto act- Removed Javadoc blocks project-wide; kept non-obvious algorithm notes as single-line comments
DPM 0.4.0
What's New
This release completes the core plugin management lifecycle — browse, inspect, download, update, and track versions — all from within the game or server console.
Commands
/dpm get <plugin>— Downloads the latest release JAR from GitHub automatically. Skips re-download if the plugin is already on the latest version./dpm update— Checks every installed managed plugin against its latest GitHub release and downloads any that are out of date. Prints per-plugin results and a summary./dpm info <plugin>— Shows GitHub owner, repository, latest release tag, publish date, and install/update status without downloading anything./dpm list— Now shows installed plugins in green (with version tag when known) and uninstalled plugins in grey./dpm clean— Removes duplicate/conflicting plugin JARs from the plugins folder.
Other Additions
- Tab-completion for all
/dpmsub-commands and plugin names for/dpm getand/dpm info. - Version tracking — the last-downloaded release tag is persisted in
dpm-versions.propertiesso DPM knows what's installed. githubTokenconfig option — set a GitHub personal access token to raise the API rate limit from 60 to 5 000 requests per hour. See USER_GUIDE.md for setup instructions.- 9 additional DPC plugin repos registered (Bluemap_MedievalFactions, Bookshelves-You-Can-Use, Dans-Set-Home, Democracy, FlyCommand, Herald, KDRTracker, Medieval-Cookery, MiniFactions). Total: 28 plugins.
Changes
- Downloads run asynchronously and no longer block the main server thread.
- Conflicting JARs (e.g. manually installed versioned copies) are automatically removed before a new version is downloaded.
Removed
- ChatHub (repo no longer exists).
See COMMANDS.md for the full command reference and USER_GUIDE.md for setup and configuration.
DPM 0.3 (Even More Project Records)
Full Changelog: 0.2...0.3
DPM 0.2 (More Project Records)
More project records have been added in this version.
Notes
- A stats command has also been added.
DPM 0.1 (Initial Version)
This is the initial version of the plugin.
Notes
- Five plugins can be downloaded using this version.