≤4z3sUI4i .. :changelog: Changelog ========= 0.5.3 (2025-10-28) ------------------ * Fixed webmention author extraction when author is referenced as a URL string * Implemented partial microformats2 authorship algorithm to resolve author URLs to h-cards on the same page * Added recursive search for h-cards and h-entries in nested structures (e.g., h-feeds) * Fixed regression where missing h-cards would result in empty author names * Author URL now used as fallback name when matching h-card cannot be found * Previously displayed the author URL as the name when parsing feed.city-style webmentions * Now correctly extracts author name and photo from matching h-card on the page * Note: Does not yet fetch remote author URLs or follow rel=author links (full authorship algorithm) 0.5.2 (2025-07-27) ------------------ * Fixed JSON copy/paste issue in Django admin for h_card field * Changed admin form to use CharField with custom widget instead of JSONField to prevent double-encoding * Added proper JSON formatting and validation in Profile admin interface * Added tests for admin JSON widget functionality 0.5.1 (2025-07-26) ------------------ * Fixed h-card template to properly handle photo data from mf2py parser * Added automatic property name normalization (converts hyphens to underscores for Django template compatibility) * Added webmention integration to use local Profile data when author is a local user * Added automatic synchronization of Profile fields (name, photo_url, url) with h_card JSON data * Added URL and email validation for h_card data to prevent invalid data storage * Enhanced h_card normalization to properly handle nested objects * Added h_card structure validation in admin interface * Fixed all mypy type checking issues * Updated tests for consistency with implementation 0.5.0 (2025-07-25) ------------------ * Added h-card support with Profile model for user profile data * Added flexible JSON storage for all h-card properties * Added h_card template tag for rendering h-card microformats * Added Profile admin interface with JSON editing support * Added h-card parsing and validation utilities * Added comprehensive test suite for h-card functionality * Updated documentation with h-card usage examples 0.4.3 (2025-07-11) ------------------ * Fixed ``webmention_count`` template tag to always return integers for consistent template comparisons * Previously returned string when used directly but integer when used with ``as`` variable assignment * Added comprehensive tests for the webmention_count fix 0.4.2 (2025-07-10) ------------------ * Added Django admin integration for Webmention, Token, and Auth models * Added comprehensive admin test suite * Webmention admin includes filters, search, and organized fieldsets for easy management * Token and Auth admin are read-only for security purposes 0.4.1 (2025-07-10) ------------------ * Fixed Webmention endpoint to return Location header with HTTP 201 status per W3C specification * Added WebmentionStatusView to provide webmention status information at the Location URL * Fixed compatibility with webmention.rocks test suite 0.4.0 (2025-07-10) ------------------ * **MAJOR**: Added complete Webmention support (W3C Recommendation compliance) * Added Webmention model for storing incoming and outgoing webmentions * Added WebmentionEndpoint view for receiving webmentions * Added WebmentionProcessor for validating and parsing webmentions with microformats2 * Added WebmentionSender for discovering endpoints and sending webmentions * Added pluggable interfaces for URL resolution, spam checking, and comment integration * Added Django template tags for displaying webmentions (``webmentions_for``, ``webmention_count``, ``webmention_endpoint_link``) * Added management command ``send_webmentions`` for sending webmentions from the command line * Added comprehensive test suite for Webmention functionality (35 new tests) * Added detailed Webmention documentation with integration examples * Added CSS styling and templates for different webmention types (likes, reposts, replies, mentions) * Added Django signals for webmention processing (``webmention_received``) * Replaced requests library with httpx for better async support and HTTP/2 features * Updated dependencies to use httpx instead of requests 0.3.5 (2025-06-29) ------------------ * Fixed Authorization header handling to check for HTTP_AUTHORIZATION (Django's standard header format) * Maintained backward compatibility with test client Authorization format * Added tests to verify both Authorization header formats work correctly 0.3.4 (2025-06-29) ------------------ * Fixed Token model unique constraint that prevented multiple clients from obtaining tokens for the same user * Removed incorrect unique=True from Token.me field (kept unique_together constraint) 0.3.3 (2025-06-29) ------------------ * Fixed micropub authorization to accept "create" scope (standard Micropub) in addition to legacy "post" scope * Added debug logging for token authentication failures 0.3.2 (2025-06-29) ------------------ * Fixed KeyError in TokenView when 'me' parameter is missing - the token endpoint now correctly handles optional parameters according to IndieAuth spec * Improved token endpoint error responses to use proper IndieAuth error codes (invalid_request, invalid_grant) * Added redirect_uri verification for enhanced security * Implemented one-time use of authorization codes to prevent replay attacks * Added proper content-type headers to token endpoint responses 0.3.1 (2025-06-28) ------------------ * Added merge migration to resolve parallel migration branches 0.3.0 (2025-06-28) ------------------ * **MAJOR**: Implemented fully functional Micropub endpoint with content creation * Added pluggable content handler system for Micropub integration * Added ``MicropubContentHandler`` abstract base class for custom implementations * Added ``InMemoryMicropubHandler`` for testing and development * Added support for both form-encoded and JSON Micropub requests * Implemented Micropub query endpoints (``?q=config``, ``?q=syndicate-to``) * Added comprehensive test suite for Micropub functionality (19 new tests) * Added detailed Micropub documentation with integration examples * Added example content handlers demonstrating various integration patterns * Updated type hints to use modern Python syntax (``list``, ``dict`` instead of ``List``, ``Dict``) * **BREAKING**: Removed old Micropub property methods that were implementation details * Added comprehensive documentation for IndieAuth implementation including consent screen * Added test suite for IndieAuth consent screen functionality (14 new tests) * Fixed MyPy type errors in AuthView for better type safety * Updated development guidelines with "Definition of Done" criteria 0.2.0 (2025-06-16) ------------------ * Fixed Read the Docs build by adding missing dependencies to docs/requirements.txt * Added coverage configuration to exclude migrations from coverage reports * Cleaned up duplicate documentation files (removed outdated .txt versions) * Added type annotations to models.py and views.py * Added mypy configuration with django-stubs for static type checking * Added documentation for running mypy in development.rst * Added comprehensive API reference documentation with examples * Added usage tutorial with client-side implementation examples * Added configuration guide documenting all settings and options * Added concepts documentation explaining IndieWeb protocols with Mermaid diagrams * Updated CONTRIBUTING.rst to reflect current development workflow (uv, ruff, pytest) * Added warnings about Micropub endpoint stub implementation * Converted all tests from unittest to pytest style * Added __str__ method to Token model * Added docstrings to all model and view classes * **BREAKING**: Removed unnecessary dependencies: - Replaced django-model-utils TimeStampedModel with explicit timestamp fields - Replaced django-braces AccessMixin with direct login redirect - Removed setuptools (not needed at runtime with modern packaging) - Replaced pytz with Python's built-in datetime.timezone.utc * Package now only depends on Django itself 0.1.0 (2025-06-13) ------------------ * Migrated from flit to uv build backend * Moved package from top-level to src layout * Replaced black, isort, and flake8 with ruff * Added Python 3.13 support * Dropped Python 3.9 support (minimum is now 3.10) * Updated pre-commit hooks * Consolidated dev dependencies into single group * Added comprehensive documentation with Sphinx and Furo theme * Updated documentation structure for Read the Docs * Fixed Django settings configuration for tests 0.0.8 (unreleased) ------------------ * Development version (not released) 0.0.7 (2023-01-07) ------------------ * Added migration for auto field * Updated pre-commit hooks 0.0.6 (2022-11-05) ------------------ * Use flit and pyproject.toml instead of setup.py * Support recent Django versions * Even better package infrastructure 0.0.5 (2019-05-19) ------------------ * Auth endpoint works with https://pin13.net/login/ \o/ * Use black for code formatting * Better package infrastructure * Require python >= 3.6 0.0.4 (2016-06-14) ------------------ * exempt csrf checking 0.0.3 (2016-06-13) ------------------ * added migrations 0.0.2 (2016-05-15) ------------------ * Auth and Token endpoints with some tests. 0.0.1 (2016-05-14) ------------------ * First release on PyPI.