shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

288
active users

#components

2 posts2 participants0 posts today
Continued thread

👆 Sorry, life got in the way; just deployed this but I haven’t had a chance to document it properly yet. I’ll make a proper announcement when I do.

Also, you can now use the `delete` attribute on a DOM node/Kitten component you’re streaming back from the server to have it removed from the DOM on the client. It’s syntactic sugar for hx-swap-oob='delete' in htmx.

kitten.small-web.org

New Kitten update

🥳 Kitten HTML templates and kitten.Component render functions can now be async.

kitten.small-web.org

This is quite a big one and it took me finally biting the bullet and getting my head around generators in JavaScript to implement properly.

So now you can mix synchronous and asynchronous components as you like and if there are any asynchronous components in your templates they will automatically be awaited (even if you forget to use await) ;)

I’ll write a proper post/tutorial/documentation for it soon but for the time being enjoy the screenshots where a layout template gets the latest three posts from my mock fediverse public timeline service and displays them on the page.

The kitten.Component version also has a refresh button that streams a different three to the page.

For those of you unfamiliar with Kitten, this is all the code in either example. No scaffolding, nothing. Pop either into a file called index.page.js and run kitten in that folder and visit https://localhost to see the example run.

Enjoy!

:kitten:💕

> if every time they tried to explain that this sucks as a compile target they were told “no you just don’t get it”, heck I’d feel gaslit too! #WebComponents are still far from being a good compile target for all framework components, but that is not a prerequisite for them being useful. They simply solve different problems.

lea.verou.me/blog/2024/wcs-vs-

lea.verou.meWeb Components are not Framework Components — and That’s Okay • Lea Verou

🎉 You can now use components and fragments in your Markdown pages in Kitten.

Following on from yesterday’s Markdown pages feature, you can now import components and fragments and use them in your Markdown pages to add dynamic functionality (similar to how it works in mdx but without using JSX).

(The “SCARY” text in the screencast is being randomly animated by a component.)

Enjoy!

:kitten:💕

> Especially with #ServerComponents, the honeymoon was so bright, with its smaller bundles and fashionable new data loading. Then, we sloshed through the trough of disillusionment as we realized that the developer experience of Server Components is challenging.

> Now, though? We’re learning how to think about and how to teach these new concepts. And we’re seeing their true potential.

mux.com/blog/react-19-server-c

www.mux.com · React 19 lets you write impossible components | MuxWhat can you do with Server Components and Actions in React 19? Let’s talk about how React 19’s features are a big deal, even for a simple marketing site.

You can now create HTML and CSS fragments in Kitten.

This introduces two new file extensions (.fragment.html and .fragment.css) and you can import these fragments into your pages and into other components and fragments as if they were JavaScript modules*.

HTML fragments also support slots.

Example:

codeberg.org/kitten/app/src/br

*Thanks to Kitten’s behind-the-scenes use of a custom ES Module Loader.

New #ThingUmbrella releases & example: This week's releases included updates to thi.ng/system, a minimal and declarative way to compose an app from multiple components, build their dependency graph and manage their lifecycle (async start/stop) in the correct (topological) order. The computed graph (DAG) can then also be serialized to GraphViz format for visualization/debugging/documentation purposes with a single line of code (see readme)...

Even though I've been using this system in dozens of projects, it occurred to me there wasn't any example project yet demonstrating this approach, so I finally fixed that:

github.com/thi-ng/umbrella/tre

The demo is purposefully minimal and the source code is (hopefully) much more interesting than the result. In addition to showing how the app components are defined, this example also shows another powerful pattern I've been using in my own tools:

Using thi.ng/atom as central app state and thi.ng/rstream pubsub as central event bus, to both of which various system components can attach topic based subscriptions (aka event and/or change handlers). Since each of these reactive subscriptions are normal rstream subs, they can all be forming graphs of child subs and be filtered/transformed and synchronized via hundreds of composable operators in the thi.ng/rstream and thi.ng/transducers packages — and — these rstream values can also be directly embedded in thi.ng/rdom created reactive UI components/elements/attributes. Some of these techniques are shown in this new example as well... Hope it's helpful to some of you!

Continued thread

next question:

if there are parameter values that don't fit any standard format when parsed (e.g. unusual multi-element formatting, typos, other outliers) where should they appear when sorted in ascending order?

"Lexicographically" here means that a weird value like "7AD4P" or "7.38?102" would appear after all the numbers starting with 7, but before the numbers starting with 8.

consider that this may affect range searches if they are implemented.