#dev 2026-02-01

2026-02-01 UTC
TwinAdam and ax562 joined the channel
#
GWG
aaronpk: Re visibility, past aaronpk thought about this and added a configuration element. https://github.com/indieweb/micropub-extensions/issues/8#issuecomment-536301952
#
Loqi
[preview] [aaronpk] I implemented initial support in Quill for this. Quill now looks for the following object in the `q=config` response: ```json "visibility": ["public","unlisted","private"] ``` The reasoning for this is I want clients to be aware of the mean...
#
GWG
I've added some new issues in https://github.com/indieweb/Micropub/issues - #15, 16, and 17, for async discussion.
rgbivvv joined the channel
#
[tantek]
watching the start of the video, pretty cool its embedded right there on the Meetable event!
elliot1, rgbivvv- and oodani joined the channel
#
[tantek]
GWG++ great job laying out the various questions
#
Loqi
GWG has 4 karma in this channel over the last year (43 in all channels)
#
[tantek]
hmm, curious why PTD is necessary for expanding the UIs of Micropub clients. like I think that's a mistake. it would be better to tie UI to properties directly as necessary
#
[tantek]
PTD was only designed for conversion to AS2 etc. It shouldn't be part of a pure Micropub solution IMO
grufwub joined the channel
#
GWG
[tantek]: The ideas about how we can iterate on specs apply to the other specs in the community. Wondering about finding a way to get the same 'shepherd' idea where instead of someone trying to push us talking about anything(like the Roundup), someone tries to guide a single topic.
#
[tantek]
Micropub Working Group!
CRISPR joined the channel
#
[tantek]
Chairs do not normally make decisions, chairs facilitate decision-making.
#
[tantek]
like chairs try to solicit proposals and grow consensus towards a proposal and then identifies/declares consensus among the folks in the meeting
#
[tantek]
The shepherd idea (for organizing pop-ups / meetings) is an interesting idea
#
[tantek]
we used to do these sorts of meetings as sessions at IndieWeb Summits
Joherul, rolandas, GuestZero, barnaby, Guest6, rgbivvv and blacklight joined the channel
#
tgagor
artlung[d] I glued bookmarks page together: https://gagor.pro/bookmarks/
#
tgagor
Mails flow works, I still have to verify if webmentions would work properly but it's shaping 🙂
GuestZero_, CRISPR, ax562, mootilda, rosipov1 and [Sophia_wood] joined the channel
#
Loqi
tgagor has 1 karma over the last year
#
artlung
tgagor[d] an excellent start I look forward to seeing more development! tgagor++
KE0VVT, blacklight, ax562, proofreed, CRISPR, [tw2113], jeremycherfas, lovetheindieweb, epicCoolDog, oodani, sebbu, CrimeWave, [morgan] and gRegor joined the channel
#
gRegor
aaronpk, any ideas why XRay returns unknown type for this page? It does have h-card and h-cite at the same level in the parsed result, but the h-entry itself looks good. https://islandinthenet.com/the-indie-web-is-not-defined-by-its-enemies/ https://xray.p3k.io/parse?url=https%3A%2F%2Fislandinthenet.com%2Findieweb-2030%2F&pretty=true
#
aaronpk
hmm, the u-url in the h-entry should make it work even though there's multiple top-level items
btrem joined the channel
#
gRegor
yeah. huh, pasting in the HTML on XRay works
#
gRegor
Caching maybe
#
btrem
[lazcorp]++ for tip on popover attribute a few days ago. I'm trying to use it now. Can't eliminate my .js completely, but I can simplify it quite a bit.
#
Loqi
[lazcorp] has 3 karma in this channel over the last year (11 in all channels)
#
gRegor
It parses as a feed, but makes sense with h-entry and h-cites both top-level
[lazcorp] joined the channel
#
[lazcorp]
@btrem - glad it's working for you!
#
aaronpk
oh, pasting in the HTML and the URL parses it correctly
#
aaronpk
which likely means xray is getting not HTML when fetching it
#
gRegor
!tell khurtwilliams I think there might be a caching issue on https://islandinthenet.com/indieweb-2030/. Also I think the comments on your post should be in `u-comment h-cite` so they show up as children of the entry. You can try pasting in variations of the HTML on https://xray.p3k.io/ to see how it parses. IndieNews is using XRay under the hood
#
Loqi
Ok, I'll tell them that when I see them next
#
btrem
[lazcorp]: It's not yet. I'm struggling to catch errors. Can anyone suggest a page to explain the difference between try...catch and then.catch? But explain it to someone who is not a full time programmer? :)
#
gRegor
makes sense, thanks for checking
#
btrem
The MDN page on promises has be baffled. And SO questions/answers -- at least, the ones I've read so far -- have not helped. :(
#
[morgan]
Im interested to help a little. Im an occasional MDN contributor so I might even try and improve the docs. Around for like 40 mins
#
gRegor
It can be confusing, even as a programmer, haha
#
btrem
Well, the problem is unlikely the docs, and far more likely me. ;-)
#
gRegor
I think of Promises as "you need to run some async task (like fetch a web page) and wait until that task is done to then() do something else"
#
[morgan]
Optimistically Id say that if someone encounters an issue then there is always room for making the docs a little better. But anyways- can you share a link to something like a code environment to show whats not working for you?
#
gRegor
If that async task fails for some reason, then you catch() and handle the error
#
btrem
Not sure if this is the best way, but here's a simplified extract...
#
valerieflynn
To answer @Mootildain #indieweb Regarding:
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
"Is this the best channel to ask for recommendations for the world's simplest content management templates, if such exist?"
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
You might get more responses in this channel. #indieweb-dev deals with more technical stuff.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
Wasn't sure if you meant content management system or purposely typed templates.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
Either way it probably depends on how technical you are comfortable getting.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
I'm at the WordPress/ Genesis framework level.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
But if you're into coding others would have more expertise than me.
#
valerieflynn
[edit] To answer @Mootilda #indieweb Regarding:
#
IWDiscord
<v​alerieflynn>
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
"Is this the best channel to ask for recommendations for the world's simplest content management templates, if such exist?"
#
valerieflynn
Wasn't sure if you meant content management system or purposely typed templates.
#
valerieflynn
You might get more responses in this channel. #indieweb-dev deals with more technical stuff.
#
IWDiscord
<v​alerieflynn>
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
Either way it probably depends on how technical you are comfortable getting.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
I'm at the WordPress/ Genesis framework level.
#
IWDiscord
<v​alerieflynn>
#
valerieflynn
But if you're into coding others would have more expertise than me.
#
btrem
yikes, that's a lot of quoting!
#
[morgan]
Something is funky with the sync perhaps, with those messages we just got. Ah, they are repeating
#
gRegor
Discord being discord--
#
Loqi
discord has -1 karma in this channel over the last year (-3 in all channels)
#
btrem
Anyways, here's a code block: ...`navigator.clipboard.writeText(publicKeyText)
#
btrem
.then(msgElem.textContent = "Public key copied to clipboard.")
#
btrem
.catch((err) => { msgElem.textContent = "oops: " + err })`
#
btrem
The `catch` blocks does not, in fact, catch errors AFAICT. And I don't know why.
#
gRegor
Will check, though I do have a note about some minimal Clipboard API usage: https://gregorlove.com/2024/07/i-prefer-to-use/
#
btrem
For example, if I change it to `navigator.clipboard.writeText(publicKeyText).then(msgElem.foo = "there's no such property").catch((err) => { msgElem.textContent = "oops: " + err })` I get an uncaught exception.
#
Loqi
[preview] [gRegor Morrill] I prefer to use curly quotes and apostrophes in my posts, but unfortunately they are tricky to use on Windows. You have to type an incantation like ALT + 0147 to get “ and ALT + 0148 to get ” — and only on the keyboard number pad, not the numbe...
#
[morgan]
Hey so the first thing Id be curious to try would be to make a copy and rewrite the promise instead of trying to seemingly attach a promise to the `navigator.clipboard` . There are some MDN examples which demo a catch , which I would try in your environment, with that variable `publicKeyText` which appears to come into play somewhere outside of this
#
gRegor
navigator.clipboard methods return a Promise
#
[morgan]
! Ah
#
btrem
[morgan]: `publicKeyText` is read from the DOM: `const publicKeyText = document.body.querySelector("pre.publicKey").textContent;`
#
btrem
I just don't understand wtf a Promise is. :-/
#
btrem
But I'm pretty sure I copied the `writeText.then.catch` from the web somewhere.
#
[morgan]
I always have a little time to warm up to them after not doing them for a while, they help, but they are not super easy either 🙂
#
gRegor
What's the exception you're expecting to catch? I just ran a version of that code in Chrome and it worked
#
gRegor
e.g. only the then() is running (successful response)
barnaby joined the channel
#
[morgan]
right now it kinda looks like your running a function to update the text content, an assignment, there is not a clear condition for how it could fail
#
[morgan]
Nice! That lab demo worked for me gRegor
#
gRegor
Only slight change I made from your code is in the catch(), I changed it to just use `console.error` to write the error message.
#
btrem
[morgan]: ok, but isn't it possible for the `clipboard.writeText` to fail?
#
gRegor
I find it easier to debug with console.log and console.error, etc. before dealing with writing messages into the DOM
#
[morgan]
I was about to say similar, perhaps you want to display the output to the user is what you really want? or is this just for debug?
#
btrem
Yes, to display either "key copied" or "not copied" depending on whether it successfully copied to clipboard
#
gRegor
I say that only because DOM interaction is one more variable where things could be going wrong. This lab demo just shows that the text is being written to the clipboard and the then() is running
#
gRegor
It is possible for it fail, though I'm not sure best way to simulate that
#
gRegor
Recommend the dev tools being open in the browser when you run that lab page. Should see "copied" in the console
#
btrem
Me neither. Maybe that's the problem. Because I have the `.then` running (I think!).
#
gRegor
Clipboard access can be denied in the browser I think
#
btrem
That's exactly what I'm thinking.
#
gRegor
Let me try it. I think it's a per-site thing
#
btrem
And it'd be nice to inform the user of that.
#
gRegor
Yep, that's exactly what the catch() is for
#
gRegor
I was just going for minimal proof of concept that the writeText method is working, and the Promise is resolving
#
gRegor
In your code, do you have `msgElem` defined before that snippet?
#
gRegor
probably via another querySelector?
#
btrem
And in fact, I do have the writeText working.
#
btrem
I was trying to test the fail part, to see if the error message appears when there's an error.
#
gRegor
I'm trying out something else on the lab page, just a few minutes
#
[morgan]
You can introduce an error into the code to confirm the error message appears
#
[morgan]
Try putting this in `throw new Error("Uh-oh!");` after the text content is updated
#
[morgan]
If you didnt see this MDN page, maybe with what you are freshly learning and have a minute, let me know if this wasnt as helpful or not aware of it yet 😄. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
#
gRegor
Interestingly, I've denied Clipboard access in Chrome but it's still copying :)
#
[morgan]
Im interested to help a little and also Im learning new things about the clipboard through this, so thanks @btrem . Its something I may use on my own site, to copy code snippets or otherwise
#
gRegor
The Chrome Clipboard setting appears to only be for sites reading your clipboard, not writing.
#
gRegor
So yeah, in the vast majority of cases I would expect this Clipboard Promise to always resolve
#
gRegor
You could probably get away with shorter code like in the post I linked about putting curly quotes on the clipboard. I think the error scenarios for you to look out for can be handled outside of that, e.g. is the HTML node you're copying the text from available on the page.
#
gRegor
Updated https://gregorlove.com/lab/promises-promises.php 1) go to site settings and deny clipboard access for gregorlove.com 2) reload the lage page 3) click the "V3" link and dev tools should show "V3: error reading" as an error. That error is via the catch()
#
gRegor
*reload the lab page
#
btrem
[morgan]: I added the `throw` code as you suggested; the error was not caught.
#
gRegor
Throwing an error is only going to work inside a Promise, so that snippet is harder to test when we're using the Cilpboard API
#
btrem
Arrggghh. I just don't understand Promises.
#
gRegor
Want to hop on a quick Meet call? I can share my screen. Might be easier to talk through.
#
btrem
[morgan]++ gRegor++
#
Loqi
[morgan] has 2 karma in this channel over the last year (12 in all channels)
#
gRegor
to be fair, Clipboard is, I would say, an "odd" instance of Promises.
#
btrem
Thanks for your help. Re: Meet call, I can't. I have to go to work very soon. To my paying job, which I assure everyone is not programming! :-D
#
gRegor
It's much easier for me to grok it when I think of "fetch something from a web API ... wait for it... then do something with the response body"
#
[morgan]
Good luck and check in with progress @btrem++ next time you look at it. Today I learned as per above that the clipboard is an instance of a promise , its not quite the usual way I would expect to use a promise. Its got me opening up some tabs and noodling on some stuff
#
gRegor
No worries, when you get a chance take a look at the source of https://gregorlove.com/lab/promises-promises.php and try denying the clipboard access like I described. Might help. Happy to answer any questions later
#
btrem
gRegor: I'll look at your examples again tomorrow. [morgan]: thanks, I'll let you know how I get on.
ax562 joined the channel
#
gRegor
Just updated that lab page with some headings and steps
#
KE0VVT
I want to include mdBook pages in my Zola repo on Codeberg Pages.
#
KE0VVT
I don't know how to do it, though.
#
gRegor
v​alerieflynn, that's a pretty open ended question on content management systems. You can find some different options and community members experiences on the wiki though.
#
gRegor
What is CMS
#
Loqi
A content management system (often abbreviated as CMS) is software used to create, enter, edit, update, delete content on websites; some CMSs are used for IndieWeb sites, see the tables on this page for current usage https://indieweb.org/CMS
oodani joined the channel
#
[KevinMarks]
the other thing about promises is that as written gRegor's function will return before the promise resolves - if you want to do further things afterwards, it's better to return the promise and chain a `then()` onto the function call as well.
#
[KevinMarks]
Otherwise you have a race condition. This is why using `await` can be clearer as that does ensure the promise resolves before you exit.
#
gRegor
oh is that because I did an `onlick`?
#
gRegor
oh, I think I see what you mean. My actual custom functions should use await
#
KE0VVT
onlick(flavor(strawberry));
#
[KevinMarks]
It depends, You may want to keep things chainable for further then() or to run in parallel, but that does need a bit more thought. I found this helpful, if a bit exhustive https://web.dev/articles/promises
#
[KevinMarks]
this one explains how `await` makes it a bit clearer https://web.dev/articles/async-functions
#
gRegor
One way to make the flow more obvious would be on click, first add an overlay/loading graphic, only remove it once the async calls are done. Or if there's an error, show that in the overlay. Could call the clipboard stuff after a short setTimeout too, since it tends to all run very quickly.