1. also websub now works properly! i bumped the version to 1.8.1

    the problem was that superfeedr, despite claiming to support the field name hub.url[] for passing multiple urls in one ping? doesn’t actually do that? so now i’m just using hub.url and making several requests to it at once

    needing multiple requests isn’t a big deal, since websub pings are handled by the job queue 🐱

    lemoncurry superfeedr websub facebook.com octodon.social
  2. by the way: the reason i didn’t syndicate that previous entry to twitter? my twitter account has been locked

    because i said to kill nazis

    what a good website that definitely isn’t run by nazis

    so glad i'm moving away from using that hellsite twitter facebook.com octodon.social
  3. two cool things in lemoncurry 1.8

    i decided to bump the minor version because there are two fairly big improvements in lemoncurry 1.8!

    first up, lemoncurry does pagination!! 📄

    • every entry feed page now automatically paginates, ten entries to a page, which is good because i’ve now written thirteen entries here. which actually is.......... not a lot, i guess? but it’d have gotten real slow eventually if it kept on having to load every single entry all the time 😉
    • all the paginated feeds use rel="next" and rel="prev" appropriately, so it’s still very easy for programs to navigate. this is very good for indieweb feed readers, like woodwind, as well as for sufficiently advanced screen readers?

    the other exciting thing is improved micropub support! there are two major improvements that make lemoncurry more compliant with the micropub spec and therefore more compatible with a variety of micropub clients

    • my previous implementation only supported formencoded requests, which is the default format that all micropub servers are required to handle. however, micropub also defines a json request format, which happens to be more powerful in various ways, so now i support that too!
    • to authorise any micropub request, you have to provide a token - i supported one way of doing this, which is setting the Authorization http header, but the spec also allows the token to be passed as a query or form parameter, so now i support that too ✨

    yay!!

    but what’s next? well, the infrastructure changes i made while implementing those two improvements will make it way easier to implement the other aspects of micropub i haven’t yet, too:

    • you’re supposed to verify the oauth scopes attached to the client’s micropub token? that’s stuff like “yes, this particular token has been granted permission to create new entries”. you’ve probably seen the little prompts while oauthing with sites before, when you give your third-party twitter clients permission to post tweets and stuff like that. my previous token auth code made scope verification pretty annoying to do, but it should be as simple as a cute little check like this now?

      if 'create' not in token:
        return deny("you can't create new entries!!")
      
    • the micropub spec allows you to update existing entries as well as make new ones! however, it only allows updates to be provided in the json request format, not the formencoded request format. so of course that wasn’t possible when i only supported formencoded requests, but it should be easy enough to do now 🐱 yay!

    • the auth logic was pretty much hardcoded into the POST /micropub view handler before, which is bad because you actually need to use it in a few other places too - i had duplicate auth logic in GET /auth/token, since its whole job is verifying that the token is valid and will be accepted by POST /micropub? there’s also additional endpoints, like GET /micropub, that i haven’t implemented yet but that will need to reuse the same logic too

    pretty rad?? 🐎

    indieweb lemoncurry rambling facebook.com octodon.social
  4. 1.7.3 makes a teeeeeeeny change, but a very important one: my little profile links at the bottom of my h-card are now fully accessible for screen readers!

    previously a screen reader could see my username, but it couldn’t tell what site the username was for. now the entire username@domain account specifier will be available to screen readers, as well as sighted users by hovering over the link. technically a smart screen reader could parse the actual h-card markup and find out the urls that way? but that’s not very user-friendly and this is much nicer c:

    i also stopped displaying the username for sighted users, since it was getting super cluttered and i like hovering (or just clicking on it and going to the profile!) to see that better. plus it’s almost always just a variation on “00dani” so it’s not that important that you see it 😉

    oh also font awesome 5.0.1 is out so i bumped the version, that happened too lol

    hooray! lemoncurry facebook.com octodon.social twitter.com
  5. just one teeny-tiny change in lemoncurry 1.7.2!

    specifically, i noticed that the free version of font awesome 5 just came out, so i migrated lemoncurry across from fa 4 to fa 5! you’ll notice most of the icons look a little different, and some of the brand icons (like bitbucket!) are way different because the actual brands changed their icons! amazing

    i actually have a fa 5 pro license but it’s currently pretty complicated to use fa pro with an open-source project like this one :/ apparently there’s a special pro cdn on the roadmap? so i might switch lemoncurry to that once it’s available. for now the free icons are very nice tho!

    font awesome lemoncurry facebook.com octodon.social twitter.com
  6. i got a little burnt out on lemoncurry after releasing 1.7 :( back now though!

    1.7.1 does not add replies/likes/reposts, because i’m still figuring out the best way to integrate those into the design i have so far. my existing ui is very simple, and it doesn’t quite express “this is someone else’s post, which i’ve replied to/liked/reposted” as well as i’d like it to? instead, 1.7.1 contains just a bunch of little bugfixes and style tweaks - not much, but it’s been two weeks and i wanted to release something again!!

    gonna take a nap now because i’m a very sleepy girl :o nyawn~

    lemoncurry miaow facebook.com octodon.social twitter.com
  7. lemoncurry 1.7 - introducing cats!

    that’s right, the big new thing here is support for cats - or “categories”, as the microformats2 spec calls them because it isn’t nearly as much a furry as i am? ridiculous

    and yeah, they’re basically like categories or tags. each entry can have zero or more cats assigned, so i can organise them better! this one has several to show off how they look and work :3

    i’ve also started on getting replies, likes, and reposts to work, but i’m not happy with those just yet so i haven’t released them in 1.7 :o but they’ll be here Soon!

    lemoncurry *licks paws* miaow the real cat here is me octodon.social twitter.com
  8. i set up a django-rq task queue, right now it’s used for websub pinging when i post a new entry? idk if it even works yet tho. guess i’ll find out in a moment, when it either works or doesn’t???

    octodon.social twitter.com
  9. lemoncurry 1.6 has micropub support! whoa!!

    basically micropub is a standardised way to publish content on your site, which external apps can understand and communicate with? my implementation is super rudimentary so far, but, i’m actually writing this post on https://quill.p3k.io and not in the django admin, which should give you an idea of what it can do :3

    it looks like most micropub clients use html for post content rather than markdown, so i might need to change things around so i use html for post content rather than markdown too?? we’ll see. i also need to make my micropub implementation like. way more robust. right now it only knows about h-entry and it only knows about the name and content properties of an h-entry, which is pretty sucky???

    anyway yeah! i’m excited

    facebook.com octodon.social twitter.com