-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Linear App - updates and new components #18606
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
WalkthroughAdds Create Project and List Projects actions, extends Create/Update Issue actions to accept 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
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
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
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (2 warnings, 1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
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. Comment |
There was a problem hiding this 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
⛔ 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 formemberIds
is appropriate since both reference user IDs, and the type override tostring[]
is explicit.
74-92
: Verify Linear SDKcreateProject
signature and response shapeConfirm whether
client().createProject
expects a singularteamId
versus ateamIds: string[]
, whether the API supports multi-team projects, and whether the returned payload exposesresponse._project.id
orresponse.project.id
. You can check locally with:rg -n 'createProject(' -g '*.mjs' -g '*.js' -C3Or inspect the
@linear/sdk
type definitions (e.g. undernode_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 yourpackage.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 bothnodes
andpageInfo
enables proper pagination support.components/linear_app/linear_app.app.mjs (4)
154-170
: LGTM! EnhancedissueLabels
prop with backward compatibility.The addition of the
byId
parameter with a default value offalse
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. TheprojectPriority
prop correctly referencesconstants.PRIORITY_OPTIONS
.
222-222
: LGTM! Label capitalization improved.Minor text improvement for consistency.
370-375
: LGTM! New list methods follow established patterns.Both
listProjectStatuses
andlistProjectLabels
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 withbyId: true
to retrieve label IDs, and it's correctly passed through to thecreateIssue
API call. This aligns with the enhancedissueLabels
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
andprojectId
props follow established patterns. TheprojectId
prop correctly passesteamId
context for filtering project options, andlabelIds
usesbyId: true
to retrieve label IDs.
90-114
: LGTM! API call correctly updated with new fields.The
labelIds
andprojectId
fields are properly destructured and passed to theupdateIssue
input payload. This matches the pattern shown in the relevant code snippets and aligns with the create-issue action.
There was a problem hiding this 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
📒 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 thebyId: true
option to retrieve label IDs.
68-89
: LGTM! labelIds integration is correct.The
labelIds
parameter is properly destructured and passed to thecreateIssue
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 newprojectId
prop lacks anoptional: 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
andprojectId
props are properly destructured and passed to theupdateIssue
input. The implementation follows the existing pattern and aligns with PR objectives to enable updating labels and projects.
There was a problem hiding this 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 ! 👏
There was a problem hiding this 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
: MakelabelIds
optional.The
labelIds
prop is missingoptional: true
. Since this is an update action, users should be able to update other fields without modifying labels, consistent with other optional update fields liketitle
,description
,stateId
, andassigneeId
.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 markingprojectId
optional for consistency.While the
projectId
propDefinition itself is optional, other update fields in this action explicitly setoptional: true
(e.g.,title
,description
,stateId
). For consistency, consider addingoptional: true
to theprojectId
prop.Apply this diff:
projectId: { + optional: true, propDefinition: [ linearApp, "projectId", ({ teamId }) => ({ teamId, }), ], },
89-94
: Consider explicitly markingpriority
optional for consistency.While the
issuePriority
propDefinition itself is optional, other update fields in this action explicitly setoptional: true
. For consistency, consider addingoptional: true
to thepriority
prop.Apply this diff:
priority: { + optional: true, propDefinition: [ linearApp, "issuePriority", ], },
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 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 thebyId
parameter. This aligns with the newlabelIds
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 withprojectPriority
.
229-229
: LGTM!Capitalizing "Order By" improves consistency with title case conventions.
377-382
: LGTM!The new
listProjectStatuses
andlistProjectLabels
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 (defaultbyId=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 usesstring[]
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 updatedissueLabels
propDefinition withbyId: true
to fetch label IDs.
67-72
: LGTM!The
priority
prop correctly references the newissuePriority
propDefinition.
74-97
: LGTM!The
run
method correctly destructures and passes the newlabelIds
andpriority
fields to thecreateIssue
API call.components/linear_app/actions/update-issue/update-issue.mjs (1)
96-122
: LGTM!The
run
method correctly destructures and passes the newlabelIds
,projectId
, andpriority
fields to theupdateIssue
API call.
/approve |
* 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
Resolves #18600
Will create follow-up PR to update app
linear
after this is published.Summary by CodeRabbit