Flotilla 1.9.1 is out — this release is the first release in which I do not resent the clankers for helping me:
1. re-write welshman's app framework
2. migrate flotilla to the new version
3. fix many arcane and subtle bugs I would never have found
4. synchronize implementations across flotilla, zooid, caravel, and welshman
5. keep my documentation and skills up to date
The main highlight this time is the addition of long-form articles. I added this because they're really useful as a basis for a content library and pinned messages, which were added last release.
Also, it's worth mentioning that Welshman 0.9.0 (and 0.9.1) is out as well. This includes a complete re-write of the app framework to prevent mixing user data in the case of multiple logins. I also added @welshman/domain, which includes a very nice framework (inspired by applesauce's factories) for parsing, validating, and writing nostr events. For example:
```const reader = ProfileKind.reader(event).parse()```
```reader.name() // string | undefined```
```reader.display() // best-effort display name, falls back to a short npub
```
```const template = await ProfileKind.writer(reader)```
``` .setName("alice")```
``` .setAbout("hello nostr")```
``` .renderTemplate()```
The welshman/app module is deeply integrated with the domain module, giving you nice stuff like this:
```import {FollowList} from "@welshman/domain"```
```import {Domain} from "@welshman/app"```
``````
```// Load the user's follow list```
```const reader = await app.use(FollowLists).forceLoad(user.pubkey)```
```
// Modify the user's follow list```
```const writer = app.use(Domain)```
``` .writer(FollowList, reader)```
``` .follow(otherPubkey)```
```
// Publish the updated event to relay selections defined by the writer class```
```const command = await app.use(Domain).command(writer)
await command.publish()```
You can read more at https://welshman.coracle.social/ or point your clanker at my welshman skills: https://gitea.coracle.social/coracle/welshman/src/branch/master/skills
Other changes:
* Re-work how claims work under the hood
* Fix storage and synchronization bugs
* Update welshman library to 0.9.0
* And long-form articles
* Fix quote loading, rendering, and comments
* Add "create thread" from chat message
* Fix voice chat bugs
* Fix notification bugs
* Improve video tiling and chrome
* Add ability to send logs to developer
* Add theme selector
* Add native sharing registration
1. re-write welshman's app framework
2. migrate flotilla to the new version
3. fix many arcane and subtle bugs I would never have found
4. synchronize implementations across flotilla, zooid, caravel, and welshman
5. keep my documentation and skills up to date
The main highlight this time is the addition of long-form articles. I added this because they're really useful as a basis for a content library and pinned messages, which were added last release.
Also, it's worth mentioning that Welshman 0.9.0 (and 0.9.1) is out as well. This includes a complete re-write of the app framework to prevent mixing user data in the case of multiple logins. I also added @welshman/domain, which includes a very nice framework (inspired by applesauce's factories) for parsing, validating, and writing nostr events. For example:
```const reader = ProfileKind.reader(event).parse()```
```reader.name() // string | undefined```
```reader.display() // best-effort display name, falls back to a short npub
```
```const template = await ProfileKind.writer(reader)```
``` .setName("alice")```
``` .setAbout("hello nostr")```
``` .renderTemplate()```
The welshman/app module is deeply integrated with the domain module, giving you nice stuff like this:
```import {FollowList} from "@welshman/domain"```
```import {Domain} from "@welshman/app"```
``````
```// Load the user's follow list```
```const reader = await app.use(FollowLists).forceLoad(user.pubkey)```
```
// Modify the user's follow list```
```const writer = app.use(Domain)```
``` .writer(FollowList, reader)```
``` .follow(otherPubkey)```
```
// Publish the updated event to relay selections defined by the writer class```
```const command = await app.use(Domain).command(writer)
await command.publish()```
You can read more at https://welshman.coracle.social/ or point your clanker at my welshman skills: https://gitea.coracle.social/coracle/welshman/src/branch/master/skills
Other changes:
* Re-work how claims work under the hood
* Fix storage and synchronization bugs
* Update welshman library to 0.9.0
* And long-form articles
* Fix quote loading, rendering, and comments
* Add "create thread" from chat message
* Fix voice chat bugs
* Fix notification bugs
* Improve video tiling and chrome
* Add ability to send logs to developer
* Add theme selector
* Add native sharing registration
85❤️4🤙4🍻1👀1