-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Feature/tags and subtasks #24346
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
base: main
Are you sure you want to change the base?
Feature/tags and subtasks #24346
Conversation
Add a "Change Tags" submenu to task actions that allows users to add or remove existing workspace tags from tasks.
subtasks have same actions as tasks
Add three new actions: 1. "Convert to Subtask" - For tasks only, pick a parent task 2. "Convert to Task" - For subtasks only, remove parent relationship 3. "Add Subtask" - For tasks only, create subtask with inherited project/section and assignee option
|
Thank you for your contribution! 🎉 🔔 @thomaslombart @spaceDolph1n @tuzemec @xmok you might want to have a look. You can use this guide to learn how to check out the Pull Request locally in order to test it. 📋 Quick checkout commandsBRANCH="feature/tags-and-subtasks"
FORK_URL="https://github.com/abcd-ca/ray-cast-extension-asana.git"
EXTENSION_NAME="asana"
REPO_NAME="ray-cast-extension-asana"
git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run devDue to our current reduced availability, the initial review may take up to 10-15 business days. |
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.
Greptile Overview
Greptile Summary
This PR adds three significant features to the Asana extension:
-
Subtasks Support: Users can now view, create, and manage subtasks. The implementation includes:
- Viewing subtasks in task detail view with a checklist display
- Creating new subtasks with assignee, description, and due date
- Converting tasks to subtasks and vice versa
- Preventing circular dependencies by filtering subtasks from parent selection
-
Tag Management: Users can add and remove tags from existing tasks through a new submenu with lazy-loaded tag data.
-
Task Renaming: A simple form to rename tasks and subtasks with optimistic updates.
The implementation follows existing patterns in the codebase with proper error handling, optimistic updates, and TypeScript typing. However, there are a few issues that need attention:
- Keyboard shortcut conflict between "View Subtasks" and "Move to Section" actions
- Missing cache mutation when creating subtasks from task actions, leading to stale subtask counts
- Minor date typo in the CHANGELOG (2026 instead of 2025)
The API integration is clean, reusing the existing request infrastructure. The new components (CreateSubtaskForm, ParentTaskPicker, RenameTaskForm, SubtasksList) are well-structured and follow Raycast UI patterns.
Confidence Score: 3/5
- This PR has solid implementation but contains logical issues that will cause UX problems
- The code quality is generally good with proper error handling and follows existing patterns. However, the keyboard shortcut conflict will cause one action to not work as expected, and the missing mutateSubtasks prop will lead to stale data requiring manual refreshes. These are functional bugs that will impact user experience. The CHANGELOG date issue is minor but should be fixed.
- Pay close attention to TaskActions.tsx and TaskDetail.tsx - they contain the keyboard shortcut conflict and cache mutation issues
Important Files Changed
File Analysis
| Filename | Score | Overview |
|---|---|---|
| extensions/asana/CHANGELOG.md | 4/5 | Changelog updated with new features; minor date typo (2026 instead of 2025) |
| extensions/asana/src/api/tasks.ts | 5/5 | Added subtask APIs and parent field to Task type; clean implementation with proper typing |
| extensions/asana/src/components/TaskActions.tsx | 3/5 | Added subtask/tag actions and rename functionality; keyboard shortcut conflict and missing mutateSubtasks prop |
| extensions/asana/src/components/TaskDetail.tsx | 3/5 | Enhanced with subtasks display and actions; keyboard shortcut conflict with existing actions |
| title="Add Subtask" | ||
| icon={Icon.Plus} | ||
| shortcut={{ modifiers: ["cmd", "shift"], key: "n" }} | ||
| target={<CreateSubtaskForm parentTask={task} workspace={workspace} />} |
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.
Missing mutateSubtasks prop: When creating a subtask from TaskActions, the CreateSubtaskForm is not provided with a way to update the parent's subtasks cache. This means after creating a subtask, the subtask count in TaskDetail won't update until the user manually refreshes.
To fix this, you need to:
- Get the subtasks mutation function (likely need to pass it down from TaskDetail)
- Pass it to CreateSubtaskForm
Example fix in TaskDetail.tsx:
<TaskActions
task={task}
workspace={workspace}
isDetail={true}
mutateList={mutateList}
mutateDetail={mutateDetail}
mutateSubtasks={mutate} // Pass the subtasks mutate function
/>Then update TaskActions to accept and pass this through:
target={<CreateSubtaskForm parentTask={task} workspace={workspace} mutateSubtasks={mutateSubtasks} />}|
@pernielsentikaer Hello, may I ask you to review, please? |
Greptile OverviewGreptile SummaryThis PR adds three major features to the Asana extension: Features Added
Implementation QualityThe implementation follows existing patterns well:
Issues Found
The subtasks refresh issue means users won't see newly created subtasks in TaskDetail until they manually refresh. Confidence Score: 3/5
Important Files ChangedFile Analysis
|
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.
2 files reviewed, 2 comments
| @@ -1,5 +1,13 @@ | |||
| # Asana Changelog | |||
|
|
|||
| ## [Add subtasks support and tag management] - 2026-01-09 | |||
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.
the date "2026-01-09" is in the future. This should likely be "2025-01-09" (current year).
| ## [Add subtasks support and tag management] - 2026-01-09 | |
| ## [Add subtasks support and tag management] - 2025-01-09 |
| title="Add Subtask" | ||
| icon={Icon.Plus} | ||
| shortcut={{ modifiers: ["cmd", "shift"], key: "n" }} | ||
| target={<CreateSubtaskForm parentTask={task} workspace={workspace} />} |
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.
the CreateSubtaskForm is missing the mutateSubtasks prop. When a subtask is created from TaskActions (e.g., from within TaskDetail), the parent task's subtasks list won't be refreshed. This means newly created subtasks won't appear in TaskDetail until the user manually refreshes.
The fix requires accessing the subtasks mutation function. Since TaskDetail calls useSubtasks(task.gid), you would need to either:
- Pass the mutate function down from TaskDetail through TaskActions, or
- Have CreateSubtaskForm call
mutateDetail()to refresh the entire task detail (which will trigger useSubtasks to re-fetch)
Option 2 is simpler - pass mutateDetail to CreateSubtaskForm and have it call that after creating a subtask.
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Description
Screencast
https://youtu.be/fc_1RrHIHto
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare located outside the metadata folder if they were not generated with our metadata tool