Skip to content

Releases: Dans-Plugins/Dans-Plugin-Manager

v0.6.0

18 May 05:14
4aca03c

Choose a tag to compare

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

v0.5.0

17 May 05:44
a62fe84

Choose a tag to compare

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 asserts dpm list, dpm get, and dpm search produce the expected output; runs on workflow dispatch and nightly schedule
  • /dpm get now 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 stats now shows installed plugin count alongside the total registered count
  • /dpm reload — reloads config.yml and re-applies live settings (e.g. githubToken) without a server restart
  • /dpm remove <plugin-name> [--confirm] — previews the JAR to be deleted; pass --confirm to 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 info shows each dependency and install status
  • /dpm get accepts multiple plugin names
  • /dpm list installed and /dpm list available subcommands

Changed

  • PluginFolderService: O(1) batch directory scan via findAllConflictingJars and filterInstalled; eliminates O(N×M) loops across commands
  • GitHubReleaseService caches release responses for the session; /dpm reload clears the cache
  • /dpm clean previews deletions by default; pass --confirm to act
  • Removed Javadoc blocks project-wide; kept non-obvious algorithm notes as single-line comments

DPM 0.4.0

16 May 20:36
2cf8c05

Choose a tag to compare

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 /dpm sub-commands and plugin names for /dpm get and /dpm info.
  • Version tracking — the last-downloaded release tag is persisted in dpm-versions.properties so DPM knows what's installed.
  • githubToken config 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)

24 Feb 23:58

Choose a tag to compare

DPM 0.2 (More Project Records)

24 Feb 05:50

Choose a tag to compare

Pre-release

More project records have been added in this version.

Notes

  • A stats command has also been added.

DPM 0.1 (Initial Version)

24 Feb 05:12

Choose a tag to compare

Pre-release

This is the initial version of the plugin.

Notes

  • Five plugins can be downloaded using this version.