hodlbod 5e142e4db4
tests / tests (push) Failing after 5m10s
Refine domain classes: behavior tags, extra-tag passthrough, cleanups
Iterate on @welshman/domain following review:

- base: add `group`/`protect`/`expires` behavior tags (parsed in base, emitted
  via addBehaviorTags before hashing) and an `extraTags` passthrough (opt-in via
  reservedTagKeys) so tag carry-over lives in one place; migrate Handler, Comment,
  Thread onto it. Comment gains nested root/parent ref structs + setters.
- List: fix inverted keepTags; add clearTags/clearPublicTags/clearPrivateTags and
  use them in the relay/server list setters.
- RelayList: preserve complementary read/write capability instead of dropping
  modeless entries.
- Split Relay/Room membership ops into per-kind classes (RelayAddMember/
  RelayRemoveMember, RoomAddMember/RoomRemoveMember) over a shared base.
- TimeEvent (renamed from CalendarEvent): derive "D" day tags in toTemplate.
- Feed: default to an empty feed, fail parse when the "feed" tag is missing.
- RelaySet added; CommunityList renamed to GroupList; predicate bare add/remove
  mutators; RoomMeta uses randomId; PollResponse.selections drops pollType.
- Remove ChannelList, FileServerList, Settings, and event-asserting getAddress/
  display accessors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V67tPYdvh1qCkjEBhJGZUR
2026-06-18 22:42:10 +00:00
2025-04-02 10:15:49 -07:00
2025-10-13 15:08:42 -07:00
2026-06-18 19:31:14 +00:00
2025-09-30 15:55:18 -07:00
2026-06-18 19:31:14 +00:00
2023-09-20 13:52:45 -07:00
2025-04-02 10:15:49 -07:00
2026-06-16 12:31:46 -07:00
2025-02-28 15:30:57 -08:00
2025-04-09 11:58:29 -07:00
2025-04-09 11:58:29 -07:00
2023-03-25 11:58:52 -05:00
2026-02-25 13:13:08 -08:00
2026-05-28 11:57:52 -07:00
2026-06-18 11:41:21 -07:00
2026-06-10 14:31:27 -07:00
2025-04-02 10:15:49 -07:00
2026-06-18 11:41:21 -07:00
2025-04-02 10:15:49 -07:00
2025-04-08 15:11:15 -07:00
2026-06-18 11:41:21 -07:00
2025-04-09 13:47:59 -07:00

Welshman

A nostr toolkit focused on creating highly a configurable client system, extracted from the Coracle nostr client.

Linking

If you're developing an application which requires changes to welshman, you'll need to use npm link to link the two. This is an annoying process, and is only supported if using npm.

  • Clone welshman and the repository that depends on it
  • Within each package directory in welshman, run npm link
  • Within your application directory, link all welshman dependencies simultaneously (or else only one will get linked. A command that does this is: rm -rf node_modules; npm i; cat package.json|js '.dependencies|keys[]'|grep welshman|xargs npm link.

If you run npm install in your application directory, you'll need to repeat the final step above. Finally, if you're using the editor module, you may run into some dependency version conflicts. I recommend editing the command above to exclude the editor.

Agent Skills

Welshman ships with agent skills for AI coding tools. Each skill covers a specific package and is auto-loaded when relevant to your current task.

npx skills add coracle-social/welshman

This will prompt you to select which skills to install and which agent tool to install them for. Use -g to install globally across all your projects instead of just the current one.

See skills/README.md for the full list and details on how they activate.

S
Description
No description provided
Readme MIT 4.3 MiB
Languages
TypeScript 99.4%
CSS 0.3%
JavaScript 0.3%