chore(release): v5.61.0 - #132
Conversation
Bundle the changes merged since v5.60.0: - #128 offline 'easycord try' CLI - #129 plugin ergonomics helpers (config mixin, decorator stacks, task/timer managers) - #130 discord_errors() middleware + server_stats store.mutate migration - #131 slash_mod_command moderate_members permission fix Bump version across pyproject/__init__/README/docs and add the CHANGELOG entry. Gates: metadata drift check, ruff (E9,F63,F7,F82), plugin-test floor, and full suite (1865) all pass.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Reviewer's GuideRelease v5.61.0: adds offline Sequence diagram for the new easycord try offline CLIsequenceDiagram
actor User
participant CLI as easycord_try
participant Harness as testing
User->>CLI: easycord try <target> <command> [--set ...] [--user/--guild/--dm]
CLI->>Harness: invoke(target, command, options)
alt command_found_and_succeeds
Harness-->>CLI: result
alt --json
CLI-->>User: write JSON to stdout
else default_output
CLI-->>User: write human-readable result
end
CLI-->>User: exit code 0
else unknown_command
Harness-->>CLI: [unknown command]
CLI-->>User: list available command names
CLI-->>User: exit code != 0
else command_raises
Harness-->>CLI: propagate exception
CLI-->>User: print error
CLI-->>User: exit code != 0
end
Sequence diagram for discord_errors middleware handlingsequenceDiagram
actor User
participant Bot
participant MW1 as discord_errors
participant MW2 as catch_errors
participant Discord as DiscordAPI
User->>Bot: invoke slash command
Bot->>MW1: handle(ctx, next)
MW1->>MW2: next(ctx)
MW2->>Discord: execute Discord API call
alt Discord raises Forbidden/NotFound/HTTPException
Discord-->>MW2: exception
MW2-->>MW1: rethrow Discord exception
MW1-->>User: send localized ephemeral error reply
else non_Discord_exception
Discord-->>MW2: other exception
MW2-->>MW1: rethrow exception
MW1-->>Bot: propagate exception
Bot->>MW2: catch_errors as generic fallback
MW2-->>User: generic error handling
else success
Discord-->>MW2: success
MW2-->>MW1: return result
MW1-->>Bot: return result
Bot-->>User: command response
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Warning Review limit reached
Next review available in: 12 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoRelease v5.61.0 (version bump + changelog/docs links)
AI Description
High-Level Assessment
Files changed (5)
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Code Review by Qodo
1. CHANGELOG uses v5.61.0
|
|
|
||
| All notable changes to EasyCord are documented here. See [Semantic Versioning](https://semver.org) for version numbering. | ||
|
|
||
| ## EasyCord v5.61.0 — 2026-08-11 |
There was a problem hiding this comment.
1. Changelog uses v5.61.0 📘 Rule violation ⚙ Maintainability
The new CHANGELOG heading uses v5.61.0, while pyproject.toml and easycord/__init__.py use 5.61.0, so the version string is not exactly consistent across all three locations. This may break tooling that expects an exact match when parsing release versions.
Agent Prompt
## Issue description
`CHANGELOG.md` uses a `v`-prefixed version (`v5.61.0`) while the canonical version in `pyproject.toml` and `easycord/__init__.py` is `5.61.0`. The compliance rule requires the exact same version string in all three places.
## Issue Context
Current sources:
- `pyproject.toml`: `version = "5.61.0"`
- `easycord/__init__.py`: `__version__ = "5.61.0"`
- `CHANGELOG.md`: `## EasyCord v5.61.0 — 2026-08-11`
## Fix Focus Areas
- CHANGELOG.md[5-5]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Release v5.61.0, bundling everything merged since v5.60.0.
Included
easycord tryCLI (run a slash command without Discord)PluginConfigHelper(atomic config viastore.mutate), decorator stacks (slash_admin_commandetc.),TaskManager/TimerManagerdiscord_errors()middleware +server_statsstore.mutatemigrationslash_mod_commandnow usesmoderate_members(real perm) instead of the nonexistenttimeout_membersVersion bump
5.60.0 → 5.61.0(minor: additive features + fixes, no breaking changes) acrosspyproject.toml,easycord/__init__.py,README.md,docs/getting-started.md; CHANGELOG entry added.Gates (per RELEASE.md)
check_release_metadata.py— no driftruff check ... --select E9,F63,F7,F82— cleanverify_plugin_tests.py— thresholds metpytest— 1865 passedpyright easycord tests— 12 errors / 135 warnings, all pre-existing on main and unrelated to this release (CI does not gate on pyright); noted, not introduced here.After merge: tag
v5.61.0and publish a GitHub Release with the built wheel + sdist. PyPItwine uploadleft as a manual step (requires credentials).Summary by Sourcery
Release EasyCord v5.61.0 with new CLI tooling, plugin ergonomics helpers, Discord error handling middleware, and minor fixes, plus corresponding version and metadata updates.
New Features:
easycord tryCLI to run registered slash commands without Discord connectivity.discord_errors()middleware to handle common Discord API errors with user-facing messages.Bug Fixes:
slash_mod_commandto require the realmoderate_memberspermission instead of nonexistenttimeout_members.TaskManager.trackrace that could leave replacement tasks untracked and uncancellable.Enhancements:
server_statsconfiguration writes throughServerConfigStore.mutatefor consolidated locking and consistency.Build:
__version__, and add corresponding changelog entry.Documentation: