🥳 New Kitten¹ Release

Fixed:

• (Possible regression?) Value referencing during database event logging (see 2026-04-02 release²) was broken. This is now fixed.

Enjoy!

💕

¹ https://kitten.small-web.org
² https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2026-04-02

#Kitten #KittenReleases #SmallWeb #SmallTech #bugFix #regression

Kitten: Home

🥳 New Kitten¹ Release

Fixes:

• Actually fixes the plain HTMX connection state handlers. They’re now stable and exactly match the behaviour of the Alpine.js handlers in plain HTMX (this was not trivial https://codeberg.org/kitten/app/commit/b53bb6d02c568b7119ae2851596943fad78a0ffa due to a limitation in HTMX https://github.com/bigskysoftware/htmx/issues/2131).

Enjoy!

💕

¹ kitten.small-web.org

#Kitten #KittenReleases #SmallWeb #SmallTech #bugfix

Actually fix plain HTMX WebSocket lifecycle event handlers · b53bb6d02c

app - A web development kit that’s small, purrs, and loves you.

Codeberg.org

🥳 New Kitten¹ Release

Fixes:

• The `kitten.html` shorthands for plain HTMX client-side event handling of a Kitten Page’s default WebSocket lifecycle (`on:connecting`, `on:connect`, and `on:disconnect`) were generating faulty HTMX code (the Alpine.js versions, `@on:connecting`, `@on:connect`, and `@on:disconnect`, were fine). The plain HTMX versions now also generate working code.

• Replaced direct `eval` in a statement in the Kitten Introspection API to improve safety and silence the esbuild warning.

Full change log: https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2026-04-10

Enjoy!

💕

¹ https://kitten.small-web.org

#Kitten #KittenReleases #SmallWeb #SmallTech #bugfix

app/CHANGELOG.md at main

app - A web development kit that’s small, purrs, and loves you.

Codeberg.org

🥳 New Kitten¹ Release

• Adds Kitten Introspection API

I’ll record a video this week demonstrating it.

In the meanwhile, check out the change log for details:
https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2026-03-29

Enjoy!

💕

¹ https://kitten.small-web.org

#Kitten #KittenReleases #SmallWeb #SmallTech #introspectionAPI #web #dev

app/CHANGELOG.md at main

app - A web development kit that’s small, purrs, and loves you.

Codeberg.org

🥳 New Kitten Release

• Implement garbage collection timeout for unconnected pages

Added a timeout to KittenPage instances so that if they do not connect within 10 seconds, they are garbage collected.

This is to avoid a memory leak in the scenario where a person rapidly refreshes a class-based (state maintaining) Kitten page. In such a scenario, the almost instant page lifecycle does not allow enough time for the page’s default WebSocket to connect and disconnect from the client. As we normally garbage collect pages when their default WebSocket disconnects, this leaves the page object in memory, creating a memory leak.

Enjoy!

https://kitten.small-web.org

💕

#Kitten #KittenReleases #SmallWeb #SmallTech #bugFix

Kitten: Home

🥳 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 #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

🥳 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 #KittenReleases #SmallWeb #SmallTech #web #dev #events #serverSide #eventBased #components #hypermedia #streamingHTML

🥳 New @small-web/kitten (Kitten globals) release.

• Improved type information.
• Now plays nice with tsconfig.json and tsc.
• Adds `rawBody` to `KittenRequest`.

This is not really a breaking change (in that it won’t break your apps) but I’m releasing it as a major version update so as not to surprise you if you notice the type information is different (more detailed than before).

To update in your kitten apps:
npm install @small-web/kitten@7

For more information on how to use this module, see the Kitten Type Safety tutorial:
https://kitten.small-web.org/tutorials/type-safety/

Full change log:
https://codeberg.org/kitten/globals/src/branch/main/CHANGELOG.md#7-0-0-2026-03-19

Enjoy!

💕

#Kitten #KittenReleases #SmallWeb #SmallTech #web #dev #typeSafety #JavaScript #JS #nodeJS

Kitten: Tutorials

🥳 New Kitten¹ Release

• Fixes: Page infinitely refreshes if class does not extend `kitten.Page`

Kitten now shows a helpful error message for this authoring error.

(The issue was due to the page getting rendered without the necessary scaffolding provided by the base class for maintaining the web socket connection,. leading to Kitten thinking the socket connection had failed and triggering a reload to reestablish it.)

Full changelog of today’s updates: https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2026-03-18

Thanks to @joshhatesgithub (https://codeberg.org/joshhatesgithub) for discovering and reporting this last night.

Enjoy!

💕

¹ https://kitten.small-web.org

#Kitten #KittenReleases #SmallWeb #developerExperience #bugFix

app/CHANGELOG.md at main

app - A web development kit that’s small, purrs, and loves you.

Codeberg.org

🥳 New Kitten¹ Release

• Adds `rawBody` to non-multipart POST requests.

This property, which is a Buffer, is necessary if you want to verify signatures (e.g., for webhooks).

I had to fork express-busboy as they already ruled out adding it. The fork (@small-web/kitten-busboy²) also allowed me to type the middleware extension point for Polka³ instead of Express (Kitten uses Polka) so that’s one @ts-ignore removed (hey, dev is a string of little wins) :)

Change log: https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2026-03-18

Caught a bug and feeling a little under the weather at the moment (nothing major, mom and dad – no need to worry) so apologies if I’m not responsive here.

Enjoy!

💕

¹ https://kitten.small-web.org
² https://codeberg.org/kitten/busboy
³ https://github.com/lukeed/polka

#Kitten #SmallWeb #KittenReleases #busboy #polka #express #bodyParsing #middleware #NodeJS #web #dev

app/CHANGELOG.md at main

app - A web development kit that’s small, purrs, and loves you.

Codeberg.org