• I fixed my webmention receive implementation - I forgot to include the <link> tag in the head of my base template. With this fix in place comments on my Tanzawa micro.blog posts should be start to be sent here as well.

    I also started on the other half of the webmentions: sending. Thus far I'm just trying to keep it simple and am using webmention-tools. I may switch over toΒ  ronkyuu as it seems better maintained, but it's good enough for now.

    I successfully sent my first webmention from my local environment to my blog. Yay! I think I still need another day or so before I can call it ready for the web.

    Incoming webmention sent from Tanzawa to my blog


  • Mostly bug fixes today. Colin let me know about a bug how Tanzawa was interpreting webmentions from his blog. The basic issues was that Colin keeps all posts for the day on a single page and uses an anchor tag to link to the different posts e.g. blog.php?date=2021-01-28#p4 . So a single webmention request will include all posts for that day.

    The mf2py-utils library I'm using to classify the microformated data as a comment works under the assumption that each post will have its own webmention. So when he linked to Tanzawa as post number two, Tanzawa showed the comment for post number one. It was an easy fix to make sure that the comment interpreting function filters by the target url as well.

    The other minor change is I've added the interaction count to the status list page as well. I haven't styled it yet, but I imagine it will become a brown circle. This makes it easier for me to see which posts have comments/likes and so forth.
  • Slept on the bug and yes appears that django-webmention is not decoding the response body before saving it to the database. I opened issue #23 to fix the issue.
  • I'm on a roll with webmentions today. While I initially planned to hold off on displaying them publicly until a while later, since I figured out a good design, I decided to ship them in detail pages as well. They're hidden by default with a badge indicating the number of interactions.Β  All mentions must be πŸ‘ed before they appear. Pages without interactions do not show anything.

    Webmentions show inline with their content.


    One thing I'm not entirely happy about is that by using the object tag to allow me to detect broken images is I lose the ability to lazy load them. i.e. img supports loading="lazy" and object does not. A waste of bandwidth and resources.

    It's not a huge issue as icons are small. Once I start integrating turbo I plan to to lazy load the webmentions as a whole, so no content is event sent until requested.

    I've also found a bug (or what I consider a bug) somewhere in the webmention stack (either in mf2py or in the webmention test tool, I think). The basic issue is emoji and other unicode characters come across as escaped unicode like \xf0\x9f\x98\xa2, Cleaning it the response body with the excellent ftfy (fixes text for you) takes care of the issue for now, but it feels like that should be unnecessary.Β 
  • Figured it out. My handler wasn't running because I forgot to set the default app config in my __init__.py. One hotfix later and now we're cookin' with gas.

    Webmentions working in prod!
  • Shipped the new webmention display in Tanzawa πŸŽ‰. There is one bug. When django-webmention registers a model, I have a signal listening to register my own TWebmention record to store parsed data, moderation data and so forth.

    Testing locally it worked fine, but my test webmention didn't seem to register it. Here's what it's looking like in prod:
    Real life webmentions in Tanzawa!
  • Refactored the design of the webmentions this morning. I added the number of un-reviewed webmentions at the top and put them in a details/summary tag. The author name links to their homepage. Below that is a link to the webmention source displaying only the domain.

    Reviews are handled via a big thumbs up or thumbs down on the far right. This bit isn't hooked up yet, but it will be soon enough. I also added a button to quickly take you to the new status page.

    Webmentions refactored


    Next I need to add an api / view to handling the approval / disapproval click. And a menu item on the left to view all webmentions would be handy as well.
  • I started working on webmention displays for the dashboard in Tanzawa. Preview πŸ‘‡:

    The base webmention layout


    Content is plain text and limited to 140 characters (after which it will truncate nicely). There's a link to review it on the left and the source of the webmention is also linked. The webmention kind is displayed on the bottom right if it can be determined.

    Using the html5 <object> tag I can handle broken images or no author photo quite easily.Β 

    A broken author photo example


    Come to think of it...these could be used as the base for displaying the interactions in a post as well...
  • Thank you to Colin for replying and sending Tanzawa its first non-test webmention.Β 

    Today I fixed some layout bugs and started working on a home / dashboard screen for the publishing side of Tanzawa. For starters it's going to display just the last 5 posts / webmentions and a button to write a new status.

    Currently each wbmention shows it's review status (πŸ‘ or πŸ‘‰), source url, and a link to the django admin to review (or delete) it.Β  Instead of the source url (as that's not super helpful) I plan to show who it's from, the kind of webmention, and a link to view it. Eventually I'd like to normalize this data into the database, so I don't need to parse html on each page load, but I'm still working on the table schema in my head.

    Once I get the dashboard "working", I think it's time to expand to other post types. Articles would be easiest - as it's just a status with a title. It will also force me to normalize sidemenus and post listing logic. After that I'd like to support checkins via a micropub endpoint so I can get my swarm checkins from OwnYourSwarm.
  • I've got webmentions working with the great django-webmention library. I'm parsing mention's microformats using mf2py and mf2util. It's not too difficult.Β  You can send a webmention and I'll receive it. They just won't show on the page. And that's because I'm not sure how I want them to display.

    For example a "like" doesn't necessarily have an author name, just a url. Or even no author at all. How do I display these? Do I just not display them?Β  What's the appropriate microformat html for this type?Β  Rich content or plain content? What if the plain content is in markdown? And repeat for each different kind.

    I wanted to add support for receiving webmentions, as that way I can see if someone's linking to the tanzawa development blog, but I'll I think I'll hold off on display until I've had a chance to think through the implementations more.
Previous 50 of 59 Next