Skip to content

chore(release): v5.61.0 - #132

Merged
rolling-codes merged 1 commit into
mainfrom
release/v5.61.0
Aug 11, 2026
Merged

chore(release): v5.61.0#132
rolling-codes merged 1 commit into
mainfrom
release/v5.61.0

Conversation

@rolling-codes

@rolling-codes rolling-codes commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Release v5.61.0, bundling everything merged since v5.60.0.

Included

Version bump

5.60.0 → 5.61.0 (minor: additive features + fixes, no breaking changes) across pyproject.toml, easycord/__init__.py, README.md, docs/getting-started.md; CHANGELOG entry added.

Gates (per RELEASE.md)

  • check_release_metadata.py — no drift
  • ruff check ... --select E9,F63,F7,F82 — clean
  • verify_plugin_tests.py — thresholds met
  • pytest — 1865 passed
  • pyright 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.0 and publish a GitHub Release with the built wheel + sdist. PyPI twine upload left 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:

  • Add offline easycord try CLI to run registered slash commands without Discord connectivity.
  • Introduce plugin ergonomics helpers including config mixin, decorator stacks, and task/timer lifecycle managers.
  • Add discord_errors() middleware to handle common Discord API errors with user-facing messages.

Bug Fixes:

  • Correct slash_mod_command to require the real moderate_members permission instead of nonexistent timeout_members.
  • Fix TaskManager.track race that could leave replacement tasks untracked and uncancellable.
  • Remove unused imports in decorator stacks flagged by static analysis.

Enhancements:

  • Route server_stats configuration writes through ServerConfigStore.mutate for consolidated locking and consistency.

Build:

  • Bump project version to 5.61.0 in pyproject, package metadata, and module __version__, and add corresponding changelog entry.
  • Update release metadata entries for wheel and source distribution artifacts.

Documentation:

  • Update README and getting-started docs to reference the v5.61.0 release, download URLs, and badges.

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.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sourcery-ai

sourcery-ai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Reviewer's Guide

Release v5.61.0: adds offline easycord try CLI, plugin ergonomics helpers, Discord error middleware and config migration, permission/TaskManager fixes, and updates versioning and release metadata across docs and packaging files.

Sequence diagram for the new easycord try offline CLI

sequenceDiagram
    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
Loading

Sequence diagram for discord_errors middleware handling

sequenceDiagram
    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
Loading

File-Level Changes

Change Details Files
Document new features and fixes for EasyCord v5.61.0 in the changelog.
  • Add v5.61.0 section describing the new offline CLI for running slash commands via testing harness
  • Document plugin ergonomics helpers including PluginConfigHelper, decorator stacks, and TaskManager/TimerManager lifecycle helpers
  • Describe new discord_errors() middleware and the server_stats config write migration to ServerConfigStore.mutate
  • Record fixes to slash_mod_command permission name, TaskManager.track race condition, and removal of unused imports
  • Add release artifact metadata entries for wheel and source distribution for v5.61.0
CHANGELOG.md
Bump project version and update all user-facing references and download URLs from 5.60.0 to 5.61.0.
  • Update README version badge and release link to v5.61.0 and adjust quick-start wheel download URL
  • Change pyproject.toml project version to 5.61.0 and update Download and Release URLs in project metadata
  • Update getting-started guide installation command to reference the v5.61.0 wheel
  • Update easycord package version constant to 5.61.0
README.md
pyproject.toml
docs/getting-started.md
easycord/__init__.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@github-actions github-actions Bot added the ci label Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@rolling-codes, you've reached your PR review limit, so we couldn't start this review.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 786a468d-e34f-41c6-9cd1-ec950bf4f556

📥 Commits

Reviewing files that changed from the base of the PR and between c0f000a and 728a769.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • README.md
  • docs/getting-started.md
  • easycord/__init__.py
  • pyproject.toml

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added documentation Improvements or additions to documentation dependencies and removed ci labels Aug 11, 2026
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Release v5.61.0 (version bump + changelog/docs links)

