Releases: prime-radiant-inc/slackline
Releases · prime-radiant-inc/slackline
Release list
v0.5.0
chore: prepare v0.5.0 release Finalize the changelog for the mention-linkification and user-resolution release (#1) and bump the Claude plugin manifest version to 0.5.0. This release adds the `users` command, linkifies @handle mentions in `send` and `ask`, and resolves user IDs to handles in `read` and `ask` reply output (all opt-out-able). Verification before commit: jq . .claude-plugin/plugin.json; git diff --check; make test; make vet; golangci-lint run ./... all exited 0. Claude-Session: https://claude.ai/code/session_019kunpc1tsdxQPRrdsve1th
v0.4.0
Added
slackline auth whoamiprints the authenticated bot identity.slackline permalinkprints the bare Slack permalink for a message.slackline send,ask,react,channels, anddownloadnow accept--format jsonwhere structured output is useful.
Changed
- Breaking: runtime commands now default to compact, line-oriented text for agent-facing output instead of JSON envelopes.
sendprints<channel_id> <ts>,askreplies print the same<ts> <user> <text>shape asread, andreact add/removeare silent on success. - Breaking: error output is now
error: <code>: <detail>on stderr. Exit codes remain the machine contract. - Breaking:
channels --jsonis replaced bychannels --format json. slackline readandlistennow default to compact text, with JSONL still available through--format json.slackline auth statusnow validates the Socket Mode app token instead of only reporting that it is configured.
Fixed
slackline listennow returns a non-zero error with detail when Socket Mode disconnects before readiness.slackline listen --all-messages --type ...no longer emits Slackmessage_repliedparent updates as ordinarychannel_messageevents.
v0.3.4
Fixed
slackline downloadnow enforces the configured size cap on the actual downloaded byte stream, not just Slackfiles.infometadata.- Release builds now use Go 1.25.11, clearing reachable Go standard-library vulnerabilities reported against Go 1.25.10.
v0.3.3
v0.3.2
v0.3.0
Added
listen --type <types>— emit only the named event types (mention, dm, thread_reply, channel_message, reaction); no more jq-filtering the stream.listenemits areadystatus on stderr once subscribed (events will now flow), distinct fromconnected.listen --helpdocuments the event JSON schema.
Changed (breaking)
- Reaction events
reaction_added/reaction_removedunified into onereactionevent with anactionfield (added/removed). askexits5on timeout (was1) so callers can distinguish timeout from API/auth/config errors.
v0.2.3
Added
using-slackskill documenting the CLI for agents, and.claude-plugin/marketplace.jsonso the plugin is installable via/plugin marketplace add prime-radiant-inc/slackline.
Fixed
slackline read --threadnow returns the newest replies instead of the oldest (PRI-1879).conversations.repliespages oldest-first and the fetch loop stopped after collecting--limitmessages, so on any thread with more replies than--limitthe newest reply (the true tail) was silently dropped — breaking thread polling. Thread reads now page to the end and keep the newest--limitmessages, matching channel reads.
v0.2.2
Changed
- Hoisted repeated string literals to named constants across the codebase. Wire-format strings (event types in
listen, manifest scopes and bot events inprovision, error codes inerrs) now have a single source of truth, and test fixtures are file-local constants. No behavior change — emitted strings are byte-for-byte identical.
v0.2.1
Fixed
slackline listennow emitsthread_replyevents by default whenever someone replies in a thread the bot started, with no flag required. Previously, an agent that posted a message and watched for replies would silently miss any reply posted via Slack's "Reply in thread" UI unless--threadsor--all-messageswas set. Bot-parent replies are the highest-signal slice of channel traffic and never warranted being gated.
Changed
--threadsflag is now a no-op (kept for backward compatibility). The bot-parent reply case it previously gated is on unconditionally; the broader "any thread the bot has touched" case it documented was never implemented.- Plugin manifest (
.claude-plugin/plugin.json) bumped to 0.2.1 to match git tag history.
v0.2.0
First feature release since v0.1.0. Adds reactions, file handling, threaded reads, scriptable provisioning, and a Claude Code plugin manifest. Migrates slackline create → slackline provision.
Added
slackline provision NAMEandslackline provision bootstrap— non-interactive app creation via Slack manifest API with rotating config tokens.slackline react add/slackline react remove— idempotent reaction management (already_reacted/no_reactiontreated as success).slackline download --file ID --out PATH|-— authenticated file download with atomic write and size cap.slackline send --attach PATH(repeatable) — multi-file upload via the batchedfiles.getUploadURLExternal+files.completeUploadExternalflow.slackline listenflags:--threads(emitthread_replyevents),--all-messages(also emitchannel_message),--include-bot-self(no longer filter own events).filesarray on message/mention/thread/channel events.- New event types:
reaction_added,reaction_removed,thread_reply,channel_message. - Manifest scopes:
reactions:read,reactions:write,files:read,files:write. - Non-interactive
slackline initviaSLACKLINE_BOT_TOKEN/SLACKLINE_APP_TOKENenv vars. - Shipped as a Claude Code plugin (
.claude-plugin/) with theslackline-provision-botskill.
Changed
slackline createremoved — returns a migration error pointing atslackline provision. Update any scripts that used--init/--name.- Event names: the reaction event is now
reaction_added(wasreaction); the JSON shape stayed compatible.
Fixed
- PRI-1618: detect when Slack silently mutates app names during
provision(e.g. strips dashes). The canonical name is read back viaapps.manifest.export, surfaced aseffective_namein JSON, and a warning is written to stderr when it diverges from the requested name. - PRI-1619:
oauth_authorize_urlemitted byprovision NAMEnow includesteam=andinstall_redirect=install-on-team, so it works standalone instead of bouncing with "Something went wrong when authorizing". slackline-provision-botskill now drives the install from$INSTALL_URL(admin/install-on-teampage) for resilience.
Install
curl -fsSL https://raw.githubusercontent.com/prime-radiant-inc/slackline/v0.2.0/install.sh | bash
Binaries for darwin/arm64 and linux/amd64 are attached below once the release workflow finishes.