Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion third_party/x/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "x",
"displayName": "X",
"version": "2.6.1",
"version": "2.6.2",
"minClientVersions": {
"cursor": "3.13.0"
},
Expand Down
4 changes: 4 additions & 0 deletions third_party/x/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

All notable changes to this plugin will be documented here.

## 2.6.2 — Focus X Chat summaries on the message

- When showing or summarizing messages, focus on the content. Don't add encryption-status commentary unprompted, and don't describe plain messages as odd or a problem: threads with no conversation key normally carry plain DMs, including recent ones. If the user asks about encryption, verification, or security, answer plainly from `status`. Mention `unverified` briefly when it's relevant, e.g. before acting on that message.

## 2.6.1 — Ask about remembering the X Chat key separately

- When a Chat PIN is needed, the remember question is a separate Yes/No question widget sent alongside the PIN request. `--remember-key` is added only on a clear Yes. No does not save the key. The agent does not default, and it does not put the question in the PIN card.
Expand Down
4 changes: 3 additions & 1 deletion third_party/x/skills/x-api-mcp-guide/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ X Chat is free for this plugin. X Chat reads (`GET /2/chat/*`) and public key lo

MCP holds OAuth and raw events. Local `xchat_lite.py` unlocks Juicebox, decrypts, and encrypts. Never decrypt on the server. Never paste PIN, juicebox tokens, private keys, or raw key blobs into chat.

Threads can include older unencrypted messages. `decrypt` accepts every event. Each message has a `status` of `verified`, `unencrypted`, or `unverified`, and an unverified message still includes its text when it could be decrypted. Replies are always encrypted — if the peer has no Chat public keys, stop and tell the user. Posting tweets is still not supported.
Threads can contain messages sent without end-to-end encryption, including recent ones: a thread with no conversation key still carries plain DMs. `decrypt` accepts every event. Each message has a `status` of `verified`, `unencrypted`, or `unverified`, and an unverified message still includes its text when it could be decrypted. Replies are always encrypted — if the peer has no Chat public keys, stop and tell the user. Posting tweets is still not supported.

**When they ask about Chat, XChat, inbox, DMs, messages, Chat PIN, juicebox, or xchat_lite:** this section is the playbook. Do not search for another skill. Do not wait for them to name the helper repo.

Expand Down Expand Up @@ -501,6 +501,8 @@ To find the thread with someone the owner names, resolve the username → id (`g

`decrypt` returns one row per event. A message's `text` is never empty: media show as `[photo]`, `[video]` or `[file: name]` before any caption, reactions as `reacted ❤️ to <id>`, edits as `edited <id>: <new text>`, calls as `[call started]` or `[call ended, …]`, and Grok replies as their text. An event that cannot be decoded has placeholder text and an `error`. Each message has a `status`: `verified`, `unencrypted` (sent without end-to-end encryption), or `unverified` (its signature could not be checked). An `unverified` message still has its `text` when decryption succeeded. `unverified_senders` lists senders whose signatures could not be checked.

When showing or summarizing messages, focus on the content. Don't add encryption-status commentary unprompted, and don't describe plain (unencrypted) messages as odd or a problem: threads with no conversation key normally carry plain DMs, including recent ones. If the user asks about encryption, verification, or security, answer plainly and accurately using `status`. Mention `unverified` briefly when it's relevant to what the user is doing, e.g. before acting on that message's content.

An edit row's text is the current text of its target message, so answer from the latest edit.

Never claim you checked all chats unless you read every thread and message request to the end; otherwise say how many you read.
Expand Down
Loading