Skip to content

Conversation

michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Oct 1, 2025

Resolves #18600

Will create follow-up PR to update app linear after this is published.

Summary by CodeRabbit

  • New Features
    • Create Issue and Update Issue now support labels (select by ID) and priority; Update Issue can assign a project.
    • Added Create Project action (team, members, dates, labels, status, priority).
    • Added List Projects action with pagination and sorting.
    • New project priority options and project status/label selectors.
  • Style
    • "Order by" label updated to "Order By".
  • Chores
    • Component/source versions and package version bumped; platform dependency updated.

Copy link

vercel bot commented Oct 1, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Oct 2, 2025 3:27pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Oct 2, 2025 3:27pm

Copy link
Contributor

coderabbitai bot commented Oct 1, 2025

Walkthrough

Adds Create Project and List Projects actions, extends Create/Update Issue actions to accept labelIds and priority, introduces project-related propDefinitions and list helpers, adds PRIORITY_OPTIONS, and increments several component/package versions.

Changes

Cohort / File(s) Summary of changes
Issue actions: label/project/priority support
components/linear_app/actions/create-issue/create-issue.mjs, components/linear_app/actions/update-issue/update-issue.mjs
Added labelIds and priority props to Create Issue; added labelIds, projectId, and priority props to Update Issue; destructured new props in run(); included them in API payloads; description text/versions bumped.
Project actions: new
components/linear_app/actions/create-project/create-project.mjs, components/linear_app/actions/list-projects/list-projects.mjs
Added new Create Project and List Projects actions with props for project fields, ordering/pagination; run() calls Linear API and returns results with summaries.
App-level enhancements
components/linear_app/linear_app.app.mjs, components/linear_app/common/constants.mjs
Added PRIORITY_OPTIONS constant; added propDefinitions projectStatusId, projectLabelIds, projectPriority; exposed listProjectStatuses and listProjectLabels; changed issueLabels options to support byId mapping; minor label text change.
Package bump
components/linear_app/package.json
Bumped package version to 0.8.0 and updated @pipedream/platform dependency.
Action version bumps
components/linear_app/actions/get-issue/get-issue.mjs, components/linear_app/actions/get-teams/get-teams.mjs, components/linear_app/actions/search-issues/search-issues.mjs
Only version fields incremented; no behavior changes.
Source version bumps
components/linear_app/sources/...
components/linear_app/sources/comment-created-instant/comment-created-instant.mjs, .../issue-created-instant/issue-created-instant.mjs, .../issue-updated-instant/issue-updated-instant.mjs, .../new-issue-status-updated/new-issue-status-updated.mjs, .../new-projectupdate-created/new-projectupdate-created.mjs, .../project-updated-instant/project-updated-instant.mjs
Only version fields incremented across multiple sources; no logic changes.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Action as Create Project Action
  participant App as Linear App
  participant API as Linear API

  note right of Action #e8f4ff: New action
  User->>Action: Provide project inputs (teamId, name, description, statusId, priority, memberIds, startDate, targetDate, labelIds)
  Action->>App: client().createProject({...})
  App->>API: createProject mutation
  API-->>App: Project payload
  App-->>Action: Response
  Action-->>User: Summary + response
Loading
sequenceDiagram
  autonumber
  actor User
  participant Action as List Projects Action
  participant App as Linear App
  participant API as Linear API

  User->>Action: teamId, orderBy, first, after
  Action->>App: listProjects(variables)
  App->>API: projects query with variables
  API-->>App: { nodes[], pageInfo }
  App-->>Action: Result
  Action-->>User: nodes + pageInfo
Loading
sequenceDiagram
  autonumber
  actor User
  participant Action as Create/Update Issue Action
  participant App as Linear App
  participant API as Linear API

  note right of Action #f0f4ff: New/updated props: labelIds, priority, (projectId for update)
  User->>Action: Provide issue fields (+ labelIds[, projectId], priority)
  alt Create Issue
    Action->>App: createIssue({ teamId, projectId?, title, description, assigneeId, stateId, labelIds, priority })
  else Update Issue
    Action->>App: updateIssue({ id, title?, description?, assigneeId?, stateId?, labelIds, projectId, priority })
  end
  App->>API: respective mutation
  API-->>App: Issue payload
  App-->>Action: Response
  Action-->>User: Summary + response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

User submitted

Suggested reviewers

  • jcortes

Poem

Hop hop — I patch and bounce with cheer,
New projects bloom and labels appear.
Priorities set, statuses unfurl,
I create, list, and help your tasks whirl.
A rabbit’s tiny dev hurrah! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning The PR introduces updates to the Create Issue action and version bumps for various actions and sources that were not requested by issue #18600, which focused solely on Update Issue, Create Project, and List/Search Projects, resulting in unrelated changes that fall outside the defined scope. Please remove or isolate the Create Issue modifications and unrelated version bumps into a separate PR or clarify their inclusion to ensure this PR remains focused on the linked issue objectives.
Description Check ⚠️ Warning The pull request description does not follow the repository template since it lacks the required “## WHY” section and does not describe the motivation, scope, or summary of the changes implemented, making it unclear why these updates are needed. Please update the description to follow the template by adding a “## WHY” section that explains the motivation for these changes and include a summary of the modifications introduced in this PR.
Title Check ❓ Inconclusive The title is generic and does not clearly convey the primary changes implemented in this PR, such as adding Create Project and List Projects actions and enhancing Issue fields, making it difficult for reviewers or other team members to quickly understand the key updates. Please revise the title to succinctly summarize the main changes, for example “Linear App: add Create and List Projects actions and update Issue fields.”
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues Check ✅ Passed The changes fulfill the requirements of issue #18600 by enhancing the Update Issue action with label and project fields, adding the Create Project action, and introducing the List Projects action, fully aligning with the linked issue objectives.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch issue-18600

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@michelle0927 michelle0927 marked this pull request as ready for review October 1, 2025 20:52
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c715003 and 2e648aa.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (16)
  • components/linear_app/actions/create-issue/create-issue.mjs (4 hunks)
  • components/linear_app/actions/create-project/create-project.mjs (1 hunks)
  • components/linear_app/actions/get-issue/get-issue.mjs (1 hunks)
  • components/linear_app/actions/get-teams/get-teams.mjs (1 hunks)
  • components/linear_app/actions/list-projects/list-projects.mjs (1 hunks)
  • components/linear_app/actions/search-issues/search-issues.mjs (1 hunks)
  • components/linear_app/actions/update-issue/update-issue.mjs (4 hunks)
  • components/linear_app/common/constants.mjs (2 hunks)
  • components/linear_app/linear_app.app.mjs (3 hunks)
  • components/linear_app/package.json (2 hunks)
  • components/linear_app/sources/comment-created-instant/comment-created-instant.mjs (1 hunks)
  • components/linear_app/sources/issue-created-instant/issue-created-instant.mjs (1 hunks)
  • components/linear_app/sources/issue-updated-instant/issue-updated-instant.mjs (1 hunks)
  • components/linear_app/sources/new-issue-status-updated/new-issue-status-updated.mjs (1 hunks)
  • components/linear_app/sources/new-projectupdate-created/new-projectupdate-created.mjs (1 hunks)
  • components/linear_app/sources/project-updated-instant/project-updated-instant.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
components/linear_app/actions/list-projects/list-projects.mjs (1)
components/linear_app/linear_app.app.mjs (1)
  • variables (416-422)
components/linear_app/actions/create-project/create-project.mjs (2)
components/linear_app/actions/create-issue/create-issue.mjs (1)
  • response (80-89)
components/linear_app/actions/update-issue/update-issue.mjs (1)
  • response (102-114)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Ensure component commits modify component versions
🔇 Additional comments (22)
components/linear_app/sources/new-projectupdate-created/new-projectupdate-created.mjs (1)

11-11: Version bump looks good.

No functional changes here—thanks for keeping the source version in sync with the rest of the release.

components/linear_app/sources/comment-created-instant/comment-created-instant.mjs (1)

10-10: Version bump looks good. Matches the release sweep, no functional drift observed.

components/linear_app/sources/issue-created-instant/issue-created-instant.mjs (1)

10-10: Consistent version increment. Aligned with the broader release updates, no additional concerns.

components/linear_app/sources/issue-updated-instant/issue-updated-instant.mjs (1)

10-10: Version change is appropriate. Tracks the module updates elsewhere, everything else untouched.

components/linear_app/package.json (2)

3-3: Package version bump confirmed. Matches the added capabilities in this release.


18-18: Dependency update acknowledged. @pipedream/platform ^3.1.0 aligns with the latest platform helpers.

components/linear_app/actions/get-issue/get-issue.mjs (1)

7-7: Version increment checks out. Keeps this action in step with the rest of the release train.

components/linear_app/actions/get-teams/get-teams.mjs (1)

8-8: LGTM: Version bump for coordinated release.

components/linear_app/actions/search-issues/search-issues.mjs (1)

10-10: LGTM: Version bump for coordinated release.

components/linear_app/sources/new-issue-status-updated/new-issue-status-updated.mjs (1)

11-11: LGTM: Version bump for coordinated release.

components/linear_app/sources/project-updated-instant/project-updated-instant.mjs (1)

11-11: LGTM: Version bump for coordinated release.

components/linear_app/actions/create-project/create-project.mjs (2)

3-73: LGTM! Prop definitions are well-structured.

The action metadata and prop definitions are correctly configured. The reuse of assigneeId propDefinition for memberIds is appropriate since both reference user IDs, and the type override to string[] is explicit.


74-92: Verify Linear SDK createProject signature and response shape

Confirm whether client().createProject expects a singular teamId versus a teamIds: string[], whether the API supports multi-team projects, and whether the returned payload exposes response._project.id or response.project.id. You can check locally with:

rg -n 'createProject(' -g '*.mjs' -g '*.js' -C3

Or inspect the @linear/sdk type definitions (e.g. under node_modules/@linear/sdk) or your GraphQL schema to validate the exact method parameters and response fields. Refer to the SDK documentation for the version listed in your package.json.

components/linear_app/actions/list-projects/list-projects.mjs (2)

4-41: LGTM! Action metadata and props are correctly configured.

The action is properly marked as read-only and includes appropriate pagination props (first, after) that align with GraphQL cursor-based pagination patterns.


42-66: LGTM! Pagination and filtering logic are correct.

The implementation properly uses utils.buildVariables and constructs the filter object with the correct nested structure (accessibleTeams.id.eq). Returning both nodes and pageInfo enables proper pagination support.

components/linear_app/linear_app.app.mjs (4)

154-170: LGTM! Enhanced issueLabels prop with backward compatibility.

The addition of the byId parameter with a default value of false maintains backward compatibility while enabling actions to retrieve label IDs when needed. The conditional mapping logic is clear and correctly implemented.


171-213: LGTM! New project-related prop definitions follow established patterns.

The three new prop definitions (projectStatusId, projectLabelIds, projectPriority) are well-structured and consistent with existing props. The projectPriority prop correctly references constants.PRIORITY_OPTIONS.


222-222: LGTM! Label capitalization improved.

Minor text improvement for consistency.


370-375: LGTM! New list methods follow established patterns.

Both listProjectStatuses and listProjectLabels are correctly implemented following the same pattern as existing list methods (e.g., listIssueLabels at lines 355-357).

components/linear_app/actions/create-issue/create-issue.mjs (1)

58-66: LGTM! Label support correctly implemented.

