fix(comment-list): expose immutable author evidence - #268
Merged
schpetbot merged 2 commits intoAug 31, 2026
Merged
Conversation
schpetbot
pushed a commit
that referenced
this pull request
Aug 31, 2026
#268 adds `user.id` and `editedAt` to `issue comment list --json`, which is the right shape -- the raw connection is passed straight through, so GraphQL field names and nesting are preserved. This fills in the cases it stops short of. `externalUser` did not get the same treatment as `user`, but it has the same problem and the schema is explicit about why: ExternalUser.displayName "can match the display name of an actual user". So a consumer could disambiguate two workspace members from each other and still be unable to tell a member from an external commenter with the same name. It now carries `id` too. Integration-authored comments were the bigger gap. They have `user` and `externalUser` both null, so they arrived in the JSON with no author information at all -- the exact problem #268 sets out to fix, for a whole class of comment it does not reach. Selecting `botActor` gives them `type` (non-null, the reliable key, since ActorBot is not a Node and its `id` is nullable) plus `subType`, `name` and `id`. `userDisplayName` is available but left out: it names a person in an external system and is display-only, so it is not worth the exposure to solve an identity problem the other fields already solve. That also fixes a rendering bug we were one field away from: every GitHub, Slack and workflow comment printed as `@Unknown`, because the query never asked who the bot was. The author fallback was duplicated for root comments and replies; it is now one helper, with botActor checked last so a comment carrying both a user and a bot actor still renders the human, and every existing snapshot stays byte-identical. Finally, `--id` was forwarded to the API unvalidated. The repo already has `isLinearUuid`, and CLAUDE.md asks for an immediate, actionable error when user-supplied input is malformed rather than a raw GraphQL failure, so a non-UUID is now rejected before the request with a message showing the expected shape. The flag stays hidden, with a comment recording why it exists.
schpetbot
pushed a commit
that referenced
this pull request
Aug 31, 2026
#268 adds `user.id` and `editedAt` to `issue comment list --json`, which is the right shape -- the raw connection is passed straight through, so GraphQL field names and nesting are preserved. This fills in the cases it stops short of. `externalUser` did not get the same treatment as `user`, but it has the same problem and the schema is explicit about why: ExternalUser.displayName "can match the display name of an actual user". So a consumer could disambiguate two workspace members from each other and still be unable to tell a member from an external commenter with the same name. It now carries `id` too. Integration-authored comments were the bigger gap. They have `user` and `externalUser` both null, so they arrived in the JSON with no author information at all -- the exact problem #268 sets out to fix, for a whole class of comment it does not reach. Selecting `botActor` gives them `type` (non-null, the reliable key, since ActorBot is not a Node and its `id` is nullable) plus `subType`, `name` and `id`. `userDisplayName` is available but left out: it names a person in an external system and is display-only, so it is not worth the exposure to solve an identity problem the other fields already solve. That also fixes a rendering bug we were one field away from: every GitHub, Slack and workflow comment printed as `@Unknown`, because the query never asked who the bot was. The author fallback was duplicated for root comments and replies; it is now one helper, with botActor checked last so a comment carrying both a user and a bot actor still renders the human, and every existing snapshot stays byte-identical. Finally, `--id` was forwarded to the API unvalidated. The repo already has `isLinearUuid`, and CLAUDE.md asks for an immediate, actionable error when user-supplied input is malformed rather than a raw GraphQL failure, so a non-UUID is now rejected before the request with a message showing the expected shape. The flag stays hidden, with a comment recording why it exists.
Collaborator
|
Shipped in v2.6.0. Thanks for this —
#270 was a follow-up covering bot authors ( |
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification