@hraness/message-like-me 0.8.11 → 0.8.12

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.12 (2026-09-21)
4
+
5
+ - Bind legacy installation to the exact public `@hraness/message-like-me@0.8.12` npm package, with the same reviewed bytes mirrored in the immutable GitHub Release. This does not install the Textbutler menu companion or enable automatic replies.
6
+ - Add the native TextButler desktop app with scoped guided setup, a menu bar companion, and per-contact review-first controls. New installations start paused and automatic replies stay off per contact.
7
+ - Connect subscription replies through qualified XCB applications: AI suggestions run against an explicitly admitted native Claude Code or Codex subscription account with exact executable, account, and model checks instead of an API key.
8
+ - Add the agent messaging JSON CLI for agents to read and summarize one selected conversation, prepare text or attachment drafts, and send only an explicitly authorized reviewed message.
9
+ - Restore native iMessage discovery and history through the reviewed Ghostget connector, including literal modern coordinates, and provision the pinned private transport during setup so a reviewed connector upgrade cannot leave a stale helper.
10
+ - Refresh the informational site's identity and keep it informational only; it receives no messages or contact data.
11
+
3
12
  ## 0.8.11 (2026-09-16)
4
13
 
5
14
  - Bind legacy installation to the exact public `@hraness/message-like-me@0.8.11` npm package, with the same reviewed bytes mirrored in the immutable GitHub Release. This does not install the Textbutler menu companion or enable automatic replies.
package/README.md CHANGED
@@ -2,54 +2,68 @@
2
2
 
3
3
  [![skills.sh](https://skills.sh/b/hraness/message-like-me)](https://skills.sh/hraness/message-like-me)
4
4
 
5
- Textbutler is a personal message butler for macOS, powered by the coding agent
6
- you choose. Activate a few contacts, give each relationship a private folder of
7
- context, and let a clearly identified assistant help when it is useful.
8
-
9
- The new product lives at [textbutler.app](https://textbutler.app). Its default
10
- response looks like `🤖{ hello this is my response }`. Each contact can choose
11
- the three symbols, a keyword, and smart or keyword-only response mode.
12
-
13
- **Development status:** the source includes the macOS daemon lifecycle,
14
- owner-selected Ghostget conversation enrollment, optional history
15
- initialization, private memory, executable hooks, reply policy and send journal.
16
- The supported local surface is the `textbutler` CLI plus its native menu-bar
17
- companion. It runs from a prebuilt binary and does not require an app bundle,
18
- signing, notarization, or a download manager. Agentrouter includes a
19
- restricted Claude Agent SDK adapter and shared account custody. Live automated
20
- replies remain unavailable until Ghostget's durable events and scoped
21
- automation grants, and the provider's contact-only execution, are qualified.
22
- Codex execution and native rich actions are also unavailable. The website is
23
- informational; it has no connection to private messages or contact folders.
24
-
25
- The menu-bar companion uses the shared, unsigned desktop-foundation runner. The
26
- `textbutler menubar` commands download and verify a pinned release binary on
27
- first start; nothing compiles source or opens a windowed application.
28
-
29
- Start with the [architecture and capability status](docs/textbutler/architecture.md),
30
- [Textbutler runtime](packages/textbutler/README.md),
31
- [Agentrouter](packages/agentrouter/README.md),
32
- [transport adapter](packages/transport/README.md), or the
33
- [menu companion adapter](packages/textbutler/src/menubar.ts).
5
+ Textbutler is a local message assistant for macOS. Its guided terminal and menu
6
+ bar help you connect selected iMessage, WhatsApp and Beeper conversations, see
7
+ what needs an answer, and review replies before sending them.
8
+
9
+ **Current status: source pilot.** Messaging setup, conversation selection,
10
+ private contact memory, inbox review and replies you write yourself are
11
+ implemented. AI replies require a verified Textbutler bundle with reviewed
12
+ composition admission and connect to a separately installed
13
+ [xcb](https://github.com/hraness/xcb) native runtime with an explicit subscription
14
+ account and model. Textbutler is an MIT-licensed reference application for xcb's
15
+ zero-tool generation API; xcb keeps provider credentials and custody. Account
16
+ setup, current runtime admission and live verification on your chosen messaging
17
+ account and recipient are required before relying on automatic replies. See the
18
+ [subscription guide](docs/textbutler/native-subscription.md).
19
+
20
+ Start with the [guided setup](docs/textbutler/getting-started.md) and
21
+ [messaging app support](docs/textbutler/messaging-apps.md). Beeper can connect
22
+ apps such as Signal, Telegram and Instagram through Ghostget's current text
23
+ automation adapter. Its linked apps and account permissions determine what is
24
+ available. The [architecture](docs/textbutler/architecture.md) records the
25
+ runtime boundaries and remaining qualification work.
26
+
27
+ Agents can use the [JSON CLI](docs/textbutler/agent-cli.md) to read and summarize
28
+ one conversation, prepare text or media drafts, and send an explicitly
29
+ authorized message. Each connection reports its available actions.
30
+
31
+ ## Open the guided terminal
32
+
33
+ From a Textbutler checkout on your Mac, with Bun 1.3.14:
34
34
 
35
35
  ```sh
36
36
  bun install --frozen-lockfile --ignore-scripts
37
- bun run check:textbutler
37
+ bun run textbutler tui
38
38
  ```
39
39
 
40
- The source is MIT licensed. New packages remain unpublished while their
41
- contracts are developed. The menu-bar CLI and daemon are the only supported
42
- Textbutler runtime surfaces. Message Like Me history readers and message-bundle
43
- contracts are retained below only as compatibility documentation for existing
44
- consumers; they are not Textbutler runtime components.
40
+ Choose **Setup & readiness**, then **Connect messaging apps**. Textbutler uses
41
+ an existing Ghostget installation for messaging sign-in and permissions. The
42
+ guide explains how to select its executable and accounts, start the background
43
+ service, and add one conversation. New installations start paused and new
44
+ contacts have automatic replies off. Setup and conversation selection never
45
+ send a message.
46
+
47
+ For AI replies, build and install with `bun run textbutler:install`, then run
48
+ `~/.local/bin/textbutler`. The builder requires the reviewed composition receipt
49
+ to match current source bytes and both contact capability profiles. A source
50
+ daemon has no embedded composition admission and cannot enable subscription
51
+ inference. Source commands remain useful for setup and manual reply controls.
52
+
53
+ Textbutler's source is MIT licensed and its new packages remain unpublished.
54
+ The published Message Like Me package documented below installs the legacy
55
+ history tools, not Textbutler. The website at
56
+ [textbutler.app](https://textbutler.app) is informational and receives no private
57
+ messages or contact folders.
45
58
 
46
59
  ## Run the Textbutler menu companion
47
60
 
48
- Start the companion in the background; it stays running until `menubar stop` or
49
- its menu-bar **Quit** action:
61
+ The native companion downloads and verifies a pinned prebuilt
62
+ desktop-foundation runner on first start. No local Rust build is needed. Start
63
+ it from the terminal's **Menu bar companion** action or run:
50
64
 
51
65
  ```sh
52
- bun run textbutler menubar
66
+ bun run textbutler menubar start
53
67
  bun run textbutler menubar status
54
68
  bun run textbutler menubar stop
55
69
  ```
@@ -64,9 +78,51 @@ bun run textbutler menubar uninstall
64
78
 
65
79
  `menubar doctor` reports the runner artifact, platform capability, and any
66
80
  operating-system approval step needed on an unsigned binary. The companion
67
- shows daemon state, contact and account readiness, capabilities, and recent
68
- activity. It controls global pause and opens the informational Textbutler
69
- website. It does not provide contact enrollment or account setup.
81
+ offers pause, connection checks, conversation selection, contact and agent
82
+ settings, inbox previews and recent activity. Use the terminal for complete
83
+ draft review and sending. Menu startup is separate from daemon startup;
84
+ quitting the menu leaves an installed background service running. Use
85
+ `daemon install` or `daemon uninstall` to manage that service. Uninstall retains
86
+ your settings and contact memory.
87
+
88
+ ## Answer your own messages
89
+
90
+ In the terminal, choose **Inbox & replies**, select a conversation, then choose
91
+ **Type a reply**. Review the recipient and complete text before typing `send`.
92
+ This path needs a ready messaging connection but no AI account. Cancelling the
93
+ review sends nothing.
94
+
95
+ After the connected AI account passes its readiness check, suggestions use a separate
96
+ review step:
97
+
98
+ ```sh
99
+ bun run textbutler inbox
100
+ bun run textbutler replies suggest CONTACT
101
+ bun run textbutler replies show DRAFT
102
+ bun run textbutler replies send DRAFT DIGEST
103
+ bun run textbutler replies discard DRAFT
104
+ ```
105
+
106
+ `CONTACT` is the exact contact ID or a unique name match. Use the complete draft
107
+ and digest returned by `replies show`; previews alone cannot send. Suggestions
108
+ expire after fifteen minutes. Changed contact settings, conversation context
109
+ or attachment bytes require a fresh review. The CLI also supports an immediate
110
+ explicit reply with `bun run textbutler replies send CONTACT TEXT...`.
111
+
112
+ `submitted` means the messaging provider accepted the action, not that the
113
+ recipient received or read it. A pending operation prints a job ID: inspect it
114
+ with `bun run textbutler jobs show JOB_ID`. Do not repeat a send with an unknown
115
+ outcome. Uncertain sends remain blocked until reconciled.
116
+
117
+ Every text reply is wrapped in the contact's three disclosure symbols, rendered
118
+ `🤖{ … }` by default. Each field may be cleared individually; clearing all three
119
+ sends plain text. The review shows the actual outgoing text. The send journal
120
+ retains provider acceptance IDs when available; see the messaging guide for
121
+ connection-specific attribution and delivery limits.
122
+
123
+ Automatic replies remain a separate choice: they require a qualified agent,
124
+ a ready messaging connection, explicit contact activation and global resume.
125
+ Keep them paused until those requirements and the relevant live checks pass.
70
126
 
71
127
  ## Legacy Message Like Me history tools
72
128
 
@@ -111,7 +167,7 @@ Message Like Me requires Bun 1.3.14 or newer. Install the exact public npm
111
167
  package, then install both bundled Agent Skills:
112
168
 
113
169
  ```sh
114
- bun add --global @hraness/message-like-me@0.8.11
170
+ bun add --global @hraness/message-like-me@0.8.12
115
171
  messagelikeme skill install
116
172
  ```
117
173
 
@@ -851,7 +907,7 @@ profile to a fixture.
851
907
  Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a change.
852
908
 
853
909
  The canonical repository is
854
- [`hraness/message-like-me`](https://github.com/hraness/message-like-me).
910
+ [`hraness/textbutler`](https://github.com/hraness/textbutler).
855
911
  The informational project page is
856
912
  [`messagelikeme.com`](https://messagelikeme.com). The CLI does not connect to
857
913
  the site, and the site never receives message or contact data.