Skip to content

List a channel thread's replies with message list --message-id - #91

Open
aberoham wants to merge 3 commits into
osodevops:mainfrom
aberoham:feat/thread-replies
Open

List a channel thread's replies with message list --message-id#91
aberoham wants to merge 3 commits into
osodevops:mainfrom
aberoham:feat/thread-replies

Conversation

@aberoham

@aberoham aberoham commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

message list --team --channel returns thread roots only, so a caller could not tell whether a question had already been answered without knowing every reply id in advance. Passing the root id now lists the replies under it, paged like any other listing.

  • teams message list --team T --channel C --message-id ROOT lists the replies under one channel thread root through GET .../messages/{id}/replies, with $top and --all-pages behaving as they do for the channel listing. --message-id requires --channel and refuses to combine with --chat, where the chat branch would otherwise ignore it.
  • teams message reply --mention USER (repeatable) tags a person in a threaded reply the same way message send --mention from Tag people with a real Teams @mention via message send --mention #78 does, so a name in a reply notifies rather than merely appears. A mention alone is a valid body, as on send.
  • Tests: the replies listing is driven against a mock Graph through the same _at shape the other API tests use, so the URL and the $top paging are checked without a token. Command-line tests cover the help text and the requires and conflicts_with guards.

Verified live against a real channel thread: one call with --all-pages returned all 24 replies with full bodies.

🤖 Generated with Claude Code

https://claude.ai/code/session_018pgqhqb5eVNMPR214KnpD2

aberoham and others added 3 commits September 3, 2026 07:42
`message list --team --channel` returns thread roots only, so a caller
could not tell whether a question had already been answered without
knowing every reply id in advance. Passing the root id now lists the
replies under it, paged like any other listing, and `message reply`
gains `--mention` so a threaded answer can notify the person it names.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0198UCyrh6ePLp9GQ7KmNBbH
The replies listing is driven against a mock Graph through the same
`_at` shape the other API tests use, so the URL and the `$top` paging
are checked without a token. `--message-id` now also refuses to ride
along with `--chat`, where it was silently ignored because the chat
branch never looked at it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018pgqhqb5eVNMPR214KnpD2
@aberoham

aberoham commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up review fixes are in e68438c:

  • Send and reply now share the same message-payload builder, so raw at-tag markup is rejected before resolved mentions are applied.
  • Added regression coverage for the shared validation path and explicit help-json coverage for both new flags.
  • Synchronized README, command reference, examples, and shipped man pages with thread-reply listing and reply mentions.
  • Narrowed the changelog wording and stopped promising an ordering stronger than the Microsoft Graph contract.

Verification:

  • cargo fmt -- --check
  • cargo check --all-targets
  • cargo clippy --all-targets -- -D warnings
  • cargo test --all-targets: 313 passed
  • mandoc lint: no new warnings; one pre-existing line-length style warning remains at teams.1 line 107

@aberoham

aberoham commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

author was claude w/fable-5.1, reviewer was codex w/gpt-5.6-sol xhigh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant