First, restore AGPL-3.0 licensed code from Git history:
sed -i 's/false;/true;/' web/ce/hooks/use-bulk-operation-status.ts
git checkout e3ebb9b61cc5ed63919a07f1c389f1e0f2b0efe5^ -- web/core/components/issues/bulk-operations
rm -r web/ce/components/issues/bulk-operations && git mv web/core/components/issues/bulk-operations web/ce/components/issues/bulk-operations
Configure the venv
directory ignored by .dockerignore
at project root and you are ready for development.
Then, fill up the gaps with the help of AI.
Pushing images
rm -r apiserver/plane/logs/
git clean -dnx # compare with .dockerignore
export DOCKERHUB_USER=l2dy APP_RELEASE=v0.26.0
cp deploy/selfhost/build.yml build.yml
docker compose -f build.yml build
grep -o '/[a-z-]*:' build.yml | awk "{print \"docker push \\\"${DOCKERHUB_USER:-local}\"\$0\"${APP_RELEASE:-latest}\\\"\"}" | bash
Lint commands for AI
Suggest improvements to the code. Keep your changes contained in the referenced file.
toolbar.tsx
cd web
npx eslint ce/components/issues/bulk-operations/toolbar.tsx --format=compact
ruff check --ignore E501 --fix apiserver/plane/app/views/issue/bulk.py
AI is bad at formatting, so run the formatter yourself:
ruff format apiserver/plane/app/views/issue/bulk.py
Prompts for AI
Implement the bulk operations toolbar in place of the `<BulkOperationsUpgradeBanner />` stub in root.tsx. Requirements:
1. Make use of other components in the same folder and adjust them if needed.
2. Use API in issue.service.ts to perform the actions when the user clicks the Update button.
Read the files and understand what API handleBulkUpdate() needs. Write an API specification and save it to a Markdown file in project root for your Python engineers to implement.
base-issues.store.ts
issue.service.ts
toolbar.tsx:28-61
We could create an implementation guide as well, but the agent will read the Python codebase as the agnet works on it, so it’s not necessary. We are doing it anyways here:
Read the implementation of BulkArchiveIssuesEndpoint and IssueBulkUpdateDateEndpoint and the respective `urlpatterns` in issue.py. Write a detailed guide in Markdown to show your Python engineers how to implement a bulk action endpoint for issues and save it in project root.
base.py
archive.py
issue.py
Implement the Bulk Update Issues API as described in the API specification and follow the Implementation Guide document. Put the implementation in a new file named bulk.py in the apiserver/plane/app/views/issue folder.
BULK_UPDATE_API_SPECIFICATION.md
BULK_ACTIONS_IMPLEMENTATION_GUIDE.md
issue
issue.py
You must follow the API specification. Fix the mismatches.
BULK_UPDATE_API_SPECIFICATION.md
bulk.py
Check if your code conforms to the implementation guide.
BULK_ACTIONS_IMPLEMENTATION_GUIDE.md
bulk.py