home.social

#streaminghtml — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #streaminghtml, aggregated by home.social.

  1. 🥳 New Kitten Release

    • Fix: Events on `KittenComponent` hierarchies are now bubbled in reverse (from children down to parents). This provides for predictable event firing in cases where parents might emit events (e.g., a page emitting an event from its `onConnect()` handler). Your existing code should work as before with certain edge cases that might have broken before no longer breaking.

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  2. 🥳 New Kitten Release

    • Fix: Events on `KittenComponent` hierarchies are now bubbled in reverse (from children down to parents). This provides for predictable event firing in cases where parents might emit events (e.g., a page emitting an event from its `onConnect()` handler). Your existing code should work as before with certain edge cases that might have broken before no longer breaking.

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  3. 🥳 New Kitten Release

    • Fix: Events on `KittenComponent` hierarchies are now bubbled in reverse (from children down to parents). This provides for predictable event firing in cases where parents might emit events (e.g., a page emitting an event from its `onConnect()` handler). Your existing code should work as before with certain edge cases that might have broken before no longer breaking.

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  4. 🥳 New Kitten Release

    • Fix: Events on `KittenComponent` hierarchies are now bubbled in reverse (from children down to parents). This provides for predictable event firing in cases where parents might emit events (e.g., a page emitting an event from its `onConnect()` handler). Your existing code should work as before with certain edge cases that might have broken before no longer breaking.

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  5. 🥳 New Kitten Release

    • Fix: Events on `KittenComponent` hierarchies are now bubbled in reverse (from children down to parents). This provides for predictable event firing in cases where parents might emit events (e.g., a page emitting an event from its `onConnect()` handler). Your existing code should work as before with certain edge cases that might have broken before no longer breaking.

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  6. 🥳 New Kitten Release

    • `KittenComponent` (and thereby `KittenPage`) gains an `emit()` method.

    Use this to bubble events from your page to all child components or from any component to all of its child components.

    This is useful, for example, for setting the state of a page or a component where each child component knows how to present itself for that state.

    (That, in turn, is useful if you want to be able to restore state based on URLs.)

    The naming convention-based mapping of event names to event handler names is the same as for the events you receive from the client. So an event called `myEvent` will result in `onMyEvent` handlers on child components being called.

    (Also update @small-web/kitten to version 7.1.0 to get language intelligence for the new method.)

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  7. 🥳 New Kitten Release

    • `KittenComponent` (and thereby `KittenPage`) gains an `emit()` method.

    Use this to bubble events from your page to all child components or from any component to all of its child components.

    This is useful, for example, for setting the state of a page or a component where each child component knows how to present itself for that state.

    (That, in turn, is useful if you want to be able to restore state based on URLs.)

    The naming convention-based mapping of event names to event handler names is the same as for the events you receive from the client. So an event called `myEvent` will result in `onMyEvent` handlers on child components being called.

    (Also update @small-web/kitten to version 7.1.0 to get language intelligence for the new method.)

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  8. 🥳 New Kitten Release

    • `KittenComponent` (and thereby `KittenPage`) gains an `emit()` method.

    Use this to bubble events from your page to all child components or from any component to all of its child components.

    This is useful, for example, for setting the state of a page or a component where each child component knows how to present itself for that state.

    (That, in turn, is useful if you want to be able to restore state based on URLs.)

    The naming convention-based mapping of event names to event handler names is the same as for the events you receive from the client. So an event called `myEvent` will result in `onMyEvent` handlers on child components being called.

    (Also update @small-web/kitten to version 7.1.0 to get language intelligence for the new method.)

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  9. 🥳 New Kitten Release

    • `KittenComponent` (and thereby `KittenPage`) gains an `emit()` method.

    Use this to bubble events from your page to all child components or from any component to all of its child components.

    This is useful, for example, for setting the state of a page or a component where each child component knows how to present itself for that state.

    (That, in turn, is useful if you want to be able to restore state based on URLs.)

    The naming convention-based mapping of event names to event handler names is the same as for the events you receive from the client. So an event called `myEvent` will result in `onMyEvent` handlers on child components being called.

    (Also update @small-web/kitten to version 7.1.0 to get language intelligence for the new method.)

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  10. 🥳 New Kitten Release

    • `KittenComponent` (and thereby `KittenPage`) gains an `emit()` method.

    Use this to bubble events from your page to all child components or from any component to all of its child components.

    This is useful, for example, for setting the state of a page or a component where each child component knows how to present itself for that state.

    (That, in turn, is useful if you want to be able to restore state based on URLs.)

    The naming convention-based mapping of event names to event handler names is the same as for the events you receive from the client. So an event called `myEvent` will result in `onMyEvent` handlers on child components being called.

    (Also update @small-web/kitten to version 7.1.0 to get language intelligence for the new method.)

    Enjoy!

    :kitten:💕

    #Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

  11. 🥳 New Kitten release

    ⁃ Bug fix: Kitten no longer awaits events bubbled from the client to the server.

    Kitten’s Streaming HTML workflow¹ transparently bubbles events from the client to the server so you can keep all your code on one tier and stream HTML updates to the page. Anyway, so I was awaiting events while bubbling them instead of just firing them off in parallel which meant that if you had delays, etc., in some of your event handlers, the timing of other event handlers would be affected. This is now fixed so your event handlers should fire independently of each other. (Your async event handlers will continue to work as intended so you can script animations, etc., by awaiting delays within them.)

    Enjoy!

    kitten.small-web.org

    :kitten:💕

    ¹ kitten.small-web.org/tutorials

    #Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #events #StreamingHTML

  12. 🥳 New Kitten release

    ⁃ Bug fix: Kitten no longer awaits events bubbled from the client to the server.

    Kitten’s Streaming HTML workflow¹ transparently bubbles events from the client to the server so you can keep all your code on one tier and stream HTML updates to the page. Anyway, so I was awaiting events while bubbling them instead of just firing them off in parallel which meant that if you had delays, etc., in some of your event handlers, the timing of other event handlers would be affected. This is now fixed so your event handlers should fire independently of each other. (Your async event handlers will continue to work as intended so you can script animations, etc., by awaiting delays within them.)

    Enjoy!

    kitten.small-web.org

    :kitten:💕

    ¹ kitten.small-web.org/tutorials

    #Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #events #StreamingHTML

  13. 🥳 New Kitten release

    ⁃ Bug fix: Kitten no longer awaits events bubbled from the client to the server.

    Kitten’s Streaming HTML workflow¹ transparently bubbles events from the client to the server so you can keep all your code on one tier and stream HTML updates to the page. Anyway, so I was awaiting events while bubbling them instead of just firing them off in parallel which meant that if you had delays, etc., in some of your event handlers, the timing of other event handlers would be affected. This is now fixed so your event handlers should fire independently of each other. (Your async event handlers will continue to work as intended so you can script animations, etc., by awaiting delays within them.)

    Enjoy!

    kitten.small-web.org

    :kitten:💕

    ¹ kitten.small-web.org/tutorials

    #Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #events #StreamingHTML

  14. 🥳 New Kitten release

    ⁃ Bug fix: Kitten no longer awaits events bubbled from the client to the server.

    Kitten’s Streaming HTML workflow¹ transparently bubbles events from the client to the server so you can keep all your code on one tier and stream HTML updates to the page. Anyway, so I was awaiting events while bubbling them instead of just firing them off in parallel which meant that if you had delays, etc., in some of your event handlers, the timing of other event handlers would be affected. This is now fixed so your event handlers should fire independently of each other. (Your async event handlers will continue to work as intended so you can script animations, etc., by awaiting delays within them.)

    Enjoy!

    kitten.small-web.org

    :kitten:💕

    ¹ kitten.small-web.org/tutorials

    #Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #events #StreamingHTML

  15. 🥳 New Kitten release

    ⁃ Bug fix: Kitten no longer awaits events bubbled from the client to the server.

    Kitten’s Streaming HTML workflow¹ transparently bubbles events from the client to the server so you can keep all your code on one tier and stream HTML updates to the page. Anyway, so I was awaiting events while bubbling them instead of just firing them off in parallel which meant that if you had delays, etc., in some of your event handlers, the timing of other event handlers would be affected. This is now fixed so your event handlers should fire independently of each other. (Your async event handlers will continue to work as intended so you can script animations, etc., by awaiting delays within them.)

    Enjoy!

    kitten.small-web.org

    :kitten:💕

    ¹ kitten.small-web.org/tutorials

    #Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #events #StreamingHTML

  16. I love how simple Kitten’s Streaming HTML workflow makes building features like this, especially when using class-based Kitten pages and components :)

    kitten.small-web.org

    :kitten:💕

    #Kitten #SmallWeb #StreamingHTML #EventBasedProgramming #ObjectOrientedProgramming #JavaScript #NodeJS #web #dev #GazaVerified

  17. …And there are more interesting tid-bits in there too:

    • See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

    • Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

    • Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

    I think that’s all the intersting stuff I can spot at the moment.

    Have fun!

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

  18. …And there are more interesting tid-bits in there too:

    • See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

    • Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

    • Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

    I think that’s all the intersting stuff I can spot at the moment.

    Have fun!

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

  19. …And there are more interesting tid-bits in there too:

    • See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

    • Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

    • Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

    I think that’s all the intersting stuff I can spot at the moment.

    Have fun!

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

  20. …And there are more interesting tid-bits in there too:

    • See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

    • Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

    • Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

    I think that’s all the intersting stuff I can spot at the moment.

    Have fun!

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

  21. …And there are more interesting tid-bits in there too:

    • See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

    • Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

    • Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

    I think that’s all the intersting stuff I can spot at the moment.

    Have fun!

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

  22. Right, the Kitten icon explorer is now fully functional.

    • Type to filter results (searches component names, categories, and tags).
    • Press the component button to copy the component code to your clipboard.

    kitten.small-web.org/reference

    I quickly whipped this up using the new generic script in Markdown frontmatter feature I added to Kitten. And I’d imagine this is about the most amount of functionality you’d add using it before refactoring to something more maintainable. (Hey, just because I’m the author of Kitten doesn’t mean I’m not also learning how to use it as build it.) :)

    Source: codeberg.org/kitten/site/raw/b

    Enjoy!

    :kitten:💕

    #Kitten #SmallWeb #web #dev #icons #iconExplorer #PhosphorIcons #StreamingHTML #markdown #components #events

  23. Right, the Kitten icon explorer is now fully functional.

    • Type to filter results (searches component names, categories, and tags).
    • Press the component button to copy the component code to your clipboard.

    kitten.small-web.org/reference

    I quickly whipped this up using the new generic script in Markdown frontmatter feature I added to Kitten. And I’d imagine this is about the most amount of functionality you’d add using it before refactoring to something more maintainable. (Hey, just because I’m the author of Kitten doesn’t mean I’m not also learning how to use it as build it.) :)

    Source: codeberg.org/kitten/site/raw/b

    Enjoy!

    :kitten:💕

    #Kitten #SmallWeb #web #dev #icons #iconExplorer #PhosphorIcons #StreamingHTML #markdown #components #events

  24. Right, the Kitten icon explorer is now fully functional.

    • Type to filter results (searches component names, categories, and tags).
    • Press the component button to copy the component code to your clipboard.

    kitten.small-web.org/reference

    I quickly whipped this up using the new generic script in Markdown frontmatter feature I added to Kitten. And I’d imagine this is about the most amount of functionality you’d add using it before refactoring to something more maintainable. (Hey, just because I’m the author of Kitten doesn’t mean I’m not also learning how to use it as build it.) :)

    Source: codeberg.org/kitten/site/raw/b

    Enjoy!

    :kitten:💕

    #Kitten #SmallWeb #web #dev #icons #iconExplorer #PhosphorIcons #StreamingHTML #markdown #components #events

  25. Right, the Kitten icon explorer is now fully functional.

    • Type to filter results (searches component names, categories, and tags).
    • Press the component button to copy the component code to your clipboard.

    kitten.small-web.org/reference

    I quickly whipped this up using the new generic script in Markdown frontmatter feature I added to Kitten. And I’d imagine this is about the most amount of functionality you’d add using it before refactoring to something more maintainable. (Hey, just because I’m the author of Kitten doesn’t mean I’m not also learning how to use it as build it.) :)

    Source: codeberg.org/kitten/site/raw/b

    Enjoy!

    :kitten:💕

    #Kitten #SmallWeb #web #dev #icons #iconExplorer #PhosphorIcons #StreamingHTML #markdown #components #events

  26. Right, the Kitten icon explorer is now fully functional.

    • Type to filter results (searches component names, categories, and tags).
    • Press the component button to copy the component code to your clipboard.

    kitten.small-web.org/reference

    I quickly whipped this up using the new generic script in Markdown frontmatter feature I added to Kitten. And I’d imagine this is about the most amount of functionality you’d add using it before refactoring to something more maintainable. (Hey, just because I’m the author of Kitten doesn’t mean I’m not also learning how to use it as build it.) :)

    Source: codeberg.org/kitten/site/raw/b

    Enjoy!

    :kitten:💕

    #Kitten #SmallWeb #web #dev #icons #iconExplorer #PhosphorIcons #StreamingHTML #markdown #components #events

  27. I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

    kitten.small-web.org/reference

    And see the code for it here:

    codeberg.org/kitten/site/src/b

    I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

    codeberg.org/kitten/site/raw/b

    #Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

  28. I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

    kitten.small-web.org/reference

    And see the code for it here:

    codeberg.org/kitten/site/src/b

    I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

    codeberg.org/kitten/site/raw/b

    #Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

  29. I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

    kitten.small-web.org/reference

    And see the code for it here:

    codeberg.org/kitten/site/src/b

    I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

    codeberg.org/kitten/site/raw/b

    #Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

  30. I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

    kitten.small-web.org/reference

    And see the code for it here:

    codeberg.org/kitten/site/src/b

    I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

    codeberg.org/kitten/site/raw/b

    #Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

  31. I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

    kitten.small-web.org/reference

    And see the code for it here:

    codeberg.org/kitten/site/src/b

    I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

    codeberg.org/kitten/site/raw/b

    #Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

  32. New Kitten release 🎉

    kitten.small-web.org

    • New: Lovely new icons¹ and new callouts in Kitten Settings²

    • New: Markdown now supports attributes and bracketed spans³

    • New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)

    • Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)

    Enjoy! :kitten:💕

    ¹ kitten.small-web.org/reference

    ² mastodon.ar.al/@aral/114381983

    ³ kitten.small-web.org/reference (also see mastodon.ar.al/@aral/114381462)

    kitten.small-web.org/tutorials

    ⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: codeberg.org/kitten/app/src/br Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: codeberg.org/kitten/app/src/br

    #Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS

  33. New Kitten release 🎉

    kitten.small-web.org

    • New: Lovely new icons¹ and new callouts in Kitten Settings²

    • New: Markdown now supports attributes and bracketed spans³

    • New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)

    • Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)

    Enjoy! :kitten:💕

    ¹ kitten.small-web.org/reference

    ² mastodon.ar.al/@aral/114381983

    ³ kitten.small-web.org/reference (also see mastodon.ar.al/@aral/114381462)

    kitten.small-web.org/tutorials

    ⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: codeberg.org/kitten/app/src/br Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: codeberg.org/kitten/app/src/br

    #Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS

  34. New Kitten release 🎉

    kitten.small-web.org

    • New: Lovely new icons¹ and new callouts in Kitten Settings²

    • New: Markdown now supports attributes and bracketed spans³

    • New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)

    • Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)

    Enjoy! :kitten:💕

    ¹ kitten.small-web.org/reference

    ² mastodon.ar.al/@aral/114381983

    ³ kitten.small-web.org/reference (also see mastodon.ar.al/@aral/114381462)

    kitten.small-web.org/tutorials

    ⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: codeberg.org/kitten/app/src/br Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: codeberg.org/kitten/app/src/br

    #Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS

  35. New Kitten release 🎉

    kitten.small-web.org

    • New: Lovely new icons¹ and new callouts in Kitten Settings²

    • New: Markdown now supports attributes and bracketed spans³

    • New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)

    • Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)

    Enjoy! :kitten:💕

    ¹ kitten.small-web.org/reference

    ² mastodon.ar.al/@aral/114381983

    ³ kitten.small-web.org/reference (also see mastodon.ar.al/@aral/114381462)

    kitten.small-web.org/tutorials

    ⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: codeberg.org/kitten/app/src/br Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: codeberg.org/kitten/app/src/br

    #Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS

  36. New Kitten release 🎉

    kitten.small-web.org

    • New: Lovely new icons¹ and new callouts in Kitten Settings²

    • New: Markdown now supports attributes and bracketed spans³

    • New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)

    • Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)

    Enjoy! :kitten:💕

    ¹ kitten.small-web.org/reference

    ² mastodon.ar.al/@aral/114381983

    ³ kitten.small-web.org/reference (also see mastodon.ar.al/@aral/114381462)

    kitten.small-web.org/tutorials

    ⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: codeberg.org/kitten/app/src/br Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: codeberg.org/kitten/app/src/br

    #Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS

  37. New Kitten release

    • Fix: messages that are promises are properly awaited before being sent.

    kitten.small-web.org

    Kitten automatically and transparently handles asynchronous content in your templates for you so you don’t have to worry about it. One place where this wasn’t working properly is if you addressed `this.component` to stream a custom update of your component manually instead of calling the `this.update()` method of Kitten component instances.

    e.g.,

    ```js
    export default class AdminPage extends kitten.Page {
    // …
    onSelectedPost (data) {
    this.send(kitten.html`<${this.component} postId='${data.selectedPost.postId}' />`)
    }
    }
    ```

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #news #updates #promises #StreamingHTML #web #dev #HTML #CSS #JavaScript

  38. New Kitten release

    • Fix: messages that are promises are properly awaited before being sent.

    kitten.small-web.org

    Kitten automatically and transparently handles asynchronous content in your templates for you so you don’t have to worry about it. One place where this wasn’t working properly is if you addressed `this.component` to stream a custom update of your component manually instead of calling the `this.update()` method of Kitten component instances.

    e.g.,

    ```js
    export default class AdminPage extends kitten.Page {
    // …
    onSelectedPost (data) {
    this.send(kitten.html`<${this.component} postId='${data.selectedPost.postId}' />`)
    }
    }
    ```

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #news #updates #promises #StreamingHTML #web #dev #HTML #CSS #JavaScript

  39. New Kitten release

    • Fix: messages that are promises are properly awaited before being sent.

    kitten.small-web.org

    Kitten automatically and transparently handles asynchronous content in your templates for you so you don’t have to worry about it. One place where this wasn’t working properly is if you addressed `this.component` to stream a custom update of your component manually instead of calling the `this.update()` method of Kitten component instances.

    e.g.,

    ```js
    export default class AdminPage extends kitten.Page {
    // …
    onSelectedPost (data) {
    this.send(kitten.html`<${this.component} postId='${data.selectedPost.postId}' />`)
    }
    }
    ```

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #news #updates #promises #StreamingHTML #web #dev #HTML #CSS #JavaScript

  40. New Kitten release

    • Fix: messages that are promises are properly awaited before being sent.

    kitten.small-web.org

    Kitten automatically and transparently handles asynchronous content in your templates for you so you don’t have to worry about it. One place where this wasn’t working properly is if you addressed `this.component` to stream a custom update of your component manually instead of calling the `this.update()` method of Kitten component instances.

    e.g.,

    ```js
    export default class AdminPage extends kitten.Page {
    // …
    onSelectedPost (data) {
    this.send(kitten.html`<${this.component} postId='${data.selectedPost.postId}' />`)
    }
    }
    ```

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #news #updates #promises #StreamingHTML #web #dev #HTML #CSS #JavaScript

  41. New Kitten release

    • Fix: messages that are promises are properly awaited before being sent.

    kitten.small-web.org

    Kitten automatically and transparently handles asynchronous content in your templates for you so you don’t have to worry about it. One place where this wasn’t working properly is if you addressed `this.component` to stream a custom update of your component manually instead of calling the `this.update()` method of Kitten component instances.

    e.g.,

    ```js
    export default class AdminPage extends kitten.Page {
    // …
    onSelectedPost (data) {
    this.send(kitten.html`<${this.component} postId='${data.selectedPost.postId}' />`)
    }
    }
    ```

    :kitten:💕

    #Kitten #SmallWeb #SmallTech #news #updates #promises #StreamingHTML #web #dev #HTML #CSS #JavaScript

  42. 👆 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

    #Kitten #SmallWeb #icons #components #StreamingHTML

  43. 👆 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

    #Kitten #SmallWeb #icons #components #StreamingHTML

  44. 👆 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

    #Kitten #SmallWeb #icons #components #StreamingHTML

  45. 👆 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

    #Kitten #SmallWeb #icons #components #StreamingHTML

  46. 👆 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

    #Kitten #SmallWeb #icons #components #StreamingHTML