Skip to content

v2.2.0

Choose a tag to compare

@fprochazka fprochazka released this 23 Apr 08:23
· 16 commits to master since this release
d8033c0

First major release since v1.0.0. Headline change is a full rework of slack messages list pagination around four direction/cursor flags, with reliable cursor-based incremental reads for AI agents. The Claude Code plugin is also now bundled in this repo instead of living in a separate one.

Upgrading instructions

Reinstall the CLI to pick up the new flags (editable mode means future updates are just git pull):

uv tool install -e .

If you had the Claude Code plugin installed from the old fprochazka/claude-code-plugins marketplace, uninstall it and install the bundled one:

claude plugin uninstall slackcli@fprochazka-claude-code-plugins
claude plugin marketplace add fprochazka/slackcli
claude plugin install slackcli@fprochazka-slackcli

If you're upgrading from a previous install of the bundled plugin, just refresh it:

claude plugin marketplace update fprochazka-slackcli
claude plugin update slackcli@fprochazka-slackcli

The bundled skill is updated to teach Claude the new flag set and cursor idioms.

Breaking changes

  • slack messages list no longer accepts -n / --limit. Use --head N, --tail N, --after TS, or --before TS instead.
  • Minimum Python raised to 3.11. Python 3.10 enters security-only in April 2026 and reaches EOL in October 2026.

New pagination model

Four direction/cursor flags replace --limit:

Flag Meaning
--head N first N in window, oldest → newest
--tail N last N in window (default when no flag, default count 25)
--after TS next page after cursor TS (default 25, override with --head N)
--before TS previous page before cursor TS (default 25, override with --tail N)
  • Composable: --after TS --head 10, --before TS --tail 10.
  • Mutually exclusive pairings rejected with actionable error messages.
  • Composes with window bounds: --since, --until, --today, --last-7d, --last-30d.
  • Display order is always ascending — oldest on top, newest on bottom, matching Slack's UI — regardless of which direction flag you used.

Has-more reporting

Every messages list response reports has-more state so agents can walk channels or threads incrementally without losing messages or refetching:

  • Text footer (shown only when something is beyond the returned slice):
    • Channel: [older: --before 1234.5678 | newer: --after 2345.6789]
    • Thread: [earlier replies: --before ... | later replies: --after ...]
  • JSON envelope: has_more_before, has_more_after, next_before_ts, next_after_ts. Cursor fields are null when the matching has_more_* is false — no dangling cursors.

Thread view

  • Parent counts toward the requested count.
  • --head N always renders the real parent plus first N-1 replies.
  • --tail N on an overflowing thread renders a placeholder line ([thread root message omitted — use --head to see it]) in place of the parent, followed by the last N replies.
  • Forward-paging a thread with --after TS --head N is supported; later replies: footer advertises continuation cursors correctly.

Claude Code plugin

The plugin and its marketplace now live in this repo instead of in fprochazka/claude-code-plugins. See the Upgrading instructions at the top for install and migration commands.

Infrastructure

  • GitHub Actions CI runs ruff lint + format checks and pytest on Python 3.11, 3.12, 3.13, 3.14 on every push and PR.
  • Releasing workflow documented in README.md — manifests must be version-bumped in lockstep, tag only after CI is green.

Fixes

  • Fixed a latent thread listing bug where the most recent reply was being shown in place of the parent (an unconditional reversed() in message conversion).
  • conversations.history pagination no longer assumes results are always newest-first when oldest is set — results are sorted defensively by timestamp.
  • has_more_* on the cursor-opposite side now correctly reports true when the caller provided a cursor (e.g. paging backward via --before now advertises the --after cursor to turn around).
  • Thread --tail no longer counts the placeholder row in the "Found N" header.
  • Pagination footer shortened and relabelled; --help Examples render on separate lines.

Known edge cases

  • Thread forward-paging with --after <reply_ts> --head N may include the thread parent in the returned slice even when the cursor is strictly after the parent. Non-blocking; tracked for a patch release.