<?xml version="1.0" encoding="utf-8"?>



<feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:fh="http://purl.org/syndication/history/1.0"
    xmlns:at="http://purl.org/atompub/tombstones/1.0">

    <title>Publ: Development Blog</title>
    <subtitle>A personal publishing system for the modern web</subtitle>
    <link href="http://publ.beesbuzz.biz/blog/feed?tag=authl" rel="self" />
    <link href="http://publ.beesbuzz.biz/blog/feed" rel="current" />
    <link href="https://busybee.superfeedr.com" rel="hub" />
    
    <link href="http://publ.beesbuzz.biz/blog/feed?date=2020-05" rel="prev-archive" />
    
    
    <link href="http://publ.beesbuzz.biz/blog/" />
    <fh:archive />
    <id>tag:publ.beesbuzz.biz,2020-01-07:blog</id>
    <updated>2025-01-23T22:08:14-08:00</updated>

    
    <entry>
        <title>Authl v0.7.3</title>
        <link href="http://publ.beesbuzz.biz/blog/771-Authl-v0.7.3" rel="alternate" type="text/html" />
        <published>2025-01-23T22:08:14-08:00</published>
        <updated>2025-01-23T22:08:14-08:00</updated>
        <id>urn:uuid:18f52cec-c1cd-5d0a-af0b-6ee512ac4a1c</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>I&rsquo;ve updated Authl to make it support the new-ish <code>profile</code> scope in Mastodon 4.3, which provides better login-flow UX.</p><p>If <code>profile</code> is unsupported it tries to fall back to the old <code>read:accounts</code> scope, which should keep it working on older Mastodon versions as well.</p><p>In theory it should also work with Pleroma/Akkoma (and anything else that speaks the Mastodon client API), although that functionality hasn&rsquo;t been verified in quite some time. If someone else wants to take on the work of verifying that and fixing whatever&rsquo;s broken, that would be greatly appreciated!</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ v0.7.15, Authl v0.6.1</title>
        <link href="http://publ.beesbuzz.biz/blog/748-Publ-v0.7.15-Authl-v0.6.1" rel="alternate" type="text/html" />
        <published>2022-11-24T01:18:08-08:00</published>
        <updated>2022-11-24T01:18:08-08:00</updated>
        <id>urn:uuid:2c1cd8f6-ec03-5725-9b41-2f5cd11a7f24</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>I haven&rsquo;t been working on this stuff in a while, but there were reasons to make some updates and releases for both Publ and Authl.</p><p>Publ changes:</p>
<ul>
<li>Updated dependencies and fixed code standards to the latest pylint and mypy</li>
<li>Fixed a bug where if an image file disappears before the async rendition is generated, it was generating a 503 error instead of a 404</li>
</ul>
<p>Authl changes:</p>
<ul>
<li>Updated packages and fixed code standards to the latest pylint and mypy</li>
<li>Removed a couple of Fediverse method hacks which are no longer necessary due to <a href="https://github.com/PlaidWeb/Authl/issues/104">updates in <code>mastodon.py</code></a></li>
</ul>
<p>Some of the dependency changes necessitated updating the minimum Python version; in particular, Publ and Authl now require Python 3.7.2 or greater. But if you&rsquo;re still running Python 3.6 for some reason you&rsquo;re used to things being broken or outdated.</p><p>Also, due to an <a href="https://github.com/PlaidWeb/Publ/issues/500">impending change in Flask</a>, the Publ API is going to have to change somewhat; the short version is that <code>app.secret_key</code> will no longer be the means of configuring authentication. Most likely the config will change to get a <code>secret_key</code> key within the <code>auth</code> section instead. This actually makes the configuration a lot easier to deal with anyway, and I was never happy about this inconsistency. (In fact, I&rsquo;m pretty sure that&rsquo;s how it used to be configured until I changed it to be more Flask-like in the first place!)</p><p>It&rsquo;s also possible that <code>publ.Publ</code> will revert to being a function that constructs a <code>Flask</code> application object, rather than being a subclass of <code>Flask</code>, but I haven&rsquo;t yet investigated what the implications of this change would be. I believe there are a few places in the Publ codebase which rely directly on the subclass relationship (which would be difficult to change, such as the way that the Authl instance is associated with the application), and prior to that there&rsquo;s a reason I switched it from a factory to a subclass in the first place, although I can&rsquo;t quite remember what it was (it was probably either something to do with the ORM&rsquo;s startup behavior or something to do with Authl&rsquo;s lifetime). Either way, it&rsquo;ll take significant investigation, and this will be necessary before Flask 2.3 is released. (In retrospect I meant to pin Publ&rsquo;s Flask requirement to <code>&lt;2.3.0</code> before I did this release, but I forgot. Oops.)</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ v0.7.4, Authl v0.6.0</title>
        <link href="http://publ.beesbuzz.biz/blog/897-Publ-v0.7.4-Authl-v0.6.0" rel="alternate" type="text/html" />
        <published>2021-10-14T22:02:27-07:00</published>
        <updated>2021-10-14T22:02:27-07:00</updated>
        <id>urn:uuid:2ea409e7-3cbd-5671-a25d-6905b4ab7f41</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Released new versions of Publ and Authl today.</p><p>First, the Authl changes:</p>
<ul>
<li>Fixed some test coverage</li>
<li>Changed Twitter user URLs to be stable (but less readable)</li>
<li>Added <code>profile_url</code> field to user profiles to make up for the Twitter URL thing</li>
</ul>
<p>And the Publ changes:</p>
<ul>
<li>Fixed image cache stale directory removal</li>
<li>Fix ETag output</li>
<li>Full-text search now properly excludes future articles</li>
<li>Added a <a href="http://publ.beesbuzz.biz/manual/238-Command-Line-Interface#normalize">filename normalization tool</a></li>
<li>Fixed an Internal Server Error that occurred from a malformed or expired bearer token (AutoAuth et al)</li>
<li>Updated to Authl 0.6.0 and made use of the new <code>profile_url</code> field</li>
</ul>


<p>The Authl change affects the way that Twitter identities show up in the user system; now instead of the user URL being e.g. <code>https://twitter.com/fluffy#993171</code>, the URL will now be <code>https://twitter.com/i/user/993171</code>. This makes the <code>users.cfg</code> file a little more opaque, but it also fixes the issue that if someone changes their Twitter username their connection is lost forever.</p><p>In the short term, you can use a comment to keep track of things, e.g.</p><figure class="blockcode"><pre><span class="line"><span class="line-content">[friends]</span></span>
<span class="line"><span class="line-content">; fluffy</span></span>
<span class="line"><span class="line-content">https://twitter.com/i/user/993171</span></span>
</pre></figure><p>although this isn&rsquo;t ideal. In the future I may add the ability to add a post-line comment to make tracking things a bit easier, but I need to find a character that both says &ldquo;this is a comment&rdquo; and also can&rsquo;t actually appear in a URL (so <code>;</code> and <code>#</code> are out). I suppose I could just treat whitespace as a comment start, though. I&rsquo;ll consider that for the next version of Publ.</p><p>Also, you&rsquo;ll need to mechanically convert your <code>users.cfg</code> file, with e.g.</p><figure class="blockcode"><pre class="highlight" data-language="sh" data-line-numbers><span class="line" id="e897cb2L1"><a class="line-number" href="http://publ.beesbuzz.biz/blog/897-Publ-v0.7.4-Authl-v0.6.0#e897cb2L1"></a><span class="line-content">$<span class="w"> </span>sed<span class="w"> </span><span class="s1">&#39;s,twitter.com/.*#\([0-9]*\),twitter.com/i/user/\1,g&#39;</span><span class="w"> </span>users.cfg<span class="w"> </span>&gt;<span class="w"> </span>users.cfg.new</span></span>
<span class="line" id="e897cb2L2"><a class="line-number" href="http://publ.beesbuzz.biz/blog/897-Publ-v0.7.4-Authl-v0.6.0#e897cb2L2"></a><span class="line-content">$<span class="w"> </span>mv<span class="w"> </span>users.cfg.new<span class="w"> </span>users.cfg</span></span>
</pre></figure><p>(or you can use <code>-i</code> but that varies in usage between macOS and Linux so I&rsquo;ve opted to be safe instead).</p><p>This change is a bit annoying for Publ, but it was necessary for other use cases of Authl, such as providing login to applications.</p><p>Also, keep in mind that users who were logged in via Twitter will still have their old identity URL present, which will likely cause confusion. The easy fix for that is to reset your session secret. How you do that is up to how your application is configured.</p><p>Anyway, as always, when you want to add a user to the <code>users.cfg</code> file, you need to copy the link target, rather than the link text.</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl v0.5.2</title>
        <link href="http://publ.beesbuzz.biz/blog/80-Authl-v0.5.2" rel="alternate" type="text/html" />
        <published>2021-08-30T22:51:05-07:00</published>
        <updated>2021-08-30T22:51:05-07:00</updated>
        <id>urn:uuid:22923a1a-a608-50b4-a215-10e7bd9d1296</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Authl v0.5.2 is now out.</p><p>Changes:</p>
<ul>
<li>Fixed some caching-related issues on IndieAuth profiles</li>
<li>The IndieAuth handler now supports PKCE</li>
<li>IndieAuth takes detection priority over Fediverse</li>
<li>Authl is now compatible with Flask 2.0</li>
</ul>


]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl v0.5.1 released</title>
        <link href="http://publ.beesbuzz.biz/blog/543-Authl-v0.5.1-released" rel="alternate" type="text/html" />
        <published>2021-08-29T01:24:57-07:00</published>
        <updated>2021-08-29T01:24:57-07:00</updated>
        <id>urn:uuid:da59fa9a-01cd-5dab-b053-2bd5c46c3d6b</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>I&rsquo;ve just released v0.5.1 of <a href="https://authl.readthedocs.io/">Authl</a>. The only functional change is adding support for actually parsing IndieAuth server response profiles (rather than just requesting one and only using the <code>h-card</code>), now that there&rsquo;s <a href="https://blog.reiterate.app/software/2021/08/10/authorio-0-8-3-released/">implementations in the wild</a>, meaning that egg has hatched into a chicken.</p><p>There were also some minor documentation cleanups since v0.5.0.</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ v0.7.2, Authl v0.5.0</title>
        <link href="http://publ.beesbuzz.biz/blog/848-Publ-v0.7.2-Authl-v0.5.0" rel="alternate" type="text/html" />
        <published>2021-07-08T20:56:02-07:00</published>
        <updated>2021-07-08T20:56:02-07:00</updated>
        <id>urn:uuid:f65b4f50-56a2-5494-8ed9-a3f6e0d15558</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Big new releases for Publ and Authl!</p><p>Publ changes:</p>
<ul>
<li>Added support for <a href="https://indieweb.org/IndieAuth_Ticket_Auth">IndieAuth Ticket Auth</a>, allowing aware readers to automatically log in on your behalf and get private entries</li>
<li>Added support for <a href="http://publ.beesbuzz.biz/manual/335-Image-renditions#image_loading">HTML 5 lazy image loading</a>; all images are now lazy-loaded by default</li>
</ul>
<p>Authl changes:</p>
<ul>
<li>Improve the meta robots rules on the login form</li>
<li>Add IndieWeb endpoint discovery to the profile</li>
</ul>


<p>Ticket Auth is a pretty cool protocol which I have a lot of optimism for. You know how one of the big problems with self-hosted blogging is that there&rsquo;s no way to share private posts on your feed without revealing that you have private posts and requiring people to log in to actually read them? Ticket Auth is a <em>huge</em> solution for that.</p><p>There&rsquo;s a few things that need to happen before it actually gets used, though. The main thing is that feed readers need to get support for Ticket Auth, and there also needs to be a way to associate your user profile with the Ticket Auth endpoint. In an IndieWeb context this is pretty straightforward; on your profile page you&rsquo;d have something like:</p><figure class="blockcode"><pre><span class="line"><span class="line-content">&lt;link rel=&quot;ticket_endpoint&quot; href=&quot;https://feed-reader.example/tickets&quot;&gt;</span></span>
</pre></figure><p>and when you sign in, Publ sees that you have that ticket endpoint and initiates the flow to it. Then the feed reader has a bearer token that it can use to fetch the secure feed on your behalf.</p><p>However, outside of IndieAuth it gets a little trickier. There&rsquo;s <em>technically</em> no requirement that someone uses the IndieAuth login flow to get a ticket, but the protocol relies pretty heavily on there being a tight coupling between the identity provider and the feed reader. The most <em>straightforward</em> way to support this in non-IndieWeb feed readers is to simply have feed readers grow IndieAuth support, though, and then use that to sign in to the IndieWeb sites you&rsquo;re following.</p><p>There&rsquo;s probably some other mechanism that could be used to provide matching third-party identity between a feed reader and, say, a Twitter identity, but that&rsquo;s getting so far off into the weeds.</p><p>My recommendation to anyone implementing a new feed reader in this day and age: integrate with existing IndieAuth login flows, and/or allow folks to identify themselves with a public IndieWeb profile when they log in with a username and password. Then you can provide them a public profile page that also has the Ticket Auth endpoint, and then we can finally break free of walled-garden social media.</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl v0.4.6 released</title>
        <link href="http://publ.beesbuzz.biz/blog/692-Authl-v0.4.6-released" rel="alternate" type="text/html" />
        <published>2020-12-04T00:09:15-08:00</published>
        <updated>2020-12-04T00:09:15-08:00</updated>
        <id>urn:uuid:5327c427-22bb-530b-aa53-37c29cfb15b4</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Wow, it&rsquo;s been a while since I&rsquo;ve worked on this stuff, huh?</p><p>Anyway, IndieAuth validation rules <a href="https://aaronparecki.com/2020/12/03/1/indieauth-2020">have changed for the better</a>, so Authl has been updated accordingly.</p><p>There&rsquo;s a few other changes as well:</p>
