767 Commits

Author SHA1 Message Date
Jon Staab e2a6ef21cd Refine domain, integrate into app
tests / tests (push) Failing after 5m14s
2026-06-19 22:21:06 -07:00
Jon Staab 1bd62d3024 Move domain stuff to sub directory, clean up base classes 2026-06-19 11:57:40 -07:00
hodlbod bfd91f2d39 Rewrite domain objects as a Reader/Builder split
tests / tests (push) Failing after 5m7s
Replace the single DomainObject/EncryptableList classes with a read/write split
that removes the optional-event ambiguity:

- base.ts: EventReader<P> (static kind; fromEvent(event, signer?) eagerly computes
  a generic `plain`, validates leniently, throws-or-passes; lazy method accessors;
  group/protect/expires + extraTags carry-over; builder()) and EventBuilder<P>
  (chainable setters, buildTags/buildContent, validate-on-emit).
- List.ts: ListReader/ListBuilder for NIP-51 lists (decrypt-on-read into `plain`,
  re-encrypt-on-emit, tag mutators).
- Every kind converted to a <Noun> reader + <Noun>Builder pair; membership ops
  split into per-kind reader/builder pairs over a shared abstract base.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V67tPYdvh1qCkjEBhJGZUR
2026-06-19 16:01:42 +00:00
hodlbod 5e142e4db4 Refine domain classes: behavior tags, extra-tag passthrough, cleanups
tests / tests (push) Failing after 5m10s
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
hodlbod 99f5233e05 Add domain object classes for nostr event types
tests / tests (push) Failing after 5m6s
Build out @welshman/domain on top of the DomainObject/EncryptableList base
patterns, porting domain-object use cases from @welshman/util and flotilla
that weren't yet represented.

New classes:
- Relay lists: RelayList (NIP-65 read/write markers), Blocked/Search/Messaging
  relay lists, RelaySet (NIP-51 30002 named set)
- Server lists: Blossom, FileServer
- NIP-51 lists: Follow, Pin, Bookmark, Community, Channel, Room, Feed, Topic,
  Emoji
- Zaps: ZapRequest, ZapReceipt, ZapGoal
- NIP-89 handlers: Handler, HandlerRecommendation
- Rooms/groups (NIP-29): RoomMeta, RoomAdmins, RoomMembers, RoomMembershipOp,
  Room create/delete/join/leave, RoomCreatePermission, RelayMembers,
  RelayMembershipOp, Relay join/leave/invite
- Content: Poll, PollResponse, Thread, Comment, Classified, CalendarEvent,
  Report, Feed, Settings

