<feed xmlns='http://www.w3.org/2005/Atom'>
<title>webmentions-ssg/webmentions_ssg/forms/__init__.py, branch main</title>
<subtitle>A web service that implements webmentions receiver/sender for static site generators.</subtitle>
<id>https://git.dennisfink.me/webmentions-ssg/atom/webmentions_ssg/forms/__init__.py?h=main</id>
<link rel='self' href='https://git.dennisfink.me/webmentions-ssg/atom/webmentions_ssg/forms/__init__.py?h=main'/>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/'/>
<updated>2026-08-20T21:01:59Z</updated>
<entry>
<title>docs(core): add docstrings and type annotations</title>
<updated>2026-08-20T21:01:59Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-20T21:01:59Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/commit/?id=5bfcc3c06ebe6d6694221c25f07a4901572f97f5'/>
<id>urn:sha1:5bfcc3c06ebe6d6694221c25f07a4901572f97f5</id>
<content type='text'>
Document forms, validators, models, and views with PEP 287-style
docstrings and complete missing type annotations.

Add developer-readable representations for Webmention models and mark
the user password property as write-only in its return type.
</content>
</entry>
<entry>
<title>chore(core): standardize SPDX copyright headers</title>
<updated>2026-08-20T20:22:15Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-20T20:22:15Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/commit/?id=12b8c4b7f1d14556cc459f672b501e901da2d216'/>
<id>urn:sha1:12b8c4b7f1d14556cc459f672b501e901da2d216</id>
<content type='text'>
Add SPDX copyright and license headers to source, test, migration,
template, and static files throughout the project.

Include the maintainer email in copyright notices and fill in the BSD
license copyright holder.
</content>
</entry>
<entry>
<title>feat(core): add received webmention admin actions</title>
<updated>2026-08-10T21:28:03Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-10T21:28:03Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/commit/?id=b3e12b975064f0873bdb4d2834cae75925387d6b'/>
<id>urn:sha1:b3e12b975064f0873bdb4d2834cae75925387d6b</id>
<content type='text'>
Add authenticated delete and reverify actions to the received
webmentions admin view and protect them with CSRF validation.

Enable CSRF protection globally while exempting the public Webmention
endpoint.
</content>
</entry>
<entry>
<title>fix(receiver): prevent requests to non-public addresses</title>
<updated>2026-08-10T17:36:49Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-10T17:36:49Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/commit/?id=8350bef3e3baea6042ed3780a054cc65707e9f8d'/>
<id>urn:sha1:8350bef3e3baea6042ed3780a054cc65707e9f8d</id>
<content type='text'>
Resolve source hostnames before fetching and reject addresses that are
not globally routable to prevent SSRF against local or private services.

Repeat the check for every HTTP request so redirects cannot bypass the
initial source validation. Treat DNS resolution failures during
verification as temporary fetch errors.
</content>
</entry>
<entry>
<title>Implement received Webmention handling</title>
<updated>2026-08-09T12:22:00Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-09T12:15:29Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/webmentions-ssg/commit/?id=67eff0a854da010cb6ecd119d84238ec3e119272'/>
<id>urn:sha1:67eff0a854da010cb6ecd119d84238ec3e119272</id>
<content type='text'>
Add the Flask application setup, database models and migrations,
authentication, and configuration for development and testing.

Implement asynchronous Webmention verification with Huey, including HTML
and plain-text source validation, retries, status tracking, and size
limits.

Add status, login, and paginated received-Webmention views together with
comprehensive tests for forms, views, and receiver tasks.
</content>
</entry>
</feed>
