Skip to content

Release 3.0.0

Michael Beaton edited this page Nov 25, 2022 · 1 revision

Upgrade warning

If upgrading from an older version please be aware of these changes:

  • Unused MentionableMixin.allow_incoming_webmentions field has been removed.
  • Any existing instances of PendingIncomingWebmention and PendingOutgoingContent will be deleted.
    • These models have new constraints so it is necessary to recreate them.
    • If this is problematic for you please don't upgrade yet. Contact me or create an issue and I will make a tool to persist these between versions.

Changes

Thanks to @philgyford for reporting most of the issues referenced here.

  • Resolves #25.

    • Added QuotableMixin.post_type field.

    • Incoming webmentions are now checked for the following microformat
      properties that describe the type of mention they are:

      • u-bookmark-of
      • u-like-of
      • u-listen-of
      • u-in-reply-to
      • u-repost-of
      • u-translation-of
      • u-watch-of
    • The /webmention/get endpoint serializes these values in the type
      field respectively as:

      • bookmark
      • like
      • listen
      • reply
      • repost
      • translation
      • watch
      • If no specific type is specified this defaults to webmention.
  • Resolves #30

    • Added MentionableMixin.should_process_webmentions() -> bool method to enable custom logic.
  • Resolves #31

    • Success message now rendered via template, enabling override by user.
  • Resolves #32

    • Same-page #anchor links no longer treated as webmention targets.
  • Resolves #33, #34

    • Much improved parsing of h-card.
      • Now tries to find anh-card that is directly related to the mention link (embedded in p-author of a parent h-entry or h-feed container).
      • If that doesn't yield a result, try to find a top-level h-card on the page.
    • Removed HCard.from_soup() classmethod. Parsing logic moved to tasks.incoming.parsing package.
  • Resolves #36

    • Added constraints to PendingIncomingWebmention and PendingOutgoingContent to avoid duplication.
      • Warning: If updating from an older version of django-wm this will delete any existing Pending... model instances.
    • Request timeouts are now handled gracefully.
    • PendingIncomingWebmention and OutgoingWebmentionStatus now implement the new RetryableMixin.
    • Reworked webmention processing tasks to allow failed webmentions to be retried periodically.
      • See settings WEBMENTIONS_MAX_RETRIES, WEBMENTIONS_RETRY_INTERVAL, WEBMENTIONS_TIMEOUT below for customisation details.
  • New dashboard/ view: a simple overview of recent mentions.

    • Shows the latest instances of Webmention, OutgoingWebmentionStatus, PendingIncomingWebmention, PendingOutgoingContent and info on their current status.
    • By default, restricted to users with mentions.view_webmention_dashboard permission.
    • Can be made public via settings.WEBMENTIONS_DASHBOARD_PUBLIC = True.
  • New optional settings:

    • settings.WEBMENTIONS_TIMEOUT [float | default=10] specifies the time (in seconds) to wait for network calls to resolve.
    • settings.WEBMENTIONS_RETRY_INTERVAL [int | default=600] specifies the minimum time (in seconds) to wait before retrying to process a webmention.
    • settings.WEBMENTIONS_MAX_RETRIES [int | default=5] specifies how many times we can attempt to process a mention before giving up.
    • settings.WEBMENTIONS_DASHBOARD_PUBLIC [bool | default=False] specifies whether the the dashboard/ view can be viewed by anyone. If False (default), the dashboard/ view is only available to users with mentions.view_webmention_dashboard permission.
  • WebmentionHeadMiddleware

    • Removed port from generated endpoint URL in HTTP headers as request.META.SERVER_PORT may not be reliable depending on reverse proxy configuration.
  • MentionableMixin:

    • mentions() is now a method, not a property.
    • Removed field allow_incoming_webmentions as it has never been used for anything.
  • Streamlined template tags

    • {% load webmentions_endpoint %} replaced by {% load webmentions %}.
    • {% webmention_endpoint %} replaced by {% webmentions_endpoint %} (used in HTML <head>).
    • New tag {% webmentions_dashboard %} creates a link to your webmentions/dashboard/ view.