Skip to content

Releases: hardcodd/Commentail

Commentail 1.1.0

Choose a tag to compare

@hardcodd hardcodd released this 20 Oct 09:18

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

  1. Back up the database and host configuration, templates, media, secrets and
    exact package versions. Rehearse on a restored copy with local email delivery.
  2. Install the release with
    python -m pip install --upgrade commentail==1.1.0.
  3. Run python manage.py migrate. Migration
    0015_sitecommentsettings_highlight_staff adds the enabled-by-default
    highlight_staff field to existing Site settings; comment records are retained.
    Disable Highlight staff names on a Site if those decorations are unwanted.
  4. Run python manage.py check and python manage.py collectstatic --noinput,
    then restart application processes and the mail worker using the host's normal
    deployment procedure. Refresh cached static assets.
  5. 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.
  6. 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

Choose a tag to compare

@hardcodd hardcodd released this 19 Oct 10:08

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,
    check and collectstatic --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. Migration 0014_reading_indexes builds 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 Pre-release
Pre-release

Choose a tag to compare

@hardcodd hardcodd released this 19 Oct 07:43

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_recent to 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 migration 0014_reading_indexes for 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

  1. Rehearse on a restored database and keep all rehearsal mail local. Back up the
    database, media, host settings/templates, SECRET_KEY and exact package versions.
    Pause site writes and the Commentail worker for final backup and cutover.
  2. In the test environment, install python -m pip install --upgrade commentail==0.2.0.
    If using a downloaded wheel, verify its supplied checksum first.
  3. Run python manage.py migrate. Migration 0014_reading_indexes changes
    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.
  4. Run python manage.py check and python manage.py collectstatic --noinput.
    Review HTML and plain-text email overrides together. Existing per-kind paths
    and context remain compatible; shared base.html/button.html are presentation
    helpers. Enable new languages through the host's Django language settings.
  5. 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.
  6. 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 Pre-release
Pre-release

Choose a tag to compare

@hardcodd hardcodd released this 18 Oct 20:31

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

  1. Back up the database, media, settings, secrets and exact package/dependency
    versions; rehearse restoration and keep rehearsal mail local.
  2. In the test environment, run python -m pip install --upgrade commentail==0.1.1.
    If using a downloaded wheel, verify its checksum before installation.
  3. With PostgreSQL, include django.contrib.postgres in INSTALLED_APPS, as
    required by Django 6.x checks. Keep the framework pair within this matrix.
  4. Run migrate, check and collectstatic. No new Commentail migrations are
    included; a framework upgrade can still have its own migrations.
  5. Review overridden guest forms for the 40-grapheme guidance and validation
    attributes. Existing stored names are not truncated or rewritten.
  6. 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 Beta Pre-release
Pre-release

Choose a tag to compare

@hardcodd hardcodd released this 17 Oct 05:12

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.0

PyPI · Documentation

Artifacts

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 SHA256SUMS

Compare 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.

Support Commentail