Skip to content

Releases: KyTDK/NeoModeration

NeoModeration 1.4.1

Choose a tag to compare

@KyTDK KyTDK released this 29 Jul 06:07

NeoModeration 1.4.1 — Activation clarity

NeoModeration 1.4.1 makes the first-run and cloud-recovery paths explicit. A
fresh install still starts safely in monitor mode: it detects and reports,
but does not block or punish until an admin runs /nmod mode enforce.

Improved

  • Guided first test. Startup, help, README, and marketplace copy now point
    to /nmod test badword. It proves the bundled local rule works and states
    that monitor mode will not execute an action.
  • Truthful key setup. Saving a key no longer claims cloud moderation is
    active before it has been checked. /nmod doctor verifies the account and
    usage API, latency, and the current credit balance; /nmod test hello
    verifies the moderation-events path separately.
  • Actionable cloud recovery. HTTP 401/403 is reported as a rejected key,
    while HTTP 402 is reported separately as insufficient credits. /nmod status, /nmod doctor, /nmod test, and /nmod usage provide the matching
    attributed key or billing link and a concrete command to verify recovery.
    No command or log line echoes an API key.
  • Honest billing classification. Ordinary Minecraft chat explicitly uses
    the platform's general content class. Only the feature dedicated to NSFW
    map-art image scanning declares nsfw; ordinary chat is never mislabeled to
    obtain a free allowance.
  • Separated cloud health. Chat tests and map-art scans feed the same
    moderation-event circuit/status state as normal chat. Account/usage checks
    are reported separately and cannot make a broken events endpoint look
    healthy. Malformed 4xx requests are no longer misreported as bad credentials.

Compatibility

  • No configuration migration is required.
  • Existing enforce-mode servers remain in enforce mode. Monitor is only the
    default for a genuinely new config.
  • Marketplace metadata now matches the verified Minecraft 1.18.2–1.21.x range;
    this release does not advertise untested Folia support.
  • Local word, URL, and anti-spam rules continue to run when the cloud is
    unavailable or out of credits.

Verified

  • Automated regression coverage includes 401/403, 402, other 4xx, transient
    failures, separated account/event health, recovery-message routing, locale
    parity, payload billing classes, and the guided monitor-mode test path.
  • The release matrix checks Paper 1.18.2, 1.19.4, 1.20.6, and 1.21.11,
    including monitor-once/enforce-once chat checks and representative commands.

Regenerate the final release JAR's SHA-256 checksum and matrix report from the
frozen release source immediately before publishing them beside these notes.

NeoModeration 1.4.0 — Coverage

Choose a tag to compare

@KyTDK KyTDK released this 11 Jul 20:13

NeoModeration 1.4.0 — Coverage

NeoModeration 1.4.0 makes it useful every day, not just for cloud moderation.
Everything new runs locally first — no API key required — so spam, strikes,
and extra surfaces cost nothing and never wait on the network. Scope comes from
docs/research/2026-07-11-1.4.0-coverage-research.md.

New

  • Local anti-spam (moderation.spam.*): message rate, duplicate/near-
    duplicate messages, excessive caps (player names exempt), character floods,
    and command-rate limiting. Runs before any cloud call. On by default with
    conservative limits; each check disables individually by setting it to 0.
  • Censor action (moderation.chat.censorLocalDetections): replace locally-
    matched words/links with **** and let the rest of the message through,
    instead of blocking the whole line. Cloud detections still block by default.
  • Progressive strikes (moderation.strikes.*): every detection adds a
    strike that decays over time; reaching a configured rung runs an extra action
    (default: kick at 4). Strike counts show in staff alerts.
  • More surfaces (moderation.surfaces.*): signs, books, anvil renames, and
    configured commands (/msg, /tell, …) now run the local rules through the
    same pipeline as chat. Each surface is independently off / monitor /
    censor / block, and all default to off so upgrades change nothing.
    These are synchronous events, so they use local rules only — the cloud is
    never in the critical path there.
  • Local case history (moderation.cases.*): a SQLite log of every detection
    (player, surface, reason, action, mode, time). Browse it with
    /nmod cases [player] and /nmod case <id>. Content previews are off by
    default (metadata only) to keep the log privacy-clean.
  • Unified detection pipeline: chat, map-art, and every new surface flow
    through one handler, so monitor mode, strikes, staff alerts, and case logging
    behave identically everywhere. Staff alerts now show the surface and strike.
  • Richer /nmod status and /nmod doctor report anti-spam, strikes,
    surfaces, and case-history state; new bStats charts (mode, cloud, censor).

Compatibility

  • Existing 1.3.x configs upgrade with no behavior change: new surfaces
    default off, and missing keys keep prior behavior. Anti-spam and strikes turn
    on with conservative defaults — set moderation.spam.enabled /
    moderation.strikes.enabled to false to keep chat exactly as it was.
  • The SQLite driver ships with Spigot/Paper; if it is ever missing, case history
    disables itself with one warning and moderation continues.
  • English and Spanish locales updated; custom locale files gain the new keys on
    first load.

Verified

  • 74 automated tests pass, including censor mapping, spam checks, strike decay,
    and SQLite case storage.
  • Paper 1.18.2, 1.19.4, 1.20.6, and 1.21.11 pass the full live matrix.
  • Smoke-tested on a live Paper server: spam trip, sign flag, censor, strike
    escalation, /nmod cases, /nmod doctor.

SHA-256 checksums are attached to the GitHub release.

NeoModeration 1.3.1 — Polish

Choose a tag to compare

@KyTDK KyTDK released this 11 Jul 15:04

NeoModeration 1.3.1 — Polish

A usability and code-quality release. No moderation behavior changes.

