Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Nov 3, 2025

Resolves #18920

Summary by CodeRabbit

  • New Features

    • Added a source that emits events when a card is assigned to a specific user.
  • Enhancements

    • Expanded the card-updated source to also surface user-assignment events and improved summary formatting.
  • Chores

    • Bumped component package version to 0.1.0 and updated platform dependency.
    • Synced action and source metadata versions.
    • Refined UI labels and descriptions for clarity.

@vercel
Copy link

vercel bot commented Nov 3, 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 Nov 5, 2025 4:12pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Nov 5, 2025 4:12pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 3, 2025

Walkthrough

Bumps versions across Planview LeanKit actions and sources, upgrades the package dependency and package version, refines app prop label text, and adds a new source that emits events when a card is assigned to a specified user.

Changes

Cohort / File(s) Summary
Action version bumps (0.0.2 → 0.0.3)
components/planview_leankit/actions/add-connection-to-card/add-connection-to-card.mjs, components/planview_leankit/actions/add-tags-to-card/add-tags-to-card.mjs, components/planview_leankit/actions/assign-user-to-card/assign-user-to-card.mjs, components/planview_leankit/actions/assign-user-to-task/assign-user-to-task.mjs, components/planview_leankit/actions/block-card/block-card.mjs, components/planview_leankit/actions/complete-task/complete-task.mjs, components/planview_leankit/actions/create-card-type/create-card-type.mjs, components/planview_leankit/actions/create-card/create-card.mjs, components/planview_leankit/actions/create-comment/create-comment.mjs, components/planview_leankit/actions/create-custom-field/create-custom-field.mjs, components/planview_leankit/actions/create-task-card/create-task-card.mjs, components/planview_leankit/actions/delete-custom-field/delete-custom-field.mjs, components/planview_leankit/actions/duplicate-card/duplicate-card.mjs, components/planview_leankit/actions/duplicate-task/duplicate-task.mjs, components/planview_leankit/actions/find-first-card/find-first-card.mjs, components/planview_leankit/actions/find-or-create-card/find-or-create-card.mjs, components/planview_leankit/actions/get-card/get-card.mjs, components/planview_leankit/actions/move-cards-between-lanes/move-cards-between-lanes.mjs, components/planview_leankit/actions/move-cards-to-another-board/move-cards-to-another-board.mjs, components/planview_leankit/actions/remove-connection-from-card/remove-connection-from-card.mjs, components/planview_leankit/actions/remove-tags-from-card/remove-tags-from-card.mjs, components/planview_leankit/actions/start-task/start-task.mjs, components/planview_leankit/actions/unassign-user/unassign-user.mjs, components/planview_leankit/actions/unblock-card/unblock-card.mjs, components/planview_leankit/actions/update-card/update-card.mjs, components/planview_leankit/actions/update-custom-field-value/update-custom-field-value.mjs
Updated exported action metadata version from 0.0.20.0.3. No functional changes.
New card-assigned-to-user source
components/planview_leankit/sources/card-assigned-to-user/card-assigned-to-user.mjs
New source (v0.0.1) that polls activity, filters events by type === "userAssigned" and data.user.id === userId prop, and emits summarized events when a card is assigned to the configured user.
Source version bumps
components/planview_leankit/sources/card-created-in-lane/card-created-in-lane.mjs, components/planview_leankit/sources/card-created-on-board/card-created-on-board.mjs, components/planview_leankit/sources/card-moved-on-board/card-moved-on-board.mjs, components/planview_leankit/sources/card-entered-a-lane/card-entered-a-lane.mjs
Incremented source version (various increments shown in diff). No behavior changes.
card-updated-on-board source changes
components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs
Version bumped 0.0.10.0.2; validate(d) broadened to accept `d.type === "cardChanged"
Package and app metadata
components/planview_leankit/package.json, components/planview_leankit/planview_leankit.app.mjs
package.json version 0.0.10.1.0; dependency @pipedream/platform ^1.3.0^3.1.0. App prop label/description text refined (capitalization/punctuation).

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Source as CardAssignedSource
    participant API as LeanKit API
    participant Validator
    participant Emitter

    User->>Source: Configure source (set userId)
    Note over Source: Polls listActivity periodically
    Source->>API: GET /listActivity
    API-->>Source: Activity events
    Source->>Validator: validate(event)
    Validator->>Validator: check event.type === "userAssigned" AND event.data.user.id === userId
    alt match
        Validator->>Emitter: format summary and emit
        Emitter-->>User: Event: "Card 'title' assigned to user 'id'"
    else no match
        Validator-->>Source: discard
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Rationale: Many homogeneous metadata bumps (quick to scan) plus a new source (requires behavioral review) and a dependency jump that may introduce compatibility concerns.
  • Pay special attention to:
    • The new source's event filtering and summary formatting.
    • The package dependency upgrade (@pipedream/platform ^1.x → ^3.x) for breaking changes.
    • The card-updated-on-board broadened validation to ensure intended behavior.

Suggested labels

User submitted

Suggested reviewers

  • jcortes

Pre-merge checks and finishing touches

✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: adding a new LeanKit trigger for when a card is assigned to a user.
Description check ✅ Passed The PR description is minimal but meets the template requirement; it references the resolved issue.
Linked Issues check ✅ Passed The PR fully implements the requirement from issue #18920 by adding a new card-assigned-to-user source module that triggers when a card is assigned to a specific user.
Out of Scope Changes check ✅ Passed Most changes are version bumps across actions and dependencies; the new card-assigned-to-user source directly implements the core requirement, with ancillary updates to app definitions being reasonable supporting changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch issue-18920

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

@michelle0927 michelle0927 marked this pull request as ready for review November 3, 2025 22:47
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: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
components/planview_leankit/sources/card-entered-a-lane/card-entered-a-lane.mjs (1)

1-36: Fix validation logic and prop definition inconsistencies in card-assigned-to-user source.

The new source file exists but has implementation issues compared to the card-entered-a-lane pattern:

  1. validate() method: d.data.user.id === this.userId should be d.data.user.id === this.userId.value (userId is a prop object, not a string)
  2. userId prop: Missing withLabel: true (present in card-entered-a-lane's laneId)
  3. getSummary() method: Uses data.data.user.id instead of this.userId.label for consistency with the established pattern
🧹 Nitpick comments (2)
components/planview_leankit/sources/card-assigned-to-user/card-assigned-to-user.mjs (2)

25-27: Add defensive null checks to prevent potential runtime errors.

The validation assumes the nested structure d.data.user.id always exists. If the API returns incomplete data, this could throw an error.

Apply this diff to add optional chaining:

 validate(d) {
-  return d.type === "userAssigned" && d.data.user.id === this.userId;
+  return d.type === "userAssigned" && d.data?.user?.id === this.userId;
 }

28-30: Consider defensive checks and more user-friendly display.

Two suggestions:

  1. Add optional chaining to prevent errors with incomplete data structures.
  2. The summary displays user.id which is less user-friendly. Consider using emailAddress or username if available (as seen in line 479 of the app file where these fields are used for labels).

Apply this diff:

 getSummary(data) {
-  return `Card '${data.data.card.title}' assigned to user '${data.data.user.id}'`;
+  const user = data.data?.user;
+  const userDisplay = user?.emailAddress || user?.username || user?.id;
+  return `Card '${data.data?.card?.title}' assigned to user '${userDisplay}'`;
 }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7e653f2 and e20e8af.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (34)
  • components/planview_leankit/actions/add-connection-to-card/add-connection-to-card.mjs (1 hunks)
  • components/planview_leankit/actions/add-tags-to-card/add-tags-to-card.mjs (1 hunks)
  • components/planview_leankit/actions/assign-user-to-card/assign-user-to-card.mjs (1 hunks)
  • components/planview_leankit/actions/assign-user-to-task/assign-user-to-task.mjs (1 hunks)
  • components/planview_leankit/actions/block-card/block-card.mjs (1 hunks)
  • components/planview_leankit/actions/complete-task/complete-task.mjs (1 hunks)
  • components/planview_leankit/actions/create-card-type/create-card-type.mjs (1 hunks)
  • components/planview_leankit/actions/create-card/create-card.mjs (1 hunks)
  • components/planview_leankit/actions/create-comment/create-comment.mjs (1 hunks)
  • components/planview_leankit/actions/create-custom-field/create-custom-field.mjs (1 hunks)
  • components/planview_leankit/actions/create-task-card/create-task-card.mjs (1 hunks)
  • components/planview_leankit/actions/delete-custom-field/delete-custom-field.mjs (1 hunks)
  • components/planview_leankit/actions/duplicate-card/duplicate-card.mjs (1 hunks)
  • components/planview_leankit/actions/duplicate-task/duplicate-task.mjs (1 hunks)
  • components/planview_leankit/actions/find-first-card/find-first-card.mjs (1 hunks)
  • components/planview_leankit/actions/find-or-create-card/find-or-create-card.mjs (1 hunks)
  • components/planview_leankit/actions/get-card/get-card.mjs (1 hunks)
  • components/planview_leankit/actions/move-cards-between-lanes/move-cards-between-lanes.mjs (1 hunks)
  • components/planview_leankit/actions/move-cards-to-another-board/move-cards-to-another-board.mjs (1 hunks)
  • components/planview_leankit/actions/remove-connection-from-card/remove-connection-from-card.mjs (1 hunks)
  • components/planview_leankit/actions/remove-tags-from-card/remove-tags-from-card.mjs (1 hunks)
  • components/planview_leankit/actions/start-task/start-task.mjs (1 hunks)
  • components/planview_leankit/actions/unassign-user/unassign-user.mjs (1 hunks)
  • components/planview_leankit/actions/unblock-card/unblock-card.mjs (1 hunks)
  • components/planview_leankit/actions/update-card/update-card.mjs (1 hunks)
  • components/planview_leankit/actions/update-custom-field-value/update-custom-field-value.mjs (1 hunks)
  • components/planview_leankit/package.json (2 hunks)
  • components/planview_leankit/planview_leankit.app.mjs (19 hunks)
  • components/planview_leankit/sources/card-assigned-to-user/card-assigned-to-user.mjs (1 hunks)
  • components/planview_leankit/sources/card-created-in-lane/card-created-in-lane.mjs (1 hunks)
  • components/planview_leankit/sources/card-created-on-board/card-created-on-board.mjs (1 hunks)
  • components/planview_leankit/sources/card-entered-a-lane/card-entered-a-lane.mjs (1 hunks)
  • components/planview_leankit/sources/card-moved-on-board/card-moved-on-board.mjs (1 hunks)
  • components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-01-23T03:55:15.166Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

Applied to files:

  • components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs
  • components/planview_leankit/sources/card-created-on-board/card-created-on-board.mjs
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.

Applied to files:

  • components/planview_leankit/actions/move-cards-between-lanes/move-cards-between-lanes.mjs
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/planview_leankit/package.json
⏰ 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 (32)
components/planview_leankit/actions/unblock-card/unblock-card.mjs (1)

6-6: Version bump is consistent with PR scope.

The patch version increment (0.0.2 → 0.0.3) aligns with the coordinated version updates across action and source modules described in the PR summary. No functional changes to the action.

components/planview_leankit/sources/card-created-in-lane/card-created-in-lane.mjs (1)

9-9: Version bump consistent with release cadence.

Line 9’s version increment matches the metadata refresh for this source. No further changes needed.

components/planview_leankit/actions/move-cards-to-another-board/move-cards-to-another-board.mjs (1)

6-6: Version metadata looks good.

Line 6’s bump to 0.0.3 keeps this action in sync with the broader release.

components/planview_leankit/actions/update-custom-field-value/update-custom-field-value.mjs (1)

7-7: Aligned version increment.

Line 7’s update to 0.0.3 keeps this action aligned with the rest of the package rollout.

components/planview_leankit/actions/add-connection-to-card/add-connection-to-card.mjs (1)

7-7: Version update confirmed.

Line 7’s version change to 0.0.3 keeps the component metadata consistent.

components/planview_leankit/sources/card-created-on-board/card-created-on-board.mjs (1)

9-9: Source version sync acknowledged.

Line 9’s move to 0.0.2 keeps this source aligned with the package versioning strategy.

components/planview_leankit/actions/create-card-type/create-card-type.mjs (1)

6-6: Version bump looks good.

Metadata update to 0.0.3 keeps the action aligned with the broader release set.

components/planview_leankit/actions/create-comment/create-comment.mjs (1)

6-6: Consistent version update.

Moving this action to 0.0.3 keeps it in sync with the rest of the integration changes.

components/planview_leankit/actions/add-tags-to-card/add-tags-to-card.mjs (1)

6-6: Metadata bump acknowledged.

Version 0.0.3 matches the coordinated release updates.

components/planview_leankit/actions/create-task-card/create-task-card.mjs (1)

6-6: Version alignment confirmed.

The 0.0.3 update keeps this action in step with the package release.

components/planview_leankit/actions/update-card/update-card.mjs (1)

8-8: Version bump verified.

Setting 0.0.3 here matches the rest of the release updates.

components/planview_leankit/actions/find-or-create-card/find-or-create-card.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/start-task/start-task.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/get-card/get-card.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/delete-custom-field/delete-custom-field.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/block-card/block-card.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/duplicate-card/duplicate-card.mjs (1)

7-7: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/move-cards-between-lanes/move-cards-between-lanes.mjs (1)

6-6: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs (1)

9-9: LGTM!

Metadata-only version bump consistent with the broader package update.

components/planview_leankit/actions/find-first-card/find-first-card.mjs (1)

6-6: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/actions/unassign-user/unassign-user.mjs (1)

7-7: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/actions/create-custom-field/create-custom-field.mjs (1)

7-7: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/actions/assign-user-to-task/assign-user-to-task.mjs (1)

6-6: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/actions/assign-user-to-card/assign-user-to-card.mjs (1)

6-6: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/actions/duplicate-task/duplicate-task.mjs (1)

7-7: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.2 to 0.0.3 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/package.json (2)

3-3: LGTM! Minor version bump appropriate for new feature.

The version bump from 0.0.1 to 0.1.0 correctly reflects the addition of a new event source (card-assigned-to-user) as indicated in the PR objectives.


13-13: Verify @pipedream/platform v3.1.0 compatibility through component testing.

The component imports and uses the axios utility from @pipedream/platform, following the standard Pipedream pattern of calling axios($, config) in its request wrapper. While the component resides in the official Pipedream monorepo and uses stable API patterns, breaking changes exist between v1, v2, and v3 and cannot be fully verified through static analysis alone.

Ensure the component's 25+ actions execute correctly with v3.1.0 by running the test suite and validating core workflows before deployment.

components/planview_leankit/sources/card-entered-a-lane/card-entered-a-lane.mjs (1)

9-9: LGTM! Version bump is consistent with PR-wide updates.

The patch version increment from 0.0.4 to 0.0.5 aligns with the package-level changes and dependency upgrades in this PR.

components/planview_leankit/planview_leankit.app.mjs (1)

9-457: LGTM! Cosmetic improvements enhance consistency.

The textual refinements standardize ID capitalization and improve description clarity throughout the prop definitions without affecting functionality.

components/planview_leankit/sources/card-assigned-to-user/card-assigned-to-user.mjs (3)

1-19: LGTM! Module structure and props are well-defined.

The source correctly extends the common base and adds the userId prop for filtering card assignment events.


22-24: LGTM! Correct API method selection.

Using listActivity is appropriate for monitoring card assignment events.


25-27: Verify the event type string matches the LeanKit API.

The event type "userAssigned" should be verified against the official LeanKit API documentation. The codebase shows a naming pattern using "cardCreated" and "cardMoved", making "cardAssigned" more consistent than "userAssigned". However, without access to official LeanKit webhook event reference or test payloads, this cannot be confirmed—only the developer with API documentation access can verify which event type name the LeanKit API actually returns for card assignment events.

lcaresia
lcaresia previously approved these changes Nov 4, 2025
@vunguyenhung
Copy link
Collaborator

@vunguyenhung
Copy link
Collaborator

Hello everyone, I have tested this PR and there're some test cases failed or needed improvement.

Please check test reports below for more information:

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: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e20e8af and 0cd6339.

📒 Files selected for processing (1)
  • components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-01-23T03:55:15.166Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

Applied to files:

  • components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs
⏰ 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: Verify TypeScript components
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (2)
components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs (2)

9-9: Version bump is appropriate.

The version increment from 0.0.1 to 0.0.2 is consistent with the non-breaking changes made to the validation and summary logic.


23-23: Good defensive coding with optional chaining.

The addition of optional chaining and fallback value (this.boardId?.label || this.boardId) improves robustness by gracefully handling cases where boardId might not have a label property.

},
validate(d) {
return d.type === "cardChanged";
return d.type === "cardChanged" || d.type === "userAssigned";
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Potential duplicate event emission with new card-assigned-to-user source.

This source now accepts both "cardChanged" and "userAssigned" event types. According to the PR objectives and enriched summary, a new dedicated source (card-assigned-to-user) was created to handle user assignment events. If both sources validate and emit on "userAssigned" events, users subscribing to both will receive duplicate events.

Additionally, this source's description states it emits "when a card is updated on a board," which doesn't semantically align with user assignment events.

Run the following script to verify if the new source exists and compare validation logic:

If the new source exists and also validates "userAssigned" events, consider removing || d.type === "userAssigned" from this source to prevent duplicate emissions.


🏁 Script executed:

#!/bin/bash
# Description: Check for the new card-assigned-to-user source and compare validation logic

# Find the new source file
echo "=== Searching for card-assigned-to-user source ==="
fd --type f "card-assigned-to-user.mjs" components/planview_leankit/sources/

echo -e "\n=== Checking validation logic in card-assigned-to-user source ==="
fd --type f "card-assigned-to-user.mjs" components/planview_leankit/sources/ --exec cat {}

echo -e "\n=== Comparing with card-updated-on-board validation ==="
cat components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs | grep -A 2 "validate(d)"

Length of output: 1113


Remove || d.type === "userAssigned" from validation logic to prevent duplicate event emission.

The new card-assigned-to-user source also validates on d.type === "userAssigned" events. Both sources will now emit on the same event type, creating duplicate triggers for users subscribing to both. Additionally, this source's description ("Emit new event when a card is updated on a board") doesn't semantically align with user assignment events—that's the dedicated purpose of the card-assigned-to-user source.

Keep only the d.type === "cardChanged" validation in this source.

🤖 Prompt for AI Agents
In
components/planview_leankit/sources/card-updated-on-board/card-updated-on-board.mjs
around line 20, the validation currently returns d.type === "cardChanged" ||
d.type === "userAssigned", which causes duplicate event emissions with the
separate card-assigned-to-user source; remove the "|| d.type ===
\"userAssigned\"" part so the return only validates d.type === "cardChanged".
Ensure the expression is updated accordingly and leave the source description
unchanged.

@vunguyenhung
Copy link
Collaborator

Hi everyone, all test cases are passed! Ready for release!

Test reports

@michelle0927
Copy link
Collaborator Author

/approve

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.

LeanKit - Card assigned to User

4 participants