Repository navigation
Releases: hardcodd/Commentail
Release list
Commentail 1.1.0
Commentail 1.1.0
20 October 2026 · Stable · MIT
This release improves moderation inside Wagtail while preserving the documented
1.x integration contract. Dependency bounds and the
supported Python, Wagtail, Django and database matrix are unchanged from 1.0.0.
Changes
- Bulk approve, reject, hide, restore and text erasure across the comment lists,
with per-Site permissions and status checks. If any selected comment is no
longer eligible, the whole action rolls back, including audit and mail jobs. - Explicit confirmation before single or bulk irreversible text erasure, with
the comment count and a safe cancel action. Replies remain in place. - A selection count, clear selection, grouped filters and explanations for
unavailable actions. Search, filters and pagination survive navigation through
comment cards, moderation, revision decisions, mail retries and confirmation. - A shared Management menu on every Commentail admin page, compact settings and
permissions forms, and translated recovery pages for failed moderation actions.
Core actions and recovery links remain usable without JavaScript. - Staff names use a colored badge; super administrators have a golden name badge
and a small golden crown on their avatar. The per-Site Highlight staff names
option controls both decorations and is enabled by default. - Optional publication notices are queued only after moderator approval of a
pending comment or author revision. Immediate publication does not send the
author a publication notice. Guest confirmation/edit links and direct-reply
notifications retain their existing behavior.
Upgrade from 1.0.0
- Back up the database and host configuration, templates, media, secrets and
exact package versions. Rehearse on a restored copy with local email delivery. - Install the release with
python -m pip install --upgrade commentail==1.1.0. - Run
python manage.py migrate. Migration
0015_sitecommentsettings_highlight_staffadds the enabled-by-default
highlight_stafffield to existing Site settings; comment records are retained.
Disable Highlight staff names on a Site if those decorations are unwanted. - Run
python manage.py checkandpython manage.py collectstatic --noinput,
then restart application processes and the mail worker using the host's normal
deployment procedure. Refresh cached static assets. - Review host overrides of comment item/author/avatar markup and Commentail admin
templates. Existing overrides keep precedence; new decorations and admin
controls require the corresponding updated markup and assets. See the
template contract and
styling guide. - Check Site permissions, mixed-status bulk actions, cancellation of erasure,
return to filtered results, and the intended notification policy. Existing
queued publication notices remain queued; the new policy affects new events.
For earlier installations, also follow the
1.0.0, 0.2.0 and 0.1.1 upgrade notes as applicable.
Restore pre-upgrade and post-upgrade backups independently with their matching
package versions. A wheel downgrade alone does not restore the previous schema
or recover erased text. Keep the same SECRET_KEY to retain issued action links.
Verification boundaries
The installed candidate passed 368 server tests on Wagtail 7.4/Django 5.2 with
Python 3.12 and Wagtail 8/Django 6.1 with Python 3.14, each on file SQLite and
PostgreSQL 16. PostgreSQL skips one SQLite-specific test. The 42 JavaScript tests,
lint, translation catalogs, migration drift, archive checks and source example
also passed. Synthetic 1.0.0 upgrades and independent pre/post database restores
on both databases preserved retained records and issued links; mail was local.
The moderation changes were accepted in Firefox, including narrow viewports,
light/dark themes and recovery to filtered results. The release workflow requires
successful CI for the exact publishing commit, including the supported framework
and database matrix, translations, migration drift and source/wheel installation.
Candidate checks and acceptance on an integrating site remain separate: each site
must verify its own theme, template overrides, permissions, email delivery and
scheduled worker. This release does not update any integrating site automatically.
Commentail 1.0.0
Commentail 1.0.0
19 October 2026 · Stable · MIT
The feature set is frozen at published 0.2.0 Beta. This release starts the
stable API and compatibility policy; it introduces no
runtime changes, new dependencies or database migrations beyond 0.2.0.
Install from PyPI; archives and checksums
are available in the GitHub release.
Included
Self-hosted Page/object discussions; Site/Page settings; site accounts and
email-verified guests; four moderation policies; threaded replies and moderated
author edits; protected links and per-comment unsubscribe; database mail queue;
custom templates, callbacks, CAPTCHA and object adapters; structured data;
recent-comment selection with host markup; six UI/email languages; HTML/plain-text
emails; and indexed database reads. See the 0.2.0 notes for its additions.
Most-discussed threads remain deferred.
Upgrade
Back up the database, media, host settings/templates, SECRET_KEY and exact
versions. Rehearse with python -m pip install --upgrade commentail==1.0.0
in a restored test environment. Keep rehearsal mail local.
- From 0.2.0: no Commentail schema migration is added. Run normal
migrate,
checkandcollectstatic --noinput; verify existing host overrides and queues. - From 0.1.0 or 0.1.1: also follow the 0.1.1 and
0.2.0 upgrade notes. Migration0014_reading_indexesbuilds indexes
and SQLite remakes the rate-event table. Measure migration cost on representative
data and plan a maintenance window where needed. - Restore pre-upgrade and post-upgrade backups independently. Verify old tokens,
pending revisions, permissions, settings, subscriptions and queued mail; then
exercise new writes and local delivery. A wheel downgrade alone is not recovery.
Verification
Candidate verification and acceptance on an integrating site are separate. Check
the host theme, access rules, email delivery and scheduled worker on that site.
An owner-supplied report dated 19 October 2026 covers published 0.2.0 on a live
integrating site: guest confirmation/editing/moderation, Gmail/Yandex delivery,
reply notifications, unsubscribe, upgrade/restoration and 24 negative token/CSRF
cases. Verification scope and observations
include initial Yandex spam placement and the ordinary form shown on repeated
confirmation. These results support the unchanged 1.0.0 runtime; they
are not a live-site test of an installed 1.0.0 package.
The installed 1.0.0 candidate passed 314 server tests on each of two framework
pairs with SQLite and PostgreSQL 16, 33 JavaScript tests, package checks and
independent upgrade/restoration rehearsals. Historical-browser checks covered
Chrome 142 and Firefox 140 ESR with and without JavaScript; Windows checks used
ARM64, with Chrome x64 under emulation. Native Windows x64 was not tested.
Support, compatibility promises and verification limits are defined by
Stability. No exhaustive browser/device/WCAG certification,
native-language review or universal server-capacity guarantee is claimed.
Commentail 0.2.0 Beta
Commentail 0.2.0
Beta · 19 October 2026 · MIT
This release adds reusable recent-comment lists, four languages, HTML email
presentation and database optimizations. It retains the 0.1.1 framework bounds.
The version number is 0.2.0; the package remains classified as Beta.
Changes since 0.1.1
- Use
commentail_recentto select published comments across the current Site or
one Page, limit the count, include/exclude replies and render your own markup.
Selection respects visitor access and hidden discussions. Results contain
presentation fields, not private ORM objects. Never share-cache this output. - Add German, French, Spanish and Brazilian Portuguese across the public UI,
moderation/settings and all five email types, alongside English and Russian.
Queued mail uses the recipient's saved language. Documentation remains English
and Russian; catalog checks do not replace native-speaker review. - Include minimal HTML emails with equivalent plain text, host Site names and
descriptive actions. Revision decisions have distinct wording. Host overrides
retain precedence; no comment text or tracking assets are added to mail. - Group Page-editor Comments settings without changing inheritance or when
settings take effect. Use Wagtail's searchable Page chooser in moderation. - Batch recent-comment access checks and thread counts, reuse target settings
and URLs, preload mail relations, narrow cleanup locks and optimize phrase rules.
Add migration0014_reading_indexesfor publication/thread reads, active
CAPTCHA lookup and rate cleanup. Include a reproducible synthetic load tool. - Include the Russian README in the source archive.
Compatibility and verification boundaries
Python 3.12–3.14; Wagtail 7.4.3+ within 7.4 with Django 5.2 or 6.0; Wagtail
8.0.x with Django 5.2, 6.0 or 6.1. File SQLite and PostgreSQL 16 are the declared
CI database matrix. Wagtail 7.4 with Django 6.1 and Wagtail 8.1+ remain outside
scope. This release does not expand stable API or browser/accessibility promises.
The runtime already passed a local 30-combination matrix on SQLite and PostgreSQL
18.6; the performance report gives the workloads,
measurements and limits. These are local synthetic checks, not a promise of
capacity on arbitrary servers. The installed 0.2.0 wheel also passed 314 tests
on each of Wagtail 7.4/Django 5.2 and Wagtail 8.0/Django 6.1 with SQLite and
PostgreSQL 16; each PostgreSQL job skips one SQLite-only plan check. JavaScript
checks (33), Ruff and all shipped translation catalogs passed. Upgrade from the
published 0.1.1 wheel and independent pre/post-upgrade backup restoration passed
on SQLite and PostgreSQL 16, preserving data, existing capabilities and host
configuration, with new writes and local mail verified after restoration.
Email-client/native-language review and host-site acceptance remain separate
from automated checks.
Upgrade from 0.1.1
- Rehearse on a restored database and keep all rehearsal mail local. Back up the
database, media, host settings/templates,SECRET_KEYand exact package versions.
Pause site writes and the Commentail worker for final backup and cutover. - In the test environment, install
python -m pip install --upgrade commentail==0.2.0.
If using a downloaded wheel, verify its supplied checksum first. - Run
python manage.py migrate. Migration0014_reading_indexeschanges
indexes only; it does not rewrite comments or their state. Standard index
builds may block writes and require extra disk space. SQLite also rebuilds
the rate-event table while preserving its rows. Measure migration time
on representative data and plan a maintenance window for large databases. - Run
python manage.py checkandpython manage.py collectstatic --noinput.
Review HTML and plain-text email overrides together. Existing per-kind paths
and context remain compatible; sharedbase.html/button.htmlare presentation
helpers. Enable new languages through the host's Django language settings. - Check old comments/replies, pending revisions, settings, permissions, tokens,
subscriptions and queued mail. Exercise new writes and local mail after
restoring both pre-upgrade and post-upgrade backups independently. - Resume production traffic and the worker after the rehearsal and live-site
integration checks pass. Review restored queues: mail pending in an
older snapshot may already have been delivered and can be sent again.
Existing widgets need no changes. The new recent-comments tag is opt-in. The
index migration is reversible, but replacing the wheel alone is not a complete
rollback procedure. Restoring an older database discards subsequent writes;
retain a bounded recovery plan. Upgrades from 0.1.0 also need the
0.1.1 upgrade notes.
See installation and restoration,
recent comments,
email overrides,
performance and migration guidance and
version history.
Commentail 0.1.1 Beta
Commentail 0.1.1
Beta · 19 October 2026 · MIT
This update expands framework compatibility and fixes guest-name and mail-link
behavior. Install with python -m pip install commentail==0.1.1.
See the 0.1.0 → 0.1.1 comparison
and the version history.
Changes since 0.1.0
- Support Wagtail 7.4.3+ within 7.4 with Django 5.2 or 6.0, and Wagtail 8.0.x
with Django 5.2, 6.0 or 6.1, on Python 3.12–3.14. - Generate email action and status links using the configured Commentail URL
prefix, including nested paths. - Limit new guest names to 40 Unicode graphemes after trimming, with server
validation and progressive browser feedback. Preserve existing names and
registered-account names. - Give the guest-name label a translation context so host-site translations for
other uses of "Name" do not replace the author label. - Extend regression coverage for capability access, extension and presentation
contracts, transactions, concurrency and worker recovery.
Compatibility
The supported database matrix is file SQLite and PostgreSQL 16. Each of the five
framework pairs above is exercised on Python 3.12, 3.13 and 3.14 with both databases
(30 combinations). Wagtail 7.4 with Django 6.1 and Wagtail 8.1+ are outside scope.
Keep Beta expectations: this is not a stable 1.0 release.
Upgrade from 0.1.0
- Back up the database, media, settings, secrets and exact package/dependency
versions; rehearse restoration and keep rehearsal mail local. - In the test environment, run
python -m pip install --upgrade commentail==0.1.1.
If using a downloaded wheel, verify its checksum before installation. - With PostgreSQL, include
django.contrib.postgresinINSTALLED_APPS, as
required by Django 6.x checks. Keep the framework pair within this matrix. - Run
migrate,checkandcollectstatic. No new Commentail migrations are
included; a framework upgrade can still have its own migrations. - Review overridden guest forms for the 40-grapheme guidance and validation
attributes. Existing stored names are not truncated or rewritten. - Test guest confirmation, moderation, replies, edits and queued mail at your
actual URL prefix before restoring normal traffic and the worker.
Python hooks and URL names are unchanged. Already queued mail uses the installed
version's URL generation when sent; previously delivered links are not rewritten.
SMTP uncertainty can still cause duplicate delivery. Public API, browser and
accessibility guarantees are not expanded by this update.
See installation and restoration,
development checks and the
original 0.1.0 contract.
Commentail 0.1.0 Beta
Commentail 0.1.0
First public release · MIT · Wagtail 7.4 LTS
Included
- Template-tag integration for Pages and explicit ordinary Django model adapters.
- Site defaults, Page/object inheritance and open/read-only/hidden modes.
- Site accounts, verified guests, browser proof and replaceable local CAPTCHA.
- Four moderation policies, phrase rules, CSV upsert/export and Site-scoped permissions.
- Threaded replies at one display level, targeted links and batched loading.
- Inline author edits, publication-based deadline, permanent reply lock and revision review.
- Database outbox, retries, direct-reply mail and per-comment unsubscribe.
- Theme inheritance, CSS custom properties and overridable widget/action/mail templates.
- English/Russian UI, progressive JS, plain HTML fallbacks and focus handling.
- Schema.org Comment microdata and JSON-LD for rendered published comments.
Compatibility
Python 3.12–3.14; Django >=5.2,<5.3; Wagtail >=7.4.3,<7.5; SQLite/PostgreSQL.
PostgreSQL 14 is covered by hosted CI. Wagtail 8.0 is outside this release.
Install
python -m pip install commentail==0.1.0Artifacts
The wheel and source archive attached here are byte-for-byte identical to PyPI 0.1.0.
Install from PyPI or download the release assets; see
Installation. Verify SHA256SUMS before installing. The wheel
contains runtime/metadata; source additionally includes tests, example and guides.
Limits
No separate REST API, rich-text/Markdown editor, uploads, likes, reports or live
updates. Moderators cannot alter author text. SMTP uncertainty can duplicate mail;
inbox delivery depends on the provider. Selected accessibility/browser checks are
not an exhaustive certification.
Verify downloads
From the directory containing the archives and SHA256SUMS:
# Linux
sha256sum -c SHA256SUMS
# macOS
shasum -a 256 -c SHA256SUMSCompare against the checksum file distributed with the same release. Checksums
detect changed files; they are not a signature or independent proof of origin.
Verification
Released from commit 1f6603efa0a6f23d0649d9e1509bd7a504cb9dd7.
CI passed all eight jobs.
Fresh installation from PyPI passed 239 server tests and dependency checks.
Both archives were downloaded and verified against the publishing-run SHA-256 manifest.