@glyphteck/veyl 0.59.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/api.md CHANGED
@@ -271,11 +271,11 @@ const activeGroup = await veyl.chat.create(['@alice', '@bob'], {
271
271
  });
272
272
 
273
273
  await veyl.chat.addMembers(group.id, ['@carol']);
274
- const expanded = await veyl.chat.get(group.id);
275
274
  await veyl.chat.updateSettings(group.id, {
276
275
  title: 'night builders',
277
- avatarRef: expanded.members[0].chatPK,
278
276
  });
277
+ await veyl.chat.updateAvatar(group.id, preparedWebpBytes);
278
+ await veyl.chat.updateAvatar(group.id, null); // restore the member stack
279
279
  await veyl.chat.kickMember(group.id, memberChatPK);
280
280
 
281
281
  const groupPage = await veyl.chat.readById(group.id, { count: 30 });
@@ -318,7 +318,7 @@ await veyl.chat.deleteChat('@alice', { cleanup: true });
318
318
 
319
319
  All materialized chats are stable logical objects. `notes`, `openDirect`, and `create` without `initialMessage` first return local provisional routes; they consume no KeyPackage and create no remote state or chat-list row until first content is sent. Direct open and first send both resolve the complete encrypted owner history before creating a fresh random direct. Only a membership change rotates a fresh epoch beneath an existing `chatId`; title, picture, retention, reads, reactions, and ordinary messages remain inside the current epoch. Added members do not receive old keys. A chat that becomes a group keeps permanent group lineage and never replaces a later ordinary direct chat.
320
320
 
321
- `avatarRef` selects one current member chat key whose live profile picture represents the chat; `null` restores automatic direct/notes/composite presentation. Arbitrary uploaded group artwork is not part of the launch storage contract. `forever` is reserved protocol state and is not exposed by official clients.
321
+ Group pictures are 512x512 WebP bytes no larger than 256 KiB. `updateAvatar` encrypts them locally, uploads one opaque immutable ciphertext, and distributes only its encrypted capability through signed chat settings. Passing `null` restores the automatic member stack. Raw avatar capabilities are deliberately not accepted by the public SDK. `forever` is reserved protocol state and is not exposed by official clients.
322
322
 
323
323
  `readById` pages current and owner-authorized historical epochs until `count` visible messages are covered or history ends. `markReadIn` writes the latest applicable receipt by stable chat id. Direct `read`/`markRead` are canonical-peer conveniences. Every projected message includes stable chat target and verified actor identity; group actions never need a fake direct peer.
324
324
 
package/package.json CHANGED
@@ -41,5 +41,5 @@
41
41
  "start": "node src/cli.js",
42
42
  "lint": "eslint src --quiet"
43
43
  },
44
- "version": "0.59.0"
44
+ "version": "0.60.0"
45
45
  }