📝 Documentation ⚙️ Configuration changes 🕐 Less than 10 minutes

Grey Divider

AI Description

• Add v5.61.0 release notes to CHANGELOG (features + fixes since v5.60.0).
• Bump package version to 5.61.0 in pyproject and runtime __version__.
• Update docs/README download and release links to point at v5.61.0 artifacts.
High-Level Assessment

The following are alternative approaches to this PR:

1. Automate releases (release-please / bump2version + changelog generation)
  • ➕ Eliminates manual version/link drift across README/docs/pyproject
  • ➕ Standardizes changelog structure and release notes
  • ➕ Can auto-create tags and GitHub Releases with artifacts
  • ➖ Initial setup/maintenance cost
  • ➖ May require adapting current release checklist and conventions
  • ➖ Less flexibility for highly curated changelog entries

Recommendation: For this PR, the manual bump is appropriate and low-risk. Longer-term, consider a lightweight release automation tool to reduce repetitive edits and prevent URL/version drift across docs and metadata.

Files changed (5) +31 / -8

Documentation (3) +27 / -4
CHANGELOG.mdAdd v5.61.0 release notes entry +23/-0

Add v5.61.0 release notes entry

• Introduces a new EasyCord v5.61.0 section dated 2026-08-11. Summarizes added features, behavior changes, fixes, and publishes artifact names/URLs.

CHANGELOG.md

README.mdUpdate README badge and release/download links to v5.61.0 +3/-3

Update README badge and release/download links to v5.61.0

• Bumps the version badge to 5.61.0 and updates the wheel download URL in Quick Start. Updates the footer release tag link to v5.61.0.

README.md

getting-started.mdUpdate install command to v5.61.0 wheel URL +1/-1

Update install command to v5.61.0 wheel URL

• Updates the GitHub Releases wheel download URL from v5.60.0 to v5.61.0 in the Install section.

docs/getting-started.md

Other (2) +4 / -4
__init__.pyBump __version__ to 5.61.0 +1/-1

Bump version to 5.61.0

• Updates the package runtime version constant from 5.60.0 to 5.61.0.

easycord/init.py

pyproject.tomlBump project version and release URLs to v5.61.0 +3/-3

Bump project version and release URLs to v5.61.0

• Updates the project version to 5.61.0. Adjusts the Download and Release URLs to point to the v5.61.0 GitHub release artifacts.

pyproject.toml

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@rolling-codes
rolling-codes merged commit 699d5a6 into main Aug 11, 2026
14 checks passed
@rolling-codes
rolling-codes deleted the release/v5.61.0 branch August 11, 2026 20:55
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (1) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. CHANGELOG uses v5.61.0 📘 Rule violation ⚙ Maintainability
Description
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.
Code

CHANGELOG.md[5]

+## EasyCord v5.61.0 — 2026-08-11
Relevance

●●● Strong

Repo commonly accepts release-doc/version consistency fixes; adjusting CHANGELOG header is low-risk
and tooling-related.

PR-#123
PR-#43

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1045460 requires the exact same version string in pyproject.toml,
easycord/__init__.py, and the newest CHANGELOG heading. The diff adds a CHANGELOG heading
containing v5.61.0, which does not exactly match 5.61.0 used in the other two locations.

Rule 1045460: Keep project version string consistent in pyproject, init, and CHANGELOG
CHANGELOG.md[5-5]
easycord/init.py[19-19]
pyproject.toml[7-7]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## 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


Grey Divider

Context
✅ Compliance rules (platform): 41 rules

Grey Divider

Tip of the day
💡 Did you know, you can group findings by type and pick your Finding display, from Minimal to Full

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread CHANGELOG.md

All notable changes to EasyCord are documented here. See [Semantic Versioning](https://semver.org) for version numbering.

## EasyCord v5.61.0 — 2026-08-11

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants