Skip to content

feat(linear): support milestones and roadmaps in adapter#22

Merged
khaliqgant merged 2 commits intomainfrom
khaliq/linear-milestones-roadmaps
Apr 17, 2026
Merged

feat(linear): support milestones and roadmaps in adapter#22
khaliqgant merged 2 commits intomainfrom
khaliq/linear-milestones-roadmaps

Conversation

@khaliqgant
Copy link
Copy Markdown
Member

@khaliqgant khaliqgant commented Apr 17, 2026

Summary

  • add Linear milestone, roadmap, team, and user path mapping/aliases
  • expand Linear semantics extraction for synced projects, comments, teams, users, milestones, and roadmaps
  • advertise milestone and roadmap webhook object types in the adapter contract

Verification

  • npm test
  • npm run typecheck

Open with Devin

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8120badaa7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/linear/src/linear-adapter.ts Outdated

const author = comment.user as LinearUser | null | undefined;
if (author) {
relations.add(linearUserPath(author.id));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Guard comment author relation against missing user id

Avoid calling linearUserPath(author.id) unless author.id is a non-empty string. In computeSemantics for comments, a payload can contain a user object without an id (or with an empty id) while still providing user_id/author_id; this new call throws inside path encoding and causes the entire ingest path to fail instead of using the fallback identifiers you added below. This is a functional regression for partial/synced comment payloads.

Useful? React with 👍 / 👎.

devin-ai-integration[bot]

This comment was marked as resolved.

Address PR review:
- `applyCommentSemantics` called `linearUserPath(author.id)` without
  checking that `author.id` was a non-empty string; with a partial
  `user` payload this threw in path encoding and aborted the whole
  ingest instead of letting the `user_id`/`author_id` fallback apply.
- `LinearUser` had snake_case companions for every camelCase field
  except `displayName`, so `user.display_name` (read by
  `applyUserSemantics`) resolved to `unknown` via the escape hatch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@khaliqgant khaliqgant merged commit f03f877 into main Apr 17, 2026
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