Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Nov 7, 2025

Resolves #18914

Summary by CodeRabbit

  • New Features

    • Added four Clockify actions: List Projects, List Tasks, List Time Entries, and Get Time Entry Report.
    • New filtering, pagination, sorting, and advanced search options; task/tag selection and a "hydrated" response option.
  • Chores

    • Bumped Clockify component version to 0.1.0 and updated platform dependency.

@vercel
Copy link

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 7, 2025

Walkthrough

Adds multiple read-only Clockify actions and a report action, extends the Clockify app with new propDefinitions and list/report client methods, bumps component/package versions, and updates a few existing action versions. No behavioral changes in the bumped actions.

Changes

Cohort / File(s) Summary
Existing action version bumps
\components/clockify/actions/add-members-to-project/add-members-to-project.mjs`, `components/clockify/actions/add-task-to-project/add-task-to-project.mjs`, `components/clockify/actions/create-project/create-project.mjs``
Incremented exported action version from 0.0.20.0.3. No logic or API changes.
New list actions
\components/clockify/actions/list-projects/list-projects.mjs`, `components/clockify/actions/list-tasks/list-tasks.mjs`, `components/clockify/actions/list-time-entries/list-time-entries.mjs``
Added actions exposing project/task/time-entry list endpoints with filter, sort, and pagination props; each implements run({ $ }) calling corresponding app methods and exports a result summary.
New report action
\components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs``
Added "Get Time Entry Report" action with props for workspace, date range, and multi-dimensional filters; run calls app getTimeEntryReport and returns the API response.
Clockify app extension
\components/clockify/clockify.app.mjs``
Added propDefinitions (taskId, tagIds, hydrated, strictNameSearch, sortOrder, page, pageSize), new public methods (listTasks, listTimeEntries, listTags, getTimeEntryReport), option resolvers for tasks/tags, and extended _makeRequest to accept an optional url parameter.
Package metadata bump
\components/clockify/package.json``
Component version bumped 0.0.10.1.0. Dependency @pipedream/platform updated ^1.5.1^3.1.0.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Action as List Action
    participant App as Clockify App
    participant API as Clockify API

    User->>Action: Invoke action with props (workspaceId, filters, page)
    Action->>App: listProjects/listTasks/listTimeEntries(params)
    App->>App: Build request params & resolve options (tasks/tags) if needed
    App->>API: HTTP request (GET/POST) to Clockify endpoint
    API-->>App: Return data array / report
    App->>Action: Return response
    Action->>User: Export summary and response
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Areas needing extra attention:
    • components/clockify/clockify.app.mjs — new methods (listTasks, listTimeEntries, listTags, getTimeEntryReport), async option resolvers, and _makeRequest url handling.
    • New actions under components/clockify/actions/* — verify prop → API parameter mappings and pagination behavior.
    • components/clockify/package.json — dependency bump to @pipedream/platform@^3.1.0 (check compatibility).

Suggested reviewers

  • lcaresia
  • jcortes

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Clockify - new components' is vague and generic, providing no meaningful detail about what was added or changed in the changeset. Revise the title to be more specific and descriptive, such as 'Add Clockify read tools for projects, tasks, and time entries' to clearly convey the main objectives.
Description check ❓ Inconclusive The description is minimal and does not follow the required template structure with a 'WHY' section explaining the rationale for changes. Complete the pull request description using the provided template by adding a 'WHY' section that explains the purpose and benefits of these new read tools.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changeset successfully implements read tools for Clockify including list-projects, list-tasks, list-time-entries, and get-time-entry-report actions to address the requested capabilities [#18914].
Out of Scope Changes check ✅ Passed Version bumps for existing actions (add-members-to-project, add-task-to-project) and package.json changes are reasonable maintenance updates alongside new features, not out-of-scope changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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-18914

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

@michelle0927 michelle0927 marked this pull request as ready for review November 7, 2025 19:29
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: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7c6ace1 and 6d02d41.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (9)
  • components/clockify/actions/add-members-to-project/add-members-to-project.mjs (1 hunks)
  • components/clockify/actions/add-task-to-project/add-task-to-project.mjs (1 hunks)
  • components/clockify/actions/create-project/create-project.mjs (1 hunks)
  • components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1 hunks)
  • components/clockify/actions/list-projects/list-projects.mjs (1 hunks)
  • components/clockify/actions/list-tasks/list-tasks.mjs (1 hunks)
  • components/clockify/actions/list-time-entries/list-time-entries.mjs (1 hunks)
  • components/clockify/clockify.app.mjs (3 hunks)
  • components/clockify/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-19T09:02:18.222Z
Learnt from: nurul3101
Repo: PipedreamHQ/pipedream PR: 18092
File: components/prisma_management_api/README.md:24-31
Timestamp: 2025-08-19T09:02:18.222Z
Learning: In Prisma Management API documentation, the "Create Database" section title is intentional and should not be changed to "Create Project", even though the action technically creates a complete project with database. This naming choice follows user-facing terminology preferences.

Applied to files:

  • components/clockify/actions/create-project/create-project.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/clockify/package.json
📚 Learning: 2025-09-12T07:49:36.125Z
Learnt from: matyascimbulka
Repo: PipedreamHQ/pipedream PR: 18308
File: components/apify/actions/run-task-synchronously/run-task-synchronously.mjs:70-0
Timestamp: 2025-09-12T07:49:36.125Z
Learning: The Apify Task object always contains the `options` field according to the official API documentation, making nested destructuring like `options: { build }` safe to use without additional checks.

Applied to files:

  • components/clockify/clockify.app.mjs
🧬 Code graph analysis (4)
components/clockify/actions/list-time-entries/list-time-entries.mjs (3)
components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1)
  • response (90-137)
components/clockify/actions/list-projects/list-projects.mjs (1)
  • response (162-184)
components/clockify/actions/list-tasks/list-tasks.mjs (1)
  • response (79-92)
components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (2)
components/clockify/actions/list-tasks/list-tasks.mjs (1)
  • response (79-92)
components/clockify/actions/list-time-entries/list-time-entries.mjs (1)
  • response (121-139)
components/clockify/actions/list-tasks/list-tasks.mjs (3)
components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1)
  • response (90-137)
components/clockify/actions/list-projects/list-projects.mjs (1)
  • response (162-184)
components/clockify/actions/list-time-entries/list-time-entries.mjs (1)
  • response (121-139)
components/clockify/actions/list-projects/list-projects.mjs (2)
components/clockify/actions/list-tasks/list-tasks.mjs (1)
  • response (79-92)
components/clockify/actions/list-time-entries/list-time-entries.mjs (1)
  • response (121-139)
⏰ 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: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (13)
components/clockify/actions/create-project/create-project.mjs (1)

7-7: Version bump is consistent with the release train.

Thanks for keeping the action metadata in sync with the rest of the Clockify package update.

components/clockify/package.json (1)

3-16: Package metadata bump looks good.

Version and platform dependency updates are aligned with the new component functionality.

components/clockify/actions/add-task-to-project/add-task-to-project.mjs (1)

7-7: Action version sync confirmed.

Appreciate the consistent version bump across related Clockify actions.

components/clockify/actions/add-members-to-project/add-members-to-project.mjs (1)

7-7: Version alignment acknowledged.

Keeping the metadata consistent makes release tracking easier.

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

153-166: Confirm dashed query param names for pagination.

Clockify’s REST API expects pagination parameters to use hyphenated keys (e.g., page-size). Please double-check that any actions consuming these new page / pageSize prop definitions translate pageSize into the dashed form before sending requests; otherwise the API ignores the value.(clockify.me)

components/clockify/actions/list-tasks/list-tasks.mjs (2)

3-13: LGTM!

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


14-77: LGTM!

The props configuration correctly uses propDefinitions and properly handles dynamic dependencies for the projectId prop.

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

3-13: LGTM!

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


14-160: LGTM!

The props provide comprehensive filtering capabilities with proper type definitions and dynamic dependencies. The array type overrides for clients and users are appropriate.

components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (2)

3-13: LGTM!

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


14-88: LGTM!

The props are well-defined with appropriate types and dynamic dependencies.

components/clockify/actions/list-time-entries/list-time-entries.mjs (2)

3-13: LGTM!

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


14-119: LGTM!

The props are well-structured with appropriate types, descriptions, and dynamic dependencies. The userId being required makes sense for this endpoint.

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

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6d02d41 and 37806b6.

📒 Files selected for processing (1)
  • components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1)
components/clockify/actions/list-time-entries/list-time-entries.mjs (1)
  • response (121-139)
⏰ 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: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
🔇 Additional comments (1)
components/clockify/actions/get-time-entry-report/get-time-entry-report.mjs (1)

108-116: Previous issue has been resolved.

The previously reported issue regarding this.projectIds vs this.projectId has been fixed. The code now correctly references the singular this.projectId prop and wraps it in an array for the API call.

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!

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.

[APP] Clockify read tools

3 participants