Improved

  • Readable /nmod help. The command list is now grouped into Getting
    started / Rules & actions / Tools / Admin sections with short, scannable
    usage and descriptions instead of a wall of wrapped text.
  • Consistent messages everywhere. Every chat line now shares one locale-
    defined {prefix}, so the plugin's look can be rebranded or recolored from a
    single line in locale/<lang>.yml.
  • Internal cleanup with zero duplication. Command boilerplate, tab-
    completion filtering, async scheduling, config save-and-reload, and action
    formatting are each defined exactly once. Same jar size class, same behavior,
    easier to extend.

Verified

  • 61 automated tests pass.
  • Paper 1.18.2, 1.19.4, 1.20.6, and 1.21.11 pass the full live matrix,
    including monitor-once/enforce-once chat checks and every command.

SHA-256 checksums are attached to the GitHub release.

NeoModeration 1.3.0 — Trust and Control

Choose a tag to compare

@KyTDK KyTDK released this 11 Jul 09:45

NeoModeration 1.3.0 — Trust and Control

NeoModeration 1.3.0 makes the plugin safe to evaluate and easy to trust. Every
feature in this release comes from the competitive research in
docs/research/2026-07-11-competitive-review.md: server owners will not turn on
automated punishment until they can preview decisions, understand them, and fix
false positives — so 1.3.0 ships exactly that.

New

  • Monitor mode. moderation.mode: monitor detects, counts, and alerts staff
    without blocking or punishing anyone — for chat and map-art. New
    installations start in monitor mode; servers upgrading from 1.2.x keep
    enforcing exactly as before
    (a missing mode key means enforce).
    /nmod mode shows since-startup detection counts by rule type;
    /nmod mode enforce turns enforcement on.
  • /nmod test <message>. Dry-runs the full pipeline: local rule verdict
    (with the exact matched rule), cloud verdict with round-trip latency, and what
    would happen in the current mode. Never executes actions.
  • /nmod doctor. One-command diagnostics: enabled/mode/rules/actions
    checks, fail policy, timeout budget vs. the 2.5s chat cap, endpoint validity,
    circuit-breaker state, and a live connectivity probe reporting workspace,
    plan, credits, and latency.
  • Exceptions that always win. moderation.offline.allowedWords /
    allowedUrls (managed with /nmod allow word|url add|remove|list) suppress
    banned-rule matches inside them — the fastest false-positive fix available.
  • Per-category cloud thresholds. Each category accepts true (default
    0.7), false (off), or a custom 0.05–0.99 threshold.
  • Policy presets. /nmod preset family|community|minimal bundles category
    thresholds and actions; mode and local rules are never touched.
  • Staff alerts. Players with the new neomoderation.notify permission (ops
    by default) see every detection in-game, with an optional redacted preview
    (moderation.alerts.includeMessage).
  • Privacy surface. /nmod privacy and docs/PRIVACY.md document exactly
    what stays local, what the cloud receives, and the no_store / no-training /
    fail-policy guarantees.
  • Richer /nmod status now shows mode, protection level ("Local only" vs
    "Local + cloud"), exception counts, alert state, and detections since startup.
  • bStats metrics (plugin id 32542) for content-free technical install statistics, fully disclosed in docs/PRIVACY.md.

Compatibility

  • Existing 1.2.x configurations upgrade in place with no behavior change:
    enforcement, categories (true/false), actions, and rules all keep their
    meaning.
  • English and Spanish locales updated; custom locale files gain the new keys
    automatically on first load.

SHA-256 checksums are attached to the GitHub release.

NeoModeration 1.2.2

Choose a tag to compare

@KyTDK KyTDK released this 10 Jul 14:23

NeoModeration 1.2.2

NeoModeration 1.2.2 is a reliability and performance release recommended for
every server.

Fixed

  • Paper chat is moderated exactly once. Registering both Paper's modern and legacy
    chat events could previously double API usage and, in rare cases, apply actions
    twice.
  • Map-art scanning now reads the real nested data.colors structure used by
    Minecraft map files.
  • moderation.chat.failOpen: false is now honored for cloud timeouts,
    authentication failures, and an open circuit breaker.
  • Players with neomoderation.bypass now bypass map-art checks as documented.
  • Failed or temporarily unavailable map-art scans are retried instead of being
    cached as successful scans.
  • Empty URL-rule entries can no longer match every chat message.
  • Cloud timeout defaults now match the plugin's 2.5-second maximum chat wait.

Faster

  • Offline word-filter patterns are compiled once per configuration instead of once
    per word for every message.
  • A 403-word real-world test corpus runs at approximately 8.5 microseconds per
    message on the release build, over 100 times faster than the previous path.

Release confidence

  • 44 automated tests pass.
  • The obfuscated release jar was verified on Paper 1.18.2, 1.19.4, 1.20.6, and
    1.21.11.
  • Each Paper version independently confirmed plugin loading, commands, actions,
    local filtering, and exactly-once moderation.

SHA-256 checksums are attached to the GitHub release.

NeoModeration 1.2.0

Choose a tag to compare

@KyTDK KyTDK released this 04 Jul 11:08

NeoModeration 1.2.0

New

  • Map-art NSFW scanning — filled maps are scanned for inappropriate imagery when held or placed in item frames (requires a cloud API key). Results are cached per map; flagged maps are confiscated or warned per config. Configurable under moderation.mapArt.
  • /nmod usage — view your NeoMechanical plan, rate limit, credits, request counts and NSFW quota in-game.

Improved

  • Subcommand-based /nmod with cleaner help, status, and error messages.
  • Documented, production-safe config.yml with inline comments.
  • Centralized settings and isolated API/usage clients.

Setup

Create an API key at platform.neomechanical.com (scopes events:write + usage:read), then run /nmod setup <key>. Verify with /nmod status.

Built and verified against Paper 1.21.1.