The labelIds prop is properly configured with byId: true to retrieve label IDs, and it's correctly passed through to the createIssue API call. This aligns with the enhanced issueLabels prop definition and matches the pattern used in the update-issue action.

Also applies to: 77-77, 88-88

components/linear_app/actions/update-issue/update-issue.mjs (2)

71-88: LGTM! New props are correctly defined.

Both labelIds and projectId props follow established patterns. The projectId prop correctly passes teamId context for filtering project options, and labelIds uses byId: true to retrieve label IDs.


90-114: LGTM! API call correctly updated with new fields.

The labelIds and projectId fields are properly destructured and passed to the updateIssue input payload. This matches the pattern shown in the relevant code snippets and aligns with the create-issue action.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2e648aa and 7c2932e.

📒 Files selected for processing (2)
  • components/linear_app/actions/create-issue/create-issue.mjs (4 hunks)
  • components/linear_app/actions/update-issue/update-issue.mjs (4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (7)
components/linear_app/actions/create-issue/create-issue.mjs (4)

7-7: LGTM! Markdown syntax fixed.

The malformed markdown link has been corrected from ]]( to ](.


8-8: LGTM! Version bump is appropriate.

Patch version increment is suitable for adding the optional labelIds parameter.


58-66: LGTM! labelIds prop definition is correct.

The prop definition correctly references the issueLabels propDefinition with the byId: true option to retrieve label IDs.


68-89: LGTM! labelIds integration is correct.

The labelIds parameter is properly destructured and passed to the createIssue method, following the same pattern as other optional parameters.

components/linear_app/actions/update-issue/update-issue.mjs (3)

6-6: Markdown syntax fix confirmed.

The malformed markdown link syntax flagged in the previous review has been corrected.


80-88: Verify if projectId should be optional.

Like labelIds, the new projectId prop lacks an optional: true flag. Since update actions typically allow users to modify individual fields, this prop should likely be optional to avoid forcing project selection on every issue update.


90-114: LGTM! Clean integration of new props.

The new labelIds and projectId props are properly destructured and passed to the updateIssue input. The implementation follows the existing pattern and aligns with PR objectives to enable updating labels and projects.

GTFalcao
GTFalcao previously approved these changes Oct 1, 2025
Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

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

LGTM! Great work, @michelle0927 ! 👏

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
components/linear_app/actions/update-issue/update-issue.mjs (1)

71-79: Make labelIds optional.

The labelIds prop is missing optional: true. Since this is an update action, users should be able to update other fields without modifying labels, consistent with other optional update fields like title, description, stateId, and assigneeId.

Apply this diff:

 labelIds: {
+  optional: true,
   propDefinition: [
     linearApp,
     "issueLabels",
     () => ({
       byId: true,
     }),
   ],
 },
🧹 Nitpick comments (2)
components/linear_app/actions/update-issue/update-issue.mjs (2)

80-88: Consider explicitly marking projectId optional for consistency.

While the projectId propDefinition itself is optional, other update fields in this action explicitly set optional: true (e.g., title, description, stateId). For consistency, consider adding optional: true to the projectId prop.

Apply this diff:

 projectId: {
+  optional: true,
   propDefinition: [
     linearApp,
     "projectId",
     ({ teamId }) => ({
       teamId,
     }),
   ],
 },

89-94: Consider explicitly marking priority optional for consistency.

While the issuePriority propDefinition itself is optional, other update fields in this action explicitly set optional: true. For consistency, consider adding optional: true to the priority prop.

Apply this diff:

 priority: {
+  optional: true,
   propDefinition: [
     linearApp,
     "issuePriority",
   ],
 },
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7c2932e and ee35143.

📒 Files selected for processing (4)
  • components/linear_app/actions/create-issue/create-issue.mjs (4 hunks)
  • components/linear_app/actions/list-projects/list-projects.mjs (1 hunks)
  • components/linear_app/actions/update-issue/update-issue.mjs (4 hunks)
  • components/linear_app/linear_app.app.mjs (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
components/linear_app/actions/list-projects/list-projects.mjs (1)
components/linear_app/linear_app.app.mjs (1)
  • variables (423-429)
components/linear_app/linear_app.app.mjs (1)
components/linear_app/actions/list-projects/list-projects.mjs (2)
  • variables (43-53)
  • variables (55-57)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Lint Code Base
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: pnpm publish
🔇 Additional comments (17)
components/linear_app/linear_app.app.mjs (10)

154-169: LGTM!

The conditional mapping for issueLabels correctly supports both ID-based and name-based label selection via the byId parameter. This aligns with the new labelIds field in the Create and Update Issue actions.


171-213: LGTM!

The new project-related propDefinitions (projectStatusId, projectLabelIds, projectPriority) follow consistent patterns and are appropriately marked optional.


214-220: LGTM!

The issuePriority propDefinition is correctly structured and consistent with projectPriority.


229-229: LGTM!

Capitalizing "Order By" improves consistency with title case conventions.


377-382: LGTM!

The new listProjectStatuses and listProjectLabels methods follow the established pattern of other list helpers and correctly support the new project-related propDefinitions.


154-169: LGTM! Backward-compatible enhancement.

The conditional mapping based on byId parameter is correct and maintains backward compatibility (default byId=false returns name strings). This allows actions to flexibly request either label names or IDs as needed.


171-188: LGTM! Consistent prop definition.

The projectStatusId prop definition follows the established pattern for other ID-based props in this file. Structure, typing, and resource mapping are correct.


189-220: LGTM! Well-structured prop definitions.

The new prop definitions are well-structured:

  • projectLabelIds correctly uses string[] type for multiple selection and follows the established async options pattern.
  • Both priority props appropriately use a shared constant (constants.PRIORITY_OPTIONS) for consistency.

229-229: LGTM! Capitalization consistency.

Title-case capitalization for UI labels improves consistency.


377-379: LGTM! Consistent list method implementation.

The listProjectStatuses method follows the established pattern for other list methods in this file and correctly delegates to the Linear SDK.

components/linear_app/actions/list-projects/list-projects.mjs (3)

4-14: LGTM!

The action metadata and annotations are correctly configured for a read-only list operation.


15-41: LGTM!

The props correctly reuse existing propDefinitions and provide standard pagination parameters.


42-65: LGTM!

The run method correctly builds query variables, filters by team, supports pagination, and returns the expected structure.

components/linear_app/actions/create-issue/create-issue.mjs (3)

58-66: LGTM!

The labelIds prop correctly leverages the updated issueLabels propDefinition with byId: true to fetch label IDs.


67-72: LGTM!

The priority prop correctly references the new issuePriority propDefinition.


74-97: LGTM!

The run method correctly destructures and passes the new labelIds and priority fields to the createIssue API call.

components/linear_app/actions/update-issue/update-issue.mjs (1)

96-122: LGTM!

The run method correctly destructures and passes the new labelIds, projectId, and priority fields to the updateIssue API call.

@michelle0927
Copy link
Collaborator Author

/approve

@michelle0927 michelle0927 merged commit ffb9b81 into master Oct 3, 2025
10 checks passed
@michelle0927 michelle0927 deleted the issue-18600 branch October 3, 2025 14:44
verhovsky added a commit to verhovsky/pipedream that referenced this pull request Oct 6, 2025
* upstream/master:
  Adding app scaffolding for stackby
  Airtop new components (PipedreamHQ#18637)
  Sinch - new components (PipedreamHQ#18635)
  Mintlify - new components (PipedreamHQ#18519)
  Linear App - updates and new components (PipedreamHQ#18606)
  Merging pull request PipedreamHQ#18622
  Adding app scaffolding for airtop
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.

[ACTION] Linear App (Update Issue fields, Create Project, Search or Get Project)
2 participants