<ul>
<li>On IndieAuth profiles, <code>p-pronoun</code> is treated as a fallback for <code>p-pronouns</code></li>
<li>The Flask templates add some <code>rel=&quot;nofollow&quot;</code> in some appropriate places</li>
</ul>


]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ 0.6.8, Authl 0.4.3</title>
        <link href="http://publ.beesbuzz.biz/blog/317-Publ-0.6.8-Authl-0.4.3" rel="alternate" type="text/html" />
        <published>2020-08-02T02:37:43-07:00</published>
        <updated>2020-08-02T02:37:43-07:00</updated>
        <id>urn:uuid:c21a4c34-babe-5c35-9b98-aa8db67fc8e4</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Some pretty big new features added. First, in Authl:</p>
<ul>
<li>Major <a href="https://authl.readthedocs.io">documentation</a> improvements</li>
<li>Bug fixes with Fediverse instance caching</li>
<li>All providers now normalize to the same profile format</li>
<li>Some basic spam prevention for the email provider</li>
<li>100% unit test coverage on the Fediverse provider (which is now using <a href="https://github.com/halcy/Mastodon.py">mastodon.py</a> instead of a hand-rolled OAuth client)</li>
</ul>
<p>And in Publ:</p>
<ul>
<li>Fenced code now uses <code>&lt;figure&gt;</code> and <code>&lt;figcaption&gt;</code> instead of ad-hoc <code>&lt;div&gt;</code>s for its layout, and the overall HTML semantic has been greatly improved</li>
<li>Individual code blocks are now configurable with respect to highlighting and line numbering</li>
<li>The <a href="http://publ.beesbuzz.biz/api/user">user object</a> now provides a user profile and separates the identity URL from the familiar name</li>
</ul>


<p>Currently I am getting quite frustrated with the state of this documentation site. I am working towards making Publ itself more amenable to documentation via pydoc/readthedocs, and transitioning this site only to be for demos and usage examples. I&rsquo;m not sure how to make the templating guide and markdown extensions fit in with RTD, though.</p><p>I&rsquo;ve <a href="https://github.com/PlaidWeb/Publ/issues/58">long wanted</a> to do some sort of automated documentation generation, though, and as the various mechanisms in Publ get more complicated this starts to feel way more important. This is definitely something I could use some help on, for anyone who&rsquo;s interested.</p><p>It&rsquo;s also becoming more and more apparent that there needs to be some sort of online post editor, and I really ought to get around to building the simple one I&rsquo;ve had in mind for a while. This is long-overdue.</p><p>Anyway. This update is a lot of fun. See <a href="https://beesbuzz.biz/11695">some of the stuff you can do with it</a>!</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl v0.4.2: poetry in motion</title>
        <link href="http://publ.beesbuzz.biz/blog/424-Authl-v0.4.2-poetry-in-motion" rel="alternate" type="text/html" />
        <published>2020-07-21T21:09:45-07:00</published>
        <updated>2020-07-21T21:09:45-07:00</updated>
        <id>urn:uuid:ca9aaafb-9da4-5e92-a6d0-11fd6dc3be14</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Authl v0.4.2 is out. Mostly infrastructural changes, but a few other changes too:</p>
<ul>
<li>Switched the development environment to <a href="https://python-poetry.org/">poetry</a></li>
<li>Made some internal naming changes, and renamed the technically-incorrect <code>force_ssl</code> to the more-accurate <code>force_https</code></li>
<li>It is also now up to handlers to do all of their own exception catching, which cleans up some stuff</li>
<li>Massively overhauled the docs, and got doc site generation working with <a href="https://sphinx-doc.org">Sphinx</a> (many thanks to <a href="https://scalie.business/@chr/">Khr</a> for help!)</li>
</ul>
<p>In theory there will now be docs visible at <a href="https://authl.readthedocs.io/">authl.readthedocs.io</a>, although I&rsquo;m still having trouble getting some of it to actually appear.</p><p>But, speaking of appearing, somehow the hostname for this site stopped resolving, so hopefully by the time this site comes back, the readthedocs stuff will be working too!</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl 0.4.1</title>
        <link href="http://publ.beesbuzz.biz/blog/662-Authl-0.4.1" rel="alternate" type="text/html" />
        <published>2020-07-05T18:59:44-07:00</published>
        <updated>2020-07-05T18:59:44-07:00</updated>
        <id>urn:uuid:55c833a6-b221-5068-9426-aaa35fa99dbc</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Authl 0.4.1 is out. Changes below:</p>
<ul>
<li>Better unit test coverage</li>
<li>Some better error messaging in some places</li>
<li>Removed the IndieLogin handler, which serves no real purpose when there&rsquo;s native IndieAuth support anyway</li>
</ul>


]]>
        </content>
    </entry>
    

    
</feed>