Skip to content

Releases: prime-radiant-inc/slackline

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 23:53
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

Choose a tag to compare

@github-actions github-actions released this 18 Jun 02:13

Added

  • slackline auth whoami prints the authenticated bot identity.
  • slackline permalink prints the bare Slack permalink for a message.
  • slackline send, ask, react, channels, and download now accept --format json where structured output is useful.

Changed

  • Breaking: runtime commands now default to compact, line-oriented text for agent-facing output instead of JSON envelopes. send prints <channel_id> <ts>, ask replies print the same <ts> <user> <text> shape as read, and react add/remove are silent on success.
  • Breaking: error output is now error: <code>: <detail> on stderr. Exit codes remain the machine contract.
  • Breaking: channels --json is replaced by channels --format json.
  • slackline read and listen now default to compact text, with JSONL still available through --format json.
  • slackline auth status now validates the Socket Mode app token instead of only reporting that it is configured.

Fixed

  • slackline listen now returns a non-zero error with detail when Socket Mode disconnects before readiness.
  • slackline listen --all-messages --type ... no longer emits Slack message_replied parent updates as ordinary channel_message events.

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 09 Jun 22:40

Fixed

  • slackline download now enforces the configured size cap on the actual downloaded byte stream, not just Slack files.info metadata.
  • Release builds now use Go 1.25.11, clearing reachable Go standard-library vulnerabilities reported against Go 1.25.10.

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 02 Jun 05:50
Release v0.3.3

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 02 Jun 05:46
Release v0.3.2

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 21:44

Added

  • listen --type <types> — emit only the named event types (mention, dm, thread_reply, channel_message, reaction); no more jq-filtering the stream.
  • listen emits a ready status on stderr once subscribed (events will now flow), distinct from connected.
  • listen --help documents the event JSON schema.

Changed (breaking)

  • Reaction events reaction_added/reaction_removed unified into one reaction event with an action field (added/removed).
  • ask exits 5 on timeout (was 1) so callers can distinguish timeout from API/auth/config errors.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 01 Jun 17:34

Added

  • using-slack skill documenting the CLI for agents, and .claude-plugin/marketplace.json so the plugin is installable via /plugin marketplace add prime-radiant-inc/slackline.

Fixed

  • slackline read --thread now returns the newest replies instead of the oldest (PRI-1879). conversations.replies pages oldest-first and the fetch loop stopped after collecting --limit messages, so on any thread with more replies than --limit the newest reply (the true tail) was silently dropped — breaking thread polling. Thread reads now page to the end and keep the newest --limit messages, matching channel reads.

v0.2.2

Choose a tag to compare

@obra obra released this 18 May 23:30

Changed

  • Hoisted repeated string literals to named constants across the codebase. Wire-format strings (event types in listen, manifest scopes and bot events in provision, error codes in errs) 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

Choose a tag to compare

@obra obra released this 18 May 22:36

Fixed

  • slackline listen now emits thread_reply events 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 --threads or --all-messages was set. Bot-parent replies are the highest-signal slice of channel traffic and never warranted being gated.

Changed

  • --threads flag 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

Choose a tag to compare

@obra obra released this 17 May 21:43

First feature release since v0.1.0. Adds reactions, file handling, threaded reads, scriptable provisioning, and a Claude Code plugin manifest. Migrates slackline createslackline provision.

Added

  • slackline provision NAME and slackline 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_reaction treated 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 batched files.getUploadURLExternal + files.completeUploadExternal flow.
  • slackline listen flags: --threads (emit thread_reply events), --all-messages (also emit channel_message), --include-bot-self (no longer filter own events).
  • files array 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 init via SLACKLINE_BOT_TOKEN / SLACKLINE_APP_TOKEN env vars.
  • Shipped as a Claude Code plugin (.claude-plugin/) with the slackline-provision-bot skill.

Changed

  • slackline create removed — returns a migration error pointing at slackline provision. Update any scripts that used --init / --name.
  • Event names: the reaction event is now reaction_added (was reaction); 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 via apps.manifest.export, surfaced as effective_name in JSON, and a warning is written to stderr when it diverges from the requested name.
  • PRI-1619: oauth_authorize_url emitted by provision NAME now includes team= and install_redirect=install-on-team, so it works standalone instead of bouncing with "Something went wrong when authorizing".
  • slackline-provision-bot skill now drives the install from $INSTALL_URL (admin /install-on-team page) 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.