Skip to content

Release v2.4.4 - #222

Merged
Kkkermit merged 7 commits into
mainfrom
develop
Nov 13, 2026
Merged

Kkkermit merged 7 commits into
mainfrom
develop

Conversation

@Kkkermit

Copy link
Copy Markdown
Owner

Testify v2.4.4

What this changes

Ships #219 and #220 as version 2.4.4, once #221 is merged into develop:

Release notes

Testify v2.4.4

A small release with one fix and one improvement. A prefix command typed without its subcommand now tells the person what to type, instead of saying nothing and logging an error. The owner console's Logs tab gets a Refresh button, and a failed read no longer hides the lines you were reading.

⚠️ Before you upgrade

  • Nothing to set up: no new commands, no new environment variables, no new intents, no new collections and no dependency changes.
  • Run npm ci and npm run build, rebuild the Docker image, or pull ghcr.io/kkkermit/testify:2.4.4.

🐛 Fixed

  • A prefix command typed without its subcommand failed silently. t?role @someone @Role, with no add or remove, gave the person no reply and logged [MESSAGE_HANDLER_ERROR] A message handler failed. err=Pick one of: add, remove. Now the bot replies "That command needs one of these after its name: add or remove." The reply clears itself like other refusals.
    • This covers every command with subcommands, including t?music and t?casino with a subcommand they don't have.
    • The refusal comes before the command's cooldown, so a typo no longer makes you wait before typing it properly.
    • Slash commands were never affected, because Discord makes you pick a subcommand.

📜 Owner console

  • Refresh on the Logs tab. It reads the latest lines at once, for the run going now, whether live or paused, and for a past run. A green note says "Refreshed at 15:18:12." for a few seconds.
  • A failed refresh says why and keeps what you had. For example: "Couldn’t refresh the logs. The log store is busy. The lines shown were read at 15:18:12." The note stays until a later read works. The same goes for a failure on the automatic five-second refresh. The tab used to replace the lines with an error page, which hid them just when they were wanted.

🌍 Translations

  • The new subcommand refusal and the Refresh button's wording are in all eight languages.

🧪 Tests

Full changelog: release/v2.4.3...release/v2.4.4

Why

  • A command that answers nobody looks broken, and the operator got an error log for a typo.
  • A paused or past run had no way to pick up new lines short of leaving the tab, and a failed read hid the lines on the one screen meant for when things go wrong.
  • A release has to carry its own version. Without a bump, the push to main would release nothing and re-publish the Docker image under 2.4.3.

How to verify

Before merging:

After merging:

  • Actions → Release is green, and Releases shows v2.4.4 Testify with the notes above.
  • t?role with no subcommand answers with the refusal, which clears itself, and nothing is logged at error.
  • On /owner?tab=logs, press Pause, then Refresh: the newest lines appear with "Refreshed at …".

Checklist

  • This is the release pull request from develop into main.
  • Version updated to 2.4.4 in all three package manifests, the lockfile and the bug report template. This is chore: Bumped the version to 2.4.4 and brought main into develop #221, which needs merging first.
  • npm ci --dry-run accepts the bumped lockfile.
  • npm run check passes locally. The database suites ran on CI, where they passed on fix: Refused a prefix command typed without its subcommand instead of failing #219 and feat: Added a Refresh button to the owner console's logs #220.
  • No read-modify-save operations on numeric fields.
  • Embeds come from the embed() factory.
  • No raw console.* calls.
  • Every promise is awaited or otherwise handled.
  • No new timers registered with the bot.
  • No new environment variables.
  • No command's options or names changed, so docs/commands.md is unchanged.
  • AGENTS.md §5 and §24 describe both changes.
  • No database migration is needed.
  • Verified against live Discord from the real host. Not done, because this environment can't reach Discord.
  • Release notes reflect the final merged changes.

Generated by Claude Code

@Kkkermit
Kkkermit merged commit 3597d62 into main Nov 13, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant