Repository navigation
v2.7.0
Upgrade notes
- Restart every running server after upgrading. The new
puttool shares the exchange directory withdownloadandsay files=, and older binaries don't know its staging folder. - One new tool,
put. Deny it in your MCP client if you don't want an agent able to write files into the exchange directory.
New
putwrites a new file into the exchange directory, so clients whose file tools can't reach the server's filesystem (Claude Desktop and claude.ai, whose code sandbox is another machine) can attach generated files withsay files=. Call it asput name='chart.png' base64='…'orput name='notes.md' content='…'.- At most 5 MiB per file.
- Never overwrites: a taken name is saved as
name (n).extand the result says so. - It never reads, lists, or deletes files, and takes a bare name, never a path.
- The file is written in full before it takes its name, so a
sayat the same moment never attaches a partial file. - Sending still goes through
say, with every outbound check: the secret scanner reads the file's bytes.
- ADR-012 records why inline file content on
sayand fetching from a URL stay rejected, and the risksputaccepts.
Fixed
- Messages posted by
sayread back as one line. Slack rewrites a rich-text message'stextfield with its newlines flattened, so the reader now renders from the message's blocks: lines, lists, quotes, code blocks, and inline styles survive.>,<, and&are decoded, and dates and group mentions in rich text render. messages target='C…'with a bare channel ID works in every mode, not only withsince=.- Unread DM counts come from Slack's read position instead of a guess. Unread lines are marked ●, every unread up to ten is shown, and a window that is all unread shows
N+. - Mentions:
inbox view='unreads'andview='mentions'agree, and your own "has joined the channel" events are no longer counted as mentions. - Blank previews: a file-only post renders as
[file: name.png], and app messages show their content instead of[no preview available]. messages target=… since=names the conversation, shows readable times, and gives each message a handle to read it in full.authhints a choice asaction="select" value="chrome", the form the tool takes.
What's Changed
- fix: Claude Desktop smoke-test findings (reader, inbox, auth) by @aaronsb in #137
- feat(put): write a file into the exchange directory for sandboxed clients by @aaronsb in #138
Full Changelog: v2.6.0...v2.7.0