Also fix unfinished accessors in Profile, method-call bugs in MuteList, and
correct RelayList.set{Read,Write}Relays to preserve a relay's complementary
read/write capability instead of dropping modeless entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V67tPYdvh1qCkjEBhJGZUR
2026-06-18 21:16:27 +00:00
Jon Staab 925f540640 Clean up domain a bit
tests / tests (push) Failing after 5m5s
2026-06-18 12:49:13 -07:00
Jon Staab 0a08057786 Remove serialization from domain 2026-06-18 12:33:15 -07:00
hodlbod fe5c11b00f rename client, update docs/skills
tests / tests (push) Failing after 5m4s
2026-06-18 19:31:14 +00:00
Jon Staab dfeb7a747b Simplify client plugin interfaces
tests / tests (push) Failing after 5m11s
2026-06-18 11:48:14 -07:00
Jon Staab eb451d795b Add domain package 2026-06-18 11:41:21 -07:00
Jon Staab 393c95e107 Clean up projections 2026-06-18 11:40:39 -07:00
Jon Staab 772895e3ab Tweak relay lists 2026-06-18 11:15:02 -07:00
Jon Staab fafa3b172e Move plugins to a plugin directory 2026-06-18 10:31:48 -07:00
Jon Staab 72ab746254 Add projection utility and type
tests / tests (push) Failing after 5m56s
2026-06-18 10:15:28 -07:00
Jon Staab aae201414d Clean up store semantics 2026-06-18 08:25:23 -07:00
Jon Staab f5124a6c4e Clean up wot 2026-06-17 14:56:39 -07:00
Jon Staab 28219eb64f Small fixes, rework zaps 2026-06-17 10:36:00 -07:00
Jon Staab bc728c680e Rework thunks 2026-06-16 17:07:20 -07:00
Jon Staab abb9f20747 Split up commands and add them to domain modules 2026-06-16 16:34:43 -07:00
Jon Staab 163d2dc355 Tweak outbox loader 2026-06-16 15:00:18 -07:00
Jon Staab 9094d30b89 Add socket policy for authenticating unless blocked 2026-06-16 14:44:33 -07:00
Jon Staab f8130da2bb Rework sessions 2026-06-16 14:07:15 -07:00
Jon Staab 2e12010e26 rework client auth 2026-06-16 13:06:29 -07:00
Jon Staab 87d8a0832d remove net global state 2026-06-16 12:31:46 -07:00
Jon Staab 34065a18cf Remove router singleton 2026-06-16 11:08:46 -07:00
Jon Staab 96b0116c9b Auto register client plugins 2026-06-16 10:32:59 -07:00
Jon Staab ea9cc0bf26 AI refactor 2026-06-16 09:22:26 -07:00
Jon Staab 28339976b9 Add more stuff to client 2026-06-15 18:59:29 -07:00
Jon Staab e0e9ad5834 Add client package 2026-06-15 18:59:28 -07:00
Jon Staab f2a54cee49 Stop normalizing relay urls when just passing them around 2026-06-03 11:01:25 -07:00
Jon Staab e0d48a9f1f Bump version 2026-05-28 11:57:52 -07:00
Jon Staab 76f65e1815 Fix some bugs with AI 2026-05-28 11:57:16 -07:00
Jon Staab 3b2f2b14e4 Fix some net bugs 2026-05-28 11:30:54 -07:00
Jon Staab 4137f35cee Bump version 2026-05-11 09:16:05 -07:00
Jon Staab 0077073bb8 Await switch relays in the correct places to ensure clean switch and avoid interfering with nostrconnect error handling logic 2026-05-11 09:14:16 -07:00
Jon Staab a126907338 Bump version 2026-05-06 13:22:51 -07:00
Jon Staab 8ccd499955 Add email to content parser 2026-05-06 13:15:08 -07:00
Jon Staab c6847fa7c9 Unapply socket policies on cleanup 2026-05-05 09:35:11 -07:00
Jon Staab 2020276bf6 Limit tracker changes on deriveEventsByIdForUrl to the given url 2026-04-16 14:40:25 -07:00
Jon Staab eb4eae748f Fix css import and timestamp formatting 2026-04-16 11:12:58 -07:00
Jon Staab 00ee93674f Fix formatTimestampRelative for future timestamps 2026-04-16 11:12:58 -07:00
Jon Staab cf14af06e7 Bump version 2026-04-16 11:10:43 -07:00
Jon Staab eaac5c0011 Add poll kinds 2026-04-16 11:09:28 -07:00
Jon Staab 5f745359e1 Revert changes to poll 2026-04-02 06:55:59 -07:00
Jon Staab a3da60b898 Bump version 2026-04-01 11:33:47 -07:00
Jon Staab 17f169e502 Fix race condition in switchRelays 2026-04-01 11:31:26 -07:00
Jon Staab 5c6a211712 Fix isRelayUrl 2026-04-01 10:44:25 -07:00
Jon Staab 4b4878f5cc Bump version 2026-03-30 11:39:03 -07:00
Jon Staab dafbd17638 Add pow support to thunks 2026-03-30 11:18:14 -07:00
Jon Staab a21448c0df Make sure deletes are by the same author 2026-03-23 10:03:52 -07:00