Skip to content

release: v1.3.0#8835

Open
sriramveeraghanta wants to merge 268 commits intomasterfrom
canary
Open

release: v1.3.0#8835
sriramveeraghanta wants to merge 268 commits intomasterfrom
canary

Conversation

@sriramveeraghanta
Copy link
Copy Markdown
Member

No description provided.

sriramveeraghanta and others added 30 commits December 11, 2025 01:18
* 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>
…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
sriramveeraghanta and others added 22 commits March 25, 2026 02:04
…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
Copilot AI review requested due to automatic review settings March 31, 2026 12:20
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 31, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d9e69c83-19c8-40ae-84e0-d3ec1b60d5fa

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch canary

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.

❤️ Share

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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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., IssueUserPropertyProjectUserProperty, descriptiondescription_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 CoreRootStoreRootStore.
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.

Comment on lines +26 to +34
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,
)
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines 226 to 230
_ = ProjectMember.objects.create(
workspace_id=project_invite.workspace_id,
project_id=project_id,
member=user,
role=project_invite.role,
)
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines +133 to +134
"""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"]
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
"""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")
)

Copilot uses AI. Check for mistakes.
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]
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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)).

Suggested change
[writer.writerow(sanitize_csv_row(row)) for row in rows]
for row in rows:
writer.writerow(sanitize_csv_row(row))

Copilot uses AI. Check for mistakes.
Comment on lines +16 to 20
from plane.db.models import APIToken
from plane.app.serializers import APITokenSerializer, APITokenReadSerializer
from plane.app.permissions import WorkspaceEntityPermission


class ApiTokenEndpoint(BaseAPIView):
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
<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 && (
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
<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>/
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
<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>

Copilot uses AI. Check for mistakes.
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.