Conversation
Wraps Slack's `conversations.mark` API. Accepts message URLs, channel names/IDs, or DM channel IDs. Works with channels, DMs, and group DMs.
|
Here is the review from Codex:
Once addressed, I will merge it. |
URL targets are authoritative for workspace — allowing --workspace to override creates a footgun where a permalink from workspace A could be executed against workspace B. This aligns channel mark with the existing message command behavior. Adds tests for URL workspace rejection and --ts validation.
|
Thank you, updated! |
A URL is a fully-specified target (workspace + channel + ts), so allowing --ts to override the timestamp is inconsistent with the existing --workspace rejection. If you want a different ts, use the #channel --ts form instead. Adds test for URL --ts rejection and updates commands.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
A URL provides channel + workspace + ts, but --ts override is useful (e.g. marking to just before a message to make it appear unread). This differs from --workspace which remains rejected since overriding the workspace is a genuine footgun. Adds test for --ts override with URL targets and updates commands.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AmethystLiang
left a comment
There was a problem hiding this comment.
Looks good! Clean implementation that follows existing patterns well. Added a commit to allow --ts override with URL targets (useful for the mark-as-unread pattern) while keeping --workspace rejection.
Summary
channel marksubcommand wrapping Slack'sconversations.markAPIUsage
Test plan
bun run typecheckpassesbun run lintpasses (0 warnings, 0 errors)bun run testpasses (125 tests)bun run format:checkpasses