Conversation
* chore: upate function declarations * chore: formatted files
Co-authored-by: Pushya Mitra Thiruvooru <pushya@Pushyas-MacBook-Pro.local>
* feat: implement OAuth configuration helper and integrate into auth forms * fix: ensure OAuth providers are disabled by default if not configured
* chore: init tailwind v4 * chore: update all configs * chore: add source to parse monorepo packages * chore: combine all css files * feat: added extended colors * chore: update typography * chore: update extended color var names * refactor: remove initial spacing variable and update dark mode selector * chore: update css files * chore: update animations * chore: remove spacing tokens * fix: external css files * chore: update tailwind-merge version * chore: update font family * chore: added brief agents.md and story for new design system * chore: enhance design system documentation with rare exceptions for visual separation * chore: add fontsource package for typography * chore: material symbols font added * chore: update shadow default * chore: add stroke and outline theme vars * chore: update ring and fill colors * chore: overwrite tailwind typography tokens * chore: add high contrast mode tokens * chore: update scrollbar colors * chore: backward compatibility for buttons and placeholders * chore: add priority colors * chore: update urgent priority color * chore: update plan colors * chore: add missing utility class * chore: update height and padding classes * chore: update label colors * chore: add missing utlity * chore: add typography plugin to space app * chore: replace existing classNames with new design system tokens #8244 (#8278) * chore: update border colors * chore: update all borders * chore: update text colors * chore: update css variables * chore: update font sizes and weights * chore: update bg colors * chore: sync changes * fix: uncomment spacing-1200 variable in variables.css * chore: update primary colors * refactor: updated border to border-subtle * refactor: update various components and improve UI consistency across the application * updated classnames * updated classnames * refactor: update color-related class names to use new design system variables for consistency * chore: default automations * chore: update text sizes * chore: home and power k * chore: home and power k * chore: replace ui package button components * chore: update text sizes * chore: updated issue identifier (#8275) * refactor: top navigation and sidebar design token (#8276) * chore: update all button components (#8277) * chore: new button component * chore: update existing buttons * chore: overwrite tailwind typography tokens * fix: twMerge config + fixed cn instances * refactor: toast design token updated (#8279) * chore: update existing buttons * chore: tooltip design token updatged (#8280) * chore: moved cn utility to propel (#8281) * chore: update space app UI (#8285) * chore; update space app filters component * fix: button whitespace wrap * chore: space app votes * chore: update dropdown components * refactor: auth, onboarding, sidebar, and common component design token migration (#8291) * chore: checkbox component design token updated * chore: indicator and oauth component design token updated * chore: sidebar design token updated * chore: auth and onboarding design token updated * chore: update divider color * style: update background colors and hover effects across list components * fix: tailwind merge * refactor: toggle switch design token migration and header utility classname added (#8295) * chore: toggle component design token updated * chore: h-header utility class added * chore: updated color tokens for work item detail page (#8296) * chore: update react-day-picker UI * refactor: update button sizes and styles in filters components * refactor: breadcrumbs design token updated (#8297) * chore: update priority icon colors * refactor: updated layout variables * chore: update plan card primary CTA * Chore update editor design system (#8299) * refactor: update styles for callout, color selector, logo selector, and image uploader * refactor:fix image * chore: update settings UI * chore: updated notifications color and size tokens (#8302) * chore: update sm button border radius * fix: logo renderer * chore: icon button component * chore: remove deprecated classes * chore: remove deprecated classes * chore: update editor list spacing * fix: icon button size * chore: improvements (#8309) * chore: update cycles and modules pages * refactor: update background styles across various components to use new design system colors * fix: button type errors * chore: update modals design system (#8310) * refactor: callout bg * refactor: code bg * refactor: modal size and variant --------- Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com> * chore: update next-themes * design: update billing and plans component styles and remove unused utility functions (#8313) * refactor: empty state design token migration and improvements (#8315) * fix: profile page * refactor: tabs design token updated (#8316) * chore: updated buttons and tokens for work items (#8317) * fix: adjust trial button spacing in checkout modal * chore: update add button hover state * fix: type error (#8318) * fix: type error * chore: code refactor * refactor: update button sizes and background styles in rich filters components * refactor: update editor bg * refactor: enhance Gantt chart sidebar functionality and styling - Removed unused prop from . - Updated to include new props for better block management and scrolling behavior. - Improved auto-scroll functionality for Gantt chart items. - Adjusted styles in component for consistent design. * regression: gantt design * chore: new badge component * fix: favorite star * chore: update backgroung, typography and button sizes across workspace settings general and members pages * fix: header button sizes * fix: emoji icon logo (#8323) * more fixes * chore: update settings sidebar * refactor: avatar component * chore: updated work item detail sidebar (#8327) * refactor: update link preview * fix: work item property dropdowns * fix: dropdown buttons border radius * chore: update power k translation * chore: updated profile activity design (#8328) * chore: update settings pages * chore: update work item sidebar alignments (#8330) * refactor: admin design system * chore: update page header --------- Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com> Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com> Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Co-authored-by: gakshita <akshitagoyal1516@gmail.com> Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com> Co-authored-by: b-saikrishnakanth <bsaikrishnakanth97@gmail.com> Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com> * fix: formatting * reexport types * fix: lint error --------- Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com> Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com> Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Co-authored-by: gakshita <akshitagoyal1516@gmail.com> Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com> Co-authored-by: b-saikrishnakanth <bsaikrishnakanth97@gmail.com> Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
…ate project-related fetch keys (#8347)
…g to new design system (#8345) * refactor: update styling and class names according to new design system in charts * refactor: clean up
* chore: tooltip enhancements * chore: project card enhancements * chore: work item card enhancements * chore: update component styles and class names for consistency across the application --------- Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
…8354) * chore: replace old css vars * fix: replace shadow and primary colors * chore: remove hardcoded colors
…webhook dispatch (#8792) Fixes #6746 API-driven issue updates (PUT update, PUT create-via-upsert, PATCH) were missing `model_activity.delay()` calls, so webhooks were never dispatched for changes made through the API. The web UI paths already include these calls (e.g. in `post()` at L475), but the `put()` and `partial_update()` methods only called `issue_activity.delay()`. This adds `model_activity.delay()` immediately after each existing `issue_activity.delay()` in these three code paths, using the same signature as the existing call in `post()`. Tested on Plane CE v1.2.1 self-hosted: API PATCH triggers `webhook_send_task` in the Celery worker, confirming webhook delivery. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…#8801) * feat: intake action buttons redesign * chore: code refactoring
Bumps the pip group with 1 update in the /apps/api/requirements directory: [requests](https://github.com/psf/requests). Updates `requests` from 2.32.4 to 2.33.0 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.4...v2.33.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…pace spreadsheet (#8821) * fix: guard against undefined issue in SpreadsheetIssueRow * fix: add defensive guard for isIssueNew in list block-root
Bumps the pip group with 1 update in the /apps/api/requirements directory: [cryptography](https://github.com/pyca/cryptography). Updates `cryptography` from 46.0.5 to 46.0.6 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](pyca/cryptography@46.0.5...46.0.6) --- updated-dependencies: - dependency-name: cryptography dependency-version: 46.0.6 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* add IssueRelations external API * update serializer methods and filter by slug
* add project summary endpoint * update response structure * add estimates external API endpoints with migrations * fix invalid project and workspace error
…upload handling (#8830) * fix: profile cover update * chore: code refactoring * chore: code refactoring
Update brace-expansion override from 2.0.2 to 5.0.5 and add picomatch, yaml@1, and yaml@2 overrides to pin transitive dependency versions. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore(deps): replace dotenvx with dotenv and update dependency overrides Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: sort devDependencies in package.json files Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…#8834) The bulk update date endpoint fetched issues by ID without filtering by workspace or project, allowing any authenticated project member to modify start_date and target_date of issues in any workspace/project across the entire instance (IDOR - CWE-639). Scoped the query to include workspace__slug and project_id filters, consistent with other issue endpoints in the codebase. Ref: GHSA-4q54-h4x9-m329
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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.
Pull request overview
Release v1.3.0 updates legal compliance and modernizes both backend + admin tooling, while refactoring several APIs/serializers (notably user-property + description fields) and adding additional event tracking.
Changes:
- Add SPDX/copyright headers repo-wide and introduce CI/docs for automated header checks.
- Refactor workspace/project/issue/page APIs & serializers (e.g.,
IssueUserProperty→ProjectUserProperty,description→description_json, invitation join validation via token) and add analytics tracking events. - Admin app modernization: provider/store refactors, theming/UI token updates, switch to OxLint/oxfmt, and build/config updates.
Reviewed changes
Copilot reviewed 296 out of 4384 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/api/plane/app/views/workspace/member.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/label.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/invite.py | Add SPDX header; switch invite events to track_event; join validation via token; add invite/join tracking. |
| apps/api/plane/app/views/workspace/home.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/favorite.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/estimate.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/draft.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/cycle.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/workspace/base.py | Add SPDX header; track workspace create/delete; sanitize CSV rows. |
| apps/api/plane/app/views/webhook/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/view/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/user/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/timezone/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/state/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/search/issue.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/search/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/project/member.py | Add SPDX header; switch to ProjectUserProperty; refactor sort order derivation. |
| apps/api/plane/app/views/project/invite.py | Add SPDX header; switch to ProjectUserProperty; adjust project invite acceptance member creation. |
| apps/api/plane/app/views/project/base.py | Add SPDX header; switch sort ordering to ProjectUserProperty; add intake_count; remove issue-property creation. |
| apps/api/plane/app/views/page/version.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/page/base.py | Add SPDX header; rename page version task; migrate description field name; simplify queryset parens; fix old/new HTML capture ordering. |
| apps/api/plane/app/views/notification/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/module/issue.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/module/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/module/archive.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/version.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/subscriber.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/sub_issue.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/relation.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/reaction.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/link.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/label.py | Add SPDX header; minor serializer formatting. |
| apps/api/plane/app/views/issue/comment.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/base.py | Add SPDX header; rename display property endpoint & serializer; switch to ProjectUserProperty with upsert-style behavior. |
| apps/api/plane/app/views/issue/attachment.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/archive.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/issue/activity.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/intake/base.py | Add SPDX header; rename issue description field to description_json. |
| apps/api/plane/app/views/external/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/exporter/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/estimate/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/error_404.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/cycle/issue.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/cycle/archive.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/asset/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/api.py | Add SPDX header; remove ServiceApiTokenEndpoint. |
| apps/api/plane/app/views/analytic/project_analytics.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/analytic/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/analytic/advance.py | Add SPDX/copyright header. |
| apps/api/plane/app/views/init.py | Add SPDX header; rename exported endpoint; remove ServiceApiTokenEndpoint export. |
| apps/api/plane/app/urls/workspace.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/webhook.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/views.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/user.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/timezone.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/state.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/search.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/project.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/page.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/notification.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/module.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/issue.py | Add SPDX header; rename endpoint reference & comments to ProjectUserProperty. |
| apps/api/plane/app/urls/intake.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/external.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/exporter.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/estimate.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/cycle.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/asset.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/api.py | Add SPDX header; remove service token route. |
| apps/api/plane/app/urls/analytic.py | Add SPDX/copyright header. |
| apps/api/plane/app/urls/init.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/workspace.py | Add SPDX header; update invite link to use token query param. |
| apps/api/plane/app/serializers/webhook.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/view.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/user.py | Add SPDX header; include last_login_time field. |
| apps/api/plane/app/serializers/state.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/project.py | Add SPDX header; add forbidden-char validations; add next_work_item_sequence. |
| apps/api/plane/app/serializers/page.py | Add SPDX header; migrate page description to description_json; update binary update serializer. |
| apps/api/plane/app/serializers/notification.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/module.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/issue.py | Add SPDX header; migrate issue description field; rename to ProjectUserPropertySerializer. |
| apps/api/plane/app/serializers/intake.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/importer.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/favorite.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/exporter.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/estimate.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/draft.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/cycle.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/base.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/asset.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/api.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/analytic.py | Add SPDX/copyright header. |
| apps/api/plane/app/serializers/init.py | Add SPDX header; update exported serializer name. |
| apps/api/plane/app/permissions/workspace.py | Add SPDX/copyright header. |
| apps/api/plane/app/permissions/project.py | Add SPDX/copyright header. |
| apps/api/plane/app/permissions/page.py | Add SPDX/copyright header. |
| apps/api/plane/app/permissions/base.py | Add SPDX header; add workspace membership check inside permission decorator. |
| apps/api/plane/app/permissions/init.py | Add SPDX/copyright header. |
| apps/api/plane/app/middleware/api_authentication.py | Add SPDX/copyright header. |
| apps/api/plane/app/middleware/init.py | Add SPDX/copyright header (new file). |
| apps/api/plane/app/apps.py | Add SPDX/copyright header. |
| apps/api/plane/app/init.py | Add SPDX/copyright header (new file). |
| apps/api/plane/api/views/user.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/sticky.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/state.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/module.py | Add SPDX header; switch module patch serializer to ModuleUpdateSerializer. |
| apps/api/plane/api/views/member.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/issue.py | Add SPDX header; dispatch model_activity webhook jobs on issue writes. |
| apps/api/plane/api/views/invite.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/intake.py | Add SPDX header; accept legacy description for description_json in intake issue creation/updates. |
| apps/api/plane/api/views/base.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/asset.py | Add SPDX/copyright header. |
| apps/api/plane/api/views/init.py | Add SPDX header; export ProjectSummaryAPIEndpoint. |
| apps/api/plane/api/urls/work_item.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/user.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/sticky.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/state.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/schema.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/project.py | Add SPDX header; add project summary route. |
| apps/api/plane/api/urls/module.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/member.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/label.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/invite.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/intake.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/cycle.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/asset.py | Add SPDX/copyright header. |
| apps/api/plane/api/urls/init.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/workspace.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/user.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/sticky.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/state.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/project.py | Add SPDX header; validate forbidden chars for name/identifier across create/update/validate. |
| apps/api/plane/api/serializers/module.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/member.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/issue.py | Add SPDX header; change excluded field to description_json; expose description mapped from description_json in expand serializer. |
| apps/api/plane/api/serializers/invite.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/intake.py | Add SPDX header; include deprecated description mapping to description_json. |
| apps/api/plane/api/serializers/estimate.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/cycle.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/base.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/asset.py | Add SPDX/copyright header. |
| apps/api/plane/api/serializers/init.py | Add SPDX/copyright header. |
| apps/api/plane/api/rate_limit.py | Add SPDX/copyright header. |
| apps/api/plane/api/middleware/api_authentication.py | Add SPDX/copyright header. |
| apps/api/plane/api/middleware/init.py | Add SPDX/copyright header (new file). |
| apps/api/plane/api/apps.py | Add SPDX/copyright header. |
| apps/api/plane/api/init.py | Add SPDX/copyright header (new file). |
| apps/api/plane/analytics/apps.py | Add SPDX/copyright header. |
| apps/api/plane/analytics/init.py | Add SPDX/copyright header (new file). |
| apps/api/plane/init.py | Add SPDX/copyright header. |
| apps/api/package.json | Reorder and normalize license/description fields. |
| apps/api/manage.py | Add SPDX/copyright header. |
| apps/admin/utils/public-asset.ts | Add SPDX/copyright header (new file). |
| apps/admin/tsconfig.json | Simplify path aliases to a single @/* mapping. |
| apps/admin/tailwind.config.cjs | Remove Tailwind config preset file. |
| apps/admin/store/workspace.store.ts | Add SPDX header; rename store type to RootStore. |
| apps/admin/store/user.store.ts | Add SPDX header; rename store type to RootStore. |
| apps/admin/store/theme.store.ts | Add SPDX header; adjust RootStore import path; rename store type to RootStore. |
| apps/admin/store/root.store.ts | Add SPDX header; rename CoreRootStore → RootStore. |
| apps/admin/store/instance.store.ts | Add SPDX header; rename store type to RootStore. |
| apps/admin/providers/user.provider.tsx | Add SPDX/copyright header. |
| apps/admin/providers/toast.tsx | Add SPDX/copyright header. |
| apps/admin/providers/store.provider.tsx | Add SPDX header; fix RootStore import path. |
| apps/admin/providers/instance.provider.tsx | Add SPDX/copyright header. |
| apps/admin/providers/index.tsx | New provider entrypoint aggregating core + extended providers. |
| apps/admin/providers/extended.tsx | New no-op placeholder for extended providers. |
| apps/admin/providers/core.tsx | Add SPDX header; split providers into CoreProviders; clean up imports. |
| apps/admin/postcss.config.js | Add PostCSS config via shared tailwind-config (ESM). |
| apps/admin/postcss.config.cjs | Remove CJS PostCSS config. |
| apps/admin/package.json | Switch lint/format scripts to oxlint/oxfmt; add font deps; remove Sentry + react-router-dom. |
| apps/admin/nginx/nginx.conf | Add security headers. |
| apps/admin/lib/b-progress/index.tsx | Add SPDX header; re-export progress component. |
| apps/admin/lib/b-progress/AppProgressBar.tsx | Add SPDX/copyright header. |
| apps/admin/hooks/use-sidebar-menu/types.ts | Add SPDX header; introduce sidebar menu item type. |
| apps/admin/hooks/use-sidebar-menu/index.ts | Add SPDX header; expose useSidebarMenu. |
| apps/admin/hooks/use-sidebar-menu/core.ts | Add SPDX header; define core sidebar links. |
| apps/admin/hooks/store/use-workspace.tsx | Add SPDX header; update StoreContext import. |
| apps/admin/hooks/store/use-user.tsx | Add SPDX header; update StoreContext import. |
| apps/admin/hooks/store/use-theme.tsx | Add SPDX header; update StoreContext import. |
| apps/admin/hooks/store/use-instance.tsx | Add SPDX header; update StoreContext import. |
| apps/admin/hooks/store/index.ts | Add SPDX header; new barrel export for store hooks. |
| apps/admin/hooks/oauth/types.ts | Add SPDX header; auth-mode hook types. |
| apps/admin/hooks/oauth/index.ts | Add SPDX header; add useAuthenticationModes helper. |
| apps/admin/helpers/authentication.ts | Add SPDX header; add canDisableAuthMethod helper. |
| apps/admin/ee/store/root.store.ts | Remove EE store re-export. |
| apps/admin/ee/components/common/index.ts | Remove EE component re-export. |
| apps/admin/ee/components/authentication/index.ts | Remove EE index. |
| apps/admin/ee/components/authentication/authentication-modes.tsx | Remove EE authentication-modes re-export. |
| apps/admin/core/utils/public-asset.ts | Remove core public-asset stub. |
| apps/admin/core/lib/b-progress/index.tsx | Remove core b-progress re-export. |
| apps/admin/core/hooks/store/index.ts | Remove core store-hooks barrel. |
| apps/admin/core/components/instance/instance-not-ready.tsx | Remove old location; moved to apps/admin/components/instance. |
| apps/admin/core/components/instance/form-header.tsx | Remove old location; moved to apps/admin/components/instance. |
| apps/admin/core/components/common/banner.tsx | Remove old location; moved to apps/admin/components/common. |
| apps/admin/components/workspace/list-item.tsx | Add SPDX header; update styling; replace external link icon. |
| apps/admin/components/instance/loading.tsx | Add SPDX/copyright header. |
| apps/admin/components/instance/instance-not-ready.tsx | New location for instance-not-ready component. |
| apps/admin/components/instance/form-header.tsx | New location for instance form header (updated design tokens). |
| apps/admin/components/instance/failure.tsx | Add SPDX header; adjust layout/styling. |
| apps/admin/components/common/page-wrapper.tsx | New page layout wrapper component. |
| apps/admin/components/common/page-header.tsx | Add SPDX/copyright header. |
| apps/admin/components/common/new-user-popup.tsx | Add SPDX header; update styling and button variants/sizes. |
| apps/admin/components/common/logo-spinner.tsx | Add SPDX/copyright header. |
| apps/admin/components/common/header/index.tsx | Add SPDX header; refactor breadcrumb labeling and core/extended mapping. |
| apps/admin/components/common/header/extended.ts | Add SPDX header; placeholder mapping export. |
| apps/admin/components/common/header/core.ts | Add SPDX header; define core header labels. |
| apps/admin/components/common/empty-state.tsx | Add SPDX header; update styling and primary button size. |
| apps/admin/components/common/copy-field.tsx | Add SPDX header; use CopyIcon; update styles/variants/sizes. |
| apps/admin/components/common/controller-switch.tsx | Add SPDX header; new RHF-controlled toggle component. |
| apps/admin/components/common/controller-input.tsx | Add SPDX header; update styles and helper text size. |
| apps/admin/components/common/confirm-discard-modal.tsx | Add SPDX header; update modal styling and button variants/sizes. |
| apps/admin/components/common/code-block.tsx | Add SPDX header; update token-based styles. |
| apps/admin/components/common/breadcrumb-link.tsx | Add SPDX header; simplify and update link styling. |
| apps/admin/components/common/banner.tsx | Add SPDX header; new banner component location with updated style tokens. |
| apps/admin/components/authentication/password-config-switch.tsx | Add SPDX/copyright header. |
| apps/admin/components/authentication/google-config.tsx | Add SPDX header; update button styles/variants. |
| apps/admin/components/authentication/gitlab-config.tsx | Add SPDX header; update button styles/variants. |
| apps/admin/components/authentication/github-config.tsx | Add SPDX header; (also removes unused React import). |
| apps/admin/components/authentication/gitea-config.tsx | Add SPDX header; fix imports for getButtonStyling; update variants. |
| apps/admin/components/authentication/email-config-switch.tsx | Add SPDX/copyright header. |
| apps/admin/components/authentication/authentication-method-card.tsx | Add SPDX header; update styling tokens and typography scales. |
| apps/admin/ce/store/root.store.ts | Remove CE RootStore wrapper. |
| apps/admin/ce/components/common/upgrade-button.tsx | Remove CE upgrade button. |
| apps/admin/ce/components/common/index.ts | Remove CE common barrel. |
| apps/admin/ce/components/authentication/index.ts | Remove CE auth barrel. |
| apps/admin/app/routes.ts | Add SPDX/copyright header. |
| apps/admin/app/root.tsx | Add SPDX header; add fonts + preload; wrap Outlet with background; remove Sentry error boundary capture. |
| apps/admin/app/entry.client.tsx | Add SPDX header; remove Sentry initialization. |
| apps/admin/app/components/404.tsx | Add SPDX header; update styling and button variant/size. |
| apps/admin/app/compat/next/navigation.ts | Add SPDX/copyright header. |
| apps/admin/app/compat/next/link.tsx | Add SPDX/copyright header. |
| apps/admin/app/compat/next/image.tsx | Add SPDX/copyright header. |
| apps/admin/app/compat/next/helper.ts | Add SPDX/copyright header. |
| apps/admin/app/(all)/(home)/sign-in-form.tsx | Add SPDX header; update styling; move FormHeader import; disable autocomplete. |
| apps/admin/app/(all)/(home)/page.tsx | Add SPDX/copyright header. |
| apps/admin/app/(all)/(home)/layout.tsx | Add SPDX header; update layout styling and background. |
| apps/admin/app/(all)/(home)/auth-helpers.tsx | Add SPDX header; remove unused auth-mode builder helper. |
| apps/admin/app/(all)/(home)/auth-header.tsx | Add SPDX header; update sticky header styling and tokens. |
| apps/admin/app/(all)/(home)/auth-banner.tsx | Add SPDX header; update banner styling and tokens. |
| apps/admin/app/(all)/(dashboard)/workspace/page.tsx | Add SPDX header; refactor page to use PageWrapper and updated styles. |
| apps/admin/app/(all)/(dashboard)/workspace/create/page.tsx | Add SPDX header; refactor page to use PageWrapper. |
| apps/admin/app/(all)/(dashboard)/sidebar.tsx | Add SPDX header; update sidebar styling and class consolidation. |
| apps/admin/app/(all)/(dashboard)/sidebar-menu.tsx | Add SPDX header; derive menu from useSidebarMenu hook. |
| apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx | Add SPDX header; update tokens; add void on promise; update sizing. |
| apps/admin/app/(all)/(dashboard)/layout.tsx | Add SPDX header; use shared AdminHeader; fix NewUserPopup import; add scrollbar. |
| apps/admin/app/(all)/(dashboard)/image/page.tsx | Add SPDX header; refactor to PageWrapper. |
| apps/admin/app/(all)/(dashboard)/image/form.tsx | Add SPDX header; update link/button tokens and copy text. |
| apps/admin/app/(all)/(dashboard)/general/page.tsx | Add SPDX header; refactor to PageWrapper. |
| apps/admin/app/(all)/(dashboard)/general/intercom.tsx | Add SPDX header; void promise use; update tokens and layout. |
| apps/admin/app/(all)/(dashboard)/email/test-email-modal.tsx | Add SPDX header; update overlay/modal tokens; update button variants/sizes and copy. |
| apps/admin/app/(all)/(dashboard)/email/page.tsx | Add SPDX header; refactor to PageWrapper with header actions; update copy + tokens. |
| apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx | Add SPDX header; update select + section styling and button tokens/copy. |
| apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx | Add SPDX header; refactor to PageWrapper customHeader; adjust toast copy. |
| apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx | Add SPDX header; refactor to PageWrapper customHeader; adjust toast copy. |
| apps/admin/app/(all)/(dashboard)/authentication/github/page.tsx | Add SPDX header; refactor to PageWrapper customHeader; adjust toast copy. |
| apps/admin/app/(all)/(dashboard)/authentication/gitea/page.tsx | Add SPDX header; refactor to PageWrapper customHeader; adjust toast copy. |
| apps/admin/app/(all)/(dashboard)/ai/page.tsx | Add SPDX header; refactor to PageWrapper. |
| apps/admin/app/(all)/(dashboard)/ai/form.tsx | Add SPDX header; update link/button tokens; tweak copy and styling. |
| apps/admin/Dockerfile.admin | Update global turbo version. |
| README.md | Update community links (Discord → Forum), rename “Issues” → “Work Items”, update “Built with” banner. |
| COPYRIGHT_CHECK.md | Add docs for verifying/applying SPDX headers via addlicense. |
| COPYRIGHT.txt | Add SPDX header template for addlicense. |
| CONTRIBUTING.md | Update lint/format docs to OxLint/oxfmt and community link to Forum. |
| AGENTS.md | Add agent/dev guide with common commands and style guidance. |
| .oxlintrc.json | Add OxLint configuration. |
| .oxfmtrc.json | Replace Prettier+plugin config with native oxfmt config + Tailwind sort settings. |
| .github/workflows/sync-repo.yml | Remove sync workflow. |
| .github/workflows/sync-repo-pr.yml | Remove sync PR workflow. |
| .github/workflows/pull-request-build-lint-api.yml | Update action versions; add pip caching. |
| .github/workflows/feature-deployment.yml | Update action versions across checkout/docker/tailscale/build-push. |
| .github/workflows/copyright-check.yml | Add new CI workflow to enforce SPDX headers via addlicense. |
| .github/workflows/codespell.yml | Remove codespell workflow. |
| .github/workflows/codeql.yml | Update CodeQL action versions and checkout. |
| .github/workflows/check-version.yml | Update checkout/setup-node action versions. |
| .github/workflows/build-branch.yml | Update checkout/upload-artifact/makeplane build-push/gh-release action versions. |
| .github/ISSUE_TEMPLATE/config.yaml | Update community support link copy (Discord → Forum). |
| .github/ISSUE_TEMPLATE/--feature-request.yaml | Add plane label to feature requests. |
| .github/ISSUE_TEMPLATE/--bug-report.yaml | Add plane label to bug reports. |
| .codespellrc | Remove codespell config. |
| if not WorkspaceMember.objects.filter( | ||
| member=request.user, | ||
| workspace__slug=kwargs["slug"], | ||
| is_active=True, | ||
| ).exists(): | ||
| return Response( | ||
| {"error": "You don't have the required permissions."}, | ||
| status=status.HTTP_403_FORBIDDEN, | ||
| ) |
There was a problem hiding this comment.
status is referenced but (based on this diff hunk) not imported in this module, which will raise NameError at runtime. Import status from rest_framework or return Response(..., status=403) without relying on status.
| _ = ProjectMember.objects.create( | ||
| workspace_id=project_invite.workspace_id, | ||
| project_id=project_id, | ||
| member=user, | ||
| role=project_invite.role, | ||
| ) |
There was a problem hiding this comment.
This creation call previously set workspace_id=project_invite.workspace_id but now omits the workspace reference entirely. Elsewhere in this PR ProjectMember creation sets workspace_id, so this is likely to violate a non-null constraint or create inconsistent rows. Include both workspace_id=project_invite.workspace_id and project_id=project_id when creating the ProjectMember.
| """Get the next sequence ID that will be assigned to a new issue""" | ||
| max_sequence = IssueSequence.objects.filter(project_id=obj.id).aggregate(max_seq=Max("sequence"))["max_seq"] |
There was a problem hiding this comment.
This implementation issues an aggregate query per project instance (N+1) in list responses. Consider computing max(sequence) via queryset annotation/subquery in the view (or bulk-fetching max sequences for all returned project IDs) and then reading a prefetched/annotated value in the serializer.
| """Get the next sequence ID that will be assigned to a new issue""" | |
| max_sequence = IssueSequence.objects.filter(project_id=obj.id).aggregate(max_seq=Max("sequence"))["max_seq"] | |
| """Get the next sequence ID that will be assigned to a new issue | |
| This method first tries to use a prefetched/annotated max sequence value | |
| on the Project instance (e.g. via queryset annotation in the view) to | |
| avoid issuing an aggregate query per project (N+1). If such a value is | |
| not available, it falls back to computing the aggregate directly. | |
| """ | |
| # Prefer an annotated/prefetched value on the object if available | |
| annotated_max_sequence = getattr(obj, "max_issue_sequence", None) | |
| if annotated_max_sequence is not None: | |
| return (annotated_max_sequence + 1) if annotated_max_sequence else 1 | |
| # Fallback to per-project aggregate query for backwards compatibility | |
| max_sequence = ( | |
| IssueSequence.objects.filter(project_id=obj.id) | |
| .aggregate(max_seq=Max("sequence")) | |
| .get("max_seq") | |
| ) |
| csv_buffer = io.StringIO() | ||
| writer = csv.writer(csv_buffer, delimiter=",", quoting=csv.QUOTE_ALL) | ||
| [writer.writerow(row) for row in rows] | ||
| [writer.writerow(sanitize_csv_row(row)) for row in rows] |
There was a problem hiding this comment.
Avoid using a list comprehension for side effects here; it allocates an unused list and hurts readability. Replace it with a simple for row in rows: loop that calls writer.writerow(sanitize_csv_row(row)).
| [writer.writerow(sanitize_csv_row(row)) for row in rows] | |
| for row in rows: | |
| writer.writerow(sanitize_csv_row(row)) |
| from plane.db.models import APIToken | ||
| from plane.app.serializers import APITokenSerializer, APITokenReadSerializer | ||
| from plane.app.permissions import WorkspaceEntityPermission | ||
|
|
||
|
|
||
| class ApiTokenEndpoint(BaseAPIView): |
There was a problem hiding this comment.
ServiceApiTokenEndpoint (and its route) is removed in this PR, which is a breaking API change for any clients depending on service-token creation/retrieval. If removal is intended for v1.3.0, consider adding a deprecation window (keep the endpoint but return a structured deprecation error), or document the breaking change explicitly in release notes/changelog.
| <div className="relative z-10 flex h-header w-full flex-shrink-0 flex-row items-center justify-between gap-x-2 gap-y-4 border-b border-subtle bg-surface-1 p-4"> | ||
| <div className="flex w-full flex-grow items-center gap-2 overflow-ellipsis whitespace-nowrap"> | ||
| <HamburgerToggle /> | ||
| {breadcrumbItems.length >= 0 && ( |
There was a problem hiding this comment.
This condition is always true (length is never negative), so it doesn’t guard anything and makes the render logic harder to follow. Either remove the condition entirely or make it meaningful (e.g., breadcrumbItems.length > 0) if you intend to hide breadcrumbs when empty.
| <div className="flex flex-wrap w-full items-center gap-2.5"> | ||
| <h3 className={`text-base font-medium capitalize`}>{workspace.name}</h3>/ | ||
| <div className="flex w-full flex-wrap items-center gap-2.5"> | ||
| <h3 className={`text-14 font-medium capitalize`}>{workspace.name}</h3>/ |
There was a problem hiding this comment.
There is a literal / rendered after the workspace name, which will show up in the UI. If this is not intended as a separator, remove it; if it is intended, it should likely be a styled element (e.g., inside its own span) to avoid layout/spacing issues.
| <h3 className={`text-14 font-medium capitalize`}>{workspace.name}</h3>/ | |
| <h3 className={`text-14 font-medium capitalize`}>{workspace.name}</h3> | |
| <span className="text-14 text-tertiary">/</span> |
No description provided.