@stacksjs/defaults 0.75.49 → 0.75.51

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: stacks-chat
3
- description: Use when implementing chat messaging in Stacks - sending messages to Slack (webhooks, bot tokens, block kit), Discord (webhooks, bot tokens, embeds), Microsoft Teams (adaptive cards, webhooks), the BaseChatDriver abstraction, retry logic, multi-channel chat routing, or READING a person's conversations from iMessage, Slack and Discord and archiving them there (the inbox drivers). Covers @stacksjs/chat.
3
+ description: Use when implementing chat messaging in Stacks - sending messages to Slack (webhooks, bot tokens, block kit), Discord (webhooks, bot tokens, embeds), Microsoft Teams (adaptive cards, webhooks), the BaseChatDriver abstraction, retry logic, multi-channel chat routing, or READING a person's conversations from iMessage, WhatsApp, Slack and Discord and archiving them there (the inbox drivers). Covers @stacksjs/chat.
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob
@@ -354,6 +354,7 @@ import { inbox } from '@stacksjs/chat'
354
354
 
355
355
  const drivers = [
356
356
  inbox.createInboxDriver('imessage', {}), // chat.db, needs Full Disk Access
357
+ inbox.createInboxDriver('whatsapp', {}), // WhatsApp for Mac's ChatStorage.sqlite, same
357
358
  inbox.createInboxDriver('slack', { token: env.SLACK_USER_TOKEN }), // xoxp user token
358
359
  inbox.createInboxDriver('discord', { token: env.DISCORD_BOT_TOKEN, userId }), // bot token
359
360
  ]
@@ -371,6 +372,7 @@ What archiving does is part of every conversation (`conversation.archive`):
371
372
  | Provider | `mode` | Effect in the real app |
372
373
  |---|---|---|
373
374
  | iMessage | `confirm` | With a `controller`, Messages' own Delete on the row found by name; without one, opens the conversation for the person to delete. Apple has no API, and editing chat.db is ignored or synced everywhere. |
375
+ | WhatsApp | `native` | With a `controller`, WhatsApp's own Archive on the row found by name, reported `removed` only once WhatsApp records it (`ZARCHIVED`); `unarchive` unarchives. Without one, `confirm`: opens the chat (`whatsapp://send?phone=`) for the person, or `unsupported` for a group, which has no link. |
374
376
  | Slack DM / group DM | `native` | `conversations.close`; Slack reopens it when someone writes. `unarchive` reopens. |
375
377
  | Slack public channel | `native` | `conversations.leave`; `unarchive` rejoins. |
376
378
  | Slack private channel | `unsupported` | Untouched: leaving would need a re-invite. |
@@ -385,6 +387,15 @@ controller the driver only opens the conversation in Messages for the person to
385
387
  from Recently Deleted, and `confirmDeletes: true` accepts Messages' alert too.
386
388
  Attic (`~/Code/Apps/attic`, `app/Desktop/messages-control.swift`) is the reference.
387
389
 
390
+ WhatsApp is read from WhatsApp for Mac's `ChatStorage.sqlite` (a Core Data
391
+ store in its group container, so Full Disk Access again), never written. Its
392
+ `controller` is `{ archive(names), unarchive(names) }`, given the chat's name
393
+ and formatted number. Message types map onto the inbox shape: captions come
394
+ from the media item's title, contact cards and locations become text, deleted
395
+ messages are `unsent`, group events and calls are `kind: 'event'`. Reactions and
396
+ quoted replies sit in protobuf blobs the driver does not decode, so they are
397
+ absent rather than guessed. Status updates and broadcast lists are not listed.
398
+
388
399
  A conversation deleted in Messages sits in Recently Deleted for 30 days:
389
400
  `conversation.visible` is false and `conversation.deleted` counts what is still
390
401
  recoverable. `messages(id, { includeDeleted: true })` reads those messages, so an
@@ -2,7 +2,7 @@
2
2
  "publisher": "Stacks",
3
3
  "name": "vscode-stacks",
4
4
  "displayName": "Stacks",
5
- "version": "0.75.49",
5
+ "version": "0.75.51",
6
6
  "description": "Stacks, built into VS Code: stx templates, pickier linting and formatting, encrypted env files, the dev server preview and every buddy command. No other extensions required.",
7
7
  "license": "MIT",
8
8
  "funding": "https://github.com/sponsors/chrisbbreuer",
@@ -423,7 +423,7 @@
423
423
  ]
424
424
  },
425
425
  "devDependencies": {
426
- "@stacksjs/stx-vscode": "^0.2.358",
426
+ "@stacksjs/stx-vscode": "^0.2.359",
427
427
  "@types/vscode": "~1.109.0",
428
428
  "@vscode/vsce": "^4.0.0"
429
429
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/defaults",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.49",
5
+ "version": "0.75.51",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/stacksjs/stacks.git",
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "@iconify-json/f7": "^1.2.2",
57
57
  "@iconify-json/hugeicons": "^1.2.35",
58
- "@stacksjs/mobile": "^0.75.49",
58
+ "@stacksjs/mobile": "^0.75.51",
59
59
  "@stacksjs/sanitizer": "^0.2.348",
60
60
  "ts-qr-codes": "^0.1.8"
61
61
  }