Compare commits

...
Author SHA1 Message Date
Aaryan Khandelwal 6cd6269a1d fix: comments mention 2025-09-30 13:35:25 +05:30
sriram veeraghanta ae084e197b fix: runtime errors in api server 2025-09-30 02:02:29 +05:30
sriram veeraghanta 65b1004659 fix: build errors in api 2025-09-30 00:23:43 +05:30
sriram veeraghantaandGitHub 10b5cbed0b Sync: Community Changes #4324 2025-09-29 19:33:55 +05:30
sriramveeraghanta d6b80f443d fix: merge conflicts 2025-09-29 19:33:10 +05:30
sriram veeraghantaandGitHub ebeac413fa [WEB-5044] fix: ruff lint and format errors (#4323)
* fix: lint errors

* fix: file formatting

* fix: lint errors
2025-09-29 19:15:42 +05:30
sriram veeraghantaandGitHub 9237f568dd [WEB-5044] fix: ruff lint and format errors (#7868)
* fix: lint errors

* fix: file formatting

* fix: code refactor
2025-09-29 19:15:32 +05:30
2326680f7b [WEB-5047] fix: display customer websites without protocol (#4161)
* feat: simplify customer website links

* refactor: move url display util to shared package

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-29 19:15:25 +05:30
Jayash TripathyandGitHub 9ccde9fa9c [WEB-5039]fix: add key prop to WidgetConfigSidebarFilters to reset on widget change #4321
- Prevents stale FilterInstance when switching between widgets
- Ensures fresh filter state for each widget
2025-09-29 19:02:42 +05:30
M. PalanikannanandGitHub d63015f53d [WIKI-697] fix: padding for comments menu with stickies #4309 2025-09-29 16:04:35 +05:30
Vipin ChaudharyandGitHub 9b641e6407 [SILO-536] [WIKI-621] feat: drawio integration (#4317) 2025-09-29 15:49:29 +05:30
Saurabh KumarandGitHub 0d757b170c [SILO-567] Fallback SILO_BASE url to APP_BASE_URL for self hosted (#4312)
* fix silo base url fallback to app base url for selfhosted

* use web_url as a fallback
2025-09-29 15:27:11 +05:30
Henit ChobisaandGitHub 558d9436ec [SILO-533] feat: added external api endpoint for customers feature (#4277)
* feat: added external api endpoint for customers feature

* fix: review comments from copilot

* fix: segretate endpoints into detail endpoints

* fix: moved name validation logic to serializer
2025-09-29 15:26:09 +05:30
Saurabh KumarandGitHub 106b077856 [SILO-553] Modify OAuth flow to store workspace id and app installation in token (#4289)
* add workspace to oauth token

* modify oauth flow to store  workspace and app installation in tokens and grant

* reduce app installation id cache ttl

* reduce app installation id cache ttl to 1s

* include clientid in cache key
2025-09-29 15:25:58 +05:30
Saurabh KumarandGitHub cb4fe7428d [SILO-562] Fix Gitlab Enterprise Disconnect Issue (#4301)
* fix gitlab ent disconnect

* fix target host issue

* fix formatting

* fix project missing in edit modal project conn
2025-09-29 15:25:19 +05:30
sriram veeraghantaandGitHub 39c1574fc0 Sync: Community Changes #4318 2025-09-29 15:10:34 +05:30
sriramveeraghanta e5394a48a8 fix: merge conflicts 2025-09-29 15:09:36 +05:30
Jayash TripathyandGitHub a45a3c1e57 [WEB-5025][WEB-5024] refactor: added state and state group in dashboard widget filters and fixed filtration of initiatives (#4316) 2025-09-29 15:02:09 +05:30
Surya PrashanthandGitHub 012d6dfd2d [SILO-454] refactor: add common code for decorators, logger packages (#3950)
* [SILO-454] refactor: add common code for decorators, logger packages

- refactor Controller related decorators and use those in silo
- add silo's logger config in packages and use it for live
- remove redundant code across silo, live

* remove usages of local logger module

* add test in prebuild phase for silo

* use logger from packages and linter changes

* chore: remove E_INTEGRATION_KEYS enum from etl/core

* chore: use E_INTEGRATION_KEYS from types

* remove unused file-tree.ts file
2025-09-29 14:59:18 +05:30
NikhilandGitHub 1fb22bd252 [WEB-4805] fix: upgraded psycopgy packages to fix linting and removed unused imports (#7735)
* chore: update psycopg dependencies to version 3.2.9 in base requirements

* refactor: clean up unused imports across multiple files

* chore: update lxml dependency to version 6.0.0 in base requirements

* style: improve code readability by breaking long lines into multiple lines across several files

* style: enhance readability by breaking long lines in ModuleSerializer docstring
2025-09-29 14:33:50 +05:30
Vihar KuramaandGitHub e891482a97 [WEB-4881] feat(utils): add URL display formatter #7770 2025-09-29 14:33:25 +05:30
Surya PrashanthandGitHub db3450563e [SILO-556] fix: add confluence to disabled importers list (#4315) 2025-09-26 19:09:54 +05:30
sriram veeraghantaandGitHub 98a7545f7a Sync: Community Changes #4313 2025-09-26 18:06:00 +05:30
sriramveeraghanta 02d79bdc0d fix: merge conflicts 2025-09-26 18:04:52 +05:30
sriram veeraghantaandGitHub e0c4e8e791 [WEB-5027] fix: replace lodash package with lodash-es (#4305)
* fix: replace lodash pacakge with lodash-es

* fix: lint errors

* fix: replace lodash with lodash-es

* fix: lodash imports

* fix: import fixes

* fix: import fixes

* fix: lint errors

* fix: file formatting
2025-09-26 18:00:42 +05:30
sriram veeraghantaandGitHub bedc1fae1f [WEB-5027] fix: replace lodash package with lodash-es (#7856)
* fix: replace lodash pacakge with lodash-es

* fix: lint errors

* fix: import fixes
2025-09-26 17:59:31 +05:30
Surya PrashanthandGitHub da4fed576c [SILO-556] fix: only rely on feature flags for enabling importers (#4310)
* [SILO-556] fix: only rely on feature flags for enabling importers

- remove special handling for clickup, notion which was added as a stop-gap
solution for release

* formatting changes
2025-09-26 17:48:17 +05:30
823c1228db [INFRA-238] DigitalOcean AMI Action (#4165)
* fix: update dependencies and improve error handling in authentication module

* fix: update EE packer file name in Docker workflow configuration

* fix: update manifest file name and enhance shell provisioners in EE Docker packer configuration

* fix: correct conditional syntax in DigitalOcean plane setup script

* chore: remove obsolete DigitalOcean and AWS appliance Docker workflow files

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-26 17:45:34 +05:30
Dheeraj Kumar KetireddyandGitHub f1f5bcf55e [WEB-5021] chore: add InitiativeLabelAssociation model and update InitiativeLabel fields (#4302)
* chore: add InitiativeLabelAssociation model and update InitiativeLabel fields

- Introduced the InitiativeLabelAssociation model to manage many-to-many relationships between initiatives and labels.
- Updated InitiativeLabel model to include new fields: name, description, and color.
- Removed direct foreign key relationships from InitiativeLabel to Initiative and Label.
- Adjusted unique constraints and added new constraints for InitiativeLabel.

* removed null from m2m

* fix: update __str__ method in InitiativeLabel model to return label name

* add unique constraint to InitiativeLabelAssociation model

- Introduced a unique constraint on the InitiativeLabelAssociation model to ensure that each initiative-label pair is unique when not marked as deleted.
- Updated migration file to reflect this new constraint.
2025-09-26 16:57:24 +05:30
sriramveeraghanta c327295740 fix: warning message in Plane AI 2025-09-26 16:56:19 +05:30
sriramveeraghanta 03b827b6e2 fix: Pi Chat to Plane AI 2025-09-26 16:54:48 +05:30
sriramveeraghanta 033be85f8a fix: change pi to ai in rail 2025-09-26 16:39:41 +05:30
pushya22andGitHub 4abe5a7be2 Sync: Community Changes #4307 2025-09-26 14:26:01 +05:30
Anmol Singh BhatiaandGitHub c05a5eb5ee [WEB-4981] fix: analytics portal modal #7858 2025-09-26 14:23:04 +05:30
pushya22andGitHub 8338931d92 Sync: Community Changes #4303 2025-09-25 20:32:01 +05:30
Dheeraj Kumar KetireddyandGitHub a95dc1bdf3 [WEB-4975] feat: Rich filters for Initiatives (#4262) 2025-09-25 20:30:52 +05:30
Anmol Singh BhatiaandGitHub b946b3a315 [WEB-4981] fix: analytics modal portal (#7852) 2025-09-25 20:26:44 +05:30
Bavisetti NarayanandGitHub dc44268ac4 [WIKI-635] feat: page comments in teamspace (#4122) 2025-09-25 20:25:44 +05:30
Vamsi KrishnaandGitHub 2fabde97f2 [WEB-4982]fix: exclude archived projects/epics across list, detail, and analytics in Initiatives (#4291)
* fix: filter archived projects from initiatives

* chore: added counts to scope data cards
2025-09-25 20:24:04 +05:30
Anmol Singh BhatiaandGitHub 290bf0db4e [WEB-4128] chore: epic description activity updated #4297 2025-09-25 20:23:43 +05:30
Anmol Singh BhatiaandGitHub c4a0fcf113 [WEB-5002] chore: teamspaces breadcrumbs improvements #4300 2025-09-25 20:23:17 +05:30
pushya22andGitHub da1311f70e Sync: Community Changes #4299 2025-09-25 17:54:54 +05:30
Vamsi KrishnaandGitHub 50e692fb19 [WEB-5001]fix: sub work item permissions (#4298)
* fix: sub work item permissions

* fix: edit permissions for sub work items list

* fix: udpated disabled prop names
2025-09-25 17:52:25 +05:30
Vamsi KrishnaandGitHub 19e00b0d4b [WEB-5001]fix: prop name for sub work permissions #7854 2025-09-25 17:51:13 +05:30
Vamsi KrishnaandGitHub c951260fcf [WEB-5001]fix: work items loading in epics #4296 2025-09-25 16:19:24 +05:30
pushya22andGitHub 204d487fa3 Sync: Community Changes #4295 2025-09-25 15:59:46 +05:30
Akshita GoyalandGitHub a8686148b3 [PAI-780] fix: handled UI crash of PI on redirection #4293 2025-09-25 15:57:30 +05:30
Anmol Singh BhatiaandGitHub 7f28cbebcf [WEB-4980] dev: propel modal portal component (#7851) 2025-09-25 15:56:33 +05:30
Jayash TripathyandGitHub 5854553d3a [WEB-5008] feat: implement URL property activity message for work items #4292 2025-09-25 15:28:18 +05:30
Surya PrashanthandGitHub 7bbfeb8328 [SILO-511] fix: migration sequence number for gitlab enterprise (#4294) 2025-09-25 15:16:21 +05:30
Henit ChobisaandGitHub 4ce4a887ce [SILO-528] feat: added callout support for notion importer (#4186) 2025-09-25 13:49:43 +05:30
Henit ChobisaandGitHub 9026f870ea [SILO-545] fix: sentry alert link broken using data_url instead of web url #4235 2025-09-25 13:22:44 +05:30
Henit ChobisaandGitHub 7ebb8c7bf2 [SILO-532] feat: added support for importing teamspace and project pages in notion and confluence importer (#4253) 2025-09-25 13:22:17 +05:30
Saurabh KumarandGitHub fd104a46aa [SILO-550] Github v1 UX improvements (#4259) 2025-09-25 13:21:43 +05:30
Saurabh KumarandGitHub 72944dd187 [SILO-511] Gitlab Enterprise Integration (#4264)
* strategy + controller + service and type changes

* enterprise support to store

* UI and store changes

* worker changes and entity type change

* fixes gitlab enterprise flow

* add translations

* remove logs

* fix formatting and feature flag

* fix type build issue

* fix formatting

* fix cursor reviews

* fix feature flag visibility + name for pull request id + cleaned supported integrations method
2025-09-25 13:21:16 +05:30
Saurabh KumarandGitHub 0bdc80d5c5 [SILO-516] Migration for Gitlab self hosted app #4218 2025-09-25 13:01:49 +05:30
Dheeraj Kumar KetireddyandGitHub 5387467aaf [WEB-4993] chore: added state field to Initiative model and dropped status field #4281 2025-09-24 19:10:16 +05:30
Anmol Singh BhatiaandGitHub 395d5d68cc [WEB-4025] fix: external user comment and reaction (#4065) 2025-09-24 18:41:54 +05:30
Vamsi KrishnaandGitHub 1eb1eae582 [WEB-4992]chore: updated feature flags (#4278) 2025-09-24 18:40:45 +05:30
pushya22andGitHub b8da70922b Sync: Community Changes #4288 2025-09-24 18:39:04 +05:30
M. PalanikannanandGitHub 7ac0716d02 [WIKI-292] fix: page comment preview bugs (#4280) 2025-09-24 18:08:12 +05:30
Aaryan Khandelwal 68c6fb7f14 fix: build errors 2025-09-24 18:06:58 +05:30
pushya22andGitHub 3deda4b404 Sync: Community Changes #4287 2025-09-24 18:06:01 +05:30
Aaryan Khandelwal 20634dd79a fix: epic peek overview 2025-09-24 18:01:32 +05:30
Aaryan Khandelwal 8a775b4048 fix: merge conflicts resolved from preview 2025-09-24 17:59:55 +05:30
Vamsi KrishnaandGitHub a537440c4f [WEB-4998]fix: progress indicator in Initiatives overview (#4285)
* fix: progress indicator in overview

* fix: lint
2025-09-24 17:58:59 +05:30
Vamsi KrishnaandGitHub 586a7a48ba [WEB-4896]feat: filters to project and workspace members list (#7786) 2025-09-24 17:45:43 +05:30
M. PalanikannanandGitHub 85bffaa231 [WIKI-695] fix: tippy width fix #7843 2025-09-24 17:45:18 +05:30
SangeethaandGitHub b5ba0a705f [WEB-4996] fix: accessing NoneType intake #7847 2025-09-24 17:43:28 +05:30
Aaryan KhandelwalandGitHub dce8b75a1e [WIKI-638] fix: peek overview closing while dropdowns are open (#7841) 2025-09-24 17:43:02 +05:30
M. PalanikannanandGitHub f812ee2f46 [WIKI-691] fix: private pages list bug (#4283) 2025-09-23 20:48:44 +05:30
Surya PrashanthandGitHub 801b3315d8 [SILO-531] feat: update openapi spec to 0.0.2 (#4226) 2025-09-23 19:28:03 +05:30
pushya22andGitHub 618eb313b5 Sync: Community Changes #4282 2025-09-23 18:58:41 +05:30
Bavisetti NarayanandGitHub 384002cdba Merge branch 'preview' into sync/ce-ee 2025-09-23 18:51:50 +05:30
Bavisetti NarayanandGitHub 0ed49a6989 [WIKI-694] chore: added summary endpoint for pages (#7842)
* chore: added summary endpoint for pages

* chore: updated the filters
2025-09-23 18:42:54 +05:30
Akshita GoyalandGitHub d9a6a6e41f [PAI-776] Fix: pi artifacts api call (#4274)
* fix: artifacts api trailing slash added

* fix: spacing

* fix: colors + add/remove actions
2025-09-23 18:38:57 +05:30
pushya22andGitHub 5e9cf6473b Sync: Community Changes #4269 2025-09-22 19:33:54 +05:30
Prateek ShouryaandGitHub 47f68e3d3d [WEB-4979] fix: filters row missing for preset workspace views (#7836) 2025-09-22 19:29:41 +05:30
pushya22andGitHub 80bb2d0636 Sync: Community Changes #4267 2025-09-22 18:55:43 +05:30
VipinDevelops 2b89a935fc fix:format 2025-09-22 18:38:09 +05:30
VipinDevelops 3ec184e883 fix: block menu ref 2025-09-22 18:24:29 +05:30
VipinDevelops 4f39fb3ae8 Merge branch 'preview' into sync/ce-ee 2025-09-22 18:21:38 +05:30
Vamsi KrishnaandGitHub 3a612e1e67 [WEB-4068]fix: implements relation list api #4266 2025-09-22 18:08:39 +05:30
Vipin ChaudharyandGitHub 14e3aace92 [WIKI-623] fix: add block menu to rich text editor (#7813)
* fix : block menu for rich editor

* chore: remove comments

* chore : update selection logic
2025-09-22 18:07:52 +05:30
M. PalanikannanandGitHub 36d328445c [WIKI-650] fix: pane extensions close method moved into hook (#7823)
* fix: pane extensions close method moved into hook

* fix: editor build breaks web everytime in dev mode

* fix: variant of lite text toolbar
2025-09-22 18:04:16 +05:30
pushya22andGitHub 92dd1f1a82 [WEB-4950]fix: hide empty scope sections in initiatives #4224 2025-09-22 16:19:39 +05:30
Vamsi KrishnaandGitHub d63448322c [WEB-4068]feat: implements / implemented by relation for work items and epics (#3420) 2025-09-22 16:16:52 +05:30
pushya22andGitHub ac2bff4a49 Sync: Community Changes #4263 2025-09-19 18:40:31 +05:30
Prateek Shourya 779a80295f fix: remove unused import and typo fix 2025-09-19 18:38:52 +05:30
Prateek Shourya 1ece0adb42 fix: merge conflicts resolved
Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee
2025-09-19 18:37:20 +05:30
Prateek ShouryaandGitHub 9aef5d4aa9 [WEB-4951] [WEB-4884] feat: work item filters revamp (#7810) 2025-09-19 18:27:36 +05:30
Aaryan KhandelwalandGitHub 34086e7221 [WIKI-690] fix: comment mark extension in read-only editors #4261 2025-09-19 18:01:14 +05:30
Prateek ShouryaandGitHub 4310b5d380 fix: docker build (#4260) 2025-09-19 17:09:26 +05:30
Prateek ShouryaandGitHub c2d22dbae3 [WEB-4973] fix: archived work item header (#4258) 2025-09-19 16:19:08 +05:30
pushya22andGitHub 24438c6e51 [WEB-4971] chore: removed the view filters in queryset #4257 2025-09-19 16:13:37 +05:30
NarayanBavisetti 3710d91f93 chore: removed the view filters in queryset 2025-09-19 16:09:45 +05:30
pushya22andGitHub df45fdf0d6 Sync: Community Changes #4256 2025-09-19 16:04:34 +05:30
Akshita GoyalandGitHub 062e882e98 fix: lint + forrmating issues (#4255) 2025-09-19 15:59:03 +05:30
Akshita GoyalandGitHub a7d5b5e4ed [PAI-719] feat: Pi artifacts #4244 2025-09-19 15:58:42 +05:30
Vamsi KrishnaandGitHub e6a7ca4c72 [WEB-4974] fix: table column spanning #7830 2025-09-19 15:58:01 +05:30
SangeethaandGitHub 825c9f6d9d [WEB-4888] feat: track assignees on epic creation #4245 2025-09-19 14:48:27 +05:30
Prateek ShouryaandGitHub 73beac8f2e [WEB-4865] feat: add event trackers for automations (#4252) 2025-09-19 14:08:04 +05:30
Dheeraj Kumar KetireddyandGitHub de932a3d3d [WEB-4970] fix: your work duplicate issues and space issue endpoint grouping #4254 2025-09-19 13:01:24 +05:30
pushya22andGitHub 850425ab26 Sync: Community Changes #4251 2025-09-18 21:21:49 +05:30
NarayanBavisetti 6ed063b354 Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-09-18 21:14:10 +05:30
Aaryan KhandelwalandGitHub cc244b84a5 [WIKI-616] feat: pages reordering (#4174) 2025-09-18 20:50:19 +05:30
Bavisetti NarayanandGitHub 56cb2f8b57 [WIKI-657] refactor: page permission layer (#4179) 2025-09-18 20:46:48 +05:30
M. PalanikannanandGitHub 333937947e [WIKI-650] fix: page comments bugs (#4189) 2025-09-18 20:43:51 +05:30
Vamsi KrishnaandGitHub ecd3fb3ac7 [WEB-4893]chore: added check to restrict non-owner from lock/unlock view #4190 2025-09-18 20:40:47 +05:30
Prateek ShouryaandGitHub 4ad86fb4af [WEB-4789] feat: add translations for automation (#4248) 2025-09-18 20:36:48 +05:30
Jayash TripathyandGitHub 8c52ae6f7e [WEB-4968] refactor: widget dashboard filters optimizations (#4241) 2025-09-18 20:35:06 +05:30
Vamsi KrishnaandGitHub cb0180be50 [WEB-4953]fix: cycle progress percentage #4246 2025-09-18 20:34:14 +05:30
Vamsi KrishnaandGitHub 2f35e38831 [WEB-4896]feat:project and workspace member filters (#4194)
* feat: filters to project and workspace members list

* chore: formatting and error handling

* chore: updated path for members store
2025-09-18 20:33:43 +05:30
accfdf7420 [WEB-4949] fix: hide raw counts in initiative scope KPIs #4222
Co-authored-by: Pushya Mitra Thiruvooru <pushya@Pushyas-MacBook-Pro.local>
2025-09-18 20:31:55 +05:30
Vamsi KrishnaandGitHub cd0b5b96b3 [WEB-4121]fix: epics incomplete activity #4198 2025-09-18 20:27:15 +05:30
SangeethaandGitHub d50737997a [WEB-4958] fix: archived issues in epic anlaytics count #4234 2025-09-18 20:26:50 +05:30
Vamsi KrishnaandGitHub a40c73cd22 [WEB-4431]fix: table column distribution #7819 2025-09-18 20:26:09 +05:30
Bavisetti NarayanandGitHub 9ede04f1b3 [WEB-4851] chore: updated activity keys for work item (#7733) 2025-09-18 20:25:34 +05:30
Vamsi KrishnaandGitHub d5e5006aab [WEB-4905]fix: cycle dates update (#7821)
* fix: cycle dates update

* fix: handled date clearing
2025-09-18 20:22:49 +05:30
Vamsi KrishnaandGitHub f7d5ca4f83 [WEB-4953]fix: cycle progress percentage #7826 2025-09-18 20:21:56 +05:30
Vamsi KrishnaandGitHub 97059a2786 [WEB-4952]fix: published view work item description #7828 2025-09-18 20:21:31 +05:30
Vamsi KrishnaandGitHub af6ea40b84 [WEB-4826]chore: reduced spacing for sub-work items list and relations list #7814 2025-09-18 20:15:42 +05:30
Bavisetti NarayanandGitHub 9182c9593b [WIKI-657] refactor: the page permissions in project (#7761) 2025-09-18 20:14:46 +05:30
Jayash TripathyandGitHub f59e557be1 [WEB-4879] refactor: organize stories and remove logs #7765 2025-09-18 20:13:54 +05:30
SangeethaandGitHub e26c506cf9 [WEB-4899] fix: workspace admin cannot delete intake and cycle (#7807)
* fix: permission check on viewset

* chore: check workspace admin

* chore: initiative is_workspace_admin before if condition

* chore: project member check

* fix: if conditions

* chore: add condition for guests to only edit description and name

* fix: use ROLE enum instead of magic numbers

* chore: remove if condition
2025-09-18 20:11:35 +05:30
Lakhan BahetiandGitHub d5c3c0cbe1 [WIKI-632] chore: add extended document editor props (#7783) 2025-09-18 20:11:13 +05:30
NikhilandGitHub f2057cd8fe [WEB-3528] fix: correct member id in modules list showing deleted_at members #7777 2025-09-18 20:10:04 +05:30
NikhilandGitHub 69c688b017 [WEB-4873]: Add webhook log cleanup task and update Celery schedule (#7772) 2025-09-18 20:09:01 +05:30
pushya22andGitHub 2a6f18bdbd Sync: Community Changes #4250 2025-09-18 18:29:38 +05:30
Dheeraj Kumar KetireddyandGitHub d74ea41b5e [WEB-4966] fix: Forwarding filtered query set to grouping to reuse it #4249 2025-09-18 18:27:07 +05:30
Prateek ShouryaandGitHub 68d72daa90 [WEB-4964] fix: update onboarding layout and enhance scroll behavior (#7825)
* [WEB-4964] fix: update onboarding layout and enhance scroll behavior
2025-09-18 18:26:06 +05:30
guru_sainathandGitHub 0550cc5de6 promote: mobile runway to preview (#4229) 2025-09-18 18:12:37 +05:30
Prateek ShouryaandGitHub 7cfb998deb [WEB-4957] improvement: feature flag advanced rich filter operators and minor UI / UX improvements (#4236) 2025-09-18 16:36:41 +05:30
Saurabh KumarandGitHub a30279e394 Merge pull request #4242 from makeplane/fix-duplicate_github_comments
[SILO-546] Duplicate links getting added to github PR
2025-09-18 14:12:46 +05:30
pushya22andGitHub 069c1e5fc0 Sync: Community Changes #4243 2025-09-18 14:12:17 +05:30
Vamsi KrishnaandGitHub 365d2d902c [WEB-4915]fix: redirection after onboarding completion #7824 2025-09-18 14:10:15 +05:30
Prateek ShouryaandGitHub c290378833 fix: build error (#4240) 2025-09-17 20:53:14 +05:30
pushya22andGitHub 06cac9ac1a Sync: Community Changes #4239 2025-09-17 20:24:08 +05:30
Anmol Singh Bhatia 20694d3256 fix: preview sync merge conflict 2025-09-17 20:22:50 +05:30
Anmol Singh BhatiaandGitHub 696635dbb0 [WEB-4956] fix: onboarding redirect with cache busting and code refactor (#7822)
* fix: resolve onboarding completion redirect with cache-busting

* chore: code refactor
2025-09-17 19:50:37 +05:30
sriram veeraghantaandGitHub 740a7783c7 Sync: Community Changes #4237 2025-09-17 18:57:11 +05:30
877c117c37 [WEB-4943]fix: next path url redirection (#7817)
* fix: next path url redirection

* fix: enhance URL redirection safety in authentication views

Updated SignInAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, and GoogleCallbackSpaceEndpoint to include checks for allowed hosts and schemes before redirecting. This improves the security of URL redirection by ensuring only valid URLs are used.

* chore: updated uitl to handle double /

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
2025-09-17 18:52:35 +05:30
Jayash TripathyandGitHub 73cd9a0759 [WEB-4948] refactor: remove dashboard filter feature flag #4231 2025-09-17 17:03:28 +05:30
Saurabh KumarandGitHub 37360a5ad2 [SILO-474] Data Migrations for existing customers Github new flow (#4110)
* data migration and management command for github v1

* add check to support already splitted entity connections

* fix return and method name in migration

* add entity connection id arg and fixes

* remove log params
2025-09-17 17:02:30 +05:30
Saurabh KumarandGitHub 9243ee6d64 [SILO-470] GitHub integration V1 (#4042)
* feat: UI and store change to split pr automation and issue sync entity item create

* backend changes to bisect issue sync pr automation + fix entity conn types

* use user credentials in github flow + UI improvements + improve logging + issue state mapping

* add bidirectional sync logo

* gh ent test and fixes

* translations and copy changes

* fix url format in issue link

* optimise getCredentials method + fixes

* fix formatting
2025-09-17 17:02:02 +05:30
sriram veeraghantaandGitHub 2f4e6d1258 Sync: Community Changes #4230 2025-09-17 16:16:42 +05:30
NikhilandGitHub 3d06189723 [WEB-4943] refactor: enhance URL validation and redirection logic in authentication views (#7815)
* refactor: enhance URL validation and redirection logic in authentication views

* Updated authentication views (SignInAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, GoogleCallbackSpaceEndpoint, and MagicSignInSpaceEndpoint) to include url_has_allowed_host_and_scheme checks for safer redirection.
* Improved URL construction by ensuring proper formatting and fallback to base host when necessary.
* Added get_allowed_hosts function to path_validator.py for better host validation.

* refactor: improve comments and clean up code in path_validator.py

* Updated comments for clarity in the get_safe_redirect_url function.
* Removed unnecessary blank line to enhance
2025-09-17 16:13:32 +05:30
sriram veeraghantaandGitHub 747f669060 Sync: Community Changes #4225 2025-09-16 23:28:03 +05:30
NikhilandGitHub 6d3d9e6df7 [WEB-4943]: add url has allowed host or scheme for validating valid redirections (#7809)
* feat: enhance path validation and URL safety in path_validator.py

* Added get_allowed_hosts function to retrieve allowed hosts from settings.
* Updated get_safe_redirect_url to validate URLs against allowed hosts.
* Improved URL construction logic for safer redirection handling.

* feat: enhance URL validation in authentication views

* Added url_has_allowed_host_and_scheme checks in SignUpAuthSpaceEndpoint and MagicSignInSpaceEndpoint for safer redirection.
* Updated redirect logic to fallback to base host if the constructed URL is not allowed.
* Improved overall URL safety and handling in authentication flows.

* fix: improve host extraction in get_allowed_hosts function

* Updated get_allowed_hosts to extract only the host from ADMIN_BASE_URL and SPACE_BASE_URL settings for better URL validation.
* Enhanced overall safety and clarity in allowed hosts retrieval.
2025-09-16 21:37:08 +05:30
e02fa2449c [WEB-4830] feat: add work item rich filters (#3747)
* feat: rich filters store architecture and UI components

* feat: add work item layout filter HOC

* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys

* improvements: add filter button config initialization

* improvements: work item layout filter compatibility fixes

* refactor: update filter structure and improve type safety across automation and rich filters

- Changed filter property types to use TFilterProperty and TFilterValue for better type consistency.
- Updated various components and hooks to utilize new type definitions, enhancing type safety.
- Refactored filter configuration and adapter logic to accommodate the new types, ensuring compatibility with existing functionality.
- Improved handling of filter expressions and conditions, streamlining the overall filter management process.

* chore: restructure rich filter utils

* refactor: optimize filter value handling and update automation condition types

- Removed unnecessary condition checks in automation details sidebar trigger.
- Enhanced filter value input to handle empty states more gracefully.
- Updated filter helper methods to return both optimal operator and transformed value.
- Adjusted filter instance logic to accommodate changes in operator and value updates.
- Modified type definitions for automation conditions and filter configurations to support SingleOrArray types.
- Added utility functions for transforming values based on operator requirements.

* fix: handle single-value operators in automation condition filters

* fix: build errors

* chore: refactor work item filters to core with enterprise extensibility

* chore: update clear filters logic from project work item empty state

* chore: remove header filters selection from project work item list

* chore: remove header filters selection from project work item list mobile header

* feat: add work item filters bar to support save and update views

* feat: add visibility button to filters bar

* chore: minor fixes for work item filters adapter

* feat: enhance filters bar with async save and update handling

* chore: minor ux fixes for filters bar

* refactor: split updateCondition into separate operator and value update methods

* feat: add save and update view options to rich filter instance

* chore: minor fixes in clear filters

* feat: project level work item filters hoc with save and update view options

* chore: minor UX improvements for view save and update options

* chore: ordering fix in work item filters store

* improvement: enhance work item filters with consistent naming and memoization optimization

* feat: different variants for filters row

* feat: implement rich filters in create and update project view modal

* chore: ensure that max visible conditions are only visible in header variant

* feat: add tracker elements for clear filter, save view, and update view

* feat: update layout filter if view is updated from modal

* feat: implement rich filters for project archived work items

* feat: implement rich filters for cycle work items

* feat: implement rich filters for module work items

* chore: remove module applied filters header

* feat: implement rich filters in epics layout

* feat: implement rich filters in workspace views

* chore: remove router filter params from all issue layout root

* feat: implement rich filters for profile work items

* fix: shouldNotifyChangeForExpression should be called before clearing the filter expression

* refactor: get all the entities from props to generate work item config

* feat: implement rich filters for teamspace work items

* feat: implement rich filters for teamspace views

* feat: implement rich filters for teamspace project work items

* feat: implement rich filters for teamspace views create / update modal

* chore: remove all instances of FilterSelection component

* chore: clean up filters from FilterSelection

* feat: add LegacyToRichFiltersConverter and BaseIssueFilterSet for enhanced filtering capabilities

- Introduced LegacyToRichFiltersConverter to automate conversion from legacy filter formats to rich filter JSON structure, including validation features for UUIDs, choices, and dates.
- Added BaseIssueFilterSet with custom filter methods for handling soft delete exclusions and direct field lookups for the Issue model.
- Updated README.md to document the new converter and filter set usage, including examples and configuration options.

* feat: implement migrations for rich filters in core and EE models

- Added migration scripts to convert legacy filters to rich_filters format for core models (IssueView, WorkspaceUserProperties, etc.) and EE models (EpicUserProperties, InitiativeUserProperty, TeamspaceUserProperty).
- Introduced utility functions for migrating and clearing rich_filters, enhancing the migration process.
- Updated date validation in the LegacyToRichFiltersConverter to utilize dateutil.parser for improved flexibility in date format handling.
- Enhanced README.md to reflect changes in date validation capabilities.

* fix: build errors

* feat: refactor rich filter config and utils to support complex and extended filters

* feat: add `state_group` to project level filters

* chore: minor updates for work item filter configs

* feat: add state group set filter

* feat: add project and teamspace project filters

* chore: remove filters-selection component

* Updated IssueViewset to use complexfilter backend and made improvements to grouping.

- Refactored IssueListEndpoint and IssueViewSet to utilize new filtering and grouping features, enhancing query efficiency.
- Updated issue grouping functions to accept a queryset parameter, improving flexibility and performance.
- Optimized AND operations through branch-based evaluation.

* Changed the rich filters query param to 'filters'

* chore: integrate project work item rich filters with backend

* refactor: page wise filter constants

* chore: minor build fixes

* feat: integrate rich filters across all work item layouts

* fix: view update on additional changes

* chore: enabled filter item transition

* chore: remove total filters from view list item

* feat: add work item subscriber filter

* added custom UUIDInFilter and update filterset to utilize it

* fix: handle empty filters with empty object instead of null

* Fixed bug with updating issues

* fix: disable save view in epic layout

* chore: update state group set filter label

* fix: filter item early return re-render error

* fix: space app build

* fix: web build

* added CharInFilter and enhanced BaseFilterSet to support exact filters

* add subscriber ID filters to BaseIssueFilterSet

* simplify filter definitions in BaseIssueFilterSet by removing unnecessary lookup expressions

* Use comma separated values for in and range filters

* Fixed issue creation

* fix: reset filter condition when operator changes to different config type

* fix: only show work item type filter if enabled for project

* chore: minor fix in cleanup function and sub work item types

* fixed date rage filter

* fix: initial work item filters for global view, project view, teamspace view, initial work item filters for static views

* fix: add condition with negation operator

* fix: reset filters when project and teamspace view layouts unmount

* Enhance issue filtering capabilities across multiple views by integrating ComplexFilterBackend and BaseIssueFilterSet. Refactor issue querysets to apply filtering and annotations consistently, improving performance and maintainability.

* chore: update epic filters to show by layout

* Enhance issue queryset by applying annotations for improved data handling in WorkspaceViewIssuesViewSet.

* Fixed workspace issue viewset

* feat: add rich_filters support to multiple user properties endpoints

* fix: incorrect count

* improvement: update filters dropdowns height to full

* refactor: update filter label from "Grouping" to "Work item group" for clarity

* improvement: update work item filters list order

* feat: sanitize and stabilize filter expressions before external conversion

* chore: reorder add filter button in filters row

* feat: enhance issue viewsets by adding prefetch_related for improved performance and data retrieval across multiple endpoints. Refactor queryset handling to streamline filtering and annotations.

* feat: apply static view filters to workspace issues

* chore: minor updates for global view rich filters

* fix: local storage filters

* refactor: update issue filter handling to use new supported filter types

- Replaced instances of EIssueFilterType with TSupportedFilterTypeForUpdate in various components and stores.
- Updated filter update methods to utilize the new filter type structure for better consistency and maintainability.
- Removed deprecated filter handling logic across multiple files, streamlining the filter update process.

* feat: enable rich filters for cycle and module analytics progress stats

Refactored progress statistics components to support advanced filtering capabilities across cycles and modules. Added new shared components for assignee, label, and state group progress tracking with consistent filtering interface.

* refactor: update sub-issue filter components to use available filters

- Replaced layoutDisplayFiltersOptions with availableFilters in SubIssueFilters and related components for better filter management.
- Introduced new constants for available filters specific to work item and initiatives pages.
- Cleaned up unused imports and improved filter enabling logic for clarity and maintainability.

* chore: disable operator selection when filter is disabled or only one operator option is available

* refactor: enhance filter components to support disabled state

* chore: minor cleanup

* reorderd the data migration for rich filters

* refactor: rich filter utils structure

* refactor: reuse traversal and transformation utilities

* refactor: use type guards in rich filters

* cleanup: remove unused comment

* refactor: restructure filter system with extended rich filters support

- Rename and reorganize filter modules for better structure
  - complex_filter.py → filter_backend.py
  - migration_utils.py → filter_migrations.py
  - Remove custom_filters.py (inlined into filterset.py)

- Create extended filter system with inheritance hierarchy
  - Add extended/ directory with enhanced converters and filtersets
  - Support additional enterprise fields (team_project_id, type_id)
  - Maintain base functionality while adding extended features

- Centralize imports through clean public API
  - Update all view imports to use plane.utils.filters module
  - Extended classes automatically override base implementations
  - Maintain backward compatibility

- Rename BaseIssueFilterSet to IssueFilterSet across codebase
- Update migration files to use new converter structure
- Consolidate filter utilities for better maintainability

* Added missing param

* refactor: restructure rich filters by removing obsolete operator files and introducing core and extended operator configurations

* refactor: restructure rich filters utils

- Streamlined exports in rich-filters index files for factories, operations, types, and validators.
- Removed obsolete core types and operators, integrating their functionalities into a more cohesive structure.
- Introduced new factory and operation files to enhance modularity and maintainability.
- Improved type guards and utility functions for better type safety and clarity in filter operations.

* refactor: enhance operator handling in rich filters

- Introduced `getOperatorForPayload` utility to streamline operator normalization and negation handling across filter components.
- Updated various filter-related files to utilize the new utility, improving code clarity and reducing redundancy.
- Refactored condition addition logic to leverage the new operator handling, ensuring consistent behavior in filter expressions.

* Updated migration sequence

* refactor: update filter constants and types for consistency

- Renamed filter-related constants from `FILTER_TYPE_OPTIONS` to `FILTER_FIELD_TYPE_OPTIONS` for clarity.
- Updated references in various components and stores to use the new naming convention.
- Introduced new field type configurations to enhance filter handling and maintainability across the application.

* feat: enhance shared-state and rich filters integration

- Added new filter components and utilities to the shared-state package, improving the filter expression handling.
- Introduced `AddFilterButton`, `FilterItem`, and various input components for rich filters, enhancing user interaction.
- Updated existing components to utilize the new shared-state functionalities, ensuring consistency across the application.
- Refactored filter-related logic to streamline the integration of work item filters and improve maintainability.

* refactor: use factory functions instead of shared-state adapter

* fix: update filter helpers to handle negation correctly

* chore: minor comment cleanup

* feat: introduce new filter configurations and utilities for work item filters

- Added various filter configurations including cycle, date, label, module, priority, project, state, teamspace, user, and work item type.
- Implemented helper functions for multi-select and single-select configurations to streamline filter creation.
- Enhanced existing filter utilities to support new configurations, improving the overall filter management system.
- Organized filter-related code into dedicated files for better maintainability and clarity.

* feat: add rich filters types

* feat: add rich filters constants

* feat: add rich filters utils

* feat: add rich filters store in shared state package

* feat: add rich filters UI components

* chore: minor updates and fixes.

* chore: update pnpm lock file.

* [WEB-4842] feat: enhance rich filters with complex filter support and improved code organization

* chore: remove state group set from state filter

* chore: remove state group set from work item rich filters

* replace DashboardWidgetIssueFilterSet with IssueFilterSet in WidgetListEndpoint

- Removed the custom DashboardWidgetIssueFilterSet class and replaced it with the existing IssueFilterSet.
- This change simplifies the filter logic for the WidgetListEndpoint, leveraging the existing functionality of IssueFilterSet.

* removed state_group_set filter and related logic from IssueFilterSet

* fix: make setLoading optional in loadOptions function for improved flexibility

* fix: automation condition item value display

* chore: minor cleanup and updates

* chore: revert un-needed changes

* chore: remove duplicate exports

* chore: minor improvements to rich filters

* chore: minor improvements

* code cleanup and minor fixes

* chore: minor change

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-09-16 21:28:20 +05:30
sriram veeraghantaandGitHub e3463bf7ab Sync: Community Changes #4223 2025-09-16 21:27:11 +05:30
sriramveeraghanta 89b9dd7969 fix: merge conflicts 2025-09-16 21:26:28 +05:30
Prateek ShouryaandGitHub d521eab22f [WEB-4885] feat: new filters architecture and UI components (#7802)
* feat: add rich filters types

* feat: add rich filters constants

* feat: add rich filters utils

* feat: add rich filters store in shared state package

* feat: add rich filters UI components

* fix: make setLoading optional in loadOptions function for improved flexibility

* chore: minor improvements to rich filters

* fix: formatting
2025-09-16 21:15:08 +05:30
sriramveeraghanta 00e070b509 fix: codeql triggers 2025-09-16 20:46:44 +05:30
08446b79cf [WEB-4842] feat: enhance rich filters with complex filter support and improved code organization (#4210)
* feat: add rich filters types

* feat: add rich filters constants

* feat: add rich filters utils

* feat: add rich filters store in shared state package

* feat: add rich filters UI components

* chore: update pnpm lock file.

* [WEB-4842] feat: enhance rich filters with complex filter support and improved code organization

* chore: remove state group set from state filter

* fix: make setLoading optional in loadOptions function for improved flexibility

* fix: automation condition item value display

* chore: remove duplicate exports

* chore: minor improvements to rich filters

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-16 20:37:39 +05:30
sriram veeraghantaandGitHub 1a61cb162f Sync: Community Changes #4217 2025-09-16 20:29:06 +05:30
761742a067 [WEB-4947] deprecate: hyper mode (#4221)
* deprecate: hyper mode

* fix: format errors

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-16 20:27:59 +05:30
sriramveeraghanta c38bfdc6ac fix: pnpm workspace path 2025-09-16 18:55:19 +05:30
NikhilandGitHub 4d17637edf [WEB-4943] refactor: streamline URL construction in authentication views (#7806)
* refactor: streamline URL construction in authentication views

* Updated MagicSignInSpaceEndpoint and MagicSignUpSpaceEndpoint to directly construct redirect URLs using formatted strings instead of the get_safe_redirect_url function.
* Enhanced get_safe_redirect_url to use quote for safer URL encoding of parameters.

* refactor: enhance URL validation and redirection in authentication views

* Added validate_next_path function to improve the safety of redirect URLs in MagicSignInSpaceEndpoint and MagicSignUpSpaceEndpoint.
* Updated URL construction to ensure proper handling of next_path and base_url.
* Streamlined the get_safe_redirect_url function for better parameter encoding.

* refactor: unify URL redirection logic across authentication views

* Introduced validate_next_path function to enhance URL safety in SignInAuthSpaceEndpoint, SignUpAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, and GoogleCallbackSpaceEndpoint.
* Updated URL construction to directly format the redirect URL, improving clarity and consistency across multiple authentication views.
2025-09-16 18:44:26 +05:30
Anmol Singh BhatiaandGitHub bf45635a7b [WEB-4898] fix: extended sidebar toggle #7797 2025-09-16 15:35:31 +05:30
Saurabh KumarandGitHub b3d721ff9c [SILO-530] Fix broken configure button in integrations and missing apps for free plan (#4214)
* fix invalid configuration url error + default apps not visible for free

* remove installed tag from default apps
2025-09-16 14:56:03 +05:30
275b6cad8d fix: duplicate specifier of propel package (#4212)
* fix: duplicate specifier of propel package

* Update package.json

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-16 14:09:47 +05:30
Akshat JainandGitHub 664ac994cb [INFRA-240] chore: update Go version in email Dockerfile from 1.25.0 to 1.25.1 #4213 2025-09-16 14:08:02 +05:30
sriram veeraghantaandGitHub a0062f4a12 Sync: Community Changes #4211 2025-09-16 11:00:16 +05:30
NikhilandGitHub 56d3a9e049 [WEB-4900] refactor: remove base_host retrieval from authentication views (#7804)
* refactor: remove base_host retrieval from authentication views

* Removed unnecessary base_host retrieval from GitHub, GitLab, and Google callback endpoints.
* Updated MagicSignUpEndpoint to use get_safe_redirect_url for URL construction.
* Refactored MagicSignInSpaceEndpoint to streamline URL redirection logic.

* refactor: streamline URL redirection in MagicSignInSpaceEndpoint

* Removed redundant base_url retrieval from the exception handling in MagicSignInSpaceEndpoint.
* Enhanced the clarity of URL construction by directly using get_safe_redirect_url.
2025-09-16 10:57:20 +05:30
sriram veeraghantaandGitHub 3646ae4465 Sync: Community Changes #4209 2025-09-16 01:29:09 +05:30
sriram veeraghanta 1f7eef5f81 chore: django import error 2025-09-16 01:24:48 +05:30
sriram veeraghanta ca946af375 fix: mobile editor package vite version 2025-09-16 01:20:01 +05:30
sriram veeraghantaandGitHub 67b7b020e7 Sync: Community Changes #4208 2025-09-16 01:16:37 +05:30
sriram veeraghanta 3dbc5d97f7 fix: merge conflicts 2025-09-16 01:12:55 +05:30
sriram veeraghanta bd2272a7da chore (deps): pnpm lockfile overrides update 2025-09-16 00:55:35 +05:30
sriram veeraghanta b9c6bb07bf chore(deps): axios version upgrade to 1.12.0 2025-09-16 00:14:18 +05:30
345dfce25d [WEB-4900]: validated authentication redirection paths (#7798)
* refactor: replace validate_next_path with get_safe_redirect_url for safer URL redirection across authentication views

* refactor: use get_safe_redirect_url for improved URL redirection in SignInAuthSpaceEndpoint and SignUpAuthSpaceEndpoint

* fix: redirect paths

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-16 00:01:06 +05:30
Jayash TripathyandGitHub c93cdeb6b8 [WEB-4902] refactor: remove website validation in integrations form #4206 2025-09-15 19:14:54 +05:30
M. PalanikannanandGitHub 9a4806f5ab [WIKI-608]fix: remove redundant search bar #4207 2025-09-15 19:10:09 +05:30
sriram veeraghantaandGitHub 732a3403c2 Sync: Community Changes #4205 2025-09-15 19:05:10 +05:30
sriram veeraghantaandGitHub 3ca6af1fe8 Merge branch 'preview' into sync/ce-ee 2025-09-15 19:03:46 +05:30
116c8118ab [WIKI-659] chore: added issue relation and page sort order (#7784)
* chore: added issue relation and page sort order

* feat: add ProjectWebhook model to manage webhooks associated with projects

* chore: updated the migration file

* chore: added migration

* chore: reverted the page base code

* chore: added a variable for sort order in pages

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-09-15 18:36:00 +05:30
Jayash TripathyandGitHub 9d502a6187 [SILO-529] refactor: integration page enhancements (#4196) 2025-09-15 17:52:32 +05:30
59e791d56f [WIKI-608] feat: nested pages in teamspaces (#4103)
* chore: added nested pages in teamspace

* chore: changed the view set

* chore: added restore endpoint for project pages

* chore: added query parameters for listing archived pages

* fix: added support for nested pages

* fix: archive and move pages are present

* chore: added sub pages count

* chore: removed the duplicated code

* chore: changed the entity name for teamspace

* fix: teamspace bugs

* chore: added the sub pages filter

* fix: feature flag added

* fix: teamspace pages ff removed

* chore: added the parent select relataed

* fix: lint issues

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-09-12 21:03:50 +05:30
sriram veeraghantaandGitHub dca46fd74c promote: mobile runway to preview #4195 2025-09-12 18:28:10 +05:30
guru_sainathandGitHub d4d3343c05 [MOB-1179] fix: make work item link title optional and add metadata to epic/work item links (#4183)
* fix: made the link title optional in workitem and added metadata in epic and workitem link

* dev: replaced dict with json
2025-09-12 16:47:47 +05:30
guru_sainathandGitHub dba096e31b fix: duplicating the cycle activity when we add the cycle to workitem (#4182) 2025-09-12 16:47:23 +05:30
guru_sainathandGitHub 05c47c5aa4 [MOB-985] dev: handled the epic in push notification background job, and updated catchup, and notification queries (#4180)
* dev: handled the epic in push notification, catchup, and notification queries and background job

* dev: handled none in push notification
2025-09-12 16:46:50 +05:30
guru_sainathandGitHub 87927f46d2 dev: replaced pages with wiki in app links (#4171) 2025-09-12 16:46:03 +05:30
guru_sainathandGitHub 4cc6a40f99 dev: handled the project details and workitem identifier in user favorites and recents (#4097) 2025-09-12 16:45:18 +05:30
guru_sainathandGitHub f11f5d43dc [MOB-1155] chore: handle catch-up types and validations in notification system (#4063)
* dev: updated catch-up return values

* dev: replaced created_at with updated_at in catchup base query while filtering

* dev: handled the catchup order

* chore: updated bool
2025-09-12 16:44:40 +05:30
sriram veeraghantaandGitHub e6455ee1ec Sync: Community Changes #4191 2025-09-12 16:43:49 +05:30
c3e7cfd16b [WEB-4723] fix: disable project features on project create (#7625)
* fix: disbale project features on project create

* Implement migration 0105 to alter project cycle view fields to Boolean with default values

* Add project view settings in workspace seed task

* Add is_current_version_deprecated field to Instance model

Index user_id field in Session model

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-09-12 13:01:03 +05:30
sriram veeraghantaandGitHub 0ca497af45 Sync: Community Changes #4188 2025-09-12 12:27:15 +05:30
Jayash TripathyandGitHub d7f5721ed9 Merge branch 'preview' into sync/ce-ee 2025-09-12 00:09:12 +05:30
Jayash TripathyandGitHub 9ffc30f7b1 [WEB-4889] refactor: add fill in bar chart bar stroke (#7776)
* ♻️ refactor: add fill in barchart bar stroke

* ♻️ refactor: added fill in the circle
2025-09-12 00:04:16 +05:30
SangeethaandGitHub d4b1a31715 [WEB-4892]fix: 400 error on project creation #4187 2025-09-11 20:01:51 +05:30
pushya22andGitHub b76aec4b1b Sync: Community Changes #4185 2025-09-11 19:01:54 +05:30
Dheeraj Kumar KetireddyandGitHub b60f12a88e [WEB-4861] fix: update redirection path in MagicSignInEndpoint to home page (#7774)
* fix: update redirection path in MagicSignInEndpoint to home page

* Use / for clarity
2025-09-11 18:56:32 +05:30
Vamsi KrishnaandGitHub 76a0b38dd1 [WEB-4890]fix: dropdown width #7778 2025-09-11 18:56:04 +05:30
Vamsi KrishnaandGitHub 0d5fbbe3b0 fix: build errors due to duplicate imports (#4184) 2025-09-11 18:33:05 +05:30
pushya22andGitHub 63217b3f93 Sync: Community Changes #4181 2025-09-11 18:00:33 +05:30
vamsikrishnamathala 3e6aee670d Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-09-11 17:55:52 +05:30
SangeethaandGitHub 8ee665f491 [WEB-4875] fix: unsubscribed work items on workspace subscribed work item filter #7775 2025-09-11 17:52:51 +05:30
Vamsi KrishnaandGitHub 645c4fec05 [WEB-4801]feat: views lock/unlock (#4128)
* * chore: removed uneccsary dummy service file
* chore: split ProjectViewStore for ee

* feat: added global views lock/unlock functionality

* * chore: removed unused trackers
* chore: added feature flag for views lock/unlock

* chore: store refactor for method override

* chore: updated workspace service

* chore: build fix

* chore: updated lock/unlock view indicator

* fix: lint errors
2025-09-11 17:51:25 +05:30
Vamsi KrishnaandGitHub 1a159ee1c0 [WEB-4336]feat: added switcher to teamspace views header (#4175)
* feat: added switcher to teamspace views header

* chore: moved views list fetch to layout level
2025-09-11 17:50:46 +05:30
Henit ChobisaandGitHub 8541c051d8 [SILO-501] fix: slack modal data persistence for type and work item selection #4170 2025-09-11 17:39:14 +05:30
Henit ChobisaandGitHub 3f9493c920 [SILO-521] fix: added function to return instance of internal api client (#4178)
* fix: added function to return instance of internal api client

* fix: added fallback for internal api base url

* fix: modified eslint and prettier config for api client

* fix: formatting errors
2025-09-11 17:38:46 +05:30
Vamsi KrishnaandGitHub 85f23b450d [WEB-4852] chore: views refactor (#7729)
* chore: refactored view store and services

* chore: removed unused import

* chore: refactored update view component

* fix: lint errors
2025-09-11 17:09:56 +05:30
Jayash TripathyandGitHub a9aedde9be [WEB-4887] chore: updated trial banner to include 'Learn more' button for business and pro plans (#4176)
*  chore: enhance trial banner to include 'Learn more' button for business and enterprise plans

* fix: correct logic for displaying 'Learn more' button in trial banner based on current plan

* refactor: simplify 'Learn more' button logic in trial banner to use subscription URLs
2025-09-11 17:09:36 +05:30
sriram veeraghantaandGitHub 7c2de1188e Sync: Community Changes #4177 2025-09-11 17:04:52 +05:30
Dheeraj Kumar Ketireddy e811609282 Merge branch 'preview' into sync/ce-ee
Fixed merge conflicts

Conflicts:
	apps/api/plane/app/permissions/base.py
	apps/api/plane/app/permissions/project.py
	apps/api/plane/app/views/project/base.py
	packages/editor/src/core/types/editor.ts
2025-09-11 17:03:08 +05:30
SangeethaGitHubvamsikrishnamathalaLakhan BahetiAaryan Khandelwalsriram veeraghantaCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>Vamsi Krishna
6b08c22043 chore: workspace admin access (#4138)
* chore: added access for workspace admin to edit project settings

* chore: workspace admin to update members details

* chore: workspace admin to label, state, workflow settings

* Revert "chore: added access for workspace admin to edit project settings"

This reverts commit 803b56514887339d884eaef170de8a9e4ecfda8c.

* chore: updated worspace admin access for projects

* Revert "chore: workspace admin to update members details"

This reverts commit ac465d618d7a89ef696db3484e515957b6b5e264.

* Revert "chore: workspace admin to label, state, workflow settings"

This reverts commit f01a89604e71792096cbae8e029cac160ea209fb.

* chore: workspace admin access in permission classes and decorator

* chore: check for teamspace members

* chore: refactor permission logic

* [WIKI-632] chore: accept additional props for document collaborative editor (#7718)

* chore: add collaborative document editor extended props

* fix: additional rich text extension props

* fix: formatting

* chore: add types to the trailing node extension

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>

* [WEB-4854] chore: project admin accesss to workspace admins (#7749)

* chore: project admin accesss to workspace admins

* chore: frontend changes

* chore: remove console.log

* chore: refactor permission decorator

* chore: role enum

* chore: rearrange role_choices

* Potential fix for code scanning alert no. 636: URL redirection from remote source (#7760)

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* [WEB-4441]fix: members account type dropdown position #7759

* [WEB-4857] fix: applied filters root update #7750

* [WEB-4858]chore: updated content for error page (#7766)

* chore: updated content for error page

* chore: updated btn url

* fix: merge conflicts

* fix: merge conflicts

* fix: use enum for roles

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
Co-authored-by: Lakhan Baheti <94619783+1akhanBaheti@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-09-11 16:44:00 +05:30
M. PalanikannanandGitHub 430eedfcf1 [WIKI-656] fix: rendering work item embed component in version history #4159 2025-09-11 14:34:36 +05:30
Vihar KuramaandGitHub 469cf584bd [WEB-4859] fix: enable customer sidebar scrolling on small screens #4163 2025-09-11 14:33:52 +05:30
Vamsi KrishnaandGitHub 8bf059535a [WEB-4858]chore: updated content for error page (#7766)
* chore: updated content for error page

* chore: updated btn url
2025-09-11 14:22:46 +05:30
Vamsi KrishnaandGitHub 4cfea87108 [WEB-4857] fix: applied filters root update #7750 2025-09-11 14:21:30 +05:30
Vamsi KrishnaandGitHub 4fe2ef706b [WEB-4441]fix: members account type dropdown position #7759 2025-09-11 14:20:10 +05:30
sriram veeraghantaGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
8d354b3eb2 Potential fix for code scanning alert no. 636: URL redirection from remote source (#7760)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-11 14:18:13 +05:30
SangeethaandGitHub ec541c2557 [WEB-4854] chore: project admin accesss to workspace admins (#7749)
* chore: project admin accesss to workspace admins

* chore: frontend changes

* chore: remove console.log

* chore: refactor permission decorator

* chore: role enum

* chore: rearrange role_choices
2025-09-11 14:16:36 +05:30
11cd8d11e4 [WIKI-632] chore: accept additional props for document collaborative editor (#7718)
* chore: add collaborative document editor extended props

* fix: additional rich text extension props

* fix: formatting

* chore: add types to the trailing node extension

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-09-11 14:15:39 +05:30
Henit ChobisaandGitHub a953231aeb [SILO-525] fix: added quotation marks around jira jql projects (#4172)
* fix: added quotation marks around jira jql projects

* fix: linter error
2025-09-10 20:51:54 +05:30
pushya22andGitHub fda95bea6a Sync: Community Changes #4169 2025-09-10 17:48:05 +05:30
Jayash TripathyandGitHub 0f7bfdde91 [WEB-4877] fix: webapp crash because of bar chart (#7763)
* 🔧 fix: dynamic bar color handling and refactored color retrieval logic.

* ♻️  refactor: updated any to Record in getBarColor
2025-09-10 17:44:52 +05:30
sriram veeraghantaandGitHub d5c51e2b6b Sync: Community Changes #4166 2025-09-10 17:25:47 +05:30
Henit ChobisaandGitHub d044dfbd71 [SILO-521] fix: started using internal api base url for api client for notion importer (#4151)
* fix: started using internal api base url for api client for notion importer

* fix: linter errors for notion
2025-09-10 17:24:29 +05:30
sriramveeraghanta 7d1d4241fd fix: merge conflicts 2025-09-10 17:19:52 +05:30
Vamsi KrishnaandGitHub ac835bf287 [WEB-4874]fix: calendar picker build errors and styles override (#7762)
* fix: calender picker build errors

* fix: styles override in the picker implementation
2025-09-10 17:10:23 +05:30
Vamsi KrishnaandGitHub 4572ad1365 fix: anaytics build errors (#4167) 2025-09-10 15:52:34 +05:30
sriram veeraghanta db18c3555c Merge branch 'canary' of github.com:makeplane/plane into preview 2025-09-10 14:45:14 +05:30
sriram veeraghantaandCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> b696ae91ed Potential fix for code scanning alert no. 646: Server-side request forgery (#7758)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-10 14:44:34 +05:30
sriramveeraghanta 61e91bd09c chore (deps): django and vite version bump 2025-09-10 14:44:34 +05:30
sriram veeraghantaGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
20d773042b Potential fix for code scanning alert no. 646: Server-side request forgery (#7758)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-10 14:42:46 +05:30
sriramveeraghanta 30b175108b chore (deps): django and vite version bump 2025-09-10 13:38:30 +05:30
db1f91d045 [SILO-388][WEB-4702] OAuth and Application Creation Flow Changes (#4031)
* [SILO-388][WEB-4702] Merge integrations screen and applications screen (#3708)

* refactor: merge integrations and applications page changes

* remove applications from navigations tile

* show tabs only with owned apps present

* refactor: hardcode legacy integrations in list for selfhosted

* redirect to setup url for external apps if available

* fix wrong url redirect to applications page

* add app workspace installations api (#3921)

* [SILO-448] Get App installation is allowed for a users workspaces (#3925)

* check if app installation is allowed

* rename installation to state

* optimise query using map

* optimise query using map

* optimise query via limited resource usage

* fix: ux updates

* fix: added revoke modal

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>

* user app disconnect api + member app install flow (#3886)

* chore: use app slug for update app use case

*   feat: enhance application form with new input components and layout improvements

- Introduced new form components including InputField, RichTextField, and FormSection for better structure and reusability.
- Updated CreateUpdateApplication form to utilize new components, improving readability and maintainability.
- Enhanced styling for various elements, including AppTile and AppList, to improve user experience.
- Added a collapsible section feature in the form for better organization of input fields.
- Improved integration of category selection and attachment upload functionalities.

*  feat: add collapsible sections to application form for improved organization

*  feat: enhance application details view with categorized app lists and update environment variables

- Added new environment variables for silo base URL and path.
- Refactored AppListRoot to categorize installed, third-party, and internal applications.
- Improved AppTile layout for better visual hierarchy and responsiveness.

*  feat: add RegenerateClientSecretModal for managing client secrets

- Introduced a new modal component for regenerating client secrets in the application settings.
- Implemented functionality to copy application ID, client ID, and display a masked client secret.
- Enhanced user experience with toast notifications for successful copy actions and modals for regenerated credentials.

*  feat: enhance application management with improved app lists and dynamic modals

- Refactored AppListRoot to consolidate app categorization, displaying all apps, owned apps, and internal apps more effectively.
- Updated GeneratedCredentialsModal to support dynamic titles and descriptions based on the creation or update mode.
- Enhanced CreateUpdateApplication form with new input fields for company name and improved label structures for better clarity.
- Improved user feedback in RegenerateClientSecretModal by passing the mode for better context in the credentials modal.

* ♻️  refactor: reordered form fields and input added some translations

* ♻️  refactor: cleanup

*  feat: enhance UI components with improved spacing and new icons

* ♻️  refactor: cleanup

* 📝 chore: update translations

* 🚨 fix: lint

* 🚨 fix: lint

* 🗑️ chore: remove unused ApplicationTextareaField component

* chore: update application form and translations

*  feat: enhance application form and update translations

- Updated the SettingsHeading component to include a bottom border for improved UI.
- Refactored the application form by removing unused imports and organizing field components.
- Enhanced translations across multiple languages to provide clearer instructions regarding app installation permissions.

* 🔧  fix: adjust button spacing in AppTile

* fix: format web, silo and i18n changes

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com>
2025-09-10 13:27:20 +05:30
Jayash TripathyandGitHub e26f2abef9 [WEB-4696] feat: added users tab in analytics (#3906)
* feat: added users tab in analytics

* feat: export in users insight table

* ♻️  refactor: simplify InsightCard component and remove ActiveUsers component

- Removed unused TrendPiece and percentage calculation from InsightCard.
- Updated InsightCardProps to eliminate the 'versus' prop.
- Refactored TotalInsights to streamline the useAnalytics hook and added comments for clarity.
- Deleted the ActiveUsers component as it is no longer needed.
- Integrated WiResolvedVsPending component in the Users view.

* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.

* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.

*  feat: add customTooltipLabel prop to BarChart for enhanced tooltip customization

*  feat: enhance user analytics components with tooltip and data fetching improvements

*  feat: update user analytics components with improved titles and localization for work item metrics

- Updated localization files to include translations for "workitem_resolved_vs_pending" in multiple languages.
- Refactored imports in the Users component for better organization.

* ♻️  refactor: cleanup

*  feat: add WiResolvedVsPending component and custom tooltip for user analytics

*  feat: added customTicks to axis charts for flexible tick rendering

* 🔧 fix: update default bar fill color to black and ensure consistent color usage in BarChart

*  feat: add customTooltipContent prop to LineChart for enhanced tooltip flexibility

* 🔧 fix: remove duplicate customTicks prop from BarChart component

* 🚨 fix: lint

* 🚨 fix: lint

* 🚨 fix: lint

* 🔧 fix: clean up comments in users root component

* 🚨 fix: lint

* 🚨 fix: lint
2025-09-10 13:15:17 +05:30
sriram veeraghantaandGitHub 621f25cd1b Sync: Community Changes #4160 2025-09-10 02:08:49 +05:30
sriram veeraghanta 1aed863d61 fix: merge conflicts 2025-09-10 02:07:42 +05:30
e53fe88199 [WEB-4841] chore: calendar component migration UI to propel (#4140)
* chore: move calendar components and dependencies

* chore: update package configurations

* chore: calendar import updated

* chore: propel config updated

* chore: propel calendar code refactor

* chore: code refactor

* chore: code refactor

* fix: build error

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-10 02:05:26 +05:30
78e23686b6 [WEB-4816] chore: add label flow (#4106)
* chore: remove create label modal

* fix: label spinner

* chore: add label flow improvements

* chore: code refactor

* fix: merge conflicts

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-10 01:54:55 +05:30
sriram veeraghantaandGitHub 61793613c8 Sync: Community Changes #4158 2025-09-10 01:14:16 +05:30
6d116beea3 [WEB-4320] dev: propel emoji reaction component (#7741)
* dev: animated counter added to propel

* chore: animated counter story added

* chore: propel config updated

* chore: code refactor

* dev: emoji reaction and renderer component added to propel

* dev: emoji reaction story added

* chore: propel config updated

* chore: code refactor

* fix: format error

* chore: lint error resolved

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-10 00:54:47 +05:30
b0db4fcf10 [WEB-4736] dev: propel button (#7746)
* dev: button added to propel

* dev: button story added

* chore: propel config updated

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-10 00:34:17 +05:30
Anmol Singh BhatiaandGitHub 7e03264758 [WEB-4730] dev: propel context menu component (#7745)
* dev: context menu component added

* dev: context menu story added

* chore: propel config updated
2025-09-10 00:15:55 +05:30
Anmol Singh BhatiaandGitHub 1c8ac3d247 [WEB-4737] dev: propel pill component (#7743)
* dev: pill component added to propel

* dev: pill story added

* chore: propel config updated

* chore: code refactor
2025-09-10 00:15:37 +05:30
3b8bb1effc [WEB-4733] dev: propel toolbar component (#7742)
* dev: toolbar component added to propel

* dev: toolbar story added

* chore: propel config updated

* chore: code refactor

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-09-10 00:15:10 +05:30
Anmol Singh BhatiaandGitHub 5a63e6dad2 [WEB-4858] chore: error page ui revamp #7747 2025-09-10 00:03:39 +05:30
Anmol Singh BhatiaandGitHub 45688bdc72 [WEB-4860] dev: propel animated counter component (#7740)
* dev: animated counter added to propel

* chore: animated counter story added

* chore: propel config updated

* chore: code refactor

* chore: code refactor

* fix: format error
2025-09-09 23:51:45 +05:30
Jayash TripathyandGitHub 43b7a6ad0a [WEB-4855] refactor: chart tick improvements (#7732)
* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.

*  feat: added customTicks to axis charts for flexible tick rendering

* 🔧 fix: update default bar fill color to black and ensure consistent color usage in BarChart

*  feat: add customTooltipContent prop to LineChart for enhanced tooltip flexibility

* 🔧 fix: update bar fill color handling to support dynamic colors based on data and removed DEFAULT_BAR_FILL_COLOR

* 🔧 fix: correct bar fill color handling in BarChart to ensure proper color assignment for tooltips

* 🔧 fix: update customTicks prop types in TAxisChartProps to use unknown type for better type safety

* 📝 chore: updated translations and cleaned up insight card

* 🚨 fix: lint

* 🔧 fix: remove unused translation key "no_of" from Russian translations
2025-09-09 23:51:13 +05:30
Anmol Singh BhatiaandGitHub 498613284e [WEB-4841] chore: calendar component migration UI to propel (#7730)
* chore: move calendar components and dependencies

* chore: update package configurations

* chore: calendar import updated

* chore: propel config updated

* chore: propel calendar code refactor

* chore: code refactor

* fix: build error
2025-09-09 23:50:51 +05:30
Anmol Singh BhatiaandGitHub 9ab3143a73 [WEB-4816] chore: add label flow (#7716)
* chore: remove create label modal

* fix: label spinner

* chore: add label flow improvements

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-09-09 23:50:39 +05:30
56cd0fc445 [WEB-4025] fix: external user comment and reaction (#7692)
* chore: reactions types updated

* fix: external user comments

* fix: external user reactions

* chore: added display name for actor

* chore: merge conflicts

* chore: updated the created_by and updated_by

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-09-09 23:50:11 +05:30
Vamsi KrishnaandGitHub 260d9a053d [WEB-4802] fix: module sort order (#7674)
* fix: module sort order

* chore: removed secondary sort for progress

* chore: sort refactor
2025-09-09 23:49:30 +05:30
Aaryan Khandelwal 9c0ba52dff fix: merge conflicts resolved from preview 2025-09-09 20:09:58 +05:30
Aaryan Khandelwal bef9737e40 fix: merge conflicts resolved from preview 2025-09-09 20:09:50 +05:30
sriram veeraghantaandGitHub c8e30d1afe Sync: Community Changes #4156 2025-09-09 19:32:39 +05:30
Vipin ChaudharyandGitHub 34bdc2ad76 [WIKI-636] fix: replace project loader with page loader #7752 2025-09-09 19:27:00 +05:30
99bc4262c5 [WIKI-654] fix: version history to load from html (#7754)
* fix: versions history to load from html

* chore: added json and stripped to store in version history (#7755)

---------

Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
2025-09-09 19:26:19 +05:30
sriramveeraghanta cd6d708e23 fix: share page email template 2025-09-09 18:40:31 +05:30
Aaryan Khandelwal ed0029b48d fix: merge conflicts resolved from preview 2025-09-09 18:24:10 +05:30
Aaryan KhandelwalandGitHub 49127ebeea [WIKI-653] fix: page content loader #7753 2025-09-09 18:20:31 +05:30
sriram veeraghantaandGitHub 4f248d9260 Sync: Community Changes #4150 2025-09-09 18:19:31 +05:30
Surya PrashanthandGitHub 8529f55d49 [SILO-523] chore: add categories for applications #4155 2025-09-09 18:18:59 +05:30
7a3b1a2d4e [WIKI-652] feat: share page notification (#4154)
* feat: share page notification

* feat: enhance share page notification functionality and email template

- Added a new function to map page access levels to descriptive strings.
- Updated the share_page_notification task to include workspace name and email preference URL in the context.
- Improved email template formatting for better readability and added a link to manage email preferences.
- Refactored logging to use a dedicated logger instance.

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-09-09 18:18:19 +05:30
f0c15cb97e [WIKI-649] chore: added restore endpoint for project pages (#4153)
* chore: added restore endpoint for project pages

* chore: removed project ids

* chore: grouped the page ids together

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-09 18:15:01 +05:30
acee583e53 [WIKI-630] [WIKI-629] [WIKI-626] chore: organised the page comments folder (#4096)
* chore: organised the page comments folder

* chore: corrected the filter

* fix: parity

* fix: padding and spacing issues

* fix: dev wiki redirection

* fix: cancel icon on top of the reference text

* fix: hover styles and padding in new comment form

* fix: added back animations and better styles

* fix: show latest comment

* fix: comment creation handling fixed

* fix: border and hover states fix

* fix: truncate fixes

* fix: reply controller count values

* fix: scroll after opening reliably

* fix: add comment control

* fix: all other ux issues

* fix: count of showing/hiding

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-09-09 18:11:04 +05:30
Saurabh KumarandGitHub 27e5138964 [SILO-496] Backward compatibility changes to support old code in Github (#4100)
* filter type null in get github entity connections

* cleanup for unused entity service

* fix lint issues
2025-09-09 14:12:51 +05:30
sriramveeraghanta 95cc6f6196 fix: remove build step from webapps 2025-09-09 14:08:22 +05:30
Vamsi KrishnaandGitHub a8a6536379 [WEB-4688]feat: added collapsible to propel (#7643)
* chore: added collapsibl to propel

* fix: export path

* chore: made collapsible a compound component

* fix: lint and format errors

* chore: updated propel exports order and added collapsible to tsdown config
2025-09-09 13:59:00 +05:30
Vamsi KrishnaandGitHub 11b83cf4f2 [WEB-4692]feat: added toast to propel package (#7640)
* * chore: migrated toast to base ui toast
* chore: added toast to propel package

* fix: lint errors

* fix: export path

* fix: lint errors

* chore: imporoved props handling

* fix: lint errors

* chore: updated import paths

* chore: replaced clsx with cn

* * chore: updated tsdown config
* chore: updated exports order
2025-09-09 13:58:11 +05:30
Anmol Singh BhatiaandGitHub fbd48c33f5 [WEB-4729] dev: propel scrollarea (#7748)
* dev: scrollarea added to propel

* dev: scrollarea story added

* chore: propel config updated

* fix: format error
2025-09-09 13:56:28 +05:30
NikhilandGitHub 89f6915764 [WEB-4856] feat: add workitem existence check in SubWorkitemTemplateEndpoint (#4142)
* feat: add workitem existence check in SubWorkitemTemplateEndpoint

* fix: update workitem existence check to include project_id in SubWorkitemTemplateEndpoint
2025-09-09 13:54:09 +05:30
Vamsi KrishnaandGitHub 37ce8a9fe6 [WEB-4800]chore: settings header component refactor #7669 2025-09-09 13:42:40 +05:30
sriram veeraghantaandGitHub f952e96f8d Sync: Community Changes #4149 2025-09-08 17:19:24 +05:30
Bavisetti NarayanandGitHub 291101a8e5 chore: added attributes in ol tag (#7736) 2025-09-08 17:17:38 +05:30
pushya22andGitHub 1f0fba4734 Sync: Community Changes #4146 2025-09-08 16:59:37 +05:30
VipinDevelops db453919ed Merge branch 'preview' into sync/ce-ee 2025-09-08 15:49:38 +05:30
Vipin ChaudharyandGitHub 0cb4976e38 [WIKI-647] chore: update image path (#7734)
* chore: update image path

* chore: update asset path
2025-09-08 15:44:56 +05:30
Henit ChobisaandGitHub e9dca9d1b0 [SILO-517] fix: modified notion importer to use asset endpoint under HMAC to counter rate limits (#4136) 2025-09-08 15:41:41 +05:30
M. PalanikannanandGitHub fb90b5ce41 [WIKI-648] fix: comment feature flag and app rail focus #4145 2025-09-08 15:01:01 +05:30
sriramveeraghanta e59adfdf7d chore: delete dev-wiki folder from root 2025-09-08 14:48:15 +05:30
Vipin ChaudharyandGitHub e439dcae9b [WIKI-647] chore: update pages image path (#4143)
* chore: update pages image path

* chore: embed image shrink
2025-09-08 14:47:18 +05:30
658198a296 [WEB-4839] chore: maintenance mode empty state updated (#4131)
* chore: maintenance mode empty state updated

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-05 20:20:28 +05:30
sriram veeraghantaandGitHub 3e3f9c365a Sync: Community Changes #4139 2025-09-05 20:19:09 +05:30
sriram veeraghantaandGitHub d1744c822e Merge branch 'preview' into sync/ce-ee 2025-09-05 20:18:31 +05:30
Anmol Singh BhatiaandGitHub 20d139cc9e [WEB-4839] chore: maintenance mode empty state updated (#7728)
* chore: maintenance mode empty state updated

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-09-05 20:16:39 +05:30
Akshita GoyalandGitHub 5883caeec4 [WEB-4556] fix: removed /new routes + fixed routing for PI app #4134 2025-09-05 20:15:41 +05:30
sriram veeraghantaandGitHub 39dc4ca55c fix: eslint warning limit (#4133)
* fix: eslint changes

* chore: format files
2025-09-05 20:15:20 +05:30
sriram veeraghantaandGitHub b5ef78f609 Sync: Community Changes #4135 2025-09-05 19:43:40 +05:30
sriramveeraghanta 0374d4b7b4 fix: merge conflicts 2025-09-05 19:25:11 +05:30
Vipin ChaudharyandGitHub 1505e8df29 [WIKI-640] feat: add paste as modal on pasting new link (#4127)
* fix: add paste as modal

* chore : update request

* chore: update design changes

* fix: add back drop

* chore: update in place conversion

* chore: stop propagtion

* chore : add para near

* chore : handle url
2025-09-05 18:42:26 +05:30
ff181e566f [WEB-4738] feat: add Skeleton component with respective stories in propel (#7704)
*  feat: add Skeleton component with respective stories in propel

* 🚨 fix: lint issues

* ♻️ refactor : enhance Skeleton component with improved props and structure

*  feat: add Skeleton component entry to package.json

* 🚨 fix: lint

* ♻️ refactor: rename Skeleton to skeleton

* fix: rename fixes

* ♻️ refactor: rename skeleton

* 🚨 fix: lint

* ♻️ refactor: add skeleton entry to tsdown config and package.json

* ♻️  refactor: sorted propel exports

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-05 15:51:05 +05:30
Jayash TripathyandGitHub a696b6039c [WEB-4835] feat: storybook enhancements (#7702)
*  feat: integrate Storybook addons and enhance Tabs component

- Added `@storybook/addon-designs` and `@storybook/addon-docs` to the project dependencies.
- Enhanced the Tabs component stories to support dynamic tab options.
- Introduced a custom theme for Storybook with a new manager configuration.
- Added a new SVG logo for branding in Storybook.
- Pinned the storybook and related packages version

* ♻️  refactor: update Storybook manager configuration by removing unused import

* ♻️  refactor: enhance Tabs story with size labels and layout adjustments

* 🚨 fix: lint issues

* 🚨 fix: lock file

* ✏️  fix: update brand image path in Storybook manager configuration

* ♻️ refactor: improve Tabs story by ensuring safe default value and enhancing content rendering
2025-09-05 14:55:33 +05:30
Vipin ChaudharyandGitHub af1dcd335e [WIKI-640] chore: refactor link view #7727 2025-09-05 14:14:30 +05:30
sriram veeraghantaandGitHub 67db0ed71c Sync: Community Changes #4132 2025-09-05 14:09:33 +05:30
sriramveeraghanta 06f7b77123 fix: merge conflicts 2025-09-05 14:08:44 +05:30
Aaryan KhandelwalandGitHub 9e3c18a165 [WIKI-644] fix: editor extended props (#4130)
* fix: editor embed handler prop

* fix: extended editor props

* chore: add tsc command to build
2025-09-05 13:58:12 +05:30
Aaryan KhandelwalandGitHub a1500c2206 [WIKI-644] fix: remove unnecessary props from the editor package #7726 2025-09-05 13:50:44 +05:30
62d3c6ab8f [SILO-455] feat: Slack DM Alerts (#4084)
* [SILO-456] [SILO-457] feat: Added toggle for personal account view for enabling dm alerts (#3971)

* fix: added alert config type for slack

* feat: added helper method for slack alerts

* fix: added service method and controller methods for updating alert config

* fix: updated personal account view for getting the config

* fix: resolved review comments

* [SILO-458] [SILO-459] feat: Added DM Alerts handler in silo slack worker (#4015)

* chore: added ASSIGNEE_IDS as known field

* fix: added helper functions

* fix: modified slack etl type to accomodate message expansion

* fix: added type for alert processing

* fix: added alert service with tests

* fix: added dm alert handler in controller

* fix: refactored connection details helper for common code

* fix: added method for parsing html and extracting mention component out of html

* fix: encapsulated comment views into comment files

* fix: added inverted mode to user map fucntion

* fix: added helpers

* feat: added DM Alerts handler

* fix: added comment reply handler for block actions

* fix: node html parser importx

* fix: renamed function better for alert config

* fix: resolved review comments

* fix: added better error handling

* fix: review comments and function renaming

* [SILO-484] feat: added translations and modified design of dm alert blocks (#4082)

* fix: added actor displayname in display text

* fix: added translations

* fix: reduced ttl timings of alerts

* fix: filtered actor and affected user

* fix: added conditional quoting for WI linkback

* fix: formatted all the files

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-09-05 13:23:40 +05:30
sriram veeraghantaandGitHub ffc9381e02 Sync: Community Changes #4129 2025-09-04 19:07:10 +05:30
Aaryan KhandelwalandGitHub 88f194ca8e [WIKI-637] fix: work item description version history (#7725)
* fix: work item description version history

* chore: add key to the editor
2025-09-04 18:57:50 +05:30
Henit ChobisaandGitHub 59205bf37f [SILO-506] fix: notion image parser extension (#4125)
* fix: notion image parser extension

* fix: formatting for file parser extension
2025-09-04 18:53:22 +05:30
f0d23f4a38 fix: append / in endpoints (#4029)
* fix: append / in endpoints

* chore: file asset restore endpoint

* chore: reverted the change

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-09-04 18:47:02 +05:30
Anmol Singh BhatiaandGitHub c9723e859b [WEB-4840] chore: icon migration from @plane/ui to @plane/propel/icons (#4115)
* chore: move icons from ui package to propel package

* chore: package and tsdown config updated

* chore: migrate all icon imports from @plane/ui to @plane/propel/icons

* chore: remove icon components from @plane/ui package (migrated to
  @plane/propel/icons)

* chore: code refactoring

* chore: migrate remaining icon components from @Plane/ui to @Plane/propel/icons

* chore: move ee specific icons from ui package to propel package

* chore: propel package dep. added to editor package

* chore: migrate icon components from @plane/ui to @plane/propel/icons in dev-wiki

* chore: migrate icon components from @plane/ui to @plane/propel/icons in space

* chore: migrate icon components from @plane/ui to @plane/propel/icons in web

* chore: migrate icon components from @plane/ui to @plane/propel/icons in web

* chore: migrate icon components from @plane/ui to @plane/propel/icons in web

* chore: migrate icon components from @plane/ui to @plane/propel/icons in web

* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
2025-09-04 18:38:47 +05:30
Aaryan KhandelwalandGitHub b68d2ca921 [WIKI-642] fix: editor bubble menu overflow issues #7724 2025-09-04 18:16:03 +05:30
Aaryan KhandelwalandGitHub 78c6aede52 [WIKI-641] fix: overwrite tailwind typography plugin styles #7723 2025-09-04 18:14:48 +05:30
M. PalanikannanandGitHub 01a070e52d [WIKI-564] fix: project nested page mutation bugs (#4116)
* fix: move page internally

* fix: mutation issues fixed
2025-09-04 18:13:36 +05:30
sriram veeraghantaandGitHub bae24cc7c8 Sync: Community Changes #4118 2025-09-04 18:12:28 +05:30
sriramveeraghanta 51332be591 fix: sync preview changes canary 2025-09-04 18:10:59 +05:30
Anmol Singh Bhatia 3ce00df04e fix: preview sync merge conflict 2025-09-04 17:41:33 +05:30
Anmol Singh BhatiaandGitHub da12411bc0 [WEB-4850] fix: SAML and OIDC oauth options #4126 2025-09-04 17:05:29 +05:30
sriram veeraghantaandGitHub 4d79b27a67 [WEB-4804] chore: fix all file formatting and eslint errors (#4123)
* chore: fix all file formating

* fix: eslint errors
2025-09-04 16:48:18 +05:30
Nikhilandsriramveeraghanta 0e3438eea8 [WEB-4795] chore: remove caching decorator from WorkspaceStatesEndpoint #7714 2025-09-04 16:03:46 +05:30
Manish Guptaandsriramveeraghanta b837428cbc fix: update Go version in email Dockerfile to 1.25.0-alpine3.22 (#4099) 2025-09-04 16:03:46 +05:30
Vamsi Krishnaandsriramveeraghanta d5f11108b5 [WEB-4843] fix: allow updating properties for teamspace project work items #4094 2025-09-04 16:03:46 +05:30
Prateek Shouryaandsriramveeraghanta 5fe7daeffe [WEB-4848] fix: add safe index access in templates components and utils (#4111) 2025-09-04 16:03:46 +05:30
Vamsi Krishnaandsriramveeraghanta b36c85a3cc [WEB-4833] fix: timeline date updates #4072 2025-09-04 16:03:46 +05:30
Bavisetti NarayanandGitHub a1aaace575 [WEB-4806] chore: updated html attribute validation #4113 2025-09-04 15:59:14 +05:30
Anmol Singh BhatiaandGitHub 961d7f5032 [WEB-4850] chore: restore SAML and OIDC oauth options (#4121)
* chore: saml and oidc oauth options restore

* chore: code refactor
2025-09-04 15:56:47 +05:30
sriramveeraghanta c6c46f9aab Merge branch 'canary' of github.com:makeplane/plane into preview 2025-09-04 14:48:27 +05:30
Anmol Singh BhatiaandGitHub 7d7e37439d [WEB-4840] chore: icon migration from @plane/ui to @plane/propel/icons (#7721)
* chore: move icons from ui package to propel package

* chore: package and tsdown config updated

* chore: migrate all icon imports from @plane/ui to @plane/propel/icons

* chore: remove icon components from @plane/ui package (migrated to
  @plane/propel/icons)

* chore: code refactoring

* chore: migrate remaining icon components from @Plane/ui to @Plane/propel/icons

* fix: lint error

* chore: code refactor
2025-09-04 14:44:53 +05:30
Akshat JainandGitHub d258080ee7 [INFRA-235] fix: docker compose file restart_policy changed to any (#7689)
* chore: update docker-compose.yml to change restart policy condition from 'on-failure' to 'any' and remove SSL variable from variables.env

* fix: update docker-compose.yml to change restart policy condition from 'any' to 'on-failure'
2025-09-04 14:18:45 +05:30
sriram veeraghantaandGitHub c311f26cd0 Sync: Community Changes #4117 2025-09-04 14:16:16 +05:30
Vipin ChaudharyandGitHub ab371908de [WIKI-615] fix: shared pages position #4112 2025-09-04 14:15:29 +05:30
Vipin ChaudharyandGitHub 39287a6a58 [WIKI-614] chore: update public to workspace in ui level (#4080)
* chore: update public to work space in ui level

* chore: update type

* chore : update project public logic

* chore : fix translation
2025-09-04 14:14:57 +05:30
Bavisetti Narayanandsriramveeraghanta c40c7804e7 [WEB-4806] chore: updated html attribute validation #7719 2025-09-04 13:53:21 +05:30
Bavisetti NarayanandGitHub 36c735bede [WEB-4806] chore: updated html attribute validation #7719 2025-09-04 13:52:43 +05:30
Henit ChobisaandGitHub d28bf290d3 [SILO-500] fix: notion importer image tag fix (#4092)
* fix: notion importer image tag fix

* fix: added delay with random gitter for protect function
2025-09-03 20:49:56 +05:30
Prateek ShouryaandGitHub e76f9af1c1 [WEB-4848] fix: add safe index access in templates components and utils (#4111) 2025-09-03 20:43:55 +05:30
Dheeraj Kumar KetireddyandGitHub cd038017e9 [WEB-4831] chore: add rich_filters field to ee models for enhanced filtering capabilities #4098
* models updated,
  - TeamspaceUserProperty
  - EpicUserProperties
  - InitiativeUserProperty
2025-09-03 20:21:06 +05:30
sriram veeraghantaandGitHub 427be08243 Sync: Community Changes #4109 2025-09-03 20:17:41 +05:30
Akshita GoyalandGitHub e9c9534cb0 [WEB-4783] fix: cycle charts pending button nav fixed 2025-09-03 20:16:18 +05:30
Akshita GoyalandGitHub 43752ce4cc [PAI-721] feat: added history in pi side car (#4095)
* feat: added history in pi side car

* fix: build
2025-09-03 20:15:36 +05:30
M. PalanikannanandGitHub 78fc7ffc02 [WEB-4825] fix: loading states for project pages (#4107)
* fix: loading states

* fix: remove console.logs
2025-09-03 20:13:12 +05:30
Bavisetti NarayanandGitHub d2a92471e6 Merge branch 'preview' into sync/ce-ee 2025-09-03 20:13:08 +05:30
Bavisetti Narayanandsriramveeraghanta cab5d20217 [WEB-4806] chore: improved the html validation (#7676)
* chore: improved the html validation

* chore: removed the models changes

* chore: removed extra filters

* chore: changed the protocols
2025-09-03 19:57:37 +05:30
Bavisetti NarayanandGitHub 9965fc75a6 [WEB-4806] chore: improved the html validation (#7676)
* chore: improved the html validation

* chore: removed the models changes

* chore: removed extra filters

* chore: changed the protocols
2025-09-03 19:56:20 +05:30
Akshita GoyalandGitHub a6dc21a16c [WEB-4556] fix: fixed routing for pi chat (#3974)
* fix: fixed routing for pi chat

* fix: added progress bar for home page pi input box

* fix: threads based on workspace

* fix: loading state fixed

* fix: refactor
2025-09-03 19:49:18 +05:30
sriramveeraghanta 8a6505d011 chore: removed unused files from tsconfig 2025-09-03 19:25:07 +05:30
sriramveeraghanta cd08f75fab fix: django rest framework simple JWT version bump 2025-09-03 19:10:10 +05:30
sriramveeraghanta 8bcf5d5f42 fix: runtime errors in live server docker 2025-09-03 19:03:20 +05:30
sriram veeraghantaandGitHub e9d01fbb6d Sync: Community Changes #4104 2025-09-03 18:54:43 +05:30
Dheeraj Kumar KetireddyandGitHub cb1e93f83d [WEB-4831] schema: add rich_filters field to multiple models for enhanced filtering capabilities (#7700)
* chore: add rich_filters field to multiple models for enhanced filtering capabilities

* Set the default  value to empty dict
2025-09-03 18:37:56 +05:30
SangeethaandGitHub 2e673026d4 [WEB-4129] fix: work item filter assignees missing fields #7698 2025-09-03 18:36:04 +05:30
NikhilandGitHub 49a40031a4 [WEB-4795] chore: remove caching decorator from WorkspaceStatesEndpoint #7714 2025-09-03 18:28:11 +05:30
sriram veeraghantaandGitHub e4b5e163fa Sync: Community Changes #4102 2025-09-03 18:22:14 +05:30
sriramveeraghanta a0c5ab951a fix: merge conflicts 2025-09-03 18:15:59 +05:30
54e4a0f6dd fix: build error due to exports in propel package (#7715)
* fix: build error due to exports in propel package

* fix: editor css exports

* fix: editor css build

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-09-03 18:11:31 +05:30
sriram veeraghantaandGitHub 473535fcfa [WEB-4844] fix: export prople package dist (#7712)
* fix: export prople package dist

* fix: code refactor
2025-09-03 17:25:31 +05:30
Bavisetti NarayanandGitHub f208b45048 [WIKI-605] chore: added page create external endpoint (#3993) 2025-09-03 17:19:09 +05:30
Anmol Singh BhatiaandGitHub f82b6cef4d [WEB-4845] fix: i18n extended translation config #4101 2025-09-03 17:18:36 +05:30
Vamsi KrishnaandGitHub fdf41b3f65 [WEB-4843] fix: allow updating properties for teamspace project work items #4094 2025-09-03 15:58:35 +05:30
Manish GuptaandGitHub fe39de70da fix: update Go version in email Dockerfile to 1.25.0-alpine3.22 (#4099) 2025-09-03 15:57:45 +05:30
sriram veeraghantaandGitHub 1a5576cb02 Sync: Community Changes #4093 2025-09-03 14:32:49 +05:30
sriramveeraghanta dd02e84d40 fix: build errors 2025-09-03 14:31:51 +05:30
sriramveeraghanta 262ed7129d fix: tsdown changes 2025-09-03 14:27:33 +05:30
sriramveeraghanta eba4a144b8 fix: merge conflicts 2025-09-03 14:18:49 +05:30
Akshita GoyalandGitHub 59ace4f411 [WEB-4787] fix: changed issue to work item in cycles dropdown (#7706) 2025-09-03 14:11:30 +05:30
b99ddc24e7 [WEB-4810] feat: migrate to tsdown from tsup (#7679)
* feat: migrat to tsdown to tsup

* fix: build scripts

* fix: lock file fixes

* fix: adding build process to i18n and propel packages

* fix: lint warning

* chore: update services module entry points

* fix: lock file

* fix: lock file

* fix: remove tsc from build

* fix: tsdown configs

* fix: remove tsc step from build process

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Aaron Reisman <aaron.reisman@plane.so>
2025-09-03 14:01:57 +05:30
pushya22andGitHub c852738c64 Sync: Community Changes #4090 from makeplane/sync/ce-ee 2025-09-03 14:00:47 +05:30
Anmol Singh BhatiaandGitHub 09c8dbaec9 fix: build error (#4091) 2025-09-03 14:00:18 +05:30
Anmol Singh BhatiaandGitHub 9215d99e2b [WEB-4605] feat: initiative logo and icon implementation (#4075) 2025-09-03 13:38:02 +05:30
Jayash TripathyandGitHub cdec24495e [WEB-4125] feat: add feature flag for dashboard widgets filters (#4083) 2025-09-03 13:36:59 +05:30
Anmol Singh BhatiaandGitHub 91f0228b5f [WEB-4838] fix: github logo theme #7709 2025-09-02 22:39:42 +05:30
sriram veeraghantaandGitHub 560e6542ff Sync: Community Changes #4089 2025-09-02 21:16:06 +05:30
sriramveeraghanta f452f18dce fix: package versions 2025-09-02 21:15:37 +05:30
sriramveeraghanta c14ca5a98a fix: merge conflicts 2025-09-02 21:11:18 +05:30
sriram veeraghantaandGitHub 4b74751e4e [WEB-4837] feat: adding more packages to catalog (#7693)
* feat: adding more packages to catalog

* fix: lock file

* fix: sharp pacakge catalog
2025-09-02 21:03:03 +05:30
sriram veeraghantaandGitHub 5f92175981 Sync: Community Changes #4088 2025-09-02 20:45:57 +05:30
Anmol Singh BhatiaandGitHub 1c28bd5887 [WEB-4724] fix: editor tooltip (#7708)
* fix: editor tooltip code refactoring

* chore: code refactor
2025-09-02 20:40:14 +05:30
Aaryan KhandelwalandGitHub 292264ba96 [WIKI-574] fix: disable copy comment link option for intake work item #7707 2025-09-02 20:39:09 +05:30
Akshita GoyalandGitHub cef5b9aa62 [PAI-718] feat: pi actions(build) (#4066) 2025-09-02 20:15:56 +05:30
Anmol Singh BhatiaandGitHub 0ca1234474 fix: build error (#4085) 2025-09-02 20:02:45 +05:30
pushya22andGitHub 3ca6159309 Sync: Community Changes #4081 2025-09-02 19:30:58 +05:30
Prateek ShouryaandGitHub 28d368d502 [WEB-4836] fix: work item retrieval in peek overview (#7705) 2025-09-02 19:26:35 +05:30
Saurabh KumarandGitHub 0e67823577 [SILO-495] fix: Work item mark as done not marking linked github issue as done (#4073)
* fix work item mark done update issue as closed

* move wi to open if not in completed state
2025-09-02 19:20:35 +05:30
Anmol Singh BhatiaandGitHub f1d7a48e52 [WEB-4734] feat: replace emoji picker with frimousse (#4045) 2025-09-02 19:19:53 +05:30
pushya22andGitHub 63ca5ad63d Sync: Community Changes #4079 2025-09-02 19:14:29 +05:30
Anmol Singh Bhatia 77f2e1250f fix: preview sync merge conflict 2025-09-02 19:13:04 +05:30
Anmol Singh Bhatia ac75ccdc2f Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-09-02 19:11:51 +05:30
Anmol Singh Bhatia e6b8e8b400 🔀 fix: preview sync merge conflict 2025-09-02 19:06:51 +05:30
Anmol Singh BhatiaandGitHub 652a6cc885 [WEB-4734] feat: replace emoji picker with frimousse (#7639) 2025-09-02 19:00:15 +05:30
sriram veeraghantaandGitHub e8b84da66b Sync: Community Changes #4078 2025-09-02 18:38:21 +05:30
Anmol Singh Bhatia f8b755e479 🔀 fix: preview sync merge conflict 2025-09-02 18:35:28 +05:30
6b17d95746 [WEB-4724] feat: migrate tooltips from blueprintjs to base-ui (#4048)
* feat: add card component to propel package and update tooltip imports

* refactor: remove @plane/ui dependency and update tooltip imports to use local card component

* fix: lint

* refactor: update import from @plane/ui to @plane/utils in command component

* chore: removed blueprintjs/core and blueprintjs/popover2 dependencies

* chore: updated tooltip instances across platform and performed related code refactoring

* chore: code refactor

* chore: code refactor

* fix: lint and build error

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: propel tooltip implementation

---------

Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com>
2025-09-02 18:21:41 +05:30
26b48bfcf0 [WEB-4724] feat: migrate tooltips from blueprintjs to base-ui (#7646)
* feat: add card component to propel package and update tooltip imports

* refactor: remove @plane/ui dependency and update tooltip imports to use local card component

* fix: lint

* refactor: update import from @plane/ui to @plane/utils in command component

* chore: removed blueprintjs/core and blueprintjs/popover2 dependencies

* chore: updated tooltip instances across platform and performed related code refactoring

* chore: code refactor

* chore: code refactor

* fix: lint and build error

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* fix: format issue

* fix: build fix

---------

Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com>
2025-09-02 18:19:56 +05:30
Vamsi KrishnaandGitHub e5fe8fe1fe [WEB-4775] fix: double border at epic settings header #4037 2025-09-02 18:07:36 +05:30
Anmol Singh BhatiaandGitHub 50efec8df0 [WEB-4794] fix: project page header #4053 2025-09-02 18:07:04 +05:30
Anmol Singh BhatiaandGitHub e0e2e706a3 [WEB-4820] fix: incorrect logging of description activity for work items and epics (#4060)
* fix: description activity log

* fix: description activity log

* chore: code refactor

* chore: code refactor
2025-09-02 18:06:25 +05:30
pushya22andGitHub c04ae2a182 Sync: Community Changes #4077 2025-09-02 18:05:50 +05:30
Vamsi KrishnaandGitHub f618fb65a2 [WEB-4833] fix: timeline date updates #4072 2025-09-02 18:02:57 +05:30
Vamsi KrishnaandGitHub 569b2fba83 [WEB-4196]fix: toast message for sub work item quick actions (#7688)
* fix: toast message for sub work item quick actions

* chore: updated translation files
2025-09-02 18:02:30 +05:30
Anmol Singh BhatiaandGitHub 779a96acb8 [WEB-4834] fix: range date picker weekStartsOn (#7699)
* fix: range date picker weekStartsOn

* chore: code refactor
2025-09-02 18:02:09 +05:30
Prateek ShouryaandGitHub fa5ecc69f3 fix: build errors (#4076) 2025-09-02 17:22:27 +05:30
sriramveeraghanta f9a07af35f Merge branch 'canary' of github.com:makeplane/plane-ee into preview 2025-09-02 15:24:39 +05:30
sriram veeraghantaandGitHub 5bcf585683 Sync: Community Changes #4074 2025-09-02 14:23:41 +05:30
6644052970 [WEB-4829] refactor: remove star us CTA from wiki header (#4068)
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-02 14:21:02 +05:30
guru_sainathandGitHub 2d31b562d8 [WEB-4823] chore: Add compound indexing for notification fields to improve query performance (#7691)
* dev: handled indexing for the notification fields

* dev: removing indexing related to workspaces

* dev: handled indexing for file asset, user favorite, and page log

* dev: indexing concurrently
2025-09-02 14:18:13 +05:30
sriram veeraghantaandGitHub 80297dc137 Sync: Community Changes #4071 2025-09-02 14:05:47 +05:30
50b4aca726 [WEB-4829] refactor: star us on GitHub link component (#7697)
* [WEB-4829] refactor: star us on github link

* fix: review comment

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-02 13:54:13 +05:30
Prateek Shouryaandsriramveeraghanta 672f12f4fa [WEB-4821] fix: project level page templates image preview (#4070) 2025-09-02 13:52:11 +05:30
Prateek ShouryaandGitHub 7733efa0a0 [WEB-4821] fix: project level page templates image preview (#4070) 2025-09-02 13:50:09 +05:30
sriram veeraghantaandGitHub 4184545498 Sync: Community Changes #4069 2025-09-02 13:10:57 +05:30
Prateek Shourya 2d4e0a4efc fix: merge conflict resolved 2025-09-02 12:41:34 +05:30
9fbb1a42d0 [WEB-4125] [WEB-4824] feat: dashboard widget rich filters (#3881)
* feat: rich filters store architecture and UI components

* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys

* improvements: add filter button config initialization

* feat: done basic  setup of rich filters in dashboard widgets

* refactor: clean up whitespace in widget type definitions

* feat: implement complex filtering backend for Django REST Framework

* Added ComplexFilterBackend to support advanced JSON-based filtering with logical operators.
* Introduced DashboardWidgetIssueFilterSet for filtering issues based on various criteria.
* Updated widget views to utilize the new filtering capabilities.
* Refactored widget_graph_plot.py to streamline query construction.
* Added README documentation for the filters module detailing usage and examples.

* chore: update filter configurations and clean up

* Enhance ComplexFilterBackend for improved performance and documentation

* Updated WidgetListEndpoint to pass the view instance to the filter method.
* Optimized NOT operations to use subqueries instead of large IN clauses for better performance.
* Removed deprecated range filter validation logic.
* Expanded README documentation to include performance considerations and advanced usage examples for NOT operations.

* Refactor DashboardWidgetIssueFilterSet to use custom filter methods for soft delete exclusion

* Replaced direct field lookups with custom filter methods for assignee, cycle, module, mention, and label IDs to exclude soft deleted records.
* Added new filter methods for label ID and label ID in to enhance filtering capabilities.
* Improved code readability and maintainability by centralizing filtering logic.

* refactor: remove unused export for TAutomationConditionFilterExpression in widget.ts

* fix: types

* chore: added more filters

* refactor: made the TFilterValue typed and add config for boolean

* refactor: made TFilterValue typed and add config for boolean

* Refactor WidgetListEndpoint to streamline issue filtering logic

* Updated the issue filtering process to first retrieve workspace by slug, improving clarity and maintainability.
* Consolidated filtering conditions into a single query for better performance and readability.
* Enhanced the DashboardWidgetIssueFilterSet to utilize the new filtering capabilities for label IDs.

* Enhance ComplexFilterBackend with depth validation and structure checks

* Introduced maximum depth validation for complex filters to prevent excessive nesting.
* Added structure validation to ensure proper JSON format for filter nodes.
* Implemented detailed error handling for various filter scenarios, improving robustness and user feedback.

* Refactor WidgetListEndpoint to improve workspace and dashboard retrieval

* Updated the WidgetListEndpoint to retrieve the workspace by slug before querying the dashboard, enhancing clarity and maintainability.
* Replaced multiple filter conditions with workspace ID for dashboard and widget queries, improving performance and consistency.
* Removed redundant workspace retrieval from the end of the method to streamline the code.

* chore: remove boolean filter value input

* improvements: define value type for filter configs

* chore: add default value type for filter configs

* chore: minor type updates for filter configs

* imrovement: type safety of the operators in rich filters

* refactor: reverted to old types of rich filters

* refactor: reverted to old label of rich filters

* refactor: enhance dashboard widget filters with new adapter and HOC

- Replaced the existing WidgetConfigSidebarFilters with EnhancedWidgetConfigSidebarFilters to support new filter logic.
- Introduced DashboardWidgetFilterAdapter for converting between internal and external filter expressions.
- Updated filter configurations to use the new external filter structure.
- Removed the old filters adapter and adjusted related types for better clarity and maintainability.
- Cleaned up imports and improved code organization in the filters components.

* chore: cleanup

* chore: cleanup

* refactor: update dashboard filters and add observable for filters

* refactor: comment out draft filter configuration in dashboard filters

* ♻️  refactor:  adaptor to have comma separated array values and removed draft filter config

* ♻️ refactor: updated the default value for the empty expression

* ♻️ refactor: value sanitization for empty values

*  feat: enhance sidebar filters with loading state and optimized data fetching

* 🧹 chore: remove duplicate export of work-item-filters from utils index

* 🎨 style: update button variant in sidebar filters from neutral-primary to accent-primary

* 🔧 fix: update dependency in withFilters to include handleSubmit in effect dependencies

* 🔧 fix: update _parseFilterValue to handle SingleOrArray type for filter values

* Removed unnecessary code

* ♻️ refactor: integrate workspace project fetching and improve dashboard filter handling

* 🔧 fix: rename EXTERNAL_OPERATOR_SEPARATOR to EXTERNAL_WIDGET_OPERATOR_SEPARATOR for consistency in filter handling

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-09-02 12:37:15 +05:30
sriram veeraghantaandGitHub 966a58ee1b [WIKI-613] fix: rename pages to wiki from the workspace pages screen #4046 2025-09-02 12:32:04 +05:30
Prateek ShouryaandGitHub d960d7ce88 [WEB-4828] refactor: remove legacy project-level draft work items components (#7694) 2025-09-02 12:29:00 +05:30
Henit ChobisaandGitHub 1a71c461d6 [SILO-482] fix: slack integration post release checklist (#4032)
* fix: silenced error for couldn't add bot to channel

* fix: added expanded field for created_by and updated_by

* fix: added expansion of created_by and updated_by for issues

* fix: updated views to accomodate changes for created and updated fields

* fix: removed reaction helpers and updated blocks

* fix: removed options for enabling mentions

* fix: build fixes

* fix: added support for user lookup even if the user has not connected account

* fix: modified issue block design for bolds

* fix: resolved review comments
2025-09-02 00:23:07 +05:30
sriram veeraghantaandGitHub fd08c560f9 Sync: Community Changes #4067 2025-09-02 00:04:41 +05:30
Palanikannan M 4236106ca5 fix: props 2025-09-01 23:47:07 +05:30
Palanikannan M 2f722f7775 fix: logger error 2025-09-01 23:38:37 +05:30
Aaryan Khandelwal e486e23b26 chore: update package.json 2025-09-01 23:09:28 +05:30
Aaryan Khandelwal f451a7c2d9 fix: merge conflicts resolved from preview 2025-09-01 22:53:30 +05:30
M. PalanikannanandGitHub fd5ba6c7b8 [WIKI-511] [WIKI-572] fix: extended page root and editor body (#7661)
* fix: better refactoring of page root and editor body

* fix: editor sideeffects

* fix: add comments json field

* fix: props name

* fix: review changes

* fix: extra checks

* fix: type changes

* fix: remove editor ref current

* fix: renaming

* fix: link check
2025-09-01 22:17:53 +05:30
9e11dc9cdc [WIKI-511] feat: inline page comments (#3599)
* feat: page comments

* chore: added node id

* chore: changed reverse relation

* chore: added resolve comment endpoint

* fix: build errors

* fix: basic comment decoration added

* fix: add marks

* fix: operations

* fix: to ditch decorations approach!

* fix: move dev-wiki into apps

* fix: new approach with some more types

* fix: link view container

* fix: editor ee packages updated

* fix: basic threads implementation added

* fix: comments scroll and filtering

* fix scrolling

* chore: added total count for comments

* fix: seperate the comments store

* fix: comments removal

* feat: multi comment on same mark

* fix: mark fixed and styles of comments fixed!

* feat: added better animations

* fix: better styles and animations for comments

* fix: ee seperation

* fix: threads api fix

* fix: new comment store attached

* fix: resolve and delete

* fix: remove framer motion

* fix: add comment ordering

* fix: delete extension

* fix: web

* fix: context aware comments

* fix: new working comment store

* fix: getting changes to web

* fix: ui of comments

* fix: comment mark resolution fixed

* fix: move changes to store

* temp fix: project pages

* fix: comments using lite text editor

* fix: rerendering infinitely

* fix: comment box and reference

* chore: updated the migration file

* fix: move things to ee

* chore: un commented the feature flag logic

* chore: removed an extra line in feature flag

* fix: editor types

* fix: scrolling of thread items

* fix: scrolling of thread items

* fix: type errors

* fix: comment creation

* fix: page comments

* fix: page comments

* fix: remove utils

* fix: added feature flagging

* fix:loading json content

* fix: upload items

* fix: upload items

* fix: ui chanegs

* fix: comment box

* fix: better spacing

* Fix spacing and removing the divs not needed anymore

* fix: comments storing json

* Add comment thread management hooks

* Replace use-new-comment hook with use-scroll-manager

Remove useNewComment hook and related logic. Add useScrollManager hook
for managing scroll behavior in the comments sidebar. Refactor
threads-sidebar to use scroll manager for thread and comment box
navigation. Add cancel button to new comment box.

* Remove hover and click effects for resolved comment marks

* Auto-scroll new comments in sidebar after order sync

Adds highlight and scroll-to behavior for newly created comments.
Sidebar now scrolls to the new thread after comments order updates.

* Add granular page comment permissions and UI checks

Introduce canCurrentUserCommentOnPage permission for pages. Update
comment UI to respect user comment permissions. Refactor comment
creation logic into useNewComment hook. Hide comment/reply UI for users
without permission.

* Refactor comments components and imports for clarity and type safety

* Refactor comments components to use local types and remove unused files

- Move type definitions from shared types file into local components -
Remove unused comment-reactions component and types/index.ts - Update
imports to use local hooks and types - Minor code cleanup and formatting

* Refactor comments feature flag and clean up comments components

- Replace isPageCommentsEnabled with isCommentsEnabled in page stores -
Remove unused types, utils, and reactions components from comments -
Move and rename comments components for consistency - Update editor
flagging to use new comments feature flag logic - Simplify comments
sidebar and thread item structure - Remove redundant exports and props
from comments modules

* Refactor comments extension to use workspace feature flag

- Pass storeType to navigation pane extensions - Check isCommentsEnabled
with workspaceSlug before rendering comments - Update canComment logic
to use canCurrentUserCommentOnPage - Remove console.log and unused code
- Fix types for extension props

* Add canCurrentUserCommentOnPage to TeamspacePage

* Refactor TCommentConfig type and move EditorSideEffects

- Move TCommentConfig to ce/types/editor.ts and ee

* fix: ce sync

* fix: prosemirror-model fixed

* chore: removed the extra migration

* chore: added page comments serializer

* fix: comments

* refactor: comments

* fix: ce/ee seperation

* chore: changed the page serialization

* fix: page comments refactored

* fix: remove ce changes

* fix: restoration for nested pages fixed

* fix: less ce changes

* fix: imports

* fix: better refactoring of page root and editor body

* fix: renaming files

* fix: editor sideeffects

* fix: add comments json field

* fix: page comments types

* fix: lint warnings

* fix: props name change

* fix: props name

* fix: comment mark

* fix: import type

* fix: review changes

* fix: extra checks

* fix: type changes

* fix: remove editor ref current

* fix: renaming

* fix: renaming files

* fix: comments extension revamp

* fix: declaring better types

* fix: better types

* fix: hooks seperated

* fix: edit box

* fix: html validation

* fix: agents md

* fix: naming convention

* fix: update names and service methods

* fix: more fixes

* fix: attributs

* fix: dev wiki sync

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-09-01 20:56:52 +05:30
f42eeec2c0 [WEB-4686] feat: propel tabs (#7620)
* chore: global css file added to tailwind config package

* chore: tailwind config updated

* chore: cn utility function added to propel package

* chore: storybook init

* fix: format error

* feat: added base ui tabs

* fix: add missing newline at end of package.json in propel package

* fix: reorder import statement for Tabs component in propel package

* feat: refactor Tabs component to support compound structure with forward refs

* fix: lint

* chore: code refactor

* chore: code refactor

* fix: lock file

* chore: added stories for tabs

* refactor: clean up

* fix: lint

* fix: lint

* fix: Remove duplicate storybook ESLint config

* fix: lint

* fix: update classname import path in Tabs component

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-09-01 19:58:40 +05:30
Vamsi KrishnaandGitHub e679dc3d12 [WEB-4814] chore: enabled reordering in list when group is none #7684 2025-09-01 19:46:17 +05:30
Jayash TripathyandGitHub f2edf637de [WEB-4809] chore: added common libs to pnpm workspace catalog (#7611)
* chore: added common libs to pnpm workspace catalog

* chore: update pnpm lockfile to use exact versions for React and TypeScript dependencies

* refactor: removed string from the versions

* fix: lint

* refactor: cleanup

* fix: lint

* chore: updated lock file
2025-09-01 19:42:56 +05:30
Vamsi KrishnaandGitHub 7437deaa86 [WEB-4689]chore: added accordion to propel (#7641)
* chore: added accordion to propel

* fix: lint errors

* fix: updated export path

* fix: lint errors

* chore: made accordion into compound component

* fix: coderabbit suggestions
2025-09-01 19:42:12 +05:30
64b95daff4 [WEB-4740] feat: add propel seperator (#7637)
* chore: global css file added to tailwind config package

* chore: tailwind config updated

* chore: cn utility function added to propel package

* chore: storybook init

* fix: format error

* chore: code refactor

* chore: code refactor

* fix: format error

* feat: add propel seperator component

* 🔒 chore: updated lock file

* ✏️ fix: typo in separator filename and some linting issues

* ♻️ refactor: replace clsx with cn utility in Separator component for class name management

* 🐛 fix: re-added twMerge

* 🧹 cleanup: remove unnecessary blank line in Separator component

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-09-01 19:40:01 +05:30
sriramveeraghanta 34181fba80 chore: version bump 2025-09-01 19:38:21 +05:30
Vipin ChaudharyandGitHub a472423893 [WIKI-589] fix: create page flow from the team space pages and workspace pages empty state (#4056)
* fix : update workspace pages add page logic

* fix: update team space pages

* chore : update translations

* fix: update new page click handler

* refactor: update handle create page

* chore : update router

* chore: update function call

* chore: udpate handle create page call
2025-09-01 17:33:56 +05:30
pushya22andGitHub 1b9e02da36 Sync: Community Changes #4061 2025-09-01 17:33:17 +05:30
Aaryan Khandelwal c5d7bb6165 fix: merge conflicts resolved from preview 2025-09-01 16:56:36 +05:30
Vipin ChaudharyandGitHub 0358e9b965 [WIKI-589] fix: update project page creation flow (#7685)
* fix : update project page creation flow

* chore: update translations

* chore: remove unused changes
2025-09-01 16:43:07 +05:30
Bavisetti NarayanandGitHub e8dccb6549 [WEB-4817] fix: issue detail endpoint #4059 2025-09-01 16:41:00 +05:30
2d51596018 [WIKI-620] chore: update external embed component attribute and types (#4047)
* chore: update external embed extension name

* refactor: fix zindex

* refactor: update external embed attribute

* refactor: update attribute

* chore: fix build

* chore: update entity attribute

* chore: update entity type

* chore: expose external embed extension options

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-09-01 15:18:39 +05:30
sriram veeraghantaandGitHub e14f0bf65e Sync: Community Changes #4058 2025-09-01 15:15:44 +05:30
Vipin ChaudharyandGitHub ee471c772a [WIKI-622] fix: update space work item description styles #7686 2025-09-01 15:13:52 +05:30
e2c0d0f23c [WEB-4813] fix: ensure all identifiers in log transformations are converted to strings (#7682)
* fix: ensure all identifiers in log transformations are converted to strings

* Update apps/api/plane/bgtasks/cleanup_task.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 14:12:34 +05:30
sriram veeraghantaandGitHub e849cd45dd Sync: Community Changes #4057 2025-09-01 13:53:21 +05:30
Anmol Singh BhatiaandGitHub 3ecebc02ae [WEB-4811] chore: plane logo asset updated #7683 2025-09-01 13:52:05 +05:30
Anmol Singh BhatiaandGitHub 16d531cc7a [WEB-4808] fix: joinUrlPath utility fn #7678 2025-09-01 13:51:26 +05:30
sriram veeraghantaandGitHub 03626f6f6a Sync: Community Changes #4055 2025-09-01 13:10:05 +05:30
sriramveeraghanta ca9cdb642f fix: merge conflicts from ce-eee 2025-09-01 13:09:28 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ab283c7c78 chore(deps): bump the npm_and_yarn group across 4 directories with 1 update (#7681)
Bumps the npm_and_yarn group with 1 update in the / directory: [next](https://github.com/vercel/next.js).
Bumps the npm_and_yarn group with 1 update in the /apps/admin directory: [next](https://github.com/vercel/next.js).
Bumps the npm_and_yarn group with 1 update in the /apps/space directory: [next](https://github.com/vercel/next.js).
Bumps the npm_and_yarn group with 1 update in the /apps/web directory: [next](https://github.com/vercel/next.js).


Updates `next` from 14.2.30 to 14.2.32
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v14.2.30...v14.2.32)

Updates `next` from 14.2.30 to 14.2.32
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v14.2.30...v14.2.32)

Updates `next` from 14.2.30 to 14.2.32
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v14.2.30...v14.2.32)

Updates `next` from 14.2.30 to 14.2.32
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v14.2.30...v14.2.32)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 14.2.32
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: next
  dependency-version: 14.2.32
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: next
  dependency-version: 14.2.32
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: next
  dependency-version: 14.2.32
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-01 13:05:18 +05:30
pushya22andGitHub 22a9236f4a Merge pull request #4051 from makeplane/sync/ce-ee
Sync: Community Changes
2025-08-29 20:25:02 +05:30
Anmol Singh BhatiaandGitHub 7c1bbf4a6f [WEB-4807] fix: workspace menu item highlight #7677 2025-08-29 20:23:31 +05:30
sriram veeraghantaandGitHub edec9a121c Sync: Community Changes #4050 2025-08-29 19:57:05 +05:30
sriramveeraghanta 648b74b5bf fix: merge conflicts 2025-08-29 19:52:07 +05:30
Akshat JainandGitHub 98e9224e95 [INFRA-234] fix: update installation instructions for Plane services in install.sh #4049 2025-08-29 19:48:37 +05:30
sriram veeraghantaandGitHub 4293892178 [WEB-4803] fix: eslint errors in code editors (#7675)
* fix: eslint errors in code editors

* fix: removed workspaces from package.json
2025-08-29 19:44:46 +05:30
Bavisetti NarayanandGitHub ebd517bb7d [WIKI-619] chore: added sort order migration for page model #7673 2025-08-29 19:44:29 +05:30
Henit ChobisaandGitHub c20ae6dc9d [SILO-414] feat: added support for pushing updates from multiple projects to one channel #4044 2025-08-29 19:17:24 +05:30
sriram veeraghantaandGitHub 2321200ec5 Sync: Community Changes #4043 2025-08-29 19:16:21 +05:30
Henit ChobisaandGitHub 4042af9f32 feat: added support for expanding updated_by in work item (#7667)
* feat: added support for expanding `updated_by` and `type` in work item

* fix: moved type to dictionary for expansion

* fix: refactored unnecessary fields
2025-08-29 16:41:54 +05:30
sriramveeraghanta eabcb8d111 fix: live server build error 2025-08-29 15:19:48 +05:30
Bavisetti NarayanandGitHub f07f528a63 chore: removed the html validation (#4040) 2025-08-29 14:41:32 +05:30
788a6acb7b [SILO-454] chore: refactor decorator, logger packages (#4038)
* [SILO-454] chore: refactor decorator, logger packages

- add registerControllers function abstracting both rest, ws controllers
- update logger to a simple json based logger

* fix: logger instance and middleware

* fix: type and module resolutions

* fix: lodash type package update

* fix: bypass lint errors in decorators

* chore: format changes

* fix: build errors

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-08-29 14:39:54 +05:30
sriram veeraghantaandGitHub 99eb03b1bf Sync: Community Changes #4041 2025-08-29 14:37:40 +05:30
sriramveeraghanta b70629c98e fix: merge conflicts 2025-08-29 14:37:08 +05:30
258d24bf06 [SILO-454] chore: refactor decorator, logger packages (#7618)
* [SILO-454] chore: refactor decorator, logger packages

- add registerControllers function abstracting both rest, ws controllers
- update logger to a simple json based logger

* fix: logger instance and middleware

* fix: type and module resolutions

* fix: lodash type package update

* fix: bypass lint errors in decorators

* chore: format changes

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-29 14:29:16 +05:30
NikhilandGitHub 154dad1bac [WEB-4797] fix: update USE_STORAGE_PROXY handling in S3Storage class to default to False (#4039)
* fix: update USE_STORAGE_PROXY handling in S3Storage class to default to False

* chore: update USE_STORAGE_PROXY comment for clarity in variables.env
2025-08-29 14:28:57 +05:30
NikhilandGitHub 489a6e1e94 [WEB-4796] fix: update MongoDB collection check to use 'is not None' for better clarity #7671 2025-08-29 14:25:46 +05:30
sriram veeraghantaandGitHub 4f349807be chore: docker image builds by removing node version in workspace.yml file (#7672)
* fix: docker image builts by removing nodeversion in workspace.yml file

* chore: remve .nvmrc file
2025-08-29 14:25:07 +05:30
Vipin ChaudharyandGitHub 3d95679935 [WIKI-609] fix: emoji enter key Propagation #4033 2025-08-29 01:58:42 +05:30
a490e8812e [WEB-4742]feat: use api server as proxy for s3 requests in air-gapped environments when env is set (#3960)
* feat: add proxy upload and download endpoints for S3 integration

- Introduced ProxyUploadEndpoint and ProxyDownloadEndpoint to handle file uploads and downloads via S3 with time-based validation.
- Updated asset URLs to include new proxy endpoints.
- Enhanced S3Storage class to support proxy URL generation for uploads and downloads.
- Added configuration option USE_STORAGE_PROXY to toggle proxy usage.

* chore: update USE_STORAGE_PROXY configuration to disable by default

- Changed USE_STORAGE_PROXY environment variable in common settings and deployment files to default to 0.
- Ensured consistency across various deployment configurations for better control over storage proxy usage.

* chore: standardize formatting and update dependencies in compose files

- Added USE_STORAGE_PROXY environment variable to default to 0 in both Coolify and Portainer deployment configurations.
- Improved formatting for better readability across various service definitions in the compose files.
- Ensured consistent indentation and alignment for environment variables and dependencies.

* feat: enhance S3 storage integration with improved policy validation

- Updated ProxyUploadEndpoint and ProxyDownloadEndpoint to utilize new validation methods for upload and download parameters.
- Implemented comprehensive policy validation in S3Storage, including expiration checks, bucket restrictions, and signature verification.
- Changed USE_STORAGE_PROXY environment variable to default to 1 for enabling proxy usage by default.

* fix: simplify error message in ProxyUploadEndpoint

- Updated the error response in ProxyUploadEndpoint to provide a more generic error message for upload failures, enhancing user experience and reducing exposure of internal error details.

* fix: compose file formatting

---------

Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-29 01:58:05 +05:30
Sriram Veeraghanta 8a31d719c7 fix: portainer and coolify env variables in compose file 2025-08-28 22:54:06 +05:30
Sriram Veeraghanta 5601664748 fix: adding pg redis and mq envs to poller and consumer in docker file 2025-08-28 22:49:13 +05:30
pushya22andGitHub bd529bc7f6 Sync: Community Changes #4035 2025-08-28 20:55:39 +05:30
Aaryan Khandelwal 2089fefbb2 fix: merge conflicts resolved from preview 2025-08-28 20:51:52 +05:30
pushya22andGitHub 60cb0d6c5d promote: mobile runway to preview #4016 2025-08-28 20:40:02 +05:30
Vipin ChaudharyandGitHub 7a43137620 [WIKI-556] fix : invert tracking logic #7668 2025-08-28 20:37:20 +05:30
Vamsi KrishnaandGitHub 29f5d06a68 [WEB-4718]fix: teamspace project sidebar hightlight (#4012)
* fix: teamspace project sidebar hightlight

* fix: updated pathname check handling

* chore: removed unused imports
2025-08-28 20:17:23 +05:30
e144ce8cf2 [WIKI-556] chore: disable tracking of page hover (#7650)
* chore: disable tracking of page hover

* chore: add track check for page feth

* chore: make track check mandatory

* chore: update track format

---------

Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com>
2025-08-28 20:02:44 +05:30
Anmol Singh BhatiaandGitHub ba7303b7af [WEB-4559] fix: workspace menu item active state (#7666)
* fix: highlight active workspace menu item correctly

* chore: code refactor
2025-08-28 20:01:28 +05:30
Anmol Singh BhatiaandGitHub 8a102d666b [WEB-4559] fix: workspace menu item active state (#4026)
* fix: customer href updated

* fix: highlight active workspace menu item correctly

* fix: teamspace items highlight

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-08-28 19:59:34 +05:30
sriram veeraghanta 7718a966f4 fix: pnpm lock file 2025-08-28 19:10:44 +05:30
guru_sainathandGitHub 5433b7dade [MOB-1067] feat: Implement catch-up functionality for notifications activity feed (#3958)
* dev: catch-up init

* dev: handled catch up FF, push notification and updated query response

* dev: removed feature flag validation for catch_up

* dev: remove the catch_up FF

* dev: handled the actor details in issue, epic and intake activity and comment queries

* dev: handled the catchup mutations and updated intake id in workitem details

* dev: handled the actor details

* dev: sorted catchups

* dev: handled the push notification catch-up

* dev: converted the count in catch up

* dev: updated the push notification comment validation

* dev: moved the first and last in to sub queries

* dev: removing deleted work items

* dev: optimized the catchup query

* dev: handled the UUID conversion
2025-08-28 19:10:37 +05:30
83bcd9144a [WEB-4776] chore: automation activity (#3975)
* chore: runhistory render logic

* chore: added initiator in automation run

* chore: updated the migration file

* chore: added automation run activity

* chore: updated the automation commit

* chore: run history item updated

* chore: automation activity and change property updates

* chore: added show fails check

* chore: optimised the query params condition

* chore: add the prefetch for activity

* fix: import order

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-08-28 19:03:27 +05:30
Prateek ShouryaandGitHub 444a209c28 [WEB-4040] fix: remove Plane One from base plan name (#4017) 2025-08-28 19:00:33 +05:30
Anmol Singh BhatiaandGitHub 90b3418afe [WEB-4764] fix: prevent work item & epic peekview outside click when pichat sidebar is open #4025 2025-08-28 18:59:32 +05:30
Vamsi KrishnaandGitHub c53ce51dcd [WEB-4792] fix: workspace switcher visibility #4027 2025-08-28 18:58:01 +05:30
sriram veeraghantaandGitHub 1826f05d24 Sync: Community Changes #4034 2025-08-28 18:53:00 +05:30
sriram veeraghantaandGitHub fe9aa38453 Merge branch 'preview' into sync/ce-ee 2025-08-28 18:52:31 +05:30
Prateek ShouryaandGitHub e0912ccefc [WEB-4040] fix: minor changes in base plan names (#7656) 2025-08-28 18:51:10 +05:30
Anmol Singh BhatiaandGitHub aef465415b [WEB-4748] chore: propel utils (#7662)
* chore: tailwind merge added to propel

* chore: classname utils updated

* chore: utils import alias added

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-08-28 18:39:27 +05:30
Vamsi KrishnaandGitHub 3b3bd3e54e [WEB-4722] fix: fixed draft state update #7663 2025-08-28 18:38:30 +05:30
SangeethaandGitHub f2fabff10a [WEB-4521] fix: attachments #7665 2025-08-28 18:36:50 +05:30
Vipin ChaudharyandGitHub af943a22bb [WIKI-611] fix: update conversion logic to check http (#4030)
* fix: update conversion logic to check http

* chore: rename variable

* chore: upate check
2025-08-28 18:34:46 +05:30
Akshat JainandGitHub c9dbd76e27 [INFRA-232] Add automation consumer and outbox poller services in commercial deployment methods (#4004)
* Update application version to v1.14.0 and add automation consumer and outbox poller services

- Updated APP_RELEASE_VERSION to v1.14.0 in various deployment files.
- Added new services for automation consumer and outbox poller in Docker and Podman configurations.
- Introduced environment variables for outbox poller and automation consumer in relevant .env files.
- Updated build scripts to reflect the new version requirements.

* Add iframely service to deployment configurations

- Introduced iframely service in Dockerfile, supervisor.conf, and various deployment YAML files.
- Updated environment variables to include IFRAMELY_URL and IFRAMELY_REPLICAS.
- Ensured iframely service dependencies are correctly set in all relevant configurations.

* fix: update iframely image path in Dockerfile

* refactor: rename plane-iframely to iframely across deployment configurations

* chore: remove iframely dependency from deployment configurations

* chore: clean up whitespace in docker-compose.yml
2025-08-28 18:20:31 +05:30
Vipin ChaudharyandGitHub 13cfdaf6b7 [WIKI-610] fix: jwt based auth for user (#4028)
* fix: remove api jwt auth

* add jwt auth for internal api

* chore : remove BaseSessionAuthentication for pages
2025-08-28 16:52:39 +05:30
M. PalanikannanandGitHub 581a2c479c fix: imports (#4024) 2025-08-28 14:48:18 +05:30
pushya22andGitHub 924115dfda Sync: Community Changes #4023 2025-08-28 14:32:37 +05:30
sriram veeraghantaandGitHub 5768958bde Merge branch 'preview' into sync/ce-ee 2025-08-28 14:03:42 +05:30
NikhilandGitHub ddeabeeeb1 [WEB-4720] fix: mongo connection class to initialize mongo db #7652 2025-08-28 13:57:16 +05:30
NikhilandGitHub a00f2c3592 refactor: remove unused validation functions from project serializer (#4022) 2025-08-28 13:44:44 +05:30
Prateek ShouryaandGitHub ac8bd2ae92 [WEB-4790] fix: moved typescript parser to the base eslint config (#4021) 2025-08-28 13:27:01 +05:30
sriram veeraghantaandGitHub 8f0889993f Sync: Community Changes #4020 2025-08-27 21:17:26 +05:30
sriram veeraghanta 1d72bf7e2a fix: merge conflicts 2025-08-27 21:13:16 +05:30
sriram veeraghantaandGitHub 0e6fbaee3a [WEB-4790] fix: moved typescript parser to the base eslint config (#7658)
* fix: moved typescript parser to the base eslint config

* fix: eslint warning

* fix: type config setting

* fix: convert live eslint to cjs
2025-08-27 21:03:20 +05:30
Prateek ShouryaandGitHub ca59bc23aa [WEB-4765] improvement: update filter structure and improve type safety for rich filters (#3942)
* refactor: update filter structure and improve type safety across automation and rich filters

- Changed filter property types to use TFilterProperty and TFilterValue for better type consistency.
- Updated various components and hooks to utilize new type definitions, enhancing type safety.
- Refactored filter configuration and adapter logic to accommodate the new types, ensuring compatibility with existing functionality.
- Improved handling of filter expressions and conditions, streamlining the overall filter management process.

* chore: restructure rich filter utils

* refactor: optimize filter value handling and update automation condition types

- Removed unnecessary condition checks in automation details sidebar trigger.
- Enhanced filter value input to handle empty states more gracefully.
- Updated filter helper methods to return both optimal operator and transformed value.
- Adjusted filter instance logic to accommodate changes in operator and value updates.
- Modified type definitions for automation conditions and filter configurations to support SingleOrArray types.
- Added utility functions for transforming values based on operator requirements.

* fix: handle single-value operators in automation condition filters
2025-08-27 21:01:47 +05:30
Saurabh KumarandGitHub 7b533e3bff [SILO-452] feat: Queue multiple job runs in importers (#3945)
* modify: queue multiple import jobs and bug fixes

* moved queue job logic inside migrator + code refactoring

* fix: code improvement
2025-08-27 21:00:54 +05:30
NikhilandGitHub 00c523e261 [WEB-4763]feat: add additional fields to outbox records deletion process #3990 2025-08-27 21:00:23 +05:30
Vipin ChaudharyandGitHub 9f0d679b96 [WIKI-558] fix: page card title style (#4009)
* fix: page selection style

* fix : max with
2025-08-27 20:59:09 +05:30
Prateek ShouryaandGitHub 9090db4e1a [WEB-4788] improvement: automation detail page UX enhancements (#4014)
* improvement: ensure `enable` alert is only shown when automation has trigger and action nodes

* fix: remove generic error message in automation create/update modal

* improvement: move edit operation to quick actions

* improvement: update automation sidebar header font weight

* improvement: update automation trigger section icon variant

* improvement: enhance automation sidebar layout and button functionality

* improvement: enhance automation main content section wrapper

* improvement: set default sidebar tab to trigger

* fix: prevent section collapse on automation sidebar header button click
2025-08-27 20:58:32 +05:30
sriram veeraghantaandGitHub b6206c75ec Sync: Community Changes #4019 2025-08-27 20:58:10 +05:30
sriram veeraghantaandGitHub f91e715e0d Merge branch 'preview' into sync/ce-ee 2025-08-27 20:57:33 +05:30
Anmol Singh BhatiaandGitHub 1f261508fe [WEB-4779] chore: app sidebar wrapper component for consistency and reusability (#4010)
* chore: app sidebar enhancements and code refactor

* chore: code refactor

* chore: code refactor
2025-08-27 20:56:32 +05:30
sriram veeraghantaandGitHub e30f10564f Sync: Community Changes #4018 2025-08-27 20:55:11 +05:30
Anmol Singh BhatiaandGitHub cfe710d492 [WEB-4779] chore: app sidebar wrapper component for consistency and reusability (#7655)
* chore: app sidebar ui enhancements and code refactor

* chore: code refactor

* chore: code refactor
2025-08-27 20:46:43 +05:30
sriram veeraghantaandGitHub bacbfe0cc1 Merge branch 'preview' into sync/ce-ee 2025-08-27 16:33:28 +05:30
AaronandGitHub 4a3c172992 feat(repo): add diff checks in CI flows (#7657) 2025-08-27 16:31:23 +05:30
Vipin ChaudharyandGitHub 5d1ad8a183 [WIKI-550] fix: emoji modal for touch device (#7651)
* fix: emoji modal for touch device

* refactor: editor from props

* fix : update is touch device plugin
2025-08-27 00:39:47 +05:30
Vipin ChaudharyandGitHub f95a07d8c8 [WIKI-436] fix: check for code in alignment #7649 2025-08-27 00:39:26 +05:30
Bavisetti NarayanandGitHub 0af75897f5 [WEB-4780] chore: changed the html validation (#7648)
* chore: changed the html validation

* chore: added requirements for nh3

* chore: removed the json validations
2025-08-27 00:38:25 +05:30
guru_sainathandGitHub 2577c4bd80 [MOB-1119] dev: Integrate actor details in issue, epic, and intake activity and comments (#3965)
* dev: handled the actor details in issue, epic and intake activity and comment queries

* dev: handled the actor details

* dev: hanlded the default values for actor details

* dev: updated actor details in activity
2025-08-26 21:46:26 +05:30
guru_sainathandGitHub a4e86a929e dev: updated feature flags (#4002) 2025-08-26 19:12:39 +05:30
pushya22andGitHub 8ac81651a1 Sync: Community Changes #4011 2025-08-26 18:27:46 +05:30
Vamsi KrishnaandGitHub f8c998ecfa [WEB-4781] fix: peek view closing on click #4007 2025-08-26 18:25:14 +05:30
Vamsi KrishnaandGitHub 3602ff6930 [WEB-4781] fix: add peek view get to store #7654 2025-08-26 18:24:08 +05:30
M. PalanikannanandGitHub 43292d58c5 [WIKI-600] fix: build fix and reusing functions (#4006)
* fix: page link component type added

* fix: document handlers

* fix: reuse functions
2025-08-26 17:11:17 +05:30
pushya22andGitHub f9d8f33a07 Sync: Community Changes #4005 2025-08-26 17:10:50 +05:30
Prateek ShouryaandGitHub 6d1275d58c [WEB-4761] fix: resolve circular import between IssueService and local db (#7653)
- Move local db import to dynamic import to break circular dependency
2025-08-26 16:48:32 +05:30
Henit ChobisaandGitHub c38e851fc4 [SILO-402] fix: api service to use unfurl as false by default #4003 2025-08-26 16:23:50 +05:30
Vipin ChaudharyandGitHub 0a2d46882b [WIKI-606] fix: embed type update (#3995)
* fix : embed type update

* fix: disable embed for touch device
2025-08-26 15:49:47 +05:30
Bavisetti NarayanandGitHub 6951885b2f [WIKI-600] chore: added page duplication logic (#3977) 2025-08-26 15:49:20 +05:30
NikhilandGitHub d8056b80ec [WEB-4778]eat: add workspace feature flag check for automation tasks (#3997)
* feat: add workspace feature flag check for automation tasks

* fix: update automation task to use workspace ID instead of slug for feature flag check
2025-08-26 15:41:31 +05:30
Bavisetti NarayanandGitHub e2a8792630 [WEB-4784] chore: added check before creating issue comment activity #3999 2025-08-26 15:40:54 +05:30
sriram veeraghantaandGitHub 3fb6b385d8 Sync: Community Changes #4001 2025-08-26 14:28:36 +05:30
sriram veeraghantaandGitHub e04f45e428 Sync: Community Changes #3994 2025-08-26 14:24:43 +05:30
sriramveeraghanta 1cbb2cb61e fix: merge conflicts 2025-08-26 14:23:02 +05:30
Vipin ChaudharyandGitHub cf7b288f93 [WIKI-345] regression: update block menu options (#7647)
* chore: update flagged and disabled extension

* chore :build fix
2025-08-26 14:18:26 +05:30
Surya PrashanthandGitHub ba72c6b6cc [SILO-402] fix: types for mutation context block (#4000)
- add pnpm-lock file node sdk
2025-08-26 14:00:02 +05:30
Aaryan Khandelwal fdfa9a8c99 fix: merge conflicts resolved from preview 2025-08-26 13:16:22 +05:30
Akshita GoyalandGitHub 91eee8f053 [PAI-712] feat: pi converse (#3939)
* feat: speech to txt wip

* fix: editor

* fix: ui changes

* fix: speech input minor fixes

* fix: prevented rerenders in input box + initialized before transcribing for new chat + improved waveform

* fix: css

* fix: added workspace_id to initialize chat

* fix: added feature flag for pi speech input

* fix: feature flag

* fix: refactor
2025-08-26 02:25:23 +05:30
94fd553821 [SILO-402] Slack Integration v1 (#3952)
* [SILO-404] [SILO-425] [SILO-427] Get fields to display API for work item create form + project config + options method (#3781)

* plane client v2 using node sdk + form fields API

* add form utils methods for project config and options

* update plane-node-sdk and bug fixes

* [SILO-427]  Add support for custom field options in options api (#3849)

* add support for custom field options in options api

* make flexible params for custom fields

* remove unused types

* removed issue type in get intake

* remove options in custom fields fetch + add typeId in custom fieldId

* remove options in labels and states fields

* add caching and search text support in options api

* add tests for fields options method

* [SILO-424] [SILO-415] feat: slack linkbacks revamp and modal changes to include intake in work item (#3841)

* fix: added new issue linkback

* fix: member endpoint to not return bot users

* feat: added helpers for supporting functions

* fix: added old value field for activity to show in the linkback

* feat: create new activity and comment linkback

* feat: refactored existing views according to new designs

* feat: refactored workers to comply with new views

* fix: added helper function for inverting map

* fix: self review suggestions

* fix: resolved review comments

* [SILO-424] fix: revamped slack modals to include custom fields for work item creation (#3912)

* fix: modified options api to use the latest fields api

* fix: added field parser in order to parse slack form field values

* fix: added helpers for slack

* fix: added work item and modal props

* fix: added activity update block

* fix: made intake linkback less complex

* fix: issue modal now supports custom field values

* fix: added new block actions according to new modal action changes

* fix: added create mode for message actions

* fix: switched comment sync payload to helper functions

* fix: reduced form fields for intake issue

* chore: addressed review comments

* fix: testing fixes for slack integration

* fix: command linkback not working

* fix: removed sync button for update modal

* fix: added type expand support for work items

* fix: modified sdk for adding type as an expanded field

* fix: added check for type for unfurls

* fix: self review 2

* fix: updated UX copy changes proposed

* fix: resolved comments from review

* [SILO-410] Pages link unfurl in Slack (#3894)

* added page support in slack link unfurl

* add support for page link unfurl in slack

* move urls to constants + improvements

* allow not required fields to be null

* fix: block actions and project updates linkback

* fix: type id parsing for form fields

* fix: options api and module and cycle issues

* fix: view submission and issue modal fixes

* fix: removed unfurl media links

* fix: added userid for the options api for slack

* fix: slack comments got from testing

* fix: removed yarn lock and slack block files

---------

Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
2025-08-26 02:24:28 +05:30
Prateek ShouryaandGitHub 6635cbf563 [WEB-4774] fix: get teamspace project work item filters from local storage (#3996) 2025-08-26 02:24:10 +05:30
Vipin ChaudharyandGitHub 0fe7da6265 [WIKI-345] chore: pass disabled and flagged extensions to block menu (#7152)
* chore: refactor editor

* sync changes

* feat: api service update

* refactor : update sync

* fix : package sync

* fix: requested changes

* fix : embedhandler type

* fix : remove commands

* refactor : space

* refactor : rich lite editors

* refactor : minor ce changes

* chore : minor ui fix

* package: tldjs

* refactor : remove tldjs

* refactor: flagged

* refactor: flagged

* chore : remove disbaled check in menu

* refactor: fix space

* refactor: NodeViewProps

* refactor: type

* refactor : update community types

* refactor : remove external embed CE

* remove : external embed config from ce

* refactor : update disabled

* chore: pass disabled

* chore : update utils
2025-08-26 02:23:50 +05:30
Jayash TripathyandGitHub 8801ab0081 [WEB-4727] feat: propel cards (#7630)
* feat: add card component to propel package and update tooltip imports

* refactor: remove @plane/ui dependency and update tooltip imports to use local card component

* fix: lint

* refactor: update import from @plane/ui to @plane/utils in command component

* refactor: extend CardProps interface to include HTML attributes for better flexibility
2025-08-26 02:14:24 +05:30
Anmol Singh BhatiaandGitHub c2464939fc [WEB-4725] chore: storybook setup & tailwind config package improvements (#7614)
* chore: global css file added to tailwind config package

* chore: tailwind config updated

* chore: cn utility function added to propel package

* chore: storybook init

* fix: format error

* chore: code refactor

* chore: code refactor

* fix: format error

* fix: build error
2025-08-26 02:14:00 +05:30
Aaryan KhandelwalandGitHub 34e231230f [WIKI-498] regression: table bugs #7631 2025-08-26 02:13:27 +05:30
Lakhan BahetiandGitHub eb5ac2fc2d [WIKI-602] chore: disable image alignment tooltip for touch devices (#7642)
* chore: disable image alignment tooltip for touch devices

* chore: added touch-select-none style
2025-08-26 02:12:04 +05:30
Jayash TripathyandGitHub b6cf3a5a8b [WEB-4438] fix: epics label in y axis of epics(analytics-modal) #7644 2025-08-25 19:25:42 +05:30
SangeethaandGitHub d197d6cfa0 [WEB-4766] fix: edit active cycle dates bugs (#3969)
* fix: datetime parser

* chore: remove print statement

* fix: if condition check

* chore: remove unused imports

* chore: code refacture
2025-08-25 19:02:34 +05:30
Vipin ChaudharyandGitHub 7f47aa2676 [WIKI-604] fix: iframely endpoint (#3991)
* chore: accept src in editor commands

* fix : trailing slash issue

* feat: add touch device click handler

* refactor: update iframley request
2025-08-25 19:00:42 +05:30
pushya22andGitHub 73c54b1622 Sync: Community Changes #3989 2025-08-25 15:30:54 +05:30
Anmol Singh BhatiaandGitHub bbc465a3b2 [WEB-4761] fix: old url redirection method #7638 2025-08-25 15:28:58 +05:30
Surya PrashanthandGitHub 41f94011dd [SILO-463] chore: remove incoming-webhook scope for slack app (#3988) 2025-08-25 15:09:30 +05:30
Saurabh KumarandGitHub 206ca6abf1 [SILO-461] fix: use state groups to map issue sync in Github #3987 2025-08-25 15:09:13 +05:30
Jayash TripathyandGitHub a9884676c5 [WEB-4751] fix: url redirection in workitem url type (#3985) 2025-08-25 14:00:59 +05:30
pushya22andGitHub b6e6dd180c Sync: Community Changes #3986 2025-08-25 13:41:28 +05:30
Jayash TripathyandGitHub 9a77e383cd [WEB-4751] chore: enhance URL utility functions with IP address validation and cleaned up url extraction (#7636)
* feat: enhance URL utility functions with IP address validation and cleaned up the extraction utilities

* fix: remove unnecessary type assertion in isLocalhost function
2025-08-25 13:38:09 +05:30
Surya PrashanthandGitHub 32451fb1f4 [SILO-463] chore: changes needed for publishing in slack marketplace (#3981)
* [SILO-463] chore: add slack scopes consistent with app manifest

* Verify Slack Request signature for all slack events

- Add bolt sdk for easy for use
- Add rawBody verify function in parsers
- Add middleware to authorize slack requests
2025-08-25 13:19:08 +05:30
sriram veeraghantaandGitHub 166a79c859 Sync: Community Changes #3983 2025-08-25 02:43:59 +05:30
sriram veeraghantaandGitHub e44d3efa62 Merge branch 'preview' into sync/ce-ee 2025-08-25 02:43:27 +05:30
sriram veeraghanta a2d9e70a83 fix: requirments.txt 2025-08-25 02:40:06 +05:30
870ad552e3 [WIKI-345] feat: editor external embeds (#2924)
* refactor: iframe service

* refactor: name iframely

* refactor: use extension storage

* refactor:error handler

* refactor : error handling

* fix: drag handler inside error

* feat: refactor space embed handler

* refactor: handle convert UI

* refactor : iframely service , controller

* refactor: fix modal opening logic

* feat: loading in twit embed.

* fix: twit frame

* feat :tweet fix in space.

* refactor: change name casing

* feat: add icon link

* feat: added animation

* fix : iframe styles

* refactor : update link-container

* refactor : fix build

* feat: handle link url mark

* fix: iframely service created in web

* fix: group issue

* fix: use live URL instead

* fix : close embed modal

* feat: handle arrow keys

* fix: handle error

* fix : remove logs

* feat: handle bookmark

* feat: handle og image

* chore:remove observer

* feat: handle bookmark and embed

* feat: handle custom render

* chore: clean up

* feat: handle conversion

* fix : handle links properly

* feat: handle figma embed

* refactor : put iframely controller in ee

* refactor: better icon

* feat: feature flag external embed

* feat: timeout

* feat: refactor embed component

* refactor: upgrade plan

* feat :handle block menu

* feat: handle comment

* fix : reloads

* refactor : remove border

* fix : embed order

* fix :Embed handler

* feat: insert embed v1

* feat : web bookmark command

* chore: fix text

* feat: ui updates

* feat: handle cursor focus

* feat: update isopened in storage

* feat: add platform name

* fix:deny plane embed

* feat: props update

* feat: handle embed options properly

* chore: minor changes

* chore : add external embeds in the page form

* chore : convert bookmark to rich card

* feat : update thumnail not found

* feat: add new loading animation

* fix : handle paste embed

* feat:block translation

* feat: basic local setup

* feat: embed translation for all languages

* chore : update feature flag name

* feat: handle feature flag in space

* FIX: add build in i18n package

* fix : update props for embed handler

* chore : remove comments

* chore : move hooks

* FIX : package update

* FIX: live

* feat: handle unique ID

* feat: handle thumbnails

* chore : remove useless fetch

* chore : update types

* refactor : twitter theme

* chore : remove slash command for rich card

* chore: different text in readonly

* refactor : change editor name

* refactor: update modal style

* refactor : make the html simple

* refactor : external extension

* refactor : rename extension

* refactor: attribute names

* refactor : add entity type

* refactor: figma hook

* refactor: remove translations

* fix : creds

* feat: handle iframely api auth

* feat: handle space embed load

* feat: handle paste link

* feat: styles updates

* chore : remove editable condition

* remove link-container

* feat : feature flag slash command

* chore

* fix

* chore : refactor external embed

* refactor : fix embed insert

* chore : remove auth

* chore : remove old code

* fix : build

* fix:auth

* Fix: floating portal Fix

* fix: refactor

* fix : update types

* fix: build

* fix : update iframe response types

* refactor: embed ui components

* refactor : emebd components

* refactor : add tailwind animations

* refactor core

* refactor ce

* refactor : move icons

* refactor lite editor

* small refactor

* refactor : update icons import

* build fix

* fix: cors

* feat: update project structure

* refactor : embed handler

* refactor : embed hooks

* refactor : packages

* chore: embed setup in dev wiki

* refactor: embed extension

* refactor:fix types

* refactor: external emebds

* chore: clean imports

* chore :remove readonly editor types

* chore : remove logs

* Revert changes to dev-wiki/

* refactor: remove upgrade plane component

* feat: add unique id

* refactor : update fetching logic with useSWR

* Feat: Handle auth in iframley API

* feat:update embed select style

* refactor : remove useless component

* refactor : widge embed

* Remove changes to i18n locales path

* refactor: utils

* refactor : update emebd handler

* wip --

* fix : build

* refactor : block menu

* refactor:remove unused code

* refactor : update block menu

* refactor: slash command feature flag

* refactor: add badge in slash command

* refactor: editor attribute

* refactor : embed handler

* fix : swr

* fix : build

* refactor: feature flag space

* refactor : storage types

* refactor: remove embeddable

* refactor: space remove feature flag

* refactor: update space feature flag

* refactor: external embed

* fix :rerender

* build : fix hooks

* fix: block menu refactor

* refactor: hooks

* refactor: move tldjs

* refactor :extension

* refactor: page render

* refactor : update NodeViewProps types

* refactor : embed handler space

* refactor: update has_embed_failed

* refactor: remove useless render code

* refactor : twitter embed

* fix : build

* refactor : attribute with commands

* refactor : external embed extension.

* refactor: external embed storage.

* fix : rich and embed types

* fix : web embed

* style : selection

* refactor: space embed handler

* fix : extension storage

* refactor: embed types

* refactor: imports

* fix : page renderer

* chore: add comment

* chore: update comments

* chore: install tldjs

* refactor: update ui package

* fix :dev-wiki pnpm changes

* chore: minor improvements

* refactor : update embed  type

* refactor : update component name

* refactor :url modifier

* refactor: remove external embed ce

* feat: disabled external embed

* refactor: add disabled props

* refactor:  remove get attribute method

* refactor: package ui styles

* feat: translations

* refactor: theme type

* feat: jwt auth

* improve: add jwt auth for user

* chore :comment translations

* refactor: api params

* refactor: update types

* refactor: update props

* refactor: constants

* refactor: lite comments

* refactor: add type imports

* refactor:external embed node view

* refactor: move tldjs to dev dep

* refactor: add flagged check

* refactor: update slice imports

* refactor: update type changes

* chore : remove comments

* refactor : update nodeview types

* chore :remove type export

* chore: update icon

* chore: update iframley types

* fix: build errors

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-25 02:30:03 +05:30
Prateek ShouryaandGitHub a35a5f0bf7 [WEB-4746] fix: position epic peek view relative to app layout (#3980) 2025-08-25 02:17:23 +05:30
sriram veeraghantaandGitHub c57d81d31d Sync: Community Changes #3982 2025-08-25 02:16:56 +05:30
sriram veeraghantaandGitHub 886f7c01ba Merge branch 'preview' into sync/ce-ee 2025-08-25 02:16:27 +05:30
c7763dd431 refactor: remove few barrel exports (#7633)
* refactor: remove few barrel exports

* fix: pnpm lock file update

* fix: build errors

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-25 02:13:20 +05:30
Aaryan KhandelwalandGitHub 2d0c177a4d refactor: remove few barrel exports (#3979) 2025-08-25 02:12:53 +05:30
SangeethaandGitHub daf40c92d3 [WEB-3814]fix: username in dashboard created from forms or emails (#3953)
* fix: username of wi created by form or email

* fix: return intake for intake work items

* fix: bot type
2025-08-25 02:02:41 +05:30
M. PalanikannanandGitHub 2912223cf1 [WIKI-595] fix: Rethrow errors in hocuspocus #3938 2025-08-25 02:02:25 +05:30
Prateek ShouryaandGitHub 7c1f60dc51 [WEB-4750] fix: extend TLD support in customer URL regex to 15 characters (#3973) 2025-08-25 02:01:50 +05:30
sriram veeraghantaandGitHub 0cf9ff9e86 Sync: Community Changes #3978 2025-08-25 01:43:59 +05:30
sriram veeraghanta 871cbf5ee4 fix: build error 2025-08-25 01:43:07 +05:30
Prateek ShouryaandGitHub 599ff2eec4 [WEB-4746] fix: position peek view relative to app layout (#7635) 2025-08-25 01:32:15 +05:30
sriram veeraghanta eb7536a8c9 fix: update lock file 2025-08-24 15:27:50 +05:30
sriram veeraghanta f78bcb1b00 fix: merge conflicts 2025-08-24 15:26:50 +05:30
Prateek ShouryaandGitHub 568a1bb228 [WEB-4757] fix: remove project view from workspace level group by options (#7634) 2025-08-24 15:16:08 +05:30
NikhilandGitHub 935e4b5c33 [WEB-4720] chore: refactor and extend cleanup tasks for logs and versions (#7604)
* Refactor and extend cleanup tasks for logs and versions

- Consolidate API log deletion into cleanup_task.py - Add tasks to
delete old email logs, page versions, and issue description versions -
Update Celery schedule and imports for new tasks

* chore: update cleanup task with mongo changes

* fix: update log deletion task name for clarity

* fix: enhance MongoDB archival error handling in cleanup task

- Added a parameter to check MongoDB availability in the flush_to_mongo_and_delete function.
- Implemented error logging for MongoDB archival failures.
- Updated calls to flush_to_mongo_and_delete to include the new parameter.

* fix: correct parameter name in cleanup task function call

- Updated the parameter name from 'mode' to 'model' in the process_cleanup_task function to ensure consistency and clarity in the code.

* fix: improve MongoDB connection parameter handling in MongoConnection class

- Replaced direct access to settings with getattr for MONGO_DB_URL and MONGO_DB_DATABASE to enhance robustness.
- Added warning logging for missing MongoDB connection parameters.
2025-08-24 15:13:49 +05:30
841388e437 [WEB-4751] refactor: added tld validation for urls (#7622)
* refactor: added tld validation for urls

* refactor: improve TLD validation and update parameter naming in URL utility functions

* refactor: enhance URL component extraction and validation logic

* fix: lint

* chore: remove unused lodash filter import in existing issues list modal

---------

Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-23 01:07:35 +05:30
9ecea15d74 [WIKI-498] [WIKI-567] feat: ability to rearrange columns and rows in table (#7624)
* feat: ability to rearrange columns and rows

* chore: update delete icon

* refactor: table utilities and plugins

* chore: handle edge cases

* chore: safe pseudo element inserts

---------

Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-23 00:54:03 +05:30
4ad88c969c [WEB-4747]chore: rendering cycle progress from snapshot (#7626)
* chore: rendering progress from snaposhot

* chore: removed unncessary memoization

---------

Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-23 00:46:06 +05:30
706085395e [WEB-4748] chore: placement helper fn added and code refactor #7627
Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-23 00:42:44 +05:30
Sriram Veeraghanta a0f7acae42 chore: format files 2025-08-23 00:33:38 +05:30
SangeethaandGitHub 6e5549c439 [WEB-4187] fix: related search issues #7628 2025-08-23 00:28:08 +05:30
Jayash TripathyandGitHub cf8eeee03a [WEB-4687] feat: propel switch (#7629)
* feat: added switch

* fix: lint

* fix: lock file

* fix: improve accessibility and refactor switch component styles

* feat: add switch component to propel package

* fix: update imports in command component for consistency

* refactor: styles
2025-08-23 00:27:31 +05:30
Saurabh KumarandGitHub c4327780b9 [SILO-461] Fix github issue sync state map #3976 2025-08-22 19:27:18 +05:30
sriram veeraghantaandGitHub 3efa7e4602 Sync: Community Changes #3964 2025-08-22 19:24:12 +05:30
Saurabh KumarandGitHub 0bef946a2d [SILO-460] Add support for nested comments in Clickup import (#3972)
* add support to import nested comments

* remove unneccesary lines of code
2025-08-22 19:23:36 +05:30
Akshita GoyalandGitHub c4012a910f [PAI-708] fix: Pi workspace_id + scroll issue #3970 2025-08-22 17:35:05 +05:30
M. PalanikannanandGitHub b8f0b4fddf [WIKI-601] fix: fetch private and archived pages #3968 2025-08-22 17:05:32 +05:30
M. PalanikannanandGitHub 434bc1d78f fix: version mismatch (#3967) 2025-08-22 16:20:13 +05:30
sriram veeraghantaandGitHub d3b26996dd fix: replace .npmrc node version with engines in package.json (#7623) 2025-08-22 14:13:08 +05:30
pushya22andGitHub 5068079764 Sync: Community Changes #3951 2025-08-22 13:29:47 +05:30
Anmol Singh Bhatia d153bb3518 fix: merge conflict 2025-08-22 13:28:54 +05:30
Anmol Singh Bhatia 213a28c402 fix: merge conflict 2025-08-22 13:28:36 +05:30
NikhilandGitHub 67449cd382 [WEB-4741] refactor: optimize project accessible to queries (#3962) 2025-08-22 12:55:56 +05:30
Dheeraj Kumar KetireddyandGitHub 8deeb37362 [WEB-4744] Fix: Use the project timezone at midnight to generate the cron expression #3963 2025-08-22 12:55:20 +05:30
d0f26f8734 [WEB-4726] fix: intake work item redirection (#7619)
* chore: added is intake for email notifications

* fix: intake work item redirection

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-08-22 12:54:46 +05:30
M. PalanikannanandGitHub 13f2e26d91 regression: prosemirror-model version fixed #3961 2025-08-21 22:36:52 +05:30
Bavisetti NarayanandGitHub 754527d74b [WEB-4739] chore: added teamspace permission for pages (#3954)
* chore: added teamspace permission for pages

* chore: updated the comment in permission layer

* chore: stored the teamspace member in variable

* chore: optimised the logic

* chore: updated the teamspace permission
2025-08-21 21:11:56 +05:30
Bavisetti NarayanandGitHub 2ba97e0961 [WEB-4743] chore: added initiator in automation run (#3959)
* chore: added initiator in automation run

* chore: updated the migration file
2025-08-21 21:00:55 +05:30
Jayash TripathyandGitHub cac959be92 [WEB-3718] fix: replace Link component with anchor tag in UrlValueInput (#3957)
* fix: replace Link component with anchor tag in UrlValueInput

* feat: add URL property activity message function to work item helper
2025-08-21 20:55:27 +05:30
Jayash TripathyandGitHub 270a7a13c8 [WEB-3718] fix: replace Link component with anchor tag in UrlValueInput #3956 2025-08-21 18:52:14 +05:30
Akshita GoyalandGitHub 8b538f5f08 [PAI-706] fix: added workspace_id in initialise chat #3955 2025-08-21 18:13:58 +05:30
e86b40ac82 [WEB-4682 | WEB-4685] feat: propel comobobox and command component (#7615)
* feat: comobobox and command component added to propel package

* fix: format error

* chore: code refactor

* chore: code refactor

* fix: format error

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-21 15:32:29 +05:30
Bavisetti NarayanandGitHub 89a38a2c72 [WEB-4714] chore: added migration for page comment and initiative #3947 2025-08-21 13:22:29 +05:30
sriram veeraghantaandGitHub 913d9b36e7 Sync: Community Changes #3949 2025-08-21 13:20:59 +05:30
sriram veeraghantaandGitHub 9e346d8edb Merge branch 'preview' into sync/ce-ee 2025-08-21 13:20:10 +05:30
Saurabh KumarandGitHub c7a7e83b41 [SILO-449] fix: missing post method in members API #3943 2025-08-21 13:15:44 +05:30
Saurabh KumarandGitHub c209a713d8 [SILO-449] fix: add missing methods in external APIs (#7601)
* add missing fields and methods in endpoints

* add POST method for project members

* make project_id as uuid in url pattern

* remove post method

* fix method reordering
2025-08-21 13:15:15 +05:30
Anmol Singh BhatiaandGitHub f10cd92610 [WEB-4724] feat: tooltip component added to propel package (#7613)
* feat: tooltip component added to propel package

* chore: code refactor

* chore: code refactor

* fix: format error
2025-08-21 13:03:18 +05:30
Anmol Singh BhatiaandGitHub 03479cf6b3 [WEB-4684] chore: dialog component enhancements (#7606)
* chore: z-index tokens added

* chore: dialog component code refactor

* chore: dialog component improvements

* fix: lint error

* fix: lint error

* fix: format error
2025-08-20 22:17:26 +05:30
pushya22andGitHub be58e8aec8 Sync: Community Changes #3948 2025-08-20 21:28:23 +05:30
Bavisetti NarayanandGitHub b8a88fe89c [WIKI-599] chore: removed the regex tags calculation in description (#7608) 2025-08-20 21:26:21 +05:30
Anmol Singh BhatiaandGitHub 409ac30c91 [WEB-4683] feat: popover component added to propel package #7607 2025-08-20 20:50:27 +05:30
Vamsi KrishnaandGitHub 244a6257da [WEB-4059] fix: project cover image mismatch #3940 2025-08-20 20:23:34 +05:30
Prateek ShouryaandGitHub 318484219e [WEB-3718] chore: remove url custom property validation #3944 2025-08-20 19:26:33 +05:30
SangeethaandGitHub a6dbd7f422 [WEB-4083] chore: edit active cycle (#3859) 2025-08-20 19:23:35 +05:30
pushya22andGitHub 8d93c66b35 Sync: Community Changes #3946 2025-08-20 19:14:21 +05:30
sangeethailango 7d31958d35 fix: merge conflicts 2025-08-20 19:13:20 +05:30
Bavisetti NarayanandGitHub a59ebadd34 [WEB-4712] chore: work item attachment patch endpoint (#7595) 2025-08-20 18:56:15 +05:30
Akshita GoyalandGitHub 174ebfad56 [WEB-4637] fix: scrolling issue fixed #7600 2025-08-20 18:55:22 +05:30
SangeethaandGitHub 008e048968 [WEB-4430] fix: incorrect WI count while scrolling (#7596)
* fix: wrong WI count while scrolling

* chore: optimize issue queryset

* fix: use separate query for total_count_queryset

* fix: guest visibility constraint

* fix: use separate query for total_count_queryset in external api

* fix: use queryset.count()
2025-08-20 18:54:32 +05:30
Vamsi KrishnaandGitHub b3561bc649 [WEB-4715] fix: tour modal in mobile view #3932 2025-08-20 17:39:55 +05:30
M. PalanikannanandGitHub 243dcd013f [WIKI-445] feat: nested project pages (#3446) 2025-08-20 17:39:06 +05:30
sriramveeraghanta 1e2767664e fix: docker node modules path for sym_link 2025-08-20 16:32:05 +05:30
NikhilandGitHub 6b47da4847 [WEB-4709] fix: consumer database connection issue and correct outbox cleaner mongo record saving (#3929)
* refactor: streamline database connection handling in AutomationConsumer and enhance outbox record formatting

* chore: update outbox cleaner schedule and cutoff days configuration

* feat: enhance database connection handling in AutomationConsumer

Added a method to ensure the database connection is alive and integrated it into message processing to improve reliability. This change replaces direct calls to close old connections with a more robust connection check.

* fix: handle permanent database connection loss in AutomationConsumer

Added a warning log and system exit for cases where the database connection is lost permanently, improving the robustness of the consumer's error handling.

* fix: improve error handling for database connection loss in AutomationConsumer

Added a warning log and system exit for permanent database connection loss, enhancing the consumer's resilience against connection issues.

* Refactor API logs task and outbox cleaner logic

- Use MongoConnection in API logs task - Add ENABLE_OUTBOX_POLLER
setting - Update outbox cleaner to respect poller setting - Add
cleanup_junk_data.py placeholder
2025-08-20 16:27:17 +05:30
sriram veeraghantaandGitHub 3814d055aa Sync: Community Changes #3941 2025-08-20 16:22:58 +05:30
sriram veeraghantaandGitHub e1bd04df0b Merge branch 'preview' into sync/ce-ee 2025-08-20 16:22:04 +05:30
sriram veeraghantaandGitHub 7e15fcc080 fix: docker node_modeles symlink path matching with pnpm path (#7605) 2025-08-20 16:17:35 +05:30
8f609849fb [WIKI-594] chore: accept additional extension options in the editor (#3931)
* chore: accept additional extension options

* chore: update menu items list

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-08-20 15:49:25 +05:30
sriram veeraghanta ed46ade61b fix: increse heap memory for the docker build 2025-08-20 03:09:24 +05:30
sriram veeraghanta d1d1869cea fix: remove frozen lock for silo docker build 2025-08-20 02:46:15 +05:30
sriram veeraghanta 880bfef666 fix: lock file updates 2025-08-20 02:37:51 +05:30
sriram veeraghantaandGitHub d81a63fa01 Sync: Community Changes #3937 2025-08-20 02:27:40 +05:30
sriram veeraghanta 54198dbc0e fix: merge conflicts 2025-08-20 02:26:54 +05:30
sriram veeraghantaandGitHub 6636b8882f fix: package cleanup (#7602) 2025-08-20 02:24:12 +05:30
Akshita GoyalandGitHub 7115a7b8cf [WEB-4405] chore: workspace project states events (#3618)
* chore: templates + project states events

* fix: reverted line change

* fix: refactor
2025-08-20 01:11:28 +05:30
sriram veeraghantaandGitHub 9987037529 Sync: Community Changes #3935 2025-08-20 01:10:19 +05:30
Surya PrashanthandGitHub 7af61b01d1 [SILO-276] ops: extend start command to start each service separately (#3880)
* [SILO-276] ops: extend start command to start each service separately

- to scale server and workers scale independently, support taking
extra arguments to start command
- if no args are specified, start all services for backward compatibility

* early return if there are no args provided
2025-08-20 01:09:40 +05:30
Bavisetti NarayanandGitHub 9d87890b22 [WEB-4664] chore: recurring work item scheduled to run at 00:00. (#3909)
* chore: changed timestamp to 00:00]

* chore: updated the comment

* chore: added the project timezone conversion
2025-08-20 01:08:45 +05:30
Bavisetti NarayanandGitHub 6398fc3cba [WEB-4716] chore: created new description model (#7597)
* chore: created new description model

* chore: added project field

* chore: removed the duplicate workspace

* chore: updated the comment
2025-08-20 01:07:23 +05:30
Jayash TripathyandGitHub 1730908883 [WEB-3718] feat: add URL input component and integrate into property value select (#3915)
* feat: add URL input component and integrate into property value select

* feat: enhance URL input component with editing functionality and improved URL parsing

* fix: remove readOnlyData prop from PropertyValueSelect component

* refactor: cleanup

* refactor: update import statement for consistency in URL input component

* feat: implement TruncatedUrl component for improved URL display in URL input

* feat: add truncated link export and URL utility to respective modules

* refactor: replace Link2 with ExternalLink in TruncatedUrl component

* refactor: replace Link2 with ExternalLink in TruncatedUrl component

* refactor: update TruncatedUrl component to use full domain for display and added some docs

* feat: add TruncatedUrl component and update link exports

* fix: export ParsedURL interface for better accessibility in URL utilities

* refactor: remove TruncatedUrl component and update link exports

* refactor: export ParsedURL interface for improved accessibility in URL utilities

* fix: update parseURL function to return undefined for invalid URLs

* refactor: rename ParsedURL interface to IParsedURL for consistency

* refactor: rename IParsedURL to IURLComponents and update parsing functions for improved clarity

* chore: remove TruncatedUrl component and update exports in utils

* refactor: update URL utility functions and improve documentation for clarity

* refactor: add full URL property to IURLComponents interface and update extractURLComponents function

* refactor: rename createURL function to isUrlValid and update its implementation to validate URL strings
2025-08-20 01:05:32 +05:30
Vamsi KrishnaandGitHub 027002fb35 [WEB-4707]fix: typo in onboarding tour modal #3926 2025-08-20 01:04:55 +05:30
Vamsi KrishnaandGitHub fc698bd9b4 [WEB-4710]feat: added module filters to local storage (#7598)
* feat: added module filters to local storage

* chore: removed debounce
2025-08-20 01:04:17 +05:30
sriramveeraghanta b33a0e9f3b fix: silo docker file to use pnpm 2025-08-19 21:27:10 +05:30
sriram veeraghantaandGitHub 3d6a914034 Sync: Community Changes #3934 2025-08-19 21:15:31 +05:30
sriramveeraghanta 0e5605b885 fix: build errors 2025-08-19 21:10:21 +05:30
sriramveeraghanta eb4219ab28 fix: pnpm lock file update 2025-08-19 20:41:11 +05:30
sriramveeraghanta 1c33578441 fix: merge conflicts 2025-08-19 20:31:24 +05:30
Jayash TripathyandGitHub cd61e8dd44 [WEB-4705] chore: url utilities (#7589)
* feat: add truncated link export and URL utility to respective modules

* refactor: replace Link2 with ExternalLink in TruncatedUrl component

* feat: add TruncatedUrl component and update link exports

* fix: export ParsedURL interface for better accessibility in URL utilities

* refactor: remove TruncatedUrl component and update link exports

* fix: update parseURL function to return undefined for invalid URLs

* refactor: rename ParsedURL interface to IParsedURL for consistency

* refactor: rename IParsedURL to IURLComponents and update parsing functions for improved clarity

* refactor: update URL utility functions and improve documentation for clarity

* refactor: add full URL property to IURLComponents interface and update extractURLComponents function

* refactor: rename createURL function to isUrlValid and update its implementation to validate URL strings

* refactor: rename isUrlValid function to getValidURL and update its implementation to return URL object or undefined
2025-08-19 20:09:03 +05:30
Vamsi KrishnaandGitHub cbcdd86569 [WEB-4698]fix: work items modal select/deselect button #7599 2025-08-19 20:07:14 +05:30
553f01fde1 feat: migrate to pnpm from yarn (#7593)
* chore(repo): migrate to pnpm

* chore(repo): cleanup pnpm integration with turbo

* chore(repo): run lint

* chore(repo): cleanup tsconfigs

* chore: align TypeScript to 5.8.3 across monorepo; update pnpm override and catalog; pnpm install to update lockfile

* chore(repo): revert logger.ts changes

* fix: type errors

* fix: build errors

* fix: pnpm home setup in dockerfiles

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-08-19 20:06:42 +05:30
d8f246168e [WEB-4704] refactor: made TFilterValue typed (#3899)
* refactor: made TFilterValue typed and add config for boolean

* chore: remove boolean filter value input

* improvements: define value type for filter configs

* chore: add default value type for filter configs

* chore: minor type updates for filter configs

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-08-19 18:53:36 +05:30
guru_sainathandGitHub ec2d29a56e [MOB-1107] dev: Update math equation feature flag #3922 2025-08-19 01:28:28 +05:30
guru_sainathandGitHub d28d157088 [MOB-1071] feat: Update push notification functionality and add notification count badge (#3923)
* dev: updated push notification workflow

* dev: Notification count query

* dev: updating the device info mutation

* dev: handled unread and read notifications in notifications count and user level unread notification count in push notification

* dev: updated relations and comment in push notifications

* dev: cleaned up prints

* dev: updated notification count
2025-08-19 01:28:02 +05:30
sriram veeraghantaandGitHub 83c09c1250 Sync: Community Changes #3927 2025-08-19 00:36:35 +05:30
Sriram Veeraghanta 0b89dd209d fix: lock file 2025-08-19 00:35:30 +05:30
Sriram Veeraghanta eebd2b9404 fix: merge conflicts 2025-08-19 00:35:12 +05:30
Sriram Veeraghanta 01af37d2b6 chore: remove mobx-react-lite imports 2025-08-19 00:31:11 +05:30
d8f58d28ed fix: CI to include lint and format along with build (#7482)
* fix(lint): get ci passing again

* chore(ci): run lint before build

* chore(ci): exclude web app from build check for now

The web app takes too long and causes CI to timeout. Once we
improve we will reintroduce.

* fix: formating of files

* fix: adding format to ci

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-18 21:27:16 +05:30
b194089fec [WEB-3855] fix: Turkish language support (#7383)
* Türkçe dil desteği , İgilizce okunuşlardan gerçek karşılığına çevirildi.

* "sidebar.intake"="Talep" olarak değiştirildi.

---------

Co-authored-by: Bektaş IŞIK <bektas.isik@aurorabilisim.com>
2025-08-18 21:17:06 +05:30
sriram veeraghantaandGitHub 927da438c7 [PRIME-17] fix: enable github api to fetch latest version information (#7548)
* fix: enable github api to fetch latest version information

* chore: typo fixes

* chore: add timeout to request
2025-08-18 20:12:48 +05:30
sriram veeraghantaandGitHub 67471e9c06 Sync: Community Changes #3917 2025-08-18 19:48:02 +05:30
sriramveeraghanta 8a8e4e3e2b fix: merge conflicts 2025-08-18 19:47:33 +05:30
sriram veeraghantaandGitHub 9c21fd320c feat: adding baseui components to propel package (#7585)
* feat: adding baseui components

* fix: export from the package.json
2025-08-18 19:35:34 +05:30
Anmol Singh BhatiaandGitHub f142266bed [WEB-4699] chore: loading spinner theme #7587 2025-08-18 18:30:51 +05:30
Prateek ShouryaandGitHub b85609fb18 [WEB-4680] Improvement: automations UX improvements for creating nodes. (#3914)
* improvement: remove duplicate automation details fetching logic from layout

* improvement: update the trigger and condition node creation and update logic

* chore: update trigger select component

* improvement: enhance action create / update flow

* improvement: allow specifying position for adding automation IDs in project automation store

* chore: comment out scope loader component in automation details

* feat: add empty state for custom automations
2025-08-18 18:27:58 +05:30
851729b1ef [WEB-4680] chore: automation change property action (#3911)
* chore: automation change property action

* chore: minor typo fix

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-08-18 18:27:46 +05:30
sriram veeraghantaandGitHub 4b06bc4d2d fix: remove page title hook (#7583)
* fix: page title hook removed

* fix: build errors
2025-08-16 14:10:10 +05:30
sriram veeraghantaandGitHub 7cd43a35d6 Sync: Community Changes #3916 2025-08-15 18:12:55 +05:30
Aaryan Khandelwal b4f0179712 fix: build errors 2025-08-15 14:17:46 +05:30
Aaryan Khandelwal 68b3c4b64d fix: merge conflicts resolved from preview 2025-08-15 14:12:40 +05:30
b1f8b1972c refactor: web app to remove barrel imports (#3910)
* refactor: remove barrel exports from some compoennt modules

* refactor: remove barrel exports from issue components

* refactor: remove barrel exports from page components

* chore: update type improts

* refactor: remove barrel exports from cycle components

* refactor: remove barrel exports from dropdown components

* refactor: remove barrel exports from ce  components

* refactor: remove barrel exports from some more components

* refactor: remove barrel exports from profile and sidebar components

* chore: update type imports

* refactor: remove barrel exports from store hooks

* chore: dynamically load sticky editor

* fix: lint

* chore: revert sticky dynamic import

* fix: build errors

* fix: build errors

* fix: build errors

* fix: build errors

* fix: build errors

* chore: update hook imports

* fix: build errors

* fix: build errors

* fix: build errors

* fix: build errors

* fix: build errors

* refactor: remove barrel exports from ce issue components

* refactor: remove barrel exports from ce issue components

* refactor: remove barrel exports from ce issue components

* fix: build errors

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-08-15 13:19:42 +05:30
Aaryan KhandelwalandGitHub d692db47b2 refactor: space app barrel exports (#7573)
* refactor: space app barrel files

* chore: rename views layout
2025-08-15 13:12:36 +05:30
3391e8580c refactor: remove barrel exports from web app (#7577)
* refactor: remove barrel exports from some compoennt modules

* refactor: remove barrel exports from issue components

* refactor: remove barrel exports from page components

* chore: update type improts

* refactor: remove barrel exports from cycle components

* refactor: remove barrel exports from dropdown components

* refactor: remove barrel exports from ce  components

* refactor: remove barrel exports from some more components

* refactor: remove barrel exports from profile and sidebar components

* chore: update type imports

* refactor: remove barrel exports from store hooks

* chore: dynamically load sticky editor

* fix: lint

* chore: revert sticky dynamic import

* refactor: remove barrel exports from ce issue components

* refactor: remove barrel exports from ce issue components

* refactor: remove barrel exports from ce issue components

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-15 13:10:26 +05:30
Surya PrashanthandGitHub b0b2dec18a [SILO-445] fix: bind assets object to function (#3913)
- in protect, bind assets instance to the calling
function
2025-08-14 19:12:22 +05:30
Vamsi KrishnaandGitHub e3067091cd [WEB-4697]fix: link behaviour in teamspace projects list (#3908)
* fix: link behaviour in teamspace projects list

* fix: project breadcrumb list
2025-08-14 16:02:28 +05:30
Surya PrashanthandGitHub 0d0df90517 [SILO-445] fix: sequentially upload assets in notion import (#3902)
- Limit max attachment size to 50MB
2025-08-14 15:16:03 +05:30
Prateek ShouryaandGitHub 3e633d0d12 [WEB-4679] chore: automation improvements and bug fixes (#3907) 2025-08-14 14:51:31 +05:30
Vamsi KrishnaandGitHub 566aa05113 [WEB-4694]feat: projects CTA in teamspace projects list #3901 2025-08-14 14:32:10 +05:30
Jayash TripathyandGitHub a6d54a76d5 [WEB-3718] improvement: added URL type in work item types #3903 2025-08-14 14:29:48 +05:30
Vamsi KrishnaandGitHub 3b19ffbeee [WEB-4695] fix: progress bar displayed in scope breakdown update View #3904 2025-08-14 14:29:21 +05:30
Akshita GoyalandGitHub 6893acd1ff [PAI-693] chore: reasoning block + feedback btns improvement #3897 2025-08-13 19:21:35 +05:30
pushya22andGitHub 944aa4391f Sync: Community Changes #3905 2025-08-13 19:20:50 +05:30
Bavisetti NarayanandGitHub 824cf937b3 [WEB-4675] fix: recurring work item updating #3900 2025-08-13 19:18:52 +05:30
Prateek ShouryaandGitHub 9cf564caae [WEB-4693] fix: remove initial load flicker on auto-archive and auto-close automation page (#7578)
* [WEB-4693] fix: remove initial load flicker on auto-archive and auto-close automation page

* refactor: optimize auto-archive and auto-close status calculations using useMemo

* chore: add requested changes
2025-08-13 19:17:20 +05:30
NikhilandGitHub 7e75ab23c8 [WEB-4679] fix: update created_by filter key to created_by_id for consistency in automation conditions (#3898) 2025-08-13 14:18:58 +05:30
a84d0025a2 [WEB-3815] feat: project automations (#3802)
* init: automations store and components

* chore: updated components

* refactor: correct semantics

* chore: modal components added

* chore: update conjunction translations

* Pgtrigger and Outbox prototype

* feat: add event stream app with models and migrations

- Introduced the event_stream app with initial models: Outbox and IssueProxy.
- Implemented a PostgreSQL trigger for logging updates to issues.
- Added necessary migrations and updated settings to include the new app.

* refactor: migrate event publisher to event stream

- Updated imports in test files to reflect the new event_stream app structure.
- Removed the event_publisher app, including its models, migrations, and tests.
- Introduced MemorySafeOutboxEventListener and related service for handling outbox events.
- Added management command for starting the outbox event listener with memory safety.
- Implemented PostgreSQL triggers for outbox notifications in the new event_stream app.

* refactor: enhance issue serializer and event stream models

- Updated IssueSerializer and IssueCreateSerializer to manage assignees and labels more efficiently by calculating additions and removals instead of deleting all and re-adding.
- Introduced new proxy models for CycleIssue and ModuleIssue with corresponding PostgreSQL triggers for event handling.
- Refactored Outbox model to include entity type and ID for better event tracking.
- Removed outdated IssueProxy model and its associated triggers, streamlining the event stream architecture.

* chore: update base requirements for OpenSearch and add pika for RabbitMQ

- Retained django-opensearch-dsl version 0.7.0 in requirements.
- Added pika version 1.3.2 for RabbitMQ integration.

* refactor: update import paths for event stream listener

- Changed import statements in test_competitive_listeners.py, service.py, and listen_outbox_events.py to reflect the new module structure by removing the 'apiserver' prefix.

* feat: implement PostgreSQL LISTEN/NOTIFY listener for outbox events

- Added DatabaseConnection class to manage psycopg3 connections for LISTEN/NOTIFY.
- Introduced NotificationListener class to handle PostgreSQL NOTIFY messages and dispatch them to registered handlers.
- Updated Command class to utilize NotificationListener for listening to outbox events, replacing the previous restartable listener implementation.
- Improved error handling and logging throughout the listener process.

* feat: enhance event processing with advisory locks

- Implemented advisory lock mechanism to prevent concurrent processing of events.
- Added methods to acquire and release advisory locks in the DatabaseConnection class.
- Updated root_handler to fetch complete outbox data and mark events as processed only if all handlers succeed.
- Improved error handling and logging for event processing.

* fix: improve event logging and error handling in NotificationListener

- Updated event logging to include event ID for better traceability.
- Enhanced error handling in the command's handle method to log exceptions and maintain robustness during event listening.

* feat: add memory monitoring and auto-restart functionality to event listener

- Introduced MemoryMonitor class to track memory usage and event processing counts.
- Implemented automatic restarts for the NotificationListener based on memory and event limits.
- Enhanced command line options to configure memory limits, event limits, and memory check intervals.
- Improved logging for memory stats and event processing to aid in monitoring and debugging.

* feat: update local and production settings for event logging

- Introduced logging configuration for 'plane.event_stream' in both local and production settings to enhance event logging capabilities.

* chore: Implement async outbox polling mechanism with memory monitoring and event handling. Add management command for outbox poller and create necessary database migrations for outbox triggers and indexes.

* docs: Add comprehensive README for Event Stream system detailing architecture, components, configuration, usage, and performance tuning.

* feat: Enhance MongoDB integration with a singleton connection manager and implement outbox cleanup task for migrating records from PostgreSQL to MongoDB

* feat: Add asyncio support for tests and new test files for outbox polling

* Merge branch 'event-stream' of github.com:makeplane/plane-ee into event-stream

* refactor: Update event types in outbox triggers for cycle, issue, and module models; add IssueComment, IssueLink, and IssueRelation proxies with corresponding triggers

* refactor: Update import paths for JsonFormatter and consolidate OpenFeature imports; add unit tests for OutboxPoller and related classes

* refactor: Replace all_objects with objects in Outbox queries and update test fixtures for outbox records

* feat: Add daily outbox cleaner task to Celery and update type hint for MongoDB collection

* refactor: Enhance memory monitoring and outbox polling logic with improved logging and delay handling

* feat: Implement outbox triggers for issue, issue attachment, issue link, and issue relation models with dynamic event type determination

* chore: Remove obsolete files related to multiple listeners and competitive processing tests

* Delete service.py

* feat: Add outbox poller script to manage database migrations and process events with configurable parameters

* refactor: Optimize EpicCreateSerializer to handle initiative, assignee, and label updates with conflict management and improved logic for adding/removing related entities

* feat: Update issue proxy triggers for outbox events

- Removed the existing 'issue_outbox_update' trigger from the IssueProxy model.
- Added a new 'issue_outbox_update' trigger with enhanced logic to handle conversion events when the issue type changes.
- The new trigger captures updates and soft deletes, inserting appropriate events into the outbox.

* feat: Refactor issue proxy triggers and add new outbox event handling

- Removed and replaced existing triggers for IssueProxy, IssueAssigneeProxy, IssueLabelProxy, CycleIssueProxy, and ModuleIssueProxy.
- Introduced new triggers to handle outbox events for various issue-related actions, including creation, updates, and deletions.
- Enhanced logic for event type determination based on issue type, ensuring accurate event handling in the outbox.

* refactor: Update serializers to use ID fields for assignees and labels

- Changed the handling of assignees and labels in IssueCreateSerializer and EpicCreateSerializer to use ID fields instead of object references.
- Improved logic for determining assignees and labels to add or remove by using lists of IDs.
- Enhanced code readability with comments explaining the changes.

* feat: Enhance issue event handling in outbox triggers

- Updated triggers for IssueProxy, IssueAssigneeProxy, and IssueLabelProxy to determine event types based on issue type, including handling for epics.
- Introduced filtered data for outbox events to exclude description fields, improving data integrity and reducing unnecessary payload size.
- Enhanced logic for detecting changes during updates, ensuring only relevant changes are captured and processed.

* feat: implement connection pooling for outbox poller

- Introduced DatabaseConnectionPool class to manage async connection pooling using psycopg_pool.
- Enhanced outbox polling logic to utilize connection pooling for improved performance and resource management.
- Added health check and statistics retrieval methods for the connection pool.
- Updated outbox model and migration to include claimed_at field for better event tracking.
- Refactored tests to validate new connection pooling functionality.

* feat: Introduce automation engine with models and registry

- Added core components for the automation engine, including models for Automation, AutomationVersion, AutomationNode, AutomationEdge, AutomationRun, and NodeExecution.
- Implemented a NodeRegistry for managing automation nodes and a decorator for easy registration.
- Created initial files for automation app configuration and documentation, including an entity-relationship diagram and detailed model explanations.
- Established a migration for the new automation models to integrate with the existing database schema.

* refactor: move MongoConnection to a new settings module and update imports

- Created a new mongo.py file to define the MongoConnection class for managing MongoDB connections.
- Updated the import path in outbox_cleaner.py to reference the new MongoConnection location.

* refactor: update import path for MongoConnection in outbox_cleaner.py

* chore: remove scout_apm from production settings and requirements

- Deleted scout_apm from the installed apps in production.py.
- Removed scout-apm dependency from base.txt requirements.

* feat: add claimed_at field to outbox events and update requirements

- Added claimed_at field to the outbox event model for enhanced event tracking.
- Updated outbox poller to handle claimed_at in event processing.
- Included django-pgtrigger in base.txt requirements for database trigger management.

* feat: enhance memory monitoring in outbox poller

- Updated MemoryMonitor to signal for restarts instead of exiting on memory limit exceedance.
- Added methods to check for restart requests and wait for restart signals.
- Improved outbox poller logic to handle memory monitoring more gracefully during processing.
- Ensured all claimed rows are processed before initiating a restart.

* feat: implement graceful shutdown handling in outbox poller

- Added GracefulShutdownHandler class to manage shutdown signals (SIGTERM, SIGINT, SIGQUIT).
- Integrated shutdown handling into the outbox poller to allow for graceful exits during processing.
- Updated polling logic to check for shutdown requests and clean up resources accordingly.
- Enhanced command help text to reflect new signal handling capabilities.

* simplify AutomationEdge model by removing label and condition fields, and update unique constraint

* Enhance outbox event handling by adding workspace and project IDs

- Updated the outbox cleaner to include `workspace_id` and `project_id` in the deletion process.
- Modified the outbox poller to handle new fields in event processing.
- Adjusted models and migrations to support the new fields in the outbox table.
- Updated tests to ensure proper handling of workspace and project IDs in outbox records.

* chore: folder migration

* fix: type errors

* Refactor AutomationNode model and migration

- Removed `node_id`, `position_x`, `position_y`, and `execution_order` fields from the AutomationNode model.
- Updated migration to reflect the removal of constraints and adjusted the ordering of the model.
- Cleaned up the migration dependencies for better clarity.

* Add automation serializers and endpoints

- Introduced AutomationWriteSerializer and AutomationReadSerializer for handling automation data.
- Added AutomationNodeWriteSerializer and AutomationNodeReadSerializer for automation node management.
- Created AutomationEndpoint and AutomationNodeEndpoint views to manage automation and automation nodes with CRUD operations.
- Implemented permission checks for different roles on the endpoints.

* Merge branch 'preview' of github.com:makeplane/plane-ee into event-stream

* Add automation scope choices and update serializers and views

- Introduced AutomationScopeChoices for defining automation scopes.
- Updated AutomationWriteSerializer and AutomationReadSerializer to include scope validation and new fields.
- Created automation URL patterns and endpoints for managing automations.
- Implemented feature flag checks for automation-related endpoints.
- Enhanced permission checks for CRUD operations on automations.

* Refactor automation models, serializers, and views for improved structure and functionality

- Updated migration file to enhance automation-related models, including Automation, AutomationVersion, AutomationRun, AutomationNode, and AutomationEdge.
- Refactored serializers to include additional fields and validation for AutomationNode.
- Introduced new endpoints for managing AutomationNodes, including CRUD operations with feature flag checks.
- Improved URL patterns for automation and automation node management.
- Enhanced permission checks for automation-related operations.

* Add AutomationEdge serializers and endpoints for managing automation edges

- Introduced AutomationEdgeWriteSerializer and AutomationEdgeReadSerializer for handling automation edge data.
- Created AutomationEdgeEndpoint to manage CRUD operations for automation edges with appropriate feature flag checks.
- Updated URL patterns to include routes for automation edges.
- Refactored existing automation node endpoint to inherit from AutomationBaseEndpoint for consistency.

* feat: add Automation Bot type and enhance automation model

- Introduced a new BotTypeEnum value for "AUTOMATION_BOT".
- Added a OneToOneField for bot_user in the Automation model to associate a bot user with automations.
- Created a new AutomationActivity model to track activities related to automations, including fields for action, old and new values, and related entities.

* feat: add automation models and constraints

- Introduced new models for Automation, AutomationNode, AutomationRun, NodeExecution, AutomationVersion, AutomationEdge, and AutomationActivity.
- Implemented foreign key relationships and constraints to ensure data integrity, including unique constraints with conditions for deleted records.
- Added indexes to optimize query performance on various fields across the new models.
- Enhanced existing models with additional fields and relationships to support automation functionality.

* feat: rich filters store architecture and UI components

* improvement: use map instead of object for automations store

* improvement: rename automations v2 components to automations

* feat: automation nodes and edges

* feat: enhance automation functionality with new models and endpoints

- Added AutomationRun and NodeExecution models to track automation runs and their execution details.
- Introduced AutomationDetailReadSerializer to provide detailed information about automations, including nodes and edges.
- Updated AutomationEndpoint to create and manage automation bots, enhancing automation capabilities.
- Created AutomationRunEndpoint for retrieving automation run data, supporting both single and multiple run queries.
- Refactored existing serializers and views to incorporate new features and improve overall structure.

* improvement: refactor automation nodes

* feat:  publisher for pushing events from the poller to the queue

* feat: Implement RabbitMQ Event Stream Publisher and Outbox Event Model

- Added EventStreamPublisher class for reliable event publishing to RabbitMQ with support for fanout exchanges, message persistence, and concurrent access handling.
- Introduced OutboxEvent dataclass for structured representation of outbox events, including methods for conversion to various formats.
- Updated OutboxPoller to utilize the new publisher for handling outbox events, improving event processing and publishing logic.

* feat: Add logging for published messages in EventStreamPublisher

- Enhanced the EventStreamPublisher class to log published messages, including instance ID and message body for better traceability and debugging.

* feat: Enhance Outbox Poller Tests and Introduce Event Stream Publisher Tests

- Refactored test cases in `test_outbox_poller.py` to simplify row tuple creation and improve readability.
- Added new test suite for `EventStreamPublisher` in `test_publisher.py`, covering initialization, connection management, message publishing, error handling, and thread safety.
- Introduced a new `__init__.py` file in the event stream tests directory to support module structure.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>

* feat: implement automation activity tracking functionality

- Added a new module for tracking automation activities, including creation, updates, and deletions.
- Introduced functions to handle different types of automation activities and log changes to relevant fields.
- Updated AutomationEndpoint to trigger automation activity tasks upon creation, update, and deletion of automations.
- Enhanced error handling and logging for automation activity processes.

* feat: expand automation activity tracking with node and edge functionalities

- Added functions to track creation, updates, and deletions of automation nodes and edges.
- Implemented new activity types for node and edge activities in the automation activity task.
- Updated AutomationNodeEndpoint and AutomationEdgeEndpoint to trigger activity tracking upon relevant actions.
- Enhanced serialization of requested data for activity logging, ensuring accurate tracking of changes.

* feat: add automation activity tracking for activities

- Introduced AutomationActivityReadSerializer to handle serialization of automation activity data.
- Created AutomationActivityEndpoint for managing CRUD operations related to automation activities.
- Updated URL patterns to include routes for automation activities.
- Enhanced existing serializers and views to support new activity tracking functionalities.

* feat: add unit tests for automation activity tracking

- Introduced comprehensive unit tests for automation activity functions, including creation, deletion, and updates of automation activities, nodes, and edges.
- Implemented test cases to validate the tracking of field changes and ensure accurate logging of activities.
- Enhanced test coverage for various scenarios, including valid and invalid data inputs, to ensure robustness of automation activity tracking functionalities.

* feat: Implement automation execution engine and node management

- Added AutomationExecutionEngine class to handle the execution of automation workflows, including validation of events, loading of nodes, and execution of triggers, conditions, and actions.
- Introduced various node types (triggers, conditions, actions) with specific implementations for handling events and performing actions within the automation framework.
- Enhanced the automation system with auto-discovery of node modules during Django startup, ensuring all nodes are registered and ready for execution.
- Created comprehensive README documentation for automation nodes, detailing available triggers, conditions, and their configurations.
- Added error handling and logging for improved traceability during automation execution.
- Implemented tests for the new automation features to ensure reliability and correctness.

This commit lays the foundation for a robust automation system capable of responding to database events and executing defined workflows.

* Added automations to installed apps

* refactor: remove unused import in automation activity test file

* chore: automations components restructure and API integration init

* improvement: add loader for automations list table

* fix: automations settings page layout

* fix: automation list loader

* improvement: reduce add node button height

* feat: update automation modal.

* refactor: simplify label ID handling in IssueCreateSerializer

* improvement: rename `actions` to `action-buttons` in automation details sidebar.

* feat: add automation status endpoint to toggle status for different automations

* feat: automation comment actions

* chore: default last run status to None

* chore: add total success count

* chore: add total failed count

* improvement: automations list table

* chore: automation feature flag update and minor fix in status endpoint

* fix: automation status endpoint feature flag

* feat: automation details page header

* chore: remove support for multiple trigger nodes in a single automation

* feat: update automation status handling to include is_enabled flag

* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys

* improvements: add filter button config initialization

* chore: minor type name updates

* Updated migration

* Implement automation consumer and management commands for event processing

- Added AutomationConsumer class to handle RabbitMQ events and dispatch to Celery tasks.
- Created management commands for running the automation consumer and creating automations interactively.
- Introduced Celery tasks for executing automation logic and cleaning up processed events.
- Updated settings to include automation-related configurations.
- Implemented logging for better traceability of automation processes.

* Enhance automation execution engine with structured results and multiple action support

- Introduced new data classes for standardized execution context and results: ExecutionContext, NodeResult, and AutomationResult.
- Updated AutomationExecutionEngine to support multiple action nodes executed sequentially, halting on the first failure.
- Refactored node execution methods to improve clarity and maintainability.
- Enhanced error handling and logging for better traceability during automation execution.
- Updated README to reflect changes in automation execution flow and node capabilities.

* feat: enhance automation model to create bot user and update field tracking

* feat: add initiator_id field to Outbox model and update migration dependencies

* feat: condition node for automations

* chore: enable feature flag check for automation create and update status endpoint

* feat: add initiator_id to Outbox insertions across event stream models

- Updated Outbox insert statements in various models to include initiator_id.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure proper tracking of the user initiating changes.
- Enhanced event handling for soft deletes and regular updates to maintain consistency in data tracking.

* feat: enable / disable automations

* feat: include initiator_id in OutboxEvent model and database interactions

- Added initiator_id field to the OutboxEvent model for enhanced tracking.
- Updated database queries in outbox_poller.py to include initiator_id in insertions.
- Ensured consistency in data handling across event stream components.

* refactor: update handle_row function to use OutboxEvent model

- Changed the parameter type of handle_row from Dict to OutboxEvent for better type safety.
- Updated logging to utilize the to_dict method of OutboxEvent for consistent event data representation.

* chore: update `edgeIdsToDelete` to `edgeIdsToRemove`

* refactor: simplify EventStreamPublisher by removing default queue and message TTL parameters, and updating setup methods for exchange only

* feat: add change property action

* TODOs

* chore: automation activity

* chore: added issue for issue created trigger

* chore: updated migrations

* chore: added priority, date and state changes

* chore: update automation migration

* chore: remove label activity

* chore: created the comment activity

* fix: logical operators casing

* feat: add docker entrypoint script for automation consumer

- Introduced a new script to manage the automation consumer process.
- The script includes commands to wait for the database and migrations before running the automation consumer.

* feat: add automation models and migrations

- Introduced new models for Automation, AutomationActivity, AutomationEdge, AutomationNode, AutomationRun, AutomationVersion, NodeExecution, and ProcessedAutomationEvent.
- Implemented necessary migrations to support the new automation features, including relationships and constraints.
- Enhanced event handling capabilities with detailed tracking and management of automation processes.

* chore: trigger main content condition preview

* chore: update condition preview limit

* chore: validated conditions for automations

* chore: added check for automation and import job

* refactor: streamline event processing by ignoring system-originated events

* fix: automation activities

* refactor: update SQL command for setting initiator type in automation and import tasks

* chore: update lxml and xmlsec versions in base requirements

* chore: update outbox cleaner cutoff days to 7 and include it in settings

* fix: update SQL command for setting initiator type in data import and bulk update tasks

* feat: add triggers for issue assignee and label management in outbox

- Implemented triggers for inserting and updating issue assignee and label data in the outbox.
- Adjusted SQL logic to handle previous attributes correctly during assignee and label updates.
- Changed trigger execution timing from AFTER to BEFORE for better handling of soft deletes.

* feat: enhance automation consumer script with queue and prefetch options

- Added support for specifying the automation events queue and prefetch count in the docker entrypoint script for the automation consumer.

* fix: update automation consumer script and event stream exchange name

- Changed the queue name in the automation consumer script to use the new environment variable for event stream.
- Updated the default exchange name in the event stream publisher to align with the new naming convention.

* refactor: update automation consumer settings and permissions

- Changed the queue name and exchange name in the automation consumer and related scripts to use new environment variables.
- Updated file permissions for the docker entrypoint script to ensure proper execution.

* chore: activity filters

* fix: activity filters

* chore: automation activity description

* chore: added new fields in automation run

* improvement: add custom automations to project settings page

* improvement: minor enhancements and fixes.

* feat: update automation consumer settings and logging configuration

* Changed default queue name for automation events in run_automation_consumer.py.
* Added logging configuration for plane.automations.consumer in both local and production settings.
* Removed unused node_execution.py file.

* minor cleanup

* chore: minor improvements

* feat: update automation execution tracking and logging

* Added logic to update the last run timestamp and increment the run count for automations.
* Enhanced the field tracking in automation activity logging to include node type for better clarity.

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
2025-08-12 20:34:29 +05:30
Vamsi KrishnaandGitHub 127b270930 [WEB-4678] chore: teamspace project grouping (#3895) 2025-08-12 19:59:16 +05:30
NikhilandGitHub ccf24a6525 [WEB-4667] chore: outbox event payload and change the way transaction variable is set (#3888) 2025-08-12 19:49:51 +05:30
Prateek ShouryaandGitHub 3a0b6e39c3 [WEB-4676] feat: rich filters store architecture and UI components (#3746) 2025-08-12 19:40:26 +05:30
pushya22andGitHub 770a852c40 Sync: Community Changes #3896 2025-08-12 19:39:40 +05:30
Prateek ShouryaandGitHub 34c6047d80 [WEB-4677] improvement: add defaultOpen property to CustomSearchSelect (#7576)
* [WEB-4677] improvement: add defaultOpen property to CustomSearchSelect

* improvement: add utils to format time duration

* improvement: added initializing state for project store

* improvement: minor changes in automations page
2025-08-12 19:37:53 +05:30
Vamsi KrishnaandGitHub 2695c8a73d [WEB-4670] fix: teamspace projects list #3891 2025-08-12 18:54:20 +05:30
Bavisetti NarayanandGitHub 763a774436 [WEB-4673] chore: updated logic to delete recurring work item (#3893)
* chore: added recurring work item deletion

* chore: updated the periodic task logic

* chore: removed the comment
2025-08-12 16:52:09 +05:30
NikhilandGitHub b12c51a4e7 [WEB-4651] feat: external API endpoint to get all values for custom properties for a work item (#3861)
* feat: add list endpoint for listing all values related to all properties for a workitem

* feat: enhance issue property value retrieval by including issue type filtering

* refactor: clean up issue property validators and improve API documentation for issue property value endpoints
2025-08-12 16:06:10 +05:30
pushya22andGitHub 992ea3923d Sync: Community Changes #3892 2025-08-12 15:56:58 +05:30
Anmol Singh BhatiaandGitHub 5629a4d4b6 [WEB-4674] fix: update broken email preference links in notification emails #7574 2025-08-12 15:55:26 +05:30
Prateek ShouryaandGitHub 4e9439999f [WEB-4673] improvement: recurring work items (#3889)
* improvement: update empty state assets for recurring work items

* improvement: add all missing recurring work item activity types

* fix: update recurring work items submitting state

* chore: update upgrade empty state

* feat: add all missing translations
2025-08-12 15:52:29 +05:30
pushya22andGitHub f8474bec80 Sync: Community Changes #3890 2025-08-12 15:07:48 +05:30
NikhilandGitHub 545507fa97 [WEB-4668] fix: LabelDetailAPIEndpoint from LabelListCreateAPIEndpoint (#7571) 2025-08-12 14:43:14 +05:30
3cd1a2e9dc [WEB-4130] chore: track estimate time in cycles (#3251)
* chore: track estimate time and estimate points

* fix: handled time estimates for cycles

* fix: build

* fix: formattign

* fix: build

* fix: build

* fix: refactor

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
2025-08-12 14:42:03 +05:30
Akshita GoyalandGitHub 06e20ca01c [PAI-633] Chore workspace info added in apis (#3862)
* chore: sending workspace info for all the pi apis

* fix: message scrolling for chat

* fix: border color for markdown table

* fix: added workspace_id in queue-answer api

* fix: workspaceId types

* fix: refactor
2025-08-12 13:13:10 +05:30
Vamsi KrishnaandGitHub 58bb85496e [WEB-4643] fix: build errors for event trackers #3887 2025-08-11 20:25:10 +05:30
SangeethaandGitHub e1e194bb9f [WEB-4663]fix: linked wi on customer requests #3884 2025-08-11 19:47:29 +05:30
Vamsi KrishnaandGitHub 57a48db2d2 [WEB-4639]chore: added redirection for scope cards to scope page (#3845)
* chore: added redirection for scope cards to scope page

* fix: updated div to link for routing action
2025-08-11 19:47:09 +05:30
c4d8b7f96a [WEB-4408]chore: added customer events for posthog (#3534)
* chore: added customer events for posthog

* fix: store

* chore: updated event tracker

* chore: added tracker elements for customers

* chore: remove unused constatnts

* chore: removed unnecessary dependencies

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-08-11 19:19:41 +05:30
04d641bd64 [WEB-4350] chore: access icon for linked pages search (#3488)
* chore: return access detail

* feat: added page accessibility icon

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
2025-08-11 19:19:14 +05:30
ef16c0ae69 [WEB-4405]chore: added event tracker for work item types (#3623)
* chore: added event tracker for custom properties

* chore: added event trackers for custom properties

* chore: handled conditional event names

* chore: revert search item changes

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-08-11 19:18:02 +05:30
Vamsi KrishnaandGitHub b32bae457d [WEB-4608] fix: comment filter for enhanced search #3780 2025-08-11 19:17:45 +05:30
Vamsi KrishnaandGitHub 13681404db [WEB-4592] feat: projects in teamspaces (#3820)
* draft: header filters

* chore: added projects list to teamspace sidebari item

* chore: update conditions order

* chore: fixed build errors

* fix: typos and observer wrappers

* fix: updated empty states path
2025-08-11 19:17:12 +05:30
ad8393259a [SILO-409] Epics external API GET endpoints (#3818)
* add external apis for epic

* epic in plane api sdk

* add tests for epic endpoints + support epics in issue-identifier endpoint

* format files

* use choices from model + fixes

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-11 19:15:55 +05:30
Saurabh KumarandGitHub d0f5ea5bda [SILO-435] Pages External API Support (#3828)
* add external API GET for page + plane sdk support

* additional check in project page + send required fields

* add tests for pages api endpoints

* make published page api authenticated + format and fixes
2025-08-11 19:05:11 +05:30
Akshita GoyalandGitHub 807e553510 [WEB-4647] chore: integrations importers posthog refactor (#3856)
* chore: refactored posthog for integrations & importers

* fix: integrations

* fix: refactor integration events
2025-08-11 19:00:42 +05:30
96e1d55e30 [WEB-4657] refactor: optimize project v2 endpoint and issue detail endpoint #3863
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-11 19:00:25 +05:30
Jayash TripathyandGitHub f9e818b079 [WEB-4643] Epics issue types event trackers (#3867)
* feat: add epic properties tracking functionality and refactor epicsTrackers usage

* refactor: update epic property operation methods to use propertyId instead of issueId

* feat: enhance epic property operation to include isActive parameter for create and update actions

* refactor: update IssuePropertiesRoot to use currentWorkspace anf projectId
2025-08-11 18:58:37 +05:30
e060710de2 [WEB-4656] fix: one plan feature list (#3868)
* fix: one plan feature list

* chore: code refactor

* Corrected Plane one feature list

---------

Co-authored-by: pushya22 <130810100+pushya22@users.noreply.github.com>
2025-08-11 18:58:13 +05:30
NikhilandGitHub 773de57731 [WEB-4665] fix: data import task to populate created_by and updated_by ids when saving data #3878 2025-08-11 18:57:54 +05:30
sriramveeraghanta da90f2e791 fix: build errors 2025-08-11 18:56:28 +05:30
sriram veeraghantaandGitHub 9060992aaa Sync: Community Changes #3885 2025-08-11 18:51:50 +05:30
sriramveeraghanta c73882efe8 fix: yarn lock file 2025-08-11 18:50:42 +05:30
sriramveeraghanta 1a5ae0d973 fix: merge conflicts 2025-08-11 18:50:18 +05:30
Anmol Singh BhatiaandGitHub d317755ab9 [WEB-4542] feat: god mode auth revamp and code refactor (#7563)
* chore: auth color updated and remove unused tokens

* chore: god-mode brand revamp

* fix: space app spinner logo
2025-08-11 18:46:23 +05:30
sriram veeraghantaandGitHub e7589fd427 [WEB-4660] chore: replace jsx element with react node (#3877)
* chore: replace jsx element with react node

* fix: jsx elements in ee components
2025-08-11 18:45:10 +05:30
NikhilandGitHub 22df0ecdc6 [WEB-4638] feat: command to fix duplicate issue sequences in workspace (#3882) 2025-08-11 18:44:49 +05:30
sriram veeraghantaandGitHub 047080a66f [WEB-4661] fix: move helpers file into utils #7568 2025-08-11 18:42:51 +05:30
sriram veeraghantaandGitHub a085c0ec62 [WEB-4660] chore: replace jsx element with react node (#7567)
* chore: replace jsx element with react node

* fix: review comments

* fix: tooltip types update

* fix: propel pacakge fix
2025-08-11 18:42:23 +05:30
NikhilandGitHub 1c4a523f8a chore: update lxml and xmlsec versions in base requirements (#3883) 2025-08-11 17:58:08 +05:30
Akshita GoyalandGitHub 50eec5850e [WEB-4659] chore: added enable/disable option for ai features (#3873)
* chore: added enable disable for ai features

* fix: copy

* fix: toast message

* fix: added translations + tracker elements
2025-08-11 15:43:43 +05:30
sriram veeraghantaandGitHub 2044f5521e Sync: Community Changes #3876 2025-08-11 01:10:36 +05:30
Sriram Veeraghanta 8dd4fee0be fix: merge conficts 2025-08-11 01:09:41 +05:30
SangeethaandGitHub 1ef30746a2 [WEB-4657] refactor: optimize project v2 endpoint and issue detail endpoint #7558 2025-08-11 00:56:15 +05:30
Sriram Veeraghanta e3deeb2b43 fix: minor wrapper order in provider 2025-08-11 00:55:11 +05:30
sriram veeraghantaandGitHub 62f85b8271 Sync: Community Changes #3875 2025-08-11 00:52:04 +05:30
Sriram Veeraghanta 2ff4107da5 fix: merge conflicts 2025-08-11 00:48:21 +05:30
Anmol Singh BhatiaandGitHub 37a844374e [WEB-4654] refactor: replace nprogress with bprogress and clean up unused code (#3869)
* refactor: replace nprogress with bprogress and clean up unused code

* chore: code refactor

* chore: code refactor

* chore: nprogress to bprogress migration ee changes
2025-08-11 00:37:58 +05:30
Anmol Singh BhatiaandGitHub 736296090e [WEB-4654] refactor: replace nprogress with bprogress and clean up unused code (#7559)
* refactor: replace nprogress with bprogress and clean up unused code

* chore: code refactor

* chore: code refactor
2025-08-11 00:37:35 +05:30
Henit ChobisaandGitHub 7099972b57 [SILO-442] fix: removed root directory unnecessary checks #3874 2025-08-08 20:08:28 +05:30
sriramveeraghanta 5483690d17 feat: make outbox table initiator id to null 2025-08-08 20:07:40 +05:30
Bavisetti NarayanandGitHub d51597c87c chore: reverted the module activity (#3872) 2025-08-08 18:09:39 +05:30
sriram veeraghantaandGitHub 693aabfbd6 feat: adding pi enabled to workspace features (#3870) 2025-08-08 17:58:49 +05:30
eef03e671e [WEB-4238] feat: event stream implementation (#3684)
* Pgtrigger and Outbox prototype

* feat: add event stream app with models and migrations

- Introduced the event_stream app with initial models: Outbox and IssueProxy.
- Implemented a PostgreSQL trigger for logging updates to issues.
- Added necessary migrations and updated settings to include the new app.

* refactor: migrate event publisher to event stream

- Updated imports in test files to reflect the new event_stream app structure.
- Removed the event_publisher app, including its models, migrations, and tests.
- Introduced MemorySafeOutboxEventListener and related service for handling outbox events.
- Added management command for starting the outbox event listener with memory safety.
- Implemented PostgreSQL triggers for outbox notifications in the new event_stream app.

* refactor: enhance issue serializer and event stream models

- Updated IssueSerializer and IssueCreateSerializer to manage assignees and labels more efficiently by calculating additions and removals instead of deleting all and re-adding.
- Introduced new proxy models for CycleIssue and ModuleIssue with corresponding PostgreSQL triggers for event handling.
- Refactored Outbox model to include entity type and ID for better event tracking.
- Removed outdated IssueProxy model and its associated triggers, streamlining the event stream architecture.

* chore: update base requirements for OpenSearch and add pika for RabbitMQ

- Retained django-opensearch-dsl version 0.7.0 in requirements.
- Added pika version 1.3.2 for RabbitMQ integration.

* refactor: update import paths for event stream listener

- Changed import statements in test_competitive_listeners.py, service.py, and listen_outbox_events.py to reflect the new module structure by removing the 'apiserver' prefix.

* feat: implement PostgreSQL LISTEN/NOTIFY listener for outbox events

- Added DatabaseConnection class to manage psycopg3 connections for LISTEN/NOTIFY.
- Introduced NotificationListener class to handle PostgreSQL NOTIFY messages and dispatch them to registered handlers.
- Updated Command class to utilize NotificationListener for listening to outbox events, replacing the previous restartable listener implementation.
- Improved error handling and logging throughout the listener process.

* feat: enhance event processing with advisory locks

- Implemented advisory lock mechanism to prevent concurrent processing of events.
- Added methods to acquire and release advisory locks in the DatabaseConnection class.
- Updated root_handler to fetch complete outbox data and mark events as processed only if all handlers succeed.
- Improved error handling and logging for event processing.

* fix: improve event logging and error handling in NotificationListener

- Updated event logging to include event ID for better traceability.
- Enhanced error handling in the command's handle method to log exceptions and maintain robustness during event listening.

* feat: add memory monitoring and auto-restart functionality to event listener

- Introduced MemoryMonitor class to track memory usage and event processing counts.
- Implemented automatic restarts for the NotificationListener based on memory and event limits.
- Enhanced command line options to configure memory limits, event limits, and memory check intervals.
- Improved logging for memory stats and event processing to aid in monitoring and debugging.

* feat: update local and production settings for event logging

- Introduced logging configuration for 'plane.event_stream' in both local and production settings to enhance event logging capabilities.

* chore: Implement async outbox polling mechanism with memory monitoring and event handling. Add management command for outbox poller and create necessary database migrations for outbox triggers and indexes.

* docs: Add comprehensive README for Event Stream system detailing architecture, components, configuration, usage, and performance tuning.

* feat: Enhance MongoDB integration with a singleton connection manager and implement outbox cleanup task for migrating records from PostgreSQL to MongoDB

* feat: Add asyncio support for tests and new test files for outbox polling

* Merge branch 'event-stream' of github.com:makeplane/plane-ee into event-stream

* refactor: Update event types in outbox triggers for cycle, issue, and module models; add IssueComment, IssueLink, and IssueRelation proxies with corresponding triggers

* refactor: Update import paths for JsonFormatter and consolidate OpenFeature imports; add unit tests for OutboxPoller and related classes

* refactor: Replace all_objects with objects in Outbox queries and update test fixtures for outbox records

* feat: Add daily outbox cleaner task to Celery and update type hint for MongoDB collection

* refactor: Enhance memory monitoring and outbox polling logic with improved logging and delay handling

* feat: Implement outbox triggers for issue, issue attachment, issue link, and issue relation models with dynamic event type determination

* chore: Remove obsolete files related to multiple listeners and competitive processing tests

* Delete service.py

* feat: Add outbox poller script to manage database migrations and process events with configurable parameters

* refactor: Optimize EpicCreateSerializer to handle initiative, assignee, and label updates with conflict management and improved logic for adding/removing related entities

* feat: Update issue proxy triggers for outbox events

- Removed the existing 'issue_outbox_update' trigger from the IssueProxy model.
- Added a new 'issue_outbox_update' trigger with enhanced logic to handle conversion events when the issue type changes.
- The new trigger captures updates and soft deletes, inserting appropriate events into the outbox.

* feat: Refactor issue proxy triggers and add new outbox event handling

- Removed and replaced existing triggers for IssueProxy, IssueAssigneeProxy, IssueLabelProxy, CycleIssueProxy, and ModuleIssueProxy.
- Introduced new triggers to handle outbox events for various issue-related actions, including creation, updates, and deletions.
- Enhanced logic for event type determination based on issue type, ensuring accurate event handling in the outbox.

* refactor: Update serializers to use ID fields for assignees and labels

- Changed the handling of assignees and labels in IssueCreateSerializer and EpicCreateSerializer to use ID fields instead of object references.
- Improved logic for determining assignees and labels to add or remove by using lists of IDs.
- Enhanced code readability with comments explaining the changes.

* feat: Enhance issue event handling in outbox triggers

- Updated triggers for IssueProxy, IssueAssigneeProxy, and IssueLabelProxy to determine event types based on issue type, including handling for epics.
- Introduced filtered data for outbox events to exclude description fields, improving data integrity and reducing unnecessary payload size.
- Enhanced logic for detecting changes during updates, ensuring only relevant changes are captured and processed.

* feat: implement connection pooling for outbox poller

- Introduced DatabaseConnectionPool class to manage async connection pooling using psycopg_pool.
- Enhanced outbox polling logic to utilize connection pooling for improved performance and resource management.
- Added health check and statistics retrieval methods for the connection pool.
- Updated outbox model and migration to include claimed_at field for better event tracking.
- Refactored tests to validate new connection pooling functionality.

* refactor: move MongoConnection to a new settings module and update imports

- Created a new mongo.py file to define the MongoConnection class for managing MongoDB connections.
- Updated the import path in outbox_cleaner.py to reference the new MongoConnection location.

* refactor: update import path for MongoConnection in outbox_cleaner.py

* chore: remove scout_apm from production settings and requirements

- Deleted scout_apm from the installed apps in production.py.
- Removed scout-apm dependency from base.txt requirements.

* feat: add claimed_at field to outbox events and update requirements

- Added claimed_at field to the outbox event model for enhanced event tracking.
- Updated outbox poller to handle claimed_at in event processing.
- Included django-pgtrigger in base.txt requirements for database trigger management.

* feat: enhance memory monitoring in outbox poller

- Updated MemoryMonitor to signal for restarts instead of exiting on memory limit exceedance.
- Added methods to check for restart requests and wait for restart signals.
- Improved outbox poller logic to handle memory monitoring more gracefully during processing.
- Ensured all claimed rows are processed before initiating a restart.

* feat: implement graceful shutdown handling in outbox poller

- Added GracefulShutdownHandler class to manage shutdown signals (SIGTERM, SIGINT, SIGQUIT).
- Integrated shutdown handling into the outbox poller to allow for graceful exits during processing.
- Updated polling logic to check for shutdown requests and clean up resources accordingly.
- Enhanced command help text to reflect new signal handling capabilities.

* Enhance outbox event handling by adding workspace and project IDs

- Updated the outbox cleaner to include `workspace_id` and `project_id` in the deletion process.
- Modified the outbox poller to handle new fields in event processing.
- Adjusted models and migrations to support the new fields in the outbox table.
- Updated tests to ensure proper handling of workspace and project IDs in outbox records.

* Merge branch 'preview' of github.com:makeplane/plane-ee into event-stream

* feat: add initiator_id field to Outbox model and update migration dependencies

* feat: add initiator_id to Outbox insertions across event stream models

- Updated Outbox insert statements in various models to include initiator_id.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure proper tracking of the user initiating changes.
- Enhanced event handling for soft deletes and regular updates to maintain consistency in data tracking.

* feat: include initiator_id in OutboxEvent model and database interactions

- Added initiator_id field to the OutboxEvent model for enhanced tracking.
- Updated database queries in outbox_poller.py to include initiator_id in insertions.
- Ensured consistency in data handling across event stream components.

* refactor: update handle_row function to use OutboxEvent model

- Changed the parameter type of handle_row from Dict to OutboxEvent for better type safety.
- Updated logging to utilize the to_dict method of OutboxEvent for consistent event data representation.

* feat: enhance Outbox model with initiator type and update related logic

- Added initiator_type field to the Outbox model to track the type of event initiator.
- Introduced InitiatorTypes enum for better clarity and management of initiator types.
- Updated OutboxEvent model and related methods to include initiator_type for consistent event data representation.
- Adjusted database interactions across event stream models to accommodate the new initiator_type field.

* feat: add initiator_type to Outbox insertions across event stream models

- Updated Outbox insert statements in various models to include initiator_type for better tracking of event initiators.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure consistent handling of initiator_type during event processing.
- Enhanced event handling for both soft deletes and regular updates to maintain data integrity and tracking.

* feat: update event stream triggers to use After timing for improved consistency

- Changed trigger timing from Before to After for various event stream models including CycleIssueProxy, IssueProxy, and IssueAssigneeProxy to ensure that outbox updates reflect the final state of the entities.
- Enhanced logic in triggers to include previous attributes for better tracking of changes during updates.
- Adjusted related logic in IssueLabelProxy and IssueCommentProxy to maintain consistency across event handling.

* feat: enhance bulk update task with transaction management and initiator type

- Wrapped bulk creation of issue relations and parent ID updates in a transaction to ensure atomicity.
- Set the initiator type to 'SYSTEM.IMPORT' for both bulk creation and updates to improve tracking of operations.
- Improved database interaction by using a connection cursor for executing SQL commands.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-08-08 17:33:05 +05:30
5b65d15436 [WEB-4393] feat: recurring work item (#3668)
* chore: crud operations for recurring work item

* chore: added perodic task for recurring work item

* chore: removed the error statement

* fix: bg task for labels

* chore: added recurring work item model

* chore: added null field for recurring work item log

* feat: recurring work items UI

* chore: added activities for recurring task

* feat: add interval type to recurring work item form

* chore: updated the cront expression

* chore: minor updates for recurring work item serializer and interval type

* chore: removed the seconds calculation

* chore: added task fk to activity table

* improvement: interval dropdown width

* fix: start date validation

* chore: added created at for activity

* feat: add recurring work item activity logic

* chore: updated the migration file

* chore: update the activity for recursive task

* chore: deleteing the recurring task permanantely

* improvement: recurring work item activity helpers

* fix: recurring work item custom properties data preloading

* improvement: minor UI enhancements

* improvement: recurring work item activity helpers

* fix: init loader logic

* Use the right field namewhile creating activity

* chore: add hourly and minutly interval types for testing

* Added test intervals for debugging

* chore: update the periodic task to set null

* chore: added activity for recurring work item properties

* chore: updated the description activity

* chore: removed the fields

* chore: updated the type activity

* chore: added property in the model

* remove temporary minutly and hourly interval types from recurring work items

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-08-08 16:21:22 +05:30
guru_sainathandGitHub fd9fbb426d [MOBIL-1094] dev: Handle intake work item detail retrieval using work item ID #3838 2025-08-08 00:50:40 +05:30
guru_sainathandGitHub c7c66fec2d [MOBIL-1096] dev: Implement intake search functionality #3837 2025-08-08 00:50:19 +05:30
guru_sainathandGitHub 95b791ed93 [MOBIL-1095] fix: Resolve intake filters by updating relation key #3836 2025-08-08 00:49:56 +05:30
Surya PrashanthandGitHub cf543807ac [SILO-437] chore: fix types for external apis (#3839) 2025-08-08 00:49:36 +05:30
Vamsi KrishnaandGitHub 995c17c645 [WEB-4641]chore: storing app rail preference in backend (#3850)
* chore: add functionality to store app rail preference in backend

* chore: updated toggle handler

* chore: user update refactor

* chore: moved app rail toggle to me/profile endpoint
2025-08-08 00:18:04 +05:30
guru_sainathandGitHub 1db6eebcf7 [MOB-1094] dev: Update iOS deep links configuration and handling (#3864)
* dev: updated the permission links for deeplink permissions

* dev: updated app site association
2025-08-08 00:15:38 +05:30
sriram veeraghantaandGitHub a6173fc842 feat: include celery importers queue (#3865) 2025-08-07 23:51:33 +05:30
Vamsi KrishnaandGitHub 53aa2feec0 [WEB-4609]fix: email template logo width #3860 2025-08-07 17:43:16 +05:30
sriramveeraghanta 7bb466caa6 fix: remove unused packages 2025-08-07 15:36:34 +05:30
Vamsi KrishnaandGitHub c8cad59f7e [WEB-4625] fix: fixed loader position for pages #3858 2025-08-07 13:53:05 +05:30
sriram veeraghantaandGitHub 20c9701a92 Sync: Community Changes #3857 2025-08-07 01:11:32 +05:30
Anmol Singh Bhatia 0f10e9574c fix: build error 2025-08-07 01:10:34 +05:30
Anmol Singh Bhatia 491b4ea9bb fix: sync merge conflict 2025-08-07 00:38:25 +05:30
Akshita GoyalandGitHub d0de29e70c [PAI-652]: chore refactor pi sse (#3830)
* chore: Handled SSE using EventSource

* fix: handled scroll button

* fix: filter css

* fix: removed additional handling

* fix: tables in markdown
2025-08-07 00:06:34 +05:30
Akshita GoyalandGitHub fd8c7c1cf6 [WEB-4642] fix: sidebar item refactor (#3835)
* fix: sidebar item refactored

* fix: abstracted sidebar-item redundant code
2025-08-07 00:06:12 +05:30
Anmol Singh BhatiaandGitHub 3cdd83a827 [WEB-4488] chore: plane logo updated #3853 2025-08-07 00:05:45 +05:30
Anmol Singh BhatiaandGitHub bc9b958daf [WEB-4551] fix: disabled workspace layout (#3854)
* fix: disabled workspace layout

* chore: code refactor
2025-08-07 00:05:18 +05:30
Vipin ChaudharyandGitHub 5baa6d92f6 [WIKI-583] : Fix math HTML parser (#3855)
* fix: block html parser

* ui : add scroll bar

* refactor: fix id

* fix : uuid

* fix : remove extra padding
2025-08-07 00:05:01 +05:30
Vamsi KrishnaandGitHub 9de5b1a009 [WEB-4634]chore: refactor for work items store (#7538)
* chore: refactor for work items store

* chore: updated conditions order
2025-08-06 22:44:33 +05:30
21c59692f9 [WEB-4635] fix: space auth screen re-loading issue (#7551)
* fix: prevent auth redirect on window focus

* fix: space auth screen re-loading issue.

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-06 22:32:52 +05:30
Vamsi KrishnaandGitHub 806619d73f [WEB-4645]chore: added event trackers for labels #7552 2025-08-06 22:29:55 +05:30
c5e5454265 [WEB-4650] fix: email template logo updated #7553
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-08-06 22:27:59 +05:30
Akshita GoyalandGitHub 3972b6639f [WEB-4632] fix: sidebar item refactored #7539 2025-08-06 22:26:47 +05:30
51e146f8ca [WEB-4488] feat: brand revamp (#7544)
* chore: empty state asset and theme improvement (#7542)

* chore: empty state asset and theme improvement

* chore: upgrade modal improvement and code refactor

* feat: onboarding revamp and theme changes (#7541)

* refactor: consolidate password strength indicator into shared UI package

* chore: remove old password strength meter implementations

* chore: update package dependencies for password strength refactor

* chore: code refactor

* chore: brand logo added

* chore:  terms and conditions refactor

* chore: auth form refactor

* chore: oauth enhancements and refactor

* chore: plane new logos added

* chore: auth input form field added to ui package

* chore: password input component added

* chore: web auth refactor

* chore: update brand colors and remove onboarding-specific styles

* chore: clean up unused assets

* chore: profile menu text overflow

* chore: theme related changes

* chore: logo spinner updated

* chore: onboarding constant and types updated

* chore: theme changes and code refactor

* feat: onboarding flow revamp

* fix:  build error and code refactoring

* chore: code refactor

* fix: build error

* chore: consent option added to onboarding and code refactor

* fix: build fix

* chore: code refactor

* chore: auth screen revamp and code refactor

* chore: onboarding enhancements

* chore: code refactor

* chore: onboarding logic improvement

* chore: code refactor

* fix: onboarding pre release improvements

* chore: color token updated

* chore: color token updated

* chore: auth screen line height and size improvements

* chore: input height updated

* chore: n-progress theme updated

* chore: theme and logo enhancements

* chore: space auth and code refactor

* chore: update new brand empty states (#7543)

* [WEB-4585]chore: branding updates (#7540)

* chore: updated logo, og image, and loaders

* chore: updated branding colors

* chore: tour modal logo

* chore: updated logo spinner size

* chore: updated email templates logos and colors

* chore: code refactor

* fix: removed conditional hook render

* fix: space app loader

---------

Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-08-06 22:24:47 +05:30
Bavisetti NarayanandGitHub b5ebf625ee [WEB-4393] chore: added recurring work item activity model (#3847)
* chore: added recurring work item activity model

* chore: added a better description
2025-08-06 19:52:17 +05:30
Henit ChobisaandGitHub 0a6f160530 chore: bumped up fiber version for vulnerability (#3852) 2025-08-06 15:42:22 +05:30
Vipin ChaudharyandGitHub bcea9a66ab [WIKI-485] refactor: remove upgrade button (#3851)
* refactor:remove upgrade button

* refactor: remove slash command
2025-08-06 15:32:16 +05:30
sriram veeraghantaandGitHub 4ddb2ddb88 [PRIME-16] fix: update register instance command to use app version from ENV #3848 2025-08-06 00:39:57 +05:30
NikhilandGitHub fc25ed6012 [WEB-4638]feat: add management command to fix duplicate issue sequences in a project #3843 2025-08-06 00:00:50 +05:30
Akshita GoyalandGitHub e0e16e24bf [PAI-666] feat: added favorite + rename + delete options for pi #3846 2025-08-05 23:47:03 +05:30
7eb91397b0 [WIKI-485] feat: math extension (#3639)
* feat: math extension base setup

* refactor: update math components

* feat: feature flag math extension

* refactor: rename

* fix : handle selection

* refactor: update styles

* refactor: update types

* refactor: math extension namings

* refactor: math extension

* refactor : remove flagged state

* feat: feature flagged

* feat: update upgrade modal

* refactor : upgrade modal hook

* fix : conflict

* chore: enable for testing

* refactor : math node view

* refactor : changes files name

* refactor : better name for katexDiv

* refactor : rename content

* fix :feature flag

* refactor : add types

* refactor: change files names

* refactor : update extension name

* refactor : math attribute

* refactor : input rules

* refactor : math commands

* refactor : rename commands

* refactor: input modal

* refactor : add input types

* refactor : create math input

* refactor: mathematics extension

* refactor : math extension names

* styles : add shrink

* refactor : math extension folder structure

* refactor: extension rename

* refactor : names

* refactor: update types

* refactor: comments

* feat: copy paste markdown handler

* feat: space feature flag

* feat: handle copy paste

* refactor: update math tags

* fix: loading katex css and repeated validations

* refactor: update math modal logic

* refactor: update floating modal

* refactor : remove unused code

* chore : remove logs

* feat: add transition  in modal

* refactor : remove unused attrs

* feat: add check for last node

* refactor : block math

* fix : dev wiki

* feat: handle preview

* refactor : flags

* refactor: editor container

* refactor: update storage

* refactor : remove hover logic

* refactor : remove floating container

* refactor: floating UI

* refactor: remove onClick handler

* refactor : add import comments

* refactor: update storage type

* refactor: update names

* refactor: update default flagging

* refactor :types

* refactor : update storage method

* refactor : update types

* --wip-- [skip ci]

* refactor: update disabled extension

* refactor: remove core changes

* refactor: remove rich disabled

* refactor : remove wiki changes

* feat: add check for editable editor

* chore: update styles based on editable

* refactor : update types

* feat: fix block view padding

* refactor: update upgrade modal text

* feat: handle inline block styles

* refactor: use call back for memo

* refactor: update styles

* refactor: update slash command

* refactor: make input row bigger

* refactor: update types

* refactor : update upgrade content

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-08-05 23:45:48 +05:30
Henit ChobisaandGitHub 9c0831e17e [SILO-438] fix: slack plane logo changed to plane media logo #3844 2025-08-05 20:22:32 +05:30
Anmol Singh BhatiaandGitHub c6e27ab19e [WEB-4629] chore: button disabled state and user avatar theme (#3840)
* chore: button disabled state updated

* chore: beta badge updated

* chore: code refactor
2025-08-05 18:04:40 +05:30
pushya22andGitHub 3a8c408286 Sync: Community Changes #3842 2025-08-05 18:04:11 +05:30
DanciaandGitHub 6450793d72 docs: updated README images (#7547) 2025-08-05 17:24:33 +05:30
Akshita GoyalandGitHub a3502cab59 [WEB-4632] fix: your-work accessibility #3834 2025-08-04 22:30:29 +05:30
Jayash TripathyandGitHub 9b5c1ba9d6 [WEB-4631] feat: implement epic enable/disable tracking (#3829)
* [WEB-4631] feat: implement epic enable/disable tracking

* refactore: update yarn.lock
2025-08-04 20:15:11 +05:30
Aaryan KhandelwalandGitHub 98c77e4d4c Open [WIKI-578] regression: space app build #3833 2025-08-04 20:14:21 +05:30
Surya PrashanthandGitHub f011aca8e2 [SILO-436] chore: add error logs for silo slack flow (#3821) 2025-08-04 20:11:00 +05:30
pushya22andGitHub 501d0dbb9d Sync: Community Changes #3832 2025-08-04 20:10:33 +05:30
pushya22andGitHub b0f583989e Sync: Community Changes #3831 2025-08-04 20:07:08 +05:30
Akshita GoyalandGitHub dffe3a844f [WEB-4632] chore: pinned your work to the sidebar #7537 2025-08-04 20:06:03 +05:30
Aaryan Khandelwal 78afdb2678 fix: merge conflicts resolved from preview 2025-08-04 20:03:37 +05:30
pushya22andGitHub bb09d06443 Sync: Community Changes #3825 2025-08-04 19:36:50 +05:30
Aaryan KhandelwalandGitHub 7ead606798 [WIKI-578] refactor: editor types structure #7536 2025-08-04 18:01:51 +05:30
Vamsi KrishnaandGitHub babbcfe667 [WEB-4630] fix: mutation issue for scope epics in timeline view #3827 2025-08-04 17:26:34 +05:30
Aaryan Khandelwal 081a59c93a fix: merge conflicts resolved from preview 2025-08-04 16:42:58 +05:30
Vamsi KrishnaandGitHub 2f0438d876 [WEB-4610]fix: Inconsistent checkbox colour in Work item selection #3826 2025-08-04 16:24:38 +05:30
fa150c2b47 [WIKI-576] fix: trail node (#7527)
* fix : trail node

* remove flagged

* refactor : add disable flagging

* refactor:update disabled extension

* refactor: additional disabled

* refactor: update enum

* chore: add description key to page response type

* chore: update base page instance

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-08-04 16:12:46 +05:30
c3273b1a85 [WIKI-568] refactor: add touch device support to editor (#7439)
* refactor: add isTouchDevice prop

* chore: handle event propagation in touch devices

* refactor: isTouchDevice implementation

* chore: misc editor updates and utility functions (#7455)

* chore: misc editor updated and utility functions

* fix: code review

* passed isTouchDevice prop to editor-wrapper

* added more props to editor-wrapper.

* chore: update types

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>

* fix: remove unnecessary deps

---------

Co-authored-by: Lakhan Baheti <94619783+1akhanBaheti@users.noreply.github.com>
2025-08-04 16:04:09 +05:30
M. PalanikannanandGitHub 65e400f449 [WIKI-540] fix: sidebar sections should be open while opening wiki #3790 2025-08-04 15:34:38 +05:30
Aaryan KhandelwalandGitHub a22d26bf1e [WIKI-537] chore: use description json to render content (#3822)
* chore: use description json to render content

* chore: update base page instance
2025-08-04 15:34:05 +05:30
Vamsi KrishnaandGitHub 39eeff37d7 [WEB-4615] chore: updated empty states for drafts and archives #3823 2025-08-04 15:31:57 +05:30
pushya22andGitHub 018f45a16e Sync: Community Changes #3824 2025-08-04 15:31:16 +05:30
Bavisetti NarayanandGitHub 7cec92113f [WEB-4628] chore: return 200 response for work item comment #7532 2025-08-04 15:27:05 +05:30
Vipin ChaudharyandGitHub 8cc513ba5e [WIKI-577] fix: unexpected emoji input (#7534)
* fix: unexpected emoji input

* update array
2025-08-04 15:21:10 +05:30
Vamsi KrishnaandGitHub 04e91cbaff [WEB-4617] fix: empty states (#3819)
* fix: exports empty states

* fix: read replica fix
2025-08-01 20:57:54 +05:30
bba04a384b [WEB-4539] chore: updated tour modal colors (#3817)
* chore: updated tour modal colors

* chore: upgrade screen gradient color

* chore: code refactor

* chore: updated avatar to workspace

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-08-01 20:06:23 +05:30
Anmol Singh BhatiaandGitHub 96d470dc63 [WEB-4623] chore: upgrade modal improvement and code refactor (#3815)
* chore: space app auth screen oauth

* chore: product update modal logo

* chore: code refactor

* chore: code refactor
2025-08-01 19:43:14 +05:30
Vamsi KrishnaandGitHub d41758e73e [WEB-4622] chore: updated tour modal #3814 2025-08-01 19:20:25 +05:30
Anmol Singh BhatiaandGitHub 7082653706 [WEB-4617] chore: empty state asset and theme improvement (#3813)
* chore: mobile auth screen improvements

* chore: project search empty state asset

* chore: empty state updated

* chore: code refactor

* chore: empty state updated
2025-08-01 18:47:04 +05:30
pushya22andGitHub 897a399bf3 Sync: Community Changest #3811 2025-08-01 18:42:17 +05:30
P BandGitHub 784b8da9be docs: update README.md (#7531)
changed tagline
2025-08-01 18:19:02 +05:30
Anmol Singh BhatiaandGitHub 31bbde298c [WEB-4541] chore: space auth and code refactor (#3810)
* chore: auth create step enhancements

* chore: onboarding enhancements

* chore: space app auth and brand revamp and code refactoring
2025-08-01 18:06:39 +05:30
Prateek ShouryaandGitHub 30854c4f33 [WEB-4618] improvement: seat management checks and invite restriction enhancements for cloud changes (#3812) 2025-08-01 18:05:54 +05:30
1d443310ce feat: update new logo on readme (#7530)
* feat: update new logo on readme

Changed logo on Readme

* fix: image url

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-08-01 17:32:34 +05:30
Vamsi KrishnaandGitHub a8cfd408b2 [WEB-4617] chore:settings empty states (#3809)
* chore: updated empty states for settings

* chore: updated updates image
2025-08-01 17:08:32 +05:30
Vamsi KrishnaandGitHub 22d15b918d [WEB-4619] fix: project empty states #3808 2025-08-01 16:59:55 +05:30
Vamsi KrishnaandGitHub d1039554da [WEB-4617]chore: settings empty states (#3807)
* chore: updated workspace empty states

* chore: updated empty states for stickies and widgets

* updated empty state for dashboard widgets empty states

* chore: upadted stickies dark image

* chore: added empty states at project level features
2025-08-01 16:16:42 +05:30
Anmol Singh BhatiaandGitHub e1e33fef2d [WEB-4598] chore: theme and logo enhancements (#3806)
* chore: create and invite workspace screen improvements

* chore: profile step improvements and avatar color updated

* chore: code refactor
2025-08-01 15:33:39 +05:30
Vamsi KrishnaandGitHub c7e9ba861e [WEB-4616] chore: added empty states for project level features #3805 2025-08-01 15:17:14 +05:30
Vamsi KrishnaandGitHub e743ee9ed6 [WEB-4615] chore: updated workspace level empty states (#3804)
* chore: updated workspace empty states

* chore: updated empty states for stickies and widgets

* updated empty state for dashboard widgets empty states

* chore: upadted stickies dark image
2025-08-01 14:16:28 +05:30
Anmol Singh BhatiaandGitHub 4b7038895a [WEB-4614] chore: n progress theme #3803 2025-08-01 14:11:29 +05:30
Anmol Singh BhatiaandGitHub 6c9fff1331 [WEB-4613] chore: mobile auth and minor improvements (#3801) 2025-08-01 13:45:11 +05:30
Vamsi KrishnaandGitHub 14297cef00 [WEB-4609] chore: updated logo and colours for email templates #3800 2025-07-31 21:09:34 +05:30
Akshita GoyalandGitHub 6063cecaf9 [PAI-638] chore: updated logo + removed swr referesh properties #3796 2025-07-31 20:20:33 +05:30
Akshita GoyalandGitHub 43e15931a8 [PAI-614] chore: added scroll button for long pi chats #3797 2025-07-31 20:19:34 +05:30
Vamsi KrishnaandGitHub 2c75be5f5e [WEB-4598] chore: branding updates (#3798)
* chore: updated logo for worksapce badge

* chore: logo spinner size adjustment

* chore: sidebar color revert
2025-07-31 19:33:07 +05:30
Anmol Singh BhatiaandGitHub c383e7f1c9 [WEB-4598] fix: onboarding pre release fixes 2025-07-31 19:22:03 +05:30
Saurabh KumarandGitHub a9c3595c2c [SILO-430] Bug: Fix name max length issue in data import task #3795 2025-07-31 17:04:52 +05:30
Vamsi KrishnaandGitHub f53819c829 [WEB-4488]chore: branding updates (#3766)
* chore: updated logo, og image, and loaders

* chore: updated brand colors

* chore: added mobile pwa icon
2025-07-31 17:03:57 +05:30
Anmol Singh BhatiaandGitHub 49adb58ceb [WEB-4488] feat: onboarding revamp (#3770)
* refactor: consolidate password strength indicator into shared UI package

* chore: remove old password strength meter implementations

* chore: update package dependencies for password strength refactor

* chore: code refactor

* chore: brand logo added

* chore:  terms and conditions refactor

* chore: auth form refactor

* chore: oauth enhancements and refactor

* chore: plane new logos added

* chore: auth input form field added to ui package

* chore: password input component added

* chore: web auth refactor

* chore: update brand colors and remove onboarding-specific styles

* chore: clean up unused assets

* chore: profile menu text overflow

* chore: theme related changes

* chore: logo spinner updated

* chore: onboarding constant and types updated

* chore: theme changes and code refactor

* feat: onboarding flow revamp

* fix:  build error and code refactoring

* fix: build error

* chore: consent option added to onboarding and code refactor

* fix: build fix

* chore: code refactor

* chore: auth screen revamp and code refactor

* chore: color token related changes

* chore: onboarding enhancements

* chore: code refactor

* chore: onboarding logic improvement

* chore: code refactor
2025-07-31 16:55:47 +05:30
Dheeraj Kumar KetireddyandGitHub 4441ec79a2 [WEB-4606] chore: remove duplicates from workitem type project_ids list #3789 2025-07-31 13:40:13 +05:30
Akshat JainandGitHub b8d9881fc8 [INFRA-220] fix: update Dockerfile for proxy service #3792 2025-07-31 13:35:44 +05:30
Dheeraj Kumar KetireddyandGitHub 3d23ea516a [WEB-4607] fix: update parameter usage in IssuePropertyOptionDetailAPIEndpoint #3791 2025-07-31 13:35:17 +05:30
pushya22andGitHub e7e10b0464 Sync: Community Changes #3793 2025-07-31 13:32:17 +05:30
Akshat JainandGitHub cc49a2ca4f [INFRA-219] fix: update Dockerfile and docker-compose for proxy service (#7523)
* fix: update Dockerfile and docker-compose for version v0.28.0 and improve curl commands in install script

* fix: update docker-compose to use 'stable' tag for all services

* fix: improve curl command options in install script for better reliability
2025-07-31 13:27:34 +05:30
sriram veeraghantaGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
ee53ee33d0 Potential fix for code scanning alert no. 631: Incomplete URL scheme check (#7514)
* Potential fix for code scanning alert no. 631: Incomplete URL scheme check

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* fix: ignore warning in this file

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-07-31 13:23:59 +05:30
pushya22andGitHub cb105995ea Sync: Community Changes #3788 2025-07-31 13:14:04 +05:30
sriram veeraghantaandGitHub 99f9337f35 fix: enable email notification by default for new users (#7521) 2025-07-31 13:02:41 +05:30
sriram veeraghantaandGitHub 1458c758a3 fix: adding proxy command in compose file #7518
fix: adding proxy command in compose file
2025-07-30 21:01:34 +05:30
sriramveeraghanta 2d9988f584 fix: adding proxy command 2025-07-30 21:00:16 +05:30
SangeethaandGitHub 27fa439c8d [WEB-4602] fix: 500 error on draft wi labels update #7515 2025-07-30 20:18:48 +05:30
459e37c0c0 [WEB-4606] improvement: optimize work item types and epic types endpoints (#3786)
* improvement: remove `issues_exists` property from work item types.

* Optimizations for issue type and epic type endpoints

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-30 19:54:19 +05:30
sriram veeraghantaandGitHub 98a6ff254e fix: work item external api endpoint fix (#3785) 2025-07-30 18:55:57 +05:30
Prateek ShouryaandGitHub a60e88768d [WEB-4604] fix: build error related to event tracker. #3784 2025-07-30 18:13:22 +05:30
Prateek ShouryaandGitHub 76dee7cbcc [WEB-4604] feat: add missing posthog events for project grouping, trial and upgrade. (#3783) 2025-07-30 17:46:22 +05:30
0f66c8d7b1 [WEB-4601] fix: added observer to the ExtendedAppHeader (#3779)
* fix: added observer to the ExtendedAppHeader

* fix: added observer to ExtendedAppHeader

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-30 17:38:25 +05:30
sriram veeraghantaandGitHub 2750c37050 Sync: Community Changes #3778 2025-07-30 17:35:47 +05:30
sriramveeraghanta 4afdc6124c fix: merge conflicts 2025-07-30 17:35:12 +05:30
sriramveeraghanta 57935a94cc fix: header observer for state changes 2025-07-30 17:24:40 +05:30
Vamsi KrishnaandGitHub 876ccce86b [WEB-4597] fix: project icon render in switcher #7504 2025-07-30 17:18:18 +05:30
NikhilandGitHub a67dba45f8 [WEB-4599] feat: add marketing email consent field to Profile model and timezone migration #7510 2025-07-30 17:17:16 +05:30
Prateek ShouryaandGitHub ef8e613358 [WEB-4603] feat: add missing event trackers (#7513)
* feat: add event trackers for password creation

* feat: add event trackers for project views

* feat: add event trackers for product updates and changelogs

* chore: use element name instead of event name for changelog redirect link
2025-07-30 17:15:59 +05:30
sriramveeraghanta c4d2c5b1bb sync: canary changes to preview 2025-07-30 15:44:41 +05:30
Bavisetti Narayanandsriramveeraghanta d4705e1649 [WEB-4544] chore: added field validations in serializer (#7460)
* chore: added field validations in serializer

* chore: added enum for roles
2025-07-30 15:41:44 +05:30
RishiandGitHub 8228ecc087 fix(cli): improve API service readiness check in install script (#7468)
* fix: improve API service readiness check in install script

* fix(cli): correct python indentation in api health check

* fix(cli): prevent false positive api ready message on timeout
2025-07-30 15:08:30 +05:30
pushya22andGitHub b6edcc8357 Sync: Community Changes #3777 2025-07-30 15:07:29 +05:30
Aaryan KhandelwalandGitHub ce08c9193c [WIKI-573] regression: comment card padding #7512 2025-07-30 15:02:55 +05:30
69d5cd183f chore: added validation for description (#7507)
* added PageBinaryUpdateSerializer for binary data validation and update

* chore: added validation for description

* chore: removed the duplicated file

* Fixed coderabbit comments

- Improve content validation by consolidating patterns and enhancing recursion checks

- Updated `PageBinaryUpdateSerializer` to simplify assignment of validated data.
- Enhanced `content_validator.py` with consolidated dangerous patterns and added recursion depth checks to prevent stack overflow during validation.
- Improved readability and maintainability of validation functions by using constants for patterns.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-30 14:19:49 +05:30
pushya22andGitHub beb1a8454f Sync: Community Changes #3776 2025-07-30 14:14:02 +05:30
Aaryan KhandelwalandGitHub 6e1734c86e [WIKI-570] fix: image alignment for read only editor #7509 2025-07-30 14:12:33 +05:30
pushya22andGitHub 44a474f694 Sync: Community Changes #3775 2025-07-30 13:19:36 +05:30
Aaryan Khandelwal 991908f6a6 fix: merge conflicts resolved from preview 2025-07-30 13:17:02 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
05f56d04ba chore(deps): bump linkifyjs in the npm_and_yarn group across 1 directory (#7506)
Bumps the npm_and_yarn group with 1 update in the / directory: [linkifyjs](https://github.com/nfrasser/linkifyjs/tree/HEAD/packages/linkifyjs).


Updates `linkifyjs` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/nfrasser/linkifyjs/releases)
- [Changelog](https://github.com/nfrasser/linkifyjs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nfrasser/linkifyjs/commits/v4.3.2/packages/linkifyjs)

---
updated-dependencies:
- dependency-name: linkifyjs
  dependency-version: 4.3.2
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 13:12:00 +05:30
Aaryan KhandelwalandGitHub 3f60f14bb1 [WIKI-539] regression: toolbar visible in comments card #7508 2025-07-30 13:11:56 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7f58520424 chore(deps): bump linkifyjs in the npm_and_yarn group across 1 directory (#3774)
Bumps the npm_and_yarn group with 1 update in the / directory: [linkifyjs](https://github.com/nfrasser/linkifyjs/tree/HEAD/packages/linkifyjs).


Updates `linkifyjs` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/nfrasser/linkifyjs/releases)
- [Changelog](https://github.com/nfrasser/linkifyjs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nfrasser/linkifyjs/commits/v4.3.2/packages/linkifyjs)

---
updated-dependencies:
- dependency-name: linkifyjs
  dependency-version: 4.3.2
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 02:26:05 +05:30
Vamsi KrishnaandGitHub f0052f3d5f [WEB-4594]fix: removed redundant emoji picker #3768 2025-07-29 23:31:01 +05:30
Aaryan KhandelwalandGitHub 938b61266f [WIKI-539] regression: editor build errors #3773 2025-07-29 19:40:36 +05:30
pushya22andGitHub bc975ae184 Sync: Community Changes #3772 2025-07-29 19:22:01 +05:30
pushya22andGitHub 6b798ae1f7 Sync: Community Changes #3771 2025-07-29 19:18:36 +05:30
Bavisetti NarayanandGitHub 52ccc99067 [WEB-4557] fix: remove intake work item from work item search (#3733) 2025-07-29 19:15:06 +05:30
Aaryan KhandelwalandGitHub e0b0aafc2b [WIKI-539] regression: editor build errors #7503 2025-07-29 19:10:39 +05:30
Aaryan Khandelwal 7180570c4a fix: merge conflicts resolved from preview 2025-07-29 19:08:48 +05:30
1e6640cb4b [WEB-4583]feat: enhanced search comments (#3764)
* chore: added comment

* feat: enhance IssueCommentDocument and search functionality

- Added new fields: issue_title, issue_sequence_id, and issue_type_id to IssueCommentDocument.
- Updated IssueCommentSearchSerializer to include the new fields and changed comment to a SerializerMethodField for better handling of highlighted comments.
- Modified EnhancedGlobalSearchEndpoint to retrieve the new fields and implement highlighting for comments in search results.

* Update IssueCommentDocument and serializers for improved search functionality

- Enhanced IssueCommentDocument by adding an analyzer to the comment field and renaming issue_title to issue_name.
- Updated multiple serializers to make fields like type_id and logo_props optional.
- Improved IssueCommentSearchSerializer to handle highlights more effectively and renamed issue_title to issue_name.
- Adjusted EnhancedGlobalSearchEndpoint to reflect the changes in field names and modified comment highlighting settings.

* feat: integrated apis for wroksapce-search

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-29 19:06:56 +05:30
Akshita GoyalandGitHub ce7d365b32 [PAI-646] fix: fixed fetch issue on chat switch (#3769)
* fix: fixed fetch issue on chat switch

* fix: refactor
2025-07-29 18:10:38 +05:30
Aaryan KhandelwalandGitHub e0fa6553ae [WIKI-539] refactor: remove lite text read only editor (#7481)
* refactor: remove lite text read only editor

* chore: update types
2025-07-29 18:09:39 +05:30
Bavisetti NarayanandGitHub 3f7a6b21f0 [WEB-4593] chore: added assignee to work item from project template (#3767) 2025-07-29 17:13:37 +05:30
sriram veeraghantaandGitHub 0e401d833c Sync: Community Changes #3765 2025-07-29 12:22:41 +05:30
sriramveeraghanta 690621009a fix: merge conflicts 2025-07-29 12:22:11 +05:30
Vamsi KrishnaandGitHub 55f06cf546 [WEB-4563]fix: image full screen modal #7491 2025-07-28 19:55:13 +05:30
84879ee3bd [WEB-4533] feat: read replica functionality (#7453)
* feat: read replica functionality

* fix: set use_read_replica to false

* chore: add use_read_replica to external APIs

* chore: remove use_read_replica on read endpoints

* chore: remove md files

* Updated all the necessary endpoints to use read replica

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-28 17:41:02 +05:30
sriram veeraghantaandGitHub 7b52f739f7 Sync: Community Changes #3763 2025-07-28 12:58:40 +05:30
Sriram Veeraghanta b1162395ed sync: canary into preview 2025-07-28 12:53:16 +05:30
Sriram Veeraghanta b93883fc14 chore: version upgrade 2025-07-28 12:51:19 +05:30
sriram veeraghantaandGitHub ebf08d9b20 Sync: Community Changes #3762 2025-07-28 12:42:42 +05:30
NikhilandGitHub 4913c116d1 chore: correct migration file 0098 (#7486)
* feat: restore background color and goals fields in Profile and Workspace models in migration 0099

* chore: update migration dependency to reflect recent changes in profile model migrations
2025-07-28 12:32:47 +05:30
sriram veeraghantaandGitHub 24262ab9fa Sync: Community Changes #3761 from makeplane/sync/ce-ee 2025-07-27 21:14:06 +05:30
NikhilandGitHub 2e0ca9deec Merge branch 'preview' into sync/ce-ee 2025-07-27 21:13:31 +05:30
NikhilandGitHub 4044ce25ce [WEB-4566] feat: add background color and goals field to Profile and Workspace models #7485 2025-07-27 21:10:31 +05:30
f0a7a68ead [WEB-4405] feat: integrations and connections events #3616
Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-07-26 17:58:36 +05:30
bb019e921e [WEB-4405] chore: importers + worklogs + initiatives settings event tracker #3620
* feat: importers + wprklogs + initiatives settings events

* fix: lint

---------

Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-07-26 17:50:28 +05:30
51f1b7d069 [WEB-4405]chore: added event trackers for workflows #3624
Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
2025-07-26 17:46:51 +05:30
Sriram Veeraghanta 8e363119e7 fix: lock file updates 2025-07-26 17:38:39 +05:30
NikhilandGitHub 0703778ae0 [WEB-4562] feat: enhance workitem template endpoints (#3742)
* feat: enhance workitem template endpoints with feature flag and detailed retrieval

- Added feature flag check for the SubWorkitemTemplateEndpoint.
- Updated WorkitemProjectTemplateEndpoint to support fetching a specific template by primary key (pk) with prefetching of related workitem templates.

* feat: add 404 error handling for missing templates in WorkitemProjectTemplateEndpoint
2025-07-25 18:24:02 +05:30
SangeethaandGitHub c4568ca2c8 [WEB-4564] refactor: initiative analytics issues count (#3744)
* refactor: issues_count function

* fix: print statement
2025-07-25 18:23:38 +05:30
Saurabh KumarandGitHub 9663fcb172 [SILO-417] Allow to uncheck states in PR mapping #3748 2025-07-25 18:23:17 +05:30
SangeethaandGitHub a1d558623c [WEB-4483] fix: wi type icon in gantt view (#3755)
* fix: type_id in issue-detail endpoint

* fix: unused annotations

* fix: comments

* chore: remove prefetch_related

* chore: remove if condition
2025-07-25 17:04:18 +05:30
Saurabh KumarandGitHub 5491362490 [SILO-418] Refactor skip additional data import to support old jobs clickup #3759 2025-07-25 17:03:25 +05:30
sriram veeraghantaandGitHub cd1856e588 Sync: Community Changes #3760 2025-07-25 17:02:16 +05:30
sriramveeraghanta 8e7ab659f5 fix: lock file updates 2025-07-25 17:01:38 +05:30
sriramveeraghanta 41d20f808d fix: merge conflicts 2025-07-25 17:00:48 +05:30
a5f3bd15b1 [WEB-4513] refactor: consolidate password strength meter into shared ui package (#7462)
* refactor: consolidate password strength indicator into shared UI package

* chore: remove old password strength meter implementations

* chore: update package dependencies for password strength refactor

* chore: code refactor

* fix: lock file

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-25 16:56:46 +05:30
Bavisetti NarayanandGitHub 63d025cbf4 [WEB-4544] chore: added field validations in serializer (#7460)
* chore: added field validations in serializer

* chore: added enum for roles
2025-07-25 16:50:35 +05:30
Vamsi KrishnaandGitHub 1e8791dfb8 [WEB-4530]fix: duplicate dropdown label #3738 2025-07-25 16:50:06 +05:30
Vamsi KrishnaandGitHub b03fd902ab [WEB-4553]chore: added language support for initiative scope #3729 2025-07-25 16:49:28 +05:30
Saurabh KumarandGitHub e14b4e0aad [SILO-396] Modify OAuth flow to move app installation out of token generate (#3694)
* refactor: oauth flow to move app installation out of create token + get installation from token

* added tests for app installation flow and webhook fix

* replace app_installation_id with id as query param
2025-07-25 16:47:49 +05:30
Dheeraj Kumar KetireddyandGitHub f9894e095f [WEB-4560] fix: enhance OpenSearchHelper with custom filter support and fix page access in search #3743
- Added support for custom Q objects in OpenSearchHelper to allow complex filtering logic.
- Updated the EnhancedGlobalSearchEndpoint to utilize the new custom filter for page access control.
- Improved filter handling in the execute_multi_search method for better result organization.
2025-07-25 16:42:50 +05:30
Aaryan KhandelwalandGitHub dd4e733fa9 [WIKI-537] [WIKI-539] refactor: document editor (#3758)
* refactor: document editor

* chore: update user prop

* fix: type warning

* refactor: document read only editor

* chore: update value prop name

* chore: remove unnecessary exports

* hore: update initialValue type

* chore: revert initialValue type
2025-07-25 16:41:12 +05:30
sriram veeraghantaandGitHub 580729dc20 Sync: Community Changes #3757 2025-07-25 14:10:17 +05:30
Aaryan Khandelwal 8933e5c676 fix: merge conflicts resolved from preview 2025-07-25 14:09:08 +05:30
Aaryan KhandelwalandGitHub 27f74206a3 [WIKI-537] refactor: document editor (#7384)
* refactor: document editor

* chore: update user prop

* fix: type warning

* chore: update value prop name

* chore: remove unnecessary exports

* hore: update initialValue type

* chore: revert initialValue type

* refactor: unnecessary string handlers
2025-07-25 13:57:45 +05:30
Aaron HeckmannandGitHub e20bfa55d6 chore: add ci job names (#7478)
* chore: add ci job names

This makes them easier to find in the Github UI.

* chore: increase ci timeout
2025-07-25 13:41:03 +05:30
Aaryan KhandelwalandGitHub f8353d3468 fix: eslint warnings and errors (#7479) 2025-07-25 13:40:25 +05:30
Aaron HeckmannandGitHub 509202053c chore: resolve conflicts + lint errors (#3754) 2025-07-25 13:21:29 +05:30
sriram veeraghantaandGitHub 8fd19d13ce Sync: Community Changes #3752 2025-07-25 02:23:37 +05:30
sriram veeraghanta 5e7da20d3b fix: lock file updates 2025-07-25 02:08:02 +05:30
sriram veeraghanta f119005ab7 fix: merge conflicts 2025-07-25 02:06:13 +05:30
57479f4554 fix: lint (#7433)
* chore: fix lint

* fix: constants check:lint command

* chore(lint): permit unused vars which begin w/ _

* chore: rm dead code

* fix(lint): more lint fixes to constants pkg

* fix(lint): lint the live server

- fix lint issues

* chore: improve clean script

* fix(lint): more lint

* chore: set live server process title

* chore(deps): update to turbo@2.5.5

* chore(live): target node22

* fix(dev): add missing ui pkg dependency

* fix(dev): lint decorators

* fix(dev): lint space app

* fix(dev): address lint issues in types pkg

* fix(dev): lint editor pkg

* chore(dev): moar lint

* fix(dev): live server exit code

* chore: address PR feedback

* fix(lint): better TPageExtended type

* chore: refactor

* chore: revert most live server changes

* fix: few more lint issues

* chore: enable ci checks

Ensure we can build + confirm that lint is not getting worse.

* chore: address PR feedback

* fix: web lint warning added to package.json

* fix: ci:lint command

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-07-25 01:44:51 +05:30
sriram veeraghantaandGitHub 2e9778a0da Sync: Community Changes #3751 2025-07-25 00:59:44 +05:30
Dheeraj Kumar Ketireddy 25bf6d9b60 Merge branch 'preview' into sync/ce-ee
Fixed merge conflicts

 Conflicts:
	apps/api/plane/api/serializers/__init__.py
	apps/api/plane/api/serializers/module.py
	apps/api/plane/api/urls/__init__.py
	apps/api/plane/api/urls/issue.py
	apps/api/plane/api/urls/member.py
	apps/api/plane/api/urls/module.py
	apps/api/plane/api/views/__init__.py
	apps/api/plane/api/views/asset.py
	apps/api/plane/api/views/base.py
	apps/api/plane/api/views/cycle.py
	apps/api/plane/api/views/intake.py
	apps/api/plane/api/views/issue.py
	apps/api/plane/api/views/member.py
	apps/api/plane/api/views/module.py
	apps/api/plane/api/views/project.py
	apps/api/plane/api/views/state.py
	apps/api/plane/db/models/workspace.py
	apps/api/plane/settings/common.py
	apps/api/plane/settings/openapi.py
	apps/api/plane/urls.py
	apps/api/plane/utils/openapi/__init__.py
	apps/api/plane/utils/openapi/auth.py
	apps/api/plane/utils/openapi/decorators.py
	apps/api/plane/utils/openapi/hooks.py
	apps/api/plane/utils/openapi/parameters.py
	apps/api/requirements/base.txt
2025-07-25 00:56:38 +05:30
03a9eeb25b [WEB-4140] OpenAPI spec and external API refactor (#3750)
* Basic setup for drf-spectacular

* Updated to only handle /api/v1 endpoints

* feat: add asset and user endpoints with URL routing

- Introduced new asset-related endpoints for user assets and server assets, allowing for asset uploads and management.
- Added user endpoint to retrieve current user information.
- Updated URL routing to include new asset and user patterns.
- Enhanced issue handling with a new search endpoint for issues across multiple fields.
- Expanded member management with a new endpoint for workspace members.

* Group endpoints by tags

* Detailed schema definitions and examples for asset endpoints

* Removed unnecessary extension

* Specify avatar_url field separately

* chore: add project docs

* chore: correct all errors

* chore: added open spec in work items

* feat: enhance cycle API endpoints with detailed OpenAPI specifications

- Updated CycleAPIEndpoint and CycleIssueAPIEndpoint to include detailed OpenAPI schema definitions for GET, POST, PATCH, and DELETE operations.
- Specified allowed HTTP methods for each endpoint in the URL routing.
- Improved documentation for cycle creation, updating, and deletion, including request and response examples.

* chore: added open spec in labels

* chore: work item properties

* feat: enhance API endpoints with OpenAPI specifications and HTTP method definitions

- Added detailed OpenAPI schema definitions for various API endpoints including Intake, Module, and State.
- Specified allowed HTTP methods for each endpoint in the URL routing for better clarity and documentation.
- Improved request and response examples for better understanding of API usage.
- Introduced unarchive functionality for cycles and modules with appropriate endpoint definitions.

* chore: run formatter

* Removed unnecessary settings for authentication

* Refactors OpenAPI documentation structure

Improves the organization and maintainability of the OpenAPI documentation by modularizing the `openapi_spec_helpers.py` file.

The changes include:
- Migrates common parameters, responses, examples, and authentication extensions to separate modules.
- Introduces helper decorators for different endpoint types.
- Updates view imports to use the new module paths.
- Removes the legacy `openapi_spec_helpers.py` file.

This refactoring results in a more structured and easier-to-maintain OpenAPI documentation setup.

* Refactor OpenAPI endpoint specifications

- Removed unnecessary parameters from the OpenAPI documentation for various endpoints in the asset, cycle, and project views.
- Updated request structures to improve clarity and consistency across the API documentation.
- Enhanced response formatting for better readability and maintainability.

* Enhance API documentation with detailed endpoint descriptions

Updated various API endpoints across the application to include comprehensive docstrings that clarify their functionality. Each endpoint now features a summary and detailed description, improving the overall understanding of their purpose and usage. This change enhances the OpenAPI specifications for better developer experience and documentation clarity.

* Enhance API serializers and views with new request structures

- Added new serializers for handling cycle and module issue requests, including `CycleIssueRequestSerializer`, `TransferCycleIssueRequestSerializer`, `ModuleIssueRequestSerializer`, and intake issue creation/updating serializers.
- Updated existing serializers to improve clarity and maintainability, including the `UserAssetUploadSerializer` and `IssueAttachmentUploadSerializer`.
- Refactored API views to utilize the new serializers, enhancing the request handling for cycle and intake issue endpoints.
- Improved OpenAPI documentation by replacing inline request definitions with serializer references for better consistency and readability.

* Refactor OpenAPI documentation and endpoint specifications

- Replaced inline schema definitions with dedicated decorators for various endpoint types, enhancing clarity and maintainability.
- Updated API views to utilize new decorators for user, cycle, intake, module, and project endpoints, improving consistency in OpenAPI documentation.
- Removed unnecessary parameters and responses from endpoint specifications, streamlining the documentation for better readability.
- Enhanced the organization of OpenAPI documentation by modularizing endpoint-specific decorators and parameters.

* chore: correct formatting

* chore: correct formatting for all api folder files

* refactor: clean up serializer imports and test setup

- Removed unused `StateLiteSerializer` import from the serializer module.
- Updated test setup to include a noqa comment for the `django_db_setup` fixture, ensuring clarity in the code.
- Added missing commas in user data dictionary for consistency.

* feat: add project creation and update serializers with validation

- Introduced `ProjectCreateSerializer` and `ProjectUpdateSerializer` to handle project creation and updates, respectively.
- Implemented validation to ensure project leads and default assignees are members of the workspace.
- Updated API views to utilize the new serializers for creating and updating projects, enhancing request handling.
- Added OpenAPI documentation references for the new serializers in the project API endpoints.

* feat: update serializers to include additional read-only fields

* refactor: rename intake issue serializers and enhance structure

- Renamed `CreateIntakeIssueRequestSerializer` to `IntakeIssueCreateSerializer` and `UpdateIntakeIssueRequestSerializer` to `IntakeIssueUpdateSerializer` for clarity.
- Introduced `IssueSerializer` for nested issue data in intake requests, improving the organization of serializer logic.
- Updated API views to utilize the new serializer names, ensuring consistency across the codebase.

* refactor: rename issue serializer for intake and enhance API documentation

- Renamed `IssueSerializer` to `IssueForIntakeSerializer` for better clarity in the context of intake issues.
- Updated references in `IntakeIssueCreateSerializer` and `IntakeIssueUpdateSerializer` to use the new `IssueForIntakeSerializer`.
- Added OpenAPI documentation for the `get_workspace_work_item` endpoint, detailing parameters and responses for improved clarity.

* chore: modules and cycles serializers

* feat: add new serializers for label and issue link management

- Introduced `LabelCreateUpdateSerializer`, `IssueLinkCreateSerializer`, `IssueLinkUpdateSerializer`, and `IssueCommentCreateSerializer` to enhance the handling of label and issue link data.
- Updated existing API views to utilize the new serializers for creating and updating labels, issue links, and comments, improving request handling and validation.
- Added `IssueSearchSerializer` for searching issues, streamlining the search functionality in the API.

* Don't consider read only fields as required

* Add setting to separate request and response definitions

* Added OAuth 2 authentication for OpenAPI Spec

* Fixed avatar_url warning on openapi spec generation

* Fixed errors with openapi spec generation

* Enhance OpenAPI documentation for issue types and properties

- Updated issue type and property API endpoints to include detailed OpenAPI documentation using decorators.
- Added support for various HTTP methods (GET, POST, PATCH, DELETE) in the issue type and property views.
- Introduced new parameters and response schemas to improve API clarity and usability.
- Updated settings to categorize endpoints under "Work Item Types" and "Work Item Properties" for better organization in the OpenAPI spec.

* Made spectacular disabled by default

* Moved spectacular settings into separate file and added detailed descriptions to tags

* Specify methods for asset urls

* Better server names

* Added filter to exclude server and page endpoints from API v1 paths in OpenAPI hooks

* Refine API endpoint methods and enhance OpenAPI documentation for worklogs

- Specified HTTP methods for worklog API endpoints to support POST, GET, PATCH, and DELETE operations.
- Added detailed descriptions for "Work Item Worklogs," "Work Item Types," and "Work Item Properties" in OpenAPI settings to improve documentation clarity and usability.

* Refactor OpenAPI decorators for issue property endpoints

- Updated decorators for issue property options and values to improve documentation clarity.
- Introduced new `PROPERTY_ID_PARAMETER` for better parameter management in API paths.
- Removed redundant parameters from issue worklog API methods to streamline the documentation.

* Enhance API documentation with summaries for various endpoints

- Added summary descriptions for user asset, cycle, intake, issue, member, module, project, state, and user API endpoints to improve clarity and usability of the API documentation.
- Updated the OpenAPI specifications to reflect these changes, ensuring better understanding for developers interacting with the API.

* Add contact information to OpenAPI settings

- Included contact details for Plane in the OpenAPI settings to enhance API documentation and provide developers with a direct point of contact for support.
- This addition aims to improve the overall usability and accessibility of the API documentation.

* Enhance OpenAPI documentation across multiple endpoints

- Added summaries to various API endpoints for improved clarity and usability.
- Updated decorators for user, asset, cycle, intake, issue type, issue, module, project, state, and worklog endpoints to include descriptive summaries.
- Improved overall documentation structure to facilitate better understanding of API functionalities.

* removed repeating summary

* Reordered tags and improved description relavancy

* Refactor OpenAPI settings to enhance documentation clarity

- Reorganized and updated descriptions for various API features, including "Cycles," "Modules," "States," "Users," "Work Items," and "Work Item Properties."
- Removed redundant entries and improved the structure of feature descriptions to better reflect their functionalities and use cases.
- Added new entries for "Work Item Types" and "Work Item Worklogs" to provide comprehensive coverage of work item management capabilities.

* Enhance OpenAPI documentation for cycle and issue endpoints

- Added response definitions for the `get_cycle_issues` and `delete_cycle_issue` methods in the CycleIssueAPIEndpoint to clarify expected outcomes.
- Included additional response codes for the IssueSearchEndpoint to handle various error scenarios, improving the overall API documentation and usability.

* Enhance serializer documentation across multiple files

- Updated docstrings for various serializers including UserAssetUploadSerializer, AssetUpdateSerializer, and others to provide clearer descriptions of their functionality and usage.
- Improved consistency in formatting and language across serializer classes to enhance readability and maintainability.
- Added detailed explanations for new serializers related to project, module, and cycle management, ensuring comprehensive documentation for developers.

* chore: remove duplicate summary

* Refactor API endpoints for cycles, intake, modules, projects, and states

- Replaced existing API endpoint classes with more descriptive names such as CycleListCreateAPIEndpoint, CycleDetailAPIEndpoint, IntakeIssueListCreateAPIEndpoint, and others to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved documentation and method summaries for better understanding of endpoint functionalities.
- Enhanced query handling in the new endpoint classes to streamline data retrieval and improve performance.

* Refactor issue and label API endpoints for clarity and functionality

- Renamed existing API endpoint classes to more descriptive names such as IssueListCreateAPIEndpoint, IssueDetailAPIEndpoint, LabelListCreateAPIEndpoint, and LabelDetailAPIEndpoint to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to enhance data retrieval and performance.

* Refactor asset API endpoint methods and introduce new status enums

- Updated the GenericAssetEndpoint to only allow POST requests for asset creation, removing the GET method.
- Modified the get method to require asset_id, ensuring that asset retrieval is always tied to a specific asset.
- Added new IntakeIssueStatus and ModuleStatus enums to improve clarity and management of asset and module states.
- Enhanced OpenAPI settings to include these new enums for better documentation and usability.

* enforce naming convention

* Added LICENSE to openapi spec

* Refactor issue type and property API endpoints for improved clarity and functionality

- Renamed existing API endpoint classes to more descriptive names such as IssueTypeListCreateAPIEndpoint, IssueTypeDetailAPIEndpoint, IssuePropertyListCreateAPIEndpoint, and IssuePropertyDetailAPIEndpoint.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Enhanced method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to improve data retrieval and performance.

* Enhance OpenAPI documentation for various API endpoints

- Updated API endpoints in asset, cycle, intake, issue, module, project, and state views to include OpenApiRequest and OpenApiExample for better request documentation.
- Added example requests for creating and updating resources, improving clarity for API consumers.
- Ensured consistent use of OpenApi utilities across all relevant endpoints to enhance overall API documentation quality.

* Enhance OpenAPI documentation for various API endpoints

- Added detailed descriptions to multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to improve clarity for API consumers.
- Ensured consistent documentation practices by including descriptions that outline the purpose and functionality of each endpoint.
- This update aims to enhance the overall usability and understanding of the API documentation.

* Enhance OpenAPI documentation for issue types and properties by adding descriptions to various endpoints, including listing, creating, retrieving, updating, and deleting operations. Also, remove an unused import in the issue view file.

* Enhance OpenAPI documentation for issue property and value endpoints by adding request examples for creating and updating issue types, properties, options, and values. This improves clarity for API consumers on expected request formats.

* Update OpenAPI examples and enhance project queryset logic

- Changed example fields in OpenAPI documentation for issue comments from "content" to "comment_html" to reflect the correct structure.
- Introduced a new `get_queryset` method in the ProjectDetailAPIEndpoint to filter projects based on user membership and workspace, while also annotating additional project-related data such as total members, cycles, and modules.
- Updated permission checks to use the correct attribute name for project identifiers, ensuring accurate permission handling.

* Update OpenAPI documentation for issue comments to reflect changes in request format, replacing 'content' with 'comment_html'. Additionally, implement a new queryset method in ProjectDetailAPIEndpoint to enhance project filtering and member role annotations, improving data retrieval efficiency. Minor adjustments made to permission checks for project identifiers.

* Enhance OpenAPI documentation and add response examples

- Updated multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to include new OpenApiResponse examples for better clarity on expected outcomes.
- Introduced new parameters for project and issue identifiers to improve request handling and documentation consistency.
- Enhanced existing responses with detailed examples to aid API consumers in understanding the expected data structure and error handling.
- This update aims to improve the overall usability and clarity of the API documentation.

* IssueProperty Nullenum fix

* make api.plane.so default url in openapi spec

* refactor: update terminology from 'issues' to 'work items' across multiple API endpoints for consistency and clarity

* use common timezones from pytz for choices

* refactor: remove unused imports from API views

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-07-25 00:25:22 +05:30
514686d9d5 [WEB-4045] feat: restructuring of the external APIs for better maintainability (#7477)
* Basic setup for drf-spectacular

* Updated to only handle /api/v1 endpoints

* feat: add asset and user endpoints with URL routing

- Introduced new asset-related endpoints for user assets and server assets, allowing for asset uploads and management.
- Added user endpoint to retrieve current user information.
- Updated URL routing to include new asset and user patterns.
- Enhanced issue handling with a new search endpoint for issues across multiple fields.
- Expanded member management with a new endpoint for workspace members.

* Group endpoints by tags

* Detailed schema definitions and examples for asset endpoints

* Removed unnecessary extension

* Specify avatar_url field separately

* chore: add project docs

* chore: correct all errors

* chore: added open spec in work items

* feat: enhance cycle API endpoints with detailed OpenAPI specifications

- Updated CycleAPIEndpoint and CycleIssueAPIEndpoint to include detailed OpenAPI schema definitions for GET, POST, PATCH, and DELETE operations.
- Specified allowed HTTP methods for each endpoint in the URL routing.
- Improved documentation for cycle creation, updating, and deletion, including request and response examples.

* chore: added open spec in labels

* chore: work item properties

* feat: enhance API endpoints with OpenAPI specifications and HTTP method definitions

- Added detailed OpenAPI schema definitions for various API endpoints including Intake, Module, and State.
- Specified allowed HTTP methods for each endpoint in the URL routing for better clarity and documentation.
- Improved request and response examples for better understanding of API usage.
- Introduced unarchive functionality for cycles and modules with appropriate endpoint definitions.

* chore: run formatter

* Removed unnecessary settings for authentication

* Refactors OpenAPI documentation structure

Improves the organization and maintainability of the OpenAPI documentation by modularizing the `openapi_spec_helpers.py` file.

The changes include:
- Migrates common parameters, responses, examples, and authentication extensions to separate modules.
- Introduces helper decorators for different endpoint types.
- Updates view imports to use the new module paths.
- Removes the legacy `openapi_spec_helpers.py` file.

This refactoring results in a more structured and easier-to-maintain OpenAPI documentation setup.

* Refactor OpenAPI endpoint specifications

- Removed unnecessary parameters from the OpenAPI documentation for various endpoints in the asset, cycle, and project views.
- Updated request structures to improve clarity and consistency across the API documentation.
- Enhanced response formatting for better readability and maintainability.

* Enhance API documentation with detailed endpoint descriptions

Updated various API endpoints across the application to include comprehensive docstrings that clarify their functionality. Each endpoint now features a summary and detailed description, improving the overall understanding of their purpose and usage. This change enhances the OpenAPI specifications for better developer experience and documentation clarity.

* Enhance API serializers and views with new request structures

- Added new serializers for handling cycle and module issue requests, including `CycleIssueRequestSerializer`, `TransferCycleIssueRequestSerializer`, `ModuleIssueRequestSerializer`, and intake issue creation/updating serializers.
- Updated existing serializers to improve clarity and maintainability, including the `UserAssetUploadSerializer` and `IssueAttachmentUploadSerializer`.
- Refactored API views to utilize the new serializers, enhancing the request handling for cycle and intake issue endpoints.
- Improved OpenAPI documentation by replacing inline request definitions with serializer references for better consistency and readability.

* Refactor OpenAPI documentation and endpoint specifications

- Replaced inline schema definitions with dedicated decorators for various endpoint types, enhancing clarity and maintainability.
- Updated API views to utilize new decorators for user, cycle, intake, module, and project endpoints, improving consistency in OpenAPI documentation.
- Removed unnecessary parameters and responses from endpoint specifications, streamlining the documentation for better readability.
- Enhanced the organization of OpenAPI documentation by modularizing endpoint-specific decorators and parameters.

* chore: correct formatting

* chore: correct formatting for all api folder files

* refactor: clean up serializer imports and test setup

- Removed unused `StateLiteSerializer` import from the serializer module.
- Updated test setup to include a noqa comment for the `django_db_setup` fixture, ensuring clarity in the code.
- Added missing commas in user data dictionary for consistency.

* feat: add project creation and update serializers with validation

- Introduced `ProjectCreateSerializer` and `ProjectUpdateSerializer` to handle project creation and updates, respectively.
- Implemented validation to ensure project leads and default assignees are members of the workspace.
- Updated API views to utilize the new serializers for creating and updating projects, enhancing request handling.
- Added OpenAPI documentation references for the new serializers in the project API endpoints.

* feat: update serializers to include additional read-only fields

* refactor: rename intake issue serializers and enhance structure

- Renamed `CreateIntakeIssueRequestSerializer` to `IntakeIssueCreateSerializer` and `UpdateIntakeIssueRequestSerializer` to `IntakeIssueUpdateSerializer` for clarity.
- Introduced `IssueSerializer` for nested issue data in intake requests, improving the organization of serializer logic.
- Updated API views to utilize the new serializer names, ensuring consistency across the codebase.

* refactor: rename issue serializer for intake and enhance API documentation

- Renamed `IssueSerializer` to `IssueForIntakeSerializer` for better clarity in the context of intake issues.
- Updated references in `IntakeIssueCreateSerializer` and `IntakeIssueUpdateSerializer` to use the new `IssueForIntakeSerializer`.
- Added OpenAPI documentation for the `get_workspace_work_item` endpoint, detailing parameters and responses for improved clarity.

* chore: modules and cycles serializers

* feat: add new serializers for label and issue link management

- Introduced `LabelCreateUpdateSerializer`, `IssueLinkCreateSerializer`, `IssueLinkUpdateSerializer`, and `IssueCommentCreateSerializer` to enhance the handling of label and issue link data.
- Updated existing API views to utilize the new serializers for creating and updating labels, issue links, and comments, improving request handling and validation.
- Added `IssueSearchSerializer` for searching issues, streamlining the search functionality in the API.

* Don't consider read only fields as required

* Add setting to separate request and response definitions

* Fixed avatar_url warning on openapi spec generation

* Made spectacular disabled by default

* Moved spectacular settings into separate file and added detailed descriptions to tags

* Specify methods for asset urls

* Better server names

* Enhance API documentation with summaries for various endpoints

- Added summary descriptions for user asset, cycle, intake, issue, member, module, project, state, and user API endpoints to improve clarity and usability of the API documentation.
- Updated the OpenAPI specifications to reflect these changes, ensuring better understanding for developers interacting with the API.

* Add contact information to OpenAPI settings

- Included contact details for Plane in the OpenAPI settings to enhance API documentation and provide developers with a direct point of contact for support.
- This addition aims to improve the overall usability and accessibility of the API documentation.

* Reordered tags and improved description relavancy

* Enhance OpenAPI documentation for cycle and issue endpoints

- Added response definitions for the `get_cycle_issues` and `delete_cycle_issue` methods in the CycleIssueAPIEndpoint to clarify expected outcomes.
- Included additional response codes for the IssueSearchEndpoint to handle various error scenarios, improving the overall API documentation and usability.

* Enhance serializer documentation across multiple files

- Updated docstrings for various serializers including UserAssetUploadSerializer, AssetUpdateSerializer, and others to provide clearer descriptions of their functionality and usage.
- Improved consistency in formatting and language across serializer classes to enhance readability and maintainability.
- Added detailed explanations for new serializers related to project, module, and cycle management, ensuring comprehensive documentation for developers.

* Refactor API endpoints for cycles, intake, modules, projects, and states

- Replaced existing API endpoint classes with more descriptive names such as CycleListCreateAPIEndpoint, CycleDetailAPIEndpoint, IntakeIssueListCreateAPIEndpoint, and others to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved documentation and method summaries for better understanding of endpoint functionalities.
- Enhanced query handling in the new endpoint classes to streamline data retrieval and improve performance.

* Refactor issue and label API endpoints for clarity and functionality

- Renamed existing API endpoint classes to more descriptive names such as IssueListCreateAPIEndpoint, IssueDetailAPIEndpoint, LabelListCreateAPIEndpoint, and LabelDetailAPIEndpoint to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to enhance data retrieval and performance.

* Refactor asset API endpoint methods and introduce new status enums

- Updated the GenericAssetEndpoint to only allow POST requests for asset creation, removing the GET method.
- Modified the get method to require asset_id, ensuring that asset retrieval is always tied to a specific asset.
- Added new IntakeIssueStatus and ModuleStatus enums to improve clarity and management of asset and module states.
- Enhanced OpenAPI settings to include these new enums for better documentation and usability.

* enforce naming convention

* Added LICENSE to openapi spec

* Enhance OpenAPI documentation for various API endpoints

- Updated API endpoints in asset, cycle, intake, issue, module, project, and state views to include OpenApiRequest and OpenApiExample for better request documentation.
- Added example requests for creating and updating resources, improving clarity for API consumers.
- Ensured consistent use of OpenApi utilities across all relevant endpoints to enhance overall API documentation quality.

* Enhance OpenAPI documentation for various API endpoints

- Added detailed descriptions to multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to improve clarity for API consumers.
- Ensured consistent documentation practices by including descriptions that outline the purpose and functionality of each endpoint.
- This update aims to enhance the overall usability and understanding of the API documentation.

* Update OpenAPI examples and enhance project queryset logic

- Changed example fields in OpenAPI documentation for issue comments from "content" to "comment_html" to reflect the correct structure.
- Introduced a new `get_queryset` method in the ProjectDetailAPIEndpoint to filter projects based on user membership and workspace, while also annotating additional project-related data such as total members, cycles, and modules.
- Updated permission checks to use the correct attribute name for project identifiers, ensuring accurate permission handling.

* Enhance OpenAPI documentation and add response examples

- Updated multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to include new OpenApiResponse examples for better clarity on expected outcomes.
- Introduced new parameters for project and issue identifiers to improve request handling and documentation consistency.
- Enhanced existing responses with detailed examples to aid API consumers in understanding the expected data structure and error handling.
- This update aims to improve the overall usability and clarity of the API documentation.

* refactor: update terminology from 'issues' to 'work items' across multiple API endpoints for consistency and clarity

* use common timezones from pytz for choices

* Moved the openapi utils to the new folder structure

* Added exception logging in GenericAssetEndpoint to improve error handling

* Fixed code rabbit suggestions

* Refactored IssueDetailAPIEndpoint to streamline issue retrieval and response handling, removing redundant external ID checks and custom ordering logic.

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-07-25 00:17:05 +05:30
Saurabh KumarandGitHub f102823bb5 [SILO-416] Clickup make import comment and attachments optional (#3739)
* chore: make import comment and attachments optional + bug fixes

* feat: enhance ClickUp importer with project listing improvements and default data pull setting

* increase page count
2025-07-24 21:12:16 +05:30
sriram veeraghantaandGitHub 43e50b6f45 Sync: Community Changes #3745 2025-07-24 20:46:45 +05:30
sriram veeraghantaandGitHub 3fa1f884ba chore: typo fixes in pi chat screens (#3749) 2025-07-24 20:34:04 +05:30
Vamsi KrishnaandGitHub 98a00f5bde [WEB-4523]fix: sub issues loader #7474 2025-07-24 19:25:37 +05:30
sriram veeraghantaandGitHub ed4ee3ad7e fix: remove commands from the docker compose file (#7476) 2025-07-24 18:28:12 +05:30
Akshat JainandGitHub 709ec2907d [INFRA-217] Fix podman quadlet configurations with new file structure (#3737)
* chore: remove command entries from podman-quadlet configuration files

* chore: update application version to v1.13.0 in Dockerfile, podman configuration, and environment files
2025-07-24 16:11:49 +05:30
Vipin ChaudharyandGitHub 678bcb657a [WIKI-563] refactor: subscription styles (#3724)
* refactor: billing UI

* refactor : fix typo

* refactor: subscription ui
2025-07-24 15:42:06 +05:30
sriram veeraghantaandGitHub f58366cf2a Sync: Community Changes #3741 2025-07-24 15:38:42 +05:30
Prateek ShouryaandGitHub 18e4c60b42 [WEB-4536] fix: remove inactive workspace members from lists and dropdowns (#7473) 2025-07-24 15:29:18 +05:30
sriram veeraghantaandGitHub 8aa4beaa51 Sync: Community Changes #3740 2025-07-24 15:25:56 +05:30
sriram veeraghantaandGitHub 272d34793f Merge branch 'preview' into sync/ce-ee 2025-07-24 15:25:29 +05:30
sriram veeraghantaandGitHub 849b7b7bf3 [WIKI-565] chore: handle 404 messages in live server (#7472)
* chore: handle 404 messages in live server

* chore: removed error stack from response
2025-07-24 15:13:44 +05:30
sriram veeraghantaandGitHub 603950be90 Sync: Community Changes #3736 2025-07-24 14:49:49 +05:30
2746bad86b [WEB-4561] fix: SVG attributes in react components (#7470)
* chore: svg attribute fix (#7446)

* fix: replace invalid --env-file with dotenv-cli for tsup onSuccess

* fix: replace invalid --env-file usage in start script and move dotenv-cli to dependencies

* chor: update SVG attributes to camelCase for JSX compatibility

* chor: update SVG attributes to camelCase

* fix: removed dontenv-cli

* fix: svg attibute fixes

* chore: minor attribute customizations

---------

Co-authored-by: Donal Noye <68372408+Donal-Noye@users.noreply.github.com>
2025-07-24 14:46:55 +05:30
Akshita GoyalandGitHub 6083e13ba7 [WEB-4555] fix: filter improvement + new chat on app switch + css improved for p… (#3731)
* fix: filter improvement + new chat on app switch + css improved for pi sidebar

* fix: handled revalidateOnFocus
2025-07-24 14:45:58 +05:30
Vamsi KrishnaandGitHub 008727d393 [WEB-4547]fix: archived work item redirection #7471 2025-07-24 14:43:31 +05:30
merrime-nandGitHub 56e4d2c6f1 docs: add file paths to the new language guide (#7454)
* improve the comprehensiblity of translation contribution docs

* Update CONTRIBUTING.md to fix the code blocks appeareance
2025-07-24 14:12:49 +05:30
Vipin ChaudharyandGitHub d7e58a60fa [WIKI-563] refactor: subscription styles (#7444)
* refactor: billing UI

* refactor : fix typo
2025-07-24 14:11:23 +05:30
SangeethaandGitHub af81064961 [WEB-4558] fix: project test cases #7464 2025-07-24 14:07:37 +05:30
Akshita GoyalandGitHub 3c6e2b4447 [WEB-4552] fix: stickies layout + minified layout filter (#7466) 2025-07-24 14:06:46 +05:30
sriram veeraghantaandGitHub f2b6014535 Sync: Community Changes #3735 2025-07-24 14:00:03 +05:30
sriramveeraghanta 469b94cf52 fix: merge conflicts and upgrade axios version in ee packages 2025-07-24 13:57:44 +05:30
sriram veeraghantaandGitHub b7be45d08a chore: upgrade axios version to 1.11.0 (#7469) 2025-07-24 13:50:37 +05:30
Vamsi KrishnaandGitHub 5c3d09fd7f [WEB-4554]fix: initiative epics stats (#3730) 2025-07-23 20:20:46 +05:30
sriram veeraghantaandGitHub 2d9cdf0ae7 chore: remove docker commands (#3732) 2025-07-23 18:37:37 +05:30
Akshita GoyalandGitHub 58846983dd [PAI-635] chore: added pi models api + minor css fix #3726 2025-07-23 14:39:55 +05:30
pushya22andGitHub d86572c98d Sync: Community Changes #3727 2025-07-23 14:37:40 +05:30
Akshita GoyalandGitHub d2629d723c [WEB-4552] chore: minor design changes for home #7459 2025-07-23 14:30:25 +05:30
guru_sainathandGitHub dfe3c8c3db [MOBIL-1076] dev: Add advanced search support to feature flag query #3720 2025-07-23 10:21:19 +05:30
guru_sainathandGitHub ca3f4b7e59 [MOBIL-1069] dev: Add actor details to intake activity entries (#3719)
* dev: handled the actor details in intake activity details

* dev: handled the source info in intake activity
2025-07-23 10:20:48 +05:30
SangeethaandGitHub dc0d0501a7 [WEB-4527] fix: wi description copy #3722 2025-07-23 10:19:47 +05:30
Vamsi KrishnaandGitHub 9dc97f6354 [WEB-4518]fix: initiative scope pre-release bugs (#3723) 2025-07-23 10:18:05 +05:30
pushya22andGitHub 6e56c12c24 Sync: Community Changes #3725 2025-07-23 10:17:02 +05:30
Akshita GoyalandGitHub 292216d4a3 [WEB-4550] fix: pi improvements #3721 2025-07-23 10:12:36 +05:30
Akshita GoyalandGitHub 9007ec3709 [WEB-4546] chore: home update #7456 2025-07-23 10:11:18 +05:30
Anmol Singh BhatiaandGitHub e9fdfb51dc [WEB-4548] chore: remove unnecessary code 2025-07-22 18:00:59 +05:30
Vamsi KrishnaandGitHub 759a0978fd [WEB-4251]feat: scope page for initiatives (#3676) 2025-07-22 17:44:40 +05:30
Akshita GoyalandGitHub aa8b740529 [WEB-4524]: Feat pi app (#3626) 2025-07-22 17:32:50 +05:30
pushya22andGitHub 1ed4ea5bb9 Sync: Community Changes #3717 2025-07-22 16:59:54 +05:30
Akshita GoyalandGitHub 42bc765243 Merge branch 'preview' into sync/ce-ee 2025-07-22 16:59:19 +05:30
Akshita GoyalandGitHub 763a28ab60 [WEB-4546] chore: header enhancements + quickstart guide ui update + breadcrumb #7451 2025-07-22 16:47:14 +05:30
Bavisetti NarayanandGitHub 68eadba1d5 [WEB-4545] fix: filters in the global views #3714 2025-07-22 16:35:30 +05:30
Surya PrashanthandGitHub d4fd8353d3 [SILO-401] fix: log exceptions in data_import_task (#3716) 2025-07-22 16:35:04 +05:30
Akshat JainandGitHub f45026b1db [INFRA-210] Fix aio dockerfile with new file structure (#3677)
* chore: update Dockerfile to use 'preview' version and adjust app directory structure for COPY commands

* fix: update Dockerfile to correct app directory structure for silo image COPY command

* fix: update Dockerfile to correct app directory structure for live image COPY command

* fix: update Dockerfile to set PLANE_VERSION to v1.12.1

* fix: update supervisor configuration to change live command path

* fix: update Dockerfile and supervisor configuration to correct app directory paths

* fix: update Dockerfile and supervisor configuration to correct application paths for web, space, and admin services

* fix: update Dockerfile to set PLANE_VERSION to stable

* fix: update Dockerfile to set PLANE_VERSION to v1.12.1
2025-07-22 13:28:29 +05:30
Dheeraj Kumar KetireddyandGitHub c1b1cd033d [WEB-4543] fix: update issue ID extraction in TransferCycleIssueAPIEndpoint #3712 2025-07-22 13:00:06 +05:30
Vamsi KrishnaandGitHub 92af14c64a [WEB-4251] fix:timeline build errors (#3711)
* fix: build errors in timeline store

* fix: build errors in timeline store
2025-07-21 20:07:01 +05:30
Surya PrashanthandGitHub 18762fd900 [SILO-398] chore: add implicit code to check for sslmode (#3709) 2025-07-21 19:50:15 +05:30
SangeethaandGitHub a743a3c8c3 [WEB-4527] fix: duplicating description attachments (#3705) 2025-07-21 19:49:11 +05:30
pushya22andGitHub 87ac8ec85b Sync: Community Changes #3710 2025-07-21 19:46:46 +05:30
Aaryan Khandelwal 922bd1f206 fix: merge conflicts resolved from preview 2025-07-21 19:45:34 +05:30
pushya22andGitHub fb04c44d6b Sync: Community Changes #3707 2025-07-21 19:27:21 +05:30
Aaryan KhandelwalandGitHub 5c22a6cecc [WIKI-484] chore: update editor packages (#7265) 2025-07-21 19:25:49 +05:30
Vamsi KrishnaandGitHub 4c3af7f8a1 [WEB-4531]chore: refactor for timeline chart (#7440) 2025-07-21 19:22:58 +05:30
Aaryan KhandelwalandGitHub cc673a17a0 [WIKI-357] fix: created by filter for pages list #7445 2025-07-21 19:22:27 +05:30
Prateek Shourya 621c27ee59 fix: merge conflicts resolved 2025-07-21 16:24:13 +05:30
Prateek ShouryaandGitHub 2377474823 fix: build errors in work item modal (#7450) 2025-07-21 16:18:51 +05:30
guru_sainathandGitHub b912eac31a [MOBIL-913] feat: Implement mobile intakes with CRUD, activity, comments, reactions, and attachments (#3527) 2025-07-21 13:54:45 +05:30
Prateek ShouryaandGitHub 69aaa6f0ce [WEB-4389] feat: add (sub) work items in Work item Templates and Project Templates (#3530) 2025-07-21 13:34:05 +05:30
pushya22andGitHub c928040281 Sync: Community Changes #3706 2025-07-18 20:44:36 +05:30
Prateek Shourya 2697bf6665 fix: merge conflicts resolved. 2025-07-18 20:43:26 +05:30
Prateek ShouryaandGitHub f3daac6f95 [WEB-4457] refactor: decouple work item properties from mobx store (#7363) 2025-07-18 20:38:21 +05:30
SangeethaandGitHub 210774f855 [WEB-4493] fix: global views sub work items toggle (#3698)
* fix: filtering logic for workspace view

* fix: show sub-wi toggle hides epic's sub wi
2025-07-18 20:29:59 +05:30
sriram veeraghantaandGitHub 7a72495804 Sync: Community Changes #3704 2025-07-18 20:29:29 +05:30
Aaryan KhandelwalandGitHub 3fa9fb12ef [WIKI-562] fix: title editor build errors (#3703)
* fix: title editor build errors

* fix: title editor ref value
2025-07-18 20:29:01 +05:30
NarayanBavisetti e00f756673 chore: resolved merge conflicts 2025-07-18 20:18:21 +05:30
Anmol Singh BhatiaandGitHub 5660b28574 [WEB-4507] fix: webhooks translation #7424 2025-07-18 20:09:39 +05:30
Vamsi KrishnaandGitHub d7d1545801 [WEB-4192]fix: inactive member is hidden in created by #7435 2025-07-18 20:08:59 +05:30
Vamsi KrishnaandGitHub 3ab1f0de84 [WEB-4522]fix: removed redundant state indicator (#7434)
* fix: removed redundant state indicator

* fix: removed redundant state indicator for relation list item
2025-07-18 20:08:36 +05:30
Bavisetti NarayanandGitHub a75ae71ff0 [WEB-4442] fix: removed the deleted labels from webhook payload (#7337)
* chore: removed the deleted label from payload

* chore: optimised the query

* chore: optimised the logic

* chore: defined function for prefetch
2025-07-18 20:08:01 +05:30
Aaryan KhandelwalandGitHub d5eb374217 [WEB-561] refactor: editor build config (#7442)
* refactor: editor build config

* fix: type errors
2025-07-18 20:06:48 +05:30
Vamsi KrishnaandGitHub 1e712ed0fa [WEB-4529]fix: positioning for state dropdown in project create modal #3701 2025-07-18 17:32:27 +05:30
sriram veeraghantaandGitHub 8131892d2e Sync: Community Changes #3699 2025-07-18 15:13:11 +05:30
sriramveeraghanta 60f9f85c01 fix: merge conflicts 2025-07-18 15:12:35 +05:30
sriram veeraghantaandGitHub df4ea1f7ac fix: update tsup build packages (#7438) 2025-07-18 15:04:31 +05:30
Anmol Singh BhatiaandGitHub 07c80bb02c [WEB-4525] fix: project create/update error handling (#7429)
* chore: project create/update error handling

* chore: code refactor
2025-07-18 14:25:28 +05:30
Prateek ShouryaandGitHub 1ad792b4bb [WEB-4528] fix: calendar options interactions (#7437) 2025-07-18 14:25:08 +05:30
sriram veeraghantaandGitHub 0eb4af9d19 fix: on-headers vulnerability (#7436) 2025-07-18 13:27:53 +05:30
01b3e75067 [WIKI-492] Fix: dev wiki (#3501)
* fix: dev wiki

* wiki fix

* update from web

* fix: dev wiki shared pages

* fix: shared pages

* fix : side bar expand

* fix: dev wiki

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-07-18 13:18:18 +05:30
sriram veeraghantaandGitHub dbe38e856a fix: configure all tsup builds (#3697)
* fix: configure all tsup builds

* fix: build packages

* fix: increase the turbo concurrency
2025-07-18 13:12:03 +05:30
sriram veeraghantaandGitHub 80c1500bb0 Sync: Community Changes #3696 2025-07-18 00:24:25 +05:30
Aaryan KhandelwalandGitHub 7136b3129b [WIKI-543] fix: unable to delete last cell of a table (#7394)
* fix: delete last cell of a table

* refactor: last cell selection logic
2025-07-17 21:19:54 +05:30
bfe77c3f16 [WEB-4525] fix: project create/update error handling (#3695)
* fix: internal server error

* refactor: project creation endpoint

* chore: project create/update error handling

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-07-17 19:11:56 +05:30
sriramveeraghanta 86991a1101 fix: sync logger package between cloud and ee repos 2025-07-17 16:10:57 +05:30
pushya22andGitHub 2086da6b2c Sync: Community Changes #3693 2025-07-17 15:27:17 +05:30
Aaryan KhandelwalandGitHub 48f1999c95 [WIKI-557] fix: keyboard navigation in tables (#7428) 2025-07-17 15:15:18 +05:30
Akshat JainandGitHub 3783e34ae8 [INFRA-213] Fix aio dockerfile with new file structure (#7427)
* fix: update paths in Dockerfile and supervisor.conf for application directories

* fix: update live command in supervisor.conf to use server.js
2025-07-17 14:59:13 +05:30
Vamsi KrishnaandGitHub d7b818a05e [WEB-4514] fix: types build errors #3691 2025-07-17 14:22:21 +05:30
Saurabh KumarandGitHub dfb1e2e639 [SILO-341] Application Uninstall Flow (#3529)
* add app uninstall endpoint and tests

* Implement app uninstall webhook and update uninstall endpoint to trigger webhook on application uninstallation

* fix test cases

* modifications to fix tests failure

* moved app uninstall webhook call to view
2025-07-17 13:46:31 +05:30
Henit ChobisaandGitHub 0e3ed8ac43 [SILO-322] feat: Added attachment import support for notion and confluence importers (#3558)
* fix: added complete asset info instead of just ids for sizes

* chore: added test for file processor

* fix: removed html file from root
2025-07-17 13:34:54 +05:30
Henit ChobisaandGitHub 75881963e6 [SILO-286] Sentry integration V1 Implementation (#3566)
* [SILO-306] Create Sentry ETL Package, authentication, services and webhook types (#3372)

* feat: added types in core to accomodate sentry integration needs

* feat: added auth service for sentry integration

* feat: added api service and builder functions

* feat: added webhook and core types for sentry integration

* feat: exported sentry from etl package

* fix: etl type errors

* [SILO-307] feat: Added authentication flow and OAuth for sentry integration (#3373)

* feat: added sentry authentication with OAuth and app installation

* feat: added assets controller for sentry to fetch plane assets

* [SILO-308] Created Sentry Web UI, State Mapping and Translations (#3374)

* feat: added sentry service to interact with silo

* feat: added sentry integration store

* feat: added sentry hook to interact with store

* feat: added sentry page components

* feat: added sentry integration page

* feat: added sentry constants and translations

* feat: added feature for state mapping for sentry issues

* [SILO-309] Added Sentry Workers for syncing the resolution states and sentry webhooks (#3375)

* feat: added sentry worker to main manager

* feat: added sentry issue handler

* feat: added intake issue creation in sentry alerts

* fix: sentry bugs

* chore: added migration for creating sentry app

* fix: controllers as list

* chore: added webhook path for generating sentry application

* fix: sentry webhook path and service

* fix: removed unused files

* fix: restored dev wiki

* fix: removed json stringify package

* fix: etl build running out of memory

* chore: resolved comments

* chore: revert migration changes

* fix: revert nodemon file

* fix: resolved sentry comments

* fix: added validation for authenticated user

* feat: added translation for sentry web ui

* fix: build

* fix: dedupping issue with sentry webhooks

* fix: dangling issue error for sentry integration slug

* fix: increase max old space size for etl package
2025-07-17 13:34:17 +05:30
e691ec75e8 fix: local environment setup using docker local (#3680)
* fix: local environment setup

* fix(dev): get silo migration working

* fix(dev): fix env var expansion

* fix(dev): permit live server to import logger

* fix(dev): silo connection to mq

* fix(dev): few more build errors resolved

---------

Co-authored-by: Aaron Heckmann <aaron@plane.so>
2025-07-17 13:34:06 +05:30
Anmol Singh BhatiaandGitHub 335f3b12f5 [WEB-4508] fix: dashboard modal project select overflow #3686 2025-07-17 13:33:40 +05:30
Anmol Singh BhatiaandGitHub 7120e27891 [WEB-4510] fix: peek view ui layout (#3685) 2025-07-17 13:33:07 +05:30
Vamsi KrishnaandGitHub 3e97006fca [WEB-4426]fix: epics bottom padding in notifications #3687 2025-07-17 13:32:45 +05:30
Surya PrashanthandGitHub 3c02c86afd [SILO-390] chore: clean up logs for slack (#3690) 2025-07-17 13:32:24 +05:30
Aaryan KhandelwalandGitHub 97e713da9a [WIKI-552] fix: epic embed not rendering in a page (#3688) 2025-07-17 13:32:09 +05:30
pushya22andGitHub b22af0aea9 Sync: Community Changes #3689 2025-07-17 13:31:44 +05:30
pablohashescobar c10cfcb30b Remove unused import 2025-07-17 13:30:23 +05:30
pablohashescobar ac0de582f6 Merge branch 'sync/ce-ee' of github.com:makeplane/plane-ee into sync/ce-ee 2025-07-17 13:30:18 +05:30
pablohashescobar 2b9345dcc1 Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-07-17 13:20:30 +05:30
SangeethaandGitHub e313aee3df [WEB-4346] chore: refactor copy_s3_object bg task (#7298) 2025-07-17 13:10:34 +05:30
Vipin ChaudharyandGitHub 6bb79df0eb [WIKI-547] fix: update find suggestion logic for emoji extension (#7411)
* fix: update find suggestion logic

* refactor: remove logs

* refactor : make logic simpler

* feat: check for one char to show suggestion

* refactor : import types from extension

* refactor: add early return

* refactor : put custom suggestion in helper

* fix : char

* fix: types
2025-07-17 13:07:12 +05:30
SangeethaandGitHub ec0ef98c1b [WEB-4281] chore: error code on project updation endpoint (#7218) 2025-07-17 13:05:24 +05:30
Vamsi KrishnaandGitHub 9523c28c3e [WEB-4514]chore: moved EIssueLayoutTypes enum to types #7416 2025-07-17 13:01:24 +05:30
Anmol Singh BhatiaandGitHub 156ed329ac [WEB-4510] fix: peek view ui layout (#7422) 2025-07-17 12:53:37 +05:30
Bavisetti NarayanandGitHub ef0e3dca12 [WEB-4520] chore: changed the serializer for cycle issues #7423 2025-07-17 12:53:04 +05:30
Aaryan KhandelwalandGitHub d8f2c97810 [WIKI-554] feat: delete multiple rows/columns from a table (#7426) 2025-07-17 12:52:33 +05:30
pushya22andGitHub 2c7bdff190 Sync: Community Changes #3683 2025-07-16 15:22:14 +05:30
Aaryan KhandelwalandGitHub 017f10ec9f [WIKI-551] refactor: activity store logic #3681 2025-07-16 15:21:11 +05:30
Anmol Singh BhatiaandGitHub 89983b06d2 [WEB-4515] fix: duplicate work item quick action #7421 2025-07-16 15:19:55 +05:30
sriram veeraghantaandGitHub 1ce0d7ed4e Sync: Community Changes #3679 2025-07-16 01:38:36 +05:30
Aaryan Khandelwal a0a60baa8e fix: merge conflicts resolved from preview 2025-07-16 01:37:24 +05:30
Anmol Singh BhatiaandGitHub af23a7c3b4 [WEB-4497] chore: reduce breadcrumb height (#3674)
* chore: reduce breadcrumb height from 3.75rem to 3.25rem

* chore: code refactor
2025-07-16 01:16:58 +05:30
Anmol Singh BhatiaandGitHub ab2e837f21 [WEB-4501] chore: update breadcrumb dropdown on customer detail page #3675 2025-07-16 01:16:18 +05:30
Anmol Singh BhatiaandGitHub 7da8cc7e64 [WEB-4496] chore: initiative items enhancements #3678 2025-07-16 01:15:23 +05:30
Bavisetti NarayanandGitHub 3224122df0 [WEB-1643] chore: support cyrillic characters in subject #7336 2025-07-16 01:04:59 +05:30
99127ff8e4 [WEB-4479] feat: enable/disable SMTP configuration (#7393)
* feat: api update instance configuration

* chore: add enable_smtp key

* fix: empty string for enable_smtp key

* chore: update email_port and email_from

* fix: handled smtp enable disable

* fix: error handling

* fix: refactor

* fix: removed enabled toast

* fix: refactor

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
2025-07-16 01:04:18 +05:30
Anmol Singh BhatiaandGitHub da5390fa03 [WEB-4497] chore: reduce breadcrumb height (#7413)
* chore: reduce breadcrumb height from 3.75rem to 3.25rem

* chore: code refactor

* chore: code refactor
2025-07-16 01:03:31 +05:30
Anmol Singh BhatiaandGitHub ac22df3f88 [WEB-4451] chore: work item header quick action enhancements (#7414)
* chore: work item header quick action enhancements

* chore: code refactor
2025-07-16 00:52:30 +05:30
Aaryan KhandelwalandGitHub df762afaef [WIKI-551] refactor: work item activity logic #7417 2025-07-15 20:49:20 +05:30
Saurabh KumarandGitHub 5eaf2c1c17 [SILO-354] Make modification for workspace switcher to handle external apps (#3580)
* add get published app by slug endpoint + support for external app feature in workspace selector

* moved service init outside methods

* moved service init outside the render method

* redirect to applications page if app is installed + default to third_party apps

* fix: bot not getting added to projects on interupted flow
2025-07-15 18:17:35 +05:30
Saurabh KumarandGitHub 1ee76614c3 [SILO-355] Add configuration url and is_internal to Applications (#3583)
* feat: add configuration_url field to Application model and update related components

* remove configuration_url in migrations

* add sub commands to make app internal and external
2025-07-15 18:17:25 +05:30
Saurabh KumarandGitHub cdb2e82e9c [SILO-389] Clickup additional logs and bug fix for phase 2 not starting (#3671)
* fix status mapping in phase 1 + handle race condn + addn logs

* enhancement: increase wait time for requeuing pages and handle empty paginated batches in BaseDataMigrator
2025-07-15 18:17:10 +05:30
Vamsi KrishnaandGitHub c7c31d9cfb [WEB-4509] fix: layout switcher in global views #3672 2025-07-15 15:29:17 +05:30
pushya22andGitHub b14ec68f90 Sync: Community Changes #3673 2025-07-15 15:27:24 +05:30
Aaryan KhandelwalandGitHub 2058f06b8a [WIKI-549] fix: comment scroll logic #7412 2025-07-15 15:12:27 +05:30
pushya22andGitHub b28a1d509c Sync: Community Changes #3670
Sync: Community Changes
2025-07-15 13:53:12 +05:30
Anmol Singh BhatiaandGitHub bfd4bd5e75 [WEB-4506] fix: date range modal z-index #7410 2025-07-15 13:51:16 +05:30
pushya22andGitHub 933ede4c34 Sync: Community Changes #3669 2025-07-15 13:26:03 +05:30
NikhilandGitHub ac928f263a [WIKI-520] fix: update content disposition handling in asset download endpoints (#7380) 2025-07-15 13:24:17 +05:30
Dheeraj Kumar KetireddyandGitHub f6d9838d5a Import documents module only if opensearch is enabled (#3667) 2025-07-14 21:30:54 +05:30
sriram veeraghantaandGitHub ab9876473b Sync: Community Changes #3665 2025-07-14 21:12:27 +05:30
Prateek ShouryaandGitHub 17af39babc fix: reorganize OpenSearch settings under OPENSEARCH_ENABLED condition for better clarity and maintainability (#3664) 2025-07-14 21:12:03 +05:30
Bavisetti NarayanandGitHub 62065a6ebb [WEB-4504] chore: added migration for app rail and reactions #7408 2025-07-14 20:57:29 +05:30
67b62dcbe3 [WEB-4498] improvement: remove workspace details from workspace members list API (#7407)
* [WEB-4498] improvement: remove workspace details from workspace members list API

* refactor: update select_related usage in workspace invitation and member views

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-14 20:45:23 +05:30
Anmol Singh BhatiaandGitHub 7961be2548 [WEB-4499] fix: delete epic quick action #3663 2025-07-14 20:16:20 +05:30
Aaryan KhandelwalandGitHub 90ce32eda6 [WIKI-509] fix: comments build errors #3662 2025-07-14 18:34:34 +05:30
pushya22andGitHub 0268e21673 Sync: Community Changes #3660 2025-07-14 18:33:07 +05:30
Henit ChobisaandGitHub c11d17645c [SILO-345] fix: added types as dependency for sdk package #3661 2025-07-14 18:23:50 +05:30
Aaryan KhandelwalandGitHub a427367720 [WIKI-277] fix: unable to delete last table column/row in editor (#7389)
* fix: delete column not working

* refactor: delete column commad

* fix: delete last row logic

* refactor: row count logic

* refactor: isCellSelection utility function
2025-07-14 17:27:09 +05:30
919001dfce [SILO-286] feat: added migration for sentry integration (#3606)
* feat: added migration for sentry integration

* Apply suggestion from @Prashant-Surya

* fix: redirect uri

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-07-14 17:23:32 +05:30
Henit ChobisaandGitHub b66f7cc403 [SILO-345] [SILO-349] feat: Added intake issue creation with slack shortcuts (#3536)
* feat: added intake issue handler in create new work item

* feat: added intake service

* feat: modified issue modal and project selection to fit in intake creation

* feat: modified block action and view submission to handle intake issues

* feat: created intake linkback

* feat: added error for intake

* fix: intake issue not supporting states and labels

* fix: added link addition for issue creation
2025-07-14 17:23:06 +05:30
SangeethaandGitHub 731a37243e [WEB-4346] fix: links and attachments not duplicating (#3455)
* fix: links and attachments are not duplicating

* fix: attachment not downloaded

* chore: use deepcopy

* fix: attachment not copying in s3

* chore: tests for IssueDuplicateEndpoint

* chore: resolve copilot reviews

* chore: separate function for attachment asset duplication

* chore: separate function for attachment asset duplication

* WIP

* fix: issue description copy

* fix: unused imports

* chore: tests for issue attachment bg task

* fix: function name

* chore: add comments and type hints.
2025-07-14 17:18:54 +05:30
Vamsi KrishnaandGitHub 53eb573b5d [WEB-4489]fix: customer list item button color in custom theme #3654 2025-07-14 17:17:57 +05:30
Anmol Singh BhatiaandGitHub d56b5a7732 [WEB-4296] fix: epic quick action #3659 2025-07-14 17:17:23 +05:30
sriram veeraghantaandGitHub 9de836cd26 Sync: Community Changes #3658 2025-07-14 17:16:19 +05:30
sriramveeraghanta ca90b62774 fix: merge conflicts 2025-07-14 17:15:52 +05:30
Aaryan KhandelwalandGitHub c067eaa1ed [WIKI-542] refactor: editor extensions (#7345)
* refactor: editor extensions

* fix: placeholder extension
2025-07-14 17:10:32 +05:30
Aaryan KhandelwalandGitHub 2c70c1aaa8 [WIKI-509] feat: comment copy link option (#7385)
* feat: comment copy link option

* chore: add translations

* chore: update block position

* chore: rename use id scroll hook

* refactor: setTimeout function

* refactor: use-hash-scroll hook
2025-07-14 17:07:44 +05:30
Akshat JainandGitHub f90e553881 [INFRA-209] Remove nginx related configurations from plane community (#7406)
* Remove deprecated Nginx configuration files and scripts, including Dockerfiles, environment scripts, and configuration templates, to streamline the project structure.

* Update environment configuration and Docker setup for proxy services

- Added LISTEN_PORT and LISTEN_SSL_PORT variables to .env.example and related files.
- Updated Docker Compose files to reference new port variables instead of deprecated NGINX_PORT.
- Adjusted README and variable documentation to reflect changes in port configuration.
- Changed build context for proxy services to use the new directory structure.

* Refactor port configuration in environment and Docker files

- Renamed LISTEN_PORT and LISTEN_SSL_PORT to LISTEN_HTTP_PORT and LISTEN_HTTPS_PORT in .env.example and related files.
- Updated Docker Compose configurations to reflect the new port variable names.
- Adjusted documentation in README and variables.env to ensure consistency with the new naming conventions.
2025-07-14 16:38:27 +05:30
Aaryan KhandelwalandGitHub 0af0e52275 [WIKI-545] fix: shrinking headings in page table of contents #7404 2025-07-14 16:30:19 +05:30
Anmol Singh BhatiaandGitHub 7829e3adf5 [WEB-4494] fix: kanban delete modal ux #7405 2025-07-14 16:29:26 +05:30
Anmol Singh BhatiaandGitHub 47354f0e91 [WEB-4468] fix: setting sidebar truncate #7403 2025-07-14 16:26:04 +05:30
M. PalanikannanandGitHub db2f783d33 [WEB-4407] chore: add project page creation event tracking #7378 2025-07-14 15:30:45 +05:30
sriram veeraghantaandGitHub e8be6033dc Sync: Community Changes #3657 2025-07-14 14:43:09 +05:30
sriramveeraghanta d97dc01f51 fix: merge conflicts 2025-07-14 14:42:42 +05:30
6d01622663 [INFRA-208] Reorganize deployment structure and update build workflows (#7391)
* refactor: reorganize deployment structure and update build workflows

- Restructure deployment directories from deploy/ to deployments/
- Move selfhost files to deployments/cli/community/
- Add new AIO community deployment setup
- Update GitHub Actions workflows for new directory structure
- Add Caddy proxy configuration for CE deployment
- Remove deprecated AIO build files and workflows
- Update build context paths in install scripts

* chore: update Dockerfile and supervisor configuration

- Changed `apk add` command in Dockerfile to use `--no-cache` for better image size management.
- Updated `build.sh` to ensure proper directory navigation with quotes around `dirname "$0"`.
- Modified `supervisor.conf` to set `stderr_logfile_maxbytes` to 50MB and added `stderr_logfile_backups` for better log management across multiple services.

* chore: consistent node and python version

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-14 14:38:43 +05:30
7e96f88e9d [INFRA-204] Deployment folder reorganization, Commercial AIO Build (#3593)
* Enhance CI workflows: Add AIO build support and manifest management

- Introduced `mark_manifest_latest` input to control manifest versioning in `appliance-docker-ee.yml`.
- Updated paths in `appliance-docker-ee.yml` for consistency with new directory structure.
- Removed obsolete `build-aio-branch-ee.yml` workflow.
- Added `aio_build` input to `build-branch-ee.yml` for AIO image builds.
- Updated various build jobs to utilize new AIO build logic and dependencies.
- Refactored paths in `build-branch-ee.yml` for improved clarity and organization.
- Updated Dockerfile for proxy to use specific versions of dependencies.

* fix: update build script invocation in CI workflow

- Changed the invocation of the build script in `build-branch-ee.yml` to use `bash` for improved compatibility.

* fix: update artifact upload condition and correct file path in build script

- Modified the condition for uploading artifacts to S3 in `build-branch-ee.yml` to include airgapped builds.
- Corrected the file path for the Caddyfile in `build.sh` to reflect the new directory structure.

* refactor: enhance artifact uploads and remove deprecated scripts

- Added multiple artifact uploads in `build-branch-ee.yml` for `docker-compose.yml`, `coolify-compose.yml`, `portainer-compose.yml`, `swarm-compose.yml`, and `variables.env`.
- Deleted obsolete scripts and configuration files related to airgapped deployment, including `build.sh`, `install.sh`, and various YAML files in the `cli-install` and `airgapped` directories.
- Updated CI workflow to streamline artifact management and improve deployment processes.

* refactor: remove deprecated artifact upload for swarm-compose.yml in CI workflow

- Eliminated the upload step for `swarm-compose.yml` in `build-branch-ee.yml` to streamline artifact management and reduce redundancy.

* fix: consistent node version across all docker files

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-14 14:35:22 +05:30
sriram veeraghantaandGitHub f1ca3c3bf8 Sync: Community Changes #3656 2025-07-14 14:19:57 +05:30
Anmol Singh BhatiaandGitHub dff2f8ae12 [WEB-4482] fix: kanban drag and delete #7402 2025-07-14 14:18:38 +05:30
Prateek ShouryaandGitHub 2421829ec9 [WEB-4486] fix: refresh project memberships for all affected projects after team member updates (#3655) 2025-07-14 14:18:01 +05:30
sriram veeraghantaandGitHub c9cf442561 Sync: Community Changes #3653 2025-07-14 13:21:54 +05:30
sriramveeraghanta 9e493e9ba1 fix: merge conflicts 2025-07-14 13:20:57 +05:30
sriram veeraghantaandGitHub 4c57ed4336 fix: local dev environment setup using yarn v4 (#7400)
* chore: adding typescript dependency to constants.

* chore: package deps update
2025-07-14 13:08:41 +05:30
NikhilandGitHub c8dab1cc9c [WEB-4484]chore: streamline issue saving process with advisory locks for sequence management (#7396)
* chore: streamline issue saving process with advisory locks for sequence management

* fix: update advisory lock usage in issue model for improved concurrency management
2025-07-14 13:08:26 +05:30
Aaron HeckmannandGitHub 17c90a9d93 [WEB-4485] - fix(dev): get local dev migrator working again #7397 2025-07-12 19:45:45 +05:30
Masoom WahidandGitHub a3714c8e3e feat : added Kabul to the list of timezones (#7370) 2025-07-12 19:30:39 +05:30
sriram veeraghantaandGitHub 517b1663f3 Sync: Community Changes #3651 2025-07-11 21:23:35 +05:30
NikhilandGitHub 71cd36865b [WEB-4484]chore: streamline issue saving process with advisory locks for sequence management #7395 2025-07-11 21:18:31 +05:30
Dheeraj Kumar KetireddyandGitHub 4501e44702 [WEB-4481] optimize workspace member view by prefetching related assets (#7390) 2025-07-11 21:17:33 +05:30
Dheeraj Kumar KetireddyandGitHub 59567f9efb Fix: Import background task to register it (#3650) 2025-07-11 21:12:33 +05:30
Saurabh KumarandGitHub 18d0f39697 [SILO-386] Fix modules not getting attached to WI #3649 2025-07-11 19:23:46 +05:30
sriramveeraghanta 48d24f2aaa chore: delete unused files 2025-07-11 17:33:37 +05:30
Henit ChobisaandGitHub 1c42d4293f [SILO-368] fix: typecasting issue failing build for silo #3647 2025-07-11 17:24:56 +05:30
sriramveeraghanta 34af83cd48 fix: sync from canary to preview in plane-ee 2025-07-11 17:19:50 +05:30
Prateek Shouryaandsriramveeraghanta 40ea348f52 [WEB-4454] fix: check project publish status using anchor field from publish settings 2025-07-11 17:14:58 +05:30
pushya22andGitHub 0ba164c44c [SILO-386] Refactor importer migrateToPlane func to reuse existing entities #3645 2025-07-11 16:57:08 +05:30
Saurabhkmr98 ab8142e8cf fix logs 2025-07-11 16:53:34 +05:30
Saurabhkmr98 374e452ed1 refactor: update cache key format for import job entities and enhance logging 2025-07-11 16:51:57 +05:30
pushya22andGitHub b16800fd69 Sync: Community Changes #3646 2025-07-11 16:48:48 +05:30
Henit ChobisaandGitHub 9dbdba8455 [SILO-368] [SILO-369] feat: added de-dupping for slack comment sync and fixed /plane command not working with empty description #3638
* fix: comment sync with deduping

* fix: /plane command not working with empty description

* fix: added actor display name to the store dedup payload

* fix: accessors for data
2025-07-11 16:48:01 +05:30
Vamsi KrishnaandGitHub 1268bd06f8 [WEB-4473]fix: updated epic full screen to use portal (#3643)
* fix: updated full screen to use portal

* fix: z-index for modals
2025-07-11 16:46:55 +05:30
Vamsi KrishnaandGitHub f661e06582 [WEB-4480]fix: full screen modals (#7392) 2025-07-11 16:41:27 +05:30
Saurabhkmr98 57595f5aae refactor: importer migrateplane func to reuse already created entities using cache 2025-07-11 16:31:10 +05:30
sriramveeraghanta 95b7dacc53 fix: update docker file 2025-07-11 15:44:45 +05:30
Nikhilandsriramveeraghanta 213ce78b5a fix: xmlsec version (#3644) 2025-07-11 14:32:41 +05:30
NikhilandGitHub 7fe6ec7d38 fix: xmlsec version (#3644) 2025-07-11 14:31:01 +05:30
Vamsi Krishnaandsriramveeraghanta c0ff154a62 refactor: string url path (#7335) 2025-07-11 14:20:45 +05:30
Bavisetti Narayanandsriramveeraghanta d9bfedd81d [WEB-4435] bug: trigger event for work item comment #7331 2025-07-11 14:20:26 +05:30
Vamsi Krishnaandsriramveeraghanta 5f1a9173ae [WEB-4432] fix: webhooks translation #7332 2025-07-11 14:19:50 +05:30
Vamsi Krishnaandsriramveeraghanta 9f2468b85d [WEB-4432] fix: workspace analytics translation #7330 2025-07-11 14:19:50 +05:30
Vamsi Krishnaandsriramveeraghanta 7e652efe6e [WEB-4427] fix: header alignments #7311 2025-07-11 14:19:50 +05:30
Prateek Shouryaandsriramveeraghanta b7f96e3afd [WEB-4429] fix: url path generation #7317 2025-07-11 14:19:50 +05:30
pushya22andGitHub a1643c1aa3 Sync: Community Changes #3642 2025-07-11 11:53:10 +05:30
Vamsi KrishnaandGitHub 86f3ff1bd2 [WEB-4471]fix: full screen view visibility (#7387)
* fix: full screen mode for analytics, work items peek and timeline chart

* chore: added null check for portal elements
2025-07-11 11:50:26 +05:30
M. PalanikannanandGitHub 2b3da4620b [WEB-4407] chore: adding posthog events in nested pages (#3629)
* chore: adding posthog events in nested pages

* chore: more events

* fix: add error capturing
2025-07-11 04:24:01 +05:30
Vamsi KrishnaandGitHub c5a4d944bd [WEB-4474]fix: gantt view pagination loader #3640 2025-07-11 04:22:13 +05:30
sriram veeraghantaandGitHub cb8ad0a1ed Sync: Community Changes #3641 2025-07-11 04:21:30 +05:30
sriram veeraghantaandGitHub 19aedfb205 Sync: Community Changes #3635 2025-07-11 04:18:04 +05:30
M. PalanikannanandGitHub 81acaa4949 [WIKI-541] regression: smooth cursor animation speed in pages (#3637)
* regression: smooth cursor animation speed in pages

* fix: important
2025-07-11 04:17:28 +05:30
Aaryan KhandelwalandGitHub fce4729f22 [WIKI-497] refactor: table insert handles size (#7376)
* refactor: table insert handles size

* fix: insert handles z-idnex
2025-07-11 04:17:04 +05:30
Anmol Singh BhatiaandGitHub bb48250467 [WEB-4477] fix: sidebar resize behaviour #7386 2025-07-11 04:16:36 +05:30
Prateek ShouryaandGitHub 5fbe411e04 [WEB-4475] fix: add default theme for subscription colors (#7382) 2025-07-10 18:32:17 +05:30
NikhilandGitHub 55dbbfbe79 [WEB-4455] fix: enhance email part processing to handle unknown charsets #3636 2025-07-10 17:31:05 +05:30
sriramveeraghanta 2dbd3ce58a fix: merge conflicts 2025-07-10 17:16:19 +05:30
Bavisetti NarayanandGitHub f877a8e23d [WEB-4227] chore: optimised the gantt views endpoint (#3630) 2025-07-10 17:06:07 +05:30
2e75ff7f1c [WEB-4405] chore: project settings events (#7362)
* chore: workspace events

* fix: refactor

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-10 17:05:30 +05:30
eb4239417a [WEB-4405] chore: profile settings events (#7313)
* feat: event tracker helper

* feat: track click events for `data-ph-element`

* fix: handled click events

* fix: handled name

* chore: tracker element updates

* chore: remove export

* chore: tracker element type

* chore: track element and event helper.

* chore: minor improvements

* chore: minor refactors

* fix: workspace events

* fix: added slug

* fix: changes nomenclature

* fix: nomenclature

* chore: update event tracker helper types

* fix: data id

* refactor: cycle events (#7290)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* chore: update tracker elements

* chore: check for closest element with data-ph-element attribute

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* Refactor module events (#7291)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* refactor: module tracker event and element

* chore: update tracker element

* chore: revert unnecessary changes

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* refactor: global views, product tour, notifications, onboarding, users and sidebar related events

* chore: member tracker events (#7302)

* chore: member-tracker-events

* fix: constants

* refactor: update event tracker constants

* refactor: auth related event trackers (#7306)

* Chore: state events (#7307)

* chore: state events

* fix: refactor

* chore: project events (#7305)

* chore: project-events

* fix: refactor

* fix: removed hardcoded values

* fix: github redirection event

* chore: project page tracker events (#7304)

* added events for most page events

* refactor: simplify lock button event handling in PageLockControl

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>

* chore: minor cleanup and import fixes

* refactor: added tracker elements for buttons (#7308)

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* fix: event type

* refactor: posthog group event

* chore: removed instances of event tracker (#7309)

* refactor: remove event tracker stores and hooks

* refactor: remove event tracker store

* fix: build errors

* clean up event tracker payloads

* chore: profile settings events

* fix: refactor

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-10 17:02:06 +05:30
c6fbbfd8cc [WEB-4405] chore: workspace settings events (#7312)
* feat: event tracker helper

* feat: track click events for `data-ph-element`

* fix: handled click events

* fix: handled name

* chore: tracker element updates

* chore: remove export

* chore: tracker element type

* chore: track element and event helper.

* chore: minor improvements

* chore: minor refactors

* fix: workspace events

* fix: added slug

* fix: changes nomenclature

* fix: nomenclature

* chore: update event tracker helper types

* fix: data id

* refactor: cycle events (#7290)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* chore: update tracker elements

* chore: check for closest element with data-ph-element attribute

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* Refactor module events (#7291)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* refactor: module tracker event and element

* chore: update tracker element

* chore: revert unnecessary changes

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* refactor: global views, product tour, notifications, onboarding, users and sidebar related events

* chore: member tracker events (#7302)

* chore: member-tracker-events

* fix: constants

* refactor: update event tracker constants

* refactor: auth related event trackers (#7306)

* Chore: state events (#7307)

* chore: state events

* fix: refactor

* chore: project events (#7305)

* chore: project-events

* fix: refactor

* fix: removed hardcoded values

* fix: github redirection event

* chore: project page tracker events (#7304)

* added events for most page events

* refactor: simplify lock button event handling in PageLockControl

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>

* chore: minor cleanup and import fixes

* refactor: added tracker elements for buttons (#7308)

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* fix: event type

* refactor: posthog group event

* chore: removed instances of event tracker (#7309)

* refactor: remove event tracker stores and hooks

* refactor: remove event tracker store

* fix: build errors

* clean up event tracker payloads

* chore: workspace-settings-events

* fix: refactor

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-07-10 16:54:06 +05:30
Saurabh KumarandGitHub 47fc3ae3ab [SILO-278] Implement new OAuth flow for Slack integration (#3265)
* modify slack callbacks and worker planeclient call to use plane oauth

* fix: correct redirect URI for Slack integration settings
2025-07-10 15:53:42 +05:30
pushya22andGitHub 28652a243c Sync: Community Changes #3634 2025-07-10 15:36:53 +05:30
Anmol Singh BhatiaandGitHub b8b3e98847 [WEB-4470] fix: sidebar peek and theme (#3633) 2025-07-10 15:35:38 +05:30
Anmol Singh BhatiaandGitHub 4d0a7e4658 [WEB-4470] fix: sidebar custom theme bg (#7379) 2025-07-10 15:35:13 +05:30
sriram veeraghantaandGitHub 1cb49cacae fix: packages dev command failing due to missing dependency mapping (#7381)
* fix: packages dev command failing due to missing dependency mapping

* fix: typescript version to match with other packages
2025-07-10 15:26:43 +05:30
pushya22andGitHub 7202969654 Sync: Community Changes #3632 2025-07-10 14:24:53 +05:30
Vamsi KrishnaandGitHub 3618ffc2c3 [WEB-4469] fix: full screen mode visibility for Gnatt and Analytics 2025-07-10 14:23:08 +05:30
NikhilandGitHub b79c2512cf [WEB-4455]feat: add charset initialisation utility for email package #3631 2025-07-10 13:47:42 +05:30
f8d239b1ec [WEB-4227] feat: gantt layout for global views (#3387)
* draft: global views gantt

* draft: filters

* chore: new endpoints for gantt view

* draft: gantt view

* chore: updated get endpoint

* chore: removed the values

* feat: added issue dates update

* * feat: added permissions for dependecy and dates update

* chore: added guest level view filters

* chore: code split

* feat: added feature flags

* chore: refactor

* chore: updated feature flag for global views

* fix: build errors

* chore: optimised the query

* resiolved comments

* chore: removed redundant change

* fix: removed the sql file

* chore: removed unused type

* fix: runtime errors

* chore: moved components to new structure

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-07-10 01:37:15 +05:30
Saurabh KumarandGitHub e8a567c7d1 [SILO-364] API to trigger job pull step #3628 2025-07-09 19:59:22 +05:30
Anmol Singh BhatiaandGitHub 527e5a705d [WEB-4467] chore: default app rail visibility #3627 2025-07-09 18:29:39 +05:30
sriram veeraghantaandGitHub 4993be7690 Sync: Community Changes #3622 2025-07-09 18:07:31 +05:30
Aaryan KhandelwalandGitHub fcb6e269a0 [WIKI-497] feat: table insert column and row handles (#7286)
* refactor: tables width and selection UI

* fix: drag handle position

* refactor: selection decorator logic

* refactor: adjacent cells logic

* refactor: folder structure

* chore: default column width for new columns

* refactor: plugin location

* feat: table insert handlers

* refactor: css rules

* refactor: plugins folder structure

* chore: add aria labels
2025-07-09 17:59:04 +05:30
3ade9ee641 [WEB-4462] improvement: UI enhancements for desktop app to support side rail (#3608)
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-07-09 17:36:05 +05:30
5063c3383b [WEB-4391] feat: work item template, recurring work item configuration and logs model migrations (#3504)
* feat: add recurring workitem models and update workitem template relationships

- Introduced `RecurringWorkitemConfiguration` and `RecurringWorkitem` models to manage recurring workitems.
- Updated `WorkitemTemplate` to include `parent_workitem_template` and `project_template` fields for better hierarchy and association.
- Enhanced model imports in `__init__.py` to include new recurring models.

* refactor: rename and enhance recurring workitem models

- Renamed `RecurringWorkitemConfiguration` to `RecurringWorkitemTask` and `RecurringWorkitem` to `RecurringWorkitemTaskLog` for clarity.
- Updated model fields to include `start_at`, `end_at`, `interval_seconds`, and `cron_expression` for improved scheduling flexibility.
- Added validation to ensure either `interval_seconds` or `cron_expression` is provided.
- Established a one-to-one relationship with Celery Beat's `PeriodicTask` for task management.
- Enhanced related names and help texts for better understanding and usability.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-09 16:23:38 +05:30
Saurabh KumarandGitHub a4573fb2f5 [SILO-363] Add logs to check race conditions and consumer timeout clickup #3621 2025-07-09 16:09:23 +05:30
Saurabh KumarandGitHub 5c2597b405 [SILO-356] Migrations for applications new fields (#3588)
* add migrations for configuration url in apps

* add is_internal flag to applications
2025-07-09 16:08:51 +05:30
Dheeraj Kumar KetireddyandGitHub ee7e457a39 [WEB-4445] Enhancement: Add OpenSearch batch update tasks and monitoring features (#3605)
* Enhancement: Add OpenSearch batch update tasks and monitoring features

- Introduced new Celery tasks for processing batched OpenSearch updates and logging queue metrics.
- Updated the task registry in `celery.py` to include `process-batched-opensearch-updates` and `log-opensearch-update-queue-metrics`.
- Created a new module for batched search update tasks with comprehensive logging and error handling.
- Added a management command for monitoring OpenSearch batch update queues with various options for real-time and detailed statistics.
- Enhanced the OpenSearch documents module with new entity definitions and improved field handling for better search capabilities.
- Updated settings to utilize the new batched signal processor for OpenSearch operations.
- Removed deprecated signal handler to streamline the codebase.

* Refactor: Update logging and registry access in search-related tasks

- Changed logger name from "plane.api" to "plane.worker" for better context.
- Simplified model search relevance checks by utilizing the registry's public API.
- Enhanced cascade processing logic to improve clarity and efficiency.
- Minor adjustments in the monitoring command to streamline confirmation checks.

* Fix: Improve timestamp parsing in search queue monitoring

* Refactor search queue monitoring command to support sub-commands

* Update force-drain command to accept models as an option

* Implement chunked processing for Redis queue updates

- Added max_batch_size parameter to retrieve_all_queued_updates to limit the number of items processed at once, preventing memory issues.
- Updated cleanup_stale_queue_for_model to process items in chunks, improving efficiency and stability for large queues.
- Introduced OPENSEARCH_UPDATE_BATCH_MAX_SIZE setting for configurable batch processing limits.

* Refactor: Replace retrieve_all_queued_updates with get_queued_updates_chunks for improved memory efficiency

- Updated batched_search_update_task to utilize get_queued_updates_chunks, allowing for chunked processing of queued updates.
- Modified related imports and settings to reflect the new chunking approach.
- Enhanced queue processing logic to log progress and handle errors more effectively during chunk processing.

* Changed the return value for unknown health statuses to use WARNING instead of HTTP_INFO

* Multiple enhancements for chunk processing and metric logging

- Reduced the chunk size for processing updates from 15000 to 1000 to improve performance.
- Simplified the logging of queue metrics by focusing on essential metrics and removing unnecessary health status checks.
- Updated timestamp handling to use epoch seconds for consistency.
- Enhanced the alerting mechanism to only flag large queues, streamlining monitoring efforts.

* Updated readme
2025-07-09 16:07:20 +05:30
853423608c [INFRA-206] fix: update build context and dockerfile paths in build.yml in deploy/selfhost (#7368)
* chore: update build context and dockerfile paths in build.yml for self-hosted deployment

* fix: build context

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-09 16:00:16 +05:30
pushya22andGitHub b95c74d256 Sync: Community Changes #3619 2025-07-09 13:57:52 +05:30
Anmol Singh BhatiaandGitHub ae87d9c6fa [WEB-4464] fix: content wrapper overflow #3617 2025-07-09 13:53:01 +05:30
Anmol Singh BhatiaandGitHub 9d88fc999c [WEB-4464] fix: content wrapper overflow (#7367) 2025-07-09 13:52:17 +05:30
M. PalanikannanandGitHub 3a35ffea57 [WIKI-534] fix: title input saves on closing peek overview (#3614) 2025-07-09 13:51:36 +05:30
pushya22andGitHub fa2411c13b Sync: Community Changes #3615 2025-07-09 13:50:41 +05:30
M. PalanikannanandGitHub dadd76b3ed [WIKI-534] fix: save title input on closing (#7366)
* fix: save title input on closing

* fix: title input updatioin
2025-07-09 13:37:17 +05:30
Anmol Singh BhatiaandGitHub 7a1d619db9 [WEB-4463] fix: subscription badge ui #3613 2025-07-09 13:09:14 +05:30
sriram veeraghantaandGitHub b1d1c0fc50 chore: format files (#3611)
* chore: format all files

* chore: format apiserver changes

* chore: format silo app

* chore: format etl and mobile-editor
2025-07-09 02:22:18 +05:30
sriram veeraghantaandGitHub 502d5e85ef fix: node version upgrade for silo service (#3612) 2025-07-09 01:47:28 +05:30
sriram veeraghantaandGitHub 0b65bc448a Sync: Community Changes #3610 2025-07-08 23:58:09 +05:30
sriram veeraghanta 67dfd1d652 fix: merge conflicts 2025-07-08 23:15:36 +05:30
sriram veeraghantaandGitHub 6ce700fd5d chore: format files using prettier (#7364)
* chore: format files using prettier

* chore: api server files formatted
2025-07-08 20:41:11 +05:30
sriram veeraghantaandGitHub 29ad29e6e7 Sync: Community Changes #3607 2025-07-08 20:39:44 +05:30
Anmol Singh Bhatiaandsriramveeraghanta 87c680d733 fix: merge conflicts while syncing changes from ce to ee 2025-07-08 20:38:29 +05:30
Anmol Singh BhatiaandGitHub 0225d806cc [WEB-4328] feat: sidebar revamp (#7217)
* chore: sidebar peek state added to theme store

* chore: extended sidebar wrapper added

* chore: resizeable sidebar component added

* chore: appsidebar root component

* chore: updated sidebar and applied necessary changes across codebase

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: breadcrumb changes

* chore: sidebar improvements and fixes

* chore: enhancements and fixes

* fix: peek sidebar leave

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: icons added

* chore: add dock variable and toggle function to theme store

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: theme and workspace store updated

* chore: workspace content wrapper and apprail context

* chore: workspace and project wrapper updated

* chore: app rail component

* chore: content wrapper

* chore: sidebar component updated

* chore: layout changes and code refactoring

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: appsidebar toggle button

* chore: code refactor

* chore: workspace menu improvements

* chore: sidebar spacing and padding improvements

* chore: settings layout improvement

* chore: enhancements

* chore: extended sidebar code refactor

* chore: code refactor

* fix: merge conflict

* fix: merge conflict

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-07-08 20:18:39 +05:30
Anmol Singh BhatiaandGitHub 86358f4f0c [WEB-4328] feat: sidebar revamp (#3418)
* chore: sidebar peek state added to theme store

* chore: extended sidebar wrapper added

* chore: resizeable sidebar component added

* chore: appsidebar root component

* preview sync

* ee changes

* chore: code refactor

* fix: build error

* fix: build error

* chore: breadcrumb changes

* fix: sidebar item badge

* chore: sidebar improvements and fixes

* chore: code refactor

* fix: build fix

* chore: enhancements and fixes

* fix: peek sidebar leave

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: icons added

* chore: add dock variable and toggle function to theme store

* chore: code refactor

* chore: code refactor

* chore: app rail feature flag added

* chore: theme and workspace store updated

* chore: workspace content wrapper and apprail context

* chore: workspace and project wrapper updated

* chore: app rail component

* chore: content wrapper

* chore: code refactor

* chore: sidebar component updated

* chore: layout changes and code refactoring

* chore: app switcher

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: appsidebar toggle button

* chore: code refactor

* chore: code refactor

* chore: workspace menu improvements

* chore: sidebar spacing and padding improvements

* chore: settings layout improvement

* chore: enhancements

* chore: extended sidebar code refactor

* chore: code refactor

* fix: merge conflict

* fix: merge conflict

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-07-08 20:18:27 +05:30
sriramveeraghanta a442a7c4e6 fix: silo type error on content parser 2025-07-08 18:51:24 +05:30
sriram veeraghantaandGitHub 016e40fa4e promote: mobile-runway to preview #3603 2025-07-08 18:34:37 +05:30
sriram veeraghantaandGitHub 67b042f903 Sync: Community Changes #3604 2025-07-08 18:31:23 +05:30
gurusinath ead099f669 conflicts: resolved merge conflicts 2025-07-08 18:30:46 +05:30
Henit ChobisaandGitHub e68e718ee1 [SILO-361] fix: slack integration breaking on empty description #3601 2025-07-08 18:29:42 +05:30
NikhilandGitHub fd9da3164e [WEB-4452] fix: enhance URL detection logic in contains_url function (#7352)
* fix: enhance URL detection logic in contains_url function

* fix: improve error handling in URL detection logic

* fix: enhance URL detection logic with length limits and edge case handling

* fix: adjust URL line length limit for improved detection accuracy
2025-07-08 18:28:47 +05:30
Saurabh KumarandGitHub af6d62bb9c [SILO-359] Refactor Clickup importer to support pagination in pulling (#3600)
* feat: implement batch processing for ClickUp data migration with pagination support

* refactor: move pullBatches in clickup migrator as private method

* remove redundant pull method

* refactor: standardize pagination context naming in ClickUp migrator and base import worker
2025-07-08 18:27:19 +05:30
guru_sainathandGitHub 070e868127 [MOBIL-1027] dev: Handle project default module, cycle, view, and page in project create and update mutations (#3551)
* dev: handled the project default module, cycle, view, and page in project create and update mutation

* dev: handled the project feature while creating the project
2025-07-08 18:21:36 +05:30
guru_sainathandGitHub 92204e08b4 [MOBIL-1026] fix: update shared pages logic to prevent other users pages from appearing in list (#3557)
* dev: handled the shared pages list

* dev: handled the permission levels for workspace pages

* dev: updated permission
2025-07-08 18:21:19 +05:30
guru_sainathandGitHub 2fe8405bb0 [MOBIL-1039] dev: add teamspace validation in work item info query (#3602)
* dev: handled the teamspace permissions

* dev: updated the await in teamspace filter

* dev: handled the project details in workitem info query
2025-07-08 18:20:22 +05:30
M. PalanikannanandGitHub db143fc166 [WIKI-528] fix: save the issue description on component's unmount as well #3598 2025-07-08 16:14:57 +05:30
pushya22andGitHub 61c65cc894 Sync: Community Changes #3597 2025-07-08 16:09:51 +05:30
Aaryan KhandelwalandGitHub a4ec80ceca [WIKI-530] regression: page version history dropdown item (#7360) 2025-07-08 16:07:03 +05:30
NikhilandGitHub 432cd0e05e [WEB-4455] feat: add charset detection and conversion utilities for email processing 2025-07-08 15:52:13 +05:30
Surya PrashanthandGitHub f92325746c [SILO-353] chore: setup auto reconnection with silo mq consumers (#3575) 2025-07-08 15:45:07 +05:30
Surya PrashanthandGitHub 60288e8a32 [SILO-335] fix: remove lowercase logic for flatfile label transform (#3584) 2025-07-08 15:44:39 +05:30
SangeethaandGitHub 16332e0f6d [WEB-4380] chore: work item link sentry error (#7316)
* chore: add warning param in log_exception:''

* fix: logging the exception
2025-07-08 15:43:42 +05:30
SangeethaandGitHub 5d8658121f [WEB-4413] fix: initiatives count updation (#3541)
* fix: initiatives not deleting from project properties

* feat: tests for ProjectSerializer
2025-07-08 15:41:53 +05:30
Aaryan KhandelwalandGitHub 2c325b0a2b [WIKI-527] fix: extra scrollbar in wiki sidebar #3595 2025-07-08 15:40:05 +05:30
pushya22andGitHub f0f3d070ca Sync: Community Changes #3594 2025-07-08 15:39:23 +05:30
Prateek ShouryaandGitHub f40dda8fdc [WEB-4454] fix: check project publish status using anchor field from publish settings 2025-07-08 15:22:00 +05:30
M. PalanikannanandGitHub 13ab0624d0 [WIKI-510] feat: enhance issue description input with unsaved changes tracking (#7357) 2025-07-08 14:58:41 +05:30
388588c588 fix: turbo dev command (#7358)
* chore: add dependencies for dev and develop scripts in turbo.json

* update persistence

* chore: remove develop command

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-07-08 13:59:54 +05:30
Aaron HeckmannandGitHub c0f986cf95 fix(partial): get dev env working (#7356)
part of #7355
2025-07-08 13:33:12 +05:30
pushya22andGitHub 5c910aa393 Sync: Community Changes #3592 2025-07-08 03:49:15 +05:30
Vipin ChaudharyandGitHub ab79a5da10 [WIKI-524] fix: emoji fall back image (#7354) 2025-07-08 03:21:03 +05:30
Prateek ShouryaandGitHub a2a62e2731 [WEB-4453] fix: enable revalidation on focus and stale data for current user fetch to handle 401 errors (#7353) 2025-07-07 19:52:18 +05:30
Aaryan KhandelwalandGitHub 0c40ad65ab [WEB-523] chore: attachment asset in navigation pane (#3586) 2025-07-07 18:23:01 +05:30
pushya22andGitHub 70b809a5bf Sync: Community Changes #3591 2025-07-07 18:07:26 +05:30
Aaryan KhandelwalandGitHub e306a92adb [WIKI-523] refactor: assets item component (#7346) 2025-07-07 18:04:12 +05:30
Vamsi KrishnaandGitHub c5c198e149 [WEB-4444]fix: epics copy modal in peek view #3590 2025-07-07 17:42:09 +05:30
Bavisetti NarayanandGitHub e2a0685c66 [WEB-4449] bug: move page internally in wiki #3587 2025-07-07 17:41:34 +05:30
pushya22andGitHub d8009a18dc Sync: Community Changes #3589 2025-07-07 16:11:35 +05:30
Prateek ShouryaandGitHub 0f0c4b5293 [WEB-4443] fix: remove scroll-behaviour smooth causing Gantt chart continuous scroll (#7351) 2025-07-07 16:09:52 +05:30
pushya22andGitHub 1b8d837eeb Sync: Community Changes #3585 2025-07-04 18:58:45 +05:30
Vipin ChaudharyandGitHub 28375c46e5 [WIKI-521] fix : emoji unexpectedly scroll (#7344)
* fix: emoji modal scroll

* refactor: emoji list

* fix: escape behavior

* fix: minor type fixes
2025-07-04 18:35:23 +05:30
sriram veeraghantaandGitHub 2e3c4deaa3 Sync: Community Changes #3582 2025-07-04 18:29:35 +05:30
Aaryan Khandelwal 97c7ba0f7b fix: merge conflicts resolved from preview 2025-07-04 18:11:14 +05:30
sriramveeraghanta a193bb9aa5 fix: upgrade lxml version 2025-07-04 17:56:59 +05:30
Aaryan KhandelwalandGitHub b909416c74 [WIKI-519] regression: page creator and version info #7341 2025-07-04 17:10:03 +05:30
sriram veeraghantaandGitHub 4064a60c0d Sync: Community Changes #3581 2025-07-04 16:30:46 +05:30
sriram veeraghantaandGitHub 66c6654c6c Merge branch 'preview' into sync/ce-ee 2025-07-04 16:30:24 +05:30
sriram veeraghantaandGitHub 509db32267 chore: updated node version to 22 and python version to 3.12.10 (#7343)
* chore: updated node version to 22 and python version to 3.12.10

* chore: remove unneccessary comments

* chore: remove nodejs-current dependency
2025-07-04 16:28:30 +05:30
sriramveeraghanta fb4b594d4f fix: branch build api context 2025-07-04 16:27:54 +05:30
sriramveeraghanta f9c3819959 fix: cmd in dockerfiles of live and silo 2025-07-04 15:48:50 +05:30
sriramveeraghanta 1843ece4fe chore: remove create release workflow 2025-07-04 15:42:48 +05:30
sriram veeraghantaandGitHub 194ad6774d Sync: Community Changes #3579 2025-07-04 15:39:59 +05:30
sriramveeraghanta 46a46b7ef6 fix: merge conflicts 2025-07-04 15:37:59 +05:30
sriramveeraghanta 57ea400f31 chore: unused files 2025-07-04 15:34:59 +05:30
sriram veeraghantaandGitHub fdbe4c2ca6 chore: rename server to api (#7342) 2025-07-04 15:32:21 +05:30
sriram veeraghantaandGitHub 0eb2d78e1b Sync: Community Changes #3578 2025-07-04 15:12:01 +05:30
sriramveeraghanta 35dcec1b8a fix: merge conflicts 2025-07-04 15:11:35 +05:30
sriramveeraghanta 6bee97eb26 chore: remove unused files 2025-07-04 15:08:25 +05:30
sriram veeraghantaandGitHub 31d328855c Sync: Community Changes #3577 2025-07-04 14:24:15 +05:30
sriram veeraghantaandGitHub ba884d1e4d feat: adding standard scripts for lint and format check (#7326)
* feat: adding standard scripts for lint and format check

* fix: update packages scripts

* fix: adding tsup config to utils package

* chore: updated build scripts in logger pacakge
2025-07-04 14:23:18 +05:30
sriram veeraghantaandGitHub f2a87e8f15 feat: Adding Docker CMD in all Dockerfiles (#7339)
* fix: adding cmd to dockerfiles

* fix: adding cmd to live docker file
2025-07-04 13:59:14 +05:30
sriramveeraghanta 4f5272c8af sync: canary cahnges to preview 2025-07-04 13:57:40 +05:30
sriram veeraghanta 19dd83b14a chore: remove unused files 2025-07-04 02:27:52 +05:30
Dheeraj Kumar KetireddyandGitHub bb46f951c7 [WEB-4439] fix: optimize original value tracking in Issue (#3573)
Page models to avoid unnecessary DB queries and hit maximum recursion depth
2025-07-03 19:20:41 +05:30
sriram veeraghantaandGitHub 4b69648565 Sync: Community Changes #3572 2025-07-03 19:16:13 +05:30
sriramveeraghanta 3429dc0ae8 fix: merge conflicts 2025-07-03 19:15:46 +05:30
NikhilandGitHub 805cfed1a3 refactor: update paths and structure for server services in Docker and documentation (#7333)
- Changed references from 'apiserver' to 'apps/server' in Docker configurations and environment setup.
- Updated contributing documentation to reflect the new service structure.
- Adjusted setup script to accommodate the new directory layout.
- Removed obsolete files related to the previous structure.
2025-07-03 18:42:14 +05:30
sriram veeraghantaandGitHub 1de95ef0d0 feat: optimize docker builds for live server (#7334)
* feat: optimize docker builds for live server

* chore: removed package.json from dockerfile
2025-07-03 18:38:15 +05:30
Vamsi KrishnaandGitHub 618fcf934f refactor: string url path (#7335) 2025-07-03 18:07:02 +05:30
sriram veeraghantaandGitHub 3c2b876f1e Sync: Community Changes #3570 2025-07-03 15:49:35 +05:30
Bavisetti NarayanandGitHub a0c1555735 Merge branch 'preview' into sync/ce-ee 2025-07-03 15:48:19 +05:30
sriramveeraghanta 2f22ca0aea chore: package version upgrade 2025-07-03 15:42:35 +05:30
Bavisetti Narayanandsriramveeraghanta b97d4c4def [WEB-4435] bug: trigger event for work item comment #7331 2025-07-03 15:12:10 +05:30
Vamsi Krishnaandsriramveeraghanta 635d550d88 [WEB-4432] fix: webhooks translation #7332 2025-07-03 15:12:10 +05:30
Vamsi Krishnaandsriramveeraghanta 4333cfbd11 [WEB-4432] fix: workspace analytics translation #7330 2025-07-03 15:12:10 +05:30
Vamsi Krishnaandsriramveeraghanta 9789e176d2 [WEB-4427] fix: header alignments #7311 2025-07-03 15:12:10 +05:30
Bavisetti NarayanandGitHub 59919d3874 [WEB-4435] bug: trigger event for work item comment #7331 2025-07-03 15:06:11 +05:30
Vamsi KrishnaandGitHub 75235f2ad5 [WEB-4432] fix: webhooks translation #7332 2025-07-03 15:05:13 +05:30
Aaryan KhandelwalandGitHub 0a194e8673 [WEB-466] fix: rich text editor build #3569 2025-07-03 14:45:22 +05:30
Dheeraj Kumar KetireddyandGitHub 62ebb2fb8e [WEB-4372] Chore: Enhancements for supporting PI vector search (#3561)
* chore: add keyword fields to description and name in IssueDocument and PageDocument

* [WEB-4372] feat: enhance semantic field management and indexing behavior in documents

This commit introduces improvements to the handling of semantic fields in the Issue and Page models, including original value tracking for change detection. It also updates the indexing logic to differentiate between full reindexing and partial updates based on semantic field changes. Additionally, the signal handler is enhanced for better batch processing and error logging during index updates.
2025-07-03 14:27:45 +05:30
sriram veeraghantaandGitHub 38a370544d Sync: Community Changes #3568 2025-07-03 14:24:33 +05:30
Aaryan Khandelwal ad9e21f228 fix: merge conflicts resolved from preview 2025-07-03 14:21:23 +05:30
Aaryan KhandelwalandGitHub 6f27ec031d [WIKI-466] refactor: remove rich text read only editor (#7241)
* refactor: remove rich text read only editor

* fix: type imports
2025-07-03 14:16:17 +05:30
sriram veeraghantaandGitHub 6ce0f4646e Sync: Community Changes #3567 2025-07-03 14:13:44 +05:30
Vamsi KrishnaandGitHub 7d141f26ad [WEB-4432] fix: workspace analytics translation #7330 2025-07-03 14:12:51 +05:30
Aaryan KhandelwalandGitHub 71012d24ab [WEB-4436] fix: tailwind config #7329 2025-07-03 14:12:17 +05:30
Saurabh KumarandGitHub 7a814dbcc7 [SILO-352] Bug fixes and logs improvement Clickup importer (#3564) 2025-07-03 13:46:43 +05:30
Surya PrashanthandGitHub 1bbb41c1fd [SILO-350] chore: add captureException function (#3560)
* [SILO-350] chore: add captureException function

* chore: refactor dockerfile.silo with new structural changes
2025-07-03 13:46:19 +05:30
0ebd4d952e [WEB-4404] feat: add event trackers for teamspaces (#3553)
* feat: event tracker helper

* feat: track click events for `data-ph-element`

* fix: handled click events

* fix: handled name

* chore: tracker element updates

* chore: remove export

* chore: tracker element type

* chore: track element and event helper.

* chore: minor improvements

* chore: minor refactors

* fix: workspace events

* fix: added slug

* fix: changes nomenclature

* fix: nomenclature

* chore: update event tracker helper types

* fix: data id

* refactor: cycle events (#7290)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* chore: update tracker elements

* chore: check for closest element with data-ph-element attribute

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* Refactor module events (#7291)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* refactor: module tracker event and element

* chore: update tracker element

* chore: revert unnecessary changes

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* refactor: global views, product tour, notifications, onboarding, users and sidebar related events

* chore: member tracker events (#7302)

* chore: member-tracker-events

* fix: constants

* refactor: update event tracker constants

* refactor: remove event trackers from ee components

* refactor: auth related event trackers (#7306)

* Chore: state events (#7307)

* chore: state events

* fix: refactor

* chore: project events (#7305)

* chore: project-events

* fix: refactor

* fix: removed hardcoded values

* fix: github redirection event

* chore: project page tracker events (#7304)

* added events for most page events

* refactor: simplify lock button event handling in PageLockControl

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>

* chore: minor cleanup and import fixes

* refactor: added tracker elements for buttons (#7308)

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* fix: event type

* refactor: posthog group event

* fix: captureProjectEvents

* fix: project overview attachments

* chore: removed instances of event tracker (#7309)

* refactor: remove event tracker stores and hooks

* refactor: remove event tracker store

* fix: build errors

* fix: page events

* refactor: work item and epics related event trackers

* fix: page events

* clean up event tracker payloads

* fix: build errors

* [WEB-4404] feat: add event trackers for teamspaces

* fix: build errors

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-07-03 13:05:25 +05:30
sriram veeraghanta 6e8fd3a283 fix: admin docker file path in branch build cloud 2025-07-03 03:43:27 +05:30
sriram veeraghanta 6323a82290 fix: upload s3 bucket step in branch build ee 2025-07-03 03:40:31 +05:30
sriram veeraghanta 844ebb2922 fix: build branch ee and cloud workflows 2025-07-03 03:33:49 +05:30
sriram veeraghantaandGitHub aeb97bbd7f Sync: Community Changes #3565 2025-07-03 02:49:17 +05:30
sriram veeraghanta e79145aa4b fix: merge conflicts 2025-07-03 02:45:47 +05:30
sriram veeraghanta f7cd091717 fix: rename apiserver to server 2025-07-03 01:59:20 +05:30
sriram veeraghanta 00bdcd12bf fix: moving application services to apps folder 2025-07-03 01:55:24 +05:30
sriram veeraghantaandGitHub 7d417c5457 fix: update docker file paths and context in branch build workflow #7323 2025-07-03 01:26:40 +05:30
sriram veeraghantaandGitHub 021b6eebdd fix: admin and space docker paths (#7322) 2025-07-03 01:08:49 +05:30
sriram veeraghanta e184b646e6 Merge branch 'pratapalakshmi-preview' into preview 2025-07-03 00:53:34 +05:30
sriram veeraghanta 549a0009e7 Merge branch 'preview' of github.com:pratapalakshmi/plane into pratapalakshmi-preview 2025-07-03 00:53:05 +05:30
sriram veeraghantaandGitHub 944b873184 chore: move all services inside the apps folder (#7321)
* chore: move all services inside the apps folder

* chore: rename apiserver to server
2025-07-03 00:44:13 +05:30
Mohamed HayballaandGitHub 6000639921 feat(tests): Add comprehensive test suite for the Project API (#7252)
* feat(tests): Add reusable workspace fixture

Introduces a new `workspace` fixture in `conftest.py` to provide a
consistent and reusable setup for tests that require a workspace.

* feat(tests): Add tests for project creation (POST)

This commit introduces a comprehensive test suite for the project creation API endpoint.

The suite covers a wide range of scenarios, including:
- Successful creation and verification of side-effects (default states, project members, user properties).
- Validation for invalid or missing data (400 Bad Request).
- Permission checks for different user roles (e.g., guests are forbidden).
- Authentication requirements (401 Unauthorized).
- Uniqueness constraints for project names and identifiers (409 Conflict).
- Successful creation with all optional fields populated.

It leverages the `workspace`, `session_client` and `create_user` fixtures for a consistent test setup.

* refactor(tests): Centralize project URL helper into a base class

To avoid code duplication in upcoming tests, this commit introduces a `TestProjectBase` class.

The `get_project_url` helper method is moved into this shared base class, and the existing `TestProjectAPIPost` class is updated to inherit from it. This ensures the URL generation logic is defined in a single place and preparing the suite for the upcoming GET tests.

* feat(tests): Add tests for project listing and retrieval (GET)

This commit adds a suite for the GET method. It leverages the previously created `TestProjectBase` class for URL generation.

The new test suite covers:
- Listing projects:
  - Verifies that administrators see all projects.
  - Confirms guests only see projects they are members of.
  - Tests the separate detailed project list endpoint.
- Retrieving a single project:
  - Checks for successful retrieval of a project by its ID.
  - Handles edge cases for non-existent and archived projects (404 Not Found).
- Authentication:
  - Ensures authentication is required (401 Unauthorized).

* feat(tests): Add tests for project update (PATCH) and deletion (DELETE)

Key scenarios tested for PATCH:
- Successful partial updates by project administrators.
- Forbidden access for non-admin members (403).
- Conflict errors for duplicate names or identifiers on update (409).
- Validation errors for invalid data (400).

Key scenarios tested for DELETE:
- Successful deletion by both project admins and workspace admins.
- Forbidden access for non-admin members (403).
- Authentication checks for unauthenticated users (401).

* Remove unnecessary print statement

* refactor(tests): Update workspace fixture to use ORM

Updates the `workspace` fixture to create the model instance directly via the ORM using the `Workspace` model instead of the API, as requested during code review.

* Refactor: Remove some unused imports

Removes imports that I added while working on the test suite for the Project API but were ultimately not used. Note that other unused imports still exist from the state of the codebase when this branch was created/forked.
2025-07-03 00:40:42 +05:30
sriramveeraghanta a81311426c fix: build errors 2025-07-02 21:20:27 +05:30
Prateek ShouryaandGitHub 6ea24bfdcd [WEB-4429] fix: url path generation #7317 2025-07-02 19:57:10 +05:30
sriram veeraghantaandGitHub c94ac25596 Sync: Community Changes #3563 2025-07-02 19:53:06 +05:30
sriramveeraghanta a44d5308b4 fix: merge conflicts 2025-07-02 19:52:38 +05:30
sriramveeraghanta 5ed9e2c5e2 fix: adding logger package dependency in live server 2025-07-02 19:49:32 +05:30
sriram veeraghantaandGitHub 8cc23bc4a5 refactor: Admin App with better layouts and Meta Information (#7200)
* fix: layout structure in admin

* fix: layout structure in admin

* fix: delete layout files

* chore: updated form related info

* fix: admin import statements

* fix: general page unauthorized flickering issue

* chore: logs related

* chore: lock file updates

* fix: build errors

* fix: coderabbit suggestions
2025-07-02 19:43:44 +05:30
sriram veeraghantaandGitHub 6ee7b7b570 Sync: Community Changes #3562 2025-07-02 19:40:07 +05:30
sriramveeraghanta 44621130f0 fix: build errors 2025-07-02 19:39:23 +05:30
sriramveeraghanta d37cac50c9 fix: merge conflicts 2025-07-02 18:26:55 +05:30
Aaryan KhandelwalandGitHub 551d14a488 regressions: editor build errors #3559 2025-07-02 18:21:42 +05:30
sriram veeraghantaandGitHub 7153064ebb fix: live server runtime errors (#7314)
* fix: live tsconfig and tsup config

* fix: lock file updates

* feat: adding build process to constants and types packages

* chore: coderabbit suggestions
2025-07-02 18:20:18 +05:30
Dheeraj Kumar KetireddyandGitHub 2bd2c28370 [WEB-4420] Chore: Add OpenSearch document definitions for Plane's search functionality #3542
This commit introduces a new README.md file detailing the structure, features, and usage of OpenSearch documents within the Plane application. It covers document types, key features like edge n-gram and semantic search, configuration settings, and guidelines for adding new document types and running index operations.
2025-07-02 17:51:37 +05:30
Akshita GoyalandGitHub 1b16e2ebf0 [SILO-319] fix: revamp connections #3416 2025-07-02 17:34:20 +05:30
sriram veeraghantaandGitHub ad237d6208 Sync: Community Changes #3555 2025-07-02 16:29:49 +05:30
Prateek Shourya 92084ba97d Merge branch 'sync/ce-ee' of github.com:makeplane/plane-ee into sync/ce-ee 2025-07-02 16:26:18 +05:30
M. PalanikannanandGitHub 5874636b0b [WIKI-508] fix: select all with table select #7285 2025-07-02 15:41:31 +05:30
Aaryan KhandelwalandGitHub f679628365 [WIKI-449] feat: image block download and alignment options (#7254)
* refactor: custom image extension

* refactor: extension config

* revert: image full screen component

* fix: undo operation

* chore: add download and alignment options

* chore: render image full screen modal in a portal

* chore: add missing attribute to image extension

* chore: minor bugs and improvements

* chore: add aria attributes

* chore: remove unnecessary file

* fix: full screen modal z-index
2025-07-02 15:36:06 +05:30
Vamsi KrishnaandGitHub 4a74a7aee2 [WEB-4427]fix: header alignments #3556 2025-07-02 15:34:20 +05:30
Vipin ChaudharyandGitHub ba6b822f60 [WIKI-402] feat: emoji support for all editors (#7275)
* feat: basic emoji

* feat:emoji slash command

* update slice command

* refactor: emoji storage

* refactor:types

* refactor: emoji list

* refactor: restructure extension

* chore: add comments

* chore: update comments

* fix: fallback image
2025-07-02 15:32:07 +05:30
Vamsi KrishnaandGitHub 757019bf43 [WEB-4427] fix: header alignments #7311 2025-07-02 15:30:40 +05:30
Prateek Shourya 3263608cfa Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-07-02 15:30:25 +05:30
M. PalanikannanandGitHub 295eb1ef72 [WIKI-506] fix: close the link view after 300ms of hovering out #7283 2025-07-02 15:29:32 +05:30
Aaryan KhandelwalandGitHub 1fcffad7dd [WIKI-491] [WIKI-496] [WIKI-499] refactor: tables width and selection UI (#7274)
* refactor: tables width and selection UI

* fix: drag handle position

* refactor: selection decorator logic

* refactor: adjacent cells logic

* refactor: folder structure

* chore: default column width for new columns

* refactor: plugin location
2025-07-02 15:27:48 +05:30
Manish GuptaandGitHub b21fd75bf2 [INFRA-198]: AMI Fixes for marketplace publishing (#3554)
* refactor: update AMI and CloudFormation template handling in CI workflow

- Removed previous manifest file references and associated cleanup steps from the CI workflow.
- Updated S3 paths for storing the latest and versioned AMI manifests.
- Introduced a new step to store the CloudFormation template in S3 with updated paths.
- Enhanced the CloudFormation template to include a parameter for AMI ID, replacing the previous region-based mapping.
- Improved AMI naming convention in Packer configuration to include a timestamp.

* chore: enhance cleanup commands in Packer configuration for AMI builds

- Added removal of authorized_keys for the root user to improve security during AMI creation.
- Included command to clear command history to further secure the AMI environment.

* chore: improve cleanup commands in Packer configuration for AMI builds

- Replaced command to clear command history with specific removal of .bash_history files for both ubuntu and root users.
- Enhanced security measures during AMI creation by ensuring sensitive history data is removed.

* chore: refine cleanup commands in Packer configuration for AMI builds

- Updated command to remove command history files for both ubuntu and root users to a more general pattern, enhancing security during AMI creation.

* feat: add SSH and Application Security Group CIDR parameters to CloudFormation template

- Introduced new parameters for SSH and Application Security Group CIDR configurations, allowing for more granular control over access.
- Updated metadata and validation assertions to ensure these parameters are required when creating new infrastructure.
- Modified security group rules to reference the new CIDR parameters for SSH, HTTP, and HTTPS access.

* fix: update PublicSubnetCidr default value in CloudFormation template

- Changed the default value of PublicSubnetCidr from "10.50.1.0/16" to "10.50.1.0/24" to better align with subnetting requirements for new infrastructure.

* chore: update default values for SSH and Application Security Group CIDR parameters in CloudFormation template

- Changed the default values for SshSecurityGroupCidr and ApplicationSecurityGroupCidr from "0.0.0.0/0" to an empty string to enforce explicit configuration of access controls.
2025-07-02 15:26:56 +05:30
Aaryan KhandelwalandGitHub 0b159c4963 [WIKI-400] feat: page navigation pane (#7206)
* init: page navigation pane

* chore: outline and info tabs

* chore: asset download endpoint

* chore: realtime document info updates

* chore: add support for code splitting

* fix: formatting

* refactor: image block id generation

* chore: implement translation

* refactor: assets list storage logic

* fix: build errors

* fix: image extension name

* refactor: add support for additional asset items

* refactor: asset extraction logic

* chore: add translations

* fix: merge conflicts resolved from preview

* chore: remove version history option from the dropdown

* chore: query params handling

* chore: remove unnecessary logic

* refactor: empty state components

* fix: empty state asset path
2025-07-02 15:25:52 +05:30
Saurabh KumarandGitHub e051bc5bc8 [SILO-287] Github Enterprise Server (#3516)
* [SILO-287] Github Enterprise Server (#3490)

* chore: add controller and strategy for github enterprise + service and type modification

* chore: github enterprise store changes

* ui changes for github enterprise

* UI and store changes + bug fixes

* fix feature flag value

* chore: github enterprise worker changes and bug fixes

* chore: github enterprise worker changes and bug fixes

* add translations + missing fields in oauth strategy + remove dev dependency

* refactor: update OAuth strategy methods and improve GitHub Enterprise integration

* add github enterprise in user profile connection

* refactor: update integration links to use urlSlug for routing

* fix: make user_id optional in listWorkspaceCredentials method

* remove target_host redundant dependency

* fix target host issue

* fix missing required fields issue

* remove unused variable
2025-07-02 15:23:49 +05:30
cfe169c6d7 [WEB-4423] refactor: event trackers (#7289)
* feat: event tracker helper

* feat: track click events for `data-ph-element`

* fix: handled click events

* fix: handled name

* chore: tracker element updates

* chore: remove export

* chore: tracker element type

* chore: track element and event helper.

* chore: minor improvements

* chore: minor refactors

* fix: workspace events

* fix: added slug

* fix: changes nomenclature

* fix: nomenclature

* chore: update event tracker helper types

* fix: data id

* refactor: cycle events (#7290)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* chore: update tracker elements

* chore: check for closest element with data-ph-element attribute

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* Refactor module events (#7291)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* refactor: module tracker event and element

* chore: update tracker element

* chore: revert unnecessary changes

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* refactor: global views, product tour, notifications, onboarding, users and sidebar related events

* chore: member tracker events (#7302)

* chore: member-tracker-events

* fix: constants

* refactor: update event tracker constants

* refactor: auth related event trackers (#7306)

* Chore: state events (#7307)

* chore: state events

* fix: refactor

* chore: project events (#7305)

* chore: project-events

* fix: refactor

* fix: removed hardcoded values

* fix: github redirection event

* chore: project page tracker events (#7304)

* added events for most page events

* refactor: simplify lock button event handling in PageLockControl

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>

* chore: minor cleanup and import fixes

* refactor: added tracker elements for buttons (#7308)

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* fix: event type

* refactor: posthog group event

* chore: removed instances of event tracker (#7309)

* refactor: remove event tracker stores and hooks

* refactor: remove event tracker store

* fix: build errors

* clean up event tracker payloads

* fix: coderabbit suggestions

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-07-02 15:23:18 +05:30
8e229384a2 [WEB-4424] refactor: event trackers (#3549)
* feat: event tracker helper

* feat: track click events for `data-ph-element`

* fix: handled click events

* fix: handled name

* chore: tracker element updates

* chore: remove export

* chore: tracker element type

* chore: track element and event helper.

* chore: minor improvements

* chore: minor refactors

* fix: workspace events

* fix: added slug

* fix: changes nomenclature

* fix: nomenclature

* chore: update event tracker helper types

* fix: data id

* refactor: cycle events (#7290)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* chore: update tracker elements

* chore: check for closest element with data-ph-element attribute

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* Refactor module events (#7291)

* chore: update event tracker helper types

* refactor: cycle events

* refactor: cycle events

* refactor: cycle event tracker

* refactor: module tracker event and element

* chore: update tracker element

* chore: revert unnecessary changes

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>

* refactor: global views, product tour, notifications, onboarding, users and sidebar related events

* chore: member tracker events (#7302)

* chore: member-tracker-events

* fix: constants

* refactor: update event tracker constants

* refactor: remove event trackers from ee components

* refactor: auth related event trackers (#7306)

* Chore: state events (#7307)

* chore: state events

* fix: refactor

* chore: project events (#7305)

* chore: project-events

* fix: refactor

* fix: removed hardcoded values

* fix: github redirection event

* chore: project page tracker events (#7304)

* added events for most page events

* refactor: simplify lock button event handling in PageLockControl

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>

* chore: minor cleanup and import fixes

* refactor: added tracker elements for buttons (#7308)

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>

* fix: event type

* refactor: posthog group event

* fix: captureProjectEvents

* fix: project overview attachments

* chore: removed instances of event tracker (#7309)

* refactor: remove event tracker stores and hooks

* refactor: remove event tracker store

* fix: build errors

* fix: page events

* refactor: work item and epics related event trackers

* fix: page events

* clean up event tracker payloads

* fix: build errors

---------

Co-authored-by: Prateek Shourya <prateekshourya@Prateeks-MacBook-Pro.local>
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-07-02 15:17:32 +05:30
Surya PrashanthandGitHub a943e94014 [SILO-348] fix: on Project save, add app bots as members (#3550) 2025-07-01 19:38:59 +05:30
sriram veeraghantaandGitHub 9696b50a06 Sync: Community Changes #3544 2025-07-01 19:33:44 +05:30
sriramveeraghanta e78eef5d9e fix: yarn lock file updates 2025-07-01 19:31:48 +05:30
sriramveeraghanta e7f479e706 fix: merge conflicts 2025-07-01 19:27:59 +05:30
sriram veeraghantaandGitHub fa9c63716c fix: circular dependencies between packages (#7277) 2025-07-01 19:19:44 +05:30
411213d236 chore: circular dependecies fix (#3531)
* fix: circular dependencies and build issues (#7232)

* fix: circular dependencies and build issues
* chore: removed duplicate enums

* fix: build errors

* chore: minor fix

* fix: fixing circular dependecies and import errors

* fix: circular dependencies and pnpm builds (#3433)

* fix: circular dependencies and build issues

* fix: dependencies update

* fix: build

* chore: update all imports in types package

* chore: update enum imports

* chore: minor fixes

* fix: build errors

---------

Co-authored-by: Aaron Reisman <aaron.reisman@plane.so>

* fix: build errors

* chore: remove share page enum from constants

* fix: docker build

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Aaron Reisman <aaron.reisman@plane.so>
2025-07-01 19:19:02 +05:30
81789327f5 [INFRA-180] feat: Add Podman Quadlets Deployment Method (#3303)
* feat: add podman quadlets deployment method

- Added steps to process podman quadlets, including creating necessary directories and files.
- Implemented logic to split podman-quadlets.ini into separate files.
- Created a tarball of the podman quadlets for artifact upload.
- Updated the workflow to download the podman quadlets tarball during the build process.

* fix: update environment variable handling in build workflow

- Changed logic to always upload artifacts to S3.
- Enhanced the processing of quadlets.env to replace or append variables in plane.env.
- Updated specific URLs in plane.env for various services to point to the correct endpoints.

* fix: improve environment variable update logic in build workflow

- Enhanced the handling of environment variables in plane.env by differentiating between macOS and other operating systems for the sed command.
- Ensured that variables are correctly replaced or appended based on the operating system type.

* fix: update artifact upload logic in build workflow

- Changed the condition for uploading artifacts to S3, setting it to false in specific scenarios.
- Adjusted the handling of the artifact S3 suffix based on the new logic.

* fix: correct artifact upload and environment variable handling in build workflow

- Updated the artifact upload logic to always set the upload flag to true.
- Improved the handling of new lines in the environment variable file, ensuring proper formatting when appending lines.

* fix: refine environment variable handling in build workflow

- Simplified the appending of new lines in plane.env by removing unnecessary echo commands.
- Updated the conditional check for macOS in the sed command to use double brackets for consistency.

* fix: streamline environment variable processing in build workflow

- Combined conditional checks for comments and empty lines in plane.env to simplify logic.
- Reduced the number of echo commands for improved efficiency in appending lines.

* fix: enhance environment variable processing in build workflow

- Streamlined the logic for processing environment variables in plane.env by consolidating conditional checks for comments and empty lines.
- Improved code readability and efficiency by reducing redundant echo commands.

* fix: simplify environment variable processing in build workflow

- Consolidated the logic for processing non-comment, non-empty lines in plane.env to enhance readability.
- Removed redundant conditional checks to streamline the appending of key-value pairs.

* fix: enhance environment variable processing in build workflow

- Improved the logic for skipping comments and empty lines in plane.env for better clarity.
- Consolidated the handling of key-value pairs to streamline the appending and updating process, particularly for macOS compatibility.

* fix: clean up environment variable file by removing unnecessary comments

- Removed the comment line in quadlets.env for improved clarity and conciseness.
- Ensured the environment variable definitions remain intact for proper application configuration.

* fix: refine environment variable processing in build workflow

- Enhanced the handling of comment lines in plane.env by copying them as is and ensuring proper formatting.
- Improved the logic for processing empty lines to maintain clarity and efficiency in the environment variable file.

* fix: improve environment variable processing in build workflow

- Added initial content creation for plane.env to ensure a clean start.
- Enhanced the handling of comment lines and empty lines for better formatting and readability.
- Streamlined the appending of key-value pairs to maintain consistency across different operating systems.

* fix: enhance environment variable processing in build workflow

- Updated the conditional checks for comment lines and empty lines to improve clarity and consistency.
- Replaced the use of double brackets with single brackets for empty line checks to align with standard practices.

* fix: enhance environment variable handling in build workflow

- Added a newline before appending key-value pairs in plane.env to ensure proper formatting.
- Updated quadlets.env to include a comment for clarity on overriding existing environment variables.

* fix: improve environment variable handling in build workflow

- Streamlined the appending of comment lines in plane.env by using echo instead of printf for consistency.
- Removed unnecessary newlines when processing empty lines to enhance clarity and maintain formatting.

* fix: improve newline handling in environment variable processing

- Added newlines after comment lines in plane.env to enhance readability and maintain consistent formatting.
- Ensured that the initial content creation for plane.env includes an empty line for better structure.

* fix: improve newline handling in environment variable processing

- Added an additional newline after comment lines in plane.env to further enhance readability and maintain consistent formatting.

* fix: update environment variable handling in build workflow

- Removed unnecessary newline handling in plane.env to streamline the processing of comment lines.
- Commented out URL replacements in plane.env for future implementation when correct URLs are available.
- Added DB_URL and DATABASE_URL to quadlets.env for improved database connectivity.

* fix: update environment variable handling in install scripts

- Removed commented-out URL replacements in build workflow for clarity.
- Added WEB_URL and CORS_ALLOWED_ORIGINS variables to install script for improved configuration flexibility.

* fix: add SITE_ADDRESS variable to quadlets.env for improved configuration

- Introduced SITE_ADDRESS variable to quadlets.env to specify the site address for the application.

* fix: add install script for podman-quadlets to build workflow

- Included the install.sh script for podman-quadlets in the build process to enhance deployment capabilities.
- Updated the copying of configuration files to ensure all necessary components are included in the artifact.

* fix: update install script to use tar for extracting archives

- Replaced the unzip command with tar for extracting the archive in the install.sh script to improve compatibility and streamline the installation process.

* fix: add directory creation function to install script

- Introduced a new function to create required directories in the install.sh script, enhancing the setup process for podman-quadlets.
- Updated the file handling logic to ensure necessary directories are created in both ROOT_PLANE_DIR and target_dir, improving deployment reliability.

* fix: update artifact upload logic in build workflow

- Changed the condition for setting the artifact_upload_to_s3 variable to false when the target branch is not met, improving clarity in the workflow's artifact handling.

* fix: update artifact upload logic in build workflow

- Changed the condition for setting the artifact_upload_to_s3 variable to false when the target branch is not met, improving clarity in the workflow's artifact handling.

* fix: update directory structure in build workflow

- Changed the directory path for systemd configuration files from 'dist/etc/containers/systemd' to 'dist/config/containers/systemd' to better reflect the organization of configuration files in the build process.
- Updated the file handling logic to ensure proper placement of generated files in the new directory structure.

* fix: update APP_VERSION handling in build workflow

- Added logic to replace APP_VERSION with ARTIFACT_SUFFIX in quadlets.env during the build process, improving configuration management.

* fix: update artifact download path in build workflow

- Changed the download path for podman-quadlets artifact to the directory level, ensuring all related files are correctly placed during the build process.

* fix: rename install script and update build workflow references

- Renamed the install script for podman-quadlets from 'install.sh' to 'podman-quadlets-install.sh' to better reflect its purpose.
- Updated references in the build workflow to point to the new script name, ensuring consistency in the deployment process.

* refactor: update podman-quadlets configuration and build workflow

- Renamed network from 'plane_nw' to 'plane-nw' in podman-quadlet-compose.yaml and podman-quadlets.ini for consistency.
- Removed the podman-quadlets-install.sh script as it is no longer needed, streamlining the installation process.
- Adjusted paths in the build workflow to reflect the new directory structure and ensure proper file handling during the build process.

* fix: update artifact suffix handling in build workflow

- Changed the logic for setting the artifact_s3_suffix variable to use the branch name (BR_NAME) instead of the target branch, ensuring accurate suffix assignment for artifact uploads.

* fix: correct file copy path in build workflow

- Updated the file copy command in the build workflow to reference the install.sh script from the current directory instead of the parent directory, ensuring accurate file placement during the build process.

* fix: update port mappings in podman-quadlet configuration

- Changed the published ports in podman-quadlet-compose.yaml and podman-quadlets.ini from 80:80 and 443:443 to 8080:80 and 8443:443, respectively, to avoid conflicts and improve accessibility.

* fix: standardize network naming in podman-quadlet configuration

- Updated network names in podman-quadlet-compose.yaml from 'systemd-plane_nw' to 'systemd-plane-nw' for consistency across the configuration.

* fix: update web interface access URL in installation summary

- Changed the URL in the installation summary to include the correct port (8080) for accessing the Plane web interface, ensuring users navigate to the correct address.

* fix: update podman-quadlets configuration and build workflow

- Refactored the build workflow to create a new directory structure for podman quadlets, replacing 'dist' with 'plane-podman'.
- Updated the installation script and environment variable handling to use ${APP_RELEASE_VERSION} for image tags in podman-quadlet configuration files.
- Adjusted file copy commands and paths to ensure correct placement and processing of configuration files during the build.

* fix: enhance build workflow with file existence checks and tar creation validation

- Added checks to verify the existence of Caddyfile and podman-quadlets.ini before proceeding with file operations, ensuring necessary files are present.
- Updated the tar creation command to maintain the correct directory structure and included a validation step to confirm successful creation of the tar file.

* fix: update installation instructions and add help option to script

- Modified the installation summary to include the correct command for reloading the systemd user daemon.
- Added a help option to the main function of the installation script to provide usage information to users.

* changed `APP_VERSION` in quadlets.env

* refactor: update docker-compose configurations and image tags

- Restored and configured services (web, space, admin, live) in docker-compose-local.yml for local development.
- Updated image tags in podman-quadlet-compose.yaml to version v1.12.0 for all services, ensuring consistency across deployments.

* chore: comment out unused services in docker-compose-local.yml

- Commented out the configurations for web, space, admin, and live services in docker-compose-local.yml to streamline the file for local development.

* chore: update build workflow to handle airgapped builds and package podman quadlets to airgapped build

* feat: add API_HOSTNAME to quadlets.env for improved service configuration

---------

Co-authored-by: Manish Gupta <manish@plane.so>
2025-07-01 18:07:21 +05:30
sriramveeraghanta d3f1b511ad sync: canary changes to preview 2025-07-01 17:42:13 +05:30
Bavisetti NarayanandGitHub e624a17868 [WEB-4418]fix: fixed the pagination for issues #7301 2025-07-01 15:03:20 +05:30
Saurabh KumarandGitHub 5e9f1352dd [SILO-347] Add retry logic in case of 502 for plane apis #3547 2025-07-01 14:45:09 +05:30
Akshita GoyalandGitHub 23fa22a300 [SILO-337] fix: silo ui changes (#3518)
* fix: silo ui changes

* fix: ux copy

* chore: added website
2025-07-01 14:24:12 +05:30
Henit ChobisaandGitHub 08df65f79d [SILO-295] [SILO-292] feat: added support for rich text and mention sync across slack commands and comments (#3489)
* feat: made mentions parser to be compatible with multiple symbols

* feat: addedd plane mentions parser to parse mentions from plane html

* feat: returned workspace connection information from plane connection details

* feat: added custom issue rich text parsing block in slack issue modal

* feat: added content parser for slack integration

* feat: added view submission to address rich text blocks

* feat: added content parsing for plane comments

* feat: added turndown service

* feat: added file download as attachment when create issues from slack message

* fix: resolved comments

* fix: renamed slack content parser

* fix: added test for content parser
2025-07-01 14:23:56 +05:30
Saurabh KumarandGitHub ba128e12d3 [SILO-314] Migration to create new Github Enterprise App in Plane and tests for generate application (#3491)
* migration to support github enterprise server integration

* improved redirect uri conditional addition

* add tests and atomic txn for generate application + move redirect uris to constant

* add more test + fix slug for apps

* use django models instead of mock models
2025-07-01 14:23:29 +05:30
Vamsi KrishnaandGitHub 670da9fa03 [WEB-4416]fix: Unnecessary border on Intake header #7297 2025-07-01 13:21:29 +05:30
AaronandGitHub b03844ee2d [WEB-4417] chore: optimize package imports instead of transpile #7292 2025-07-01 12:54:39 +05:30
Dheeraj Kumar KetireddyandGitHub f36d0691fe Chore: replace relation choices with TextChoices in IssueRelation model (#7295) 2025-07-01 12:36:27 +05:30
Surya PrashanthandGitHub b7d3943249 [SILO-346] fix: import issue relation choices in job serializer (#3545)
* [SILO-346] fix: import issue relation choices in job serializer

* add parent_id in valid relation
2025-07-01 00:22:14 +05:30
sriram veeraghanta e7d888d817 chore: package version updated 2025-06-30 23:56:34 +05:30
guru_sainathandGitHub 3cf8872583 [MOBIL-1007] dev: Improve mobile auth web view #3543 2025-06-30 20:24:50 +05:30
sriramveeraghanta e0a7e93837 sync: canary to preview after cherry-pick 2025-06-30 19:33:34 +05:30
sriram veeraghantaandGitHub 3e5a5acb92 promote: mobile-runway to preview #3540 2025-06-30 18:55:37 +05:30
guru_sainathandGitHub e77a0487e7 [MOBIL-1023]: chore: Add new fields to Inbox (Notification) query (#3539)
* dev: updated inbox query

* dev: handled the notification

* dev: handled the epic notifications

* chore: removed is_inbpx_issue field
2025-06-30 17:56:22 +05:30
guru_sainathandGitHub b9649078b2 [MOBIL-1005] dev: Mobile Work Item Relations V2 with extended relation types (#3508)
* dev: listing the all workitem relations

* dev: issue relation create and update mutation update

* dev: updated workitem search query for workitem relation

* dev: handled the workitem relation activity when we remove

* chore: removed project filter in issue relation for cross issue relations

* chore: Epic relation with all relation keys

* chore: updated enum for work item relation type

* dev: handled the related issues for duplicate and relates to

* dev: issue relation activity key updates
2025-06-30 17:41:37 +05:30
guru_sainathandGitHub d06ba8cfd8 [MOBIL-1007] dev: Improve mobile auth web view — join workspace visibility, password confirmation, and invite handling via Google/GitHub (#3500)
* dev: password confirmation logic in mobile signup

* dev: updated the invitation acceptance in google and github authentication

* dev: handled the password strength in signin

* dev: updated password strength validation
2025-06-30 17:41:29 +05:30
425f9189a0 [MOBIL-993] feat: Implement shared pages in workspace, project, and user-level queries with permission handling (#3498)
* dev: seperated the file structure for page queries

* dev: updated page mutation file structure

* dev: removed comments

* dev: shared pages in workspace and project level

* dev: updated project level shared page query

* dev: updated user level shared page query

* dev: updated yoour work page query

* dev: handled the isShared and isSharedAccess in page type

* dev: handled the page detail shated permission

* dev: handled the feature flag and handled it in workspace page permission

* dev: handled the move_to_page in global search

---------

Co-authored-by: Sainath <sainath@Sainaths-MacBook-Pro-2.local>
2025-06-30 17:41:15 +05:30
Vamsi Krishnaandsriramveeraghanta 73d848696a [WEB-4365] fix: dates display properties toggle #7262 2025-06-30 16:15:48 +05:30
Jayash Tripathyandsriramveeraghanta 856802807b fix: work item peek infinite loop (#7284)
* fix: removed t function from dependency array which was causing infinite loop

* fix: add eslint disable comment for exhaustive-deps warning in IssuePeekOverview
2025-06-30 16:15:45 +05:30
sriram veeraghantaandGitHub 0d1c21af3d Sync: Community Changes #3537 2025-06-30 16:12:16 +05:30
Jayash TripathyandGitHub 2f6923fca0 fix: work item peek infinite loop (#7284)
* fix: removed t function from dependency array which was causing infinite loop

* fix: add eslint disable comment for exhaustive-deps warning in IssuePeekOverview
2025-06-30 16:10:50 +05:30
Vamsi KrishnaandGitHub 912246c592 [WEB-4365] fix: dates display properties toggle #7262 2025-06-30 16:10:06 +05:30
Dheeraj Kumar KetireddyandGitHub 6cf8611589 [WEB-4399] Added fields to issue index and page index required for pi vector search (#3533) 2025-06-30 13:35:26 +05:30
sriram veeraghantaandGitHub ccbac8adcf Sync: Community Changes #3528 2025-06-27 19:27:43 +05:30
sriramveeraghanta b4b77b1339 fix: build errors 2025-06-27 19:27:13 +05:30
sriramveeraghanta 026f543301 fix: merge conflicts 2025-06-27 19:05:57 +05:30
4a065e14d0 [WEB-4409] refactor: event constants (#7276)
* refactor: event constants

* fix: cycle event keys

* chore: store extension

* chore: update events naming convention

---------

Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-06-27 19:01:00 +05:30
Bavisetti NarayanandGitHub 70b583f6e2 [WIKI-502] fix: restricted access in pages (#3524) 2025-06-27 18:08:29 +05:30
Aaryan KhandelwalandGitHub f7f9d7e830 [WIKI-481] regression: editor parser build error 2025-06-27 16:58:14 +05:30
Aaryan KhandelwalandGitHub 73042d026c [WIKI-481] fix: duplicate attachments when template is used #3486 2025-06-27 16:16:13 +05:30
pushya22andGitHub 2c916d8456 Sync: Community Changes #3525
Sync: Community Changes
2025-06-27 16:14:37 +05:30
Aaryan KhandelwalandGitHub e09aeab5b8 [WIKI-481] refactor: editor parser #7261 2025-06-27 16:05:38 +05:30
Surya PrashanthandGitHub 13c166c0f6 [SILO-305] chore: add util, migration for setting correct bot_type (#3507)
- instead of setting bot_type as APP_BOT on all bots, only set when
is_mentionable is True on the application
- add migration to back migrate all existing bot users
2025-06-27 14:34:41 +05:30
JayashTripathyandGitHub 274603a532 [WEB-4371] feat: updated cycles and modules with lollipop chart (#3515)
* chore: replace ScatterChart with BarChart in analytics components and update chart configurations

* chore: update chart labels and tooltip end date in ModuleProgress component

* refactor: swap labels and colors for created and resolved issues in CreatedVsResolved component
2025-06-27 14:33:46 +05:30
Aaryan KhandelwalandGitHub ca887168bb [WIKI-501] fix: flagged extensions in slash commands (#3522) 2025-06-27 14:28:58 +05:30
NikhilandGitHub 154f602eda [WEB:4411]feat: extend order_by parameter validation in IssueViewSet and IssueDetailEndpoint (#3521)
- Added a method to validate the order_by parameter in both IssueViewSet and IssueDetailEndpoint, ensuring it corresponds to a defined set of sortable fields.
- Defaulted to sorting by created_at if the provided field is invalid, improving query robustness and consistency across views.
2025-06-27 13:07:43 +05:30
NikhilandGitHub 96cdf276fe [WEB-4410]feat: add validation for order_by parameter in WorkspaceViewIssuesViewSet #3519
- Implemented a method to validate the order_by parameter, ensuring it corresponds to valid sortable fields.
- Defaulted to sorting by created_at if the provided field is invalid, enhancing query flexibility and robustness.
2025-06-26 20:29:44 +05:30
NikhilandGitHub 252dd56f94 [WEB-4373] feat: add customer and customer request in workspace views based on feature flags (#3511)
* [WIKI-495] feat: add customer request fields to ViewIssueListSerializer and update WorkspaceViewIssuesViewSet for feature flag checks

- Enhanced ViewIssueListSerializer to conditionally include customer request fields based on user access.
- Updated WorkspaceViewIssuesViewSet to prefetch customer request issues when the feature flag is enabled for the workspace.
- Improved context handling in the serializer for better data representation.

* fix: improve pagination logic in OffsetPaginator

- Updated the pagination logic to use a duplicated queryset for accurate result slicing.
- Adjusted next_cursor calculation to ensure it reflects the correct number of results available for pagination.

* feat: enhance ViewIssueListSerializer to include customer request IDs

- Added a method to retrieve customer request IDs associated with issues.
- Updated the serializer's representation to include the new customer request IDs field.

* feat: add type_id to ViewIssueListSerializer representation

- Included type_id in the serialized output of ViewIssueListSerializer to enhance issue data representation.

* fix: refine pagination logic in OffsetPaginator

- Updated page_results to use .values("id") for optimized data retrieval.
- Adjusted next_cursor calculation to use page_results.count() for accurate pagination state.
2025-06-26 19:15:02 +05:30
Henit ChobisaandGitHub 299e06d7fd [SILO-335] fix: added validation for semi colon separated values for assignees and labels (#3510) 2025-06-26 19:09:10 +05:30
NikhilandGitHub a433cee9c3 [WEB-4398] feat: add teamspace project ID retrieval for user access (#3514) 2025-06-26 17:29:42 +05:30
Aaryan KhandelwalandGitHub 0868c581ae [WIKI-495] fix: image full screen modal position #3517 2025-06-26 17:04:42 +05:30
SangeethaandGitHub 87b2c53ea3 [WEB-4396] fix: duplicate WI bugs #3513 2025-06-26 14:48:57 +05:30
sriram veeraghantaandGitHub 26ef71e62c Sync: Community Changes #3512 2025-06-26 14:42:13 +05:30
sriram veeraghantaandGitHub 7b3d0e621b Merge branch 'preview' into sync/ce-ee 2025-06-26 14:41:51 +05:30
Akshita GoyalandGitHub 25a6cd49fc fix: added @plane/services to the web dependencies (#7271) 2025-06-26 14:33:13 +05:30
M. PalanikannanandGitHub cd667810d3 [WIKI-494] Fix: feature flag for shared pages in sidebar (#3509)
* fix: shared pages feature flag

* fix: empty state
2025-06-26 13:16:10 +05:30
sriram veeraghantaandGitHub 0abb8e394c Sync: Community Changes #3503 2025-06-25 23:44:09 +05:30
JayashTripathyGitHubcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
b5538565c7 [WEB-4371] feat: bar chart component with lollipop shape variant (#7268)
* feat: enhance bar chart component with shape variants and custom tooltip

* Update packages/propel/src/charts/bar-chart/bar.tsx

removed the unknown props

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/propel/src/charts/bar-chart/bar.tsx

removed console log

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* refactor: replace inline percentage text with PercentageText component in bar chart

* Added new variant - lollipop-dotted

* added some comments

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-06-25 23:43:10 +05:30
pablohashescobar ba19784d64 Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-06-25 21:13:01 +05:30
2528f2ec61 [WIKI-490] fix: live server shared access (#3505)
* fix: live server shared access

* fix: optimized this

* chore: changed the variable name

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-25 20:52:14 +05:30
4899c6a2d7 [WEB-4382] fix: handled no page data (#3499)
* fix: handled no page data

* fix: empty array in the api response

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-06-25 20:51:35 +05:30
JayashTripathyandGitHub 5d799c15fa [WEB-4381] fix: Default value to completion percentage in project analytics table (#3496)
* fix: handle division by zero in projects insight table percentage calculation

* fix: handle NaN in percentage calculation for completed work items in projects insight table
2025-06-25 20:49:53 +05:30
SangeethaandGitHub e6744fc9ed [WEB-4396] fix: duplicated work item bugs (#3502)
* fix: state_id

* chore: set default set

* chore: check if user is part of the project

* fix: add project_id filter
2025-06-25 19:58:36 +05:30
Bavisetti NarayanandGitHub a2c844f50f [WEB-4308] chore: added import statement for django settings #3506 2025-06-25 19:50:13 +05:30
b8043f92b1 [WEB-4373]: optimize backend query for workspace views and Project gantt view (#7267)
* feat: add IssueListDetailSerializer for detailed issue representation

- Introduced IssueListDetailSerializer to enhance issue data representation with expanded fields.
- Updated issue detail endpoint to utilize the new serializer for improved data handling.
- Added methods for retrieving related module, label, and assignee IDs, along with support for expanded relations.

* feat: add ViewIssueListSerializer and enhance issue ordering

- Introduced ViewIssueListSerializer for improved issue representation, including assignee, label, and module IDs.
- Updated WorkspaceViewIssuesViewSet to utilize the new serializer and optimized queryset with prefetching.
- Enhanced order_issue_queryset to maintain consistent ordering by created_at alongside other fields.
- Modified pagination logic to support total count retrieval for better performance.

* fix: optimize issue filtering and pagination logic

- Updated WorkspaceViewIssuesViewSet to apply filters more efficiently in the issue query.
- Refined pagination logic in OffsetPaginator to ensure consistent behavior using limit instead of cursor.value, improving overall pagination accuracy.

* fix: improve pagination logic in OffsetPaginator

- Updated the next_cursor calculation to use the length of results instead of cursor.value, ensuring accurate pagination behavior.
- Added a comment to clarify the purpose of checking for additional results after the current page.

* Move the common permission filters into a separate method

* fix: handle deleted related issues in serializers

- Updated IssueListDetailSerializer to skip null related issues when building relations.
- Enhanced ViewIssueListSerializer to safely access state.group, returning None if state is not present.
- Removed unused User import in base.py for cleaner code.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-06-25 19:10:24 +05:30
Aaryan KhandelwalandGitHub 0e91feacc3 [WIKI-74] fix: peek overview closing on escape key #7259 2025-06-25 19:09:54 +05:30
Saurabh KumarandGitHub 032226a397 [SILO-285] Implement new OAuth flow for Gitlab Integration #3273 2025-06-25 19:04:28 +05:30
Henit ChobisaandGitHub d9c908dac1 [SILO-288] feat: Confluence Importer Version 1 Implementation (#3476)
* feat: added feature flag for confluence importer

* feat: modified content parser for removing default PTag extension

* feat: made controller generic for supporting both notion and confluence

* feat: moved notion extensions into driver folder

* feat: created zip driver factory and types

* feat: added notion import driver as extracted part

* chore: removed existing content parser

* feat: added body extractor extension

* feat: added collapsable and notes extension

* feat: added colors and icon parser extension

* feat: added file and page parser extensions

* feat: added task list extension for confluence

* feat: added confluence import driver

* feat: modified zip manager to extract out the tree logic

* feat: modified phases and base to use the driver instead of concrete implementation

* feat: added confluence as migrator job

* feat: added confluence import page

* feat: added notion and confluence components into common zip importer components

* feat: modified hooks and services to use common zip importer

* feat: modified services and store references for using confluence

* fix: remove unnecessary file

* fix: removed comment

* feat: corrected components for using serviceName as title

* feat: added translations

* chore: self review 1

* chore: self review 2, comments, phases and exports

* fix: path getting longer than 255 characters

* feat: added test for content parser

* fix: removed json stringify for colormap

* fix: resolved comments

* fix: enabled feature flag
2025-06-25 19:03:34 +05:30
Saurabh KumarandGitHub a9b5f590f1 [SILO-334] Fix job not re running after cancelled #3495 2025-06-25 19:02:10 +05:30
JayashTripathyandGitHub 7a291fecdf [WEB-4378] fix: update label translation in ProjectsByStatus component #3493 2025-06-25 19:00:53 +05:30
Bavisetti NarayanandGitHub 08e025939f [WEB-4308] chore: added opensearch for issue comment (#3449)
* chore: added opensearch for issue comment

* chore: changed the instance to issue comment
2025-06-25 19:00:08 +05:30
Akshita GoyalandGitHub 928cac1fd2 [WEB-4382] fix: handle no page data #3497 2025-06-25 15:34:55 +05:30
Bavisetti NarayanandGitHub 2bff848ada fix: member roles with value (#3494) 2025-06-25 14:08:04 +05:30
6358ca646c [WIKI-444] [WIKI-472] fix: shared pages bugs (#3478)
* fix: shared pages initilization for view access

* chore: optimised the logic for shared pages

* fix: lock control

* chore: cursor rules in gitignore

* chore: optimised the page query

* chore: combined the user map

* fix: should render

* chore: added the logic to unshare

* fix: can current user access page

* fix: blocking pages

* fix: page doesn't exist

* fix: empty state and unshared realtime

* fix: console log payload

* chore: updated the permission layer

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-06-24 21:21:35 +05:30
pushya22andGitHub 96ac1d9ef8 Sync: Community Changes #3492
Sync: Community Changes
2025-06-24 20:28:14 +05:30
Prateek ShouryaandGitHub 40c0922726 [WEB-4387] fix: global layout when filter is set to list (#7264) 2025-06-24 20:25:26 +05:30
Aaryan KhandelwalandGitHub dee8f00a71 [WEB-4384] fix: power k page search redirection #7263 2025-06-24 20:24:35 +05:30
Dheeraj Kumar KetireddyandGitHub ec8ed681de [WEB-4379] Fix: Excluded team spaces from the WorkspaceViewViewSet queryset. #3487 2025-06-24 20:13:50 +05:30
Dheeraj Kumar KetireddyandGitHub 0463d589dd [SILO-333] Fix: move app bot addition to project save method (#3485)
* refactor: move app bot addition to project save method

- Removed the signal handler for adding app bots to a project.
- Integrated app bot addition directly into the Project model's save method.
- Updated the add_app_bots_to_project function to exclude the user who created the project.

* Fixed import issues
2025-06-24 17:43:52 +05:30
Dheeraj Kumar KetireddyandGitHub c7474b9f90 [SILO-323] Chore: Added short_id and slug for templates (#3475)
* feat: add short_id and slug fields to Template model with migration

* Added short_id and slug fields to the Template model for better identification and SEO.
* Implemented a migration to populate these fields for existing templates.
* Enhanced save method to generate short_id and slug if not set, ensuring uniqueness and proper formatting.

* feat: enhance Template model and serializers with short_id and URL validation

* Added a name_changed flag to the Template model to track name changes.
* Updated TemplateSerializer to include short_id and slug in read-only fields.
* Implemented URL validation in the name field of TemplateSerializer to prevent names containing URLs.
* Introduced a new utility function, generate_short_id, for generating unique identifiers.
* Modified PublishedTemplateEndpoint to use short_id instead of UUID for template retrieval.

* add unit tests for EE utilities and identifier generation

* Introduced unit tests for the EE utilities package, focusing on the identifier generation function.
* Implemented tests for various scenarios including default and custom lengths, uniqueness, character set validation, and cryptographic quality.
* Created new test files and directories to organize the unit tests effectively.
2025-06-24 16:27:13 +05:30
Akshita GoyalandGitHub b0bb7cbd82 [SILO-319] chore: github mapping ui enhancement (#3422)
* chore: github mapping ui enchancement

* fix: alt image
2025-06-24 16:24:49 +05:30
sriram veeraghantaandGitHub d9aaafb305 Sync: Community Changes #3484 2025-06-24 16:24:09 +05:30
Aaryan Khandelwal eb12a1619c fix: merge conflicts resolved from preview 2025-06-24 16:23:35 +05:30
Bavisetti NarayanandGitHub f70574aa2c [WIKI-463] fix: display images in moved pages (#3468)
* fix: display images in moved pages

* fix: optimise the pages serach query

* chore: changed the archived filter
2025-06-24 16:23:33 +05:30
Aaryan KhandelwalandGitHub 072f2e2cac [WEB-4363] regression: analytics tabs improvements #7260 2025-06-24 16:08:30 +05:30
sriram veeraghantaandGitHub 8e8c8119f2 Sync: Community Changes #3483 2025-06-24 16:07:48 +05:30
Aaryan Khandelwal 0824589b82 fix: merge conflicts resolved from preview 2025-06-24 14:37:17 +05:30
sriramveeraghanta 3a03edec33 fix: update pbkdf2 package to resolve vulnerability 2025-06-24 14:27:30 +05:30
Vipin ChaudharyandGitHub 518a01a6b9 [WIKI-476] Fix: help section in wiki (#3481)
* fix: auto collapse

* fix : modal not opening
2025-06-24 14:21:26 +05:30
Aaryan KhandelwalandGitHub 4e9a8b25eb [WIKI-479] refactor: pi chat editor #3480 2025-06-24 14:20:34 +05:30
Prateek ShouryaandGitHub 79c2dfd293 [WEB-4375] fix: minor issues in timeline layout (#7257) 2025-06-24 14:19:00 +05:30
JayashTripathyandGitHub 22a9d48ca3 [WEB-4363]: Analytics tab improvements #7248
fix: padding in tabs
2025-06-24 14:17:40 +05:30
fbcc8fc8a0 [WIKI-421] fix: Toolbar not reflecting strikethrough state (#7255)
* fix: strick through

* fix: bubble menu options types

---------

Co-authored-by: vipin chaudhary <vipinchaudhary@vipins-MacBook-Pro.local>
2025-06-24 14:16:07 +05:30
Aaryan KhandelwalandGitHub c1fa372c84 [WIKI-471] refactor: custom image extension (#7247)
* refactor: custom image extension

* refactor: extension config

* revert: image full screen component

* fix: undo operation
2025-06-24 14:05:11 +05:30
Surya PrashanthandGitHub c584baede8 [SILO-325] chore: add migration to remove silo- prefix from apps (#3467)
* [SILO-325] chore: add migration to remove silo- prefix from apps

* add db app as dependency in migration
2025-06-23 15:15:21 +05:30
8c3bf51cf9 [INFRA-171] feat: sign airgapped builds with gpg keys (#3321)
* feat: sign airgapped builds with gpg keys

* fix: nit

* fix: correcting an error where we werent importing a key

* fix: gpg signing

* fix: specifying key id

* chore: echo local pub key

* fix: moving pubkey to vars, remove quoting of pubkey

* fix: use passphrase file

* fix: missing workspace

* chore: add debug

* fix: cleanup SHA mechanics and uploads a little

* chore: remove debug

* feat: enhance GPG key management by retrieving secrets from AWS Secrets Manager and formatting the private key for use

* chore: remove sensitive debug output from GPG key management workflow

* fix: change README, export pub from prv

* chore: remove comments

* chore: lint

* fix: copying artifacts to release

* fix: missing tar gz file

* fix: uploading all artifacts

* fix: testing out artifact->release

* fix: artifacts retrieval

* fix: missing artifacts

* fix: couple last artifacts...

* fix: changing asset releases, add assets regardless

* fix: moving outputs to env

* fix: test file existence instead

* chore: typo

* refactor: streamline artifact downloads and uploads for airgapped builds

* feat: add S3 artifact upload step and enhance release process for airgapped builds

* feat: add airgapped install script to artifact uploads

---------

Co-authored-by: Manish Gupta <manish@plane.so>
2025-06-23 13:49:16 +05:30
sriramveeraghanta 262a562e43 sync: canary to preview after cherry-pick for v1.11.1 patch release 2025-06-23 13:28:20 +05:30
Dheeraj Kumar KetireddyandGitHub c31184eaa2 [WEB-4364] refactor: enhance project filtering by excluding active member projects in teamspace queries #3477 2025-06-20 20:13:11 +05:30
guru_sainathandGitHub 6ad66270a2 [MOBIL-991] dev: updated project base permission teamspace validation #3474 2025-06-20 17:59:47 +05:30
Aaryan KhandelwalandGitHub d5c69d23cb [WIKI-469] fix: add support for attachment in teamspace descriptions #3470 2025-06-20 17:55:40 +05:30
Prateek ShouryaandGitHub fcd9506d06 [WEB-4362] improvement: redirect to templates page on payment error for upgrade flow (#3472) 2025-06-20 17:54:13 +05:30
sriram veeraghantaandGitHub dd12d0c33a Sync: Community Changes #3473 2025-06-20 17:53:30 +05:30
Prateek ShouryaandGitHub 7045a1f2af [WEB-4361] fix: add onChange to collaborative editor #7246 2025-06-20 17:24:49 +05:30
sriram veeraghantaandGitHub d3054f52b5 promote: mobile-runway to preview #3463 2025-06-20 16:28:36 +05:30
pushya22andGitHub 9f4e03ca34 Sync: Community Changes #3469
Sync: Community Changes
2025-06-20 15:26:25 +05:30
Prateek ShouryaandGitHub f26b4d3d06 [WEB-4359] fix: application crash when creating work item via quick add (#7245) 2025-06-20 15:16:16 +05:30
M. PalanikannanandGitHub 81a1689177 fix: build errors #3465 2025-06-19 20:34:56 +05:30
sriram veeraghantaandGitHub 3ac241af97 Sync: Community Changes #3464 2025-06-19 19:18:19 +05:30
c8493e8117 [WIKI-334] fix: Pages sidebar bugs (#3253)
* fix: codeblock smooth cursor positioning fixed

* fix: sort ordering for page is not alphabetical

* fix: delete page modal

* fix: add subpage added immediately to parent

* fix: headings revamped and updated only when needed

* fix: optimized editor headings rendering

* fix: heading rerenders

* fix: update document outline and headings management for improved performance and accuracy

* fix: optimizing more things in table of contents

* chore: added archived filter for pages

* fix: animations on the heading

* fix: adding block animations

* fix: content outline

* fix: remove toc

* fix: remove toc

* fix: wip

* fix: remove unused package

* fix: on change logic fixed

* fix: attrs of newly added and duplicate pages

* fix: old heading

* fix: old heading

* fix: collaborators list

* fix: handle toggling

* fix: behaviour on clicking on the navigation item

* chore: remove the check for lock pages to move

* fix: better navigation between title and editor

* fix: shift tab

* fix: tables select all!

* fix: sync agent

* fix: sync agent stop saving

* fix: used enums

* fix: typing storage in collaboration cursor

* fix: better collaborator list

* fix: aria label

* fix: remove console lgo

* fix: access change

* fix: change access if section changes

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-19 19:12:17 +05:30
sriram veeraghantaandGitHub 6e701599f2 Sync: Community Changes #3459 2025-06-19 19:10:38 +05:30
Prateek ShouryaandGitHub c3c1aef7a9 [WEB-4357] fix: remove trailing slash from asset url #7240 2025-06-19 19:09:59 +05:30
Surya PrashanthandGitHub 96190bda22 [SILO-324] fix: handle duplicate page runs in clickup (#3461)
* [SILO-324] fix: handle duplicate page runs in clickup

* increase mq heartbeat to 5 minutes
2025-06-19 19:08:10 +05:30
guru_sainathandGitHub 3b67d203c7 [MOBIL-1001] dev: Add queries for workspace and project-level features (#3462)
* dev: queries for workspace and project level features

* dev: moved file
2025-06-19 19:05:32 +05:30
guru_sainathandGitHub 7d7c5b4810 [MOBIL-991] dev: Implement teamspace based user project level permissions and query filtering (#3395)
* dev: handled team space permissions that user can access the queries and mutation when the user is part of the teamspace

* dev: handled the all projects teamspace filters

* dev: handled the teamspace filter in sync_to_async

* dev: updated the all_projects query

* dev: updated projects query

* dev: updated projects query

* dev: updated projects query

* dev: updated project teamspace query

* dev: updated your work query

* dev: updated the project teamspace filters

* dev: updated teamspace query in pages

* dev: updated page and epic teamspace query

* dev: handled the coroutine error in your work

* dev: handled the async and normal function for teamsapce filter

* dev: updated teamspace helper

* dev: updated project permission

* dev: issue detail update query

* dev: updated issue detail query

* dev: updated distinct

* dev: implemented teamspace members

* dev: updated project permission layer

* dev: removed repeated code

* dev: handled the status

* dev: updated projects query

* dev: updated projects query distinct

* dev: updated the roles for project level

* dev: issue search filter included timespace

* dev: updated projects query

* dev: included teamsapce in global search

* dev: updated projects query distinct

* dev: handled the epics in global search

* dev: handled the sync in global search

* dev: project filter in global search

* dev: updated notification teamspace filter

* dev: resolved the conversations
2025-06-19 18:30:05 +05:30
Aaryan Khandelwal 52103bc61e fix: build error 2025-06-19 17:45:46 +05:30
Aaryan Khandelwal fcf185e9a0 fix: build error 2025-06-19 17:39:51 +05:30
Aaryan Khandelwal f87de2fad8 fix: merge conflicts resolved from preview 2025-06-19 17:39:31 +05:30
28edf03a94 [WIKI-181] feat: editor attachments (#2238)
* feat: attachment extension

* chore: slash command option added for attachments

* chore: add upload logic

* chore: add missing plugins to attachments extension

* refactor: file handling

* fix: attachment upload

* fix: attachment upload

* restore unnecessary files

* chore: added more types for work item and pages

* refactor: attachment extension

* chore: added conditions for custom entities

* chore: add upload status

* refactor: onCreate and upload logic

* fix: extension without props

* fix: restore deleted assets logic

* refactor: attachment extension types and utils

* chore: add editor extensions and translations

* chore: add disabled state and translations

* chore: update container elements

* fix: pageEmbedComponent correct node name

* chore: add missing translations

* refactor: remove read only extension

* chore: handle api call error

* fix: lint error

* fix: drop handlerr

* chore: extension in the read only document editor

* chore: add support for initiative and project overview

* fix: liver server runtime error

* refactor: editor props structure

* chore: add missing prop

* chore: update editor flag hook

* fix: space app build

* fix: customers attachment extension

* fix: customer requests description

* refactor: additional extension types

* chore: remove unnecessary comments

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-06-19 17:22:24 +05:30
M. PalanikannanandGitHub bad6e0ba95 [WIKI-464] fix: add type checking in build process for live #3453 2025-06-19 17:21:07 +05:30
Anmol Singh BhatiaandGitHub 544fe270b1 [WEB-4050] feat: breadcrumbs revamp (#3371)
* chore: project feature enum added

* feat: revamp breadcrumb and add navigation dropdown component

* chore: custom search select component refactoring

* chore: breadcrumb stories added

* chore: switch label and breadcrumb link component refactor

* chore: project navigation helper function added

* chore: common breadcrumb component added

* chore: breadcrumb refactoring

* chore: project constant updated

* chore: ce changes

* chore: ce changes

* chore: breadcrumb revamp ee changes

* fix: route and header layout

* chore: code refactor

* chore: code refactor

* chore: workspace view breadcrumb improvements

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* fix: build error
2025-06-19 17:20:18 +05:30
Akshita GoyalandGitHub 6355d5ce4e [SILO-319] fix: loading & refactoring (#3423)
* fix: loading & refactoring

* fix: importers loading
2025-06-19 17:20:02 +05:30
Prateek ShouryaandGitHub 39956bc1f0 [WEB-4352] fix: disable property type updates in customer settings (#3457) 2025-06-19 17:19:16 +05:30
24e57009af [WIKI-465] fix : Add new node on click of doc end (#7063)
* fix : handle last node

* fix : handle unexpected node

* remove logs

* feat: handle focus

---------

Co-authored-by: M. Palanikannan <73993394+Palanikannan1437@users.noreply.github.com>
2025-06-19 17:17:56 +05:30
2b7a17b484 [WEB-4050] feat: breadcrumbs revamp (#7188)
* chore: project feature enum added

* feat: revamp breadcrumb and add navigation dropdown component

* chore: custom search select component refactoring

* chore: breadcrumb stories added

* chore: switch label and breadcrumb link component refactor

* chore: project navigation helper function added

* chore: common breadcrumb component added

* chore: breadcrumb refactoring

* chore: code refactor

* chore: code refactor

* fix: build error

* fix: nprogress and button tooltip

* chore: code refactor

* chore: workspace view breadcrumb improvements

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-06-19 17:17:14 +05:30
64fd0b2830 [WEB-4321]chore: workspace views refactor (#7214)
* chore: workspace views reafactor

* chore: resolved coderabbit suggestions

* chore: added project level workspace filter

* chore: added enum for roles

* chore: removed redundant type definition

* chore: optimised the query

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-19 16:26:32 +05:30
Aaryan KhandelwalandGitHub 8988cf9a85 [WEB-462] refactor: editor props structure (#7233)
* refactor: editor props structure

* chore: add missing prop

* fix: space app build

* chore: export ce types
2025-06-19 16:25:52 +05:30
sriram veeraghantaandGitHub 2ac200618d Sync: Community Changes #3458 2025-06-19 16:24:15 +05:30
sriramveeraghanta 1d0e5dfcbc fix: dev-wiki changes 2025-06-19 16:23:33 +05:30
sriramveeraghanta 1a77cf6e2f fix: yarn package updates 2025-06-19 16:14:18 +05:30
sriramveeraghanta 759f23fe5e fix: merge conflicts 2025-06-19 16:08:22 +05:30
88ba13d1e0 [WIKI-347] feat: shared pages (#3277)
* feat: shared pages

* chore: added share list endpoint

* chore: changed the page user model

* chore: added the events for shared page

* fix: the page user endpoints

* chore: added the new permission layer for pages

* chore: renamed the variables

* chore: reverted frontend changes

* chore: add project pages

* feat: shared pages modal

* refactor: remove unused collaborator components and improve share modal structure

* fix: better structure

* fix: css fixes according to design

* fix: css fixes according to design

* fix: root modal

* chore: allow sharing a page using single request

* fix: bulk updates

* chore: user id changed

* chore: a new shared type

* fix: sharing pages access on the frontend

* fix: is content editable

* chore: update the event tigger for shared pages

* chore: added the page owner permission

* fix: shared endpoint

* chore: added validation in shared page

* chore: added is_shared key

* fix: updates to live server

* fix: shared pages working

* fix: shared pages workspace pages done

* Merge branch 'preview' of https://github.com/makeplane/plane-ee into feat-shared-pages

* fix: adding shared pages in project level

* fix: move to ce/ee structure

* chore: document what's sharedUsers

* regression

* fix: sharing page

* fix: access on shared pages

* fix: remove extra store

* fix: working mutations

* fix: shared users

* chore: event trigger updates

* fix: loading state and optimistic updates

* fix: enable only in workspace pages

* fix: build fix

* chore: added project level permission

* chore: added a enum for page access

* chore: changed the subquery annotation

* chore: added workspace slug filter

* chore: account deactivation and leave actions

* fix: indentation of the delete

* fix: import errors

* fix: added a validation for owner

* chore: updated the background task

* fix: base page store

* fix: saving state aborted on success

* fix: ce changes

* fix: reactivity for dropping pages

* fix: ce sync

* fix: project page store

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-06-19 16:01:00 +05:30
eb5ffebcc6 [WIKI-458] refactor: base page instance for additional properties (#7228)
* refactor: create a super class for base page

* fix: path

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-06-19 16:00:18 +05:30
M. PalanikannanandGitHub 414010688d [WIKI-384] chore: editor core refactor (#7235)
* fix: extra actions

* chore: page flags
2025-06-19 15:59:38 +05:30
JayashTripathyandGitHub 171099667e [WEB-4339] fix: projects dropdown shows all projects (#7238)
* fix: projects drop only shows joined project

* refactor: removed unused things from header
2025-06-19 15:57:19 +05:30
Vamsi KrishnaandGitHub 32d9d2b1a5 [WEB-4344]fix: epics initiative count (#3452)
* fix: initiative epics count

* fix: unselected epics in initiatives

* fix: display of un selected initiatives
2025-06-19 14:23:46 +05:30
Vamsi KrishnaandGitHub 0d029fd769 [WEB-4347]fix: duplicate epics in same project #3454 2025-06-19 14:19:33 +05:30
NikhilandGitHub 4e029bc5be fix: exclude current issue type from the list of issue types in IssueTypeEndpoint (#3451) 2025-06-19 00:07:47 +05:30
Bavisetti NarayanandGitHub bea5a806f0 chore: added the missing imports (#3450) 2025-06-18 23:59:24 +05:30
dae72210c5 [WEB-4012] Chore: Added Knn Vector fields for PI search (#3445)
* fix: removed first call delay in search

* Added Knn Vector fields

* Enhanced search performance optimizations

* Refactor: Use environment variables for OpenSearch default pipelines in Issue and Page documents

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
2025-06-18 23:58:54 +05:30
22ae10cf88 [WIKI-383] feat: dev wiki app (#3411)
* dev: 1

* fix: tubro name

* fix : floating sidebar

* --wip-- [skip ci]

* wip-2

* --wip-- [skip ci]

* wip

* fix: working wiki

---------

Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com>
2025-06-18 21:19:30 +05:30
ee96abd5f2 [WEB-4342] fix: copy to clipboard text + added redirection for pages (#3447)
* fix: copy to clipboard text + added redirection for pages

* fix: translations

* fix: feature flagged

* fix: refactor

* chore: featureflag check

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-06-18 20:56:07 +05:30
Prateek ShouryaandGitHub 1c2e5ddaab [WEB-3938] improvement: page templates (#3181)
* fix: editor drag handle

* improvement: enable bubble menu in page template editor

* fix: create / update button alignment
2025-06-18 20:36:34 +05:30
Prateek ShouryaandGitHub 14069c6562 [WEB-4329] fix: exclude archived entities from teamspace entity count (#3430) 2025-06-18 20:36:05 +05:30
JayashTripathyandGitHub cee956efd9 [WEB-4345] fix: edit button disabled in issue types #3448 2025-06-18 20:35:30 +05:30
4d7c310a00 [PAI-482]feat: add JWT authentication support and related tests for user session endpoint (#3402)
* feat: add JWT authentication support and related tests for user session endpoint

- Updated UserSessionEndpoint to support JWT authentication alongside session authentication.
- Introduced a new jwt_client fixture for testing JWT authentication.
- Added comprehensive tests for user session handling with various authentication scenarios, including valid, invalid, and expired tokens.

* Update apiserver/plane/app/views/user/base.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update apiserver/plane/app/views/user/base.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-18 20:32:55 +05:30
Prateek ShouryaandGitHub 590b3cd500 fix: circular dependencies (#3444)
* fix: fix circular dependencies between types and ui packages

* chore: minor changes to pi chat
2025-06-18 18:01:49 +05:30
Akshita GoyalandGitHub 6ef77039c2 fix: build (#3442) 2025-06-18 16:33:41 +05:30
sriram veeraghantaandGitHub 783df86126 Sync: Community Changes #3441 2025-06-18 16:16:06 +05:30
Akshita GoyalandGitHub e34c0d2e7a Merge branch 'preview' into sync/ce-ee 2025-06-18 16:15:14 +05:30
Aaryan KhandelwalandGitHub 0618e5da74 [WIKI-356] fix: space app work item embed card details (#3432)
* style: consistent properties height

* fix: state property logic
2025-06-18 16:13:20 +05:30
d65f0e264e [WEB-4327] Chore PAT permissions (#7224)
* chore: improved pat permissions

* fix: err message

* fix: removed permission from backend

* [WEB-4330] refactor: update API token endpoints to use user context instead of workspace slug

- Changed URL patterns for API token endpoints to use "users/api-tokens/" instead of "workspaces/<str:slug>/api-tokens/".
- Refactored ApiTokenEndpoint methods to remove workspace slug parameter and adjust database queries accordingly.
- Added new test cases for API token creation, retrieval, deletion, and updates, including support for bot users and minimal data submissions.

* fix: removed workspace slug from api-tokens

* fix: refactor

* chore: url.py code rabbit suggestion

* fix: APITokenService moved to package

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
2025-06-18 16:08:11 +05:30
cb34e27458 [WEB-4164] feat: duplicate issue to another project (#3268)
* feat: duplicate issue to another project

* chore: change viewset name

* chore: set None for all project level fields

* feat: added duplicate action to all work item layouts

* chore: code split for ce

* chore: removed redundant function declaration

* chore: refactored action modals

* fix: modify api response

* feat: added feature flag

* fix: use serializer to render response

* feat: duplicate epics to another projects

* feat: epics duplicate frontend implementation

* feat: description assets duplication

* fix: asset duplication

* fix: related issues not duplicating

* fix: add import

* fix: description assets are not copied

* chore: add feature flag check

* fix: variable name of duplicated issue

* fix: argument name

* chore: resolved coderabbit comments

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-06-18 16:07:08 +05:30
Akshita GoyalandGitHub a90d4ee49f [PAI-471] chore: added workspace in user threads api + removed placeholder api #3361 2025-06-18 16:06:24 +05:30
Akshita GoyalandGitHub c7d17d00b7 [WEB-4017] fix: hooks and store refactoring for issue-details (#7107)
* fix: hooks and store splitting for issue-details

* fix: refactoring

* fix: refactoring

* fix: refactor

* fix: css
2025-06-18 15:59:26 +05:30
c83bd45125 [WEB-4017] feat: pages in work items (#3236)
* fix:  UI implementation

* feat: endpoints to attach, remove, list pages to work items

* chore: page detail

* chore: return is_global

* feat: search functionality

* chore: remove search functionality

* fix: integrations

* fix: change issues to work-item in url

* fix: post not deleting the unselected pages
chore: accept page_id in delete instead of pk"

* fix: remove unwanted filters

* fix: refactoring

* fix: refactor

* fix: refactoring

* fix: translations

* fix: refacttor

* fix: pages in epics

* fix: refactoring

* fix: search algo

* fix: pages in epics

* fix: project level search not working

* fix: refactoring

* chore: return logo_props

* fix: duplicate serializer name

* fix: refactoring

* fix: reverted yarn.lock

* fix: refactoring

* chore: renamed the serializer

* fix: workspace and project level validity of given page_ids

* fix: check for is_global

* chore: add permission class

* fix: add page_id as a argument with default None

* chore: add permission class for search endpoint

* fix: removed duplicate back

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-18 15:56:06 +05:30
JayashTripathyandGitHub c30efd3b46 [WEB-4195] feat: add option to delete work item type (#3288)
* chore: added delete property for workitem types

* chore: Added translations

* fix: update layout of toggle switch in quick actions component

* feat: add enable/disable warning for issue types while deleting a issue type

* chore: updated translations

* feat: implement issue type delete confirmation modal and refactor quick actions

* feat: add iconClassName prop to CustomMenu, make the custom menu icon bigger in issue-types and updated issue type quick acctions for default state handling

* feat: implement delete modal for work item types , reafactored the delete promise to the top

* refactor: rename iconClassName to chevronIconClassName in CustomMenu and update related components

* feat: enhance enable/disable functionality in issue type quick actions with toast notifications

* chore: utilised chevronClassname

* refactor: reset custom-menu component

* feat: add cant_delete_linked_message translations for multiple languages and update quick actions component to handle deletion state

* refactor: update quick actions component to include tooltip for delete action based on issue existence

* refactor: enhance quick actions component to disable actions based on issue existence and improve tooltip handling
2025-06-18 15:55:07 +05:30
ec662c6722 [WIKI-397] chore: un publish a page when archived (#3300)
* chore: un publish a page when archived

* fix: trigger event to unpublish sub pages

* fix: making publish common

* regression: remove publishing teamspace pages

* fix: pubish actions made common in workspace and project pages

* fix: remove unused import

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-06-18 15:54:46 +05:30
Aaryan KhandelwalandGitHub 626a5472c9 [WIKI-398] chore: update page embed block font size #3326 2025-06-18 15:54:16 +05:30
578ab887cd [WEB-4254] feat: Enterprise analytics (#3330)
* chore: added code split for the analytics store

* chore: done some refactor

* refactor: update entity keys in analytics and translations

* chore: updated the translations

* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor

* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality

* feat: enhance WorkItemsModal and analytics store with isEpic functionality

* feat: integrate isEpic state into TotalInsights and WorkItemsModal components

* refactor: remove isEpic state from WorkItemsModalMainContent component

* refactor: removed old  analytics components and related services

* refactor: new analytics

* refactor: removed all nivo chart dependencies

* chore: resolved coderabbit comments

* fix: remove duplicate isEpic prop in WorkItemsModal component

* fix: update type for tab parameter in processUrl method of AnalyticsV2Service

* fix: update processUrl to handle custom-work-items in peek view

* feat: implement CSV export functionality in InsightTable component

* feat: add user analytics components and extend analytics functionality

* feat: enhance analytics service with filter parameters and improve data handling in InsightTable

* feat: add projects analytics components

* feat: add cycles, modules, and intake analytics components with corresponding data handling and visualization

* feat: add new translation keys for various statuses across multiple languages

* chore: update analytics components and translations

* [WEB-4246] fix: enhance analytics components to include 'isEpic' parameter for improved data fetching

* refactor: clean up imports and update translation keys in analytics components

* chore: added project logo props in charts

* feat: integrate project logo display in analytics tables

* chore: added feature flag

* chore: disabled users

* chore: added feature flag

* chore: added payment failure vaidation

* feat: enhance analytics page with subscription upgrade tooltip and update translations

* updated translations

* chore: added additional parameters in payload

* added state icons in module and cycle table

* fix: handle empty date values in cycles and modules insight tables

* chore: added the keys for module

* chore: added custom tooltip for cycles and modules

* chore: added color to the scatter points

* refactor: centralize module status colors and update chart point colors and yaxis domain

* fix: update comment to clarify display name usage in WorkItemInsightColumns

* feat: add completed work items count to analytics and update chart components

* refactor: update trend-piece component to use new status variants for analytics

* feat: enhance ee analytics tables with export functionality and added project logo in intake

* refactor: clean up fetch keys and simplify analytics component structure

* refactor: rename analytics fields constants for consistency and clarity

* refactor: update analytics feature flag for improved clarity and consistency

* chore: changed the feature flag of analytics

* refactor: streamline analytics tab structure and introduce locked tab labels for feature flag check while rendering tab label

* chore: remove unused translation key for entity count in English locale

* fix: import of intake

* fix: append percentage sign to completion percentage label in cycles insight table

* refactor: simplify completion percentage calculation in ModulesCyclesTooltip and enhance Avatar component styling in UserAvatarName

* refactor: update AnalyticsWrapper titles to use i18n keys and clean up imports in analytics components

* fix: update isEpic handling in WorkItemsModal to consider isPeekView state

* fix: update i18n title in AnalyticsWrapper for Intake component

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-06-18 15:53:32 +05:30
Akshita GoyalandGitHub 1ec51160d2 [WEB-4279] fix: project initiative mutation permission + css (#3347)
* fix: project initiative mutation permission + css

* fix: added translations
2025-06-18 15:53:09 +05:30
Vamsi KrishnaandGitHub 1aaad326f9 [WEB-4239]feat: show selected epics in modal (#3383)
* feat: show selected epics in selection modal

* chore: removed trailing elipses
2025-06-18 15:52:02 +05:30
Akshita GoyalandGitHub a508fbb63b [PAI-478] fix: added custom component for <a> (#3384)
* fix: replaced <a> with next/link in pi markdown

* fix: changed link to <a>
2025-06-18 15:51:19 +05:30
Vamsi KrishnaandGitHub 04d64519ef [WEB-4276]fix: selected initiatives not showing in epics #3390 2025-06-18 15:50:52 +05:30
ba407237f1 [PAI-476]: Fix pi chat inconsistencies on switching tabs (#3398)
* fix: pi store refactoring

* fix: refactoring

* fix: handled duplicacy

* fix: refactoring

* fix: refactoring

* fix: disabled prompt button when loading

* fix: refactoring

* fix: reasoning css

* fix: build

* fix: gpt model

* fix: null validations

* fix: null validation

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-06-18 15:50:17 +05:30
Akshita GoyalandGitHub 5b1f7c06af [PAI-475] chore: save chat focus in pi (#3380)
* chore: save chat focus in pi

* fix: sidebar highlighter
2025-06-18 15:48:58 +05:30
sriram veeraghantaandGitHub 0ac94a5f73 Sync: Community Changes #3440 2025-06-18 15:48:12 +05:30
Nikhilandsriramveeraghanta 39b934744e [INFRA-192] fix: update file handling in airgapped mode to include app version in filenames #3439 2025-06-18 15:36:32 +05:30
NikhilandGitHub cda00e2024 [INFRA-192] fix: update file handling in airgapped mode to include app version in filenames #3439 2025-06-18 15:35:55 +05:30
JayashTripathyandGitHub 9cdfb2224a [WEB-4160]: Context menu close after clicking on menu item of project #7231 2025-06-18 15:33:06 +05:30
sriram veeraghantaandGitHub 6e79d533bf Sync: Community Changes #3438 2025-06-18 15:31:27 +05:30
sangeethailango 3f9c72f1a9 Merge branch 'preview' into sync/ce-ee 2025-06-18 15:30:08 +05:30
SangeethaandGitHub 8129f5f969 [WEB-4340] fix: duplicate assignees in user recents (#7216)
* fix: duplicate assignees in user recents

* chore: optimize filtering logic

* chore: filter with deleted_at field

* chore: tests for IssueRecentSerializer
2025-06-18 15:14:21 +05:30
Nikhilandsriramveeraghanta 2ee9e0de10 [INFRA-191] fix: remove license from the local system when running in airgap mode #3437 2025-06-18 14:21:44 +05:30
NikhilandGitHub 11753e0abb [INFRA-191] fix: remove license from the local system when running in airgap mode #3437 2025-06-18 14:20:02 +05:30
sriram veeraghantaandpablohashescobar 83bc834fbc [INFRA-190]chore: update monitor to save and read file from the local system when running in airgap mode (#3435)
* refactor: update SyncWorkspace to read activation file from local system and handle file writing in activation handler

* fix: update MemberList assignment in SyncWorkspace to use payload data

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-06-18 01:28:05 +05:30
a3ea0b665e [INFRA-190]chore: update monitor to save and read file from the local system when running in airgap mode (#3435)
* refactor: update SyncWorkspace to read activation file from local system and handle file writing in activation handler

* fix: update MemberList assignment in SyncWorkspace to use payload data

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-06-18 01:26:45 +05:30
Dheeraj Kumar KetireddyandGitHub 7f33b6e692 [WEB-3773] Chore: Enhanced search performance optimizations #3412 2025-06-17 19:51:02 +05:30
pushya22andGitHub ebbec9a7c9 Sync: Community Changes #3429
Sync: Community Changes
2025-06-17 17:21:47 +05:30
Prateek ShouryaandGitHub 98f9b15457 [WEB-4332] feat: teamspace assignee grouping (#3427) 2025-06-17 17:17:33 +05:30
Prateek ShouryaandGitHub 89b8cdbe6e [WEB-4335] improvement: optimize assignee grouping with improved member scope handling (#7227) 2025-06-17 17:17:04 +05:30
sriram veeraghantaandGitHub 1d7c2891c1 Sync: Community Changes #3428 2025-06-17 17:14:36 +05:30
sriram veeraghanta a7d75a4f66 fix: merge conflicts 2025-06-17 17:13:34 +05:30
Prateek ShouryaandGitHub bdb42cff53 fix: lucide icon constants import (#3426) 2025-06-17 17:09:59 +05:30
Prateek ShouryaandGitHub 53e6a62a12 fix: move lucide related constants to ui package (#7226)
* fix: move lucide related constants to ui package

* chore: update yarn.lock
2025-06-17 17:06:05 +05:30
Pratapa Lakshmi 59a682f6d9 fix: update Dockerfile for space application to correct static asset path 2025-06-17 15:58:43 +05:30
Pratapa Lakshmi 6fd448ddac refactor: update Dockerfile for space and web applications to correct asset paths and improve structure 2025-06-17 15:15:26 +05:30
pushya22andGitHub 2281e207e6 Sync: Community Changes #3425
Sync: Community Changes
2025-06-17 14:29:58 +05:30
sriram veeraghantaandGitHub f11b87df83 Sync: Community Changes #3415 2025-06-17 14:13:19 +05:30
Prateek ShouryaandGitHub 75f89c4c12 fix: docker build (#7220)
* fix: docker build

* fix: build
2025-06-17 14:08:50 +05:30
Nikhilandsriram veeraghanta 69dacf4ee2 [INFRA-189]fix: update response handling in GetWorkspaceProductHandler to return free workspace payload #3424 2025-06-17 14:00:55 +05:30
NikhilandGitHub b9c26863c5 [INFRA-189]fix: update response handling in GetWorkspaceProductHandler to return free workspace payload #3424 2025-06-17 13:58:11 +05:30
Pratapa Lakshmi 91c4047afd refactor: optimize Dockerfile for web and space applications by refining COPY commands for static assets 2025-06-17 12:47:00 +05:30
Nikhilandsriram veeraghanta 8006a5cf46 [INFRA-188]fix: enhance license validation for air-gapped workspace activation (#3413)
* fix: enhance license validation for airgapped workspace activation

Updated the license validation logic to ensure that if a workspace has a non-free license, an error is returned when attempting to associate it with a different license key. This change prompts users to deactivate the existing license first.

* refactor: remove caching from FeatureFlagProxyEndpoint and enhance license validation for airgapped workspaces

Removed the caching decorator from the FeatureFlagProxyEndpoint's GET method. Updated the workspace activation handler to include a check for airgapped environments in the license validation logic, ensuring that non-free licenses are handled correctly.
2025-06-16 21:01:46 +05:30
e8bae4a2b7 [INFRA-144] fix: airgap upgrade (#3318)
* fix: skip APP_RELEASE_VERSION during environment variable updates in install script

- Updated the install.sh script to skip processing the APP_RELEASE_VERSION key when reading from the backup environment file, ensuring that this key is not inadvertently modified during upgrades.

* fix: update current_version assignment in register_instance_ee command

- Changed the assignment of current_version to use app_version as the default value when user_version is not provided, ensuring consistency in version handling.

---------

Co-authored-by: Manish Gupta <manish@plane.so>
2025-06-16 21:00:56 +05:30
NikhilandGitHub 9c52c8b33f [INFRA-188]fix: enhance license validation for air-gapped workspace activation (#3413)
* fix: enhance license validation for airgapped workspace activation

Updated the license validation logic to ensure that if a workspace has a non-free license, an error is returned when attempting to associate it with a different license key. This change prompts users to deactivate the existing license first.

* refactor: remove caching from FeatureFlagProxyEndpoint and enhance license validation for airgapped workspaces

Removed the caching decorator from the FeatureFlagProxyEndpoint's GET method. Updated the workspace activation handler to include a check for airgapped environments in the license validation logic, ensuring that non-free licenses are handled correctly.
2025-06-16 20:56:07 +05:30
Prateek Shourya 7063e9f723 fix: build errors 2025-06-16 19:05:55 +05:30
Henit ChobisaandGitHub dde2651d8a fix: construct s3 url from region if not given (#3419) 2025-06-16 18:59:37 +05:30
sriram veeraghanta e03f537ac7 fix: space build errors. 2025-06-16 17:54:59 +05:30
sriram veeraghanta 2fd7fefb01 fix: merge conflicts 2025-06-16 17:39:26 +05:30
98fee2ac1d refactor: move web utils to packages (#3353)
* refactor: move web utils to packages

* fix: build and lint errors

* chore: update drag handle plugin

* chore: update table cell type to fix build errors

* fix: build errors

* chore: sync few changes

* feat: add pi base url to constants

* chore: update all util imports in ee folder

* chore: refactor web utils imports

* chore: update imports

* fix: build errors

* fix: build errors

* fix: update utils import

* chore: minor fixes related to duplicate assets imports

* chore: update duplicate assets service

* [WEB-4316] chore: new endpoints to download an asset (#7207)

* chore: new endpoints to download an asset

* chore: add exception handling

* [WEB-4323] refactor: Analytics refactor (#7213)

* chore: updated label for epics

* chore: improved export logic

* refactor: move csvConfig to export.ts and clean up export logic

* refactor: remove unused CSV export logic from WorkItemsInsightTable component

* refactor: streamline data handling in InsightTable component for improved rendering

* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation

* refactor: cleaned up some component and added utilitites

* feat: add "at_risk" translation to multiple languages in translations.json files

* refactor: update TrendPiece component to use new status variants for analytics

* fix: adjust TrendPiece component logic for on-track and off-track status

* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts

* feat: add "at_risk" translation to various languages in translations.json files

* feat: add "no_of" translation to various languages in translations.json files

* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files

* refactor: rename insightsFields to ANALYTICS_INSIGHTS_FIELDS and update analytics tab import to use getAnalyticsTabs function

* feat: update AnalyticsWrapper to use i18n for titles and add new translation for "no_of" in Russian

* fix: update yAxis labels and offsets in various charts to use new translation key and improve layout

* feat: define AnalyticsTab interface and refactor getAnalyticsTabs function for improved type safety

* fix: update AnalyticsTab interface to use TAnalyticsTabsBase for improved type safety

* fix: add whitespace-nowrap class to TableHead for improved header layout in DataTable component

* [WEB-4311]  fix: membership data handling and state reversal on error (#7205)

* [WEB-4231] Pie chart tooltip #7192

* fix: build errors

* fix: utils imports

* chore: fix build errors

* yarn lock file update

---------

Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Co-authored-by: JayashTripathy <76092296+JayashTripathy@users.noreply.github.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-06-16 17:26:28 +05:30
0983e5f44d [WEB-4281] chore: project error message updated (#7190)
* chore: project error message updated

* fix: error message for project creation

* fix: incorrect error code

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-06-16 17:19:44 +05:30
Prateek ShouryaandGitHub 2014400bed refactor: move web utils to packages (#7145)
* refactor: move web utils to packages

* fix: build and lint errors

* chore: update drag handle plugin

* chore: update table cell type to fix build errors

* fix: build errors

* chore: sync few changes

* fix: build errors

* chore: minor fixes related to duplicate assets imports

* fix: build errors

* chore: minor changes
2025-06-16 17:18:41 +05:30
sriram veeraghanta dffcc6dc10 chore(deps): brace-expansion upgraded to 2.0.2 2025-06-16 17:10:08 +05:30
sriram veeraghanta 640b23fb1b chore(deps): nextjs upgrade to 14.2.30 2025-06-16 17:02:04 +05:30
sriram veeraghantaandGitHub 0d3c00b946 Sync: Community Changes #3401 2025-06-16 16:35:29 +05:30
952c31d9c6 [SILO-214] Plane Clickup Importer v1 (#3381)
* add types for clickup entities

* add api service for clickup

* add pull and transform methods

* clickup folder

* add migrator and bulk transformer for clickup

* add clickup apk service for store

* add clickup data store

* add UI components and page clickup importer

* add UI components and page clickup importer

* fix bugs related to clickup import labels attachment issue type

* fix duplicate comments

* resolve plane client conflict

* content parser for description

* add relation map update for import job

* fix issues regarding custom field types options and values

* add translations + feature flag for clickup

* fix missing integration type export

* fix relation mapping across projects

* fix false comment actors in data import task

* fix cancel import job translation

* fix cancel import job translation

* fix rate limit issues for clickup import

* push unique work items to transform job

* handle username null in members

* increase refetch timing for jobs

* add rate limit fixes for pull in import job

* remove protect in pull job as not required now

* clickup additional data migrator for comments and attachments

* clickup additional migrator setup

* comment clickup importer

* fix status mapping for custom status in list n folders

* fix issues with clickup additional data migrator

* add changes to etl pull method clickup

* increase the rate limit for oauth tokens

* add pulling percent logs

* add batching to pull in clickup additional migrator

* add mq changes for error handling from preview

* Add migration for completed batch count + fix issues with progress of clickup additional migrator

* add support for external id and source in project and state external apis

* creation of project and state before transform if missing

* UI changes to support only space selection and start all folder import job

* Bug fixes for enhanced ClickUp importer with multi folder import; Translations; UI changes to support enhanced clickup importer

* migration to support enhanced clickup changes

* add emoji for project + no priority fix

* add logs to debug job stuck issue

* batch api calls to apiserver

* Fix edge-case in data import task to handle empty batches, preventing jobs from getting stuck in "TRANSFORMING" state.

* add retry logic for job finished in race condn and last batch failure

* feat: Update API routes with count increment endpoint, refactor import report logic, and enhance logging for job processing

* refactor: Improve logging in data import task and adjust batch completion logic for better handling of empty lists + UI fixes

* refactor: Enhance logging in data import task and streamline batch completion handling for empty issue lists

* refactor: remove batch locks

* refactor: enhance error handling in data migration

* chore: remove storing of members in config, skip sending relation map in get jobs

* refactor: logs and labels transform

* fix no page batch completion + feature flag clickup

* fix duplicate state mapping and transforming stuck

* reduce batching in state creation

* fix: remove multer package and resolved build errors

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-06-16 15:45:13 +05:30
8b878da003 [SILO-270] feat: Notion Importer Phase 1 Implementation (#3392)
* [SILO-249] feat: notion importer phase 1 with zip manager and worker traversal  (#3153)

* feat: added notion zip manager code

* feat: added endpoint for bulk create pages

* feat: added page service in sdk

* fix: temporary runner

* feat: added notion zip file node types

* feat: added file extractor and file tree creator methods

* feat: added zip file manager class for interacting with extractors

* feat: added key manager types

* feat: added notion data migrator class for processing nodes

* feat: added method to set map in the store

* feat: added initialization of s3 in worker base

* feat: registered notion worker in the manager

* feat: added env variables for s3

* fix: remove unused services

* fix: removed unnecessary package

* fix: moved options into types

* fix: cleanup and jsdoc comments

* fix: renamed types and enums for consistency

* fix: replaced console.log with logger

* fix: added ttl to caches

* fix: moved zip manager to be reusable

* feat: added distributed counter for keeping count of leaf nodes

* fix: broken down the notion importer into multiple phases

* fix arrow function for key

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>

* fix: eslint issues

* fix: unused variables and expression call

* fix: resolved eslint warnings

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>

* fix: build fix

* [SILO-254] feat: notion importer phase two implementation (#3169)

* feat: created endpoint for bulk operation on pages

* feat: added phase two implementation of notion migrator

* feat: added expected and ignored files list

* feat: added method for getting a specific map field

* fix: duplicate import

* feat: added page api endpoint

* feat: restructured and exported parser from core

* feat: added notion content parser extensions

* feat: added content parser initialization

* feat: added cleanup function in base migrator

* feat: refactored phases to include content parsing and cleanups

* chore: added content parser config

* feat: added cleanup function in zip manager to remove toc

* feat: added bluebird as dependency

* chore: remove test file

* fix: formatted code

* fix: decoupled content parser from `etl/core` to avoid circular dependency (#3204)

* fix: decoupled parser from etl/core and moved to etl/parser

* fix: modified linear importer for using parser from etl/parser

* fix: updated notion importer content parser imports

* [SILO-265] feat: Notion Importer UI and controller for generating presigned URL (#3237)

* feat: added notion controller for handling credentials save and uploads

* feat: added new keys and cached job and credential data

* feat: added notion controller and s3 init script

* feat: added UI changes for notion importer

* feat: added translation file and feature flags

* feat: added model changes to job and modified endpoint for pages

* feat: added start time to job

* fix: silo build failing

* feat: added notion importer UI component for uploading

* feat: added new extension for processing bookmark links

* fix: coderabbit suggestions

* fix: build fixes

* fix: condition

* fix: added page bulk endpoint under hmac and apiclient

* fix: root page when there is only one directory

* fix: added root directory path and error handling

* fix: add html page for each directory if not present

* feat: added feature flags for notion importer

* feat: added translations for all languagaes

* feat: added translations

* fixed: translations for russian

* [SILO-302] feat: migrated notion zip upload endpoints to apiserver (#3327)

* feat: added endpoint for silo uploads for notion importer

* feat: refactored controller to add start import route

* fix: removed policy for ttl in s3

* feat: modified frontend for using new endpoints from apiserver for uploads

* chore: added permission to silo asset endpoint

* feat: added notion importer feature flag to asset endpoint

* fix: used existing assets v2 for updating the asset upload

* fix: removed unused endpoints from silo asset view

* fix: moved notion importer into new settings page

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-06-16 15:27:45 +05:30
c511c82970 [SILO-317] feat: template cover image for publish (#3407)
* Added cover_image_asset to Template model

* use the right property

* Test case for Template Model

* [SILO-317] feat: add cover image upload to template publish form

* improve: add cover image loader

* feat: add paste support to pill input

* chore: add cover_image in the serializer

* chore: update cover image url field key

* improvement: update translations for cover image field

* chore: minor icon updates

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-06-16 14:11:46 +05:30
JayashTripathyandGitHub e13d8aa4b3 [WEB-4231] Pie chart tooltip #7192 2025-06-16 14:03:07 +05:30
Prateek ShouryaandGitHub cf595de7c7 [WEB-4311] fix: membership data handling and state reversal on error (#7205) 2025-06-16 14:02:47 +05:30
JayashTripathyandGitHub 0fa9c8b015 [WEB-4323] refactor: Analytics refactor (#7213)
* chore: updated label for epics

* chore: improved export logic

* refactor: move csvConfig to export.ts and clean up export logic

* refactor: remove unused CSV export logic from WorkItemsInsightTable component

* refactor: streamline data handling in InsightTable component for improved rendering

* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation

* refactor: cleaned up some component and added utilitites

* feat: add "at_risk" translation to multiple languages in translations.json files

* refactor: update TrendPiece component to use new status variants for analytics

* fix: adjust TrendPiece component logic for on-track and off-track status

* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts

* feat: add "at_risk" translation to various languages in translations.json files

* feat: add "no_of" translation to various languages in translations.json files

* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files

* refactor: rename insightsFields to ANALYTICS_INSIGHTS_FIELDS and update analytics tab import to use getAnalyticsTabs function

* feat: update AnalyticsWrapper to use i18n for titles and add new translation for "no_of" in Russian

* fix: update yAxis labels and offsets in various charts to use new translation key and improve layout

* feat: define AnalyticsTab interface and refactor getAnalyticsTabs function for improved type safety

* fix: update AnalyticsTab interface to use TAnalyticsTabsBase for improved type safety

* fix: add whitespace-nowrap class to TableHead for improved header layout in DataTable component
2025-06-16 14:01:49 +05:30
Dheeraj Kumar KetireddyandGitHub c91d632e97 [SILO-316] Migration: Added cover_image_asset to Template model (#3404)
* Added cover_image_asset to Template model

* use the right property

* Test case for Template Model

* Added is_mentionable boolean field to Application
2025-06-13 18:51:52 +05:30
NikhilandGitHub 3cdc29b9ba [WEB-4317] fix: activity duplicates for epics and project activity #3408 2025-06-13 18:04:42 +05:30
NikhilandGitHub c35a09b19c [WEB-4318]: fix incorrect field is being accessed on the worklog api #3403 2025-06-13 14:58:51 +05:30
NikhilandGitHub 66f116b423 [WEB-4317] chore: remove duplicates from activity #3405 2025-06-13 14:58:02 +05:30
Aaryan KhandelwalandGitHub 6fe0415d66 [WEB-4316] chore: new endpoints to download an asset (#7207)
* chore: new endpoints to download an asset

* chore: add exception handling
2025-06-13 14:41:08 +05:30
Manish GuptaandGitHub b42652e49b [INFRA-175] chore: aws ami (#3285)
* feat: Plane Commercial AMI Publish Action

* feat: update CloudFormation template and workflow for AMI publishing

- Added new environment variables for CloudFormation template and output file in the GitHub Actions workflow.
- Refactored the CloudFormation template to set default CIDR values and simplified region restrictions.
- Updated the Packer configuration to use instance type directly instead of spot instance types.

* feat: add new infrastructure parameters for VPC and public subnet CIDR blocks in CloudFormation template

* chore: update AMI publish region default value and clean up CloudFormation template by removing outdated parameters and logic

* chore: update AWS VPC and subnet CIDR defaults, modify instance type, and adjust AMI volume size in Packer configuration

* Enhance CloudFormation template and related scripts to support Instance Domain Name configuration. Added parameters for InstanceDomainName, updated metadata, and modified user data scripts to export the domain name. Updated verify-plane-setup script to utilize the domain name for access instructions.

* Update appliance-docker-ee.yml to change default AMI publish region to 'us-east-1' and update AWS manifest bucket to 'plane-terraform-marketplace'

* Add JSON validation for AMI cleanup in appliance-docker-ee.yml
2025-06-13 14:28:38 +05:30
sriram veeraghanta a0eff51333 fix: merge conflicts 2025-06-13 02:11:51 +05:30
sriram veeraghantaandGitHub ebc2bdcd3a feat: adding build process to logger package using tsup #7210 2025-06-13 01:50:44 +05:30
AaronandGitHub 11b222ece8 chore(deps): update TypeScript version across multiple packages to 5.8.3 (#7209) 2025-06-13 01:40:27 +05:30
sriram veeraghantaandGitHub eee51f234c Sync: Community Changes #3399 2025-06-13 01:21:26 +05:30
JayashTripathy b3721419b2 Merge branch 'sync/ce-ee' of https://github.com/makeplane/plane-ee into sync/ce-ee 2025-06-12 21:27:30 +05:30
ce5ebf87fa [WEB-4317] fix: teamspace related bugs (#3400)
* [WEB-4317] fix: enhance issue access validation for teamspace members (#3398)

* fix: issue count in teamspace entities

* fix: layout option in create teamspace view modal

* fix: teamspace view link in new tab

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-06-12 21:22:22 +05:30
JayashTripathyandGitHub c1a078ef3f [WEB-4246] Analytics minor improvements (#7194)
* chore: updated label for epics

* chore: improved export logic

* refactor: move csvConfig to export.ts and clean up export logic

* refactor: remove unused CSV export logic from WorkItemsInsightTable component

* refactor: streamline data handling in InsightTable component for improved rendering

* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation

* refactor: cleaned up some component and added utilitites

* feat: add "at_risk" translation to multiple languages in translations.json files

* refactor: update TrendPiece component to use new status variants for analytics

* fix: adjust TrendPiece component logic for on-track and off-track status

* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts

* feat: add "at_risk" translation to various languages in translations.json files

* feat: add "no_of" translation to various languages in translations.json files

* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files
2025-06-12 21:15:09 +05:30
Akshita GoyalandGitHub 9b166b1255 [WEB-4306] fix: removed first call delay in search #3396 2025-06-12 17:39:39 +05:30
Prateek ShouryaandGitHub 96ca567b05 [WEB-4313] fix: teamspace work item list endpoint (#3397) 2025-06-12 17:35:46 +05:30
Prateek ShouryaandGitHub e762065634 [WEB-4307] fix: remove teamspace membership when user is assigned guest role (#3394)
* [WEB-4307] fix: remove teamspace membership when user is assigned guest role

* chore: update comments

* chore: minor logic improvement

* chore: update comments
2025-06-12 16:25:17 +05:30
Prateek ShouryaandGitHub b8e9c88b14 [WEB-4305] fix: teamspace view icon in breadcrumb of view detail page (#3391) 2025-06-11 19:48:13 +05:30
Saurabh KumarandGitHub c1ca165693 [SILO-303] Model and migrations for Clickup importer #3346 2025-06-11 17:06:36 +05:30
9967fc8c07 [WEB-4304] improvement: linking projects to teamspace modal enhancements (#3389)
* [WEB-4304] improvement: linking projects to teamspace modal enhancements

* chore: code refactor

* chore: remove pages and views from teamspace linked entities

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-06-11 16:55:15 +05:30
Vamsi KrishnaandGitHub 93203630f4 [WEB-4292]fix: line breaks in updates #3378 2025-06-11 16:42:32 +05:30
Prateek ShouryaandGitHub 5f64822ec7 [WEB-4294] fix: work item assignee validation #3385 2025-06-11 16:41:12 +05:30
Prateek ShouryaandGitHub 736838657a [WEB-4289] fix: teamspace description validation (#3386)
* removed tooltip from teamspace members sidebar
2025-06-11 16:40:41 +05:30
sriram veeraghantaandGitHub c7b285e55e Sync: Community Changes #3388 2025-06-11 16:40:11 +05:30
Akshita GoyalandGitHub 934663e518 Merge branch 'preview' into sync/ce-ee 2025-06-11 16:20:10 +05:30
Akshita GoyalandGitHub ad11a34efc [WEB-4236] fix: divided settings scroll for sidebar and main content (#7201)
* fix: divided settings scroll for sidebar and main content

* fix: handled icons

* fix: mobile css
2025-06-11 16:11:40 +05:30
sriram veeraghanta 7abc3ce9a3 Merge branch 'canary' of github.com:makeplane/plane-ee into preview 2025-06-10 20:50:20 +05:30
sriram veeraghantaandGitHub ace5bc9abc Sync: Community Changes #3377 2025-06-10 20:45:09 +05:30
Prateek Shourya 3969069be5 Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-06-10 20:43:58 +05:30
Prateek ShouryaandGitHub 81e2781c1f [WEB-4301] improvement: filter teamspace projects in work item creation (#3382) 2025-06-10 20:41:02 +05:30
Prateek ShouryaandGitHub 9c28db8b7b [WEB-4300] improvement: add allowedProjectIds to create work item modal (#7195) 2025-06-10 20:32:39 +05:30
guru_sainathandGitHub e070952216 [MOBIL-612] chore: updated email key in magic code provider #3379 2025-06-10 19:13:09 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
32d5fea3d3 chore(deps): bump requests (#7193)
Bumps the pip group with 1 update in the /apiserver/requirements directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.2 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  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>
2025-06-10 17:39:48 +05:30
guru_sainathandGitHub 5b69aae3de [MOBIL-612] chore: Handle email error case in magic code authentication #3376 2025-06-10 17:35:48 +05:30
Akshita GoyalandGitHub f32d6c780d [WEB-4293] fix: redirections for connections page #3370 2025-06-10 16:15:20 +05:30
sriram veeraghanta be3ec10c54 fix: imports in mobile auth screens 2025-06-10 14:16:26 +05:30
sriram veeraghantaandGitHub c40ae0e054 Sync: Community Changes #3368 2025-06-10 14:10:00 +05:30
guru_sainathandGitHub 4e3ea24009 [MOBIL-612] chore: updated the mobile auth imports #3369 2025-06-10 14:09:32 +05:30
Prateek ShouryaandGitHub 6adc721b34 [WEB-4283] fix: update group key handling in issue store utilities for state groups (#7191)
* fix: update group key handling in issue store utilities for state groups

- Introduced a new function to determine the default group key based on the provided groupByKey.
- Updated references to use the new function for improved clarity and maintainability.
- Adjusted the mapping for "state_detail.group" in the ISSUE_GROUP_BY_KEY to ensure consistency.
- Enhanced the getArrayStringArray method to handle group values more effectively.

* refactor: clean up filters constants
2025-06-10 13:56:42 +05:30
Prateek ShouryaandGitHub 1c227a8108 fix: build errors (#3367) 2025-06-10 12:42:18 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ff9bd92391 chore(deps): bump requests (#3366)
Bumps the pip group with 1 update in the /apiserver/requirements directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.2 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  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>
2025-06-10 12:25:58 +05:30
Prateek ShouryaandGitHub 152770f998 [DISCO-70] fix: restrict offline payment upgrade (#3343) 2025-06-10 12:25:12 +05:30
ad2c1a87c9 [INFRA-144] fix: airgap upgrade (#3318)
* fix: skip APP_RELEASE_VERSION during environment variable updates in install script

- Updated the install.sh script to skip processing the APP_RELEASE_VERSION key when reading from the backup environment file, ensuring that this key is not inadvertently modified during upgrades.

* fix: update current_version assignment in register_instance_ee command

- Changed the assignment of current_version to use app_version as the default value when user_version is not provided, ensuring consistency in version handling.

---------

Co-authored-by: Manish Gupta <manish@plane.so>
2025-06-10 12:00:26 +05:30
sriram veeraghantaandGitHub 1e76fcda50 sync: canary changes with preview (airgapped) #3363 2025-06-10 11:59:16 +05:30
32a21f1ba2 [WEB-4286] fix: bugs related to team-space changes (#3360)
* refactor: improve code readability by formatting imports and breaking long lines in intake and issue views

* chore: correct soft deletes

* refactor: streamline queryset filtering for soft deletion across models

* feat: enhance assignee filtering to support teamspace members in issue creation

* chore: replaced issue with work item

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-10 11:58:00 +05:30
sriram veeraghantaandGitHub cc27420326 Sync: Community Changes #3364 2025-06-10 11:57:18 +05:30
Anmol Singh BhatiaandGitHub 531748dcc3 [WEB-4288] fix: auth page tab index (#7189)
* fix: auth page tab index

* chore: code refactor
2025-06-10 01:47:59 +05:30
pablohashescobar 4b546ed1a4 Merge branch 'canary' of github.com:makeplane/plane-ee into sync-canary 2025-06-09 21:30:38 +05:30
sriram veeraghantaandGitHub 0d049118a4 Sync: Community Changes #3359 2025-06-09 16:59:07 +05:30
vamsikrishnamathala 84bb97b108 Merge branch 'sync/ce-ee' of github.com:makeplane/plane-ee into sync/ce-ee 2025-06-09 16:10:36 +05:30
vamsikrishnamathala 2c16385efa Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-06-09 16:08:45 +05:30
Sangmin AhnandGitHub 9965f48ba7 fix: prevent prematurely triggered Japanese label creation (#7084) 2025-06-09 16:07:42 +05:30
guru_sainathandGitHub 626468e60b [MOBIL-612] feat: Implement mobile signup workflow for password, magic code, Google, and GitHub (#3335)
* dev: handled the signup logic for password and magic code

* dev: removed is_mobile in authentication

* chore: handled the invitation id for google and github

* chore: updated the types imports

* chore: updated url

* chore: handled the google and github click

* chore: updated auth adapter props

* chore: updated the str validation

* chore: classname Typo

* chore: updated key in mobile magic_code view

* chore: updated the invitation logic in email and magic

* chore: typo
2025-06-09 16:05:06 +05:30
sriram veeraghanta c30b00ad20 fix: pi chat conversation ui 2025-06-09 16:03:59 +05:30
Saurabh KumarandGitHub d15d7549f7 [SILO-303] Add external id and external source in project model #7182 2025-06-09 16:02:09 +05:30
Vamsi KrishnaandGitHub 8fcffd2338 [WEB-4196]fix: sub work item copy link message #7186 2025-06-09 15:46:57 +05:30
Vamsi KrishnaandGitHub 07e937cd8e [WEB-4094]chore: workspace notifications refactor (#7061)
* chore: workspace notifications refactor

* fix: url params

* fix: added null checks to avoid run time errors

* fix: notifications header color fix
2025-06-09 15:33:57 +05:30
Vamsi KrishnaandGitHub 09a5f51ccb [WEB-3374]feat: added merge date display (#3306)
* feat: added merge date display

* feat: added merged date display to projects and initiatives
2025-06-09 15:32:18 +05:30
Akshita GoyalandGitHub ca6829f20c fix: build (#3358) 2025-06-09 15:27:15 +05:30
sriram veeraghantaandGitHub d18b01ac6b Sync: Community Changes #3356 2025-06-09 15:17:37 +05:30
sriram veeraghanta e44bfa1d01 chore: yarn lock file update 2025-06-09 15:16:46 +05:30
sriram veeraghanta 255e724708 fix: merge conflicts 2025-06-09 15:15:37 +05:30
fba22a18a8 [PAI-431] chore: implemented feedback modal for pi chats (#3344)
* chore: implemented feedback modal for pi chats

* fix: added observer

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-06-09 15:13:18 +05:30
69b64afc0f [PAI-457] [PAI-439] [PAI-436] [PAI-422] [PAI-420]: chore pi improvements (#3337)
* fix: pi refactoring

* fix: new chat button

* fix: refactoring

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-06-09 15:11:35 +05:30
Akshita GoyalandGitHub 78c72f6c36 [PAI-465] chore: added reasoning block for pi (#3342)
* chore: added reasoning block

* fix: formatting

* fix: redactor

* fix: css
2025-06-09 15:10:26 +05:30
Dheeraj Kumar KetireddyandGitHub 25a8d7648b [SILO-304] FIX: remove is_verified filter from PublishedTemplate endpoints #3357 2025-06-09 15:10:00 +05:30
Farahat AbdrabouhandGitHub 1f1b421735 Docs: Correct numeric values in contributing guide #7184 2025-06-09 13:22:07 +05:30
sriram veeraghanta 5a43ec8411 chore: turbo repo version upgrade 2025-06-09 13:20:07 +05:30
sriram veeraghanta c86e7e02bc chore: upgrade tar-fs package to fix vulnerabilities 2025-06-09 13:19:14 +05:30
sriram veeraghanta d91d7a2f60 chore: tar-fs patch upgrade 2025-06-09 12:58:18 +05:30
sriram veeraghanta b3b285b1e5 chore: upgrade django version to 4.2.22 2025-06-09 12:49:26 +05:30
sriram veeraghantaandGitHub 8cbf407aa0 Sync: Community Changes #3355 2025-06-09 00:34:27 +05:30
Prateek ShouryaandGitHub 11debee402 fix: build errors related to project member list (#7185) 2025-06-09 00:31:27 +05:30
b3ba488d46 [WEB-3450] feat: teamspaces v2 (#2901)
* feat: remove scope filter from teamspace statistics

* feat: remove project dropdown from create or update teamspace form

* feat: remove scope filter from teamspace views

* feat: remove scope filter from teamspace pages

* feat: remove scope filter from teamspace work items

* chore: add endpoint to add multiple projects to teamspaces also remove
auto member addition to project

* choe: add uuid import

* feat: teamspaces detail in project settings

* feat: re-write permission layer to handle project roles through teamspaces

* improvement: toast message for teamspace list in project settings

* chore: remove teamspace projects module.

* feat: UI revamp for project settings members page

* refactor: single source of truth for project member roles

* improvement: project member settings page header.

* chore: remove teamspace list if feature is disabled

* chore: add teamspace validation for project endpoints

* chore: update permissions

* chore: teamspace filter

* chore: correct indentation

* chore: update teamspaces permission endpoint

* chore: update teamspace filters

* chore: update project members me api to return the current member project

* chore: update permissions to accomodate team permissions

* chore: remove the util function and use the manager queryset to filter project access

* chore: update permission for issue types

* chore: update querysets for epics and issue types

* chore: update page access

* improvement: permission layer and other minor UI changes

* improvement: minor UI enhancements

* chore: update project roles endpoint

* chore: update project members endpoint

* chore: update project members endpoint

* chore: remove member annotation

* refactor: project member role and original role

* refactor: project membership store

* improvement: project member list loader

* fix: search issues endpoint

* improvement: translation support for teamspaces project settings.

* chore: added option to clear existing members while fetching project members.

* chore: add extra validation for places where guests have restricted view

* chore: add caching for workspace feature flag

* fix: role update logic.

* fix: project members me api when user is guest for the project

* chore: remove duplicates returned from the api

* improvement: update link project modal

* improvement: ui / ux and translations enhancements

* feat: add all translations for teamspaces

* chore: minor component updates

* chore: minor fixes related to permission layer

* fix: strict type checks for permission layer

* fix: empty state and broken links for teamspaces

* fix: delete teamspace members when user is removed from workspace

* improve: members settings page

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
2025-06-09 00:19:46 +05:30
Dheeraj Kumar KetireddyandGitHub bd355de7b8 [WEB-4106] FIX: Add fallback query for individual page updates #3352 2025-06-09 00:00:03 +05:30
10d0dc3278 [SILO-229] feat: support bots to be assigned/mentioned in Plane (#3272)
* [SILO-229] feat: support bots to be assigned/mentioned in Plane

* Set the user bot_typ to 'APP_BOT' for application bot users

* Allow APP Bot users to be added as assignees

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-06-08 23:56:59 +05:30
sriram veeraghantaandGitHub d4a928a8fb Sync: Community Changes #3354 2025-06-08 23:51:06 +05:30
sriram veeraghantaandGitHub 546752eb4a Merge branch 'preview' into sync/ce-ee 2025-06-08 23:50:42 +05:30
Prateek ShouryaandGitHub 13bad3c34e [WEB-4198] improvement: update publish template translations (#3289) 2025-06-08 23:47:33 +05:30
Vamsi KrishnaandGitHub 1608e4f122 [WEB-3374]feat: added merge date display (#7141)
* feat: added merge date display

* chore: moved formatter ti utils

* chore: removed unwanted props
2025-06-08 23:47:08 +05:30
edeeee1227 [WEB-4063]chore: updated work item email template (#7044)
* chore: updated work item email template

* chore: passed dynamic value for email template

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-06-08 23:46:12 +05:30
Prateek ShouryaandGitHub 4a5682a219 fix: build error (#3351) 2025-06-06 21:27:06 +05:30
Anmol Singh BhatiaandGitHub e9cf4d18ba [WEB-4268] fix: quick action dropdown overflow issue in initiatives item #3345 2025-06-06 20:10:50 +05:30
Dheeraj Kumar KetireddyandGitHub 368b2e19e7 [WEB-4106] Set index shard and replica count from env variables (#3350)
* Set index shard and replica count from env variables

* Specify action explicitly
2025-06-06 20:10:05 +05:30
355a312d7d [WEB-4258] feat: add feature flag proxy endpoint for space application (#3331)
* feat: add FeatureFlagProxySpaceEndpoint and integrate payment URL patterns

- Introduced FeatureFlagProxySpaceEndpoint to handle feature flag requests based on workspace anchor.
- Updated payment URL patterns to include the new space URL patterns.
- Enhanced feature flag view with caching and error handling.

* feat: enhance error handling and add rate limiting to feature flag endpoints

- Integrated logging for exceptions in FeatureFlagProxyEndpoint and FeatureFlagProxySpaceEndpoint.
- Added SpaceRateThrottle and AnchorBasedRateThrottle to manage request rates for feature flag endpoints.

* chore: space app store and service init

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-06-06 20:08:34 +05:30
Vamsi KrishnaandGitHub 72e59124ad Merge pull request #3313 from makeplane/fix-eipcs_updates_block
[WEB-4199]fix: epics updates block line seperation
2025-06-06 18:36:05 +05:30
sriram veeraghantaandGitHub 4df0d7908f Sync: Community Changes #3348 2025-06-06 18:10:31 +05:30
sriram veeraghantaandGitHub 31670e315a Sync: Community Changes #3341 2025-06-06 18:07:39 +05:30
sriram veeraghanta 9ff238816b sync: canary changes to preview 2025-06-06 18:06:51 +05:30
sriram veeraghanta 6bd5caf008 chore: upgrade package version 2025-06-06 17:50:31 +05:30
Dheeraj Kumar KetireddyandGitHub d80dc92ff5 [WEB-4106] Migrates to OpenSearch for enhanced search (#3216)
* Migrates to OpenSearch for enhanced search

Migrates from Elasticsearch to OpenSearch to leverage its capabilities.

- Updates dependencies and configurations to use OpenSearch.
- Introduces OpenSearchHelper to streamline query building and execution,
  featuring standardized filters, query DSL with custom analyzers,
  field-specific boosts, pagination, and source field filtering.
- Implements edge n-gram analyzer for improved prefix matching in search queries.
- Modifies search views to utilize OpenSearchHelper for efficient and
  organized search results.
- Adds AttrDictField to properly serialize AttrDict objects

This migration enhances the search functionality and ensures compatibility
with the new OpenSearch infrastructure.

* Added opensearch to requirements and removed elasticsearch

* increased timeout for opensearch connections

* Minor updates to index signal handler

* Better search capability for workitem id

* Minor optimization for helper class

* Query performance improvements

* Modified management command to handle opensearch

* Replaced elasticsearc references to opensearch

* Update OpenSearch index names to include a configurable prefix from settings. Added support for OPENSEARCH_INDEX_PREFIX in Cycle, Issue, Module, Page, Project, Teamspace, View, and Workspace documents.

* Update default OpenSearch index prefix to an empty string in common settings.
2025-06-06 17:35:35 +05:30
JayashTripathy 6f03893f8b Merge branch 'preview' of https://github.com/makeplane/plane-ee into sync/ce-ee 2025-06-06 17:04:12 +05:30
JayashTripathy 465dff14a1 chore: sync PR conflicts 2025-06-06 17:03:27 +05:30
sriram veeraghanta c021aff58f chore: django version upgrade 2025-06-06 16:04:34 +05:30
sriram veeraghanta 683be55883 chore: upgrade nextjs version 2025-06-06 16:02:56 +05:30
Manish Guptaandsriram veeraghanta 970ce8cf26 [INFRA-183] feat: add restore-airgapped script to build workflow (#7170)
* [WEB-4260] chore: add restore-airgapped script to build workflow

* docs: update restore instructions in README for self-hosted and commercial air-gapped versions

* fix: update restore script filename and improve error handling in restore-airgapped script
2025-06-06 15:24:43 +05:30
Manish Guptaandsriram veeraghanta cbbe1a4e4d refactor: Enhance backup and restore scripts for container data (#7055)
* refactor: enhance backup and restore scripts for container data management

* fix: ensure proper quoting in backup script to handle paths with spaces

* fix: ensure backup directory is only removed if tar command succeeds

* CodeRabbit fixes
2025-06-06 15:24:43 +05:30
Manish Guptaandsriram veeraghanta 6a74677cc9 fix: update API service startup check to use HTTP request instead of logs (#7054) 2025-06-06 15:24:43 +05:30
sriram veeraghanta f6ea4f931d Merge branch 'canary' of github.com:makeplane/plane into preview 2025-06-06 15:23:10 +05:30
Aaryan KhandelwalandGitHub 950fcfdb40 [WIKI-391] chore: handle deactivated user display name in version history #7171 2025-06-06 15:04:00 +05:30
Bavisetti NarayanandGitHub 053c895120 [WEB 4252] chore: updated the favicon request for work item link (#7173)
* chore: added the favicon to link

* chore: added none validation for soup
2025-06-06 15:02:00 +05:30
Aaryan KhandelwalandGitHub 245167e8aa refactor: unused components, hooks, constants (#7157)
* refactor: remove unused dashboard components and fetch keys

* refactor: remove unused hooks and wrappers

* chore: remove unused function
2025-06-06 14:09:56 +05:30
Vamsi KrishnaandGitHub 6be3f0ea73 [WEB-4208]chore: refactored work item quick actions (#7136)
* chore: refactored work item quick actions

* chore: update event handling for menu

* chore: reverted unwanted changes

* fix: update archive copy link

* chore: handled undefined function implementation
2025-06-06 13:21:00 +05:30
JayashTripathyandGitHub 14d2d69120 [WEB-4230] refactor: Analytics code refacor, Removal of nivo charts dependencies and translations (#7131)
* chore: added code split for the analytics store

* chore: done some refactor

* refactor: update entity keys in analytics and translations

* chore: updated the translations

* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor

* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality

* feat: enhance WorkItemsModal and analytics store with isEpic functionality

* feat: integrate isEpic state into TotalInsights and WorkItemsModal components

* refactor: remove isEpic state from WorkItemsModalMainContent component

* refactor: removed old  analytics components and related services

* refactor: new analytics

* refactor: removed all nivo chart dependencies

* chore: resolved coderabbit comments

* fix: update processUrl to handle custom-work-items in peek view

* feat: implement CSV export functionality in InsightTable component

* feat: enhance analytics service with filter parameters and improve data handling in InsightTable

* feat: add new translation keys for various statuses across multiple languages

* [WEB-4246] fix: enhance analytics components to include 'isEpic' parameter for improved data fetching

* chore: update yarn.lock to remove deprecated @nivo packages and clean up unused dependencies
2025-06-06 01:53:38 +05:30
Anmol Singh BhatiaandGitHub 570a9e319e [WEB-4257] chore: user profile setting options updated #7166 2025-06-06 01:47:31 +05:30
Prateek ShouryaandGitHub 76b4fe10d0 [WEB-4273] fix: plans comparison scroll issue (#3339) 2025-06-05 22:56:13 +05:30
sriram veeraghantaandGitHub 785ba3f9f3 Sync: Community Changes #3340 2025-06-05 22:54:52 +05:30
Anmol Singh BhatiaandGitHub 469a027bb6 [WEB-4274] fix: metadata base url warning #7175 2025-06-05 22:51:56 +05:30
Prateek ShouryaandGitHub 8c99a7df88 [WEB-4273] fix: plans comparison scroll issue (#7176) 2025-06-05 22:51:05 +05:30
sriram veeraghantaandGitHub c7f99049bc Sync: Community Changes #3338 2025-06-05 20:50:35 +05:30
Prateek ShouryaandGitHub f34f078bd2 [WEB-4272] fix: remove duplicate CommandPalette instances from settings layouts to prevent modal conflicts (#7174) 2025-06-05 20:48:36 +05:30
sriram veeraghantaandGitHub 27db598955 Sync: Community Changes #3336 2025-06-05 20:41:03 +05:30
Anmol Singh BhatiaandGitHub 0fe2549bc6 [WEB-4256] chore: add og image and update meta tags for social media compatibility (#7165)
* chore: og image added

* chore: meta config for cross-platform support
2025-06-05 19:32:11 +05:30
Prateek ShouryaandGitHub 118964de01 [WEB-4254] fix: ensure user details are available in project member details computation (#7162) 2025-06-05 19:31:07 +05:30
Prateek ShouryaandGitHub eb2c64757e [DISCO-22] chore: remove upgrade routes from commercial codebase (#3158)
* [DISCO-22] chore: remove upgrade routes from commercial codebase

* chore: remove external upgrade endpoints

* chore: update subscription button logic
2025-06-05 17:43:42 +05:30
Manish GuptaandGitHub 9f37f1ef0e [INFRA-183] feat: add restore-airgapped script to build workflow (#7170)
* [WEB-4260] chore: add restore-airgapped script to build workflow

* docs: update restore instructions in README for self-hosted and commercial air-gapped versions

* fix: update restore script filename and improve error handling in restore-airgapped script
2025-06-05 17:27:57 +05:30
Prateek ShouryaandGitHub bd9b712224 [DISCO-42] improvement: update feature list (#3334) 2025-06-05 16:47:51 +05:30
Prateek ShouryaandGitHub f848dc3cde [DISCO-42] improvement: add discount info to pricing card (#3332) 2025-06-05 14:42:35 +05:30
sriram veeraghantaandGitHub 7cc9cba27f Sync: Community Changes #3333 2025-06-05 14:41:58 +05:30
Prateek ShouryaandGitHub 986f29d1f2 [WEB-4253] improvement: plan card enhancements (#7168)
* [WEB-4253] improvement: plan card enhancements

* improvement: pricing changes
2025-06-05 14:37:26 +05:30
pushya22andGitHub 177c58a43e Sync: Community Changes #3329
Sync: Community Changes
2025-06-04 19:32:52 +05:30
Aaryan KhandelwalandGitHub 1113f9fc19 [WIKI-412] regression: drop plugin logic #7161 2025-06-04 19:07:49 +05:30
sriram veeraghantaandGitHub dd3c698d9c Sync: Community Changes #3328 2025-06-04 17:33:59 +05:30
a0a5cfa182 [DISCO-42]: business plan implementation and business trial changes (#3319)
* feat: allow trial on business plan

* improvement: revamp trial banner

* fix: trial ended ux copy

* chore: change workspace trial allowed to not check for subscriptions"

* chore: remove unused endpoint

* chore: correct trial banner import

* chore: update subscription upgrade button logic.

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-06-04 17:32:34 +05:30
Prateek ShouryaandGitHub ef3ec7274c [WEB-4253] improvement: minor enhancements to billing page (#7160) 2025-06-04 17:29:45 +05:30
sriram veeraghantaandGitHub b17ee56cea Sync: Community Changes #3325 2025-06-04 16:42:42 +05:30
sriram veeraghantaandGitHub 334853ab4f Merge branch 'preview' into sync/ce-ee 2025-06-04 16:42:19 +05:30
a0a45b7916 [WEB-4249] fix: settings header css + cta on error page + project member list (#7159)
* fix: settings header css + cta on error page

* [WEB-4249] fix: filter out inactive workspace members from project member list

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-06-04 16:38:35 +05:30
sriram veeraghantaandGitHub 17ed73f63b Sync: Community Changes #3324 2025-06-04 16:00:00 +05:30
Aaryan Khandelwal a6b7723473 fix: merge conflicts resolved from preview 2025-06-04 15:58:38 +05:30
Aaryan KhandelwalandGitHub 2792d48288 [WIKI-412] chore: improved rich text editor extensions handling (#7158)
* chore: code split for rich text editor extensions

* chore: update type

* chore: add missing prop
2025-06-04 15:32:54 +05:30
sriram veeraghantaandGitHub 0d59c6a959 Sync: Community Changes #3320 2025-06-04 13:52:44 +05:30
Aaryan KhandelwalandGitHub 763c347f60 [WIKI-410] chore: editor translation files #3316 2025-06-04 13:51:46 +05:30
sriram veeraghanta b76ef631d7 fix: yarn lock updates 2025-06-04 13:50:27 +05:30
sriram veeraghanta 3a0536efdf fix: merge conflicts 2025-06-04 13:49:48 +05:30
Anmol Singh BhatiaandGitHub b2ccca0567 [WEB-3931] chore: maintenance page ux copy (#7135)
* chore: maintenance ux copy translation added

* chore: maintenance ux copy updated

* chore: code refactor
2025-06-04 13:37:58 +05:30
Prateek ShouryaandGitHub 2e822b38e4 [WEB-4240] chore: bump local db version to 1.3 #7154 2025-06-04 13:01:29 +05:30
JayashTripathyandGitHub e570fe404f [WEB-4182] Fix work item links error messages (#7122)
* fix: backend error message toast when getting error

* fix: toast in small screens
2025-06-03 22:18:26 +05:30
Aaryan KhandelwalandGitHub 48b613ae66 [WIKI-410] chore: editor translation files #7156 2025-06-03 22:13:56 +05:30
464256c64f [SILO-294] feat: published application meta endpoint (#3305)
* feat: application meta meta endpoint

* fix: incorrect viewset calling

* chore: return first attachment on PublishedTemplateMetaEndpoint

* fix: change endpoint name

* fix: filtering by ID

* fix: typo

* logo_url doesn't need a serializer method

* fix: template meta endpoint

* [SILO-299] feat: add template publish/unpublish functionality

* improvement: add translations for template publish/unpublish functionality

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-06-03 18:36:19 +05:30
Akshita GoyalandGitHub 0e8a6ad9cb [WEB-3998] fix: implemented applications settings #3317 2025-06-03 18:23:54 +05:30
sriram veeraghantaandGitHub 9c371047a1 release: v1.11.0 #3315 2025-06-03 17:22:22 +05:30
pushya22andGitHub 68de4a5ae5 Sync: Community Changes #3314 2025-06-03 15:20:40 +05:30
Prateek ShouryaandGitHub e70105235b [WEB-4245] improvement: minor enhancements to project members settings page (#7153) 2025-06-03 15:09:54 +05:30
NikhilandGitHub 7766e8b5cf [WEB-3998]: clean up imports and remove cache decorators in workspace views to avoid stale data on browser cache #7150 2025-06-03 13:36:52 +05:30
72ca7c77b3 [INFRA-144] airgap implementation (#3271)
* feat: airgapped draft

* feat: enhance airgapped installation script and build process

- Added installation checks for Docker and Docker Compose versions.
- Implemented yq for dynamic updates to docker-compose.yml, including setting environment variables and handling service volumes.
- Improved build.sh to install yq if not present and manage Docker images for airgapped setups.
- Updated install.sh to streamline the installation process and ensure necessary files are in place before proceeding.

* feat: enhance airgapped install script with domain input and OS compatibility

- Added prompts for user input of installation directory and application domain/IP address.
- Implemented OS-specific handling for `sed` commands to ensure compatibility across macOS and Linux.
- Improved user experience with additional confirmation messages during installation.

* feat: update installation script and versioning for airgapped deployment

- Enhanced the installation script to prompt for confirmation when the setup directory is not empty, allowing users to proceed with caution.
- Updated application version to v1.9.2 in both the docker-compose configuration and environment variables for consistency.
- Improved final confirmation message for clarity during installation.

* chore: airgapped upload license endpoint

* feat: added endpoint for uploading file in airgapped mode

* chore: file upload to handle formdata

* feat: license activation using file upload

* feat: add GitHub Actions workflow for building airgapped images

- Introduced a new workflow to build airgapped images with customizable platform options.
- Implemented steps for dependency installation, Docker setup, AWS credentials configuration, and environment preparation.
- Enhanced docker-compose.yml processing to include airgapped-specific configurations and manage service volumes.
- Added functionality to pull and save Docker images, and create a distribution tarball for S3 upload.

* feat: enhance build script for airgapped deployment

- Added support for customizable build platform and application release version through command-line flags.
- Implemented usage instructions for the build script to guide users on required and optional parameters.
- Improved handling of environment variable updates in docker-compose.yml and plane.env for different operating systems.
- Included cleanup steps to remove temporary data and logs after the build process.

* checking build

* refactor: simplify Docker setup in GitHub Actions workflow

- Removed redundant volume configuration for buildx cache in the build-branch-ee.yml workflow.

* feat: enhance build process by installing yq if missing

- Added a check in the GitHub Actions workflow to install yq if it is not already present, ensuring the build script can dynamically update docker-compose.yml.
- Removed redundant directory creation in the build script, streamlining the volume mapping process.
- Adjusted sed command handling for macOS and Linux to improve compatibility.

* feat: update airgapped artifact packaging in GitHub Actions workflow

- Modified the condition for packaging airgapped artifacts to include 'Release' build type.
- Streamlined the setup of yq by using an action instead of manual installation.
- Enhanced the build script to dynamically set the release version based on the build type, improving flexibility for different deployment scenarios.
- Updated S3 upload path to include the artifact suffix for better organization.

* feat: add AWS credentials to GitHub Actions workflow

- Introduced environment variables for AWS access key and secret key in the build-branch-ee.yml workflow, enabling secure access to AWS resources during the build process.

* fix: correct syntax for environment variable assignment in GitHub Actions workflow

- Updated the assignment of environment variables in the build-branch-ee.yml workflow to use the correct syntax for string interpolation.
- Ensured consistency in setting the AIRGAPPED_RELEASE_VERSION based on the build type condition.

* feat: add AWS CLI installation step to GitHub Actions workflow

- Introduced a step to install the AWS CLI in the build-branch-ee.yml workflow, ensuring necessary tools are available for AWS interactions.
- Updated environment variable assignments for consistency and clarity in the packaging process of airgapped artifacts.

* fix: streamline S3 upload command in GitHub Actions workflow

- Simplified the S3 upload command in the build-branch-ee.yml workflow by removing unnecessary directory navigation, directly referencing the airgapped tarball for upload.
- Improved clarity and efficiency in the artifact deployment process.

* chore: comment out S3 upload command in GitHub Actions workflow

- Commented out the S3 upload command in the build-branch-ee.yml workflow to prevent execution during the build process.
- This change allows for easier testing and debugging of the artifact packaging without uploading to S3.

* fix: correct syntax in GitHub Actions workflow for airgapped release version

- Fixed the conditional syntax in the build-branch-ee.yml workflow to properly close the if statement.
- Ensured the S3 upload command is correctly referenced, maintaining clarity in the artifact deployment process.

* fix: install yq if not present in GitHub Actions workflow

- Added a conditional check to install yq in the build-branch-ee.yml workflow if it is not already installed, ensuring the build process can proceed without errors related to missing dependencies.
- This change enhances the reliability of the workflow by automating the installation of necessary tools.

* fix: optimize Docker cleanup and S3 upload command in GitHub Actions workflow

- Added Docker cleanup commands to remove unused images and prune the system, improving resource management during the build process.
- Streamlined the S3 upload command to directly pipe the tarball, enhancing efficiency in artifact deployment.

* fix: improve confirmation prompt in installation script

- Added README.md contents
- Updated the confirmation prompt in install.sh for clarity, changing "YES" to "Yes" to enhance user understanding during the installation process.

* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow

- Changed the runner from 'ubuntu-22.04' to 'ubuntu-22.04-4-cores' to optimize resource allocation during the packaging process of airgapped artifacts.
- This adjustment aims to enhance performance and efficiency in the build workflow.

* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow

- Changed the runner from 'ubuntu-22.04-4-cores' to 'ubuntu-latest-4-cores' to ensure the use of the latest stable environment for improved compatibility and performance during the packaging process of airgapped artifacts.

* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow

- Changed the runner from 'ubuntu-latest-4-cores' back to 'ubuntu-22.04' to align with the previous configuration, ensuring compatibility and stability during the packaging process of airgapped artifacts.

* fix: simplify yq installation in GitHub Actions workflow

- Removed the conditional check for yq installation in the build-branch-ee.yml workflow, ensuring yq is always installed during the setup process. This change enhances the reliability of the workflow by eliminating potential errors related to missing dependencies.

* refactor: reorganize build steps in GitHub Actions workflow

- Restored and structured the build-push steps for various Docker images (admin, web, space, live, silo, apiserver, proxy, monitor, email) in the build-branch-ee.yml workflow.
- Updated the dependencies for the packaging of airgapped artifacts to ensure all build steps are executed in the correct order.
- Enhanced clarity and maintainability of the workflow by explicitly defining each build-push job.

* fix: comment out hardcoded airgapped release version in GitHub Actions workflow

- Commented out the hardcoded AIRGAPPED_RELEASE_VERSION in the build-branch-ee.yml workflow to allow for dynamic versioning based on the branch name, enhancing flexibility in the build process.

* refactor: update image handling in airgapped build and install scripts

- Modified build.sh to save each Docker image individually to a tar file and remove the image after saving, improving image management.
- Updated install.sh to load multiple tar files instead of a single hardcoded tarball, enhancing flexibility in image loading during setup.

* test build

* enhance: add build summary and usage instructions for airgapped artifacts in GitHub Actions workflow

- Introduced a build summary section in the build-branch-ee.yml workflow to provide details about the airgapped artifacts, including release version and S3 path.
- Added usage instructions for downloading and installing the airgapped artifacts, improving user guidance and accessibility.

* chore: remove deprecated build-airgapped workflow

- Deleted the build-airgapped.yml workflow file as it is no longer needed.
- Updated build-branch-ee.yml to streamline the packaging process for airgapped artifacts and improve S3 upload commands.

* fix: update file handling for license activation to support JSON format

- Changed file validation to accept only .json files in the frontend and backend.
- Updated the API to read and forward the activation file correctly.
- Enhanced error handling for unsupported file types and server responses.

* enhance: improve build summary and usage instructions in GitHub Actions workflow

- Added Git commit hash and branch information to the build summary in build-branch-ee.yml for better traceability.
- Updated usage instructions formatting to enhance clarity and user experience when downloading and installing airgapped artifacts.

* enhance: add presigned URL generation for airgapped artifacts in GitHub Actions workflow

- Implemented the creation of a presigned URL for airgapped artifacts, allowing for secure access for 30 days.
- Updated the build summary to include the presigned URL, improving user guidance for downloading artifacts.

* style: improve formatting of usage instructions in GitHub Actions workflow

- Updated the usage instructions in build-branch-ee.yml to use inline code formatting for better readability and clarity.
- Enhanced user guidance for downloading and installing airgapped artifacts.

* refactor: enhance build summary and usage instructions in GitHub Actions workflow

- Improved the formatting of the build summary in build-branch-ee.yml for better readability.
- Updated usage instructions to include code blocks, enhancing clarity for users downloading and installing airgapped artifacts.

* fix: time format issue with RFC, added custom marshaller

* feat: integrate crane for optimized image handling in airgapped build process

- Added installation of crane in the GitHub Actions workflow to enhance image pulling and saving efficiency.
- Updated build.sh to utilize crane for pulling images when available, providing a fallback to Docker if not.
- Improved user feedback during image handling, ensuring clarity on the process and success of operations.

* fix: update crane installation method in GitHub Actions workflow

- Changed the crane installation command to download the tarball to a file before extraction, improving reliability and error handling during the installation process.

* fix: streamline crane installation in GitHub Actions workflow

- Updated the crane installation command to directly pipe the download into extraction, simplifying the process and reducing the need for intermediate files.

* feat: add airgapped mode support for license file handling

- Introduced a new setting to enable airgapped mode.
- Added LicenseFileFetchEndpoint to fetch license files for workspaces in airgapped mode.
- Enhanced LicenseDeActivateEndpoint to delete license files when in airgapped mode.
- Updated LicenseActivateUploadEndpoint to restrict access based on airgapped mode.
- Implemented S3Storage method for deleting files from S3.

* fix: update environment variable formatting in GitHub Actions workflow

- Changed the format of environment variable assignments in build-branch-ee.yml to use `key=value` syntax, improving clarity and consistency in the workflow.

* fix: update airgapped artifact packaging in GitHub Actions workflow

- Refactored the packaging step in build-branch-ee.yml to utilize environment variables for better clarity and maintainability.
- Enhanced the presigned URL generation to extend the expiry to 90 days, improving access security for airgapped artifacts.

* fix: refine AIRGAPPED_RELEASE_VERSION handling in GitHub Actions workflow

- Updated the assignment of AIRGAPPED_RELEASE_VERSION to improve clarity and consistency in the build process.
- Enhanced the build summary to reflect the changes in variable usage, ensuring accurate information is presented to users.
- Streamlined the presigned URL handling for better integration within the workflow.

* fix: update airgapped artifact workflow with environment variable enhancements

- Refactored the build process in build-branch-ee.yml to utilize environment variables for AIRGAPPED_RELEASE_VERSION, S3_PATH, COMMIT_HASH, and PRESIGNED_URL, improving clarity and maintainability.
- Enhanced the build summary to reflect the updated variable usage, ensuring accurate information is presented to users.
- Streamlined the presigned URL handling and extended its expiry to 90 days for improved access security.

* improvement: upload license file form UI

* fix: enhance airgapped build summary in GitHub Actions workflow

- Updated the build summary in build-branch-ee.yml to include a temporary file for the presigned URL, improving security and clarity.
- Added the Git commit hash to the summary for better traceability of builds.
- Streamlined the summary formatting for improved readability and user guidance.

* fix: update airgapped artifact workflow to include presigned URL upload

- Commented out the previous artifact packaging steps for airgapped builds to streamline the process.
- Added functionality to create a temporary file for the presigned URL and upload it as an artifact, enhancing accessibility and security.
- Improved clarity in the workflow by ensuring the presigned URL is logged and stored appropriately.

* fix: reduce presigned URL expiry in airgapped artifact workflow

- Updated the PRESIGNED_URL_EXPIRY from 90 days to 7 days to enhance security and limit access duration.
- Commented out the previous expiry setting for clarity and future reference.

* fix: enhance airgapped artifact workflow with S3 region support

- Added S3_REGION environment variable to specify the AWS region for presigned URL generation, improving flexibility and accuracy in artifact handling.
- Updated the presigned URL command to include the region parameter, ensuring correct URL generation for S3 access.
- Modified the build summary to replace the presigned URL placeholder with a generic "<presigned-url>" for clarity in usage instructions.

* fix: streamline airgapped artifact workflow by enabling packaging steps

- Re-enabled the packaging steps for airgapped artifacts in the workflow, ensuring that the build process includes the creation and upload of artifacts to S3.
- Clarified the presigned URL expiry comment to indicate it is set to the maximum allowed by AWS for improved understanding of security settings.

* fix: enhance airgapped artifact workflow with multi-platform support

- Added support for building and uploading airgapped artifacts for both amd64 and arm64 architectures in the GitHub Actions workflow.
- Updated the S3 paths and presigned URL handling to accommodate the new architecture-specific artifacts.
- Improved user guidance in the installation script by providing clearer instructions for starting services and checking logs.

* fix: update airgapped artifact workflow to use consistent build platform flag

- Changed the build platform flag from `--build-platform` to `--platform` in the airgapped artifact workflow for both amd64 and arm64 builds, ensuring consistency across the build commands.

* chore: license activation changes

* feat: added mock implemation of airgapped api

* fix: enhance airgapped artifact workflow with detailed service images

- Added specific Docker image references for various services in the airgapped installation README, improving clarity on required files for offline deployment.
- Updated the workflow to ensure all necessary images are included for a comprehensive airgapped setup.

* fix: cases for workspace replace and seats

* fix: improve airgapped artifact workflow with conditional arm64 build support

- Added conditional logic to build and package arm64 artifacts based on the AIRGAPPED_ARM64_BUILD environment variable, enhancing flexibility in the workflow.
- Updated the presigned URL handling for arm64 artifacts to ensure proper access management.
- Improved the build summary to include arm64 S3 path only when applicable, streamlining output clarity.

* fix: update airgapped README to include email service Docker image

- Added reference to the Docker image for the email service in the airgapped installation README, enhancing clarity on required files for offline deployment.

* fix: add arm64 build support to airgapped artifact workflow

- Introduced ARM64_BUILD environment variable to manage conditional logic for arm64 builds in the workflow.
- Updated the build steps to set ARM64_BUILD based on the target branch, enhancing flexibility for multi-architecture support.

* fix: refactored logic for license management

* fix: ensure members_list is properly formatted as JSON in license activation

* fix: verification threshold

* feat: enhance airgapped license handling with versioning and improved error logging

- Added `Version` field to `AirgappedLicensePayload` for better tracking.
- Updated database population logic to use the new `Version` field.
- Improved error handling in `GetManualSyncHandler` with additional logging for license and feature flag refresh failures.
- Refined license deactivation logic for airgapped licenses based on current period end date.

* chore: update workspace activation check

* feat: improve airgapped handling in API views and tasks

- Added checks for airgapped settings in `CheckUpdateEndpoint`, `version_check`, and `register_instance_ee` to return early if the environment is airgapped.
- Enhanced code readability and maintainability by centralizing airgapped logic.

* improvement: remove seat management and subscription management for airgapped workspaces

* fix: update airgapped artifact workflow to extract tarball into specific directory

- Modified the extraction command in the airgapped installation instructions to specify the target directory, improving organization and clarity for users during the installation process.

* fix: update application version to v1.10.0 in deployment configurations

- Updated the APP_VERSION in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to reflect the new version v1.10.0, ensuring consistency across deployment files.

* feat: enhance license activation response with workspace member details

- Updated the LicenseFileFetchEndpoint to include a list of active workspace members in the response.
- Converted user IDs to strings for consistency in the returned data structure.

* feat: added sync endpoint for download file

* feat: added logic for manual sync handler

* feat: added private key to prime airgapped api

* feat: implement job registration for instance license resync in airgapped mode

- Added a new job to the worker for resyncing instance licenses using a context-aware handler.
- Updated the HTTP handler port to "8090" for consistency.
- Changed the airgapped check to always return true in the workspace product handler.

* fix: update license activation response to return workspace members directly

- Modified the LicenseFileFetchEndpoint to return the workspace members list directly instead of converting it to a list, ensuring the response structure is consistent with the expected data format.

* feat: add command configuration for monitor service in airgapped build script

- Updated the build script to include a command for the monitor service, setting it to ["prime-monitor", "start-airgapped"] when the service is detected.

* docs: update airgapped README with installation instructions and prerequisites

- Enhanced the prerequisites section for clarity on Docker and Docker Compose requirements.
- Added a detailed installation process, including steps for running the installation script and the resulting directory structure.
- Updated post-installation steps to guide users on starting services and monitoring logs.

* improvement: handle error message for license activation

* feat: enhance airgapped cron job scheduling

- Introduced a new cron handler for scheduling airgapped cron jobs, including a License Refresh Job.
- Updated the worker to register the new cron job for instance license resync.

* minor fixes as sugged by reviewer

* fix: update HTTP handler port to use dynamic PORT variable in airgapped command

* fix: added version and api environment variables

* chore: update handlers to use isAirgapped method

* fix: converted db open calls to transactions in product handler

* fix: ensure UUIDs are only generated for unset IDs in License, UserLicense, and Flags models

* chore: update error message

* fix: add API_HOSTNAME environment variable to deployment configurations

- Introduced API_HOSTNAME variable in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to standardize API endpoint configuration across deployment files.

* fix: update API_HOSTNAME format in deployment configurations

- Changed the API_HOSTNAME variable in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to include the protocol (http://), ensuring consistent and correct API endpoint formatting across deployment files.

* feat: enhance airgapped installation and configuration

- Updated build.sh to insert "name: Plane-airgapped" into the docker-compose.yml file.
- Modified install.sh to set a default installation directory, improve user prompts, and handle upgrades more gracefully.
- Added checks for existing installations and running instances to prevent conflicts during upgrades.
- Enhanced the configuration display for better user clarity during setup.

* feat: improve environment variable handling in airgapped installation script

- Added a new function to update environment variables in the plane.env file.
- Enhanced the logic for reading and processing key-value pairs from the backup file, ensuring proper trimming and handling of empty values.
- Streamlined the update process for environment variables during installation and upgrades.

* feat: add Docker and docker-compose version checks in airgapped installation script

- Implemented checks for Docker version to ensure it meets the minimum requirement.
- Added validation to confirm that Docker is running before proceeding with installation.
- Included checks for the presence of either docker-compose or the new docker compose command.
- Enhanced error handling for version checks to improve user feedback during installation.

---------

Co-authored-by: Thomas Taylor <twtaylor7@gmail.com>
Co-authored-by: Manish Gupta <manish@plane.so>
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Manish Gupta <59428681+mguptahub@users.noreply.github.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: akshat5302 <akshatjain9782@gmail.com>
2025-06-03 13:20:10 +05:30
pushya22andGitHub fab0568074 Sync: Community Changes #3310 2025-06-02 15:54:19 +05:30
Akshita GoyalandGitHub 16d63abcdc [WEB-3998] fix: minor empty states changes + refactoring (#7151) 2025-06-02 15:50:57 +05:30
sriram veeraghantaandGitHub 46e554d534 Sync: Community Changes #3309 2025-06-02 13:37:17 +05:30
M. PalanikannanandGitHub 0568b8d583 regression: building utils back to run live server (#7149) 2025-06-02 13:32:34 +05:30
Quang Hung PhamandGitHub 64da29b0d9 chore: add select all/deselect all functionality when adding existing work item (#7045)
* chore: add select all/deselect all functionality

* chore: update button display logic by CR
2025-06-02 13:30:31 +05:30
Zero KingandGitHub 7c336a65c4 buid: add .venv to .dockerignore (#7146) 2025-05-31 12:32:25 +05:30
sriram veeraghanta 746bce7d53 fix: format all api server files using ruff 2025-05-31 00:15:58 +05:30
6c59bd68c2 [WEB-3998] feat: settings page revamp (#3059)
* chore: return workspace name and logo in profile settings api

* chore: remove unwanted fields

* fix: backend

* feat: workspace settings

* feat: workspce settings + layouting

* feat: profile + workspace settings ui

* chore: project settings + refactoring

* routes

* fix: handled no project

* fix: enterprise settinngs

* fix: css + build

* fix: refactoring

* feat: profile settings internal screens upgrade

* fix: workspace settings internal screens

* fix: integrations + importers

* feat: templates css

* feat: worklogs

* feat: templates

* fix: templates

* fix: external scrolling allowed

* fix: css

* fix: css

* fix: css

* fix: sync changes

* fix: css

* fix: preferences settings

* fix: css

* fix: mobile interface

* fix: smooth cursor code splitting

* chore: added discard modal for work item templates

* chore: project template discard modal

* fix: update state for pro features in settings

* feat: silo settings revamp

* fix: discard modal fixed

* chore: payment modals added + mpved command pallete

* fix: epics & project updates empty state

* fix: refactor

* fix: profile redirections

* fix: removed lasst workspace id

* fix: dark theme

* fix: empty states

* fix: build

* fix: css

* fix: css

* fix: page templates for projects

* fix: heading

* feat: scroll

* fix: layouting

* fix: profile empty states

* fix: wspce upgrade

* fix: wrkspce empty states

* fix: empty states

* fix: create template button

* fix: css

* fix: refactor

* fix: bug fixes

* fix: refactor

* fix: css

* fix: css

* fix: routes

* fix: first day of the week

* fix: workspace deletion

* fix: scrolling

* fix: refactoring

* fix: project -> projects

* fix: refactoring

* fix: refactor

* fix: no authorized view consistency

* fix: folder structure

* fix: revert

* fix: folder structure

* fix: project -> projects

* fix: redirections + routing

* fix: handled redirections

* fix: templates marketplace publish

* fix: empty states

* fix: scroll

* fix: deleted old routes

* fix: empty states

* fix: headings

* fix: settings description

* fix: build

* fix: reactive issue

* fix: upgrade screens

* fix: empty states

* fix: empty sttaes

* fix: sync

* fix: sync

* fix: refactor

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-31 00:11:39 +05:30
sriram veeraghantaandGitHub 947c0027ac Sync: Community Changes #3307 2025-05-30 21:20:38 +05:30
sriram veeraghanta 8e2f6e79d7 fix: yarn lock update 2025-05-30 21:20:03 +05:30
sriram veeraghanta b9675a4ae3 fix: merge conflicts 2025-05-30 21:19:03 +05:30
sriram veeraghanta 2242a85e5c chore: nextjs upgrade 2025-05-30 21:12:02 +05:30
Aaryan KhandelwalandGitHub 323920a358 [WIKI-399] fix: add favorite action to page header #7144 2025-05-30 20:58:46 +05:30
Aaryan KhandelwalandGitHub 151fc8389e [WIKI-181] chore: asset check endpoint added #7140 2025-05-30 20:58:06 +05:30
sriram veeraghanta 0f828fd5e0 chore: core component fixes 2025-05-30 20:57:35 +05:30
sriram veeraghantaandGitHub 3d85e3b13a Sync: Community Changes #3304 2025-05-30 20:54:15 +05:30
sriram veeraghantaandGitHub b03c721e7d Merge branch 'preview' into sync/ce-ee 2025-05-30 20:53:37 +05:30
sriram veeraghanta 9386234472 fix: build errors 2025-05-30 20:49:08 +05:30
68b5d2b0aa [WEB-3156] feat: epic notifications (#3187)
* draft: epic notifications

* chore: added epic notifications

* chore: changed the urls

* feat: added epic peek overview for notifications

* chore: removed unwanted components

* chore: removed the epic annotation

* chore: code split for notification card

* chore: set sidebar to closed for epic in notifications peek view

* chore: addded HOC for feature flag check

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-05-30 20:43:56 +05:30
bf34a69855 [WEB-4078] Feat initiative to epics and projects (#3228)
* fix: initiatives modal

* fix: icons

* feat: add and list initiatives to a project

* feat: add and list initiatives to epic

* fix: api integrations

* fix: build issues

* fix: refactor

* fix: null value in initiative_ids

* chore: add initative_ids in the issue detail endpoint

* chore: use prefetch

* fix: return empty list for no initiative ids

* chore: insert created_by

* fix: initiative epics not getting inserted

* fix: refactoring

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-30 20:42:25 +05:30
Henit ChobisaandGitHub 0be82ffb1e [SILO-245] Fix slack issues with links and labels (#3238)
* fix: resolved link asterisk issue

* fix: labels not popping up for create form
2025-05-30 20:42:01 +05:30
Bavisetti NarayanandGitHub 49f70abd35 [WEB-4134] chore: analytics endpoints ee (#3260)
* chore: endpoints for advance analytics

* chore: updated the analytics version

* chore: added query paramter for tables

* chore: updated the analytics stats

* chore: added updated at and updated by

* chore: analytics endpoints ee

* chore: revamped the analytics

* chore: removed the duplicated code

* fix: minor value update

* chore: added the filter to remove bot users

* chore: added the is bot validation for project memebers
2025-05-30 20:41:45 +05:30
Vamsi KrishnaandGitHub cc26d9a29c [WEB-4184]fix: customer preview overflow issue #3275 2025-05-30 20:41:30 +05:30
40261b6230 [WEB-4186] feat: analytics in epics sidebar (#3276)
* feat: add isEpic state to epic analytics sidebar

* chore: added analytics for epic sidebar

* fix: update analytics service to handle custom work items in peek view

* chore: reduced the epic check

* chore: changed the epic feature flag logic

* Chore analytics epic UI (#3292)

* chore: added code split for the analytics store

* chore: done some refactor

* refactor: update entity keys in analytics and translations

* chore: updated the translations

* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor

* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality

* feat: enhance WorkItemsModal and analytics store with isEpic functionality

* feat: integrate isEpic state into TotalInsights and WorkItemsModal components

* refactor: remove isEpic state from WorkItemsModalMainContent component

* fix: update isEpic handling in WorkItemsModal and integrate into TotalInsights

---------

Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: JayashTripathy <76092296+JayashTripathy@users.noreply.github.com>
2025-05-30 20:41:00 +05:30
Bavisetti NarayanandGitHub e17ccd82b7 [WIKI-380] feat: page users model (#3286)
* feat: created page users model

* chore: imporved the comments in the model

* chore: updated the migration file
2025-05-30 20:40:42 +05:30
Bavisetti NarayanandGitHub 417a8421c7 [WEB-4202] chore: handled the null value in page embed component (#3290)
* chore: added validation for none mention id in the page component

* chore: reverted yarn lock

* chore: removed the import statement

* chore: changed null value validation

* chore: removed none for get

* chore: removed none for get
2025-05-30 20:40:20 +05:30
Bavisetti NarayanandGitHub a396f197a3 [WEB-4170] chore: added validation in cycle date #3259 2025-05-30 20:39:54 +05:30
sriram veeraghanta e4297835a6 fix: merge conflicts 2025-05-30 20:24:59 +05:30
Prateek ShouryaandGitHub 67cbe94d4a [WEB-3964] refactor: permission layer (#7094)
* refactor: permission layer

* refactor: add original_role to project member serializer

* chore: minor fixes related to permission layer

* fix: strict type checking while checking user permissions
2025-05-30 19:57:07 +05:30
sriram veeraghantaandGitHub 322af8c436 [WEB-4223] fix: remove build process from utils package #7138 2025-05-30 18:48:18 +05:30
41c2aefad4 [WEB-3998] feat: settings page revamp (#6959)
* chore: return workspace name and logo in profile settings api

* chore: remove unwanted fields

* fix: backend

* feat: workspace settings

* feat: workspce settings + layouting

* feat: profile + workspace settings ui

* chore: project settings + refactoring

* routes

* fix: handled no project

* fix: css + build

* feat: profile settings internal screens upgrade

* fix: workspace settings internal screens

* fix: external scrolling allowed

* fix: css

* fix: css

* fix: css

* fix: preferences settings

* fix: css

* fix: mobile interface

* fix: profile redirections

* fix: dark theme

* fix: css

* fix: css

* feat: scroll

* fix: refactor

* fix: bug fixes

* fix: refactor

* fix: css

* fix: routes

* fix: first day of the week

* fix: scrolling

* fix: refactoring

* fix: project -> projects

* fix: refactoring

* fix: refactor

* fix: no authorized view consistency

* fix: folder structure

* fix: revert

* fix: handled redirections

* fix: scroll

* fix: deleted old routes

* fix: empty states

* fix: headings

* fix: settings description

* fix: build

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
2025-05-30 18:47:33 +05:30
sriram veeraghantaGitHubsangeethailangoJayashTripathycoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
445c819fbd [WEB-4172] feat: Crawl work item links for title and favicon (#7117)
* feat: added a python bg task to crawl work item links for title and description

* fix: return meta_data in the response

* fix: add validation for accessing IP ranges

* fix: remove json.dumps

* fix: handle exception by returning None

* refactor: call find_favicon_url inside fetch_and_encode_favicon function

* chore: type hints

* fix: Handle None

* fix: remove print statementsg

* chore: added favicon and title of links

* fix: return null if no title found

* Update apiserver/plane/bgtasks/work_item_link_task.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: remove exception handling

* fix: reduce timeout seconds

* fix: handle timeout exception

* fix: remove request timeout handling

* feat: add Link icon to issue detail links and update rendering logic

* fix: use logger for exception

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-05-30 18:44:53 +05:30
Aaryan KhandelwalandGitHub 046a8a1bcf [WEB-4189] chore: add tailwind container-queries plugin #7125 2025-05-30 18:41:12 +05:30
Akshita GoyalandGitHub 099a1cc12b [WEB-3863] fix: links error handling #7126 2025-05-30 18:24:01 +05:30
a0a697401b [WEB-3787] fix: project joining date (#7127)
* fix: return project joining date

* fix: added project's joining date

* fix: set created_at as read_only_fields

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
2025-05-30 18:23:19 +05:30
Aaryan KhandelwalandGitHub cb92108bf4 [WEB-4197] chore: auth forms semantics and accessibility #7128 2025-05-30 18:22:20 +05:30
Aaryan KhandelwalandGitHub 01b685ea57 [WIKI-181] refactor: invalid file handling #7139 2025-05-30 18:18:05 +05:30
Vipin ChaudharyandGitHub b16a585102 [WIKI-343] [WIKI-312] Fix: html characters (#7049)
* fix: handle symbols and space

* chore: refactor
2025-05-30 18:17:03 +05:30
Prateek ShouryaandGitHub c6648d7590 [WEB-4226] improvement: add setting up loader for project creation via template (#3301) 2025-05-30 16:50:57 +05:30
Akshita GoyalandGitHub 986a15f9cf [WEB-4210] fix: decimal ticks for y-axis for cycle charts #3298 2025-05-30 16:49:46 +05:30
547945d186 [WEB-4209] Workitem types validation (#3297)
* fix: error position while updating any label

* chore: gracefully show the error message

* feat: added error messages on workitem type creation based on error type

* fix: send code in the error response

* fix: added validation for error code in the toast for workitem type creation/updation

* fix: update conflict error messages for work item type creation and update

* fix: improve error handling and styling in issue type creation form

* refactor: cleaned up some code

* chore: added remaining translations

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-30 16:49:18 +05:30
Prateek ShouryaandGitHub be66363d50 [WEB-4204] fix: delete issue from local db after converting to epic (#3299) 2025-05-30 16:49:03 +05:30
guru_sainathandGitHub cdcfbdc8cb [MOBIL-946] feat: Add reactions to epic comments #3279 2025-05-30 14:19:41 +05:30
guru_sainathandGitHub f0c9ed617e [MOBIL-940] fix: update project page filter to handle pages moved between projects (#3247)
* fix: updated the project page filter that the pages that are moved from project to project

* chore: handled the move page filter in your_work and user_pages
2025-05-30 14:14:29 +05:30
guru_sainathandGitHub 4af8e6c4a3 [WEB-4205] fix: ensure issue parent_id renders correctly when epics are disabled #3293 2025-05-30 14:13:37 +05:30
guru_sainathandGitHub 9be5a9f973 [MOBIL-852] feat: Integrate mobile onboarding workflow with profile, password, workspace, and invitation flows (#3280)
* chore: set_password mutation

* chore: set password auth import error

* chore: workspacce operations

* chore: mutation for workspace

* chore: skipped onboarding validation

* chore: skipped onboarding for github and google

* chore: list and join user workspace invites

* chore: public worksapce invite and accept invite enabled

* chore: updated profile v2

* chore: updated auth endpoints

* chore: delete user query

* chore: handled the user delete and user delete email

* chore: handled the erros

* chore: updated the delete query

* chore: handled the role

* chore: handled the role

* chore: handled the role

* chore: handled the member role in workspaces for delete user

* chore: handled the workspace type error in workspace invite

* chore: handled the role in user delete query and mutation

* chore: resolved conversations

* chore: updated password type

* chore: validated workspace name contains URL

* chore: replced slack with email for user delete
2025-05-30 14:13:17 +05:30
sriram veeraghantaandGitHub 2435c7a919 Sync: Community Changes #3296 2025-05-29 18:06:18 +05:30
sriram veeraghantaandGitHub 4b92ba3baa Merge branch 'preview' into sync/ce-ee 2025-05-29 18:05:40 +05:30
sriram veeraghanta 4a97d7c28c fix: adding url validations for workspace name and user name 2025-05-29 17:53:48 +05:30
Prateek ShouryaandGitHub a4c228f786 [WEB-4207] fix: update endpoint for project level work item template (#3295) 2025-05-29 17:17:32 +05:30
sriram veeraghanta 220c21841f fix: work item type name unique validation on patch 2025-05-29 16:59:55 +05:30
Prateek ShouryaandGitHub 7dd34218d6 [WEB-4206]: fix: work item type config in project templates (#3294)
* fix: add work item type & property description in projects created from templates

* fix: set work item type enabled flag when creating a new default work item type

* fix: remove work item type description field length validation
2025-05-29 15:55:57 +05:30
sriram veeraghanta 3015b1eae2 fix: remove restriction for work item type name 2025-05-29 14:02:09 +05:30
Prateek ShouryaandGitHub 304e3c6e3b [WEB-4203] fix: work item type & property description in templates (#3291) 2025-05-29 01:20:03 +05:30
sriram veeraghanta 8e867cc2f3 fix: yarn lock file updates 2025-05-28 20:49:28 +05:30
8d7133a450 [SILO-283] feat: template installation (#3278)
* [SILO-284] Endpoint to copy/install published template from marketplace

* Append (copy) to the tempalte name to maintain integrity

* Added workspace-selector to restricted slug list

* feat: update workspace selector to install templates

* [WEB-4198] Added new fields and migrations for template and application. Updated template categories

* contact_email is optional

* [WEB-4198] feat: template publish form improvements

* chore: remove template keywords computed function

* chore: add english translations for template publish form

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-05-28 19:24:38 +05:30
sriram veeraghantaandGitHub 3ebf43945a Sync: Community Changes #3287 2025-05-28 19:06:31 +05:30
sriram veeraghantaandGitHub 1dea129538 Merge branch 'preview' into sync/ce-ee 2025-05-28 19:06:09 +05:30
Aaryan KhandelwalandGitHub 141cb17e8a fix: Optimize image uploads in Editor (#7129)
* fix: memoize file upload functions

* chore: update extension name

* chore: update notation

* chore: resolve chokidar package

* fix: spelling mistakes
2025-05-28 19:03:14 +05:30
sriram veeraghantaandGitHub 88b6a476f4 Sync: Community Changes #3284 2025-05-28 13:53:50 +05:30
Palanikannan M 79fe8ba9f7 Merge branch 'preview' into sync/ce-ee 2025-05-28 03:38:44 +05:30
sriram veeraghanta 26b62c4a70 fix: tsup version 8.4.0 2025-05-28 02:17:23 +05:30
e388a9a279 [WIKI-181] refactor: file plugins and types (#7074)
* refactor: file plugins and types

* refactor: image extension storage types

* chore: update meta tag name

* chore: extension fileset storage key

* fix: build errors

* refactor: utility extension

* refactor: file plugins

* chore: remove standalone plugin extensions

* chore: refactoring out onCreate into a common utility

* refactor: work item embed extension

* chore: use extension enums

* fix: errors and warnings

* refactor: rename extension files

* fix: tsup reloading issue

* fix: image upload types and heading types

* fix: file plugin object reference

* fix: iseditable is hard coded

* fix: image extension names

* fix: collaborative editor editable value

* chore: add constants for editor meta as well

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-05-28 01:43:01 +05:30
Prateek ShouryaandGitHub beca128d62 [WEB-4166] improvement: update logic to merge extended translations (#3283) 2025-05-28 01:41:21 +05:30
Surya PrashanthandGitHub f6fb7b6a63 [SILO-273] fix: remove nack signals for mq consumers (#3246)
- No need to nack for messages as retry is not implemented.
- Ack for all messages, this should remove dual ack errors
2025-05-28 01:40:23 +05:30
Aaryan KhandelwalandGitHub fd252e284b regression: extended sidebar collapsed status #3282 2025-05-28 01:38:09 +05:30
sriram veeraghantaandGitHub bd545c66f5 Sync: Community Changes #3281 2025-05-28 01:11:31 +05:30
a3a580923c [WEB-4166] chore: projects app sidebar accessibility (#7115)
* chore: add ARIA attributes

* chore: add missing translations

* chore: add accessibility translations for multiple languages and configured store according to it

* chore: refactor translation file handling and introduce TranslationFiles enum

* fix: accessibility issues in workspace sidebar

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-05-28 00:58:22 +05:30
Akshita GoyalandGitHub b4bc49971c [WEB-4130] fix: cycle charts minor optimizations (#7123) 2025-05-28 00:54:21 +05:30
JayashTripathyandGitHub 6117830c2f [WEB-4188] fix: Published view count #3274 2025-05-27 16:48:37 +05:30
Vamsi KrishnaandGitHub aaa88aacb4 fix: epics menu z-index (#3264) 2025-05-27 16:46:58 +05:30
M. PalanikannanandGitHub c2caa46587 fix: build and types (#3270)
* fix: build and types

* fix: teamspace page store
2025-05-26 20:45:54 +05:30
Prateek ShouryaandGitHub 3798aa8c6f [WEB-3938] fix: template select modal ux copy (#3269) 2025-05-26 20:22:06 +05:30
sriram veeraghantaandGitHub 264b8eafcb Sync: Community Changes #3267 2025-05-26 19:47:29 +05:30
c738f212ba [WIKI-344] fix: move page inside a project (#3226)
* fix: move page across project

* fix: moved the server agent to core

* fix: added validation for the endpoint

* fix: make it a get request

* chore: updated the endpoint

* fix: redirection after moving pages

* fix: redirect to last opened page on deleting page

* chore: save realtime description

* fix: sending correct binary

* fix: test new approach

* chore: changed the request headers

* fix: made the function more extensible

* chore: updated the move pages permission layer

* chore: added updated at and updated by

* chore: added updated at and updated by

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-05-26 19:45:50 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
04c7c53e09 chore(deps): bump requests (#7120)
Bumps the pip group with 1 update in the /apiserver/requirements directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.31.0 to 2.32.2
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.31.0...v2.32.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.2
  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>
2025-05-26 19:45:15 +05:30
Dheeraj Kumar KetireddyandGitHub 03f5e255c3 [WEB-4180] FIX: Fixed the issue with project level work item template creation #3266 2025-05-26 19:44:44 +05:30
2d6e52cfd8 [SILO-218] Feat workspace switcher (#3160)
* feat: added page for workspace switcher

* fix: refactor

* fix: empty state

* fix: typo

* fix: version

* fix: translations

* fix: translations

* fix: refactor

* fix: refactor

* fix: redirection with nested next path

* fix: version revert

* fix: refactor

* fix: refactoring with app_slug

* fix: refactoring

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-05-26 19:43:12 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
69c7d02f8c chore(deps): bump requests (#3263)
Bumps the pip group with 1 update in the /apiserver/requirements directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.31.0 to 2.32.2
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.31.0...v2.32.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.2
  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>
2025-05-26 15:46:10 +05:30
sriram veeraghantaandGitHub f852a7f342 Sync: Community Changes #3262 2025-05-26 15:28:49 +05:30
Dheeraj Kumar KetireddyandGitHub 78cc32765b [WEB-3707] pytest based test suite for apiserver (#7010)
* pytest bases tests for apiserver

* Trimmed spaces

* Updated .gitignore for pytest local files
2025-05-26 15:26:26 +05:30
JayashTripathyandGitHub 4e485d6402 [WEB-4160] fix: close the context menu after select #7113 2025-05-26 15:24:13 +05:30
JayashTripathyandGitHub 5a208cb1b9 [WEB-2403] fix: alignment of project states in collapsed view #7114 2025-05-26 15:23:39 +05:30
JayashTripathyandGitHub 0eafbb698a [WEB-3494] fix: size of created at value #7112 2025-05-26 15:22:16 +05:30
sriram veeraghantaandGitHub 7121a42f25 Sync: Community Changes #3261 2025-05-26 15:19:52 +05:30
sriram veeraghanta bce394655e fix: merge conflicts 2025-05-26 15:19:17 +05:30
Surya PrashanthandGitHub ceda89a0ad [SILO-272] fix: handle duplicate issue references in github (#3258) 2025-05-26 15:17:13 +05:30
sriram veeraghanta 193ae9bfc8 fix: yarn lock file 2025-05-26 14:58:26 +05:30
Vamsi KrishnaandGitHub 7cb5a9120a [WEB-4173]fix: fixed layout overflow issue #7119 2025-05-26 14:28:56 +05:30
NikhilandGitHub c087bd0bfb [WEB-4075] fix: member creation when creating project from project templates having members #3182 2025-05-25 02:12:27 +05:30
Akshita GoyalandGitHub 412df28925 [WEB-4112] fix: update list in initiatives list view #3163 2025-05-25 02:11:33 +05:30
d0e2ce1087 [WEB-3955] fix: handling search issues listing same issues (#3209)
* fix: epic relation search listing same epic

* chore: seperate query params for search-issues on convertion

* chore: existing work item modal params updated

* chore: use exclude

* chore: remove seperate issue_id filter

* chore: remove Q filter

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-05-25 02:05:04 +05:30
JayashTripathyandGitHub 1797e39f55 [WEB-3990] Fix issue type form refresh on enter (#3223)
* fix: enter reload in issue type form

* fix: reset options after sortedActivePropertyOptions(computed value)  is updated
2025-05-25 02:02:08 +05:30
Vamsi KrishnaandGitHub 07730678b3 [WEB-4123] feat: language support for epics list in initiatives #3225 2025-05-25 02:01:06 +05:30
Anmol Singh BhatiaandGitHub 03f541ff06 [WEB-3806] chore: allow workspace admins to delete initiatives #3231 2025-05-25 01:56:58 +05:30
Saurabh KumarandGitHub d19699fe7f [SILO-269] Migration for SILO's Importer App (#3232)
* add importer app create migration for silo importers

* add silo logger to log settings
2025-05-25 01:56:14 +05:30
2cb3ec90e1 [WEB-4100] Unique custom properties UI validation (#3240)
* chore: raise error for adding custom properties with specific keywords

* chore: remove print statement

* fix: duplicate custom properties

* fix: duplicate issue types

* fix: error message

* chore: added ui validation for restricted keywords in issue types

* fix: updated the variable names and refactor

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-25 01:52:18 +05:30
Akshita GoyalandGitHub 4014546fe5 [PAI-438] chore: added beta tag for pi + removed the models dropdown #3248 2025-05-25 01:51:16 +05:30
Saurabh KumarandGitHub 23e8bf6318 [SILO-275] API endpoint to get a published application by slug #3254 2025-05-25 01:50:36 +05:30
sriram veeraghantaandGitHub 1231b1e01d Sync: Community Changes #3250 2025-05-25 01:50:08 +05:30
sriram veeraghanta f1d129beb5 fix: build errors 2025-05-25 01:49:07 +05:30
NikhilandGitHub a9bbbc3911 [WEB-4168]chore: correct feature flag for intake get endpoints #3256 2025-05-23 22:15:25 +05:30
NikhilandGitHub c1137ba591 [WEB-4168]fix: add user_id when checking feature flag for intake email and form #3255 2025-05-23 21:06:48 +05:30
sriram veeraghanta 251fd1b397 fix: merge conflicts 2025-05-23 18:18:49 +05:30
Vamsi KrishnaandGitHub 84fc81dd98 [WEB-4118]fix: adjusted sub work item properties for a better visibility (#7079)
* fix: adjusted sub work item properties for a better visibility

* fix: removed projects from sub work item filters
2025-05-23 16:14:35 +05:30
JayashTripathyandGitHub 2d0c0c7f8a [WEB-4115] fix: update issue count status query to handle null values #7080 2025-05-23 16:13:48 +05:30
5c9bdb1cea [WEB-4133] fix: analytics release bugs (#7086)
* fix: header text of insight table search

* fix: made the active project list scrollable

* chore: added xAxis label to table header

* chore: removed the intake issues

* fix: made the headerText necessary

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-05-23 16:13:09 +05:30
Aaron HeckmannandGitHub f8ca1e46b1 [WEB-4098] feat: noindex/nofollow (#7088)
* feat: noindex/nofollow

- On login: nofollow
- On app pages: noindex, nofollow

https://app.plane.so/plane/browse/WEB-4098/

- https://nextjs.org/docs/app/api-reference/file-conventions/layout
- https://nextjs.org/docs/app/building-your-application/routing/route-groups#creating-multiple-root-layouts
- https://nextjs.org/docs/app/api-reference/functions/generate-metadata#link-relpreload

* chore: address PR feedback
2025-05-23 16:12:04 +05:30
Dheeraj Kumar KetireddyandGitHub f7eaec9f25 [WEB-4086] FIX: Use the right field name for validation(#3252) 2025-05-23 15:51:27 +05:30
Vamsi KrishnaandGitHub a3b9152a9b [WEB-4123]feat: language support for sub-work item empty states #7092 2025-05-23 15:36:47 +05:30
Aaryan KhandelwalandGitHub 5223bd01e8 [WEB-4153] chore: extend custom font family in tailwind config (#7093)
* chore: remove unwanted font family

* chore: add font family to extend object
2025-05-23 15:35:47 +05:30
Aaryan KhandelwalandGitHub 6eb0b5ddb0 [WEB-4137] chore: restrict SVG file selection (#7095)
* chore: update accepted file mime types

* chore: update accepted file mime types
2025-05-23 15:33:56 +05:30
Anmol Singh BhatiaandGitHub cd200169b6 [WEB-4107] chore: redirect user to the newly created project view after creation #7098 2025-05-23 15:32:41 +05:30
NikhilandGitHub 037bb88b53 [WEB-4144] fix: api logger to handle content decode errors #7099 2025-05-23 15:31:40 +05:30
Bavisetti NarayanandGitHub 643390e723 [WEB-4145] chore: added validation for project deletion #7101 2025-05-23 15:30:42 +05:30
Aaryan KhandelwalandGitHub 731c4e8fcd [WEB-4161] fix: eslint config for library config file #7103 2025-05-23 15:29:37 +05:30
Prateek ShouryaandGitHub 6216ad77f4 [WEB-4146] fix: AI environment variables configuration in GodMode (#7104)
* [WEB-4146] fix: artificial intelligence environment variables configuration

* chore: update llm configuration keys
2025-05-23 15:06:58 +05:30
9812129ad3 [WEB-4133] chore: optimised the analytics endpoints (#7105)
* chore: optimised the analytics endpoints

* chore: segregated peek view endpoints

* chore: added analytics values validation

* chore: added project validation

* chore: reverted the changes

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
2025-05-23 15:05:57 +05:30
JayashTripathyandGitHub 5226b17f90 [WEB-4159] feat: add 'restricted_entity' translation key across multiple languages #7106 2025-05-23 15:05:37 +05:30
Vamsi KrishnaandGitHub b376e5300a [WEB-3155]fix: email notification comments overflow #7110 2025-05-23 15:04:50 +05:30
sriram veeraghanta 2b373a47fe fix: downgraded the express types package to resolve build errors 2025-05-23 14:12:18 +05:30
sriram veeraghantaandGitHub 94eb3c0264 Sync: Community Changes #3249 2025-05-23 13:56:06 +05:30
02410753d1 [WEB-4086] feat: publish template to marketplace (#3179)
* feat: publish template to marketplace form

* Sample fixture for template categories

* Updated serializer with new fields and made changes to api endpoints to use serializer while creating templates (#3205)

* improvement: add more fields to the template publish form

* improvement: ui update and error validations for template publish form

* Added extra fields to marketplace template urls

* improvement: minor ui/ ux enhancements

* feat: add translations for template publish

* chore: update string utils for joinWithConjunction

* fix: build error

* Remove workspace and template_type from serializer validation

* improvement: updated template categories computed function to computed value

* improvement: ensure terms & conditions and privacy policy urls have http protocol

* Only return verified project templates for the meta endpoint

* improvement: updated template keywords dropdown placeholder

* improvement: update translations

* improvement: add loader for publish template page

* improvement: docs comments for string utils

* Add validation for publishing and unpublish option for management command

* fixed formatting

* change support_url to support_email while validating

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-05-23 13:54:14 +05:30
Prateek ShouryaandGitHub 4460529b37 [WEB-4154] fix: dropdown container classname (#7085)
* fix: dropdown container classname

* improvement: update string utils for joinWithConjunction

* improvement: add more string utils
2025-05-23 13:53:16 +05:30
sriram veeraghantaandGitHub e736fe95fd release: v1.10.0 #3229 2025-05-23 13:16:32 +05:30
Akshat JainandGitHub 44926341c3 fix: update email save endpoint URL in docker-compose configuration (#3244) 2025-05-22 18:43:43 +05:30
sriram veeraghanta 2d7f1d3770 fix: silo build errors 2025-05-22 18:01:48 +05:30
NikhilandGitHub ff15c22123 [WEB-4156] fix: intake email domain validation #3242 2025-05-22 17:55:12 +05:30
sriram veeraghanta 89813c9f0a chore: remove multer package from silo 2025-05-22 15:45:51 +05:30
sriram veeraghantaandGitHub f066ca6a0f Sync: Community Changes #3239 2025-05-22 00:30:35 +05:30
NikhilandGitHub 0a8cc24da5 chore: add validation fields in users (#7102)
* chore: add validation fields in users

* chore: make is email valid default value False
2025-05-21 20:34:52 +05:30
Bavisetti NarayanandGitHub 66a7377e46 [WEB-4143] chore: added search filter for issues #3230 2025-05-21 16:11:25 +05:30
Akshat JainandGitHub 08bdafcee8 [INFRA-156] fix: update SMTP port configurations in variables.env for email service #3235 2025-05-21 16:10:59 +05:30
ee6e7596bb [INFRA-77] feat: add email service and SMTP configuration to docker-compose (#3098)
* feat: add email service and SMTP configuration to docker-compose

- Introduced a new email service in docker-compose with environment variables for SMTP configuration.
- Updated Caddyfile to route SMTP traffic for email service.
- Added necessary SMTP ports and health checks for the email service.
- Updated variables.env to include email-related configurations and replicas.

* refactor: clean up Caddyfile SMTP routing configuration

- Simplified the indentation and formatting of the SMTP routing sections in the Caddyfile.
- Ensured consistent structure for the proxy routes for email services on specified ports.

* fix: update SMTP domain binding in Caddyfile

- Changed the SMTP domain binding in the Caddyfile to use '0.0.0.0' for specified ports (10025, 10465, 10587) to allow connections from all network interfaces.
- This adjustment enhances the accessibility of the email service routing configuration.

* fix: update mail server testing instructions in README

- Changed placeholder from `<mail-domain>` to `<host-domain>` for clarity in SMTP connection testing instructions.
- This update improves the accuracy of the documentation for users testing their mail server setup.

* feat: enhance email service configuration in docker-compose and Caddyfile

- Added SMTP environment variables to coolify-compose.yml for better email service configuration.
- Updated docker-compose-caddy.yml to remove redundant SMTP_DOMAIN variable.
- Modified Caddyfile to simplify SMTP domain binding for email service routes.
- Ensured proper permissions for TLS directory in email Dockerfile.

* refactor: remove email service environment variables in coolify-compose.yml

---------

Co-authored-by: akshat5302 <akshatjain9782@gmail.com>
2025-05-21 13:29:28 +05:30
NikhilandGitHub 5fd38e15bb [WEB-4095] fix: workspace delete handler, add check handler in the monitor service #3198 2025-05-20 20:28:19 +05:30
Prateek ShouryaandGitHub 671a1d8734 [WEB-4135] fix: state sequence field validation in project templates (#3227) 2025-05-20 20:27:56 +05:30
pushya22andGitHub 545dfa9022 Sync: Community Changes #3224
Sync: Community Changes
2025-05-20 13:02:10 +05:30
NikhilandGitHub b2ec6c193a Merge branch 'preview' into sync/ce-ee 2025-05-20 13:01:32 +05:30
SangeethaandGitHub 2f4aa843fc [WEB-4122] fix: estimate in project export #7091 2025-05-20 12:56:30 +05:30
sriram veeraghantaandGitHub aaf0defaf8 Sync: Community Changes #3222 2025-05-19 17:47:39 +05:30
sriram veeraghanta df53aaeecc fix: merge conflicts 2025-05-19 17:43:39 +05:30
sriram veeraghantaandGitHub 1d763bbf34 fix: build errors in web and admin strict null handling (#3221)
* fix: build errors in web and admin strict null handling

* chore: formatting tsconfig
2025-05-19 17:35:07 +05:30
sriram veeraghantaandGitHub cfac8ce350 fix: ruff file formatting based on config file pyproject (#7082) 2025-05-19 17:34:46 +05:30
sriram veeraghantaandGitHub 75a11ba31a fix: polynomial regular expression used on uncontrolled data (#7083)
* fix: polynomial regular expression used on uncontrolled data

* fix: optimize the function to handle both operations
2025-05-19 17:14:26 +05:30
sriram veeraghantaandGitHub 1fc3709731 chore: Strict Null Check in Admin app (#7081)
* chore: upgrade to latest version of turbo repo

* fix: tsconfig changes

* chore: adding format script to package json

* fix: formatting of files
2025-05-19 16:25:46 +05:30
Aaryan KhandelwalandGitHub f7c718f37a [WEB-4117] regression: work item widget code split (#3220)
* refactor: work item widget code split

* fix: build errors
2025-05-19 15:36:08 +05:30
Surya PrashanthandGitHub b4ee9fb2d5 [SILO-149] feat: re-design issue<->pr automation (#2992)
- extract all plane issues from PR title and description
- for PR automation, only consider issues wrapped in '[]'
2025-05-19 15:33:39 +05:30
Surya PrashanthandGitHub dc55fe4831 [SILO-252] feat: support patching relation_map in ImportJob APIs (#3173)
* feat: support patching relation_map in ImportJob APIs

- This map can be used to process relations b/w issues async during
import phase

* add validation for relation_map field

* use super method to update serializer

* [SILO-253] feat: add bulk update relations job for importers (#3188)

* feat: add bulk update relations job

* get only external_id, id fields from issues

* set created_by, updated_by on operations
2025-05-19 15:32:09 +05:30
Anmol Singh BhatiaandGitHub 7d31eec2a4 [WEB-3986] chore: work item activity enhacements (#3185)
* chore: activity type updated

* chore: fetching activity after conversion

* fix: conversion warning modal onConvert

* chore: epic and work item form payload validation

* chore: backward compatibility and conversion activity added

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-05-19 15:29:49 +05:30
Surya PrashanthandGitHub f91a512825 [SILO-261]: feat: add management command to update marketplace apps (#3191)
* [SILO-261]: feat: add management command to update marketplace apps

* add fixture for application categories
2025-05-19 15:28:55 +05:30
Anmol Singh BhatiaandGitHub 031917e16a [WEB-3909] fix: settings upgrade empty state (#3197)
* fix: epic and project updates settings empty screen updated

* fix: epic toast message updated
2025-05-19 15:28:05 +05:30
sriram veeraghantaandGitHub ce08881f4b Sync: Community Changes #3219 2025-05-19 15:26:28 +05:30
sriram veeraghantaandGitHub c1cf3a4f13 Merge branch 'preview' into sync/ce-ee 2025-05-19 15:25:18 +05:30
Dheeraj Kumar KetireddyandGitHub 19702429fa [WEB-4116] fix: Allow bot users to access feature flagged API endpoints (#3218)
* FIX: Allow bot users to access feature flagged API endpoints

* Only check the bot flag if the user_id has a value
2025-05-19 15:24:12 +05:30
Akshita GoyalandGitHub 7e21618762 [WEB-3461] fix: profile activity rendering issue (#7059)
* fix: profile activity

* fix: icon

* fix: handled conversion case

* fix: handled conversion case
2025-05-19 15:20:57 +05:30
Aaryan KhandelwalandGitHub 2d475491e9 [WEB-4117] refactor: work item widgets code split (#7078)
* refactor: work item widget code split

* fix: types
2025-05-19 15:20:40 +05:30
Vamsi KrishnaandGitHub da8248c275 [WEB-4101]fix: customers fetch for free workspace (#3202)
* fix: customers fetch for free workspace

* fix: swr key names
2025-05-19 14:59:47 +05:30
Saurabh KumarandGitHub 928740ff80 [SILO-264] fix: delete token cache breaking for old github flow #3207 2025-05-19 14:59:07 +05:30
Henit ChobisaandGitHub 6eae2ab867 [SILO-259] fix: slack estimate points and sort order issue (#3208)
* fix: slack estimate points and sort order issue

* fix: excluded archive and increased limit in slack channel fetch
2025-05-19 14:58:20 +05:30
SangeethaandGitHub edb0aa083c [WEB-4076] fix: progress not displaying correctly for epic updates (#3211)
* chore: fix logic to fetch all the related issues of a epic

* chore: remove parent_id filter
2025-05-19 14:57:42 +05:30
Anmol Singh BhatiaandGitHub 9dc105f85c [WEB-4041] chore: modal outside click behaviour #3212 2025-05-19 14:57:08 +05:30
sriram veeraghantaandGitHub ebc2547af2 Sync: Community Changes #3217 2025-05-19 14:56:07 +05:30
Aaryan KhandelwalandGitHub 2a2feaf88e [WIKI-181] chore: editor extension storage utility code split (#7071)
* chore: storage extension code split

* chore: use storage extension utility
2025-05-19 13:12:52 +05:30
Anmol Singh Bhatia d543309fa2 Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-05-18 17:42:55 +05:30
Anmol Singh BhatiaandGitHub e48b2da623 [WEB-4056] fix: archived work item validation #7060 2025-05-18 15:28:47 +05:30
Anmol Singh BhatiaandGitHub 9c9952a823 [WEB-3866] fix: work item attachment activity #7062 2025-05-18 15:28:00 +05:30
Akshita GoyalandGitHub 906ce8b500 [WEB-4104] fix: project loading state #7065 2025-05-18 15:19:05 +05:30
Anmol Singh BhatiaandGitHub 6c483fad2f [WEB-4041] chore: modal outside click behaviour #7072 2025-05-18 15:18:09 +05:30
sriram veeraghantaandGitHub 2d3639ca82 Sync: Community Changes #3215 2025-05-17 17:13:38 +05:30
5b776392bd chore: revamped the analytics for cycle and module in peek view. (#7075)
* chore: added cycles and modules in analytics peek view

* chore: added cycles and modules analytics

* chore: added project filter for work items

* chore: added a peekview flag and based on that table columns

* chore: added peek view

* chore: added check for display name

* chore: cleaned up some code

* chore: fixed export csv data

* chore: added distinct work items

* chore: assignee in peek view

* updated csv fields

* chore: updated workitems peek with assignee

* fix: removed type assersions for workspaceslug

* chore: added day wise filter in cycles and modules

* chore: added extra validations

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
2025-05-17 17:11:26 +05:30
sriram veeraghantaandGitHub 0f147e4889 Sync: Community Changes #3214 2025-05-16 19:18:17 +05:30
ba158d5d6e [WEB-4109] chore: remove analytics duration filter (#7073)
* chore: remove analytics duration filter

* removed subtitle from title and date_filter from service call

* chore: removed the date filter

* bottom text of insight trend card

* chore: changed issue manager

* fix: limited items in table

* fix: removed unnecessary props from data-table

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-05-16 19:16:30 +05:30
Prateek ShouryaandGitHub 3194a3d3d4 [WEB-4069] fix: temporarily fallback to server if show sub issue is false (#3206) 2025-05-15 15:50:47 +05:30
NikhilandGitHub 1ff96a98bf fix: epic workitem search when creating workitem (#3203) 2025-05-15 14:03:01 +05:30
NikhilandGitHub 3250fd150f [WEB-4097]fix: epic relation search (#3201)
* fix: issue search for various cases

* fix: epic relation search
2025-05-14 20:46:16 +05:30
NikhilandGitHub 5577374159 [WEB-4096]fix: issue search for various cases (#3200) 2025-05-14 20:38:12 +05:30
NikhilandGitHub 5b9e417e6a [WEB-4088] chore: remove custom properties from exports #3196 2025-05-14 18:25:37 +05:30
SangeethaandGitHub adb7bee64b [WEB-4093] fix: handle search-issues endpoint failing (#3194) 2025-05-14 18:07:25 +05:30
pushya22andGitHub 32260278f9 Sync: Community Changes #3195 2025-05-14 18:06:29 +05:30
pablohashescobar 26d5468b0e Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-05-14 18:05:22 +05:30
JayashTripathyandGitHub 084cc75726 [WEB-4092] fix:broken detailed empty state layout #7056 2025-05-14 18:01:36 +05:30
NikhilandGitHub 534f5c7dd0 [WEB-4088] fix: issue exports when cycles are not present (#7057)
* fix: issue exports when cycles are not present

* fix: type check
2025-05-14 18:00:49 +05:30
sriram veeraghantaandGitHub c634e1a5ad Sync: Community Changes #3190 2025-05-14 16:10:14 +05:30
Prateek ShouryaandGitHub 8489eac948 [WEB-4091] fix: include project and workspace in update callback for correct service resolution (#3192) 2025-05-14 16:09:02 +05:30
Manish GuptaandGitHub 080cf70e3f refactor: Enhance backup and restore scripts for container data (#7055)
* refactor: enhance backup and restore scripts for container data management

* fix: ensure proper quoting in backup script to handle paths with spaces

* fix: ensure backup directory is only removed if tar command succeeds

* CodeRabbit fixes
2025-05-14 12:33:53 +05:30
Manish GuptaandGitHub 4c3f7f27a5 fix: update API service startup check to use HTTP request instead of logs (#7054) 2025-05-14 10:02:21 +05:30
NikhilandGitHub 79e012c8ea [WEB-4087]fix: issue export created by when created by is none for an object #3189 2025-05-13 19:31:38 +05:30
Dheeraj Kumar KetireddyandGitHub e1ade057da Migration: Added fields required for publishing tempaltes to marketplace #3184 2025-05-13 18:37:43 +05:30
sriram veeraghanta f9c8eb656a fix: build errors 2025-05-13 18:03:03 +05:30
Vamsi KrishnaandGitHub cc3ce482e9 [WEB-4081] fix: sub work items grouping #3183 2025-05-13 17:43:34 +05:30
2515bd2fbd [WEB-3978] chore: cmd k search result redirection improvements (#3126)
* chore: ce sync changes

* chore: code refactor

* chore: cmd-K search result redirection improvement

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-05-13 17:42:57 +05:30
SangeethaandGitHub 454295acf4 [WEB-3987] chore: project export func enhancement (#3142)
* chore: comment details of work item

* chore: attachment count and attachment name

* chore: issue link and subscriber count

* chore: list of assignees

* chore: asset_url as attachment_links

* chore: code refactor

* fix: cannot export Excel

* chore: remove print statements

* fix: filtering in list

* chore: optimize attachment_count and attachment_link query

* chore: optimize fetching issue details for multiple select

* chore: use Prefetch to avoid duplicates

* chore: add epic filter

* chore: add is_epic

* chore: issue_type

* chore: list of related customer names

* chore: custom properties

* refactor: move issue property values to another function

* fix: change Issue Type to Work Item Type

* fix: change Issue Type to Work Item Type in excel imports
2025-05-13 17:42:42 +05:30
sriram veeraghantaandGitHub e8b2aaf937 Sync: Community Changes #3186 2025-05-13 17:42:18 +05:30
sriram veeraghanta 50e2cbd93f chore: lock file updates 2025-05-13 17:41:51 +05:30
sriram veeraghanta 5daf8e98f3 fix: merge conflicts 2025-05-13 17:41:29 +05:30
sriram veeraghantaandGitHub 235f9eb7ea Sync: Community Changes #3177 2025-05-13 17:37:48 +05:30
Surya PrashanthandGitHub e0176a4773 [HAG-1] feat: implement a generic oauth module in Silo for all callbacks (#3165)
* feat: implement a generic oauth module for all callbacks

- Strategy based pattern to implement OAuth callbacks for any
third party integration
- Implement strategy for Plane's internal OAuth
- Add endpoint for fetching app installations

* add missing fields for integration helper in github controller

* pass client id, secret to strategy during init

* revert conflict changes

* use getPlaneAPIClient for consistency
2025-05-13 16:22:23 +05:30
SangeethaandGitHub 4a5295962b [WEB-4077] fix: intake_settings featureflag checks #3166 2025-05-13 16:22:06 +05:30
Bavisetti NarayanandGitHub 5459bde26c [WEB-4069] chore: added the filter to show issues related to epic (#3170)
* chore: added the filter to show sub issues

* chore: changed the query params

* chore: added default value for pop
2025-05-13 16:21:27 +05:30
Surya PrashanthandGitHub 5450665ec1 [SILO-252] feat: add relation_map column in ImportJob #3175 2025-05-13 16:21:07 +05:30
Henit ChobisaandGitHub fec3057230 [SILO-260] fix: truncate options only to 75 characters slack integration link item (#3178)
* fix: truncate options only to 75 characters

* fix: review comment
2025-05-13 16:20:46 +05:30
sriram veeraghanta 803f6cc62a chore: yarn lock file updates 2025-05-13 16:20:08 +05:30
Vamsi KrishnaandGitHub 3a6d0c11fb fix: set accordion to expand by default (#7053) 2025-05-13 16:18:13 +05:30
Henit ChobisaandGitHub 51e06fd565 fix: build error in linear summary (#3180) 2025-05-13 15:45:52 +05:30
JayashTripathy 1551de194c Merge branch 'preview' into sync/ce-ee 2025-05-13 15:02:06 +05:30
Aaryan KhandelwalandGitHub f11787fd53 fix: editor build error (#3176) 2025-05-13 14:54:57 +05:30
75d81f9e95 [WEB-3781] Analytics page enhancements (#7005)
* chore: analytics endpoint

* added anlytics v2

* updated status icons

* added area chart in workitems and en translations

* active projects

* chore: created analytics chart

* chore: validation errors

* improved radar-chart , added empty states , added projects summary

* chore: added a new graph in advance analytics

* integrated priority chart

* chore: added csv exporter

* added priority dropdown

* integrated created vs resolved chart

* custom x and y axis label in bar and area chart

* added wrapper styles to legends

* added filter components

* fixed temp data imports

* integrated filters in priority charts

* added label to priority chart and updated duration filter

* refactor

* reverted to void onchange

* fixed some contant exports

* fixed type issues

* fixed some type and build issues

* chore: updated the filtering logic for analytics

* updated default value to last_30_days

* percentage value whole number and added some rules for axis options

* fixed some translations

* added - custom tick for radar, calc of insight cards, filter labels

* chore: opitmised the analytics endpoint

* replace old analytics path with new , updated labels of insight card, done some store fixes

* chore: updated the export request

* Enhanced ProjectSelect to support multi-select, improved state management, and optimized data fetching and component structure.

* fix: round completion percentage calculation in ActiveProjectItem

* added empty states in project insights

* Added loader and empty state in created/resolved chart

* added loaders

* added icons in filters

* added custom colors in customised charts

* cleaned up some code

* added some responsiveness

* updated translations

* updated serrchbar for the table

* added work item modal in project analytics

* fixed some of the layput issues in the peek view

* chore: updated the base function for viewsets

* synced tab to url

* code cleanup

* chore: updated the export logic

* fixed project_ids filter

* added icon in projectdropdown

* updated export button position

* export csv and emptystates icons

* refactor

* code refactor

* updated loaders, moved color pallete to contants, added nullish collasece operator in neccessary places

* removed uneccessary cn

* fixed formatting issues

* fixed empty project_ids in payload

* improved null checks

* optimized charts

* modified relevant variables to observable.ref

* fixed the duration type

* optimized some code

* updated query key in project-insight

* updated query key in project-insight

* updated formatting

* chore: replaced analytics route with new one and done some optimizations

* removed the old analytics

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-05-12 20:50:33 +05:30
sriram veeraghantaandGitHub ef8fea5b42 Sync: Community Changes #3174 2025-05-12 20:05:38 +05:30
sriram veeraghanta cd439cb711 fix: merge conflicts 2025-05-12 20:05:07 +05:30
8d72dcfccd [WEB-4056] fix: edit and convert archived work items (#3167)
* fix: converting archived work items

* fix: update custom_propeties of archived work item

* fix: update custom_properties of archived epics

* fix: archived validation added for conversion

* fix: change issues to work items in error message

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-05-12 19:48:52 +05:30
Aaryan KhandelwalandGitHub 0d5c7c6653 [WEB-4051] regression: update font size of comment editor #7048 2025-05-12 19:47:44 +05:30
Akshita GoyalandGitHub 1ffc65d4ce [WEB-4073] chore: Added done and pending values in cycle progress charts #3171 2025-05-12 19:33:30 +05:30
Henit ChobisaandGitHub e7f3e46ff8 [SILO-186] feat: Added support for importing documents in linear importer (#3154)
* [SILO-142] Setup base for linear docs importer (#2934)

* feat: added page external api endpoint for creating and getting pages

* feat: added pages inside migration task

* feat: added pull documents and transform document functions inside linear

* feat: added pages inside generated payload pushed to queue

* feat: added separate job as linear_docs migrator

* fix: formatting

* fix: data_import_task broken to separate functions

* fix: separated github content-parser with linear content-parser

* fix: remove not existing page logic in process page

* fix: data import task to bulk create pages

* [SILO-145] feat: adding extendable content-parser for silo, supporting linear docs importer 🤠 (#2966)

* feat: added pages inside migration task

* feat: added pull documents and transform document functions inside linear

* feat: added pages inside generated payload pushed to queue

* feat: added separate job as linear_docs migrator

* fix: formatting

* fix: data_import_task broken to separate functions

* fix: separated github content-parser with linear content-parser

* feat: added content parser runner class and external parser extensions

* feat: added plane extension for plane side of parsing

* feat: added base-file-extension helper

* feat: added linear specific extensions and parser getter

* feat: modified linear transform and api service

* fix: modified base et for handling content-parsers opts

* fix: removed extra functions from image proxy extension

* fix: renamed to file-upload-helper

* fix: comments for processorts

* fix: moved get issue function inside mention parser

* fix: logic optimization

* feat: added modules extension in content-parser

* fix: mentions parser to work with fallback options

* fix: update user map type for linear

* [SILO-154] Added Linear Docs as summary element and optimized summary endpoint (#3010)

* feat: modified issue count endpoint to data summary endpoint

* feat: modified store and UI to display summary fields

* chore: resolved comments

* [SILO-153] feat: dispatch finished & linear docs step bound with existing with linear issue import step (#3009)

* feat: modified import task and controller to add a dispatch job

* feat: modified base importer worker in order to accomodate finished step

* feat: modified linear importer in order to handle custom completion step for job

* chore: resolved comments
2025-05-12 19:32:59 +05:30
Anmol Singh BhatiaandGitHub 079c3a3a99 [WEB-3978] chore: cmd k search result redirection improvements (#7012)
* fix: work item tab highlight

* chore: projectListOpen state and toggle method added to command palette store

* chore: openProjectAndScrollToSidebar helper function and highlight keyframes added

* chore: SidebarProjectsListItem updated

* chore: openProjectAndScrollToSidebar implementation

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-05-12 19:15:39 +05:30
SangeethaandGitHub 5f8d5ea388 [WEB-4054] chore: search-issues endpoint code refactoring (#7029)
* chore: moved some code to seperate function

* fix: function name typo
2025-05-12 19:14:10 +05:30
Anmol Singh BhatiaandGitHub 8613a80b16 [WEB-3523] feat: start of week preference (#7033)
* chore: startOfWeek constant and types updated

* chore: startOfWeek updated in profile store

* chore: StartOfWeekPreference added to profile appearance settings

* chore: calendar layout startOfWeek implementation

* chore: date picker startOfWeek implementation

* chore: gantt layout startOfWeek implementation

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-05-12 19:13:39 +05:30
sriram veeraghantaandGitHub 1da9f0f136 Sync: Community Changes #3172 2025-05-12 19:09:06 +05:30
Aaryan Khandelwal 9159199080 fix: merge conflicts resolved from preview 2025-05-12 18:48:40 +05:30
Aaryan KhandelwalandGitHub dc16f2862e [WIKI-181] refactor: make file handling generic in editor (#7046)
* refactor: make file handling generic

* fix: useeffect dependency array

* chore: remove mime type to extension conversion
2025-05-12 18:37:36 +05:30
sriram veeraghantaandGitHub eb8ad08999 Sync: Community Changes #3168 2025-05-12 18:22:15 +05:30
Vamsi KrishnaandGitHub e68d344410 [WEB-4074]fix: removed sub-work item filters at nested levels #7047 2025-05-12 18:21:05 +05:30
Aaron HeckmannandGitHub 26c8cba322 [WEB-4008] fix: handle when settings are None #7016
https://app.plane.so/plane/browse/WEB-4008/
2025-05-12 13:16:30 +05:30
Bavisetti NarayanandGitHub b435ceedfc [WEB-3782] chore: analytics endpoints (#6973)
* chore: analytics endpoint

* chore: created analytics chart

* chore: validation errors

* chore: added a new graph in advance analytics

* chore: added csv exporter

* chore: updated the filtering logic for analytics

* chore: opitmised the analytics endpoint

* chore: updated the base function for viewsets

* chore: updated the export logic

* chore: added type hints

* chore: added type hints
2025-05-12 13:15:17 +05:30
sriram veeraghantaandGitHub 7151f33b2b Sync: Community Changes #3164 2025-05-09 21:15:06 +05:30
sriram veeraghanta 3affc8483f fix: merge conflicts 2025-05-09 21:14:35 +05:30
SangeethaandGitHub 13c46e0fdf [WEB-3987] chore: project export funtionality enhancement (#7002)
* chore: comment details of work item

* chore: attachment count and attachment name

* chore: issue link and subscriber count

* chore: list of assignees

* chore: asset_url as attachment_links

* chore: code refactor

* fix: cannot export Excel

* chore: remove print statements

* fix: filtering in list

* chore: optimize attachment_count and attachment_link query

* chore: optimize fetching issue details for multiple select

* chore: use Prefetch to avoid duplicates
2025-05-09 21:09:13 +05:30
sriram veeraghanta 02bccb44d6 chore: adding robots txt file for not indexing the server 2025-05-09 21:07:24 +05:30
Surya PrashanthandGitHub b5634f5fa1 chore: add disable_auto_set_user flag on base model save method (#7041)
- when disable_auto_set_user flag is set, user fields like created_by
are derived from payload instead of crum
2025-05-09 21:05:05 +05:30
Aaryan KhandelwalandGitHub 64aae0a2ac [WEB-4051] fix: comment editor list items font size #7034 2025-05-09 18:49:43 +05:30
Saurabh KumarandGitHub 6587284555 [SILO-134] Implement new OAuth flow for GitHub integration (#3135)
* [SILO-134] RUNWAY Implement new OAuth flow for Github integration (#3089)

* oauth helper service + db helpers + modify plane sdk to accomodate oauth token

* fix indentation + create util for remove undefined in object

* add fields to workspace credential for oauth adapt

* get oauth token helper method

* auth callback flow changes to add plane oauth flow for github integration

* integrate github user and auth callback with oauth

* add user callback support with oauth for github integration

* remove token from cache on app disconnection

* Get Connection Details refactor change

* remove unwanted logs

* add missing translations

* replace plane app client id and secret fetching from env to db

* fix app get from db

* refactoring and comments resolved

* rename installation_id to plane_installation_id

* use db query methods and complete the app secret fetch flow

* remove unwanted logs and send missing values in update creds method

* move plane app db call just before oauth token call + models export in init

* Fix ssl reject error for pg

* add NODE_ENV option for ssl db config + management command to reset app_secrets + iteration fix

* fix oauth rate limit cache key breaking

* Fix redirect uri issue

* Fix pull request behaviour

* remove NODE_ENV check in DB connection
2025-05-09 18:44:35 +05:30
Surya PrashanthandGitHub 14859db5b0 [HAG-3] feat: auto create web-hooks for oauth apps during installation (#3156)
- Add new column webhook_id for app installation
- Once oauth app is installed, create webhooks for the workspace using
app.webhook_url
- Link these webhooks to app installations
- If webhook_url is modified, modify all existing webhooks for the app installation.
2025-05-09 18:44:18 +05:30
ce3527fead [SILO-230] UI changes to add new fields on App creation (#3136)
* Added necessary models and relationships to Application. Added a basic view for published applications enpoint

* Added new marketplace django app and moved the published application endpoint

* Added missing view

* Added support_url and video_url to the model and updated migrations

* split marketplace views into separate files

* made categories json field

* chore: add management command and migration for templates publish

* chore: add docstring and template example

* Model chagnes and migrations for Application and Template

* Add support for new marketplace application fields in UI and API

* More migration changes for Application and Template

* Removed setting made_by while publishing template

* Added new endpoints for Application and Tempalte categories

* Added missing imports

* Added logo_props to ApplicationCategory and TempalteCategory models

* modify categories to API from constant

* remove marketplace constant file

* remove non require field + marketplace public endpoint serialiser changes

* add translations + add missing fields in serialiser

* add upload modal translations

* modify attachments as url list instead of uuid

* fix redirect uri regex + make webhook url as optional

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-05-09 18:44:02 +05:30
Vamsi KrishnaandGitHub e67c553876 [WEB-3980]feat:epic sub work item filters (#3117)
* feat: added filters for sub issues

* feat: added list groups for sub issues

* drat: epics groupby and filters

* feat: sorting, ordering and filtering for sub work items

* chore: reverted filter name change

* chore: reverted filter change

* feat: added sort and filter for initiatives

* fix: build errors
2025-05-09 18:24:35 +05:30
Anmol Singh BhatiaandGitHub 416ca22d42 [WEB-3988] chore: work item conversion enhancements (#3152)
* chore: warning modal added

* chore: toast improvement

* chore: code refactor

* chore: code refactor
2025-05-09 18:00:56 +05:30
Akshita GoyalandGitHub 879ba47d24 [WEB-4055] fix: moved update translation to translations-extended #3155 2025-05-09 18:00:30 +05:30
Henit ChobisaandGitHub 43686ce0a7 [SILO-243] If user connection is unavailable when syncing comments, add User's name in the message text (#3157)
* feat: added external api to get a specific user

* feat: added user information in front of comment if not present

* chore: reverted changes for apis

* fix: user actor from webhook for getting name

* fix: remove unused import

* fix: added null check

* fix: change variable name
2025-05-09 17:57:45 +05:30
sriram veeraghantaandGitHub b17f93e73c Sync: Community Changes #3159 2025-05-09 17:49:46 +05:30
sriram veeraghanta d213681a43 Merge branch 'sync/ce-ee' of github.com:makeplane/plane-ee into sync/ce-ee 2025-05-09 17:48:49 +05:30
sriram veeraghanta a1bd278f59 fix: merge conflicts 2025-05-09 17:48:31 +05:30
Prateek ShouryaandGitHub 126e7ff5e1 improvement: use short_description for all template description (#3162)
* improvement: use `short_description` for all template description

* fix: update create endpoint to use `short_description` for all template description
2025-05-09 17:34:00 +05:30
Henit ChobisaandGitHub a263bfc01f chore: added external id and source to page model (#7040)
* chore: added external id and source to page model

* chore: added migration

* fix: added blank field
2025-05-09 17:23:49 +05:30
Anmol Singh BhatiaandGitHub 50082f0843 [WEB-4002] fix: sidebar tab highlight (#7011)
* fix: work item tab highlight

* chore: code refactor

* chore: code refactor

* chore: code refactor
2025-05-09 16:53:51 +05:30
Dheeraj Kumar KetireddyandGitHub 27902a2109 chore: migrations template workitem page (#3161)
* Added data migration to copy description to short description for templates

* Added workitem page relation

* Update the data directly instead of fetching it
2025-05-09 16:45:02 +05:30
Prateek ShouryaandGitHub 30db59534d [WEB-3985] feat: common postcss config and local fonts across all plane applications (#6998)
* [WEB-3985] feat: common postcss config and local fonts across all plane applications

* improvement: split fonts into a separate exports
2025-05-09 14:26:29 +05:30
e401c9d6e4 [WEB-4028] feat: sub work item filters and grouping (#6997)
* feat: added filters for sub issues

* feat: added list groups for sub issues

* chore: updated order for sub work item properties

* feat: filters for sub work items

* feat: added filtering and ordering at frontend

* chore: reverted backend filters

* feat: added empty states

* chore: code improvemnt

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-09 14:24:06 +05:30
Bavisetti NarayanandGitHub 39b5736c83 [WEB-4057] chore: updated the logger for bgtasks #7025 2025-05-09 14:23:23 +05:30
Vamsi KrishnaandGitHub 2785419d12 [WEB-4052]fix: sub work item copy link (#7036)
* fix: sub work item copy link

* fix: copy url to clipboard
2025-05-09 14:22:34 +05:30
Dheeraj Kumar KetireddyandGitHub f81469cb5f [SILO-204] [SILO-203] Application and Template model changes for marketplace listing (#3151)
* Model changes and Migrations required for publishing Applications and Templates to marketplace.
Created a new marketplace django app

Squashed commit of the following:

commit ab9a4a44820360f41f1ee67508b36726731197d2
Merge: 91457dd0cb 21565a4aed
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 21:29:26 2025 +0530

    Merge branch 'preview' into feat-marketplace

commit 91457dd0cbec4d56282af973070959782c71ebbf
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 17:58:08 2025 +0530

    Changed the serializer class to support pagination

commit 37ac2926878f2717b9bb850bf3f0216efddf39e7
Merge: 6d7807940b 3c4b09caaa
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 17:38:53 2025 +0530

    Merge branch 'feat-marketplace' into feat-marketplace-templates

commit 3c4b09caaa77eb0c6982d684b84d02c2611e72d0
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 17:03:19 2025 +0530

    Added missing field

commit 6d7807940bc8f17fd4b88e1a168ea0f50f994f64
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 16:51:16 2025 +0530

    Serializer updates

commit 2929fd317f52df3c993ee974232385ccdef47170
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 16:37:52 2025 +0530

    Removed unused fields

commit 1d5bdce2e0355818c8dd8206f7b9e62f4ddbcfeb
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 16:32:00 2025 +0530

    Added pagination and new fields to published template endpoints

commit d30a5b01582e73089e432b769e30ad98ebef6bd7
Merge: de1bd1d7a7 cb34d7bab3
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 16:02:28 2025 +0530

    Merge branch 'feat-marketplace' into feat-marketplace-templates

commit cb34d7bab307bcbc35fd04d64c4a1181bae6bf01
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 16:01:12 2025 +0530

    fixed import issues

commit a99bf3a4a66628398dc02bd76aada3eeda88c998
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 15:58:35 2025 +0530

    Added short_description to template model

commit de1bd1d7a73e2e146135cab2edeb80e5ae780edb
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 15:34:22 2025 +0530

    Published templates meta endpoint

commit abb06743c093c5e47ec6c551714dca02fa0454d3
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Wed May 7 14:38:33 2025 +0530

    List and Detail endpoints for published templates

commit ba043732054d3ac6029026053f7b8991142a568e
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 17:57:34 2025 +0530

    Added logo_props to ApplicationCategory and TempalteCategory models

commit f790915fdee2ef35f3303915989beaa519e0c5ff
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 16:11:51 2025 +0530

    Added missing imports

commit f97843e7b565a81eae306a424ede985e7ad31430
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 16:10:29 2025 +0530

    Added new endpoints for Application and Tempalte categories

commit 1f557fd4c9f150d144044c215db5dc3af753a36e
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 15:52:56 2025 +0530

    Removed setting made_by while publishing template

commit 5eac7ac2d5be96ca116484711cf821ad07d85ad1
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 15:40:46 2025 +0530

    More migration changes for Application and Template

commit fcc3cab17e6ae323a2e4c2b2aa627e52c0665176
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Tue May 6 14:45:29 2025 +0530

    Model chagnes and migrations for Application and Template

commit ba92db128542328cb7b9d91ea5a7a09f9d7fff5e
Author: pablohashescobar <nikhilschacko@gmail.com>
Date:   Fri May 2 22:23:02 2025 +0530

    chore: add docstring and template example

commit 0f6d0219b57eb12111214b832b17cfd87aca5656
Author: pablohashescobar <nikhilschacko@gmail.com>
Date:   Fri May 2 21:26:40 2025 +0530

    chore: add management command and migration for templates publish

commit 5addcfde454e0aaddaf2996333e80f66763ea705
Merge: 8fbd724005 44875dabc2
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Mon May 5 18:45:04 2025 +0530

    Merge branch 'preview' into feat-marketplace

commit 8fbd7240059e5bb1c4efe8d88891ddb44bdc7430
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Mon May 5 17:08:04 2025 +0530

    made categories json field

commit 7ff2680fab367193a4819be7707d32c0a42a318b
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Mon May 5 16:35:37 2025 +0530

    split marketplace views into separate files

commit 3d34fce3b2b4555e5151131389609834d14bad42
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Mon May 5 14:22:55 2025 +0530

    Added support_url and video_url to the model and updated migrations

commit 49726af531406ce18912d14843d7d3b72aa0c5d0
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Mon May 5 13:46:45 2025 +0530

    Added missing view

commit 1623355c68a19ffea2066c309799cbb1f8634dec
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Fri May 2 15:57:03 2025 +0530

    Added new marketplace django app and moved the published application endpoint

commit aea85f1dc1293be19cf93e3400fd40d79ef97166
Author: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Date:   Fri May 2 12:11:46 2025 +0530

    Added necessary models and relationships to Application. Added a basic view for published applications enpoint

* Added webhook relation to WorkspaceAppInstallation
2025-05-09 13:42:35 +05:30
sriram veeraghanta ac5b974d67 chore: Upgrade Django version to 4.2.21 2025-05-08 21:29:26 +05:30
guru_sainathandGitHub 70ffb83219 [MOBIL-925] fix: epics and work item relations filter from other projects #3149 2025-05-08 21:20:42 +05:30
guru_sainathandGitHub ff953ff6c1 [MOBIL-926] feat: Implement reactions for comments in work items #3150 2025-05-08 21:20:15 +05:30
sriram veeraghantaandGitHub 21565a4aed Sync: Community Changes #3148 2025-05-07 21:21:51 +05:30
14ebaf0799 [WEB-3942] chore: intake url pattern (#7006)
* chore: intake url pattern updated

* chore: code refactor

* chore: removed unused components

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-05-07 21:19:24 +05:30
429e5b2de7 [WEB-4001] fix: intake settings feature flag changed (#3075)
* fix: intake settings feature flag changed

* chore: feature flag intake_email and intake_form check for intake settings

* chore: change feature_flag intake_publish into intake_email of intake_form

* chore: change intake_settings featureflag check

* fix: added observer

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-05-07 21:19:02 +05:30
Henit ChobisaandGitHub 361d1e6027 [SILO-220] fix: slack linkback bug with posting ephemeral messages (#3111)
* fix: ephemeral messages sent on linkback action

* fix: connect account resending message

* fix: added optional chaining
2025-05-07 19:12:01 +05:30
Henit ChobisaandGitHub 5675c1a0b6 [SILO-221] fix: credentials not found for installation id #3114 2025-05-07 19:11:37 +05:30
Henit ChobisaandGitHub a651a7263c [SILO-228] fix: receiving false create events in project updates (#3123)
* fix: recieving false create events in project updates

* fix: remove type casting for comparision

* fix: handle reactions in updates in slack link
2025-05-07 19:11:12 +05:30
sriram veeraghantaandGitHub 1b2f87067a Sync: Community Changes #3147 2025-05-07 19:10:38 +05:30
Prateek Shourya d9959eb42f Merge branch 'preview' of github.com:makeplane/plane-ee into sync/ce-ee 2025-05-07 19:04:09 +05:30
SangeethaandGitHub 7cdb622663 [WEB-3930] chore: change source in-app to IN_APP #7008 2025-05-07 18:46:10 +05:30
JayashTripathyGitHubcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
855e4a3218 [WEB-4016] updated project and workitem form (#7019)
* updated project and workitem form

* added translation for other languages also

* Update packages/i18n/src/locales/zh-CN/translations.json

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-05-07 18:44:04 +05:30
Anmol Singh BhatiaandGitHub d456767492 [WEB-3955] chore: work item parent select modal params #7021 2025-05-07 18:41:28 +05:30
Bavisetti NarayanandGitHub 6faff1d556 [WEB-3877] fix: changed logic to calculate cycle duration (#7024)
* chore: cycle running days

* chore: removed the module filter
2025-05-07 18:40:37 +05:30
sriram veeraghantaandGitHub 07b28cacbb Sync: Community Changes #3137 2025-05-07 18:02:50 +05:30
M. PalanikannanandGitHub 96f5f50f3e [WIKI-340] fix: double socket connection while moving pages #3143 2025-05-07 18:00:23 +05:30
sriram veeraghantaandGitHub 50b7c47dbc release: v1.9.2 #3141 2025-05-07 15:00:39 +05:30
Prateek ShouryaandGitHub b1a814e740 [WEB-4039] fix: project level work item template permission (#3139) 2025-05-07 13:39:26 +05:30
Henit ChobisaandGitHub 6dc54ad1b9 [SILO-228] fix: passed github webhook if the secret is not present #3140 2025-05-07 13:38:32 +05:30
NikhilandGitHub 5d2dd52c3d fix: silo base url env (#3138) 2025-05-07 02:21:09 +05:30
Aaryan KhandelwalandGitHub bc2936dcd3 [WEB-3906] fix: page table of content overlap with the page content #7018 2025-05-07 00:51:51 +05:30
Aaryan KhandelwalandGitHub d366ac1581 [WEB-2508] fix: page favorite item title mutation (#7020)
* fix: remove page favorite item title fallback value

* refactor: use nullish coalescing operator
2025-05-07 00:28:43 +05:30
Akshita GoyalandGitHub d34b3c35d8 [WEB-4022] chore: added beta tag for progress charts in active cycles (#3134)
* chore: added beta tag for active cycles

* wip: moved to packages
2025-05-06 19:22:16 +05:30
sriram veeraghantaandGitHub cf1c1249e4 release: v1.9.1 #3121 2025-05-06 18:30:22 +05:30
Bavisetti NarayanandGitHub 9c84d406d1 chore: restrict access for private pages (#3132) 2025-05-06 11:08:39 +05:30
sriram veeraghantaandGitHub 2293ff2a53 Sync: Community Changes #3131 2025-05-06 01:37:33 +05:30
sriram veeraghanta da3b7c726d fix: merge conflicts with duplicate page 2025-05-06 01:34:26 +05:30
NikhilandGitHub 0a01e0eb41 [WEB-4013] chore: correct live url #7014 2025-05-06 01:21:53 +05:30
NikhilandGitHub b4cc2d83fe [WEB-4014] fix: check access when duplicating pages #7015 2025-05-06 01:20:33 +05:30
NikhilandGitHub bb37d01e9d fix: silo base url for proper redirection (#3130)
* fix: silo base url for proper redirection

* chore: validate urls for live
2025-05-05 20:56:22 +05:30
pushya22andGitHub 722ee1e811 Sync: Community Changes #3127
Sync: Community Changes
2025-05-05 19:20:27 +05:30
pablohashescobar f3819270f4 fix: url validation for silo 2025-05-05 19:18:04 +05:30
pablohashescobar 3481d3e02b fix: merge conflicts 2025-05-05 19:11:24 +05:30
42e2b787f0 [WEB-4013]chore: publish login and standardize urls in common settings (#7013)
* chore: handling base path and urls

* chore: uniformize urls in common settings

* correct live url

* chore: use url join to correctly join urls

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-05-05 18:58:24 +05:30
M. PalanikannanandGitHub 44875dabc2 [WIKI-338] regression: adding back LIVE_URL #3125 2025-05-05 16:44:40 +05:30
Akshat JainandGitHub 1e20b1d5af [INFRA-141] chore: add AES_SECRET_KEY to environment configuration files #3124 2025-05-05 16:18:54 +05:30
sriram veeraghanta d7ed4d0d65 Merge branch 'canary' of github.com:makeplane/plane-ee into preview 2025-05-05 15:20:05 +05:30
Saurabh KumarandGitHub 81f35b33ce [SILO-226] Fix create application migration script #3122 2025-05-05 15:18:59 +05:30
pushya22andGitHub e7e5464342 promote: preview to canary for v1.9.1 #3120
promote: preview to canary for v1.9.1
2025-05-05 13:46:12 +05:30
NikhilandGitHub b52a804566 [WEB-4009] fix: wiki publish get endpoint to return the deploy board details #3119 2025-05-05 13:41:51 +05:30
Prateek ShouryaandGitHub c83de6f895 [WEB-4007] fix: minor fix related to templates loader and feature flags (#3118) 2025-05-03 17:49:22 +05:30
Bavisetti NarayanandGitHub 809a9db5af [WEB-4000] fix: added issue activities for epics, customers, issue types, and more. (#3103)
* chore: reverted the activities

* fix: variable names for issue activities

* chore: added condition for estimate
2025-05-02 16:57:24 +05:30
sriram veeraghantaandGitHub 2c5c2f4145 Sync: Community Changes #3110 2025-05-02 16:56:19 +05:30
fbca9d9a7a [WEB-3996] fix: attachment icon rendering and added support for rar and zip icons (#7007)
* chore: zip and rar file icon

* chore: zip and rar file icon

* fix: attachment icon

* chore: application/x-rar type added

* fix: compressed file extensions

* chore: updated file upload extensions

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-05-02 16:53:06 +05:30
Henit ChobisaandGitHub af9705aaea [SILO-215] feat: slack project updates, push plane issue creation updates to dedicated slack channels (#3106)
* [SILO-189] feat: added UI for connecting slack channels to plane projects (#3080)

* feat: added endpoint for fetching project updates connections

* feat: added service function for getting projects updates connection

* chore: added translations for slack project updates page

* feat: added type for response from slack conversation

* feat: added controller methods for getting project connections and channels

* feat: added service methods and project connections manager into store

* feat: added form component for project updates modal

* feat: added main list component for project updates and connected to root

* fix: error translation

* feat: added handler to address project updates

* chore: resolved comments

* feat: backend changes for slack project updates (#3105)

* fix: translations for project updates (#3107)

* feat: added types to optimize channel endpoint (#3108)
2025-05-02 15:08:02 +05:30
Henit ChobisaandGitHub 1efa565b58 [SILO-201] fix: created proper type for issue link entity data #3104 2025-05-02 14:16:22 +05:30
sriram veeraghantaandGitHub 19e9d49fd3 Sync: Community Changes #3101 2025-05-01 19:25:10 +05:30
Saurabh KumarandGitHub 71dc365ef3 [SILO-172] API changes to support app creation flow for OAuth (#3053)
* add silo app + aes encryption method + applications create flow changes

* use python logger and format files

* use python logger and format files

* fix comments and handled regenerate secret

* fix app slug issue

* fix app slug and redirect issue
2025-05-01 19:23:23 +05:30
Anmol Singh BhatiaandGitHub 6437fcb0bc [WEB-3988] fix: work item conversion mutation and modal title (#3100)
* fix: work item conversion mutation and modal title

* chore: code refactor
2025-05-01 19:22:33 +05:30
SangeethaandGitHub dbc00e4add [WEB-3992] chore: support for x-zip-compressed type #7001 2025-05-01 19:22:00 +05:30
Bavisetti NarayanandGitHub 56bb47e785 [WEB-3995] chore: track entity state activity for draft issue (#3099)
* chore: track entity state activity for draft issue

* chore: added external api entity tracking
2025-05-01 19:21:35 +05:30
sriram veeraghantaandGitHub 4f684bc804 Sync: Community Changes #3093 2025-05-01 19:15:06 +05:30
sriram veeraghanta 17c38c3e30 fix: merge conflicts 2025-05-01 19:14:26 +05:30
guru_sainathandGitHub 177e574f88 [MOBIL-900] chore: handle epics in filters, search, recent visits, and relation queries (#3077)
* chore: Handled epics in recents and work items

* chore: workspace slug

* chore: handled is epic in work item

* fix: handled workspace__slug in parent details

* fix: handled user_id in parent details

* chore: handled the issue search epic

* chore: updated work item relation query

* chore: enabled is_epic in work item browse query

* chore: validated epics relations

* chore: work item relations

* chore: handled epic relation without epic filter in sub issues

* chore: is work item parent is epic

* chore: added analytics for the epic in work item type

* chore: issue types import

* chore: querying the epics in the epic relation query

* chore: epics filters in issue search

* chore: epic activity and comments

* chore: epic activity and comments in schema

* chore: activity and comments epics

* chore: work item search epic update

* chore: import errors resolved

* chore: epic filter in work item search

* fix: handled parent_is_epic is none in work item qujery

* chore: handled epic comment

* chore: updated typos

* chore: handled the epic comment create mutation

* chore: triggering the link activity in epic

* chore: handled exceptions and resolved comments

* chore: analytics handled the none
2025-05-01 19:00:48 +05:30
guru_sainathandGitHub 67adab36e4 [MOBIL-569] chore: Enhance work item filters for workspace, project, module, cycle, and user queries (#3079)
* chore: updated mobile work item filters

* chore: updated workitem filters

* chore: Handled epics in recents and work items

* chore: workspace slug

* chore: handled is epic in work item

* fix: handled workspace__slug in parent details

* fix: handled user_id in parent details

* chore: handled the issue search epic

* chore: updated work item relation query

* chore: enabled is_epic in work item browse query

* chore: validated epics relations

* chore: work item relations

* chore: handled epic relation without epic filter in sub issues

* chore: is work item parent is epic

* chore: added analytics for the epic in work item type

* chore: issue types import

* chore: querying the epics in the epic relation query

* chore: epics filters in issue search

* chore: epic activity and comments

* chore: epic activity and comments in schema

* chore: activity and comments epics

* chore: work item search epic update

* chore: import errors resolved

* chore: epic filter in work item search

* fix: handled parent_is_epic is none in work item qujery

* chore: handled epic comment

* chore: updated typos

* chore: handled the epic comment create mutation

* chore: triggering the link activity in epic

* chore: handled exceptions and resolved comments

* chore: analytics handled the none
2025-05-01 18:37:20 +05:30
guru_sainathandGitHub 73672cafce [MOBIL-907] chore: ddd order field in states list for rendering state icons (#3092)
* chore: added order in states list

* chore: handled the default as 1 for state order

* chore: handled the default as null for state order
2025-05-01 18:37:01 +05:30
Henit ChobisaandGitHub 1a2f9d6fd9 [SILO-199] fix: user comment sync from plane and token refresh (#3097)
* fix: modified connection details for addressing user credentials

* fix: modified refresh credentials handler to upsert user credentials

* fix: modified types for both user responses

* fix: refactored comment handler to user issue details function

* chore: resolved comments

* chore: added logs

* fix: segregated type for token refresh

* fix: added null for issue details helper
2025-05-01 18:33:37 +05:30
5c5781c398 pi url change (#3096)
Co-authored-by: Pushya Mitra Thiruvooru <pushya@Pushyas-MacBook-Pro.local>
2025-05-01 13:18:07 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3c64c4e9d9 chore(deps-dev): bump the npm_and_yarn group across 2 directories with 1 update (#3095)
Bumps the npm_and_yarn group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /packages/mobile-editor directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.2.6 to 6.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.7/packages/vite)

Updates `vite` from 6.2.6 to 6.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.7/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.7
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: vite
  dependency-version: 6.2.7
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 02:42:15 +05:30
Henit ChobisaandGitHub 44ca3f02bc feat: webhook activity payload reverted (#3094)
* chore: revert webhook activity task

* fix: channel id
2025-04-30 22:33:17 +05:30
28f9733d1b [WEB-3991] chore: local dev improvements (#6991)
* chore: local dev improvements

* chore: pr feedback

* chore: fix setup

* fix: env variables updated in .env.example files

* fix(local): sign in to admin and web

* chore: update minio deployment to create an bucket automatically on startup.

* chore: resolve merge conflict

* chore: updated api env with live base path

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-04-30 21:46:59 +05:30
Henit ChobisaandGitHub 1844581db9 [SILO-193] fix: message notification for connect account #3091 2025-04-30 20:37:53 +05:30
sriram veeraghantaandGitHub 4ae0cf07e9 Sync: Community Changes #3090 2025-04-30 19:52:56 +05:30
SangeethaandGitHub 1e46290727 [WEB-3958] chore: allow members and admins to create api tokens (#6979)
* chore: allow members and admins to create api tokens

* chore: change permission for service api token
2025-04-30 19:51:04 +05:30
Henit ChobisaandGitHub d82a562e97 [SILO-192] fix: slack shortcut key (#3087)
* fix: slack shortcut key

* fix: passing user id to connection details
2025-04-30 17:26:06 +05:30
SangeethaandGitHub d2b7997c10 [WEB-3984] fix: IndexError for customer request issue #3086 2025-04-30 16:50:58 +05:30
Saurabh KumarandGitHub e5bb0537d4 [SILO-173] Plane DB read support and connection (#3035)
* add DB connection client and query helper

* code refactor + removed unwanted files

* removed unwanted dependencies
2025-04-30 15:51:47 +05:30
sriram veeraghanta efbf6d66ee fix: yarn lock dependencies docker error due to trailing space 2025-04-30 15:20:34 +05:30
sriram veeraghanta 67995d56e3 fix: build errors 2025-04-30 15:14:02 +05:30
63a4327924 [WEB-3566] feat: page templates (#2694)
* chore: add template

* chore: add page template and project template migrations

* chore: add migration file for project and page templates

* chore: page templates

* chore: update template

* feat: page templates

* chore: asset copy

* chore: update page templates

* improvement: update all templates endpoint

* chore: feature flags and minor improvements

* chore: common constants across templates

* improvement: work item template util types

* chore: minor improvements and base template store fixes

* improvement: common template related components

* chore: work item template util improvements

* improvement: remove empty templates list sections

* init: page templates

* revert: next config

* chore: remove unused store methods

* fix: page template store

* feat: page templates list at workspace level

* improvement: enhance project level template list modularity

* improvement: page template at project level

* feat: page template form

* feat: create or update page templates

* improvement: document editor configs

* improvement: template list loader

* improvement: work item template form background color

* feat: page template implementation

* improvement: minor update related to applying page templates

* fix: rebuild yarn.lock

* chore: duplicate the assets in thetemplate

* chore: workspace level duplicate endpoint

* feat: add editor helper

* chore: changed the response structure

* chore: reverted the deleted one

* chore: add assets duplicate logic

* chore: header buttons

* refactor: assets replace logic

* chore: add title editor ref

* fix: merge conflicts resolved from preview

* chore: store cleanup and minor improvements

* chore: minor improvements

* feat: feature flag check for page templates picker and CE code split

* remove: extra line added in migration file

* chore: added project validation (#2923)

* fix: bulk status update for page templates assets

* improvement: translations and code cleanup

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
2025-04-30 15:02:58 +05:30
e55aa6d394 [WEB-3560] feat: epic to work item and vice versa conversion (#2977)
* feat: conversion of epic to work item and vice versa

* chore: delete related cycles and modules

* chore: delete related cycles, modules and parent

* feat: activitites

* fix: None for requested_data and current_instance

* chore: convertWorkItem method, services and types added

* chore: conversion component added

* chore: epic and work item modal updated

* chore: modal state and mutation changes

* chore: conversion action button peek view implementation

* chore: conversion action button detail page implementation

* chore: mutation

* chore: epic enable check added

* chore: toast message updated

* chore: code refactor

* chore: code refactor

* chore: remove prefetch_related and select_related

* fix: work item type conversion and additional properties

* chore: code refactor

* chore: code refactoring

* chore: code refactor

* chore: feature flag added

* chore: icon updated

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-04-30 15:02:15 +05:30
Bavisetti NarayanandGitHub 51d7e0608c [WIKI-326] chore: page restoration and nested pages (#3016)
* chore: added trigger for new sub page

* chore: updated the permission layer

* chore: delete the nested page as well

* chore: updated the recursive logic for restoration

* chore: added parameters for bulk update
2025-04-30 15:01:37 +05:30
Henit ChobisaandGitHub a710938d3f [SILO-180] feat: added connect button for unauthenticated slack users while performing an action (#3057)
* feat: added new blocks interface to ephemeral message posting

* feat: modified connection details helper in order to user credentials

* feat: modified controller to include userMap array

* feat: added account connection blocks

* feat: added missing credentials check and posting a message for connection

* feat: modified slack connection store for passing apiToken for state

* fix: resolved comments

* feat: added blocker for link work item command
2025-04-30 15:00:24 +05:30
Aaryan KhandelwalandGitHub 247f10c199 [WIKI-336] fix: enhanced search wiki page redirection #3083 2025-04-30 14:59:14 +05:30
sriram veeraghantaandGitHub cc8dd7c1b8 Sync: Community Changes #3085 2025-04-30 14:58:25 +05:30
6f718e2859 [SILO-183] Fix state mapping for PR Automation Github & Gitlab (#3084)
* change pr behaviour method to use entityconnections for right state mapping

* renames and sanitize + modify test for PR automation state update

* remove console logs

---------

Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
2025-04-30 14:57:56 +05:30
Anmol Singh BhatiaandGitHub 5a1df8b496 [WEB-3560] chore: work item modal code refactor #6996 2025-04-30 14:56:38 +05:30
sriram veeraghantaandGitHub cfc4bf843b Sync: Community Changes #3082 2025-04-29 20:22:27 +05:30
Anmol Singh BhatiaandGitHub f23a2f0780 [WEB-3973] chore: space app state icon size #6995 2025-04-29 20:13:55 +05:30
Anmol Singh BhatiaandGitHub c05da78f9b [WEB-3973] chore: default state icon color updated #3081 2025-04-29 20:12:32 +05:30
Bavisetti NarayanandGitHub 0dd44c8311 [WEB-3928] chore: added the filter for entity progress #3067 2025-04-29 20:03:46 +05:30
Vamsi KrishnaandGitHub 7b9f80628e [WEB-3972]fix: epics sub work items order (#3078)
* fix: epics customer activity

* fix: updated the order for sub work items properties
2025-04-29 20:03:14 +05:30
NikhilandGitHub 3fc2df835b chore: choice field migration for Epic Updates (#3076) 2025-04-29 17:54:01 +05:30
sriram veeraghanta 4c892a8a34 chore: compose file version update 2025-04-29 17:34:11 +05:30
Henit ChobisaandGitHub 7fae98a2f0 [SILO-178] feat: slack issue linking with threads with Plane updates synced with slack threads 2025-04-29 16:19:43 +05:30
sriram veeraghantaandGitHub 8fa0566e06 Sync: Community Changes #3074 2025-04-29 15:54:29 +05:30
sriram veeraghanta 79e6349b8b fix: yarn lock updates 2025-04-29 15:53:31 +05:30
sriram veeraghanta be97b147d8 fix: merge conflicts 2025-04-29 15:53:11 +05:30
sriram veeraghanta ac703c89be fix: build errors 2025-04-29 15:49:31 +05:30
sriram veeraghanta d10bb0b638 chore: yarn lock updates 2025-04-29 15:49:14 +05:30
sriram veeraghanta c4ddff5419 chore: nextjs dependencies upgrade 2025-04-29 15:48:52 +05:30
sriram veeraghantaandGitHub 3abe4c9c80 Sync: Community Changes #3073 2025-04-29 15:35:53 +05:30
sriram veeraghanta 10f5b4e9b8 fix: turbo repo upgrade 2025-04-29 15:34:12 +05:30
sriram veeraghanta cdca5a4126 chore: build fixes 2025-04-29 15:33:03 +05:30
sriram veeraghantaandGitHub f00330b71e Sync: Community Changes #3072 2025-04-29 15:28:45 +05:30
sriram veeraghanta 963e826337 fix: merge conflicts 2025-04-29 15:27:59 +05:30
4c329b4630 [WEB-3929] fix: customers on epics (#3039)
* fix: feature flag check for workspace level

* chore: customer ids and customer request ids in issues list

* chore: customer ids and customer request ids in epics

* chore: customer ids and customer request ids in epics

* chore: support sql file attachment

* fix: returning issue id instead of customer and request ids

* chore: customer request count to customer request ids

* chore: customer request id on issue retrieve api

* chore: customer id and customer request id in epic detail api

* * chore: added work items and requests count for epics
* chore: updated store for work items customers data
* fix: coustomers count mutation in list

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-04-29 15:24:38 +05:30
6a4850084e [WEB-3901]feat: epics sub work items sorting (#3019)
* refactor: sub-work items components, hooks and types

* feat: group by and order by for sub work items of epic

* feat: group by and order by for sub work items of a work items

* feat: group by and order by for sub work items of a initiative

* fix: group by assignee ids

* feat: added orderby and display properties toggle for sub work items

* fix: build errors

* feat: added order by to epics work items

* chore: remvoed issue_type  from display properties

* chore: removed unused variables and commented code

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
2025-04-29 15:24:18 +05:30
14dc6a56bc [WEB-3838]feat:sub work items sorting (#6967)
* refactor: sub-work items components, hooks and types

* feat: added orderby and display properties toggle for sub work items

* fix: build errors

* chore: removed issue type from filters

* chore: added null check

* fix: added null check

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
2025-04-29 15:23:10 +05:30
SangeethaandGitHub 55340f9f48 [WEB-3957] chore: IntakeIssues with iexact 'in-app' changed to 'IN_APP' (#6977)
* migration: data with iexact 'in-app' changed to 'IN_APP'

* chore: add start_of_week field in profile

* chore: define variables for choices

* chore: merge migration files
2025-04-29 15:22:42 +05:30
Prateek ShouryaandGitHub efa64fc4b8 [WEB-3968] improvement: added few missing translation keys #6993 2025-04-29 15:14:31 +05:30
NikhilandGitHub c82dba56d4 [WEB-3950] fix: project template cover image when creating a project from template (#3048)
* fix: project template cover image when creating a project from template

* chore: update variable to not mix with a python keyword
2025-04-29 14:38:59 +05:30
Vamsi KrishnaandGitHub 44e4d8282f [WEB-3902]feat: added sort and display properties to initiatives epics list #3052 2025-04-29 14:38:26 +05:30
Saurabh KumarandGitHub e92a810245 [SILO-171] Models and migration to support oauth flow in integrations #3056 2025-04-29 14:37:57 +05:30
Vipin ChaudharyandGitHub 6689493516 [WEB-3960] Fix: tab focus on issue description (#3064)
* fix: tab focus on issue description

* fix : remove focus param
2025-04-29 14:36:22 +05:30
Vamsi KrishnaandGitHub 4970b88cd6 [WEB-3917]feat: added customer and customer request activity to epics #3066 2025-04-29 14:35:28 +05:30
f5449c8f93 [WEB-3751] chore: work item state icon improvement (#6960)
* chore: return order based on group

* chore: order for workspace stats endpoint

* chore: state response updated

* chore: state icon types updated

* chore: state icon updated

* chore: state settings new icon implementation

* chore: icon implementation

* chore: code refactor

* chore: code refactor

* chore: code refactor

* fix: order field type

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-04-29 14:33:53 +05:30
Surya PrashanthandGitHub 599daadb19 [SILO-181] fix: use correct credentials for github issue sync (#3068)
- Instead of picking the first user level credential, used comment.created_by
field to get user level credentials for comment sync
2025-04-29 14:32:17 +05:30
pushya22andGitHub ac052c7c05 Sync: Community Changes #3070
Sync: Community Changes
2025-04-29 14:14:34 +05:30
NikhilandGitHub 08ec11656f Merge branch 'preview' into sync/ce-ee 2025-04-29 14:06:51 +05:30
baabb82669 [WEB-3926] chore: removed the duplicated webhook task and updated the webhook task to handle exceptions correctly (#6951)
* chore: removed the duplicated webhook function

* chore: update webhook send task to handle errors

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-04-29 14:04:00 +05:30
NikhilandGitHub 298e3dc9ca [WEB-3945] chore: update workspace onboarding to add default project (#6964)
* chore: add json files and initial job to push data to workspace

* chore: update seed data location

* chore: update seed data to use assets from static urls

* chore: update seed data to use updated labels

* chore: add logging and update label name

* chore: add created_by for project member

* chore: add created_by_id for issue user property

* chore: add workspace seed task logs

* chore: update log message to return task name

* chore: add warning log for workspace seed task

* chore: add validation for issue seed data
2025-04-29 14:01:22 +05:30
Bavisetti NarayanandGitHub 190300bc6c [WEB-3877] chore: changed the logic to end cycle (#6971)
* chore: changed the logic to end cycle

* chore: added issue deleted filter

* chore: added check for progress snapshot
2025-04-29 14:00:54 +05:30
Dheeraj Kumar KetireddyandGitHub 550fe547e2 [WEB-3967] feat: Optimized module patch endpoint to reduce duplicate db calls (#6983) 2025-04-29 13:51:46 +05:30
sriram veeraghantaandGitHub d5fe1db630 release: v1.9.0 #3058 2025-04-29 13:47:53 +05:30
Akshat JainandGitHub 60d778b0f3 fix: add live server secret key to environment variables (#3069) 2025-04-29 13:10:00 +05:30
sriram veeraghanta e07e3e543d fix: live base path and url changes in coolify and portainer 2025-04-28 21:19:12 +05:30
sriram veeraghanta 40a50dfaf9 fix: live base path and url fixes 2025-04-28 21:14:00 +05:30
sriram veeraghanta 3f5861fcce fix: api server comms url defaults to empty string 2025-04-28 20:36:20 +05:30
sriram veeraghanta f9e7af7ae9 fix: live server secret key on coolify and portainer 2025-04-28 20:13:53 +05:30
sriram veeraghanta 707cb7b54f fix: live server secret key 2025-04-28 19:27:14 +05:30
sriram veeraghantaandGitHub 461e099bbc release: v0.26.0 #6962 2025-04-28 18:24:37 +05:30
sriram veeraghanta 22788058e1 fix: docker live server start command 2025-04-28 18:21:08 +05:30
sriram veeraghantaandGitHub 34b61bf544 Sync: Community Changes #3063 2025-04-28 18:17:51 +05:30
Akshat JainandGitHub f278a284c4 chore: comment out APP_RELEASE variable update in build-branch workflow (#6989) 2025-04-28 17:45:44 +05:30
sriram veeraghanta 2bcf6c76cd chore: remove dockerhub user varible from compose 2025-04-28 16:28:48 +05:30
sriram veeraghantaandGitHub 91ef6b096a Sync: Community Changes #3062 2025-04-28 14:46:25 +05:30
Surya PrashanthandGitHub da524bfac5 [SILO-163] chore: create separate env variable for silo callback base url #3060 2025-04-28 14:45:49 +05:30
Akshat JainandGitHub fb3e022042 [INFRA-134] fix: Setup and Swarm scripts for DOCKERHUB_USERNAME #6988 2025-04-28 14:37:51 +05:30
sriram veeraghanta 5adfcce2cc fix: docker images updated to artifacts source 2025-04-27 14:10:55 +05:30
sriram veeraghantaandGitHub 4cacd37cf6 Sync: Community Changes #3055 2025-04-25 20:49:07 +05:30
Akshat JainandGitHub e3fbb7b073 [INFRA-134]: Update Docker images to use new artifact repository path #6978 2025-04-25 18:09:43 +05:30
8c97cd6a6a [WEB-3948] chore work item peek view logic (#3050)
* chore: return is_epic for recents

* chore: issue entity data type updated

* chore: HomePeekOverviewsRoot component added

* chore: code refactor

* chore: handle peek view logic for workitem type

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-04-25 15:14:48 +05:30
sriram veeraghantaandGitHub 4a2ebbbfa3 Sync: Community Changes #3051 2025-04-25 15:10:08 +05:30
Anmol Singh BhatiaandGitHub cce6dd581c [WEB-3948] chore: recent work item improvement (#6976)
* chore: issue entity data type updated

* chore: HomePeekOverviewsRoot component added

* chore: recent work item improvement and code refactor
2025-04-25 15:08:10 +05:30
Saurabh KumarandGitHub a84c5e5f5b [SILO-179] Fix client secret not getting attached in OAuth app creation #3044 2025-04-25 14:37:13 +05:30
Vamsi KrishnaandGitHub 2275a7264c [WEB-3946] fix: guest epic view restriction (#3045)
* fix: gues epic restriction

* fix: added user ids for comparision

* chore: updated created_by_id to reduce db calls
2025-04-25 14:35:47 +05:30
SangeethaandGitHub 17fd6c44b4 [WEB-3948] chore: epics on recents (#3046) 2025-04-25 14:35:25 +05:30
sriram veeraghantaandGitHub 1c4a5e3bbd Sync: Community Changes #3049 2025-04-25 14:34:44 +05:30
Akshita GoyalandGitHub d86ac368a4 [WEB-3863] fix: handled error handling for link editing #6968 2025-04-25 14:31:35 +05:30
101994840a [WEB-3944] fix: Error Toast message content update while uploading images (#6969)
* fix: handled svg uploads

* chore: proper error message with all allowed types

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
2025-04-25 14:30:12 +05:30
Anmol Singh BhatiaandGitHub f60f57ef11 [WEB-3494] chore: platform ux copy changes (#6970)
* chore: project quick action option ux copy updated

* chore: project tour copy updated
2025-04-25 14:29:09 +05:30
Prateek ShouryaandGitHub 546217f09b [WEB-3953] fix: issue description assets upload when project id is switched (#6975) 2025-04-25 14:27:40 +05:30
Akshat JainandGitHub 97081399e8 [INFRA-133]: update API key rate limit format in variables.env (#3047)
* fix: update API key rate limit format in variables.env

* fix: update API key rate limit format in environment files
2025-04-25 14:09:48 +05:30
SangeethaandGitHub 0b71ae4625 [WEB-3947] fix: customer_count FieldError in issue list endpoint #3026 2025-04-24 20:06:55 +05:30
M. PalanikannanandGitHub 82af9f19bd fix: build fix (#3043) 2025-04-24 20:05:25 +05:30
sriram veeraghantaandGitHub e91af7d6b1 Sync: Community Changes #3041 2025-04-24 17:53:17 +05:30
sriram veeraghantaandGitHub 0a204be71d Merge branch 'preview' into sync/ce-ee 2025-04-24 17:52:52 +05:30
sriram veeraghanta 6df8323665 fix: add gzip upload support 2025-04-24 17:50:37 +05:30
sriram veeraghantaandGitHub 29c0f9130c Sync: Community Changes #3038 2025-04-24 17:45:41 +05:30
SangeethaandGitHub 77d022df71 [WEB-3919] chore: support .sql file attachment #6966 2025-04-24 17:39:16 +05:30
M. PalanikannanandGitHub 797f150ec4 [WIKI-331] fix: editor ref issues while locking/unlocking page #6965 2025-04-24 17:38:41 +05:30
sriram veeraghanta b54f54999e chore: bump up the package version 2025-04-24 17:37:50 +05:30
sangeethailango 5ad787a78b chore: state validation 2025-04-24 17:24:56 +05:30
sangeethailango 71b19c5276 Merge branch 'preview' into sync/ce-ee 2025-04-24 17:20:17 +05:30
Akshat JainandGitHub 73bef8ca8e [INFRA-129]: removed digitalocean cloudflare dns package (#3037)
* Update Caddy Cloudflare DNS module to version 8cbec3f for improved functionality in Dockerfile.ee

* fix changes

* fix changes

* fix changes
2025-04-24 16:56:50 +05:30
SangeethaandGitHub dff176be8f [WEB-3930] chore: set IN_APP as default source value for intake issue (#6963)
* chore: chore: only allow intake issues with source IN_APP to be created

* chore: set IN_APP as default intake issue
2025-04-24 16:25:15 +05:30
Akshita GoyalandGitHub f4336655d7 fix: long words in updates (#3030) 2025-04-24 16:08:30 +05:30
456d5f4d13 [MOBIL-847] chore: Implement epics feature in mobile (#3027)
* [MOBIL-845] chore: implemented stickies feature (#2822)

* chore: implemented stickies

* chore: implemented pagination for stickies

* chore: typo

* chore: filtering stickies by user

* chore: project pages bulk creation (#2500)

* [MOBIL-826] chore: handled issue creation and update if the workflow is enabled in the project (#2629)

* chore: handled issue creation and updation if the workflow is enabled in the project

* chore: add workflow transition in intake (#2630)

---------

Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>

* chore: delete bulk stickies (#2831)

* chore: import error

* [MOBIL-866] chore: implemented work-item create and update v2 mutation and handled the workflow validation (#2881)

* chore: validated the issue state and update issue state property

* chore: handled workflow create and update

* chore: handled issue creation and update V2

* chore: updated types for issue v2 mutation

* chore: reverted version check query

* chore: updated intake

* chore: updated type for start_date and end_date

* chore: Epics INIT

* chore: Epic mutations

* chore: Epic user properties

* chore: Epic mutations create, update, and delete updates

* chore: Epic Links

* fix: handled the issue workflow validation in the issue update mutation v2 (#2913)

* chore: Epic Links imports

* chore: Epic Links

* chore: epic link detail

* chore: Epic Attachments

* chore: Epic Attachments

* chore: Implemented analytics for epic detail

* chore: Epic workitems and code cleanup

* chore: Epic work items

* chore: Epic work item relations

* chore: Epic relation add

* chore: Epic sub work items

* chore: Epic sub issue count

* chore: Epic relation add updates

* conflicts: resolved merge conflicts

* chore: Epic activity updates

* chore: handled description html in epics

* typo

* chore: handled workflow create allowed in workitem prop

* chore: Resolved conversations

* chore: resolved conversations

---------

Co-authored-by: Lakhan Baheti <94619783+1akhanBaheti@users.noreply.github.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
2025-04-24 14:45:44 +05:30
sriram veeraghantaandGitHub bf889d9b5b Sync: Community Changes #3033 2025-04-24 14:22:57 +05:30
2bbaaed3ea [WEB-3918] fix: api tokens is_active (#6941)
* fix: is_active always returning true
chore: formate expired_at to iso date

* Display exact expiration timestamp for API tokens

* chore: remove conversion to iso

* chore: remove unwanted imports

* fix: added timestamp for api token expiry

* fix: handle none value in expired_at

* fix: fix: handle none value in expired_at

* chore: add type hints

* fix: refactor

---------

Co-authored-by: Alaaeddine bousselmi <alaaeddine.bousselmi@medtech.tn>
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
2025-04-24 01:28:29 +05:30
Saurabh KumarandGitHub 510c3b924d [WEB-3939] fix not allow support to update is_active field for default work item type (#3031)
* fix not allow support to update is_active field for default issue type

* add custom boolean check method
2025-04-23 19:59:00 +05:30
guru_sainathandGitHub eeff105a13 [MOBIL-879] fix: Work item not updating when assigning estimate after enabling estimate feature (#3025)
* fix: work item is not updating when we are enabling the estimate and assigning the estimate to an workitem

* chore: work item estimate issue updates

* chore: updated assignees and labels in the issue v2 mutation

* chore: updated issue labels and assignees

* chore: updated value list in get assignee and labels

* chore: typos

* chore: handled description in work items
2025-04-23 19:57:45 +05:30
Dheeraj Kumar KetireddyandGitHub b79849a2c6 [WEB-3940] Added missing epic search #3032 2025-04-23 19:56:56 +05:30
Saurabh KumarandGitHub f1f62e2263 [SILO-169] fix remove webhook from project for gitlab disconnection #3023 2025-04-23 17:27:46 +05:30
6d633e6529 [SILO-127] feat: silo | helpers for Plane OAuth in integration (#3024)
* oauth helper service

* oauth helper service + db helpers + modify plane sdk to accomodate oauth token

* fix indentation + create util for remove undefined in object

* remove await in helper methods

* workspace credential helper methods

* remove workspace_id from get workspace entity connection helper

* Get Connection Details refactor change

* fix indentation

* fix extra lines in end of file

* refactored to move integration related types in their specific files

* add application id copy button

---------

Co-authored-by: Saurabhkmr98 <saurabhkapur73@gmail.com>
Co-authored-by: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com>
2025-04-23 17:27:08 +05:30
Akshat JainandGitHub 3ed0b6b8c5 [INFRA-127] feat: enhance setup.sh for new services #3029
* Added 'silo' and 'email' services to the environment setup process.
* Commented out email service configuration setup for future implementation.
2025-04-23 16:53:30 +05:30
Prateek ShouryaandGitHub 13c6af7c95 [WEB-3930] fix: application crash on accessing intake work items (#3021) 2025-04-23 15:15:48 +05:30
sriram veeraghantaandGitHub b19a3b185e Sync: Community Changes #3028 2025-04-23 15:15:17 +05:30
M. PalanikannanandGitHub 9e230d15e5 [WIKI-325] fix: smooth cursor speed and dnd on sidebar (#3022)
* fix: trying out motion

* fix: smooth cursor delay

* fix: smooth cursor speed fixed

* fix: drag and drop fixed if nested pages is not enabled

* fix: yarn lock

* fix: lock control
2025-04-23 15:14:44 +05:30
Prateek ShouryaandGitHub b5ceb94fb2 [WEB-3930] fix: application crash on accessing intake work items (#6958) 2025-04-23 15:12:54 +05:30
guru_sainathandGitHub be1daa1b20 [MOBIL-825] chore: Implement nested pages feature (#3020)
* chore: Nested pages feature flag

* chore: Handled feature flagged for nested pages

* chore: Feture flag validation typos

* chore: removed feature flag validation

* chore: Enabled feature flag

* chore: Feature flag alidation for nested pages mutation
2025-04-22 20:24:15 +05:30
acb2101ec5 [WEB-3928] chore: cycle progress optimisations (#3003)
* Cycle progress optimizations

* Added missing import

* chore: added deleted filter records

* chore: added filter in cycle issues

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-04-22 20:19:07 +05:30
Saurabh KumarandGitHub bafddb2720 [WEB-3921] fix get issue type by id external endpoint breaking (#3014)
* fix get issue type by id external endpoint

* refactor issue type external api endpoints

* add additional checks
2025-04-22 20:17:23 +05:30
Vamsi KrishnaandGitHub 4a32b2f3d1 [WEB-3920]fix: estimate activity #3013 2025-04-22 20:16:12 +05:30
sriram veeraghantaandGitHub 331b342458 Sync: Community Changes #3018 2025-04-22 20:14:58 +05:30
sriram veeraghanta 7624ff540e fix: merge conflicts 2025-04-22 20:14:10 +05:30
alaabousselmiandGitHub feb6243065 docs: document minimum RAM requirement and issue naming conventions (#6954) 2025-04-22 18:00:19 +05:30
Anmol Singh BhatiaandGitHub 5dacba74c9 [WEB-3923] fix: applied filters list #6957 2025-04-22 17:58:16 +05:30
bIaOandGitHub 0efb0c239c feat: improve setup.sh script with better error handling and user feedback (#6758) 2025-04-22 17:56:34 +05:30
Vamsi KrishnaandGitHub c8be836d6c [WEB-3920]fix: estimate activity #6950 2025-04-22 17:45:15 +05:30
NikhilandGitHub 833b82e247 [WEB-3927] chore: add logging to support json logging (#6955)
* chore: update logging to json based logging

* chore: add logging to file
2025-04-22 17:41:58 +05:30
Akshita GoyalandGitHub 280aa7f671 [WEB-3399] fix: progress data for cycle list item #6956 2025-04-22 17:41:06 +05:30
sriram veeraghanta a0781e430d sync: canary to preview 2025-04-22 17:03:01 +05:30
M. PalanikannanandGitHub c7fb8fac0c [WIKI-323] fix: added tooltips for displaying lock and move page (#3015) 2025-04-22 14:17:00 +05:30
SangeethaandGitHub 6566532bec [WEB-3905] fix: cancelled issues on epic analytics of a initiative (#3005) 2025-04-21 20:33:21 +05:30
SangeethaandGitHub 464b132cb0 [WEB-3905] fix: incorrect epic counts in initiative list (#3007) 2025-04-21 20:31:56 +05:30
8da04a83bf [WIKI-322] fix: update page actions UI (#3011)
* fix: badges improved

* fix: revamp page embed options to ee

* fix: collaborators list and better syncing error states

* fix: handle sidebar scrolling

* fix: mutation issues

* fix: filtering pages

* fix: opening and closing of section roots

* fix: remove unused prop

* fix: rendering hooks conditionally fixed

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-04-21 20:30:50 +05:30
Henit ChobisaandGitHub 6ebc0b8e03 [SILO-160] Jira priority field breaks transformers if null #3001 2025-04-21 19:35:16 +05:30
Akshita GoyalandGitHub b6d1fad96e [WEB-3915] chore: added instance config check for elastic-search #3006 2025-04-21 17:05:03 +05:30
Vamsi KrishnaandGitHub 39d3618041 [WEB-3916]fix: customer request empty state in epics (#3004)
* fix: customer request empty state

* fix: estimate point fix
2025-04-21 17:02:30 +05:30
Dheeraj Kumar KetireddyandGitHub 9bd87b9372 [WEB-3915] fix: return is_elasticsearch_enabled value in instance api. #3002 2025-04-21 15:15:43 +05:30
Saurabh KumarandGitHub da37966562 [SILO-158] fix: add optional chaining for missing workspace in import jobs #3000 2025-04-21 12:49:25 +05:30
Henit ChobisaandGitHub 04821ee3c4 [SILO-156] fix: error handler for silo mq #2999 2025-04-18 19:39:53 +05:30
Aaryan KhandelwalandGitHub edb03f6c2a chore: workspace and teamspace page headers (#2998)
* chore: workspace and teamspace page headers

* fix: build errors
2025-04-17 23:25:14 +05:30
sriram veeraghantaandGitHub 6ba69caf1b Sync: Community Changes #2996 2025-04-17 22:15:49 +05:30
Aaryan Khandelwal a13907bf1e fix: merge conflicts resolved from preview 2025-04-17 21:32:30 +05:30
Aaryan KhandelwalandGitHub eac1115566 [WIKI-320] refactor: page header actions (#6946)
* refactor: page header actions

* chore: update toolbar component

* chore: update archived and lock badge colors

* chore: added observer to favorite control
2025-04-17 20:52:33 +05:30
sriram veeraghanta 8166a757a7 fix: removed @plane alias from ui package 2025-04-17 20:51:52 +05:30
e710c3143a [WEB-3905] fix: initiative projects progress bar (#2995)
* fix: initiative projects progress bar

* fix: initiative count

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-04-17 20:41:06 +05:30
Vamsi KrishnaandGitHub 7a317b0ce2 [WEB-3883]feat:customer requests and customers in epics detail (#2994)
* * feat: added customers and customer requests to epics detail
* chore: update empty states for customer requests and linked work items

* fix: removed console logs
2025-04-17 20:39:43 +05:30
sriram veeraghantaandGitHub a8c5d621b0 Sync: Community Changes #2993 2025-04-17 20:16:45 +05:30
sriram veeraghanta ba98f04e56 fix: merge conflicts 2025-04-17 20:13:48 +05:30
Anmol Singh BhatiaandGitHub be5d77d978 [WEB-3892] chore: link item improvements (#6944)
* chore: code refactor

* chore: global link block component added

* chore: link item improvement and code refactor
2025-04-17 20:08:53 +05:30
Anmol Singh BhatiaandGitHub 18fb3b8450 [WEB-3904] fix: sub work item fetching #6945 2025-04-17 20:07:13 +05:30
SangeethaandGitHub 9f85b004ed [WEB-3826] fix: handle None estimate_type #2991 2025-04-17 18:14:59 +05:30
a4d50e4a1e [WEB-3826] chore: estimate activities in work items and epics (#2935)
* chore: return estimate type for estimate activities

* chore: return estimate type for estimate activities in epics

* chore: update activity components for epics and work items

* chore: adde estimate formatting for notification

* fix: incorrect estimate type

* fix: remove unwanted changes

* fix: remove unwanted changes

* feat: added render for time estimate activity

* chore: time estimate text update

* feat: addded time estimate activtiy for epics

* feat: added estimate time activity

* chore: removed unwanted changes

* fix: reverted feature flag changes

* fix: handle None estimate_type

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-04-17 18:00:09 +05:30
sriram veeraghantaandGitHub e51285690b Sync: Community Changes #2990 2025-04-17 17:59:16 +05:30
sriram veeraghanta 241746f5b0 chore: lock file updates 2025-04-17 17:58:33 +05:30
sriram veeraghanta aa941547dc fix: merge conflicts 2025-04-17 17:56:32 +05:30
sriram veeraghanta ef5616905e chore: upgrade turbo repo version 2025-04-17 17:51:59 +05:30
6044edd968 [WEB-3756] feat: customers activity (#2920)
* feat: activities for adding/removing customer to a work item

* chore: updted remove work item params

* draft: customers activity

* WIP

* fix: handling customer request issue deletion

* fix: handling None customer request ID

* draft: customer activity

* refactor: customer request issue deletion
customers activity

* feat: work item activities for customer deletion

* feat: work items activities for customer request deletion

* WIP

* chore: return field for activity accordingly

* fix: types

* fix: remove field in activity

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-04-17 17:43:23 +05:30
sriram veeraghanta a2c01f9b32 fix: build errors 2025-04-17 17:42:42 +05:30
9402153792 [WEB-3754] chore: epics in dashboard (#2951)
* [WEB-3754] chore: added epics in the x-axis

* chore: added epic in x axis property

* chore: added type hints for the function

* chore: optimised the epic fetch

* chore: changed the key

---------

Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
2025-04-17 17:34:44 +05:30
6300e789db [WEB-3872]chore: header enhancement for dashboard and teamspace pages (#2973)
* chore: header enhancement for dashboard and teamspace pages

* chore: moved teamspaces pages list fetch to layout level

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2025-04-17 17:33:51 +05:30
M. PalanikannanandGitHub 08073f8472 [WIKI-317] fix: removing repeated events and smooth cursor (#2983)
* feat: add smooth cursor animation

* fix: hide cursor when editor not focused

* fix: add blinking while stationary

* fix: prosemirror codemark added for getting access to plugin state

* fix: properly show smooth cursor along with fake cursor of the inline code block

* fix: refactored config screen for multiple options

* fix: added configuration for smooth cursor behaviour

* temp: remove later, workaround in store

* fix: css of toggle

* fix: change Appearance to Preferences

* fix: project page console logs

* fix: rename variable and initialization

* fix: smooth cursor decoration hiding instead of destroying

* fix: adding isEditable before rendering smooth cursor decoration itself

* fix: smooth cursor toggle added

* fix: remove unused classes

* fix: removing toasts

* fix: build errors

* fix: keyboard navigation

* fix: slash commands rendering converted to floating ui

* fix: styles and reactiveness

* fix: add language support

* fix: isSmoothCursorEnabled has been changed

* fix: push extensions
2025-04-17 17:32:08 +05:30
Vamsi KrishnaandGitHub d1a035426a [WEB-3847]fix: work item unliked from all requests if removed from one. #2985 2025-04-17 17:31:07 +05:30
Saurabh KumarandGitHub cfcd9e15e3 [WEB-3889] add refresh token support oauth + app bot username fix (#2987)
* add refresh token support oauth + app bot username fix

* add workspace slug to bot username
2025-04-17 17:30:38 +05:30
Aaryan KhandelwalandGitHub 0b4c227fc7 [SILO-155] chore: resolve octokit types package version to 13.8.0 (#2988)
* chore: resolve octokit types package

* chore: update lockfile
2025-04-17 17:30:18 +05:30
sriram veeraghantaandGitHub a940d0d6b5 Sync: Community Changes #2989 2025-04-17 17:29:57 +05:30
sriram veeraghanta e63a86fb4a fix: merge conflicts 2025-04-17 17:29:27 +05:30
SangeethaandGitHub aeb41e603c [WEB-3826] feat: estimate activitites #6937 2025-04-17 17:16:57 +05:30
Vamsi KrishnaandGitHub 55eea1a8b7 [WEB-3872]chore: header switcher enhancements (#6935)
* * chore: alignment and size for header
* fix: switcher close on click

* chore: moved acces icon component to components
2025-04-17 17:15:53 +05:30
Aaryan KhandelwalandGitHub fa87ff14b7 [WIKI-319] chore: remove bottom border when toolbar is hidden (#6943)
* chore: remove border when toolbar is hidden

* chore: add stricter conditions
2025-04-17 17:13:21 +05:30
khalilzitouni2058andGitHub 7d91b5f8df [WEB-3892] feat: add icon to Quicklinks (#6927)
* [feature]: add icon to Quicklinks

* fix: moving  getIconForLink to utils packages
2025-04-17 17:11:57 +05:30
Anmol Singh BhatiaandGitHub 3ce40dfa2f [WIKI-316] fix: list item overflow #6942 2025-04-17 17:08:13 +05:30
sriram veeraghantaandGitHub c151dec0c2 Sync: Community Changes #2986 2025-04-17 15:41:50 +05:30
Anmol Singh BhatiaandGitHub f65253c994 [WEB-2561] chore: favicon icon updated #6938 (#6940)
* chore: favicon icon updated

* chore: code refactor
2025-04-17 15:38:42 +05:30
474eb44c44 [WIKI-313] fix: image full screen modal portal (#2984)
* chore: image full screen modal portal

* fix: user profile regressino

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
2025-04-17 15:38:20 +05:30
sriram veeraghantaandGitHub 7c5f724919 Sync: Community Changes #2982 2025-04-16 20:39:21 +05:30
Henit ChobisaandGitHub f484f3babe [SILO-152] fix: remove default on flags (#2981)
* fix: remove default on flags

* fix: slack integration
2025-04-16 20:34:37 +05:30
Anmol Singh BhatiaandGitHub 97fcfaa653 [WEB-2561] chore: favicon icon updated #6938 2025-04-16 20:34:12 +05:30
54228f9801 chore: added events in teamspace pages (#2970)
* chore: added events in teamspace pages

* update the timestamp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: code cleanup

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-16 19:58:58 +05:30
Dheeraj Kumar KetireddyandGitHub 976ae2ffac [WEB-3882] Double check the user before adding to project member #2980 2025-04-16 18:52:37 +05:30
M. PalanikannanandGitHub f7414e8e65 regression: live base url (#2979) 2025-04-16 18:23:25 +05:30
M. PalanikannanandGitHub 1c7573b357 fix: nested pages minor fixes (#2974)
* fix: nested pages transitions fixed

* fix: close preview on keydown

* fix: title updated

* fix: redis broadcasting and ui changes

* fix: crashing redis and refactoring title and yarn lock
2025-04-16 17:16:31 +05:30
Saurabh KumarandGitHub b43d87e551 [WEB-3882] Fix signal and celery task for add app bot in project (#2976)
* fix signal and celery task for add app bot in project + installed apps definition using status

* remove the semicolon
2025-04-16 17:16:06 +05:30
Dheeraj Kumar KetireddyandGitHub c49c01ffc1 [WEB-3878] fix: oauth ratelimit (#2975)
* [WEB-3878] Fixed Oauth token rate limit

* added missing type hints
2025-04-16 14:50:41 +05:30
Vamsi KrishnaandGitHub 2cc6a45ce1 [WEB-3874] fix: teamspace page loading issue #2971 2025-04-16 13:20:44 +05:30
Prateek ShouryaandGitHub 25e3f50a53 fix: build error due to missing project state background color (#2972) 2025-04-16 13:19:00 +05:30
c6f01d5d91 [WEB-3858] chore: project state icon enhancements (#2960)
* [DO NOT PUSH] chore: disable feature flag check

* disable feature flag check

* fix: temp fix

* chore: default project state icon color updated

* chore: project state icon updated

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-04-16 03:19:15 +05:30
sriram veeraghantaandGitHub 439d3103b9 Sync: Community Changes #2969 2025-04-15 19:44:40 +05:30
Anmol Singh BhatiaandGitHub 0e1ebff978 [WEB-3871] fix: sidebar label property #6934 2025-04-15 19:42:02 +05:30
sriram veeraghanta 4e4335503a fix: build errors 2025-04-15 18:36:10 +05:30
sriram veeraghantaandGitHub 13235f454b Sync: Community Changes #2968 2025-04-15 17:55:22 +05:30
sriram veeraghanta 29db39a287 fix: merge conflicts 2025-04-15 17:54:35 +05:30
Anmol Singh BhatiaandGitHub 642dabfe35 [WEB-3870] fix: sidebar comment scroll #6932 2025-04-15 17:47:22 +05:30
Aaryan KhandelwalandGitHub 48557cb670 [WEB-3868] fix: issue detail widget modals #6933 2025-04-15 17:46:45 +05:30
Bavisetti NarayanandGitHub 608da1465c [WEB-3860] chore: added deleted filter in the grouper (#6931)
* chore: added deleted filter in the grouper

* chore: added type hints for the function
2025-04-15 17:42:45 +05:30
Aaryan KhandelwalandGitHub 831ee1fdb0 [WIKI-309] fix: editor container width #2963 2025-04-15 17:10:59 +05:30
Anmol Singh BhatiaandGitHub 8732134017 [WEB-3855] feat: turkish translation updated (#2959)
* feat: turkish translation updated

* chore: code refactor
2025-04-15 17:07:05 +05:30
Saurabh KumarandGitHub 398f28ed7e [WEB-3869] chore: modify oauth url prefix to auth/o (#2964)
* modify oauth url prefix to auth/o

* add additional_params for app_installation_id
2025-04-15 17:04:15 +05:30
sriram veeraghantaandGitHub 5a10b5de21 Sync: Community Changes #2965 2025-04-15 16:38:10 +05:30
sriram veeraghantaandGitHub de29cccaba Merge branch 'preview' into sync/ce-ee 2025-04-15 16:37:41 +05:30
dbcc7bedb4 [WEB-3855] feat: Turkish language support (#6922)
* add Turkish language support (#6874)

* add turkish language support

* fix indentation

* chore: extended core translation added

* chore: code refactor

---------

Co-authored-by: Farahat Abdrabouh <88924701+fasdjkherig@users.noreply.github.com>
2025-04-15 16:36:02 +05:30
Vamsi KrishnaandGitHub c401b26dd4 [WEB-3856]chore: refactor work item activity (#6923)
* chore: refactor work item activity

* chore: added estimate render for notifications
2025-04-15 16:35:28 +05:30
Aaryan KhandelwalandGitHub 8118627f61 fix: epic links (#2962) 2025-04-15 14:23:13 +05:30
sriram veeraghantaandGitHub 1b4f4634ff Sync: Community Changes #2961 2025-04-15 13:48:30 +05:30
Aaryan KhandelwalandGitHub a4bca0c39c [WEB-3859] fix: work item links #6930 2025-04-15 13:46:29 +05:30
M. PalanikannanandGitHub c56fb07851 fix: opening sidebar when page opens (#2954)
* fix: opening sidebar when page opens

* fix: removing console logs, loading states and adding subtler animations

* fix: add syncing animation and fix showing collaborators
2025-04-15 10:04:11 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0cf3777adc chore(deps): bump golang.org/x/crypto (#2958)
Bumps the go_modules group with 1 update in the /monitor/lib/feat_flag directory: [golang.org/x/crypto](https://github.com/golang/crypto).


Updates `golang.org/x/crypto` from 0.31.0 to 0.35.0
- [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.35.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.35.0
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 01:26:50 +05:30
Saurabh KumarandGitHub 6347478bef [OAuth] fix dark mode UI issues for OAuth + oauth endpoint fix (#2956)
* fix dark mode UI issues for OAuth + oauth endpoint fix

* remove dark: prefix where not required
2025-04-14 17:49:02 +05:30
sriram veeraghantaandGitHub 943080d69c Sync: Community Changes #2957 2025-04-14 17:47:56 +05:30
sriram veeraghantaandGitHub 41d8a52cd3 Merge branch 'preview' into sync/ce-ee 2025-04-14 17:47:28 +05:30
Saurabh KumarandGitHub 24899887b2 chore: Add workspace slug to should render setting link method (#6886)
* add workspace slug to setting link function

* add params in the function
2025-04-14 17:41:47 +05:30
Saurabh KumarandGitHub bda896d75c [OAUTH] chore: fix dark mode UI issues #2955 2025-04-14 13:37:00 +05:30
NikhilandGitHub 2aa7411aa1 chore: remove the duplicate migration (#2953) 2025-04-12 22:54:41 +05:30
sriram veeraghanta 0e670f0e60 fix: updating tsup version 2025-04-12 21:56:06 +05:30
b83a442a2b [WIKI-212] feat: nested pages (#2599)
* chore: workspace pages

* chore: moved page icons and ui added

* chore: deploy board changes

* fix: workspace sub page count

* fix: added proper creation and redirection in workspace pages

* fix: name of var

* fix: subpages

* fix: fetch subpages in workspace pages

* fix root node bug

* update recursion with loop

* fix: deletion plugin handler for sub pages added

* fix: handle multiple sub page deletions

* fix: handle multiple delete of deleted pages

* fix: collaboration cursor color

* chore: wiki sidebar hierarchy

* fix: private and archived pages hierarchy

* fix: ui, clicking and displaying deleted pages

* fix: make the server code more extendable

* fix: better handle real time events

* fix: handle recursively opening the subpages

* fix: better animations while unfurling the nested pages

* fix: added breadcrumbs ui for workspace pages

* fix: responsiveness of editor toolbar

* fix: loading document and storing only when there's content

* fix: preview for workspace pages fixed

* feat: realtime title updates

* feat: added live page collaborators

* fix: fetch details on focus and got back old updates

* fix: move page workflow fixed

* fix: archived at

* fix: build errors

* fix: build

* fix: build errors

* fix: revert yarn lock

* fix: build

* fix: more build errors

* fix: saved status for live docs

* fix: migration changes

* fix: collaborators on click scroll added

* fix: restrict access in project list view and workspace sidebar view

* fix: public parent pages unfurl as well

* fix: title sync handled

* fix: archive modal removed and version history added

* fix: modal core logo for restricted page fixed

* fix: colors

* fix: patch ux copy

* fix: list item icon

* fix: page link and embed component added to space

* fix: nested traversing added for replacing embeds

* fix: responsiveness and delete redirection

* fix: build issues

* fix: added loader back

* fix: unpublish project page

* fix: publish in workspace page

* fix: show on when editable in title editor

* fix: upublish workspace paegs

* fix: random colors fix

* fix: owned by added

* fix: permission layaer changes

* fix: fetch parent pages and update store in project pages

* fix: title editor backspace, enter, tab and arrow keys handled

* fix: sequential async processing for tasks on different documents

* chore: move pages inetrnally

* chore: wiki sidebar dnd

* chore: dnd patch request added

* fix: changed params

* chore: update the parent page id

* refactor: dnd code

* chore: remove wrong rule

* fallback: removing nodes if not in subpages endpoint

* fix: remove console logs and names

* fix: remove more console logs and ui fixes

* fix: editor css for nested pages in list

* fix: deleted at redirection

* patch fix: docker version

* fix: additional stuff

* fix: removal of drop cursor

* style: sidebar dnd ui

* fix drop cursor

* chore: changed the access controls

* fix: realtime events for moving pages

* chore: nested pages delete mutations for workspace and project level

* chore: updated deleted_at in issue detail types

* fix: logger and added working global error handling with sentry

* fix: tsup hot reloading

* fix: dividing server code

* fix: better error handling

* fix: file structure for error handling

* fix: better error handling for redis client

* fix: errors and imports

* fix: handlers

* chore: updated nested archived, restore and delete pages

* chore: updated is_description_empty in the page

* chore: broadcasting the nested page mutations

* fix: stop event prop on error

* chore: current page archive, unarchive and delete

* chore: wiki nested list

* chore: bulk delete pages =

* fix: is_description_empty added for mobile

* chore: addes is_description_empty in page types

* fix: added title sync capabilities along with migration

* fix: navigation between title and main editor made seamless

* fix: seperated decorators into it's own package

* chore: added title of page in binary request

* fix: title saving logic with debounce and abortion handled neatly

* fix: not shutting down the app for any reason

* chore: restructuring project-page methods, transformers and handlers

* fix: title updation with new structure

* fix: extensions index ts cleaned up

* fix: syncing title using mobx

* revert: profile page changes

* fix: reverting back extra changes

* chore: remove saved saving state

* fix: getting back old title to avoid merge conflicts

* fix: redis process improved a lot

* fix: nested pages endpoints

* fix: cleaning up decorators and fixing live server

* feat: express decorators for rest apis and websocket

* Merge branch 'fix/live-server-restructuring' into fix/live-server-restructuring

* feat: express decorators for rest apis and websocket

* fix: added package dependency

* fix: sync agent up and running

* fix: refactor decorators

* fix: add missing packages

* fix: exit with error 1

* fix: error factory types and document controller error handling

* fix: added zod validation

* chore: remove js extension

* fix: version history shows correct data

* chore: removed parent is null in workspace page query

* feat: added ability to skip archiving before deleting nodes

* fix: title position

* fix: syncing changes

* fix: build errors

* fix: added feature flagging for nested pages

* fix: added feature flagging

* fix: live build stop

* fix: drag handle

* chore: added new endpoint to restore page

* fix: title sync and animations

* fix: title real time sync

* chore: restore the deleted version

* fix: moving around pages

* fix: registering handlers made simplified

* fix: common initializer

* chore: remove services

* fix: reverse changes

* fix: page restoration

* changed from datetime to timezone

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: removing code duplicacy

* fix: getconfig removed

* chore: remove repetitive code

* fix: type errors

* fix: all context errors

* fix: removed document registry

* chore :removed unuesed config

* fix: move server agent to ee

* fix: broadcast controller fixed

* fix: removed dead code

* fix: socket connection getting disconnected

* fix:realtime events and their types

* fix: realtime events made robust

* fix: restore operation

* fix: title sync and archiving/etc in project page

* chore: updated the version

* chore: massively improved typescript inference for realtime events

* chore: added deleted page ids in data

* fix: types pro max

* fix: modified the page ids

* fix: change component name for nested page

* fix: realtime events duplication

* fix: added logs

* fix: added common place to differentiate nested pages behaviour

* fix: added new flagging

* fix: remove page link references

* fix: remove page link references

* fix: feature flagging

* fix: feature flagging

* fix: added back missing bits

* chore: added the logic to restored the moved page

* fix: breadcrumbs loading fixed

* chore: added feature flag

* fix: transforming headers

* fix: page updates

* fix: editor body refactored

* chore: sorted the pages parent order

* fix: duplicate page

* fix: common realtime events for all pages

* fix: create/fetch page details

* fix: better animations and creation of embeds

* fix: better loadin animations and better deletion of nodes

* fix: better transitions

* fix: added event customization

* fix: logo props showing wrong data

* fix: reverted back changes

* fix: workspace store searching

* fix: console logs

* fix: build errors

* fix: more build errors

* fix: revert changes

* fix: remove not needed code

* fix: add access denied to non upgraded users

---------

Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: gurusinath <gurusainath007@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-12 16:28:36 +05:30
3c834b9574 [WEB-2964] Oauth Provider implementation (#2937)
* [WEB-3472] Added django-oauth-toolkit and overridden models to add uuid as PK

* added workspace to oauth application

* oauth application view

* fix application workspace related name

* Added soft deletion functionality to Application

* Added oauth middleware and authentication to BaseAPIView

* chore: slug and audit changes + regenerate secret endpoint

* add check oauth app slug exists endpoint

* Added permission to check if the application has workspace access

* fix: check slug endpoint

* chore: model changes for app installation flow

* chore: model changes for app installation + additional endpoints

* model file format

* add application install endpoint

* fix issues

* Migrations update

* Update permission to check for workspace installation

* fix api issues + small model change

* OAuth auth code flow changes + model changes for create app + API endpoints improvement

* Updated migrations

* oauth model changes for bot to be in app install

* Added throttle classes for APIs when authenticated with OAuth

* Updated migrations

* Added new fields

* marketplace app creation UI store + types + app create/edit UI

* add new asset type for marketplace app logo and description

* Updated asset entities for OAuth Application

* Added rate limiting to token and oauth code views

* Moved Application views into ee/app

* Removed workspace_application FK from Token and added grant_type field. Updated the token generation logic to associate the token with the app_bot user

* add application list screen + edit page

* Code cleanup - removed unncessary redundant code

* api fixes + app create e2e flow UI

* remove try/except + permission class add + workspace dependency fix

* fix server breaking

* replace workspace with workspace slug in endpoints

* add webhook url in applications model

* edit and list page API integrations

* fix build issue

* Updated migrations

* add installation status + manage token generation via installation id + rename installation table

* fix issues + update restricted workspace slugs

* Migration update

* Oauth consent flow UI + backend changes + translations

* add skip authorization support for app create api

* Ratelimiting changes

* Added type hints

* [WEB-3760] Add app bot as a workspace and project member. Auto add app bot user whenever a project is created

* Rate limit fixes. Better check for template response

* fix CORS issue and remove redirection from web

* fix CORS issue and remove redirection from web

* [OAUTH] add feature flag for oauth (#2890)

* add feature flag for oauth

* fix build issue

* [OAUTH] add support for multiple grant type + fix token endpoint (#2898)

* add support for multiple grant type + fix token endpoint

* fix grant type indentation

* Change oauth url prefix (#2906)

* fix workspace installation breaking (#2907)

* fix oauth page restrict due to workspace slug (#2911)

* fix oauth auth code flow + optional pkce support

* add grant type check for token user modification

* change the url pattern

---------

Co-authored-by: Saurabhkmr98 <saurabhkapur73@gmail.com>
Co-authored-by: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com>
2025-04-12 16:25:28 +05:30
sriram veeraghantaandGitHub e2a78af9c2 Sync: Community Changes #2952 2025-04-12 16:25:01 +05:30
sriram veeraghanta c6953ff878 fix: db modeling changes in pages 2025-04-12 16:22:13 +05:30
ea4e517e59 [DISCO-32] feat: Billing and Plans UI / UX improvements (#2874)
* [DISCO-32] feat: Billing and Plans UI / UX improvements and introduced enterprise plan

* chore: move PlansComparison & PlanFeatureDetail components to core

* chore: community billing and plans settings page implementation

* chore: move FreePlanCard, BasePaidPlanCard and TalkToSalesCard components to core

* chore: code refactoring

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: refactor paid plan upgrade modal and billing page for community edition

* chore: ux copy updated

* chore: minor updates for consistency between community and commercial editions

* chore: minor improvements for community edition consistency

* fix: build errors

---------

Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
2025-04-11 20:52:17 +05:30
sriram veeraghantaandGitHub 9278fefe25 Sync: Community Changes #2950 2025-04-11 20:42:03 +05:30
sriram veeraghanta 0bd66c4410 fix: merge conflicts 2025-04-11 20:41:31 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
89d33dab4f chore(deps-dev): bump the npm_and_yarn group across 2 directories with 1 update (#2949)
Bumps the npm_and_yarn group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /packages/mobile-editor directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.2.5 to 6.2.6
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

Updates `vite` from 6.2.5 to 6.2.6
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 20:38:12 +05:30
Prateek ShouryaandGitHub 06be9ab81b [WEB-3854] feat: billing and plans new design (#6920)
* [WEB-3854] feat: billing and plans new design

* chore: add missing styles
2025-04-11 20:37:25 +05:30
sriram veeraghanta fa0b52a4d7 fix: yarn lock 2025-04-11 20:29:17 +05:30
Akshita GoyalandGitHub fb22eea98b [WEB-3849] Chore: intake source enhancements (#2945) 2025-04-11 19:54:03 +05:30
sriram veeraghantaandGitHub 0b653e0a17 Sync: Community Changes #2948 2025-04-11 19:51:18 +05:30
Aaryan KhandelwalandGitHub 6649525209 fix: update logo update handler (#2946) 2025-04-11 19:50:40 +05:30
Akshita GoyalandGitHub ed8d00acb1 [WEB-3849] chore: added intake source in the list (#6919)
* chore: added intake source in the list

* fix: refactor
2025-04-11 19:49:35 +05:30
Akshat JainandGitHub 1c24731283 [INFRA-118] fix: update xcaddy build to include specific version for cloudflare DNS #2941 2025-04-11 19:15:43 +05:30
Henit ChobisaandGitHub a5a1e5949c [SILO-136] fix: made redis instance singleton for being used multiple places (#2885)
* fix: made redis instance singleton for being used multiple places

* fix: remove disconnection on shutdown

* fix: consumers throw error in start

* fix: remove extra methods and connection status

* fix: remove graceful shutdown
2025-04-11 18:59:30 +05:30
Henit ChobisaandGitHub 0c6d4610bf [SILO-137] fix: refactored pull-request handler into common behaviour (#2802)
* fix: refactored pull-request handler into common behaviour

* fix: refactored gitlab integration to use common pr behaviour

* chore: added test to support the pull request behaviour

* chore: transformed to composition from inheritance

* fix: PR comments

* fix: extended type annotations and behaviour
2025-04-11 18:58:52 +05:30
Vamsi KrishnaandGitHub cfec029177 [WEB-3136]fix: excluding guest users from space app members #2943 2025-04-11 18:10:09 +05:30
Vamsi KrishnaandGitHub 4e6e62ee0d [WEB-3832]fix: assignees filters #2942 2025-04-11 18:09:31 +05:30
sriram veeraghantaandGitHub f29f96e0d0 Sync: Community Changes #2944 2025-04-11 18:08:43 +05:30
sriram veeraghantaandGitHub 520daa7cbd Merge branch 'preview' into sync/ce-ee 2025-04-11 18:08:13 +05:30
Aaryan KhandelwalandGitHub 915e374485 [WIKI-307]chore: update page icon placement #6916 2025-04-11 18:07:03 +05:30
Vamsi KrishnaandGitHub 1d5b93cebd [WEB-3853] fix: untitled page name issue #6918 2025-04-11 18:06:26 +05:30
sriram veeraghanta df65b8c34a fix: adding request logger middleware 2025-04-11 17:59:19 +05:30
pushya22andGitHub f196272484 Sync: Community Changes #2940
Sync: Community Changes
2025-04-11 14:02:35 +05:30
Akshita GoyalandGitHub 4c688b1d25 [WEB-3529] fix: fixed the comment create box position in common comments component (#6915) 2025-04-11 14:00:54 +05:30
63f8a46c9e [WEB-3816] feat: progress status count for initiatives (#2929)
* feat: total and completed issues of initiatives

* chore: total and completed issue count for initiative update
'

* fix: progress for issues

* fix: refactor

* chore: removed unused select_related

---------

Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
2025-04-11 13:24:57 +05:30
Akshita GoyalandGitHub 29608c3be1 [WEB-3529] Fix comments create position (#2939)
* fix: dynamically placed comments creation box

* fix: scroll into view added

* fix: build issue
2025-04-11 13:18:02 +05:30
2f61ac657d [WEB-3767] chore: epic description version history (#2927)
* chore: epic version history

* chore: epics version history

* chore: handle undefined created_at

* chore: handle undefined date

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-04-11 02:01:11 +05:30
Vamsi KrishnaandGitHub 502b54b19c [WEB-3840]chore: updated language translation for project templates (#2930)
* chore: updated language translation for project templates

* chore: updated translation key.
2025-04-11 01:59:30 +05:30
sriram veeraghantaandGitHub 96848dce25 Sync: Community Changes #2938 2025-04-11 01:56:47 +05:30
sriram veeraghantaandGitHub 2d9a508cb1 Merge branch 'preview' into sync/ce-ee 2025-04-11 01:55:58 +05:30
NikhilandGitHub bfc6ed839f fix: uuid validation, status and webhook errors (#6896)
* fix: uuid validation and function parameter handling for external apis

* chore: update status 410 Gone to 409 conflicts

* chore: add webhook trigger for issue created through apis

* chore: remove pks from post

* chore: remove issue id from module post
2025-04-11 01:47:00 +05:30
Surya PrashanthandGitHub b68396a4b2 [WEB-3831] chore: add validation for project_id in cycle serializer #6908 2025-04-11 01:42:53 +05:30
Vamsi KrishnaandGitHub b4fc715aba [WEB-3826] fix: estimate dropdown formatting (#6906)
* * fix: time conversion for estimate dropdown in browse
* chore: updated puncutations for estimates.

* chore: estimate activiy formatting

* chore: estimate activity refactor
2025-04-11 01:41:43 +05:30
Anmol Singh BhatiaandGitHub 33a1b916cb [WEB-3837] fix: mutation of child work item added via Cmd+K with parent context #6910 2025-04-11 01:40:29 +05:30
Akshita GoyalandGitHub 2818310619 [WEB-3529] fix: comment reset + edit comment font size + comment box position (#6909)
* fix: comment reset + edit comment font size

* fix: dynamically setting the position of the comment box

* fix: refactor

* fix: nomenclature
2025-04-11 01:40:05 +05:30
Anmol Singh BhatiaandGitHub 882520b3c7 [WEB-3841] fix: create issue modal now correctly uses current project context #6911 2025-04-11 01:35:27 +05:30
NikhilandGitHub 4b6f0ca664 [PLANE-API-2YA] fix: intake form rate limit anchor #2936
Sentry error fix
2025-04-10 19:28:20 +05:30
pushya22andGitHub 01976234ae Sync: Community Changes #2932
Sync: Community Changes
2025-04-10 16:24:10 +05:30
NikhilandGitHub d520dd51c2 [WEB-3843] chore: update intake setting creation to transaction (#2931) 2025-04-10 16:23:10 +05:30
20132e7544 [WEB-3839] fix: peek overview description version history (#6912)
* fix: handle undefined created_at

* chore: add created_by, updated_by updated_at and created_at fields in
relation apis

* chore: handle undefined date

* fix: project typo

---------

Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
2025-04-10 16:22:26 +05:30
Vamsi KrishnaandGitHub 0446fb45bf [WEB-3835]fix: time estimates custom template #2928 2025-04-10 14:08:49 +05:30
Vamsi KrishnaandGitHub 8a02801a2e [WEB-3833]fix: initiative header switcher (#2925) 2025-04-10 13:16:37 +05:30
Akshita GoyalandGitHub 281c150508 [WEB-3811] Fix cycle charts render issue (#2926) 2025-04-10 13:11:34 +05:30
Akshita GoyalandGitHub 477fb95796 [WEB-3817] fix: initiative css (#2919) 2025-04-09 20:38:55 +05:30
pushya22andGitHub 3a2b3e2c71 Sync: Community Changes #2921 2025-04-09 20:36:27 +05:30
Aaryan KhandelwalandGitHub 0ae57b49d2 [WEB-3829]fix: update workspace store action (#6905) 2025-04-09 20:31:52 +05:30
pushya22andGitHub ec2e4cf591 Sync: Community Changes #2918
Sync: Community Changes
2025-04-09 20:09:40 +05:30
M. PalanikannanandGitHub d347269afb [WEB-3819] fix: images now restore in read only mode as well (#6904) 2025-04-09 20:06:15 +05:30
Aaryan KhandelwalandGitHub a3fd616ec4 [WEB-3827] refactor: work item widget components (#6902) 2025-04-09 19:58:16 +05:30
Akshita GoyalandGitHub 9eeff158d5 [WEB-3811] fix: cycle charts issues (#6901) 2025-04-09 19:57:47 +05:30
Aaryan KhandelwalandGitHub ef20b5814e [WEB-3792, 3823] fix: intake form version history (#6898)
* chore: intake form version history

* fix: remove autofocus from the copy markdown button

* chore: add logic to display deactivated user
2025-04-09 19:56:59 +05:30
Vamsi KrishnaandGitHub 14914e8716 [WEB-3759]chore: updated module and pages detail header (#6903)
* chore: added panel collapse and quick action menu for module detail header

* fix: updated pages header swithcer
2025-04-09 19:36:15 +05:30
Vamsi KrishnaandGitHub b738e39a4a [WEB-3798]chore: updated language support to estimates (#6900) 2025-04-09 19:34:01 +05:30
sriram veeraghantaandGitHub 45e25ce18b release: v0.25.3 #6788 2025-03-21 17:26:55 +05:30
sriram veeraghantaandGitHub 2140b53136 release: v1.8.3 (#2764) 2025-03-19 21:03:51 +05:30
Akshat Jainandsriram veeraghanta 7d170ce467 fix: add package xmlsec-dev in apiserver docker image (#2718)
* add `xmlsec-dev` package

* test new image

* fix changes
2025-03-19 19:45:17 +05:30
Aaryan Khandelwalandsriram veeraghanta dc92ed5c62 chore: update year range in the calendar component (#6781) 2025-03-19 19:10:19 +05:30
Akshat Jainandsriram veeraghanta 1f6e55ea7e feat: add portainer compose file for commercial edition (#2759) 2025-03-19 18:59:08 +05:30
Akshat Jainandsriram veeraghanta c9e827b4dd fix: rename docker images of admin and web (#2739) 2025-03-19 18:59:08 +05:30
Akshat Jainandsriram veeraghanta 2e78ed054b fix: remove DATABASE_URL and REDIS_URL default value frplme variables env file (#2729) 2025-03-19 18:59:08 +05:30
Akshat Jainandsriram veeraghanta b86d0eceb9 chore: add envs in commercial docker compose files (#2698) 2025-03-19 18:59:08 +05:30
Akshat Jainandsriram veeraghanta 654f851685 chore: add env MINIO_ENDPOINT_SSL in docker compose file (#6731) 2025-03-19 18:59:08 +05:30
Nikhilandsriram veeraghanta 780943027a chore: make api rate limit configurable through environment variable (#6730) 2025-03-19 18:59:04 +05:30
Akshat Jainandsriram veeraghanta 151b03288c chore: Add env for handling uploads SSL Termination (#6722) 2025-03-19 18:58:25 +05:30
Anmol Singh Bhatiaandsriram veeraghanta d87b56676f [WEB-3134] fix: plane logo rendering issue in safari (#6728) 2025-03-19 18:48:11 +05:30
Anmol Singh Bhatiaandsriram veeraghanta 1041453522 [WEB-3481] fix: firefox browser text area (#2690) 2025-03-19 18:48:11 +05:30
sriram veeraghantaandGitHub a76d646e58 release: v1.8.2 (#2650) 2025-03-11 17:23:14 +05:30
sriram veeraghantaandGitHub 4d88dbaf49 release: v0.25.2 (#6736) 2025-03-11 16:01:20 +05:30
+4 e61ff879c4 release: v0.25.1
* fix: issue activity for project id validation (#6668)

* fix: work item attachment count mutation (#6670)

* updated the action to modify the release build assets (#6669)

* feat: russian translation (#6666)

* chore: ru translation updated (#6672)

* fix: state drop down refactor

* fix: intake work item creation refactor

* fix: cleanup for deprecated functions

* fix: date range picker on cycles and modules list (#6676)

* fix: Handled workspace switcher closing on click

* fix: replaced date range picker with date picker at some places

* chore: add common translation keys (#6688)

* chore: add missing translation keys

* chore: add russian translation keys

* fix: issue activity task (#6689)

* changed github workflow action ubuntu version to `ubuntu-22.04` (#6683)

* chore: update russian translation (#6682)

* chore: update russian translation

* chore: rename issues to work items in russian translation

* [PE-275] chore: editor line spacing variables (#6678)

* chore: variable editor line spacing

* chore: variable list spacing

---------

Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>

* [WEB-3475] fix: cycle dates dropdown (#6690)

* fix: Handled workspace switcher closing on click

* fix: Cycle date picker

* fix: Made onSelect optional in range range component

* fix: module date picker (#6691)

* fix: Handled workspace switcher closing on click

* fix: reverted module date picker changes

* chore: extended sidebar improvement (#6693)

* feat: italian translations (#6692)

* Create translations.json - ITALIAN translation (#6667)

* chore: italian translation updated

* feat: italian translation added

* fix: module end date translation

---------

Co-authored-by: Nicolas Bossi <nicolasbossi@gmail.com>
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>

* fix: attachment item created by (#6695)

* fix: module flicker issue on property updation (#6699)

* [WEB-3477] fix: mutation issue on moving work items for a manually ended cycle (#6696)

* fix: package version update

* fix: esbuild version fix

* fix: package license repliation

* [WEB-3488] improvement: assignee validation for work item creation (#6701)

* fix: work item assignee update validation (#6704)

---------

Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com>
Co-authored-by: Manish Gupta <59428681+mguptahub@users.noreply.github.com>
Co-authored-by: Nikita Mitasov <32384814+ch4og@users.noreply.github.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Co-authored-by: Akshat Jain <akshatjain9782@gmail.com>
Co-authored-by: Lakhan Baheti <94619783+1akhanBaheti@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Nicolas Bossi <nicolasbossi@gmail.com>
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
2025-03-05 19:15:33 +05:30
sriram veeraghantaandGitHub adeb7d977d Merge pull request #6665 from makeplane/canary
fix: package version update
2025-02-24 20:40:25 +05:30
sriram veeraghantaandGitHub 37de71cd49 Merge pull request #2584 from makeplane/canary
release: v1.8.1-minor
2025-02-21 22:17:17 +05:30
sriram veeraghantaandGitHub 9c499949b2 Merge pull request #2569 from makeplane/canary
release: v1.8.1
2025-02-21 20:59:06 +05:30
sriram veeraghantaandGitHub cdc92efbcc Merge pull request #2434 from makeplane/canary
release: v1.8.0
2025-02-13 20:19:21 +05:30
sriram veeraghantaandGitHub a7736002c7 Merge pull request #2307 from makeplane/canary
release: v1.7.0
2025-01-27 17:22:26 +05:30
sriram veeraghantaandGitHub c6da310463 Merge pull request #2279 from makeplane/canary
release: v1.7.0
2025-01-27 16:13:50 +05:30
sriram veeraghantaandGitHub 8986fc4302 Merge pull request #1895 from makeplane/canary
release: v1.6.0
2024-12-10 19:10:58 +05:30
sriram veeraghantaandGitHub cef2b45d25 Merge pull request #1824 from makeplane/canary
release: v1.5.1
2024-11-28 15:40:11 +05:30
13082 changed files with 673178 additions and 358869 deletions
+47 -1
View File
@@ -2,6 +2,7 @@
*.pyc
.env
venv
.venv
node_modules/
**/node_modules/
npm-debug.log
@@ -14,4 +15,49 @@ build/
out/
**/out/
dist/
**/dist/
**/dist/
# Logs
npm-debug.log*
pnpm-debug.log*
.pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
# OS junk
.DS_Store
Thumbs.db
# Editor settings
.vscode
.idea
# Coverage and test output
coverage/
**/coverage/
*.lcov
.junit/
test-results/
# Caches and build artifacts
.cache/
**/.cache/
storybook-static/
*storybook.log
*.tsbuildinfo
# Local env and secrets
.env.local
.env.development.local
.env.test.local
.env.production.local
.secrets
tmp/
temp/
# Database/cache dumps
*.rdb
*.rdb.gz
# Misc
*.pem
*.key
+20 -5
View File
@@ -15,12 +15,15 @@ RABBITMQ_USER="plane"
RABBITMQ_PASSWORD="plane"
RABBITMQ_VHOST="plane"
LISTEN_HTTP_PORT=80
LISTEN_HTTPS_PORT=443
# AWS Settings
AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the nginx.conf for uploads if using minio setup
# Changing this requires change in the proxy config for uploads if using minio setup
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
@@ -37,8 +40,21 @@ DOCKERIZED=1 # deprecated
# set to 1 If using the pre-configured minio setup
USE_MINIO=1
# Nginx Configuration
NGINX_PORT=80
# If SSL Cert to be generated, set CERT_EMAIl="email <EMAIL_ADDRESS>"
CERT_ACME_CA=https://acme-v02.api.letsencrypt.org/directory
TRUSTED_PROXIES=0.0.0.0/0
SITE_ADDRESS=:80
CERT_EMAIL=
# For DNS Challenge based certificate generation, set the CERT_ACME_DNS, CERT_EMAIL
# CERT_ACME_DNS="acme_dns <CERT_DNS_PROVIDER> <CERT_DNS_PROVIDER_API_KEY>"
CERT_ACME_DNS=
# Force HTTPS for handling SSL Termination
MINIO_ENDPOINT_SSL=0
# Imports Config
SILO_BASE_URL=
# Force HTTPS for handling SSL Termination
MINIO_ENDPOINT_SSL=0
@@ -46,8 +62,7 @@ MINIO_ENDPOINT_SSL=0
# API key rate limit
API_KEY_RATE_LIMIT="60/minute"
# Imports Config
SILO_BASE_URL=
# Mongo DB
MONGO_DB_URL="mongodb://plane-mongodb:27017/"
SILO_DB=silo
SILO_DB_URL=postgresql://plane:plane@plane-db/silo
+305
View File
@@ -0,0 +1,305 @@
name: AMI Build - AWS
on:
workflow_dispatch:
inputs:
ami_prefix:
description: 'AMI Prefix'
required: true
default: 'plane-commercial'
prime_host:
description: 'Prime Host'
required: true
default: 'https://prime.plane.so'
ami_publish_region:
description: 'AMI Publish Regions (comma separated)'
type: string
required: true
default: 'us-east-1'
mark_manifest_latest:
description: 'Mark manifest as latest'
type: boolean
required: false
default: false
env:
# Inputs
AMI_PREFIX: ${{ inputs.ami_prefix || 'plane-commercial' }}
PRIME_HOST: ${{ inputs.prime_host || 'https://prime.plane.so' }}
AMI_PUBLISH_REGION: ${{ inputs.ami_publish_region || 'us-east-1' }}
# Inputs by Devops
AWS_MANIFEST_BUCKET: 'plane-terraform-marketplace'
AWS_VPC_CIDR: '10.34.0.0/16'
AWS_SUBNET_CIDR: '10.34.1.0/24'
AWS_VPC_REGION: 'us-east-1'
AWS_BASE_IMAGE_OWNER: '099720109477'
# Secrets
AWS_ACCESS_KEY: ${{ secrets.MARKETPLACE_AWS_ACCESS_KEY_ID }}
AWS_SECRET_KEY: ${{ secrets.MARKETPLACE_AWS_SECRET_ACCESS_KEY }}
# Constants
CURRENT_MANIFEST_FILE: 'ee-docker-aws-ami-manifest.json'
EE_PACKER_FILE: 'ee-docker-aws-ami.pkr.hcl'
CF_TEMPLATE_FILE: deployments/ami/commercial/ee-cloudformation-template.yaml
CF_OUTPUT_FILE: deployments/ami/commercial/plane-commercial-cloudformation.yaml
MARK_MANIFEST_LATEST: ${{ inputs.mark_manifest_latest || false }}
jobs:
build_ami:
runs-on: ubuntu-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ env.AWS_SECRET_KEY }}
aws-region: ${{ env.AWS_VPC_REGION }}
- name: Setup `packer`
uses: hashicorp/setup-packer@main
id: setup
with:
version: latest
- name: Copy Upload Assets
run: |
mkdir -p plane-dist
cp deployments/ami/commercial/cloudinit-ee/* plane-dist/
- name: Run `packer init`
id: init
run: "packer init ./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}"
- name: Run `packer validate`
id: validate
run: "packer validate ./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}"
- name: Make Variables File
id: make_variables_file
run: |
touch variables.pkrvars.hcl
echo "aws_region = \"${AWS_VPC_REGION}\"" >> variables.pkrvars.hcl
echo "ami_name_prefix = \"${AMI_PREFIX}\"" >> variables.pkrvars.hcl
echo "vpc_cidr = \"${AWS_VPC_CIDR}\"" >> variables.pkrvars.hcl
echo "subnet_cidr = \"${AWS_SUBNET_CIDR}\"" >> variables.pkrvars.hcl
echo "base_image_owner = \"${AWS_BASE_IMAGE_OWNER}\"" >> variables.pkrvars.hcl
echo "prime_host = \"${PRIME_HOST}\"" >> variables.pkrvars.hcl
echo "instance_type = \"t3a.xlarge\"" >> variables.pkrvars.hcl
echo "manifest_file_name = \"${{ env.CURRENT_MANIFEST_FILE }}\"" >> variables.pkrvars.hcl
# split AMI_PUBLISH_REGION by comma and add to ami_regions
ami_regions=$(echo "${AMI_PUBLISH_REGION}" | sed 's/[[:space:]]*,[[:space:]]*/\n/g' | jq -R . | jq -s -c .)
echo "ami_regions = ${ami_regions}" >> variables.pkrvars.hcl
cat variables.pkrvars.hcl
- name: Run `packer build`
id: build
run: |
packer build \
-var "aws_access_key=${{ env.AWS_ACCESS_KEY }}" \
-var "aws_secret_key=${{ env.AWS_SECRET_KEY }}" \
-var-file=variables.pkrvars.hcl \
./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}
- name: Extract AMI Information and Create Summary
id: ami_info
run: |
# Extract AMI details from manifest
AMI_STRING=$(jq -r '.builds[-1].artifact_id' ${{env.CURRENT_MANIFEST_FILE}})
AMI_NAME=$(jq -r '.builds[-1].custom_data.ami_name' ${{env.CURRENT_MANIFEST_FILE}})
BUILD_TIME=$(jq -r '.builds[-1].custom_data.build_time' ${{env.CURRENT_MANIFEST_FILE}})
# Create array of AMI information
declare -a AMI_INFO
IFS=',' read -ra AMI_ARRAY <<< "$AMI_STRING"
for ami in "${AMI_ARRAY[@]}"; do
REGION=$(echo "$ami" | cut -d ":" -f1)
AMI_ID=$(echo "$ami" | cut -d ":" -f2)
AMI_INFO+=("$REGION:$AMI_ID")
done
# Add git information to manifest
jq --arg branch "${{ github.ref_name }}" \
--arg commit "${{ github.sha }}" \
--arg build_time "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
'.builds[-1].custom_data += {git_branch: $branch, git_commit: $commit, build_timestamp: $build_time}' \
${{env.CURRENT_MANIFEST_FILE}} > temp-manifest.json
mv temp-manifest.json ${{env.CURRENT_MANIFEST_FILE}}
- name: Store Manifest in S3
run: |
# Also store a versioned copy
aws s3 cp ${{env.CURRENT_MANIFEST_FILE}} "s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-${{ github.sha }}.json"
- name: Store Manifest in S3 as latest
if: ${{ env.MARK_MANIFEST_LATEST == 'true' }}
run: |
# Store the current manifest as latest
aws s3 cp ${{env.CURRENT_MANIFEST_FILE}} s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-latest.json || true
- name: Upload Build Manifest as Artifact
uses: actions/upload-artifact@v4
with:
name: ee-docker-aws-ami-manifest
path: ${{env.CURRENT_MANIFEST_FILE}}
retention-days: 30
- name: Tag AMIs
run: |
# Extract AMI string again
AMI_STRING=$(jq -r '.builds[-1].artifact_id' ${{env.CURRENT_MANIFEST_FILE}})
# Process and tag each AMI in its respective region
IFS=',' read -ra AMI_ARRAY <<< "$AMI_STRING"
for ami in "${AMI_ARRAY[@]}"; do
REGION=$(echo "$ami" | cut -d ":" -f1)
AMI_ID=$(echo "$ami" | cut -d ":" -f2)
echo "Tagging AMI ${AMI_ID} in region ${REGION}"
aws ec2 create-tags \
--region "$REGION" \
--resources "$AMI_ID" \
--tags \
Key=GitBranch,Value=${{ github.ref_name }} \
Key=GitCommit,Value=${{ github.sha }} \
Key=BuildTime,Value=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
done
- name: Update CloudFormation Template
run: |
# Install yq if not present
if ! command -v yq &> /dev/null; then
echo "Installing yq..."
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod +x /usr/local/bin/yq
fi
if ! command -v jq &> /dev/null; then
echo "Error: jq is required but not installed. Please install jq to continue."
exit 1
fi
ARTIFACT_ID=$(jq -r '.builds[0].artifact_id' "${{ env.CURRENT_MANIFEST_FILE }}")
if [[ "$ARTIFACT_ID" == "null" || -z "$ARTIFACT_ID" ]]; then
echo "Error: Could not extract artifact_id from manifest file"
exit 1
fi
echo "Found artifact_id: $ARTIFACT_ID"
REGIONS=()
AMIS=()
# Split by comma and process each region:ami pair
IFS=',' read -ra PAIRS <<< "$ARTIFACT_ID"
for pair in "${PAIRS[@]}"; do
# Trim whitespace
pair=$(echo "$pair" | xargs)
# Split by colon to get region and ami
IFS=':' read -ra REGION_AMI <<< "$pair"
if [[ ${#REGION_AMI[@]} -eq 2 ]]; then
region="${REGION_AMI[0]}"
ami="${REGION_AMI[1]}"
REGIONS+=("$region")
AMIS+=("$ami")
echo " $region -> $ami"
fi
done
# Check if we found any AMI mappings
if [[ ${#REGIONS[@]} -eq 0 ]]; then
echo "Error: No valid region:ami pairs found in artifact_id"
exit 1
fi
# Copy the original template to output file
cp "${{ env.CF_TEMPLATE_FILE }}" "${{ env.CF_OUTPUT_FILE }}"
echo "Regions: ${REGIONS[@]}"
echo "AMIs: ${AMIS[@]}"
echo "Updating AMI IDs in template..."
REGION_RESTRICTIONS=()
# Update AMI IDs for each region found in the manifest
REGIONS_STRING=""
for i in "${!REGIONS[@]}"; do
region="${REGIONS[$i]}"
ami_id="${AMIS[$i]}"
echo " Updating $region with AMI: $ami_id"
REGIONS_STRING+="${region}, "
yq eval ".Parameters.AMIId.Default = \"${ami_id}\"" -i "${{ env.CF_OUTPUT_FILE }}"
done
cat "${{ env.CF_OUTPUT_FILE }}"
echo "Updated template saved as: ${{ env.CF_OUTPUT_FILE }}"
- name: Store CloudFormation Template in S3
run: |
# Store the current manifest as latest
aws s3 cp ${{env.CF_OUTPUT_FILE}} s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/cloudformation/plane-commercial-cloudformation-latest.yaml
date_string=$(date +%d%b%Y)
aws s3 cp ${{env.CF_OUTPUT_FILE}} s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/cloudformation/plane-commercial-cloudformation-${date_string}.yaml
- name: Upload Updated CloudFormation Template
uses: actions/upload-artifact@v4
with:
name: cloudformation-template
path: ${{ env.CF_OUTPUT_FILE }}
retention-days: 30
- name: Print Build Summary
id: print_build_summary
run: |
# Extract AMI details from manifest
AMI_STRING=$(jq -r '.builds[-1].artifact_id' ${{env.CURRENT_MANIFEST_FILE}})
AMI_NAME=$(jq -r '.builds[-1].custom_data.ami_name' ${{env.CURRENT_MANIFEST_FILE}})
BUILD_TIME=$(jq -r '.builds[-1].custom_data.build_time' ${{env.CURRENT_MANIFEST_FILE}})
# Create array of AMI information
declare -a AMI_INFO
IFS=',' read -ra AMI_ARRAY <<< "$AMI_STRING"
for ami in "${AMI_ARRAY[@]}"; do
REGION=$(echo "$ami" | cut -d ":" -f1)
AMI_ID=$(echo "$ami" | cut -d ":" -f2)
AMI_INFO+=("$REGION:$AMI_ID")
done
# Create build summary with all AMIs
{
echo "### 🌎 Regional AMI Distribution"
echo "| Region | AMI ID |"
echo "| --- | --- |"
for ami_info in "${AMI_INFO[@]}"; do
region=${ami_info%:*}
ami_id=${ami_info#*:}
echo "| \`${region}\` | \`${ami_id}\` |"
done
} >> $GITHUB_STEP_SUMMARY
date_string=$(date +%d%b%Y)
{
echo "### 📁 S3 Files"
echo "| File | Path | "
echo "| --- | --- |"
echo "| Latest CF Template | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/cloudformation/plane-commercial-cloudformation-latest.yaml\` |"
echo "| CF Template | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/cloudformation/plane-commercial-cloudformation-${date_string}.yaml\` |"
echo "| Current Manifest | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-${{ github.sha }}.json\` |"
echo "| Latest Manifest | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-latest.json\` |"
} >> $GITHUB_STEP_SUMMARY
# Console output for logs
echo "✅ AMI built successfully!"
echo "🔹 AMI Information:"
for ami_info in "${AMI_INFO[@]}"; do
region=${ami_info%:*}
ami_id=${ami_info#*:}
echo " • Region: ${region}, AMI ID: ${ami_id}"
done
@@ -0,0 +1,180 @@
name: AMI Build - DigitalOcean
on:
push:
branches:
- appliance-digitalocean
workflow_dispatch:
inputs:
ami_prefix:
description: 'AMI Prefix'
required: true
default: 'plane-commercial'
prime_host:
description: 'Prime Host'
required: true
default: 'https://prime.plane.so'
mark_manifest_latest:
description: 'Mark manifest as latest'
type: boolean
required: false
default: false
env:
# Inputs
AMI_PREFIX: ${{ inputs.ami_prefix || 'plane-commercial' }}
PRIME_HOST: ${{ inputs.prime_host || 'https://prime.plane.so' }}
# Inputs by Devops
AWS_MANIFEST_BUCKET: 'plane-terraform-marketplace'
AWS_VPC_REGION: 'us-east-1'
# Secrets
AWS_ACCESS_KEY: ${{ secrets.MARKETPLACE_AWS_ACCESS_KEY_ID }}
AWS_SECRET_KEY: ${{ secrets.MARKETPLACE_AWS_SECRET_ACCESS_KEY }}
# Constants
CURRENT_MANIFEST_FILE: 'ee-docker-digital-ocean-manifest.json'
EE_PACKER_FILE: 'ee-docker-digital-ocean.pkr.hcl'
MARK_MANIFEST_LATEST: ${{ inputs.mark_manifest_latest || false }}
jobs:
build_ami:
runs-on: ubuntu-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ env.AWS_SECRET_KEY }}
aws-region: ${{ env.AWS_VPC_REGION }}
- name: Setup `packer`
uses: hashicorp/setup-packer@main
id: setup
with:
version: latest
- name: Copy Upload Assets
run: |
mkdir -p plane-dist
cp deployments/ami/commercial/cloudinit-ee/* plane-dist/
- name: Run `packer init`
id: init
run: "packer init ./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}"
- name: Run `packer validate`
id: validate
run: "packer validate ./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}"
- name: Make Variables File
id: make_variables_file
run: |
touch variables.pkrvars.hcl
echo "ami_name_prefix = \"${AMI_PREFIX}\"" >> variables.pkrvars.hcl
echo "prime_host = \"${PRIME_HOST}\"" >> variables.pkrvars.hcl
echo "instance_type = \"s-2vcpu-4gb\"" >> variables.pkrvars.hcl
echo "manifest_file_name = \"${{ env.CURRENT_MANIFEST_FILE }}\"" >> variables.pkrvars.hcl
cat variables.pkrvars.hcl
- name: Run `packer build`
id: build
run: |
packer build \
-var "api_token=${{ secrets.MARKETPLACE_DIGITAL_OCEAN_API_TOKEN }}" \
-var-file=variables.pkrvars.hcl \
./deployments/ami/commercial/${{ env.EE_PACKER_FILE }}
- name: Extract AMI Information and Create Summary
id: ami_info
run: |
# Extract AMI details from manifest
AMI_STRING=$(jq -r '.builds[-1].artifact_id' ${{env.CURRENT_MANIFEST_FILE}})
AMI_NAME=$(jq -r '.builds[-1].custom_data.ami_name' ${{env.CURRENT_MANIFEST_FILE}})
BUILD_TIME=$(jq -r '.builds[-1].custom_data.build_time' ${{env.CURRENT_MANIFEST_FILE}})
# Create array of AMI information
declare -a AMI_INFO
IFS=',' read -ra AMI_ARRAY <<< "$AMI_STRING"
for ami in "${AMI_ARRAY[@]}"; do
REGION=$(echo "$ami" | cut -d ":" -f1)
AMI_ID=$(echo "$ami" | cut -d ":" -f2)
AMI_INFO+=("$REGION:$AMI_ID")
done
# Add git information to manifest
jq --arg branch "${{ github.ref_name }}" \
--arg commit "${{ github.sha }}" \
--arg build_time "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
'.builds[-1].custom_data += {git_branch: $branch, git_commit: $commit, build_timestamp: $build_time}' \
${{env.CURRENT_MANIFEST_FILE}} > temp-manifest.json
mv temp-manifest.json ${{env.CURRENT_MANIFEST_FILE}}
- name: Store Manifest in S3
run: |
# Also store a versioned copy
aws s3 cp ${{env.CURRENT_MANIFEST_FILE}} "s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-digitalocean-manifest-${{ github.sha }}.json"
- name: Store Manifest in S3 as latest
if: ${{ env.MARK_MANIFEST_LATEST == 'true' }}
run: |
# Store the current manifest as latest
aws s3 cp ${{env.CURRENT_MANIFEST_FILE}} s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-digitalocean-manifest-latest.json || true
- name: Upload Build Manifest as Artifact
uses: actions/upload-artifact@v4
with:
name: ee-docker-digital-ocean-manifest
path: ${{env.CURRENT_MANIFEST_FILE}}
retention-days: 30
- name: Print Build Summary
id: print_build_summary
run: |
# Extract AMI details from manifest
AMI_STRING=$(jq -r '.builds[-1].artifact_id' ${{env.CURRENT_MANIFEST_FILE}})
AMI_NAME=$(jq -r '.builds[-1].custom_data.ami_name' ${{env.CURRENT_MANIFEST_FILE}})
BUILD_TIME=$(jq -r '.builds[-1].custom_data.build_time' ${{env.CURRENT_MANIFEST_FILE}})
# Create array of AMI information
declare -a AMI_INFO
IFS=',' read -ra AMI_ARRAY <<< "$AMI_STRING"
for ami in "${AMI_ARRAY[@]}"; do
REGION=$(echo "$ami" | cut -d ":" -f1)
AMI_ID=$(echo "$ami" | cut -d ":" -f2)
AMI_INFO+=("$REGION:$AMI_ID")
done
# Create build summary with all AMIs
{
echo "### 🌎 Regional AMI Distribution"
echo "| Region | AMI ID |"
echo "| --- | --- |"
for ami_info in "${AMI_INFO[@]}"; do
region=${ami_info%:*}
ami_id=${ami_info#*:}
echo "| \`${region}\` | \`${ami_id}\` |"
done
} >> $GITHUB_STEP_SUMMARY
date_string=$(date +%d%b%Y)
{
echo "### 📁 S3 Files"
echo "| File | Path | "
echo "| --- | --- |"
echo "| Current Manifest | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-${{ github.sha }}.json\` |"
echo "| Latest Manifest | \`s3://${{ env.AWS_MANIFEST_BUCKET }}/plane-commercial/ami/manifests/plane-commercial-manifest-latest.json\` |"
} >> $GITHUB_STEP_SUMMARY
# Console output for logs
echo "✅ AMI built successfully!"
echo "🔹 AMI Information:"
for ami_info in "${AMI_INFO[@]}"; do
region=${ami_info%:*}
ami_id=${ami_info#*:}
echo " • Region: ${region}, AMI ID: ${ami_id}"
done
-139
View File
@@ -1,139 +0,0 @@
name: Build AIO Base Image
on:
workflow_dispatch:
inputs:
base_tag_name:
description: 'Base Tag Name'
required: false
default: ''
env:
TARGET_BRANCH: ${{ github.ref_name }}
jobs:
base_build_setup:
name: Build Preparation
runs-on: ubuntu-latest
outputs:
gh_branch_name: ${{ steps.set_env_variables.outputs.TARGET_BRANCH }}
gh_buildx_driver: ${{ steps.set_env_variables.outputs.BUILDX_DRIVER }}
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }}
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }}
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }}
image_tag: ${{ steps.set_env_variables.outputs.IMAGE_TAG }}
steps:
- id: set_env_variables
name: Set Environment Variables
run: |
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT
if [ "${{ github.event.inputs.base_tag_name }}" != "" ]; then
echo "IMAGE_TAG=${{ github.event.inputs.base_tag_name }}" >> $GITHUB_OUTPUT
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
echo "IMAGE_TAG=latest" >> $GITHUB_OUTPUT
elif [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then
echo "IMAGE_TAG=preview" >> $GITHUB_OUTPUT
else
echo "IMAGE_TAG=develop" >> $GITHUB_OUTPUT
fi
if [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT
else
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT
fi
- id: checkout_files
name: Checkout Files
uses: actions/checkout@v4
full_base_build_push:
runs-on: ubuntu-latest
needs: [base_build_setup]
env:
BASE_IMG_TAG: makeplane/plane-aio-base:full-${{ needs.base_build_setup.outputs.image_tag }}
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.base_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.base_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v6.9.0
with:
context: ./aio
file: ./aio/Dockerfile-base-full
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.BASE_IMG_TAG }}
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
slim_base_build_push:
runs-on: ubuntu-latest
needs: [base_build_setup]
env:
BASE_IMG_TAG: makeplane/plane-aio-base:slim-${{ needs.base_build_setup.outputs.image_tag }}
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.base_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.base_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v6.9.0
with:
context: ./aio
file: ./aio/Dockerfile-base-slim
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.BASE_IMG_TAG }}
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
-204
View File
@@ -1,204 +0,0 @@
name: Branch Build AIO
on:
workflow_dispatch:
inputs:
full:
description: 'Run full build'
type: boolean
required: false
default: true
slim:
description: 'Run slim build'
type: boolean
required: false
default: true
base_tag_name:
description: 'Base Tag Name'
required: false
default: ''
release:
types: [released, prereleased]
env:
TARGET_BRANCH: ${{ github.ref_name || github.event.release.target_commitish }}
IS_PRERELEASE: ${{ github.event.release.prerelease }}
FULL_BUILD_INPUT: ${{ github.event.inputs.full }}
SLIM_BUILD_INPUT: ${{ github.event.inputs.slim }}
jobs:
branch_build_setup:
name: Build Setup
runs-on: ubuntu-latest
outputs:
gh_branch_name: ${{ steps.set_env_variables.outputs.TARGET_BRANCH }}
gh_buildx_driver: ${{ steps.set_env_variables.outputs.BUILDX_DRIVER }}
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }}
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }}
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }}
aio_base_tag: ${{ steps.set_env_variables.outputs.AIO_BASE_TAG }}
do_full_build: ${{ steps.set_env_variables.outputs.DO_FULL_BUILD }}
do_slim_build: ${{ steps.set_env_variables.outputs.DO_SLIM_BUILD }}
steps:
- id: set_env_variables
name: Set Environment Variables
run: |
if [ [ "${{ github.event_name }}" == "release" ] && [ "${{ env.IS_PRERELEASE }}" != "true" ] ; then
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT
echo "AIO_BASE_TAG=latest" >> $GITHUB_OUTPUT
else
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT
if [ "${{ github.event.inputs.base_tag_name }}" != "" ]; then
echo "AIO_BASE_TAG=${{ github.event.inputs.base_tag_name }}" >> $GITHUB_OUTPUT
elif [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then
echo "AIO_BASE_TAG=preview" >> $GITHUB_OUTPUT
else
echo "AIO_BASE_TAG=develop" >> $GITHUB_OUTPUT
fi
fi
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT
if [ "${{ env.FULL_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then
echo "DO_FULL_BUILD=true" >> $GITHUB_OUTPUT
else
echo "DO_FULL_BUILD=false" >> $GITHUB_OUTPUT
fi
if [ "${{ env.SLIM_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then
echo "DO_SLIM_BUILD=true" >> $GITHUB_OUTPUT
else
echo "DO_SLIM_BUILD=false" >> $GITHUB_OUTPUT
fi
- id: checkout_files
name: Checkout Files
uses: actions/checkout@v4
full_build_push:
if: ${{ needs.branch_build_setup.outputs.do_full_build == 'true' }}
runs-on: ubuntu-22.04
needs: [branch_build_setup]
env:
BUILD_TYPE: full
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }}
AIO_IMAGE_TAGS: makeplane/plane-aio-enterprise:full-${{ needs.branch_build_setup.outputs.gh_branch_name }}
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }}
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Set Docker Tag
run: |
if [ "${{ github.event_name }}" == "release" ]; then
TAG=makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }}
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
TAG=makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-latest
else
TAG=${{ env.AIO_IMAGE_TAGS }}
fi
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Check out the repo
uses: actions/checkout@v4
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v5.1.0
with:
context: .
file: ./aio/Dockerfile-app
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.AIO_IMAGE_TAGS }}
push: true
build-args: |
BUILD_TAG=${{ env.AIO_BASE_TAG }}
BUILD_TYPE=${{env.BUILD_TYPE}}
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
slim_build_push:
if: ${{ needs.branch_build_setup.outputs.do_slim_build == 'true' }}
runs-on: ubuntu-22.04
needs: [branch_build_setup]
env:
BUILD_TYPE: slim
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }}
AIO_IMAGE_TAGS: makeplane/plane-aio-enterprise:slim-${{ needs.branch_build_setup.outputs.gh_branch_name }}
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }}
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Set Docker Tag
run: |
if [ "${{ github.event_name }}" == "release" ]; then
TAG=makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }}
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
TAG=makeplane/plane-aio-enterprise:${{env.BUILD_TYPE}}-latest
else
TAG=${{ env.AIO_IMAGE_TAGS }}
fi
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Check out the repo
uses: actions/checkout@v4
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v5.1.0
with:
context: .
file: ./aio/Dockerfile-app
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.AIO_IMAGE_TAGS }}
push: true
build-args: |
BUILD_TAG=${{ env.AIO_BASE_TAG }}
BUILD_TYPE=${{env.BUILD_TYPE}}
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
-207
View File
@@ -1,207 +0,0 @@
name: Branch Build AIO
on:
workflow_dispatch:
inputs:
full:
description: 'Run full build'
type: boolean
required: false
default: false
slim:
description: 'Run slim build'
type: boolean
required: false
default: false
base_tag_name:
description: 'Base Tag Name'
required: false
default: ''
release:
types: [released, prereleased]
env:
TARGET_BRANCH: ${{ github.ref_name || github.event.release.target_commitish }}
FULL_BUILD_INPUT: ${{ github.event.inputs.full }}
SLIM_BUILD_INPUT: ${{ github.event.inputs.slim }}
jobs:
branch_build_setup:
name: Build Setup
runs-on: ubuntu-latest
outputs:
gh_branch_name: ${{ steps.set_env_variables.outputs.TARGET_BRANCH }}
flat_branch_name: ${{ steps.set_env_variables.outputs.FLAT_BRANCH_NAME }}
gh_buildx_driver: ${{ steps.set_env_variables.outputs.BUILDX_DRIVER }}
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }}
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }}
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }}
aio_base_tag: ${{ steps.set_env_variables.outputs.AIO_BASE_TAG }}
do_full_build: ${{ steps.set_env_variables.outputs.DO_FULL_BUILD }}
do_slim_build: ${{ steps.set_env_variables.outputs.DO_SLIM_BUILD }}
steps:
- id: set_env_variables
name: Set Environment Variables
run: |
if [ "${{ env.TARGET_BRANCH }}" == "master" ] || [ "${{ github.event_name }}" == "release" ]; then
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT
echo "AIO_BASE_TAG=latest" >> $GITHUB_OUTPUT
else
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT
if [ "${{ github.event_name}}" == "workflow_dispatch" ] && [ "${{ github.event.inputs.base_tag_name }}" != "" ]; then
echo "AIO_BASE_TAG=${{ github.event.inputs.base_tag_name }}" >> $GITHUB_OUTPUT
elif [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then
echo "AIO_BASE_TAG=preview" >> $GITHUB_OUTPUT
else
echo "AIO_BASE_TAG=develop" >> $GITHUB_OUTPUT
fi
fi
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT
if [ "${{ env.FULL_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then
echo "DO_FULL_BUILD=true" >> $GITHUB_OUTPUT
else
echo "DO_FULL_BUILD=false" >> $GITHUB_OUTPUT
fi
if [ "${{ env.SLIM_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then
echo "DO_SLIM_BUILD=true" >> $GITHUB_OUTPUT
else
echo "DO_SLIM_BUILD=false" >> $GITHUB_OUTPUT
fi
FLAT_BRANCH_NAME=$(echo "${{ env.TARGET_BRANCH }}" | sed 's/[^a-zA-Z0-9]/-/g')
echo "FLAT_BRANCH_NAME=$FLAT_BRANCH_NAME" >> $GITHUB_OUTPUT
- id: checkout_files
name: Checkout Files
uses: actions/checkout@v4
full_build_push:
if: ${{ needs.branch_build_setup.outputs.do_full_build == 'true' }}
runs-on: ubuntu-22.04
needs: [branch_build_setup]
env:
BUILD_TYPE: full
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }}
AIO_IMAGE_TAGS: makeplane/plane-aio:full-${{ needs.branch_build_setup.outputs.flat_branch_name }}
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }}
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Set Docker Tag
run: |
if [ "${{ github.event_name }}" == "release" ]; then
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }}
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-latest
else
TAG=${{ env.AIO_IMAGE_TAGS }}
fi
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Check out the repo
uses: actions/checkout@v4
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v6.9.0
with:
context: .
file: ./aio/Dockerfile-app
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.AIO_IMAGE_TAGS }}
push: true
build-args: |
BASE_TAG=${{ env.AIO_BASE_TAG }}
BUILD_TYPE=${{env.BUILD_TYPE}}
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
slim_build_push:
if: ${{ needs.branch_build_setup.outputs.do_slim_build == 'true' }}
runs-on: ubuntu-22.04
needs: [branch_build_setup]
env:
BUILD_TYPE: slim
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }}
AIO_IMAGE_TAGS: makeplane/plane-aio:slim-${{ needs.branch_build_setup.outputs.flat_branch_name }}
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }}
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
steps:
- name: Set Docker Tag
run: |
if [ "${{ github.event_name }}" == "release" ]; then
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }}
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-latest
else
TAG=${{ env.AIO_IMAGE_TAGS }}
fi
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: ${{ env.BUILDX_DRIVER }}
version: ${{ env.BUILDX_VERSION }}
endpoint: ${{ env.BUILDX_ENDPOINT }}
- name: Check out the repo
uses: actions/checkout@v4
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v6.9.0
with:
context: .
file: ./aio/Dockerfile-app
platforms: ${{ env.BUILDX_PLATFORMS }}
tags: ${{ env.AIO_IMAGE_TAGS }}
push: true
build-args: |
BASE_TAG=${{ env.AIO_BASE_TAG }}
BUILD_TYPE=${{env.BUILD_TYPE}}
cache-from: type=gha
cache-to: type=gha,mode=max
env:
DOCKER_BUILDKIT: 1
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
+11 -11
View File
@@ -185,7 +185,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_admin }}
build-context: .
dockerfile-path: ./admin/Dockerfile.admin
dockerfile-path: ./apps/admin/Dockerfile.admin
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -213,7 +213,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_web }}
build-context: .
dockerfile-path: ./web/Dockerfile.web
dockerfile-path: ./apps/web/Dockerfile.web
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -241,7 +241,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_space }}
build-context: .
dockerfile-path: ./space/Dockerfile.space
dockerfile-path: ./apps/space/Dockerfile.space
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -264,7 +264,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_live }}
build-context: .
dockerfile-path: ./live/Dockerfile.live
dockerfile-path: ./apps/live/Dockerfile.live
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -286,9 +286,9 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_silo }}
build-context: .
dockerfile-path: ./silo/Dockerfile.silo
dockerfile-path: ./apps/silo/Dockerfile.silo
branch_build_push_apiserver:
branch_build_push_api:
name: Build-Push API Server Docker Image
runs-on: ubuntu-22.04
needs: [branch_build_setup]
@@ -303,8 +303,8 @@ jobs:
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_backend }}
build-context: ./apiserver
dockerfile-path: ./apiserver/Dockerfile.api
build-context: ./apps/api
dockerfile-path: ./apps/api/Dockerfile.api
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -329,8 +329,8 @@ jobs:
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_email }}
build-context: ./email
dockerfile-path: ./email/Dockerfile
build-context: ./apps/email
dockerfile-path: ./apps/email/Dockerfile
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -348,7 +348,7 @@ jobs:
branch_build_push_space,
branch_build_push_live,
branch_build_push_silo,
branch_build_push_apiserver,
branch_build_push_api,
branch_build_push_email,
]
env:
+625 -48
View File
@@ -25,6 +25,16 @@ on:
required: false
default: false
type: boolean
airgapped_build:
description: "Build for airgapped installation"
required: false
default: false
type: boolean
aio_build:
description: "Build for AIO docker image"
required: false
default: false
type: boolean
env:
TARGET_BRANCH: ${{ github.ref_name }}
@@ -32,6 +42,9 @@ env:
BUILD_TYPE: ${{ github.event.inputs.build_type }}
RELEASE_VERSION: ${{ github.event.inputs.releaseVersion }}
IS_PRERELEASE: ${{ github.event.inputs.isPrerelease }}
AIRGAPPED_BUILD: ${{ github.event.inputs.airgapped_build }}
GNUPGHOME: ${{ github.workspace }}/.gnupg
AIO_BUILD: ${{ github.event.inputs.aio_build }}
jobs:
branch_build_setup:
@@ -56,6 +69,7 @@ jobs:
dh_img_monitor: ${{ steps.set_env_variables.outputs.DH_IMG_MONITOR }}
dh_img_silo: ${{ steps.set_env_variables.outputs.DH_IMG_SILO }}
dh_img_email: ${{ steps.set_env_variables.outputs.DH_IMG_EMAIL }}
dh_img_aio: ${{ steps.set_env_variables.outputs.DH_IMG_AIO }}
harbor_push: ${{ steps.set_env_variables.outputs.HARBOR_PUSH }}
@@ -63,6 +77,9 @@ jobs:
build_release: ${{ steps.set_env_variables.outputs.BUILD_RELEASE }}
build_prerelease: ${{ steps.set_env_variables.outputs.BUILD_PRERELEASE }}
release_version: ${{ steps.set_env_variables.outputs.RELEASE_VERSION }}
airgapped_build: ${{ steps.set_env_variables.outputs.AIRGAPPED_BUILD }}
arm64_build: ${{ steps.set_env_variables.outputs.ARM64_BUILD }}
aio_build: ${{ steps.set_env_variables.outputs.AIO_BUILD }}
steps:
- id: set_env_variables
@@ -73,11 +90,13 @@ jobs:
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT
echo "ARM64_BUILD=true" >> $GITHUB_OUTPUT
else
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT
echo "ARM64_BUILD=false" >> $GITHUB_OUTPUT
fi
BR_NAME=$( echo "${{ env.TARGET_BRANCH }}" |sed 's/[^a-zA-Z0-9.-]//g')
echo "TARGET_BRANCH=$BR_NAME" >> $GITHUB_OUTPUT
@@ -92,12 +111,17 @@ jobs:
echo "DH_IMG_SILO=silo-commercial" >> $GITHUB_OUTPUT
echo "DH_IMG_EMAIL=email-commercial" >> $GITHUB_OUTPUT
echo "DH_IMG_AIO=plane-aio-commercial" >> $GITHUB_OUTPUT
echo "BUILD_TYPE=${{env.BUILD_TYPE}}" >> $GITHUB_OUTPUT
BUILD_RELEASE=false
BUILD_PRERELEASE=false
RELVERSION="latest"
HARBOR_PUSH=false
BUILD_AIRGAPPED=${{ env.AIRGAPPED_BUILD }}
BUILD_AIO=${{ env.AIO_BUILD }}
if [ "${{ env.BUILD_TYPE }}" == "Release" ]; then
FLAT_RELEASE_VERSION=$(echo "${{ env.RELEASE_VERSION }}" | sed 's/[^a-zA-Z0-9.-]//g')
echo "FLAT_RELEASE_VERSION=${FLAT_RELEASE_VERSION}" >> $GITHUB_OUTPUT
@@ -126,16 +150,20 @@ jobs:
if [ "${{ env.BUILD_TYPE }}" == "Release" ]; then
echo "artifact_upload_to_s3=true" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=${{ env.RELEASE_VERSION }}" >> $GITHUB_OUTPUT
BUILD_AIRGAPPED=true
BUILD_AIO=true
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then
echo "artifact_upload_to_s3=true" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=latest" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=${{ env.AIRGAPPED_BUILD }}" >> $GITHUB_OUTPUT
elif [ "${{ env.TARGET_BRANCH }}" == "preview" ] || [ "${{ env.TARGET_BRANCH }}" == "develop" ] || [ "${{ env.TARGET_BRANCH }}" == "uat" ]; then
echo "artifact_upload_to_s3=true" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=$BR_NAME" >> $GITHUB_OUTPUT
else
echo "artifact_upload_to_s3=false" >> $GITHUB_OUTPUT
echo "artifact_s3_suffix=$BR_NAME" >> $GITHUB_OUTPUT
fi
echo "AIRGAPPED_BUILD=${BUILD_AIRGAPPED}" >> $GITHUB_OUTPUT
echo "AIO_BUILD=${BUILD_AIO}" >> $GITHUB_OUTPUT
branch_build_push_admin:
name: Build-Push Admin Docker Image
@@ -143,7 +171,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Admin Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -158,7 +186,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_admin }}
build-context: .
dockerfile-path: ./admin/Dockerfile.admin
dockerfile-path: ./apps/admin/Dockerfile.admin
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -170,7 +198,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Web Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -185,7 +213,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_web }}
build-context: .
dockerfile-path: ./web/Dockerfile.web
dockerfile-path: ./apps/web/Dockerfile.web
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -197,7 +225,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Space Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -212,7 +240,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_space }}
build-context: .
dockerfile-path: ./space/Dockerfile.space
dockerfile-path: ./apps/space/Dockerfile.space
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -224,7 +252,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Live Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -239,7 +267,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_live }}
build-context: .
dockerfile-path: ./live/Dockerfile.live
dockerfile-path: ./apps/live/Dockerfile.live
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -251,7 +279,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Silo Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -266,19 +294,19 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_silo }}
build-context: .
dockerfile-path: ./silo/Dockerfile.silo
dockerfile-path: ./apps/silo/Dockerfile.silo
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
branch_build_push_apiserver:
branch_build_push_api:
name: Build-Push API Server Docker Image
runs-on: ubuntu-22.04
needs: [branch_build_setup]
steps:
- name: Backend Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -292,8 +320,8 @@ jobs:
private-registry-project: ${{ vars.HARBOR_PROJECT }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_backend }}
build-context: ./apiserver
dockerfile-path: ./apiserver/Dockerfile.api
build-context: ./apps/api
dockerfile-path: ./apps/api/Dockerfile.api
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -305,7 +333,7 @@ jobs:
needs: [branch_build_setup]
steps:
- name: Proxy Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -319,8 +347,8 @@ jobs:
private-registry-project: ${{ vars.HARBOR_PROJECT }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_proxy }}
build-context: ./proxy
dockerfile-path: ./proxy/Dockerfile.ee
build-context: ./apps/proxy
dockerfile-path: ./apps/proxy/Dockerfile.ee
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -346,7 +374,7 @@ jobs:
echo "PRIVATE_KEY=${PRIVATE_KEY}" >> $GITHUB_ENV
- name: Monitor Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -360,8 +388,8 @@ jobs:
private-registry-project: ${{ vars.HARBOR_PROJECT }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_monitor }}
build-context: ./monitor
dockerfile-path: ./monitor/Dockerfile
build-context: ./apps/monitor
dockerfile-path: ./apps/monitor/Dockerfile
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -379,7 +407,7 @@ jobs:
uses: actions/checkout@v4
- name: Email Build and Push
uses: makeplane/actions/build-push@v1.0.0
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
@@ -393,16 +421,80 @@ jobs:
private-registry-project: ${{ vars.HARBOR_PROJECT }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_email }}
build-context: ./email
dockerfile-path: ./email/Dockerfile
build-context: ./apps/email
dockerfile-path: ./apps/email/Dockerfile
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
branch_build_push_aio:
if: ${{ needs.branch_build_setup.outputs.aio_build == 'true' }}
name: Build-Push AIO Docker Image
runs-on: ubuntu-22.04
needs: [
branch_build_setup,
branch_build_push_admin,
branch_build_push_web,
branch_build_push_space,
branch_build_push_live,
branch_build_push_api,
branch_build_push_proxy,
branch_build_push_monitor,
branch_build_push_email,
branch_build_push_silo
]
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Prepare AIO Assets
id: prepare_aio_assets
run: |
cd deployments/aio/commercial
if [ "${{ needs.branch_build_setup.outputs.build_type }}" == "Release" ]; then
aio_version=${{ needs.branch_build_setup.outputs.release_version }}
else
aio_version=${{ needs.branch_build_setup.outputs.gh_branch_name }}
fi
bash ./build.sh --release $aio_version
echo "AIO_BUILD_VERSION=${aio_version}" >> $GITHUB_OUTPUT
- name: Upload AIO Assets
uses: actions/upload-artifact@v4
with:
path: ./deployments/aio/commercial/dist
name: aio-assets-dist
- name: AIO Build and Push
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
release-version: ${{ needs.branch_build_setup.outputs.release_version }}
dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
private-registry-push: ${{ needs.branch_build_setup.outputs.harbor_push }}
private-registry-username: ${{ secrets.HARBOR_USERNAME }}
private-registry-token: ${{ secrets.HARBOR_TOKEN }}
private-registry-addr: ${{ vars.HARBOR_REGISTRY }}
private-registry-project: ${{ vars.HARBOR_PROJECT }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_aio }}
build-context: ./deployments/aio/commercial
dockerfile-path: ./deployments/aio/commercial/Dockerfile
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
additional-assets: aio-assets-dist
additional-assets-dir: ./deployments/aio/commercial/dist
build-args: |
PLANE_VERSION=${{ steps.prepare_aio_assets.outputs.AIO_BUILD_VERSION }}
upload_artifacts_s3:
if: ${{ needs.branch_build_setup.outputs.artifact_upload_to_s3 == 'true' }}
if: ${{ needs.branch_build_setup.outputs.artifact_upload_to_s3 == 'true' || needs.branch_build_setup.outputs.airgapped_build == 'true' }}
name: Upload artifacts to S3 Bucket
runs-on: ubuntu-22.04
needs: [branch_build_setup]
@@ -427,24 +519,127 @@ jobs:
mkdir -p ~/${{ env.ARTIFACT_SUFFIX }}
sed -i 's@APP_RELEASE_VERSION=.*@APP_RELEASE_VERSION='${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/variables.env
cp deploy/cli-install/variables.env ~/${{ env.ARTIFACT_SUFFIX }}/variables.env
sed -i 's@APP_RELEASE_VERSION=.*@APP_RELEASE_VERSION='${{ env.ARTIFACT_SUFFIX }}'@' deployments/cli/commercial/variables.env
cp deployments/cli/commercial/variables.env ~/${{ env.ARTIFACT_SUFFIX }}/variables.env
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/docker-compose-caddy.yml
cp deploy/cli-install/docker-compose-caddy.yml ~/${{ env.ARTIFACT_SUFFIX }}/docker-compose-caddy.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/cli/commercial/docker-compose.yml
cp deployments/cli/commercial/docker-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/docker-compose-caddy.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/coolify-compose.yml
cp deploy/cli-install/coolify-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/coolify-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/coolify/commercial/coolify-compose.yml
cp deployments/coolify/commercial/coolify-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/coolify-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/portainer-compose.yml
cp deploy/cli-install/portainer-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/portainer-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/portainer/commercial/portainer-compose.yml
cp deployments/portainer/commercial/portainer-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/portainer-compose.yml
# required for prime-cli backward compatibility
cp proxy/Caddyfile.ee ~/${{ env.ARTIFACT_SUFFIX }}/Caddyfile
cp deploy/cli-install/docker-compose-caddy.yml ~/${{ env.ARTIFACT_SUFFIX }}/docker-compose.yml
cp apps/proxy/Caddyfile.ee ~/${{ env.ARTIFACT_SUFFIX }}/Caddyfile
cp deployments/cli/commercial/docker-compose.yml ~/${{ env.ARTIFACT_SUFFIX }}/docker-compose.yml
# Process podman quadlets
cd deployments/podman/commercial/
rm -rf plane-podman
mkdir -p plane-podman/plane/
mkdir -p plane-podman/config/
# Create a new file with initial content
cp ./install.sh ./plane-podman/install.sh
cp ../../cli/commercial/variables.env ./plane-podman/plane/plane.env
echo "" >> ./plane-podman/plane/plane.env
# Process quadlets.env
while IFS= read -r line; do
# Replace APP_VERSION with ARTIFACT_SUFFIX
if echo "$line" | grep -q "^APP_VERSION="; then
echo "APP_VERSION=${{ env.ARTIFACT_SUFFIX }}" >> ./plane-podman/plane/plane.env
continue
fi
# If line starts with #, write it and a single empty line
if echo "$line" | grep -q '^[[:space:]]*#'; then
echo "" >> ./plane-podman/plane/plane.env
echo "$line" >> ./plane-podman/plane/plane.env
continue
fi
# Skip empty lines
if [ -z "$line" ]; then
continue
fi
# Process key-value pairs
key=$(echo "$line" | cut -d'=' -f1)
value=$(echo "$line" | cut -d'=' -f2)
if ! grep -q "^${key}=" ./plane-podman/plane/plane.env; then
echo "${key}=${value}" >> ./plane-podman/plane/plane.env
elif [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s|${key}=.*|${key}=${value}|" ./plane-podman/plane/plane.env
else
sed -i "s|${key}=.*|${key}=${value}|" ./plane-podman/plane/plane.env
fi
done < quadlets.env
# Verify files exist before copying
if [ ! -f Caddyfile ]; then
echo "Error: Caddyfile not found"
exit 1
fi
cp Caddyfile ./plane-podman/plane/Caddyfile
# Verify podman-quadlets.ini exists
if [ ! -f podman-quadlets.ini ]; then
echo "Error: podman-quadlets.ini not found"
exit 1
fi
# check APP_RELEASE_VERSION in podman-quadlets.ini and change it to ${ARTIFACT_SUFFIX}
sed -i 's@${APP_RELEASE_VERSION}.*@'${{ env.ARTIFACT_SUFFIX }}'@' podman-quadlets.ini
# Split podman-quadlets.ini into separate files in plane-podman folder
cat podman-quadlets.ini | awk '/^# [a-z_-]+\.(container|network)$/ {filename="plane-podman/config/" substr($2,1); next} /^---$/ {next} filename && !/^#/ {print > filename}'
# Create tar of podman quadlets with proper directory structure
cd plane-podman
tar -czf ~/${{ env.ARTIFACT_SUFFIX }}/podman-quadlets.tar.gz .
cd ..
# Verify the tar was created successfully
if [ ! -f ~/${{ env.ARTIFACT_SUFFIX }}/podman-quadlets.tar.gz ]; then
echo "Error: Failed to create podman-quadlets.tar.gz"
exit 1
fi
aws s3 cp ~/${{ env.ARTIFACT_SUFFIX }} s3://${{ vars.SELF_HOST_BUCKET_NAME }}/plane-enterprise/${{ env.ARTIFACT_SUFFIX }} --recursive
- name: Upload tar artifacts
uses: actions/upload-artifact@v4
with:
name: podman-quadlets.tar.gz
path: ~/${{ env.ARTIFACT_SUFFIX }}/podman-quadlets.tar.gz
- name: Upload docker-compose.yml
uses: actions/upload-artifact@v4
with:
name: docker-compose.yml
path: ~/${{ env.ARTIFACT_SUFFIX }}/docker-compose.yml
- name: Upload coolify-compose.yml
uses: actions/upload-artifact@v4
with:
name: coolify-compose.yml
path: ~/${{ env.ARTIFACT_SUFFIX }}/coolify-compose.yml
- name: Upload portainer-compose.yml
uses: actions/upload-artifact@v4
with:
name: portainer-compose.yml
path: ~/${{ env.ARTIFACT_SUFFIX }}/portainer-compose.yml
- name: Upload variables.env
uses: actions/upload-artifact@v4
with:
name: variables.env
path: ~/${{ env.ARTIFACT_SUFFIX }}/variables.env
publish_release:
if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' }}
name: Build Release
@@ -456,7 +651,7 @@ jobs:
branch_build_push_web,
branch_build_push_space,
branch_build_push_live,
branch_build_push_apiserver,
branch_build_push_api,
branch_build_push_proxy,
branch_build_push_monitor,
branch_build_push_email,
@@ -466,18 +661,32 @@ jobs:
env:
REL_VERSION: ${{ needs.branch_build_setup.outputs.release_version }}
ARTIFACT_SUFFIX: ${{ needs.branch_build_setup.outputs.artifact_s3_suffix }}
AIRGAPPED_ARM64_BUILD: ${{ needs.branch_build_setup.outputs.arm64_build == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
# - name: Download Artifact
# uses: actions/download-artifact@v4
# with:
# path: /tmp/airgapped
# merge-multiple: true
- name: Download podman quadlets
uses: actions/download-artifact@v4
with:
name: podman-quadlets.tar.gz
path: deployments/podman/commercial/
- name: Update docker-compose
run: |
sed -i 's@APP_RELEASE_VERSION=.*@APP_RELEASE_VERSION='${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/variables.env
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/docker-compose-caddy.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/coolify-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deploy/cli-install/portainer-compose.yml
cp deploy/cli-install/docker-compose-caddy.yml deploy/cli-install/docker-compose.yml
cp deploy/cli-install/portainer-compose.yml deploy/cli-install/swarm-compose.yml
sed -i 's@APP_RELEASE_VERSION=.*@APP_RELEASE_VERSION='${{ env.ARTIFACT_SUFFIX }}'@' deployments/cli/commercial/variables.env
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/cli/commercial/docker-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/coolify/commercial/coolify-compose.yml
sed -i 's@${APP_RELEASE_VERSION.*@'${{ env.ARTIFACT_SUFFIX }}'@' deployments/portainer/commercial/portainer-compose.yml
cp deployments/cli/commercial/docker-compose.yml deployments/cli/commercial/docker-compose-caddy.yml
cp deployments/portainer/commercial/portainer-compose.yml deployments/portainer/commercial/swarm-compose.yml
- name: Create Release
id: create_release
@@ -491,8 +700,376 @@ jobs:
prerelease: ${{ env.IS_PRERELEASE }}
generate_release_notes: true
files: |
${{ github.workspace }}/deploy/cli-install/variables.env
${{ github.workspace }}/deploy/cli-install/docker-compose.yml
${{ github.workspace }}/deploy/cli-install/coolify-compose.yml
${{ github.workspace }}/deploy/cli-install/portainer-compose.yml
${{ github.workspace }}/deploy/cli-install/swarm-compose.yml
${{ github.workspace }}/deployments/cli/commercial/variables.env
${{ github.workspace }}/deployments/cli/commercial/docker-compose.yml
${{ github.workspace }}/deployments/coolify/commercial/coolify-compose.yml
${{ github.workspace }}/deployments/portainer/commercial/portainer-compose.yml
${{ github.workspace }}/deployments/portainer/commercial/swarm-compose.yml
${{ github.workspace }}/deployments/podman/commercial/podman-quadlets.tar.gz
package_airgapped_artifacts:
if: ${{ needs.branch_build_setup.outputs.airgapped_build == 'true' || needs.branch_build_setup.outputs.build_type == 'Release' }}
name: Package Airgapped Artifacts
runs-on: ubuntu-22.04
needs:
[
branch_build_setup,
branch_build_push_admin,
branch_build_push_web,
branch_build_push_space,
branch_build_push_live,
branch_build_push_api,
branch_build_push_proxy,
branch_build_push_monitor,
branch_build_push_email,
branch_build_push_silo,
upload_artifacts_s3,
]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SELF_HOST_BUCKET_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SELF_HOST_BUCKET_SECRET_KEY }}
AWS_DEFAULT_REGION: ${{ vars.SELF_HOST_BUCKET_REGION }}
REL_VERSION: ${{ needs.branch_build_setup.outputs.release_version }}
ARTIFACT_SUFFIX: ${{ needs.branch_build_setup.outputs.artifact_s3_suffix }}
AIRGAPPED_RELEASE_VERSION: ${{ needs.branch_build_setup.outputs.release_version }}
S3_PATH: "s3://${{ vars.SELF_HOST_BUCKET_NAME }}/plane-enterprise/${{ needs.branch_build_setup.outputs.artifact_s3_suffix }}"
S3_REGION: ${{ vars.SELF_HOST_BUCKET_REGION }}
COMMIT_HASH: $(git rev-parse HEAD)
PRESIGNED_URL_EXPIRY: 604800 # 7 days (max allowed by AWS)
AIRGAPPED_ARM64_BUILD: ${{ needs.branch_build_setup.outputs.arm64_build == 'true' }}
steps:
- id: checkout_files
name: Checkout Files
uses: actions/checkout@v4
- id: install-qemu
uses: docker/setup-qemu-action@v3
- name: Docker Setup
uses: docker/setup-buildx-action@v3
- name: Setup yq
run: |
echo "Installing yq..."
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod +x /usr/local/bin/yq
- name: Install crane
run: |
echo "Installing crane..."
curl -sL "https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz" | tar -xz -C /usr/local/bin crane
sudo chmod +x /usr/local/bin/crane
- id: install-aws-cli
uses: unfor19/install-aws-cli-action@v1
with:
version: 2
- name: Get secrets by name
uses: aws-actions/aws-secretsmanager-get-secrets@v2
with:
secret-ids: |
GPG_KEYS,github/actions/plane-ee/branch-build-ee
parse-json-secrets: true
- name: Save GPG secrets
id: save_gpg_secrets
run: |
mkdir -p /tmp/gpg_keys
single_line_key="${{ env.GPG_KEYS_GPG_PRIVATE_KEY }}"
begin_part="-----BEGIN PGP PRIVATE KEY BLOCK----- "
end_part="-----END PGP PRIVATE KEY BLOCK-----"
middle=$(echo "$single_line_key" | sed "s/$begin_part//" | sed "s/$end_part//")
formatted_middle=$(echo "$middle" | sed 's/ /\n/g')
pem_key="${begin_part}${formatted_middle}${end_part}"
passphrase="${{ env.GPG_KEYS_GPG_PRIVATE_KEY_PASSPHRASE }}"
echo "$begin_part" > /tmp/gpg_keys/gpg_private_key.pem
echo "$formatted_middle" >> /tmp/gpg_keys/gpg_private_key.pem
echo "$end_part" >> /tmp/gpg_keys/gpg_private_key.pem
echo "$passphrase" > /tmp/gpg_keys/gpg_private_key_passphrase.txt
echo "GPG_PRIVATE_KEY_PASSPHRASE=${passphrase}" >> $GITHUB_OUTPUT
- name: Download podman quadlets
uses: actions/download-artifact@v4
with:
name: podman-quadlets.tar.gz
path: /tmp/podman-quadlets
- id: package_airgapped_artifacts
name: Package Airgapped Artifacts
env:
GPG_PUBLIC_KEY_ID: ${{ vars.GPG_PUBLIC_KEY_ID }}
CR_PASSPHRASE_FILE: ${{ env.GNUPGHOME }}/gpg-passphrase
run: |
echo "Setup GPG environment..."
GPG_PRIVATE_KEY=$(cat /tmp/gpg_keys/gpg_private_key.pem)
GPG_PRIVATE_KEY_PASSPHRASE=${{ steps.save_gpg_secrets.outputs.GPG_PRIVATE_KEY_PASSPHRASE }}
mkdir -p ${{env.GNUPGHOME}}
chmod 700 ${{env.GNUPGHOME}}
# Disable the use of the gpg-agent
echo "use-agent" >> ${{env.GNUPGHOME}}/gpg.conf
echo "pinentry-mode loopback" >> ${{env.GNUPGHOME}}/gpg.conf
echo "no-tty" >> ${{env.GNUPGHOME}}/gpg.conf
echo "no-autostart" >> ${{env.GNUPGHOME}}/gpg-agent.conf
echo "allow-loopback-pinentry" >> ${{env.GNUPGHOME}}/gpg-agent.conf
echo "${GPG_PRIVATE_KEY_PASSPHRASE}" > ${{env.CR_PASSPHRASE_FILE}}
echo "Importing GPG key..."
echo "${GPG_PRIVATE_KEY}" | gpg --import --batch --yes
if [ $? -ne 0 ]; then
echo "GPG key import failed!"
exit 1
fi
echo "GPG key imported successfully."
echo "Exporting GPG public key..."
gpg --export -a $GPG_PUBLIC_KEY_ID > "/tmp/plane_public_key.asc"
AIRGAPPED_RELEASE_VERSION=${{ env.AIRGAPPED_RELEASE_VERSION }}
if [ "${{ needs.branch_build_setup.outputs.build_type}}" == "Build" ]; then
AIRGAPPED_RELEASE_VERSION=${{ needs.branch_build_setup.outputs.gh_branch_name }}
fi
echo "AIRGAPPED_RELEASE_VERSION=$AIRGAPPED_RELEASE_VERSION" >> $GITHUB_ENV
# Common function for packaging and signing
package_and_sign() {
local platform_suffix=$1 # "amd64" or "arm64"
local s3_path_prefix="${{ env.S3_PATH }}/airgapped-${platform_suffix}"
local tarball_name="airgapped-${platform_suffix}.tar.gz"
local sha_file="${tarball_name}.sha256"
local asc_file="${sha_file}.asc"
mkdir -p "/tmp/airgapped-${platform_suffix}"
cp /tmp/podman-quadlets/podman-quadlets.tar.gz .
echo "Copying platform specific files to /tmp/airgapped-${platform_suffix}..."
cp docker-compose.yml "/tmp/airgapped-${platform_suffix}/airgapped-docker-compose-${platform_suffix}.yml"
# For our first run, if we're in amd64, we'll need to copy the plane.env file
if [ "${platform_suffix}" == "amd64" ]; then
cp plane.env "/tmp/airgapped-plane.env"
cp install.sh "/tmp/airgapped-install.sh"
fi
echo "Packaging airgapped artifacts for ${platform_suffix}..."
tar -czf "${tarball_name}" *
cp "${tarball_name}" "/tmp/airgapped-${platform_suffix}/"
echo "Generating SHA256 sum for ${tarball_name}..."
sha256sum "${tarball_name}" > "${sha_file}"
echo "Signing SHA256 sum for ${tarball_name} with key ID ${GPG_PUBLIC_KEY_ID}..."
gpg --local-user ${GPG_PUBLIC_KEY_ID} --pinentry-mode loopback --detach-sign --armor --batch --yes --passphrase-file "${{env.CR_PASSPHRASE_FILE}}" "${sha_file}"
if [ $? -ne 0 ]; then
echo "GPG signing failed for ${platform_suffix}!"
exit 1
fi
echo "GPG signing successful for ${platform_suffix}."
echo "Copying ${asc_file} to /tmp/airgapped-${platform_suffix}..."
cp "${asc_file}" "/tmp/airgapped-${platform_suffix}/"
echo "Uploading ${platform_suffix} artifacts to S3..."
aws s3 cp "${tarball_name}" "${s3_path_prefix}.tar.gz"
aws s3 cp "${asc_file}" "${s3_path_prefix}.tar.gz.sha256.asc"
echo "${platform_suffix} artifacts and signatures uploaded to S3 at ${s3_path_prefix}"
echo "Creating presigned URLs for ${platform_suffix} artifacts..."
S3_PRESIGNED_URL=$(aws s3 presign "${s3_path_prefix}.tar.gz" --expires-in ${{ env.PRESIGNED_URL_EXPIRY }} --region ${{ env.S3_REGION }})
echo "$S3_PRESIGNED_URL" > "/tmp/presigned_url_${platform_suffix}.txt"
S3_PRESIGNED_URL_ASC=$(aws s3 presign "${s3_path_prefix}.tar.gz.sha256.asc" --expires-in ${{ env.PRESIGNED_URL_EXPIRY }} --region ${{ env.S3_REGION }})
echo "$S3_PRESIGNED_URL_ASC" > "/tmp/presigned_url_${platform_suffix}_sha256_asc.txt"
echo "Presigned URLs for ${platform_suffix} created."
}
# Build for amd64
echo "Starting AMD64 build..."
cd ${{ github.workspace }}/deployments/airgapped/commercial
bash ./build.sh --release=$AIRGAPPED_RELEASE_VERSION --platform=linux/amd64
cd dist
package_and_sign "amd64"
# Build for arm64
echo "AIRGAPPED_ARM64_BUILD=${{ env.AIRGAPPED_ARM64_BUILD }}" >> $GITHUB_OUTPUT
if [ "${{ env.AIRGAPPED_ARM64_BUILD }}" == "true" ]; then
echo "Starting ARM64 build..."
cd ${{ github.workspace }}/deployments/airgapped/commercial
bash ./build.sh --release=$AIRGAPPED_RELEASE_VERSION --platform=linux/arm64
cd dist
package_and_sign "arm64"
fi
echo "COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Upload Public Key
uses: actions/upload-artifact@v4
with:
name: plane_public_key.asc
path: /tmp/plane_public_key.asc
- name: Upload Airgapped Plane Env
uses: actions/upload-artifact@v4
with:
name: airgapped-plane.env
path: /tmp/airgapped-plane.env
- name: Upload Airgapped Install Script
uses: actions/upload-artifact@v4
with:
name: airgapped-install.sh
path: /tmp/airgapped-install.sh
- name: Upload Airgapped Docker Compose (AMD64)
uses: actions/upload-artifact@v4
with:
name: airgapped-docker-compose-amd64.yml
path: /tmp/airgapped-amd64/airgapped-docker-compose-amd64.yml
# - name: Upload Airgapped Tarball (AMD64)
# uses: actions/upload-artifact@v4
# with:
# name: airgapped-amd64.tar.gz
# path: /tmp//airgapped-amd64/airgapped-amd64.tar.gz
- name: Upload Tarball Signature (AMD64)
uses: actions/upload-artifact@v4
with:
name: airgapped-amd64.tar.gz.sha256.asc
path: /tmp/airgapped-amd64/airgapped-amd64.tar.gz.sha256.asc
- name: Upload Airgapped Presigned URL (AMD64)
uses: actions/upload-artifact@v4
with:
name: pre-signed-url-amd64.txt
path: /tmp/presigned_url_amd64.txt
- name: Upload Airgapped Presigned URL (AMD64 SHA256 ASC)
uses: actions/upload-artifact@v4
with:
name: pre-signed-url-amd64-sha256.asc.txt
path: /tmp/presigned_url_amd64_sha256_asc.txt
- name: Upload Airgapped Docker Compose (ARM64)
if: ${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD == 'true' }}
uses: actions/upload-artifact@v4
with:
name: airgapped-docker-compose-arm64.yml
path: /tmp/airgapped-arm64/airgapped-docker-compose-arm64.yml
# - name: Upload Airgapped Tarball (ARM64)
# if: ${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD == 'true' }}
# uses: actions/upload-artifact@v4
# with:
# name: airgapped-arm64.tar.gz
# path: /tmp/airgapped-arm64/airgapped-arm64.tar.gz
- name: Upload Tarball Signature (ARM64)
if: ${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD == 'true' }}
uses: actions/upload-artifact@v4
with:
name: airgapped-arm64.tar.gz.sha256.asc
path: /tmp/airgapped-arm64/airgapped-arm64.tar.gz.sha256.asc
- name: Upload Airgapped Presigned URL (ARM64)
if: ${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD == 'true' }}
uses: actions/upload-artifact@v4
with:
name: pre-signed-url-arm64.txt
path: /tmp/presigned_url_arm64.txt
- name: Upload Airgapped Presigned URL (ARM64 SHA256 ASC)
if: ${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD == 'true' }}
uses: actions/upload-artifact@v4
with:
name: pre-signed-url-arm64-sha256.asc.txt
path: /tmp/presigned_url_arm64_sha256_asc.txt
- name: Attach Airgapped Artifacts (AMD64)
if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' }}
uses: softprops/action-gh-release@v2.0.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ env.REL_VERSION }}
name: ${{ env.REL_VERSION }}
draft: false
prerelease: ${{ env.IS_PRERELEASE }}
files: |
/tmp/airgapped-plane.env
/tmp/airgapped-install.sh
/tmp/plane_public_key.asc
/tmp/airgapped-amd64/airgapped-docker-compose-amd64.yml
/tmp/airgapped-amd64/airgapped-amd64.tar.gz
/tmp/airgapped-amd64/airgapped-amd64.tar.gz.sha256.asc
- name: Attach Airgapped Artifacts (ARM64)
if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' && needs.branch_build_setup.outputs.arm64_build == 'true' }}
uses: softprops/action-gh-release@v2.0.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ env.REL_VERSION }}
name: ${{ env.REL_VERSION }}
draft: false
prerelease: ${{ env.IS_PRERELEASE }}
files: |
/tmp/airgapped-arm64/airgapped-docker-compose-arm64.yml
/tmp/airgapped-arm64/airgapped-arm64.tar.gz
/tmp/airgapped-arm64/airgapped-arm64.tar.gz.sha256.asc
- name: Airgapped Package Summary
run: |
# Print Step Build Summary
echo "# 🚀 Airgapped Build Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## 🌍 Artifacts" >> $GITHUB_STEP_SUMMARY
echo "| Key | Value |" >> $GITHUB_STEP_SUMMARY
echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
echo "| Release Version | \`${{ env.AIRGAPPED_RELEASE_VERSION }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path Public Key | \`${{ env.S3_PATH }}/plane_public_key.asc\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path Plane Env | \`${{ env.S3_PATH }}/airgapped-plane.env\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path AMD | \`${{ env.S3_PATH }}/airgapped-amd64.tar.gz\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path AMD SHA256 | \`${{ env.S3_PATH }}/airgapped-amd64.tar.gz.sha256\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path AMD SHA256 ASC | \`${{ env.S3_PATH }}/airgapped-amd64.tar.gz.sha256.asc\` |" >> $GITHUB_STEP_SUMMARY
if [ "${{ steps.package_airgapped_artifacts.outputs.AIRGAPPED_ARM64_BUILD }}" == "true" ]; then
echo "| S3 Path ARM | \`${{ env.S3_PATH }}/airgapped-arm64.tar.gz\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path ARM SHA256 | \`${{ env.S3_PATH }}/airgapped-arm64.tar.gz.sha256\` |" >> $GITHUB_STEP_SUMMARY
echo "| S3 Path ARM SHA256 ASC | \`${{ env.S3_PATH }}/airgapped-arm64.tar.gz.sha256.asc\` |" >> $GITHUB_STEP_SUMMARY
fi
echo "| Git Branch | \`${{env.TARGET_BRANCH}}\` |" >> $GITHUB_STEP_SUMMARY
echo "| Git Commit Hash | \`${{ env.COMMIT_HASH }}\` |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
cat >> $GITHUB_STEP_SUMMARY << 'EOF'
## 📘 Usage Instructions
```bash
curl -fsSL -o airgapped-[amd64|arm64].tar.gz "<presigned-url>"
mkdir -p airgapped
tar -xzf airgapped-[amd64|arm64].tar.gz -C airgapped
cd airgapped
bash install.sh
```
Importing Public Key for Verification
```bash
curl -fsSL -o plane_public_key.asc "<presigned-url>"
gpg --import plane_public_key.asc
```
Verification of SHA256 and ASC files:
```bash
curl -fsSL -o airgapped-[amd64|arm64].tar.gz "<presigned-url>"
sha256sum -c airgapped-[amd64|arm64].tar.gz.sha256
curl -fsSL -o airgapped-[amd64|arm64].tar.gz.sha256.asc "<presigned-url>"
gpg --verify airgapped-[amd64|arm64].tar.gz.sha256.asc
```
EOF
+133 -18
View File
@@ -25,17 +25,27 @@ on:
required: false
default: false
type: boolean
aio_build:
description: "Build for AIO docker image"
required: false
default: false
type: boolean
push:
branches:
- preview
- canary
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
TARGET_BRANCH: ${{ github.ref_name }}
ARM64_BUILD: ${{ github.event.inputs.arm64 }}
BUILD_TYPE: ${{ github.event.inputs.build_type }}
RELEASE_VERSION: ${{ github.event.inputs.releaseVersion }}
IS_PRERELEASE: ${{ github.event.inputs.isPrerelease }}
AIO_BUILD: ${{ github.event.inputs.aio_build }}
jobs:
branch_build_setup:
@@ -54,11 +64,13 @@ jobs:
dh_img_live: ${{ steps.set_env_variables.outputs.DH_IMG_LIVE }}
dh_img_backend: ${{ steps.set_env_variables.outputs.DH_IMG_BACKEND }}
dh_img_proxy: ${{ steps.set_env_variables.outputs.DH_IMG_PROXY }}
dh_img_aio: ${{ steps.set_env_variables.outputs.DH_IMG_AIO }}
build_type: ${{steps.set_env_variables.outputs.BUILD_TYPE}}
build_release: ${{ steps.set_env_variables.outputs.BUILD_RELEASE }}
build_prerelease: ${{ steps.set_env_variables.outputs.BUILD_PRERELEASE }}
release_version: ${{ steps.set_env_variables.outputs.RELEASE_VERSION }}
aio_build: ${{ steps.set_env_variables.outputs.AIO_BUILD }}
steps:
- id: set_env_variables
@@ -84,12 +96,15 @@ jobs:
echo "DH_IMG_LIVE=plane-live" >> $GITHUB_OUTPUT
echo "DH_IMG_BACKEND=plane-backend" >> $GITHUB_OUTPUT
echo "DH_IMG_PROXY=plane-proxy" >> $GITHUB_OUTPUT
echo "DH_IMG_AIO=plane-aio-community" >> $GITHUB_OUTPUT
echo "BUILD_TYPE=${{env.BUILD_TYPE}}" >> $GITHUB_OUTPUT
BUILD_RELEASE=false
BUILD_PRERELEASE=false
RELVERSION="latest"
BUILD_AIO=${{ env.AIO_BUILD }}
if [ "${{ env.BUILD_TYPE }}" == "Release" ]; then
FLAT_RELEASE_VERSION=$(echo "${{ env.RELEASE_VERSION }}" | sed 's/[^a-zA-Z0-9.-]//g')
echo "FLAT_RELEASE_VERSION=${FLAT_RELEASE_VERSION}" >> $GITHUB_OUTPUT
@@ -108,10 +123,14 @@ jobs:
if [ "${{ env.IS_PRERELEASE }}" == "true" ]; then
BUILD_PRERELEASE=true
fi
BUILD_AIO=true
fi
echo "BUILD_RELEASE=${BUILD_RELEASE}" >> $GITHUB_OUTPUT
echo "BUILD_PRERELEASE=${BUILD_PRERELEASE}" >> $GITHUB_OUTPUT
echo "RELEASE_VERSION=${RELVERSION}" >> $GITHUB_OUTPUT
echo "AIO_BUILD=${BUILD_AIO}" >> $GITHUB_OUTPUT
- id: checkout_files
name: Checkout Files
@@ -133,7 +152,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_admin }}
build-context: .
dockerfile-path: ./admin/Dockerfile.admin
dockerfile-path: ./apps/admin/Dockerfile.admin
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -155,7 +174,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_web }}
build-context: .
dockerfile-path: ./web/Dockerfile.web
dockerfile-path: ./apps/web/Dockerfile.web
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -177,7 +196,7 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_space }}
build-context: .
dockerfile-path: ./space/Dockerfile.space
dockerfile-path: ./apps/space/Dockerfile.space
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -199,13 +218,13 @@ jobs:
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_live }}
build-context: .
dockerfile-path: ./live/Dockerfile.live
dockerfile-path: ./apps/live/Dockerfile.live
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
branch_build_push_apiserver:
branch_build_push_api:
name: Build-Push API Server Docker Image
runs-on: ubuntu-22.04
needs: [branch_build_setup]
@@ -220,8 +239,8 @@ jobs:
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_backend }}
build-context: ./apiserver
dockerfile-path: ./apiserver/Dockerfile.api
build-context: ./apps/api
dockerfile-path: ./apps/api/Dockerfile.api
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
@@ -242,13 +261,108 @@ jobs:
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_proxy }}
build-context: ./nginx
dockerfile-path: ./nginx/Dockerfile
build-context: ./apps/proxy
dockerfile-path: ./apps/proxy/Dockerfile.ce
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
branch_build_push_aio:
if: ${{ needs.branch_build_setup.outputs.aio_build == 'true' }}
name: Build-Push AIO Docker Image
runs-on: ubuntu-22.04
needs:
- branch_build_setup
- branch_build_push_admin
- branch_build_push_web
- branch_build_push_space
- branch_build_push_live
- branch_build_push_api
- branch_build_push_proxy
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Prepare AIO Assets
id: prepare_aio_assets
run: |
cd deployments/aio/community
if [ "${{ needs.branch_build_setup.outputs.build_type }}" == "Release" ]; then
aio_version=${{ needs.branch_build_setup.outputs.release_version }}
else
aio_version=${{ needs.branch_build_setup.outputs.gh_branch_name }}
fi
bash ./build.sh --release $aio_version
echo "AIO_BUILD_VERSION=${aio_version}" >> $GITHUB_OUTPUT
- name: Upload AIO Assets
uses: actions/upload-artifact@v4
with:
path: ./deployments/aio/community/dist
name: aio-assets-dist
- name: AIO Build and Push
uses: makeplane/actions/build-push@v1.1.0
with:
build-release: ${{ needs.branch_build_setup.outputs.build_release }}
build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }}
release-version: ${{ needs.branch_build_setup.outputs.release_version }}
dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
docker-image-owner: makeplane
docker-image-name: ${{ needs.branch_build_setup.outputs.dh_img_aio }}
build-context: ./deployments/aio/community
dockerfile-path: ./deployments/aio/community/Dockerfile
buildx-driver: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }}
buildx-version: ${{ needs.branch_build_setup.outputs.gh_buildx_version }}
buildx-platforms: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }}
buildx-endpoint: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }}
additional-assets: aio-assets-dist
additional-assets-dir: ./deployments/aio/community/dist
build-args: |
PLANE_VERSION=${{ steps.prepare_aio_assets.outputs.AIO_BUILD_VERSION }}
upload_build_assets:
name: Upload Build Assets
runs-on: ubuntu-22.04
needs:
- branch_build_setup
- branch_build_push_admin
- branch_build_push_web
- branch_build_push_space
- branch_build_push_live
- branch_build_push_api
- branch_build_push_proxy
steps:
- name: Checkout Files
uses: actions/checkout@v4
- name: Update Assets
run: |
if [ "${{ needs.branch_build_setup.outputs.build_type }}" == "Release" ]; then
REL_VERSION=${{ needs.branch_build_setup.outputs.release_version }}
else
REL_VERSION=${{ needs.branch_build_setup.outputs.gh_branch_name }}
fi
cp ./deployments/cli/community/install.sh deployments/cli/community/setup.sh
sed -i 's/${APP_RELEASE:-stable}/${APP_RELEASE:-'${REL_VERSION}'}/g' deployments/cli/community/docker-compose.yml
# sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deployments/cli/community/variables.env
- name: Upload Assets
uses: actions/upload-artifact@v4
with:
name: community-assets
path: |
./deployments/cli/community/setup.sh
./deployments/cli/community/restore.sh
./deployments/cli/community/restore-airgapped.sh
./deployments/cli/community/docker-compose.yml
./deployments/cli/community/variables.env
./deployments/swarm/community/swarm.sh
publish_release:
if: ${{ needs.branch_build_setup.outputs.build_type == 'Release' }}
name: Build Release
@@ -260,7 +374,7 @@ jobs:
branch_build_push_web,
branch_build_push_space,
branch_build_push_live,
branch_build_push_apiserver,
branch_build_push_api,
branch_build_push_proxy,
]
env:
@@ -271,9 +385,9 @@ jobs:
- name: Update Assets
run: |
cp ./deploy/selfhost/install.sh deploy/selfhost/setup.sh
sed -i 's/${APP_RELEASE:-stable}/${APP_RELEASE:-'${REL_VERSION}'}/g' deploy/selfhost/docker-compose.yml
sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deploy/selfhost/variables.env
cp ./deployments/cli/community/install.sh deployments/cli/community/setup.sh
sed -i 's/${APP_RELEASE:-stable}/${APP_RELEASE:-'${REL_VERSION}'}/g' deployments/cli/community/docker-compose.yml
# sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deployments/cli/community/variables.env
- name: Create Release
id: create_release
@@ -287,8 +401,9 @@ jobs:
prerelease: ${{ env.IS_PRERELEASE }}
generate_release_notes: true
files: |
${{ github.workspace }}/deploy/selfhost/setup.sh
${{ github.workspace }}/deploy/selfhost/swarm.sh
${{ github.workspace }}/deploy/selfhost/restore.sh
${{ github.workspace }}/deploy/selfhost/docker-compose.yml
${{ github.workspace }}/deploy/selfhost/variables.env
${{ github.workspace }}/deployments/cli/community/setup.sh
${{ github.workspace }}/deployments/cli/community/restore.sh
${{ github.workspace }}/deployments/cli/community/restore-airgapped.sh
${{ github.workspace }}/deployments/cli/community/docker-compose.yml
${{ github.workspace }}/deployments/cli/community/variables.env
${{ github.workspace }}/deployments/swarm/community/swarm.sh
@@ -1,95 +0,0 @@
name: Build and Lint on Pull Request
on:
workflow_dispatch:
pull_request:
types: ["opened", "synchronize", "ready_for_review"]
jobs:
lint-apiserver:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x" # Specify the Python version you need
- name: Install Pylint
run: python -m pip install ruff
- name: Install Apiserver Dependencies
run: cd apiserver && pip install -r requirements.txt
- name: Lint apiserver
run: ruff check --fix apiserver
lint-admin:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn lint --filter=admin
lint-space:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn lint --filter=space
lint-web:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn lint --filter=web
build-admin:
needs: lint-admin
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn build --filter=admin
build-space:
needs: lint-space
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn build --filter=space
build-web:
needs: lint-web
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install
- run: yarn build --filter=web
-2
View File
@@ -17,8 +17,6 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Get PR Branch version
run: echo "PR_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV
+2 -4
View File
@@ -3,11 +3,9 @@ name: "CodeQL"
on:
workflow_dispatch:
push:
branches: ["preview", "master"]
branches: ["preview", "canary", "master"]
pull_request:
branches: ["develop", "preview", "master"]
schedule:
- cron: "53 19 * * 5"
branches: ["preview", "canary", "master"]
jobs:
analyze:
-70
View File
@@ -1,70 +0,0 @@
name: Manual Release Workflow
on:
workflow_dispatch:
inputs:
release_tag:
description: 'Release Tag (e.g., v0.16-cannary-1)'
required: true
prerelease:
description: 'Pre-Release'
required: true
default: true
type: boolean
draft:
description: 'Draft'
required: true
default: true
type: boolean
permissions:
contents: write
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 # Necessary to fetch all history for tags
- name: Set up Git
run: |
git config user.name "github-actions"
git config user.email "github-actions@github.com"
- name: Check for the Prerelease
run: |
echo ${{ github.event.release.prerelease }}
- name: Generate Release Notes
id: generate_notes
run: |
bash ./generate_release_notes.sh
# Directly use the content of RELEASE_NOTES.md for the release body
RELEASE_NOTES=$(cat RELEASE_NOTES.md)
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo "$RELEASE_NOTES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Create Tag
run: |
git tag ${{ github.event.inputs.release_tag }}
git push origin ${{ github.event.inputs.release_tag }}
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.release_tag }}
body_path: RELEASE_NOTES.md
draft: ${{ github.event.inputs.draft }}
prerelease: ${{ github.event.inputs.prerelease }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,40 @@
name: Build and lint API
on:
workflow_dispatch:
pull_request:
branches:
- "preview"
types:
- "opened"
- "synchronize"
- "ready_for_review"
- "review_requested"
- "reopened"
paths:
- "apps/api/**"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint-api:
name: Lint API
runs-on: ubuntu-latest
timeout-minutes: 25
if: |
github.event.pull_request.draft == false &&
github.event.pull_request.requested_reviewers != null
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Pylint
run: python -m pip install ruff
- name: Install API Dependencies
run: cd apps/api && pip install -r requirements.txt
- name: Lint apps/api
run: ruff check --fix apps/api
@@ -0,0 +1,53 @@
name: Build and lint web apps
on:
workflow_dispatch:
pull_request:
branches:
- "preview"
types:
- "opened"
- "synchronize"
- "ready_for_review"
- "review_requested"
- "reopened"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-lint:
name: Build and lint web apps
runs-on: ubuntu-latest
timeout-minutes: 25
if: |
github.event.pull_request.draft == false &&
github.event.pull_request.requested_reviewers != null
env:
TURBO_SCM_BASE: ${{ github.event.pull_request.base.sha }}
TURBO_SCM_HEAD: ${{ github.sha }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 50
filter: blob:none
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Enable Corepack and pnpm
run: corepack enable pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint Affected
run: pnpm turbo run check:lint --affected
- name: Check Affected format
run: pnpm turbo run check:format --affected
# - name: Build Affected
# run: pnpm turbo run build --affected
+14 -3
View File
@@ -1,5 +1,6 @@
node_modules
.next
.yarn
### NextJS ###
# Dependencies
@@ -23,11 +24,13 @@ out/
.DS_Store
*.pem
.history
tsconfig.tsbuildinfo
# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
.pnpm-debug.log*
# Local env files
@@ -52,11 +55,14 @@ mediafiles
.env
.DS_Store
logs/
htmlcov/
.coverage
node_modules/
assets/dist/
npm-debug.log
yarn-error.log
pnpm-debug.log
# Editor directories and files
.idea
@@ -72,10 +78,9 @@ package-lock.json
# lock files
package-lock.json
pnpm-lock.yaml
pnpm-workspace.yaml
.npmrc
.secrets
tmp/
@@ -94,7 +99,13 @@ dev-editor
*.rdb
*.rdb.gz
storybook-static
# Monitor
monitor/prime.key
monitor/prime.key.pub
monitor.db
.cursorrules
.cursor
claude.md
agents.md
+34
View File
@@ -0,0 +1,34 @@
# Enforce pnpm workspace behavior and allow Turbo's lifecycle hooks if scripts are disabled
# This repo uses pnpm with workspaces.
# Prefer linking local workspace packages when available
prefer-workspace-packages=true
link-workspace-packages=true
shared-workspace-lockfile=true
# Make peer installs smoother across the monorepo
auto-install-peers=true
strict-peer-dependencies=false
# If scripts are disabled (e.g., CI with --ignore-scripts), allowlisted packages can still run their hooks
# Turbo occasionally performs postinstall tasks for optimal performance
# moved to pnpm-workspace.yaml: onlyBuiltDependencies (e.g., allow turbo)
public-hoist-pattern[]=*eslint*
public-hoist-pattern[]=prettier
public-hoist-pattern[]=typescript
# Reproducible installs across CI and dev
prefer-frozen-lockfile=true
# Prefer resolving to highest versions in monorepo to reduce duplication
resolution-mode=highest
# Speed up native module builds by caching side effects
side-effects-cache=true
# Speed up local dev by reusing local store when possible
prefer-offline=true
# Ensure workspace protocol is used when adding internal deps
save-workspace-protocol=true
View File
+86 -45
View File
@@ -15,20 +15,40 @@ Without said minimal reproduction, we won't be able to investigate all [issues](
You can open a new issue with this [issue form](https://github.com/makeplane/plane/issues/new).
### Naming conventions for issues
When opening a new issue, please use a clear and concise title that follows this format:
- For bugs: `🐛 Bug: [short description]`
- For features: `🚀 Feature: [short description]`
- For improvements: `🛠️ Improvement: [short description]`
- For documentation: `📘 Docs: [short description]`
**Examples:**
- `🐛 Bug: API token expiry time not saving correctly`
- `📘 Docs: Clarify RAM requirement for local setup`
- `🚀 Feature: Allow custom time selection for token expiration`
This helps us triage and manage issues more efficiently.
## Projects setup and Architecture
### Requirements
- Node.js version v16.18.0
- Docker Engine installed and running
- Node.js version 20+ [LTS version](https://nodejs.org/en/about/previous-releases)
- Python version 3.8+
- Postgres version v14
- Redis version v6.2.7
- **Memory**: Minimum **12 GB RAM** recommended
> ⚠️ Running the project on a system with only 8 GB RAM may lead to setup failures or memory crashes (especially during Docker container build/start or dependency install). Use cloud environments like GitHub Codespaces or upgrade local RAM if possible.
### Setup the project
The project is a monorepo, with backend api and frontend in a single repo.
The backend is a django project which is kept inside apiserver
The backend is a django project which is kept inside apps/api
1. Clone the repo
@@ -50,6 +70,17 @@ chmod +x setup.sh
docker compose -f docker-compose-local.yml up
```
4. Start web apps:
```bash
pnpm dev
```
5. Open your browser to http://localhost:3001/god-mode/ and register yourself as instance admin
6. Open up your browser to http://localhost:3000 then log in using the same credentials from the previous step
Thats it! Youre all set to begin coding. Remember to refresh your browser if changes dont auto-reload. Happy contributing! 🎉
## Missing a Feature?
If a feature is missing, you can directly _request_ a new one [here](https://github.com/makeplane/plane/issues/new?assignees=&labels=feature&template=feature_request.yml&title=%F0%9F%9A%80+Feature%3A+). You also can do the same by choosing "🚀 Feature" when raising a [New Issue](https://github.com/makeplane/plane/issues/new/choose) on our GitHub Repository.
@@ -75,11 +106,13 @@ To ensure consistency throughout the source code, please keep these rules in min
- **Improve documentation** - fix incomplete or missing [docs](https://docs.plane.so/), bad wording, examples or explanations.
## Contributing to language support
This guide is designed to help contributors understand how to add or update translations in the application.
This guide is designed to help contributors understand how to add or update translations in the application.
### Understanding translation structure
#### File organization
Translations are organized by language in the locales directory. Each language has its own folder containing JSON files for translations. Here's how it looks:
```
@@ -90,9 +123,11 @@ packages/i18n/src/locales/
├── fr/
│ └── translations.json
└── [language]/
└── translations.json
└── translations.json
```
#### Nested structure
To keep translations organized, we use a nested structure for keys. This makes it easier to manage and locate specific translations. For example:
```json
@@ -107,32 +142,37 @@ To keep translations organized, we use a nested structure for keys. This makes i
```
### Translation formatting guide
We use [IntlMessageFormat](https://formatjs.github.io/docs/intl-messageformat/) to handle dynamic content, such as variables and pluralization. Here's how to format your translations:
#### Examples
- **Simple variables**
```json
{
"greeting": "Hello, {name}!"
}
```
- **Pluralization**
```json
{
- **Simple variables**
```json
{
"greeting": "Hello, {name}!"
}
```
- **Pluralization**
```json
{
"items": "{count, plural, one {Work item} other {Work items}}"
}
```
}
```
### Contributing guidelines
#### Updating existing translations
1. Locate the key in `locales/<language>/translations.json`.
2. Update the value while ensuring the key structure remains intact.
3. Preserve any existing ICU formats (e.g., variables, pluralization).
#### Adding new translation keys
1. When introducing a new key, ensure it is added to **all** language files, even if translations are not immediately available. Use English as a placeholder if needed.
2. Keep the nesting structure consistent across all languages.
@@ -140,48 +180,48 @@ We use [IntlMessageFormat](https://formatjs.github.io/docs/intl-messageformat/)
3. If the new key requires dynamic content (e.g., variables or pluralization), ensure the ICU format is applied uniformly across all languages.
### Adding new languages
Adding a new language involves several steps to ensure it integrates seamlessly with the project. Follow these instructions carefully:
1. **Update type definitions**
Add the new language to the TLanguage type in the language definitions file:
1. **Update type definitions**
Add the new language to the TLanguage type in the language definitions file:
```typescript
// types/language.ts
export type TLanguage = "en" | "fr" | "your-lang";
```
```ts
// packages/i18n/src/types/language.ts
export type TLanguage = "en" | "fr" | "your-lang";
```
2. **Add language configuration**
Include the new language in the list of supported languages:
1. **Add language configuration**
Include the new language in the list of supported languages:
```ts
// packages/i18n/src/constants/language.ts
export const SUPPORTED_LANGUAGES: ILanguageOption[] = [
{ label: "English", value: "en" },
{ label: "Your Language", value: "your-lang" }
];
```
```typescript
// constants/language.ts
export const SUPPORTED_LANGUAGES: ILanguageOption[] = [
{ label: "English", value: "en" },
{ label: "Your Language", value: "your-lang" }
];
```
3. **Create translation files**
1. Create a new folder for your language under locales (e.g., `locales/your-lang/`).
2. **Create translation files**
1. Create a new folder for your language under locales (e.g., `locales/your-lang/`).
2. Add a `translations.json` file inside the folder.
3. Copy the structure from an existing translation file and translate all keys.
4. **Update import logic**
Modify the language import logic to include your new language:
```typescript
private importLanguageFile(language: TLanguage): Promise<any> {
switch (language) {
case "your-lang":
return import("../locales/your-lang/translations.json");
// ...
}
}
```
3. **Update import logic**
Modify the language import logic to include your new language:
```ts
private importLanguageFile(language: TLanguage): Promise<any> {
switch (language) {
case "your-lang":
return import("../locales/your-lang/translations.json");
// ...
}
}
```
### Quality checklist
Before submitting your contribution, please ensure the following:
- All translation keys exist in every language file.
@@ -192,6 +232,7 @@ Before submitting your contribution, please ensure the following:
- There are no missing or untranslated keys.
#### Pro tips
- When in doubt, refer to the English translations for context.
- Verify pluralization works with different numbers.
- Ensure dynamic values (e.g., `{name}`) are correctly interpolated.
-88
View File
@@ -1,88 +0,0 @@
# Environment Variables
Environment variables are distributed in various files. Please refer them carefully.
## {PROJECT_FOLDER}/.env
File is available in the project root folder
```
# Database Settings
POSTGRES_USER="plane"
POSTGRES_PASSWORD="plane"
POSTGRES_DB="plane"
PGDATA="/var/lib/postgresql/data"
# Redis Settings
REDIS_HOST="plane-redis"
REDIS_PORT="6379"
# AWS Settings
AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the nginx.conf for uploads if using minio setup
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
# GPT settings
OPENAI_API_BASE="https://api.openai.com/v1" # deprecated
OPENAI_API_KEY="sk-" # deprecated
GPT_ENGINE="gpt-4o-mini" # deprecated
# Settings related to Docker
DOCKERIZED=1 # deprecated
# set to 1 If using the pre-configured minio setup
USE_MINIO=1
# Nginx Configuration
NGINX_PORT=80
```
## {PROJECT_FOLDER}/apiserver/.env
```
# Backend
# Debug value for api server use it as 0 for production use
DEBUG=0
CORS_ALLOWED_ORIGINS="http://localhost"
# Database Settings
POSTGRES_USER="plane"
POSTGRES_PASSWORD="plane"
POSTGRES_HOST="plane-db"
POSTGRES_DB="plane"
POSTGRES_PORT=5432
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
# Redis Settings
REDIS_HOST="plane-redis"
REDIS_PORT="6379"
REDIS_URL="redis://${REDIS_HOST}:6379/"
# AWS Settings
AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the nginx.conf for uploads if using minio setup
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
# Settings related to Docker
DOCKERIZED=1 # deprecated
# set to 1 If using the pre-configured minio setup
USE_MINIO=1
# Nginx Configuration
NGINX_PORT=80
# Email redirections and minio domain settings
WEB_URL="http://localhost"
# Gunicorn Workers
GUNICORN_WORKERS=2
# Base URLs
ADMIN_BASE_URL=
SPACE_BASE_URL=
APP_BASE_URL=
SECRET_KEY="gxoytl7dmnc1y37zahah820z5iq3iozu38cnfjtu3yaau9cd9z"
```
## Updates
- The naming convention for containers and images has been updated.
- The plane-worker image will no longer be maintained, as it has been merged with plane-backend.
- The Tiptap pro-extension dependency has been removed, eliminating the need for Tiptap API keys.
- The image name for Plane deployment has been changed to plane-space.
+40 -88
View File
@@ -2,11 +2,10 @@
<p align="center">
<a href="https://plane.so">
<img src="https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-readme/plane_logo_.webp" alt="Plane Logo" width="70">
<img src="https://media.docs.plane.so/logo/plane_github_readme.png" alt="Plane Logo" width="400">
</a>
</p>
<h1 align="center"><b>Plane</b></h1>
<p align="center"><b>Open-source project management that unlocks customer value</b></p>
<p align="center"><b>Modern project management for all teams</b></p>
<p align="center">
<a href="https://discord.com/invite/A92xrEGCge">
@@ -25,14 +24,7 @@
<p>
<a href="https://app.plane.so/#gh-light-mode-only" target="_blank">
<img
src="https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-readme/plane_screen.webp"
alt="Plane Screens"
width="100%"
/>
</a>
<a href="https://app.plane.so/#gh-dark-mode-only" target="_blank">
<img
src="https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-readme/plane_screens_dark_mode.webp"
src="https://media.docs.plane.so/GitHub-readme/github-top.webp"
alt="Plane Screens"
width="100%"
/>
@@ -47,14 +39,14 @@ Meet [Plane](https://plane.so/), an open-source project management tool to track
Getting started with Plane is simple. Choose the setup that works best for you:
- **Plane Cloud**
Sign up for a free account on [Plane Cloud](https://app.plane.so)—it's the fastest way to get up and running without worrying about infrastructure.
- **Plane Cloud**
Sign up for a free account on [Plane Cloud](https://app.plane.so)—it's the fastest way to get up and running without worrying about infrastructure.
- **Self-host Plane**
Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed [deployment guides](https://developers.plane.so/self-hosting/overview) to get started.
- **Self-host Plane**
Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed [deployment guides](https://developers.plane.so/self-hosting/overview) to get started.
| Installation methods | Docs link |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Installation methods | Docs link |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Docker | [![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://developers.plane.so/self-hosting/methods/docker-compose) |
| Kubernetes | [![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white)](https://developers.plane.so/self-hosting/methods/kubernetes) |
@@ -62,90 +54,59 @@ Prefer full control over your data and infrastructure? Install and run Plane on
## 🌟 Features
- **Issues**
Efficiently create and manage tasks with a robust rich text editor that supports file uploads. Enhance organization and tracking by adding sub-properties and referencing related issues.
- **Issues**
Efficiently create and manage tasks with a robust rich text editor that supports file uploads. Enhance organization and tracking by adding sub-properties and referencing related issues.
- **Cycles**
Maintain your teams momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.
- **Cycles**
Maintain your teams momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.
- **Modules**
Simplify complex projects by dividing them into smaller, manageable modules.
- **Modules**
Simplify complex projects by dividing them into smaller, manageable modules.
- **Views**
Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.
- **Views**
Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.
- **Pages**
Capture and organize ideas using Plane Pages, complete with AI capabilities and a rich text editor. Format text, insert images, add hyperlinks, or convert your notes into actionable items.
- **Pages**
Capture and organize ideas using Plane Pages, complete with AI capabilities and a rich text editor. Format text, insert images, add hyperlinks, or convert your notes into actionable items.
- **Analytics**
Access real-time insights across all your Plane data. Visualize trends, remove blockers, and keep your projects moving forward.
- **Analytics**
Access real-time insights across all your Plane data. Visualize trends, remove blockers, and keep your projects moving forward.
- **Drive** (_coming soon_): The drive helps you share documents, images, videos, or any other files that make sense to you or your team and align on the problem/solution.
## 🛠️ Local development
### Pre-requisites
- Ensure Docker Engine is installed and running.
### Development setup
Setting up your local environment is simple and straightforward. Follow these steps to get started:
1. Clone the repository:
```
git clone https://github.com/makeplane/plane.git
```
2. Navigate to the project folder:
```
cd plane
```
3. Create a new branch for your feature or fix:
```
git checkout -b <feature-branch-name>
```
4. Run the setup script in the terminal:
```
./setup.sh
```
5. Open the project in an IDE such as VS Code.
6. Review the `.env` files in the relevant folders. Refer to [Environment Setup](./ENV_SETUP.md) for details on the environment variables used.
7. Start the services using Docker:
```
docker compose -f docker-compose-local.yml up -d
```
Thats it! Youre all set to begin coding. Remember to refresh your browser if changes dont auto-reload. Happy contributing! 🎉
See [CONTRIBUTING](./CONTRIBUTING.md)
## ⚙️ Built with
[![Next JS](https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)](https://nextjs.org/)
[![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge&logo=django&logoColor=green)](https://www.djangoproject.com/)
[![Node JS](https://img.shields.io/badge/node.js-339933?style=for-the-badge&logo=Node.js&logoColor=white)](https://nodejs.org/en)
## 📸 Screenshots
<p>
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Issues_rNZjrGgFl.png?updatedAt=1709298765880"
src="https://media.docs.plane.so/GitHub-readme/github-work-items.webp"
alt="Plane Views"
width="100%"
/>
</a>
</p>
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Cycles_jCDhqmTl9.png?updatedAt=1709298780697"
width="100%"
/>
</a>
</p>
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Modules_PSCVsbSfI.png?updatedAt=1709298796783"
src="https://media.docs.plane.so/GitHub-readme/github-cycles.webp"
width="100%"
/>
</a>
</p>
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://media.docs.plane.so/GitHub-readme/github-modules.webp"
alt="Plane Cycles and Modules"
width="100%"
/>
@@ -154,7 +115,7 @@ Thats it! Youre all set to begin coding. Remember to refresh your browser
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Views_uxXsRatS4.png?updatedAt=1709298834522"
src="https://media.docs.plane.so/GitHub-readme/github-views.webp"
alt="Plane Analytics"
width="100%"
/>
@@ -163,25 +124,16 @@ Thats it! Youre all set to begin coding. Remember to refresh your browser
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Analytics_0o22gLRtp.png?updatedAt=1709298834389"
src="https://media.docs.plane.so/GitHub-readme/github-analytics.webp"
alt="Plane Pages"
width="100%"
/>
</a>
</p>
</p>
<p>
<a href="https://plane.so" target="_blank">
<img
src="https://ik.imagekit.io/w2okwbtu2/Drive_LlfeY4xn3.png?updatedAt=1709298837917"
alt="Plane Command Menu"
width="100%"
/>
</a>
</p>
</p>
## 📝 Documentation
Explore Plane's [product documentation](https://docs.plane.so/) and [developer documentation](https://developers.plane.so/) to learn about features, setup, and usage.
## ❤️ Community
@@ -194,7 +146,7 @@ Feel free to ask questions, report bugs, participate in discussions, share ideas
If you discover a security vulnerability in Plane, please report it responsibly instead of opening a public issue. We take all legitimate reports seriously and will investigate them promptly. See [Security policy](https://github.com/makeplane/plane/blob/master/SECURITY.md) for more info.
To disclose any security issues, please email us at security@plane.so.
To disclose any security issues, please email us at security@plane.so.
## 🤝 Contributing
@@ -217,6 +169,6 @@ Please read [CONTRIBUTING.md](https://github.com/makeplane/plane/blob/master/CON
<img src="https://contrib.rocks/image?repo=makeplane/plane" />
</a>
## License
This project is licensed under the [GNU Affero General Public License v3.0](https://github.com/makeplane/plane/blob/master/LICENSE.txt).
This project is licensed under the [GNU Affero General Public License v3.0](https://github.com/makeplane/plane/blob/master/LICENSE.txt).
-3
View File
@@ -1,3 +0,0 @@
NEXT_PUBLIC_API_BASE_URL=""
NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
NEXT_PUBLIC_WEB_BASE_URL=""
-5
View File
@@ -1,5 +0,0 @@
module.exports = {
root: true,
extends: ["@plane/eslint-config/next.js"],
parser: "@typescript-eslint/parser",
};
-6
View File
@@ -1,6 +0,0 @@
.next
.vercel
.tubro
out/
dis/
build/
-88
View File
@@ -1,88 +0,0 @@
FROM node:20-alpine as base
# *****************************************************************************
# STAGE 1: Build the project
# *****************************************************************************
FROM base AS builder
RUN apk add --no-cache libc6-compat
WORKDIR /app
RUN yarn global add turbo
COPY . .
RUN turbo prune --scope=admin --docker
# *****************************************************************************
# STAGE 2: Install dependencies & build the project
# *****************************************************************************
FROM base AS installer
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/yarn.lock ./yarn.lock
RUN yarn install --network-timeout 500000
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
ARG NEXT_PUBLIC_API_BASE_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
ENV NEXT_TELEMETRY_DISABLED 1
ENV TURBO_TELEMETRY_DISABLED 1
RUN yarn turbo run build --filter=admin
# *****************************************************************************
# STAGE 3: Copy the project and start it
# *****************************************************************************
FROM base AS runner
WORKDIR /app
COPY --from=installer /app/admin/next.config.js .
COPY --from=installer /app/admin/package.json .
COPY --from=installer /app/admin/.next/standalone ./
COPY --from=installer /app/admin/.next/static ./admin/.next/static
COPY --from=installer /app/admin/public ./admin/public
ARG NEXT_PUBLIC_API_BASE_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
ENV NEXT_TELEMETRY_DISABLED 1
ENV TURBO_TELEMETRY_DISABLED 1
EXPOSE 3000
-17
View File
@@ -1,17 +0,0 @@
FROM node:20-alpine
RUN apk add --no-cache libc6-compat
# Set working directory
WORKDIR /app
COPY . .
RUN yarn global add turbo
RUN yarn install
ENV NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
EXPOSE 3000
VOLUME [ "/app/node_modules", "/app/admin/node_modules" ]
CMD ["yarn", "dev", "--filter=admin"]
-134
View File
@@ -1,134 +0,0 @@
"use client";
import { FC } from "react";
import { useForm } from "react-hook-form";
import { Lightbulb } from "lucide-react";
import { IFormattedInstanceConfiguration, TInstanceAIConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, setToast } from "@plane/ui";
// components
import { ControllerInput, TControllerInputFormField } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type IInstanceAIForm = {
config: IFormattedInstanceConfiguration;
};
type AIFormValues = Record<TInstanceAIConfigurationKeys, string>;
export const InstanceAIForm: FC<IInstanceAIForm> = (props) => {
const { config } = props;
// store
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
formState: { errors, isSubmitting },
} = useForm<AIFormValues>({
defaultValues: {
LLM_API_KEY: config["LLM_API_KEY"],
LLM_MODEL: config["LLM_MODEL"],
},
});
const aiFormFields: TControllerInputFormField[] = [
{
key: "LLM_MODEL",
type: "text",
label: "LLM Model",
description: (
<>
Choose an OpenAI engine.{" "}
<a
href="https://platform.openai.com/docs/models/overview"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
Learn more
</a>
</>
),
placeholder: "gpt-4o-mini",
error: Boolean(errors.LLM_MODEL),
required: false,
},
{
key: "LLM_API_KEY",
type: "password",
label: "API key",
description: (
<>
You will find your API key{" "}
<a
href="https://platform.openai.com/api-keys"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
here.
</a>
</>
),
placeholder: "sk-asddassdfasdefqsdfasd23das3dasdcasd",
error: Boolean(errors.LLM_API_KEY),
required: false,
},
];
const onSubmit = async (formData: AIFormValues) => {
const payload: Partial<AIFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then(() =>
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Success",
message: "AI Settings updated successfully",
})
)
.catch((err) => console.error(err));
};
return (
<div className="space-y-8">
<div className="space-y-3">
<div>
<div className="pb-1 text-xl font-medium text-custom-text-100">OpenAI</div>
<div className="text-sm font-normal text-custom-text-300">If you use ChatGPT, this is for you.</div>
</div>
<div className="grid-col grid w-full grid-cols-1 items-center justify-between gap-x-12 gap-y-8 lg:grid-cols-3">
{aiFormFields.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
</div>
</div>
<div className="space-y-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<div className="relative inline-flex items-center gap-2 rounded border border-custom-primary-100/20 bg-custom-primary-100/10 px-4 py-2 text-xs text-custom-primary-200">
<Lightbulb height="14" width="14" />
<div>
If you have a preferred AI models vendor, please get in{" "}
<a className="underline font-medium" href="https://plane.so/contact">
touch with us.
</a>
</div>
</div>
</div>
</div>
);
};
-11
View File
@@ -1,11 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
import { AdminLayout } from "@/layouts/admin-layout";
export const metadata: Metadata = {
title: "Artificial Intelligence Settings - Plane Web",
};
export default function AILayout({ children }: { children: ReactNode }) {
return <AdminLayout>{children}</AdminLayout>;
}
-231
View File
@@ -1,231 +0,0 @@
"use client";
import { FC, useState } from "react";
import isEmpty from "lodash/isEmpty";
import Link from "next/link";
import { useForm } from "react-hook-form";
// plane internal packages
import { API_BASE_URL } from "@plane/constants";
import { IFormattedInstanceConfiguration, TInstanceGithubAuthenticationConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import {
CodeBlock,
ConfirmDiscardModal,
ControllerInput,
CopyField,
TControllerInputFormField,
TCopyField,
} from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type Props = {
config: IFormattedInstanceConfiguration;
};
type GithubConfigFormValues = Record<TInstanceGithubAuthenticationConfigurationKeys, string>;
export const InstanceGithubConfigForm: FC<Props> = (props) => {
const { config } = props;
// states
const [isDiscardChangesModalOpen, setIsDiscardChangesModalOpen] = useState(false);
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
reset,
formState: { errors, isDirty, isSubmitting },
} = useForm<GithubConfigFormValues>({
defaultValues: {
GITHUB_CLIENT_ID: config["GITHUB_CLIENT_ID"],
GITHUB_CLIENT_SECRET: config["GITHUB_CLIENT_SECRET"],
GITHUB_ORGANIZATION_ID: config["GITHUB_ORGANIZATION_ID"],
},
});
const originURL = !isEmpty(API_BASE_URL) ? API_BASE_URL : typeof window !== "undefined" ? window.location.origin : "";
const GITHUB_FORM_FIELDS: TControllerInputFormField[] = [
{
key: "GITHUB_CLIENT_ID",
type: "text",
label: "Client ID",
description: (
<>
You will get this from your{" "}
<a
tabIndex={-1}
href="https://github.com/settings/applications/new"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
GitHub OAuth application settings.
</a>
</>
),
placeholder: "70a44354520df8bd9bcd",
error: Boolean(errors.GITHUB_CLIENT_ID),
required: true,
},
{
key: "GITHUB_CLIENT_SECRET",
type: "password",
label: "Client secret",
description: (
<>
Your client secret is also found in your{" "}
<a
tabIndex={-1}
href="https://github.com/settings/applications/new"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
GitHub OAuth application settings.
</a>
</>
),
placeholder: "9b0050f94ec1b744e32ce79ea4ffacd40d4119cb",
error: Boolean(errors.GITHUB_CLIENT_SECRET),
required: true,
},
{
key: "GITHUB_ORGANIZATION_ID",
type: "text",
label: "Organization ID",
description: (
<>
The organization github ID.
</>
),
placeholder: "123456789",
error: Boolean(errors.GITHUB_ORGANIZATION_ID),
required: false,
},
];
const GITHUB_SERVICE_FIELD: TCopyField[] = [
{
key: "Origin_URL",
label: "Origin URL",
url: originURL,
description: (
<>
We will auto-generate this. Paste this into the <CodeBlock darkerShade>Authorized origin URL</CodeBlock> field{" "}
<a
tabIndex={-1}
href="https://github.com/settings/applications/new"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
here.
</a>
</>
),
},
{
key: "Callback_URI",
label: "Callback URI",
url: `${originURL}/auth/github/callback/`,
description: (
<>
We will auto-generate this. Paste this into your <CodeBlock darkerShade>Authorized Callback URI</CodeBlock>{" "}
field{" "}
<a
tabIndex={-1}
href="https://github.com/settings/applications/new"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
here.
</a>
</>
),
},
];
const onSubmit = async (formData: GithubConfigFormValues) => {
const payload: Partial<GithubConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then((response = []) => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Done!",
message: "Your GitHub authentication is configured. You should test it now.",
});
reset({
GITHUB_CLIENT_ID: response.find((item) => item.key === "GITHUB_CLIENT_ID")?.value,
GITHUB_CLIENT_SECRET: response.find((item) => item.key === "GITHUB_CLIENT_SECRET")?.value,
GITHUB_ORGANIZATION_ID: response.find((item) => item.key === "GITHUB_ORGANIZATION_ID")?.value,
});
})
.catch((err) => console.error(err));
};
const handleGoBack = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
if (isDirty) {
e.preventDefault();
setIsDiscardChangesModalOpen(true);
}
};
return (
<>
<ConfirmDiscardModal
isOpen={isDiscardChangesModalOpen}
onDiscardHref="/authentication"
handleClose={() => setIsDiscardChangesModalOpen(false)}
/>
<div className="flex flex-col gap-8">
<div className="grid grid-cols-2 gap-x-12 gap-y-8 w-full">
<div className="flex flex-col gap-y-4 col-span-2 md:col-span-1 pt-1">
<div className="pt-2.5 text-xl font-medium">GitHub-provided details for Plane</div>
{GITHUB_FORM_FIELDS.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
<div className="flex flex-col gap-1 pt-4">
<div className="flex items-center gap-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting} disabled={!isDirty}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<Link
href="/authentication"
className={cn(getButtonStyling("neutral-primary", "md"), "font-medium")}
onClick={handleGoBack}
>
Go back
</Link>
</div>
</div>
</div>
<div className="col-span-2 md:col-span-1">
<div className="flex flex-col gap-y-4 px-6 pt-1.5 pb-4 bg-custom-background-80/60 rounded-lg">
<div className="pt-2 text-xl font-medium">Plane-provided details for GitHub</div>
{GITHUB_SERVICE_FIELD.map((field) => (
<CopyField key={field.key} label={field.label} url={field.url} description={field.description} />
))}
</div>
</div>
</div>
</div>
</>
);
};
-114
View File
@@ -1,114 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react";
import Image from "next/image";
import { useTheme } from "next-themes";
import useSWR from "swr";
// plane internal packages
import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui";
import { resolveGeneralTheme } from "@plane/utils";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
import { PageHeader } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
// icons
import githubLightModeImage from "@/public/logos/github-black.png";
import githubDarkModeImage from "@/public/logos/github-white.png";
// local components
import { InstanceGithubConfigForm } from "./form";
const InstanceGithubAuthenticationPage = observer(() => {
// store
const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance();
// state
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// theme
const { resolvedTheme } = useTheme();
// config
const enableGithubConfig = formattedConfig?.IS_GITHUB_ENABLED ?? "";
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
const updateConfig = async (key: "IS_GITHUB_ENABLED", value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving Configuration...",
success: {
title: "Configuration saved",
message: () => `GitHub authentication is now ${value ? "active" : "disabled"}.`,
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
return (
<>
<PageHeader title="GitHub Authentication - Plane Web" />
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<AuthenticationMethodCard
name="GitHub"
description="Allow members to login or sign up to plane with their GitHub accounts."
icon={
<Image
src={resolveGeneralTheme(resolvedTheme) === "dark" ? githubDarkModeImage : githubLightModeImage}
height={24}
width={24}
alt="GitHub Logo"
/>
}
config={
<ToggleSwitch
value={Boolean(parseInt(enableGithubConfig))}
onChange={() => {
Boolean(parseInt(enableGithubConfig)) === true
? updateConfig("IS_GITHUB_ENABLED", "0")
: updateConfig("IS_GITHUB_ENABLED", "1");
}}
size="sm"
disabled={isSubmitting || !formattedConfig}
/>
}
disabled={isSubmitting || !formattedConfig}
withBorder={false}
/>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceGithubConfigForm config={formattedConfig} />
) : (
<Loader className="space-y-8">
<Loader.Item height="50px" width="25%" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" width="50%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceGithubAuthenticationPage;
-212
View File
@@ -1,212 +0,0 @@
import { FC, useState } from "react";
import isEmpty from "lodash/isEmpty";
import Link from "next/link";
import { useForm } from "react-hook-form";
// plane internal packages
import { API_BASE_URL } from "@plane/constants";
import { IFormattedInstanceConfiguration, TInstanceGitlabAuthenticationConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import {
CodeBlock,
ConfirmDiscardModal,
ControllerInput,
CopyField,
TControllerInputFormField,
TCopyField,
} from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type Props = {
config: IFormattedInstanceConfiguration;
};
type GitlabConfigFormValues = Record<TInstanceGitlabAuthenticationConfigurationKeys, string>;
export const InstanceGitlabConfigForm: FC<Props> = (props) => {
const { config } = props;
// states
const [isDiscardChangesModalOpen, setIsDiscardChangesModalOpen] = useState(false);
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
reset,
formState: { errors, isDirty, isSubmitting },
} = useForm<GitlabConfigFormValues>({
defaultValues: {
GITLAB_HOST: config["GITLAB_HOST"],
GITLAB_CLIENT_ID: config["GITLAB_CLIENT_ID"],
GITLAB_CLIENT_SECRET: config["GITLAB_CLIENT_SECRET"],
},
});
const originURL = !isEmpty(API_BASE_URL) ? API_BASE_URL : typeof window !== "undefined" ? window.location.origin : "";
const GITLAB_FORM_FIELDS: TControllerInputFormField[] = [
{
key: "GITLAB_HOST",
type: "text",
label: "Host",
description: (
<>
This is either https://gitlab.com or the <CodeBlock>domain.tld</CodeBlock> where you host GitLab.
</>
),
placeholder: "https://gitlab.com",
error: Boolean(errors.GITLAB_HOST),
required: true,
},
{
key: "GITLAB_CLIENT_ID",
type: "text",
label: "Application ID",
description: (
<>
Get this from your{" "}
<a
tabIndex={-1}
href="https://docs.gitlab.com/ee/integration/oauth_provider.html"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
GitLab OAuth application settings
</a>
.
</>
),
placeholder: "c2ef2e7fc4e9d15aa7630f5637d59e8e4a27ff01dceebdb26b0d267b9adcf3c3",
error: Boolean(errors.GITLAB_CLIENT_ID),
required: true,
},
{
key: "GITLAB_CLIENT_SECRET",
type: "password",
label: "Secret",
description: (
<>
The client secret is also found in your{" "}
<a
tabIndex={-1}
href="https://docs.gitlab.com/ee/integration/oauth_provider.html"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
GitLab OAuth application settings
</a>
.
</>
),
placeholder: "gloas-f79cfa9a03c97f6ffab303177a5a6778a53c61e3914ba093412f68a9298a1b28",
error: Boolean(errors.GITLAB_CLIENT_SECRET),
required: true,
},
];
const GITLAB_SERVICE_FIELD: TCopyField[] = [
{
key: "Callback_URL",
label: "Callback URL",
url: `${originURL}/auth/gitlab/callback/`,
description: (
<>
We will auto-generate this. Paste this into the <CodeBlock darkerShade>Redirect URI</CodeBlock> field of your{" "}
<a
tabIndex={-1}
href="https://docs.gitlab.com/ee/integration/oauth_provider.html"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
GitLab OAuth application
</a>
.
</>
),
},
];
const onSubmit = async (formData: GitlabConfigFormValues) => {
const payload: Partial<GitlabConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then((response = []) => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Done!",
message: "Your GitLab authentication is configured. You should test it now.",
});
reset({
GITLAB_HOST: response.find((item) => item.key === "GITLAB_HOST")?.value,
GITLAB_CLIENT_ID: response.find((item) => item.key === "GITLAB_CLIENT_ID")?.value,
GITLAB_CLIENT_SECRET: response.find((item) => item.key === "GITLAB_CLIENT_SECRET")?.value,
});
})
.catch((err) => console.error(err));
};
const handleGoBack = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
if (isDirty) {
e.preventDefault();
setIsDiscardChangesModalOpen(true);
}
};
return (
<>
<ConfirmDiscardModal
isOpen={isDiscardChangesModalOpen}
onDiscardHref="/authentication"
handleClose={() => setIsDiscardChangesModalOpen(false)}
/>
<div className="flex flex-col gap-8">
<div className="grid grid-cols-2 gap-x-12 gap-y-8 w-full">
<div className="flex flex-col gap-y-4 col-span-2 md:col-span-1 pt-1">
<div className="pt-2.5 text-xl font-medium">GitLab-provided details for Plane</div>
{GITLAB_FORM_FIELDS.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
<div className="flex flex-col gap-1 pt-4">
<div className="flex items-center gap-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting} disabled={!isDirty}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<Link
href="/authentication"
className={cn(getButtonStyling("neutral-primary", "md"), "font-medium")}
onClick={handleGoBack}
>
Go back
</Link>
</div>
</div>
</div>
<div className="col-span-2 md:col-span-1">
<div className="flex flex-col gap-y-4 px-6 pt-1.5 pb-4 bg-custom-background-80/60 rounded-lg">
<div className="pt-2 text-xl font-medium">Plane-provided details for GitLab</div>
{GITLAB_SERVICE_FIELD.map((field) => (
<CopyField key={field.key} label={field.label} url={field.url} description={field.description} />
))}
</div>
</div>
</div>
</div>
</>
);
};
-101
View File
@@ -1,101 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react";
import Image from "next/image";
import useSWR from "swr";
import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
import { PageHeader } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
// icons
import GitlabLogo from "@/public/logos/gitlab-logo.svg";
// local components
import { InstanceGitlabConfigForm } from "./form";
const InstanceGitlabAuthenticationPage = observer(() => {
// store
const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance();
// state
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// config
const enableGitlabConfig = formattedConfig?.IS_GITLAB_ENABLED ?? "";
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
const updateConfig = async (key: "IS_GITLAB_ENABLED", value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving Configuration...",
success: {
title: "Configuration saved",
message: () => `GitLab authentication is now ${value ? "active" : "disabled"}.`,
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
return (
<>
<PageHeader title="GitLab Authentication - Plane Web" />
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<AuthenticationMethodCard
name="GitLab"
description="Allow members to login or sign up to plane with their GitLab accounts."
icon={<Image src={GitlabLogo} height={24} width={24} alt="GitLab Logo" />}
config={
<ToggleSwitch
value={Boolean(parseInt(enableGitlabConfig))}
onChange={() => {
Boolean(parseInt(enableGitlabConfig)) === true
? updateConfig("IS_GITLAB_ENABLED", "0")
: updateConfig("IS_GITLAB_ENABLED", "1");
}}
size="sm"
disabled={isSubmitting || !formattedConfig}
/>
}
disabled={isSubmitting || !formattedConfig}
withBorder={false}
/>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceGitlabConfigForm config={formattedConfig} />
) : (
<Loader className="space-y-8">
<Loader.Item height="50px" width="25%" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" width="50%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceGitlabAuthenticationPage;
-214
View File
@@ -1,214 +0,0 @@
"use client";
import { FC, useState } from "react";
import isEmpty from "lodash/isEmpty";
import Link from "next/link";
import { useForm } from "react-hook-form";
// plane internal packages
import { API_BASE_URL } from "@plane/constants";
import { IFormattedInstanceConfiguration, TInstanceGoogleAuthenticationConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import {
CodeBlock,
ConfirmDiscardModal,
ControllerInput,
CopyField,
TControllerInputFormField,
TCopyField,
} from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type Props = {
config: IFormattedInstanceConfiguration;
};
type GoogleConfigFormValues = Record<TInstanceGoogleAuthenticationConfigurationKeys, string>;
export const InstanceGoogleConfigForm: FC<Props> = (props) => {
const { config } = props;
// states
const [isDiscardChangesModalOpen, setIsDiscardChangesModalOpen] = useState(false);
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
reset,
formState: { errors, isDirty, isSubmitting },
} = useForm<GoogleConfigFormValues>({
defaultValues: {
GOOGLE_CLIENT_ID: config["GOOGLE_CLIENT_ID"],
GOOGLE_CLIENT_SECRET: config["GOOGLE_CLIENT_SECRET"],
},
});
const originURL = !isEmpty(API_BASE_URL) ? API_BASE_URL : typeof window !== "undefined" ? window.location.origin : "";
const GOOGLE_FORM_FIELDS: TControllerInputFormField[] = [
{
key: "GOOGLE_CLIENT_ID",
type: "text",
label: "Client ID",
description: (
<>
Your client ID lives in your Google API Console.{" "}
<a
tabIndex={-1}
href="https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow#creatingcred"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
Learn more
</a>
</>
),
placeholder: "840195096245-0p2tstej9j5nc4l8o1ah2dqondscqc1g.apps.googleusercontent.com",
error: Boolean(errors.GOOGLE_CLIENT_ID),
required: true,
},
{
key: "GOOGLE_CLIENT_SECRET",
type: "password",
label: "Client secret",
description: (
<>
Your client secret should also be in your Google API Console.{" "}
<a
tabIndex={-1}
href="https://developers.google.com/identity/oauth2/web/guides/get-google-api-clientid"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
Learn more
</a>
</>
),
placeholder: "GOCShX-ADp4cI0kPqav1gGCBg5bE02E",
error: Boolean(errors.GOOGLE_CLIENT_SECRET),
required: true,
},
];
const GOOGLE_SERVICE_DETAILS: TCopyField[] = [
{
key: "Origin_URL",
label: "Origin URL",
url: originURL,
description: (
<p>
We will auto-generate this. Paste this into your{" "}
<CodeBlock darkerShade>Authorized JavaScript origins</CodeBlock> field. For this OAuth client{" "}
<a
href="https://console.cloud.google.com/apis/credentials/oauthclient"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
here.
</a>
</p>
),
},
{
key: "Callback_URI",
label: "Callback URI",
url: `${originURL}/auth/google/callback/`,
description: (
<p>
We will auto-generate this. Paste this into your <CodeBlock darkerShade>Authorized Redirect URI</CodeBlock>{" "}
field. For this OAuth client{" "}
<a
href="https://console.cloud.google.com/apis/credentials/oauthclient"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
here.
</a>
</p>
),
},
];
const onSubmit = async (formData: GoogleConfigFormValues) => {
const payload: Partial<GoogleConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then((response = []) => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Done!",
message: "Your Google authentication is configured. You should test it now.",
});
reset({
GOOGLE_CLIENT_ID: response.find((item) => item.key === "GOOGLE_CLIENT_ID")?.value,
GOOGLE_CLIENT_SECRET: response.find((item) => item.key === "GOOGLE_CLIENT_SECRET")?.value,
});
})
.catch((err) => console.error(err));
};
const handleGoBack = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
if (isDirty) {
e.preventDefault();
setIsDiscardChangesModalOpen(true);
}
};
return (
<>
<ConfirmDiscardModal
isOpen={isDiscardChangesModalOpen}
onDiscardHref="/authentication"
handleClose={() => setIsDiscardChangesModalOpen(false)}
/>
<div className="flex flex-col gap-8">
<div className="grid grid-cols-2 gap-x-12 gap-y-8 w-full">
<div className="flex flex-col gap-y-4 col-span-2 md:col-span-1 pt-1">
<div className="pt-2.5 text-xl font-medium">Google-provided details for Plane</div>
{GOOGLE_FORM_FIELDS.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
<div className="flex flex-col gap-1 pt-4">
<div className="flex items-center gap-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting} disabled={!isDirty}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<Link
href="/authentication"
className={cn(getButtonStyling("neutral-primary", "md"), "font-medium")}
onClick={handleGoBack}
>
Go back
</Link>
</div>
</div>
</div>
<div className="col-span-2 md:col-span-1">
<div className="flex flex-col gap-y-4 px-6 pt-1.5 pb-4 bg-custom-background-80/60 rounded-lg">
<div className="pt-2 text-xl font-medium">Plane-provided details for Google</div>
{GOOGLE_SERVICE_DETAILS.map((field) => (
<CopyField key={field.key} label={field.label} url={field.url} description={field.description} />
))}
</div>
</div>
</div>
</div>
</>
);
};
-102
View File
@@ -1,102 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react";
import Image from "next/image";
import useSWR from "swr";
import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
import { PageHeader } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
// icons
import GoogleLogo from "@/public/logos/google-logo.svg";
// local components
import { InstanceGoogleConfigForm } from "./form";
const InstanceGoogleAuthenticationPage = observer(() => {
// store
const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance();
// state
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// config
const enableGoogleConfig = formattedConfig?.IS_GOOGLE_ENABLED ?? "";
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
const updateConfig = async (key: "IS_GOOGLE_ENABLED", value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving Configuration...",
success: {
title: "Configuration saved",
message: () => `Google authentication is now ${value ? "active" : "disabled"}.`,
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
return (
<>
<PageHeader title="Google Authentication - Plane Web" />
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<AuthenticationMethodCard
name="Google"
description="Allow members to login or sign up to plane with their Google
accounts."
icon={<Image src={GoogleLogo} height={24} width={24} alt="Google Logo" />}
config={
<ToggleSwitch
value={Boolean(parseInt(enableGoogleConfig))}
onChange={() => {
Boolean(parseInt(enableGoogleConfig)) === true
? updateConfig("IS_GOOGLE_ENABLED", "0")
: updateConfig("IS_GOOGLE_ENABLED", "1");
}}
size="sm"
disabled={isSubmitting || !formattedConfig}
/>
}
disabled={isSubmitting || !formattedConfig}
withBorder={false}
/>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceGoogleConfigForm config={formattedConfig} />
) : (
<Loader className="space-y-8">
<Loader.Item height="50px" width="25%" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" width="50%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceGoogleAuthenticationPage;
-11
View File
@@ -1,11 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
import { AdminLayout } from "@/layouts/admin-layout";
export const metadata: Metadata = {
title: "Authentication Settings - Plane Web",
};
export default function AuthenticationLayout({ children }: { children: ReactNode }) {
return <AdminLayout>{children}</AdminLayout>;
}
-240
View File
@@ -1,240 +0,0 @@
import { FC, useState } from "react";
import Link from "next/link";
import { useForm } from "react-hook-form";
// plane internal packages
import { IFormattedInstanceConfiguration, TInstanceOIDCAuthenticationConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import {
ConfirmDiscardModal,
ControllerInput,
TControllerInputFormField,
CopyField,
TCopyField,
CodeBlock,
} from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type Props = {
config: IFormattedInstanceConfiguration;
};
type OIDCConfigFormValues = Record<TInstanceOIDCAuthenticationConfigurationKeys, string>;
export const InstanceOIDCConfigForm: FC<Props> = (props) => {
const { config } = props;
// states
const [isDiscardChangesModalOpen, setIsDiscardChangesModalOpen] = useState(false);
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
reset,
formState: { errors, isDirty, isSubmitting },
} = useForm<OIDCConfigFormValues>({
defaultValues: {
OIDC_CLIENT_ID: config["OIDC_CLIENT_ID"],
OIDC_CLIENT_SECRET: config["OIDC_CLIENT_SECRET"],
OIDC_TOKEN_URL: config["OIDC_TOKEN_URL"],
OIDC_USERINFO_URL: config["OIDC_USERINFO_URL"],
OIDC_AUTHORIZE_URL: config["OIDC_AUTHORIZE_URL"],
OIDC_LOGOUT_URL: config["OIDC_LOGOUT_URL"],
OIDC_PROVIDER_NAME: config["OIDC_PROVIDER_NAME"],
},
});
const originURL = typeof window !== "undefined" ? window.location.origin : "";
const OIDC_FORM_FIELDS: TControllerInputFormField[] = [
{
key: "OIDC_CLIENT_ID",
type: "text",
label: "Client ID",
description: "A unique ID for this Plane app that you register on your IdP",
placeholder: "abc123xyz789",
error: Boolean(errors.OIDC_CLIENT_ID),
required: true,
},
{
key: "OIDC_CLIENT_SECRET",
type: "password",
label: "Client secret",
description: "The secret key that authenticates this Plane app to your IdP",
placeholder: "s3cr3tK3y123!",
error: Boolean(errors.OIDC_CLIENT_SECRET),
required: true,
},
{
key: "OIDC_AUTHORIZE_URL",
type: "text",
label: "Authorize URL",
description: (
<>
The URL that brings up your IdP{"'"}s authentication screen when your users click the{" "}
<CodeBlock>{"Continue with"}</CodeBlock>
</>
),
placeholder: "https://example.com/",
error: Boolean(errors.OIDC_AUTHORIZE_URL),
required: true,
},
{
key: "OIDC_TOKEN_URL",
type: "text",
label: "Token URL",
description: "The URL that talks to the IdP and persists user authentication on Plane",
placeholder: "https://example.com/oauth/token",
error: Boolean(errors.OIDC_TOKEN_URL),
required: true,
},
{
key: "OIDC_USERINFO_URL",
type: "text",
label: "Users' info URL",
description: "The URL that fetches your users' info from your IdP",
placeholder: "https://example.com/userinfo",
error: Boolean(errors.OIDC_USERINFO_URL),
required: true,
},
{
key: "OIDC_LOGOUT_URL",
type: "text",
label: "Logout URL",
description: "Optional field that controls where your users go after they log out of Plane",
placeholder: "https://example.com/logout",
error: Boolean(errors.OIDC_LOGOUT_URL),
required: false,
},
{
key: "OIDC_PROVIDER_NAME",
type: "text",
label: "IdP's name",
description: (
<>
Optional field for the name that your users see on the <CodeBlock>Continue with</CodeBlock> button
</>
),
placeholder: "Okta",
error: Boolean(errors.OIDC_PROVIDER_NAME),
required: false,
},
];
const OIDC_SERVICE_DETAILS: TCopyField[] = [
{
key: "Origin_URI",
label: "Origin URI",
url: `${originURL}/auth/oidc/`,
description:
"We will generate this for this Plane app. Add this as a trusted origin on your IdP's corresponding field.",
},
{
key: "Callback_URI",
label: "Callback URI",
url: `${originURL}/auth/oidc/callback/`,
description: (
<>
We will generate this for you.Add this in the <CodeBlock darkerShade>Sign-in redirect URI</CodeBlock> field of
your IdP.
</>
),
},
{
key: "Logout_URI",
label: "Logout URI",
url: `${originURL}/auth/oidc/logout/`,
description: (
<>
We will generate this for you. Add this in the <CodeBlock darkerShade>Logout redirect URI</CodeBlock> field of
your IdP.
</>
),
},
];
const onSubmit = async (formData: OIDCConfigFormValues) => {
const payload: Partial<OIDCConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then((response = []) => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Done!",
message: "Your OIDC-based authentication is configured. You should test it now.",
});
reset({
OIDC_CLIENT_ID: response.find((item) => item.key === "OIDC_CLIENT_ID")?.value,
OIDC_CLIENT_SECRET: response.find((item) => item.key === "OIDC_CLIENT_SECRET")?.value,
OIDC_AUTHORIZE_URL: response.find((item) => item.key === "OIDC_AUTHORIZE_URL")?.value,
OIDC_TOKEN_URL: response.find((item) => item.key === "OIDC_TOKEN_URL")?.value,
OIDC_USERINFO_URL: response.find((item) => item.key === "OIDC_USERINFO_URL")?.value,
OIDC_LOGOUT_URL: response.find((item) => item.key === "OIDC_LOGOUT_URL")?.value,
OIDC_PROVIDER_NAME: response.find((item) => item.key === "OIDC_PROVIDER_NAME")?.value,
});
})
.catch((err) => console.error(err));
};
const handleGoBack = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
if (isDirty) {
e.preventDefault();
setIsDiscardChangesModalOpen(true);
}
};
return (
<>
<ConfirmDiscardModal
isOpen={isDiscardChangesModalOpen}
onDiscardHref="/authentication"
handleClose={() => setIsDiscardChangesModalOpen(false)}
/>
<div className="flex flex-col gap-8">
<div className="grid grid-cols-2 gap-x-12 gap-y-8 w-full">
<div className="flex flex-col gap-y-4 col-span-2 md:col-span-1 pt-1">
<div className="pt-2.5 text-xl font-medium">IdP-provided details for Plane</div>
{OIDC_FORM_FIELDS.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
<div className="flex flex-col gap-1 pt-4">
<div className="flex items-center gap-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting} disabled={!isDirty}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<Link
href="/authentication"
className={cn(getButtonStyling("link-neutral", "md"), "font-medium")}
onClick={handleGoBack}
>
Go back
</Link>
</div>
</div>
</div>
<div className="col-span-2 md:col-span-1">
<div className="flex flex-col gap-y-4 px-6 pt-1.5 pb-4 bg-custom-background-80/60 rounded-lg">
<div className="pt-2 text-xl font-medium">Plane-provided details for your IdP</div>
{OIDC_SERVICE_DETAILS.map((field) => (
<CopyField key={field.key} label={field.label} url={field.url} description={field.description} />
))}
</div>
</div>
</div>
</div>
</>
);
};
-120
View File
@@ -1,120 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react-lite";
import Image from "next/image";
import useSWR from "swr";
// ui
import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
import { PageHeader } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
// icons
import OIDCLogo from "/public/logos/oidc-logo.svg";
// plane admin hooks
import { useInstanceFlag } from "@/plane-admin/hooks/store/use-instance-flag";
// local components
import { InstanceOIDCConfigForm } from "./form";
const InstanceOIDCAuthenticationPage = observer(() => {
// state
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// store
const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance();
// plane admin store
const isOIDCEnabled = useInstanceFlag("OIDC_SAML_AUTH");
// config
const enableOIDCConfig = formattedConfig?.IS_OIDC_ENABLED ?? "";
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
const updateConfig = async (key: "IS_OIDC_ENABLED", value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving Configuration...",
success: {
title: "Configuration saved",
message: () => `OIDC authentication is now ${value ? "active" : "disabled"}.`,
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
if (isOIDCEnabled === false) {
return (
<div className="relative container mx-auto w-full h-full p-4 py-4 my-6 space-y-6 flex flex-col">
<PageHeader title="Authentication - God Mode" />
<div className="text-center text-lg text-gray-500">
<p>OpenID Connect (OIDC) authentication is not enabled for this instance.</p>
<p>Activate any of your workspace to get this feature.</p>
</div>
</div>
);
}
return (
<>
<PageHeader title="Authentication - God Mode" />
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<AuthenticationMethodCard
name="OIDC"
description="Authenticate your users via the OpenID connect protocol."
icon={<Image src={OIDCLogo} height={24} width={24} alt="OIDC Logo" />}
config={
<ToggleSwitch
value={Boolean(parseInt(enableOIDCConfig))}
onChange={() => {
Boolean(parseInt(enableOIDCConfig)) === true
? updateConfig("IS_OIDC_ENABLED", "0")
: updateConfig("IS_OIDC_ENABLED", "1");
}}
size="sm"
disabled={isSubmitting || !formattedConfig}
/>
}
disabled={isSubmitting || !formattedConfig}
withBorder={false}
/>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceOIDCConfigForm config={formattedConfig} />
) : (
<Loader className="space-y-8">
<Loader.Item height="50px" width="25%" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" width="50%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceOIDCAuthenticationPage;
-238
View File
@@ -1,238 +0,0 @@
import { FC, useState } from "react";
import Link from "next/link";
import { Controller, useForm } from "react-hook-form";
// plane internal packages
import { IFormattedInstanceConfiguration, TInstanceSAMLAuthenticationConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, TextArea, getButtonStyling, setToast } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import {
ConfirmDiscardModal,
ControllerInput,
TControllerInputFormField,
CopyField,
TCopyField,
CodeBlock,
} from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
import { SAMLAttributeMappingTable } from "@/plane-admin/components/authentication";
type Props = {
config: IFormattedInstanceConfiguration;
};
type SAMLConfigFormValues = Record<TInstanceSAMLAuthenticationConfigurationKeys, string>;
export const InstanceSAMLConfigForm: FC<Props> = (props) => {
const { config } = props;
// states
const [isDiscardChangesModalOpen, setIsDiscardChangesModalOpen] = useState(false);
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
reset,
formState: { errors, isDirty, isSubmitting },
} = useForm<SAMLConfigFormValues>({
defaultValues: {
SAML_ENTITY_ID: config["SAML_ENTITY_ID"],
SAML_SSO_URL: config["SAML_SSO_URL"],
SAML_LOGOUT_URL: config["SAML_LOGOUT_URL"],
SAML_CERTIFICATE: config["SAML_CERTIFICATE"],
SAML_PROVIDER_NAME: config["SAML_PROVIDER_NAME"],
},
});
const originURL = typeof window !== "undefined" ? window.location.origin : "";
const SAML_FORM_FIELDS: TControllerInputFormField[] = [
{
key: "SAML_ENTITY_ID",
type: "text",
label: "Entity ID",
description: "A unique ID for this Plane app that you register on your IdP",
placeholder: "70a44354520df8bd9bcd",
error: Boolean(errors.SAML_ENTITY_ID),
required: true,
},
{
key: "SAML_SSO_URL",
type: "text",
label: "SSO URL",
description: (
<>
The URL that brings up your IdP{"'"}s authentication screen when your users click the{" "}
<CodeBlock>{"Continue with"}</CodeBlock> button
</>
),
placeholder: "https://example.com/sso",
error: Boolean(errors.SAML_SSO_URL),
required: true,
},
{
key: "SAML_LOGOUT_URL",
type: "text",
label: "Logout URL",
description: "Optional field that tells your IdP your users have logged out of this Plane app",
placeholder: "https://example.com/logout",
error: Boolean(errors.SAML_LOGOUT_URL),
required: false,
},
{
key: "SAML_PROVIDER_NAME",
type: "text",
label: "IdP's name",
description: (
<>
Optional field for the name that your users see on the <CodeBlock>Continue with</CodeBlock> button
</>
),
placeholder: "Okta",
error: Boolean(errors.SAML_PROVIDER_NAME),
required: false,
},
];
const SAML_SERVICE_DETAILS: TCopyField[] = [
{
key: "Metadata_Information",
label: "Entity ID | Audience | Metadata information",
url: `${originURL}/auth/saml/metadata/`,
description:
"We will generate this bit of the metadata that identifies this Plane app as an authorized service on your IdP.",
},
{
key: "Callback_URI",
label: "Callback URI",
url: `${originURL}/auth/saml/callback/`,
description: (
<>
We will generate this <CodeBlock darkerShade>http-post request</CodeBlock> URL that you should paste into your{" "}
<CodeBlock darkerShade>ACS URL</CodeBlock> or <CodeBlock darkerShade>Sign-in call back URL</CodeBlock> field
on your IdP.
</>
),
},
{
key: "Logout_URI",
label: "Logout URI",
url: `${originURL}/auth/saml/logout/`,
description: (
<>
We will generate this <CodeBlock darkerShade>http-redirect request</CodeBlock> URL that you should paste into
your <CodeBlock darkerShade>SLS URL</CodeBlock> or <CodeBlock darkerShade>Logout URL</CodeBlock>
field on your IdP.
</>
),
},
];
const onSubmit = async (formData: SAMLConfigFormValues) => {
const payload: Partial<SAMLConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then((response = []) => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Done!",
message: "Your SAML-based authentication is configured. You should test it now.",
});
reset({
SAML_ENTITY_ID: response.find((item) => item.key === "SAML_ENTITY_ID")?.value,
SAML_SSO_URL: response.find((item) => item.key === "SAML_SSO_URL")?.value,
SAML_LOGOUT_URL: response.find((item) => item.key === "SAML_LOGOUT_URL")?.value,
SAML_CERTIFICATE: response.find((item) => item.key === "SAML_CERTIFICATE")?.value,
SAML_PROVIDER_NAME: response.find((item) => item.key === "SAML_PROVIDER_NAME")?.value,
});
})
.catch((err) => console.error(err));
};
const handleGoBack = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
if (isDirty) {
e.preventDefault();
setIsDiscardChangesModalOpen(true);
}
};
return (
<>
<ConfirmDiscardModal
isOpen={isDiscardChangesModalOpen}
onDiscardHref="/authentication"
handleClose={() => setIsDiscardChangesModalOpen(false)}
/>
<div className="flex flex-col gap-8">
<div className="grid grid-cols-2 gap-x-12 gap-y-8 w-full">
<div className="flex flex-col gap-y-4 col-span-2 md:col-span-1 pt-1">
<div className="pt-2.5 text-xl font-medium">IdP-provided details for Plane</div>
{SAML_FORM_FIELDS.map((field) => (
<ControllerInput
key={field.key}
control={control}
type={field.type}
name={field.key}
label={field.label}
description={field.description}
placeholder={field.placeholder}
error={field.error}
required={field.required}
/>
))}
<div className="flex flex-col gap-1">
<h4 className="text-sm">SAML certificate</h4>
<Controller
control={control}
name="SAML_CERTIFICATE"
rules={{ required: "Certificate is required." }}
render={({ field: { value, onChange } }) => (
<TextArea
id="SAML_CERTIFICATE"
name="SAML_CERTIFICATE"
value={value}
onChange={onChange}
hasError={Boolean(errors.SAML_CERTIFICATE)}
placeholder="---BEGIN CERTIFICATE---\n2yWn1gc7DhOFB9\nr0gbE+\n---END CERTIFICATE---"
className="min-h-[102px] w-full rounded-md font-medium text-sm"
/>
)}
/>
<p className="pt-0.5 text-xs text-custom-text-300">
IdP-generated certificate for signing this Plane app as an authorized service provider for your IdP
</p>
</div>
<div className="flex flex-col gap-1 pt-4">
<div className="flex items-center gap-4">
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting} disabled={!isDirty}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
<Link
href="/authentication"
className={cn(getButtonStyling("link-neutral", "md"), "font-medium")}
onClick={handleGoBack}
>
Go back
</Link>
</div>
</div>
</div>
<div className="col-span-2 md:col-span-1">
<div className="flex flex-col gap-y-4 px-6 pt-1.5 pb-4 bg-custom-background-80/60 rounded-lg">
<div className="pt-2 text-xl font-medium">Plane-provided details for your IdP</div>
{SAML_SERVICE_DETAILS.map((field) => (
<CopyField key={field.key} label={field.label} url={field.url} description={field.description} />
))}
<div className="flex flex-col gap-1">
<h4 className="text-sm text-custom-text-200 font-medium">Mapping</h4>
<SAMLAttributeMappingTable />
</div>
</div>
</div>
</div>
</div>
</>
);
};
-120
View File
@@ -1,120 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react-lite";
import Image from "next/image";
import useSWR from "swr";
// ui
import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
import { PageHeader } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
// icons
import SAMLLogo from "/public/logos/saml-logo.svg";
// plane admin hooks
import { useInstanceFlag } from "@/plane-admin/hooks/store/use-instance-flag";
// local components
import { InstanceSAMLConfigForm } from "./form";
const InstanceSAMLAuthenticationPage = observer(() => {
// state
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// store
const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance();
// plane admin store
const isSAMLEnabled = useInstanceFlag("OIDC_SAML_AUTH");
// config
const enableSAMLConfig = formattedConfig?.IS_SAML_ENABLED ?? "";
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
const updateConfig = async (key: "IS_SAML_ENABLED", value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving Configuration...",
success: {
title: "Configuration saved",
message: () => `SAML authentication is now ${value ? "active" : "disabled"}.`,
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
if (isSAMLEnabled === false) {
return (
<div className="relative container mx-auto w-full h-full p-4 py-4 my-6 space-y-6 flex flex-col">
<PageHeader title="Authentication - God Mode" />
<div className="text-center text-lg text-gray-500">
<p>Security Assertion Markup Language (SAML) authentication is not enabled for this instance.</p>
<p>Activate any of your workspace to get this feature.</p>
</div>
</div>
);
}
return (
<>
<PageHeader title="Authentication - God Mode" />
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<AuthenticationMethodCard
name="SAML"
description="Authenticate your users via Security Assertion Markup Language
protocol."
icon={<Image src={SAMLLogo} height={24} width={24} alt="SAML Logo" className="pl-0.5" />}
config={
<ToggleSwitch
value={Boolean(parseInt(enableSAMLConfig))}
onChange={() => {
Boolean(parseInt(enableSAMLConfig)) === true
? updateConfig("IS_SAML_ENABLED", "0")
: updateConfig("IS_SAML_ENABLED", "1");
}}
size="sm"
disabled={isSubmitting || !formattedConfig}
/>
}
disabled={isSubmitting || !formattedConfig}
withBorder={false}
/>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceSAMLConfigForm config={formattedConfig} />
) : (
<Loader className="space-y-8">
<Loader.Item height="50px" width="25%" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" />
<Loader.Item height="50px" width="50%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceSAMLAuthenticationPage;
-15
View File
@@ -1,15 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
import { AdminLayout } from "@/layouts/admin-layout";
interface EmailLayoutProps {
children: ReactNode;
}
export const metadata: Metadata = {
title: "Email Settings - Plane Web",
};
export default function EmailLayout({ children }: EmailLayoutProps) {
return <AdminLayout>{children}</AdminLayout>;
}
-48
View File
@@ -1,48 +0,0 @@
"use client";
import { observer } from "mobx-react";
import useSWR from "swr";
import { Loader } from "@plane/ui";
// hooks
import { useInstance } from "@/hooks/store";
// components
import { InstanceEmailForm } from "./email-config-form";
const InstanceEmailPage = observer(() => {
// store
const { fetchInstanceConfigurations, formattedConfig } = useInstance();
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
return (
<>
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<div className="text-xl font-medium text-custom-text-100">Secure emails from your own instance</div>
<div className="text-sm font-normal text-custom-text-300">
Plane can send useful emails to you and your users from your own instance without talking to the Internet.
<div className="text-sm font-normal text-custom-text-300">
Set it up below and please test your settings before you save them.&nbsp;
<span className="text-red-400">Misconfigs can lead to email bounces and errors.</span>
</div>
</div>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
{formattedConfig ? (
<InstanceEmailForm config={formattedConfig} />
) : (
<Loader className="space-y-10">
<Loader.Item height="50px" width="75%" />
<Loader.Item height="50px" width="75%" />
<Loader.Item height="50px" width="40%" />
<Loader.Item height="50px" width="40%" />
<Loader.Item height="50px" width="20%" />
</Loader>
)}
</div>
</div>
</>
);
});
export default InstanceEmailPage;
-155
View File
@@ -1,155 +0,0 @@
"use client";
import { FC } from "react";
import { observer } from "mobx-react";
import { Controller, useForm } from "react-hook-form";
import { Telescope } from "lucide-react";
// types
import { IInstance, IInstanceAdmin } from "@plane/types";
// ui
import { Button, Input, TOAST_TYPE, ToggleSwitch, setToast } from "@plane/ui";
// components
import { ControllerInput } from "@/components/common";
import { useInstance } from "@/hooks/store";
import { IntercomConfig } from "./intercom";
// hooks
export interface IGeneralConfigurationForm {
instance: IInstance;
instanceAdmins: IInstanceAdmin[];
}
export const GeneralConfigurationForm: FC<IGeneralConfigurationForm> = observer((props) => {
const { instance, instanceAdmins } = props;
// hooks
const { instanceConfigurations, updateInstanceInfo, updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
watch,
formState: { errors, isSubmitting },
} = useForm<Partial<IInstance>>({
defaultValues: {
instance_name: instance?.instance_name,
is_telemetry_enabled: instance?.is_telemetry_enabled,
},
});
const onSubmit = async (formData: Partial<IInstance>) => {
const payload: Partial<IInstance> = { ...formData };
// update the intercom configuration
const isIntercomEnabled =
instanceConfigurations?.find((config) => config.key === "IS_INTERCOM_ENABLED")?.value === "1";
if (!payload.is_telemetry_enabled && isIntercomEnabled) {
try {
await updateInstanceConfigurations({ IS_INTERCOM_ENABLED: "0" });
} catch (error) {
console.error(error);
}
}
await updateInstanceInfo(payload)
.then(() =>
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Success",
message: "Settings updated successfully",
})
)
.catch((err) => console.error(err));
};
return (
<div className="space-y-8">
<div className="space-y-3">
<div className="text-lg font-medium">Instance details</div>
<div className="grid-col grid w-full grid-cols-1 items-center justify-between gap-8 md:grid-cols-2 lg:grid-cols-3">
<ControllerInput
key="instance_name"
name="instance_name"
control={control}
type="text"
label="Name of instance"
placeholder="Instance name"
error={Boolean(errors.instance_name)}
required
/>
<div className="flex flex-col gap-1">
<h4 className="text-sm text-custom-text-300">Email</h4>
<Input
id="email"
name="email"
type="email"
value={instanceAdmins[0]?.user_detail?.email ?? ""}
placeholder="Admin email"
className="w-full cursor-not-allowed !text-custom-text-400"
autoComplete="on"
disabled
/>
</div>
<div className="flex flex-col gap-1">
<h4 className="text-sm text-custom-text-300">Instance ID</h4>
<Input
id="instance_id"
name="instance_id"
type="text"
value={instance.instance_id}
className="w-full cursor-not-allowed rounded-md font-medium !text-custom-text-400"
disabled
/>
</div>
</div>
</div>
<div className="space-y-3">
<div className="text-lg font-medium">Chat + telemetry</div>
<IntercomConfig isTelemetryEnabled={watch("is_telemetry_enabled") ?? false} />
<div className="flex items-center gap-14 px-4 py-3 border border-custom-border-200 rounded">
<div className="grow flex items-center gap-4">
<div className="shrink-0">
<div className="flex items-center justify-center w-10 h-10 bg-custom-background-80 rounded-full">
<Telescope className="w-6 h-6 text-custom-text-300/80 p-0.5" />
</div>
</div>
<div className="grow">
<div className="text-sm font-medium text-custom-text-100 leading-5">
Let Plane collect anonymous usage data
</div>
<div className="text-xs font-normal text-custom-text-300 leading-5">
No PII is collected.This anonymized data is used to understand how you use Plane and build new features
in line with{" "}
<a
href="https://developers.plane.so/self-hosting/telemetry"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
our Telemetry Policy.
</a>
</div>
</div>
</div>
<div className={`shrink-0 ${isSubmitting && "opacity-70"}`}>
<Controller
control={control}
name="is_telemetry_enabled"
render={({ field: { value, onChange } }) => (
<ToggleSwitch value={value ?? false} onChange={onChange} size="sm" disabled={isSubmitting} />
)}
/>
</div>
</div>
</div>
<div>
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
</div>
</div>
);
});
-11
View File
@@ -1,11 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
import { AdminLayout } from "@/layouts/admin-layout";
export const metadata: Metadata = {
title: "General Settings - Plane Web",
};
export default function GeneralLayout({ children }: { children: ReactNode }) {
return <AdminLayout>{children}</AdminLayout>;
}
-432
View File
@@ -1,432 +0,0 @@
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,400,0,0&display=swap");
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
.text-1\.5xl {
font-size: 1.375rem;
line-height: 1.875rem;
}
.text-2\.5xl {
font-size: 1.75rem;
line-height: 2.25rem;
}
}
@layer base {
html {
font-family: "Inter", sans-serif;
}
:root {
color-scheme: light !important;
--color-primary-10: 236, 241, 255;
--color-primary-20: 217, 228, 255;
--color-primary-30: 197, 214, 255;
--color-primary-40: 178, 200, 255;
--color-primary-50: 159, 187, 255;
--color-primary-60: 140, 173, 255;
--color-primary-70: 121, 159, 255;
--color-primary-80: 101, 145, 255;
--color-primary-90: 82, 132, 255;
--color-primary-100: 63, 118, 255;
--color-primary-200: 57, 106, 230;
--color-primary-300: 50, 94, 204;
--color-primary-400: 44, 83, 179;
--color-primary-500: 38, 71, 153;
--color-primary-600: 32, 59, 128;
--color-primary-700: 25, 47, 102;
--color-primary-800: 19, 35, 76;
--color-primary-900: 13, 24, 51;
--color-background-100: 255, 255, 255; /* primary bg */
--color-background-90: 247, 247, 247; /* secondary bg */
--color-background-80: 232, 232, 232; /* tertiary bg */
--color-text-100: 23, 23, 23; /* primary text */
--color-text-200: 58, 58, 58; /* secondary text */
--color-text-300: 82, 82, 82; /* tertiary text */
--color-text-400: 163, 163, 163; /* placeholder text */
--color-scrollbar: 163, 163, 163; /* scrollbar thumb */
--color-border-100: 245, 245, 245; /* subtle border= 1 */
--color-border-200: 229, 229, 229; /* subtle border- 2 */
--color-border-300: 212, 212, 212; /* strong border- 1 */
--color-border-400: 185, 185, 185; /* strong border- 2 */
--color-shadow-2xs: 0px 0px 1px 0px rgba(23, 23, 23, 0.06), 0px 1px 2px 0px rgba(23, 23, 23, 0.06),
0px 1px 2px 0px rgba(23, 23, 23, 0.14);
--color-shadow-xs: 0px 1px 2px 0px rgba(0, 0, 0, 0.16), 0px 2px 4px 0px rgba(16, 24, 40, 0.12),
0px 1px 8px -1px rgba(16, 24, 40, 0.1);
--color-shadow-sm: 0px 1px 4px 0px rgba(0, 0, 0, 0.01), 0px 4px 8px 0px rgba(0, 0, 0, 0.02),
0px 1px 12px 0px rgba(0, 0, 0, 0.12);
--color-shadow-rg: 0px 3px 6px 0px rgba(0, 0, 0, 0.1), 0px 4px 4px 0px rgba(16, 24, 40, 0.08),
0px 1px 12px 0px rgba(16, 24, 40, 0.04);
--color-shadow-md: 0px 4px 8px 0px rgba(0, 0, 0, 0.12), 0px 6px 12px 0px rgba(16, 24, 40, 0.12),
0px 1px 16px 0px rgba(16, 24, 40, 0.12);
--color-shadow-lg: 0px 6px 12px 0px rgba(0, 0, 0, 0.12), 0px 8px 16px 0px rgba(0, 0, 0, 0.12),
0px 1px 24px 0px rgba(16, 24, 40, 0.12);
--color-shadow-xl: 0px 0px 18px 0px rgba(0, 0, 0, 0.16), 0px 0px 24px 0px rgba(16, 24, 40, 0.16),
0px 0px 52px 0px rgba(16, 24, 40, 0.16);
--color-shadow-2xl: 0px 8px 16px 0px rgba(0, 0, 0, 0.12), 0px 12px 24px 0px rgba(16, 24, 40, 0.12),
0px 1px 32px 0px rgba(16, 24, 40, 0.12);
--color-shadow-3xl: 0px 12px 24px 0px rgba(0, 0, 0, 0.12), 0px 16px 32px 0px rgba(0, 0, 0, 0.12),
0px 1px 48px 0px rgba(16, 24, 40, 0.12);
--color-shadow-4xl: 0px 8px 40px 0px rgba(0, 0, 61, 0.05), 0px 12px 32px -16px rgba(0, 0, 0, 0.05);
--color-sidebar-background-100: var(--color-background-100); /* primary sidebar bg */
--color-sidebar-background-90: var(--color-background-90); /* secondary sidebar bg */
--color-sidebar-background-80: var(--color-background-80); /* tertiary sidebar bg */
--color-sidebar-text-100: var(--color-text-100); /* primary sidebar text */
--color-sidebar-text-200: var(--color-text-200); /* secondary sidebar text */
--color-sidebar-text-300: var(--color-text-300); /* tertiary sidebar text */
--color-sidebar-text-400: var(--color-text-400); /* sidebar placeholder text */
--color-sidebar-border-100: var(--color-border-100); /* subtle sidebar border= 1 */
--color-sidebar-border-200: var(--color-border-100); /* subtle sidebar border- 2 */
--color-sidebar-border-300: var(--color-border-100); /* strong sidebar border- 1 */
--color-sidebar-border-400: var(--color-border-100); /* strong sidebar border- 2 */
--color-sidebar-shadow-2xs: var(--color-shadow-2xs);
--color-sidebar-shadow-xs: var(--color-shadow-xs);
--color-sidebar-shadow-sm: var(--color-shadow-sm);
--color-sidebar-shadow-rg: var(--color-shadow-rg);
--color-sidebar-shadow-md: var(--color-shadow-md);
--color-sidebar-shadow-lg: var(--color-shadow-lg);
--color-sidebar-shadow-xl: var(--color-shadow-xl);
--color-sidebar-shadow-2xl: var(--color-shadow-2xl);
--color-sidebar-shadow-3xl: var(--color-shadow-3xl);
--color-sidebar-shadow-4xl: var(--color-shadow-4xl);
}
[data-theme="light"],
[data-theme="light-contrast"] {
color-scheme: light !important;
--color-background-100: 255, 255, 255; /* primary bg */
--color-background-90: 247, 247, 247; /* secondary bg */
--color-background-80: 232, 232, 232; /* tertiary bg */
}
[data-theme="light"] {
--color-text-100: 23, 23, 23; /* primary text */
--color-text-200: 58, 58, 58; /* secondary text */
--color-text-300: 82, 82, 82; /* tertiary text */
--color-text-400: 163, 163, 163; /* placeholder text */
--color-scrollbar: 163, 163, 163; /* scrollbar thumb */
--color-border-100: 245, 245, 245; /* subtle border= 1 */
--color-border-200: 229, 229, 229; /* subtle border- 2 */
--color-border-300: 212, 212, 212; /* strong border- 1 */
--color-border-400: 185, 185, 185; /* strong border- 2 */
/* onboarding colors */
--gradient-onboarding-100: linear-gradient(106deg, #f2f6ff 29.8%, #e1eaff 99.34%);
--gradient-onboarding-200: linear-gradient(129deg, rgba(255, 255, 255, 0) -22.23%, rgba(255, 255, 255, 0.8) 62.98%);
--gradient-onboarding-300: linear-gradient(164deg, #fff 4.25%, rgba(255, 255, 255, 0.06) 93.5%);
--gradient-onboarding-400: linear-gradient(129deg, rgba(255, 255, 255, 0) -22.23%, rgba(255, 255, 255, 0.8) 62.98%);
--color-onboarding-text-100: 23, 23, 23;
--color-onboarding-text-200: 58, 58, 58;
--color-onboarding-text-300: 82, 82, 82;
--color-onboarding-text-400: 163, 163, 163;
--color-onboarding-background-100: 236, 241, 255;
--color-onboarding-background-200: 255, 255, 255;
--color-onboarding-background-300: 236, 241, 255;
--color-onboarding-background-400: 177, 206, 250;
--color-onboarding-border-100: 229, 229, 229;
--color-onboarding-border-200: 217, 228, 255;
--color-onboarding-border-300: 229, 229, 229, 0.5;
--color-onboarding-shadow-sm: 0px 4px 20px 0px rgba(126, 139, 171, 0.1);
/* toast theme */
--color-toast-success-text: 62, 155, 79;
--color-toast-error-text: 220, 62, 66;
--color-toast-warning-text: 255, 186, 24;
--color-toast-info-text: 51, 88, 212;
--color-toast-loading-text: 28, 32, 36;
--color-toast-secondary-text: 128, 131, 141;
--color-toast-tertiary-text: 96, 100, 108;
--color-toast-success-background: 253, 253, 254;
--color-toast-error-background: 255, 252, 252;
--color-toast-warning-background: 254, 253, 251;
--color-toast-info-background: 253, 253, 254;
--color-toast-loading-background: 253, 253, 254;
--color-toast-success-border: 218, 241, 219;
--color-toast-error-border: 255, 219, 220;
--color-toast-warning-border: 255, 247, 194;
--color-toast-info-border: 210, 222, 255;
--color-toast-loading-border: 224, 225, 230;
}
[data-theme="light-contrast"] {
--color-text-100: 11, 11, 11; /* primary text */
--color-text-200: 38, 38, 38; /* secondary text */
--color-text-300: 58, 58, 58; /* tertiary text */
--color-text-400: 115, 115, 115; /* placeholder text */
--color-scrollbar: 115, 115, 115; /* scrollbar thumb */
--color-border-100: 34, 34, 34; /* subtle border= 1 */
--color-border-200: 38, 38, 38; /* subtle border- 2 */
--color-border-300: 46, 46, 46; /* strong border- 1 */
--color-border-400: 58, 58, 58; /* strong border- 2 */
}
[data-theme="dark"],
[data-theme="dark-contrast"] {
color-scheme: dark !important;
--color-background-100: 25, 25, 25; /* primary bg */
--color-background-90: 32, 32, 32; /* secondary bg */
--color-background-80: 44, 44, 44; /* tertiary bg */
--color-shadow-2xs: 0px 0px 1px 0px rgba(0, 0, 0, 0.15), 0px 1px 3px 0px rgba(0, 0, 0, 0.5);
--color-shadow-xs: 0px 0px 2px 0px rgba(0, 0, 0, 0.2), 0px 2px 4px 0px rgba(0, 0, 0, 0.5);
--color-shadow-sm: 0px 0px 4px 0px rgba(0, 0, 0, 0.2), 0px 2px 6px 0px rgba(0, 0, 0, 0.5);
--color-shadow-rg: 0px 0px 6px 0px rgba(0, 0, 0, 0.2), 0px 4px 6px 0px rgba(0, 0, 0, 0.5);
--color-shadow-md: 0px 2px 8px 0px rgba(0, 0, 0, 0.2), 0px 4px 8px 0px rgba(0, 0, 0, 0.5);
--color-shadow-lg: 0px 4px 12px 0px rgba(0, 0, 0, 0.25), 0px 4px 10px 0px rgba(0, 0, 0, 0.55);
--color-shadow-xl: 0px 0px 14px 0px rgba(0, 0, 0, 0.25), 0px 6px 10px 0px rgba(0, 0, 0, 0.55);
--color-shadow-2xl: 0px 0px 18px 0px rgba(0, 0, 0, 0.25), 0px 8px 12px 0px rgba(0, 0, 0, 0.6);
--color-shadow-3xl: 0px 4px 24px 0px rgba(0, 0, 0, 0.3), 0px 12px 40px 0px rgba(0, 0, 0, 0.65);
}
[data-theme="dark"] {
--color-text-100: 229, 229, 229; /* primary text */
--color-text-200: 163, 163, 163; /* secondary text */
--color-text-300: 115, 115, 115; /* tertiary text */
--color-text-400: 82, 82, 82; /* placeholder text */
--color-scrollbar: 82, 82, 82; /* scrollbar thumb */
--color-border-100: 34, 34, 34; /* subtle border= 1 */
--color-border-200: 38, 38, 38; /* subtle border- 2 */
--color-border-300: 46, 46, 46; /* strong border- 1 */
--color-border-400: 58, 58, 58; /* strong border- 2 */
/* onboarding colors */
--gradient-onboarding-100: linear-gradient(106deg, #18191b 25.17%, #18191b 99.34%);
--gradient-onboarding-200: linear-gradient(129deg, rgba(47, 49, 53, 0.8) -22.23%, rgba(33, 34, 37, 0.8) 62.98%);
--gradient-onboarding-300: linear-gradient(167deg, rgba(47, 49, 53, 0.45) 19.22%, #212225 98.48%);
--color-onboarding-text-100: 237, 238, 240;
--color-onboarding-text-200: 176, 180, 187;
--color-onboarding-text-300: 118, 123, 132;
--color-onboarding-text-400: 105, 110, 119;
--color-onboarding-background-100: 54, 58, 64;
--color-onboarding-background-200: 40, 42, 45;
--color-onboarding-background-300: 40, 42, 45;
--color-onboarding-background-400: 67, 72, 79;
--color-onboarding-border-100: 54, 58, 64;
--color-onboarding-border-200: 54, 58, 64;
--color-onboarding-border-300: 34, 35, 38, 0.5;
--color-onboarding-shadow-sm: 0px 4px 20px 0px rgba(39, 44, 56, 0.1);
/* toast theme */
--color-toast-success-text: 178, 221, 181;
--color-toast-error-text: 206, 44, 49;
--color-toast-warning-text: 255, 186, 24;
--color-toast-info-text: 141, 164, 239;
--color-toast-loading-text: 255, 255, 255;
--color-toast-secondary-text: 185, 187, 198;
--color-toast-tertiary-text: 139, 141, 152;
--color-toast-success-background: 46, 46, 46;
--color-toast-error-background: 46, 46, 46;
--color-toast-warning-background: 46, 46, 46;
--color-toast-info-background: 46, 46, 46;
--color-toast-loading-background: 46, 46, 46;
--color-toast-success-border: 42, 126, 59;
--color-toast-error-border: 100, 23, 35;
--color-toast-warning-border: 79, 52, 34;
--color-toast-info-border: 58, 91, 199;
--color-toast-loading-border: 96, 100, 108;
}
[data-theme="dark-contrast"] {
--color-text-100: 250, 250, 250; /* primary text */
--color-text-200: 241, 241, 241; /* secondary text */
--color-text-300: 212, 212, 212; /* tertiary text */
--color-text-400: 115, 115, 115; /* placeholder text */
--color-scrollbar: 115, 115, 115; /* scrollbar thumb */
--color-border-100: 245, 245, 245; /* subtle border= 1 */
--color-border-200: 229, 229, 229; /* subtle border- 2 */
--color-border-300: 212, 212, 212; /* strong border- 1 */
--color-border-400: 185, 185, 185; /* strong border- 2 */
}
[data-theme="light"],
[data-theme="dark"],
[data-theme="light-contrast"],
[data-theme="dark-contrast"] {
--color-primary-10: 236, 241, 255;
--color-primary-20: 217, 228, 255;
--color-primary-30: 197, 214, 255;
--color-primary-40: 178, 200, 255;
--color-primary-50: 159, 187, 255;
--color-primary-60: 140, 173, 255;
--color-primary-70: 121, 159, 255;
--color-primary-80: 101, 145, 255;
--color-primary-90: 82, 132, 255;
--color-primary-100: 63, 118, 255;
--color-primary-200: 57, 106, 230;
--color-primary-300: 50, 94, 204;
--color-primary-400: 44, 83, 179;
--color-primary-500: 38, 71, 153;
--color-primary-600: 32, 59, 128;
--color-primary-700: 25, 47, 102;
--color-primary-800: 19, 35, 76;
--color-primary-900: 13, 24, 51;
--color-sidebar-background-100: var(--color-background-100); /* primary sidebar bg */
--color-sidebar-background-90: var(--color-background-90); /* secondary sidebar bg */
--color-sidebar-background-80: var(--color-background-80); /* tertiary sidebar bg */
--color-sidebar-text-100: var(--color-text-100); /* primary sidebar text */
--color-sidebar-text-200: var(--color-text-200); /* secondary sidebar text */
--color-sidebar-text-300: var(--color-text-300); /* tertiary sidebar text */
--color-sidebar-text-400: var(--color-text-400); /* sidebar placeholder text */
--color-sidebar-border-100: var(--color-border-100); /* subtle sidebar border= 1 */
--color-sidebar-border-200: var(--color-border-200); /* subtle sidebar border- 2 */
--color-sidebar-border-300: var(--color-border-300); /* strong sidebar border- 1 */
--color-sidebar-border-400: var(--color-border-400); /* strong sidebar border- 2 */
}
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
font-variant-ligatures: none;
-webkit-font-variant-ligatures: none;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
body {
color: rgba(var(--color-text-100));
}
/* scrollbar style */
@-moz-document url-prefix() {
* {
scrollbar-width: none;
}
.vertical-scrollbar,
.horizontal-scrollbar {
scrollbar-width: initial;
scrollbar-color: rgba(96, 100, 108, 0.1) transparent;
}
.vertical-scrollbar:hover,
.horizontal-scrollbar:hover {
scrollbar-color: rgba(96, 100, 108, 0.25) transparent;
}
.vertical-scrollbar:active,
.horizontal-scrollbar:active {
scrollbar-color: rgba(96, 100, 108, 0.7) transparent;
}
}
.vertical-scrollbar {
overflow-y: auto;
}
.horizontal-scrollbar {
overflow-x: auto;
}
.vertical-scrollbar::-webkit-scrollbar,
.horizontal-scrollbar::-webkit-scrollbar {
display: block;
}
.vertical-scrollbar::-webkit-scrollbar-track,
.horizontal-scrollbar::-webkit-scrollbar-track {
background-color: transparent;
border-radius: 9999px;
}
.vertical-scrollbar::-webkit-scrollbar-thumb,
.horizontal-scrollbar::-webkit-scrollbar-thumb {
background-clip: padding-box;
background-color: rgba(96, 100, 108, 0.1);
border-radius: 9999px;
}
.vertical-scrollbar:hover::-webkit-scrollbar-thumb,
.horizontal-scrollbar:hover::-webkit-scrollbar-thumb {
background-color: rgba(96, 100, 108, 0.25);
}
.vertical-scrollbar::-webkit-scrollbar-thumb:hover,
.horizontal-scrollbar::-webkit-scrollbar-thumb:hover {
background-color: rgba(96, 100, 108, 0.5);
}
.vertical-scrollbar::-webkit-scrollbar-thumb:active,
.horizontal-scrollbar::-webkit-scrollbar-thumb:active {
background-color: rgba(96, 100, 108, 0.7);
}
.vertical-scrollbar::-webkit-scrollbar-corner,
.horizontal-scrollbar::-webkit-scrollbar-corner {
background-color: transparent;
}
.vertical-scrollbar-margin-top-md::-webkit-scrollbar-track {
margin-top: 44px;
}
/* scrollbar sm size */
.scrollbar-sm::-webkit-scrollbar {
height: 12px;
width: 12px;
}
.scrollbar-sm::-webkit-scrollbar-thumb {
border: 3px solid rgba(0, 0, 0, 0);
}
/* scrollbar md size */
.scrollbar-md::-webkit-scrollbar {
height: 14px;
width: 14px;
}
.scrollbar-md::-webkit-scrollbar-thumb {
border: 3px solid rgba(0, 0, 0, 0);
}
/* scrollbar lg size */
.scrollbar-lg::-webkit-scrollbar {
height: 16px;
width: 16px;
}
.scrollbar-lg::-webkit-scrollbar-thumb {
border: 4px solid rgba(0, 0, 0, 0);
}
/* end scrollbar style */
/* progress bar */
.progress-bar {
fill: currentColor;
color: rgba(var(--color-sidebar-background-100));
}
::-webkit-input-placeholder,
::placeholder,
:-ms-input-placeholder {
color: rgb(var(--color-text-400));
}
-80
View File
@@ -1,80 +0,0 @@
"use client";
import { FC } from "react";
import { useForm } from "react-hook-form";
import { IFormattedInstanceConfiguration, TInstanceImageConfigurationKeys } from "@plane/types";
import { Button, TOAST_TYPE, setToast } from "@plane/ui";
// components
import { ControllerInput } from "@/components/common";
// hooks
import { useInstance } from "@/hooks/store";
type IInstanceImageConfigForm = {
config: IFormattedInstanceConfiguration;
};
type ImageConfigFormValues = Record<TInstanceImageConfigurationKeys, string>;
export const InstanceImageConfigForm: FC<IInstanceImageConfigForm> = (props) => {
const { config } = props;
// store hooks
const { updateInstanceConfigurations } = useInstance();
// form data
const {
handleSubmit,
control,
formState: { errors, isSubmitting },
} = useForm<ImageConfigFormValues>({
defaultValues: {
UNSPLASH_ACCESS_KEY: config["UNSPLASH_ACCESS_KEY"],
},
});
const onSubmit = async (formData: ImageConfigFormValues) => {
const payload: Partial<ImageConfigFormValues> = { ...formData };
await updateInstanceConfigurations(payload)
.then(() =>
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Success",
message: "Image Configuration Settings updated successfully",
})
)
.catch((err) => console.error(err));
};
return (
<div className="space-y-8">
<div className="grid-col grid w-full grid-cols-1 items-center justify-between gap-x-16 gap-y-8 lg:grid-cols-2">
<ControllerInput
control={control}
type="password"
name="UNSPLASH_ACCESS_KEY"
label="Access key from your Unsplash account"
description={
<>
You will find your access key in your Unsplash developer console.&nbsp;
<a
href="https://unsplash.com/documentation#creating-a-developer-account"
target="_blank"
className="text-custom-primary-100 hover:underline"
rel="noreferrer"
>
Learn more.
</a>
</>
}
placeholder="oXgq-sdfadsaeweqasdfasdf3234234rassd"
error={Boolean(errors.UNSPLASH_ACCESS_KEY)}
required
/>
</div>
<div>
<Button variant="primary" onClick={handleSubmit(onSubmit)} loading={isSubmitting}>
{isSubmitting ? "Saving..." : "Save changes"}
</Button>
</div>
</div>
);
};
-15
View File
@@ -1,15 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
import { AdminLayout } from "@/layouts/admin-layout";
interface ImageLayoutProps {
children: ReactNode;
}
export const metadata: Metadata = {
title: "Images Settings - Plane Web",
};
export default function ImageLayout({ children }: ImageLayoutProps) {
return <AdminLayout>{children}</AdminLayout>;
}
-49
View File
@@ -1,49 +0,0 @@
"use client";
import { ReactNode } from "react";
import { ThemeProvider, useTheme } from "next-themes";
import { SWRConfig } from "swr";
// ui
import { ADMIN_BASE_PATH, DEFAULT_SWR_CONFIG } from "@plane/constants";
import { Toast } from "@plane/ui";
import { resolveGeneralTheme } from "@plane/utils";
// constants
// helpers
// lib
import { InstanceProvider } from "@/lib/instance-provider";
import { StoreProvider } from "@/lib/store-provider";
import { UserProvider } from "@/lib/user-provider";
// styles
import "./globals.css";
const ToastWithTheme = () => {
const { resolvedTheme } = useTheme();
return <Toast theme={resolveGeneralTheme(resolvedTheme)} />;
};
export default function RootLayout({ children }: { children: ReactNode }) {
const ASSET_PREFIX = ADMIN_BASE_PATH;
return (
<html lang="en">
<head>
<link rel="apple-touch-icon" sizes="180x180" href={`${ASSET_PREFIX}/favicon/apple-touch-icon.png`} />
<link rel="icon" type="image/png" sizes="32x32" href={`${ASSET_PREFIX}/favicon/favicon-32x32.png`} />
<link rel="icon" type="image/png" sizes="16x16" href={`${ASSET_PREFIX}/favicon/favicon-16x16.png`} />
<link rel="manifest" href={`${ASSET_PREFIX}/site.webmanifest.json`} />
<link rel="shortcut icon" href={`${ASSET_PREFIX}/favicon/favicon.ico`} />
</head>
<body className={`antialiased`}>
<ThemeProvider themes={["light", "dark"]} defaultTheme="system" enableSystem>
<ToastWithTheme />
<SWRConfig value={DEFAULT_SWR_CONFIG}>
<StoreProvider>
<InstanceProvider>
<UserProvider>{children}</UserProvider>
</InstanceProvider>
</StoreProvider>
</SWRConfig>
</ThemeProvider>
</body>
</html>
);
}
-30
View File
@@ -1,30 +0,0 @@
import { Metadata } from "next";
// components
import { InstanceSignInForm } from "@/components/login";
// layouts
import { DefaultLayout } from "@/layouts/default-layout";
export const metadata: Metadata = {
title: "Plane | Simple, extensible, open-source project management tool.",
description:
"Open-source project management tool to manage work items, sprints, and product roadmaps with peace of mind.",
openGraph: {
title: "Plane | Simple, extensible, open-source project management tool.",
description:
"Open-source project management tool to manage work items, sprints, and product roadmaps with peace of mind.",
url: "https://plane.so/",
},
keywords:
"software development, customer feedback, software, accelerate, code management, release management, project management, work items tracking, agile, scrum, kanban, collaboration",
twitter: {
site: "@planepowers",
},
};
export default async function LoginPage() {
return (
<DefaultLayout>
<InstanceSignInForm />
</DefaultLayout>
);
}
-12
View File
@@ -1,12 +0,0 @@
import { ReactNode } from "react";
import { Metadata } from "next";
// layouts
import { AdminLayout } from "@/layouts/admin-layout";
export const metadata: Metadata = {
title: "Workspace Management - Plane Web",
};
export default function WorkspaceManagementLayout({ children }: { children: ReactNode }) {
return <AdminLayout>{children}</AdminLayout>;
}
-167
View File
@@ -1,167 +0,0 @@
"use client";
import { useState } from "react";
import { observer } from "mobx-react";
import Link from "next/link";
import useSWR from "swr";
import { Loader as LoaderIcon } from "lucide-react";
// types
import { TInstanceConfigurationKeys } from "@plane/types";
import { Button, getButtonStyling, Loader, setPromiseToast, ToggleSwitch } from "@plane/ui";
import { cn } from "@plane/utils";
// components
import { WorkspaceListItem } from "@/components/workspace";
// hooks
import { useInstance, useWorkspace } from "@/hooks/store";
const WorkspaceManagementPage = observer(() => {
// states
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
// store
const { formattedConfig, fetchInstanceConfigurations, updateInstanceConfigurations } = useInstance();
const {
workspaceIds,
loader: workspaceLoader,
paginationInfo,
fetchWorkspaces,
fetchNextWorkspaces,
} = useWorkspace();
// derived values
const disableWorkspaceCreation = formattedConfig?.DISABLE_WORKSPACE_CREATION ?? "";
const hasNextPage = paginationInfo?.next_page_results && paginationInfo?.next_cursor !== undefined;
// fetch data
useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations());
useSWR("INSTANCE_WORKSPACES", () => fetchWorkspaces());
const updateConfig = async (key: TInstanceConfigurationKeys, value: string) => {
setIsSubmitting(true);
const payload = {
[key]: value,
};
const updateConfigPromise = updateInstanceConfigurations(payload);
setPromiseToast(updateConfigPromise, {
loading: "Saving configuration",
success: {
title: "Success",
message: () => "Configuration saved successfully",
},
error: {
title: "Error",
message: () => "Failed to save configuration",
},
});
await updateConfigPromise
.then(() => {
setIsSubmitting(false);
})
.catch((err) => {
console.error(err);
setIsSubmitting(false);
});
};
return (
<div className="relative container mx-auto w-full h-full p-4 py-4 space-y-6 flex flex-col">
<div className="flex items-center justify-between gap-4 border-b border-custom-border-100 mx-4 py-4 space-y-1 flex-shrink-0">
<div className="flex flex-col gap-1">
<div className="text-xl font-medium text-custom-text-100">Workspaces on this instance</div>
<div className="text-sm font-normal text-custom-text-300">
See all workspaces and control who can create them.
</div>
</div>
</div>
<div className="flex-grow overflow-hidden overflow-y-scroll vertical-scrollbar scrollbar-md px-4">
<div className="space-y-3">
{formattedConfig ? (
<div className={cn("w-full flex items-center gap-14 rounded")}>
<div className="flex grow items-center gap-4">
<div className="grow">
<div className="text-lg font-medium pb-1">Prevent anyone else from creating a workspace.</div>
<div className={cn("font-normal leading-5 text-custom-text-300 text-xs")}>
Toggling this on will let only you create workspaces. You will have to invite users to new
workspaces.
</div>
</div>
</div>
<div className={`shrink-0 pr-4 ${isSubmitting && "opacity-70"}`}>
<div className="flex items-center gap-4">
<ToggleSwitch
value={Boolean(parseInt(disableWorkspaceCreation))}
onChange={() => {
if (Boolean(parseInt(disableWorkspaceCreation)) === true) {
updateConfig("DISABLE_WORKSPACE_CREATION", "0");
} else {
updateConfig("DISABLE_WORKSPACE_CREATION", "1");
}
}}
size="sm"
disabled={isSubmitting}
/>
</div>
</div>
</div>
) : (
<Loader>
<Loader.Item height="50px" width="100%" />
</Loader>
)}
{workspaceLoader !== "init-loader" ? (
<>
<div className="pt-6 flex items-center justify-between gap-2">
<div className="flex flex-col items-start gap-x-2">
<div className="flex items-center gap-2 text-lg font-medium">
All workspaces on this instance{" "}
<span className="text-custom-text-300"> {workspaceIds.length}</span>
{workspaceLoader && ["mutation", "pagination"].includes(workspaceLoader) && (
<LoaderIcon className="w-4 h-4 animate-spin" />
)}
</div>
<div className={cn("font-normal leading-5 text-custom-text-300 text-xs")}>
You can&apos;t yet delete workspaces and you can only go to the workspace if you are an Admin or a
Member.
</div>
</div>
<div className="flex items-center gap-2">
<Link href="/workspace/create" className={getButtonStyling("primary", "sm")}>
Create workspace
</Link>
</div>
</div>
<div className="flex flex-col gap-4 py-2">
{workspaceIds.map((workspaceId) => (
<WorkspaceListItem key={workspaceId} workspaceId={workspaceId} />
))}
</div>
{hasNextPage && (
<div className="flex justify-center">
<Button
variant="link-primary"
onClick={() => fetchNextWorkspaces()}
disabled={workspaceLoader === "pagination"}
>
Load more
{workspaceLoader === "pagination" && <LoaderIcon className="w-3 h-3 animate-spin" />}
</Button>
</div>
)}
</>
) : (
<Loader className="space-y-10 py-8">
<Loader.Item height="24px" width="20%" />
<Loader.Item height="92px" width="100%" />
<Loader.Item height="92px" width="100%" />
<Loader.Item height="92px" width="100%" />
</Loader>
)}
</div>
</div>
</div>
);
});
export default WorkspaceManagementPage;
@@ -1,70 +0,0 @@
import { observer } from "mobx-react";
import Image from "next/image";
import { useTheme } from "next-themes";
// types
import {
TGetBaseAuthenticationModeProps,
TInstanceAuthenticationMethodKeys,
TInstanceAuthenticationModes,
} from "@plane/types";
// components
import { AuthenticationMethodCard } from "@/components/authentication";
// helpers
import { getBaseAuthenticationModes } from "@/lib/auth-helpers";
// plane admin components
import { UpgradeButton } from "@/plane-admin/components/common";
// images
import OIDCLogo from "@/public/logos/oidc-logo.svg";
import SAMLLogo from "@/public/logos/saml-logo.svg";
export type TAuthenticationModeProps = {
disabled: boolean;
updateConfig: (key: TInstanceAuthenticationMethodKeys, value: string) => void;
};
// Authentication methods
export const getAuthenticationModes: (props: TGetBaseAuthenticationModeProps) => TInstanceAuthenticationModes[] = ({
disabled,
updateConfig,
resolvedTheme,
}) => [
...getBaseAuthenticationModes({ disabled, updateConfig, resolvedTheme }),
{
key: "oidc",
name: "OIDC",
description: "Authenticate your users via the OpenID Connect protocol.",
icon: <Image src={OIDCLogo} height={22} width={22} alt="OIDC Logo" />,
config: <UpgradeButton />,
unavailable: true,
},
{
key: "saml",
name: "SAML",
description: "Authenticate your users via the Security Assertion Markup Language protocol.",
icon: <Image src={SAMLLogo} height={22} width={22} alt="SAML Logo" className="pl-0.5" />,
config: <UpgradeButton />,
unavailable: true,
},
];
export const AuthenticationModes: React.FC<TAuthenticationModeProps> = observer((props) => {
const { disabled, updateConfig } = props;
// next-themes
const { resolvedTheme } = useTheme();
return (
<>
{getAuthenticationModes({ disabled, updateConfig, resolvedTheme }).map((method) => (
<AuthenticationMethodCard
key={method.key}
name={method.name}
description={method.description}
icon={method.icon}
config={method.config}
disabled={disabled}
unavailable={method.unavailable}
/>
))}
</>
);
});
@@ -1,153 +0,0 @@
"use client";
import { FC, useState, useRef } from "react";
import { observer } from "mobx-react";
import Link from "next/link";
import { ExternalLink, FileText, HelpCircle, MoveLeft } from "lucide-react";
import { Transition } from "@headlessui/react";
// plane internal packages
import { WEB_BASE_URL } from "@plane/constants";
import { DiscordIcon, GithubIcon, Tooltip } from "@plane/ui";
import { cn } from "@plane/utils";
// hooks
import { useInstance, useTheme } from "@/hooks/store";
// assets
// eslint-disable-next-line import/order
import packageJson from "package.json";
const helpOptions = [
{
name: "Documentation",
href: "https://docs.plane.so/",
Icon: FileText,
},
{
name: "Join our Discord",
href: "https://discord.com/invite/A92xrEGCge",
Icon: DiscordIcon,
},
{
name: "Report a bug",
href: "https://github.com/makeplane/plane/issues/new/choose",
Icon: GithubIcon,
},
];
export const HelpSection: FC = observer(() => {
// states
const [isNeedHelpOpen, setIsNeedHelpOpen] = useState(false);
// store
const { instance } = useInstance();
const { isSidebarCollapsed, toggleSidebar } = useTheme();
// refs
const helpOptionsRef = useRef<HTMLDivElement | null>(null);
const redirectionLink = encodeURI(WEB_BASE_URL + "/");
return (
<div
className={cn(
"flex w-full items-center justify-between gap-1 self-baseline border-t border-custom-border-200 bg-custom-sidebar-background-100 px-4 h-14 flex-shrink-0",
{
"flex-col h-auto py-1.5": isSidebarCollapsed,
}
)}
>
<div className={`flex items-center gap-1 ${isSidebarCollapsed ? "flex-col justify-center" : "w-full"}`}>
<Tooltip tooltipContent="Redirect to Plane" position="right" className="ml-4" disabled={!isSidebarCollapsed}>
<a
href={redirectionLink}
className={`relative px-2 py-1.5 flex items-center gap-2 font-medium rounded border border-custom-primary-100/20 bg-custom-primary-100/10 text-xs text-custom-primary-200 whitespace-nowrap`}
>
<ExternalLink size={14} />
{!isSidebarCollapsed && "Redirect to Plane"}
</a>
</Tooltip>
<Tooltip tooltipContent="Help" position={isSidebarCollapsed ? "right" : "top"} className="ml-4">
<button
type="button"
className={`ml-auto grid place-items-center rounded-md p-1.5 text-custom-text-200 outline-none hover:bg-custom-background-90 hover:text-custom-text-100 ${
isSidebarCollapsed ? "w-full" : ""
}`}
onClick={() => setIsNeedHelpOpen((prev) => !prev)}
>
<HelpCircle className="h-3.5 w-3.5" />
</button>
</Tooltip>
<Tooltip tooltipContent="Toggle sidebar" position={isSidebarCollapsed ? "right" : "top"} className="ml-4">
<button
type="button"
className={`grid place-items-center rounded-md p-1.5 text-custom-text-200 outline-none hover:bg-custom-background-90 hover:text-custom-text-100 ${
isSidebarCollapsed ? "w-full" : ""
}`}
onClick={() => toggleSidebar(!isSidebarCollapsed)}
>
<MoveLeft className={`h-3.5 w-3.5 duration-300 ${isSidebarCollapsed ? "rotate-180" : ""}`} />
</button>
</Tooltip>
</div>
<div className="relative">
<Transition
show={isNeedHelpOpen}
enter="transition ease-out duration-100"
enterFrom="transform opacity-0 scale-95"
enterTo="transform opacity-100 scale-100"
leave="transition ease-in duration-75"
leaveFrom="transform opacity-100 scale-100"
leaveTo="transform opacity-0 scale-95"
>
<div
className={`absolute bottom-2 min-w-[10rem] z-[15] ${
isSidebarCollapsed ? "left-full" : "-left-[75px]"
} divide-y divide-custom-border-200 whitespace-nowrap rounded bg-custom-background-100 p-1 shadow-custom-shadow-xs`}
ref={helpOptionsRef}
>
<div className="space-y-1 pb-2">
{helpOptions.map(({ name, Icon, href }) => {
if (href)
return (
<Link href={href} key={name} target="_blank">
<div className="flex items-center gap-x-2 rounded px-2 py-1 text-xs hover:bg-custom-background-80">
<div className="grid flex-shrink-0 place-items-center">
<Icon className="h-3.5 w-3.5 text-custom-text-200" size={14} />
</div>
<span className="text-xs">{name}</span>
</div>
</Link>
);
else
return (
<button
key={name}
type="button"
className="flex w-full items-center gap-x-2 rounded px-2 py-1 text-xs hover:bg-custom-background-80"
>
<div className="grid flex-shrink-0 place-items-center">
<Icon className="h-3.5 w-3.5 text-custom-text-200" />
</div>
<span className="text-xs">{name}</span>
</button>
);
})}
{/* {instance?.latest_version && instance?.current_version != instance?.latest_version && (
<a
href="https://docs.plane.so/docs/changelog"
target="_blank"
className="flex items-center gap-2 px-2 py-1 text-xs font-medium cursor-pointer transition-all border rounded border-custom-primary-100/30 bg-custom-primary-100/20 hover:bg-custom-primary-100/30 text-custom-text-100"
referrerPolicy="no-referrer"
>
<RefreshCcw className="flex-shrink-0 h-3 w-3 text-custom-text-100" />
<div>Updates available</div>
<div className="flex-shrink-0 ml-auto animate-pulse bg-custom-primary-100 !w-2 !h-2 rounded-full" />
</a>
)} */}
</div>
<div className="px-2 pb-1 pt-2 text-[10px]">Version: v{instance?.current_version}</div>
</div>
</Transition>
</div>
</div>
);
});
@@ -1,5 +0,0 @@
export * from "./root";
export * from "./help-section";
export * from "./sidebar-menu";
export * from "./sidebar-dropdown";
export * from "./sidebar-menu-hamburger-toogle";
@@ -1,56 +0,0 @@
"use client";
import { FC, useEffect, useRef } from "react";
import { observer } from "mobx-react";
// plane helpers
import { useOutsideClickDetector } from "@plane/hooks";
// components
import { HelpSection, SidebarMenu, SidebarDropdown } from "@/components/admin-sidebar";
// hooks
import { useTheme } from "@/hooks/store";
export const InstanceSidebar: FC = observer(() => {
// store
const { isSidebarCollapsed, toggleSidebar } = useTheme();
const ref = useRef<HTMLDivElement>(null);
useOutsideClickDetector(ref, () => {
if (isSidebarCollapsed === false) {
if (window.innerWidth < 768) {
toggleSidebar(!isSidebarCollapsed);
}
}
});
useEffect(() => {
const handleResize = () => {
if (window.innerWidth <= 768) {
toggleSidebar(true);
}
};
handleResize();
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
};
}, [toggleSidebar]);
return (
<div
className={`inset-y-0 z-20 flex h-full flex-shrink-0 flex-grow-0 flex-col border-r border-custom-sidebar-border-200 bg-custom-sidebar-background-100 duration-300
fixed md:relative
${isSidebarCollapsed ? "-ml-[290px]" : ""}
sm:${isSidebarCollapsed ? "-ml-[290px]" : ""}
md:ml-0 ${isSidebarCollapsed ? "w-[70px]" : "w-[290px]"}
lg:ml-0 ${isSidebarCollapsed ? "w-[70px]" : "w-[290px]"}
`}
>
<div ref={ref} className="flex h-full w-full flex-1 flex-col">
<SidebarDropdown />
<SidebarMenu />
<HelpSection />
</div>
</div>
);
});
@@ -1,20 +0,0 @@
"use client";
import { FC } from "react";
import { observer } from "mobx-react";
// hooks
import { Menu } from "lucide-react";
import { useTheme } from "@/hooks/store";
// icons
export const SidebarHamburgerToggle: FC = observer(() => {
const { isSidebarCollapsed, toggleSidebar } = useTheme();
return (
<div
className="w-7 h-7 rounded flex justify-center items-center bg-custom-background-80 transition-all hover:bg-custom-background-90 cursor-pointer group md:hidden"
onClick={() => toggleSidebar(!isSidebarCollapsed)}
>
<Menu size={14} className="text-custom-text-200 group-hover:text-custom-text-100 transition-all" />
</div>
);
});
-96
View File
@@ -1,96 +0,0 @@
"use client";
import { FC } from "react";
import { observer } from "mobx-react";
import { usePathname } from "next/navigation";
// mobx
// ui
import { Settings } from "lucide-react";
// icons
import { Breadcrumbs } from "@plane/ui";
// components
import { SidebarHamburgerToggle } from "@/components/admin-sidebar";
import { BreadcrumbLink } from "@/components/common";
export const InstanceHeader: FC = observer(() => {
const pathName = usePathname();
const getHeaderTitle = (pathName: string) => {
switch (pathName) {
case "general":
return "General";
case "ai":
return "Artificial Intelligence";
case "email":
return "Email";
case "authentication":
return "Authentication";
case "image":
return "Image";
case "google":
return "Google";
case "github":
return "GitHub";
case "gitlab":
return "GitLab";
case "workspace":
return "Workspace";
case "create":
return "Create";
default:
return pathName.toUpperCase();
}
};
// Function to dynamically generate breadcrumb items based on pathname
const generateBreadcrumbItems = (pathname: string) => {
const pathSegments = pathname.split("/").slice(1); // removing the first empty string.
pathSegments.pop();
let currentUrl = "";
const breadcrumbItems = pathSegments.map((segment) => {
currentUrl += "/" + segment;
return {
title: getHeaderTitle(segment),
href: currentUrl,
};
});
return breadcrumbItems;
};
const breadcrumbItems = generateBreadcrumbItems(pathName);
return (
<div className="relative z-10 flex h-[3.75rem] w-full flex-shrink-0 flex-row items-center justify-between gap-x-2 gap-y-4 border-b border-custom-sidebar-border-200 bg-custom-sidebar-background-100 p-4">
<div className="flex w-full flex-grow items-center gap-2 overflow-ellipsis whitespace-nowrap">
<SidebarHamburgerToggle />
{breadcrumbItems.length >= 0 && (
<div>
<Breadcrumbs>
<Breadcrumbs.BreadcrumbItem
type="text"
link={
<BreadcrumbLink
href="/general/"
label="Settings"
icon={<Settings className="h-4 w-4 text-custom-text-300" />}
/>
}
/>
{breadcrumbItems.map(
(item) =>
item.title && (
<Breadcrumbs.BreadcrumbItem
key={item.title}
type="text"
link={<BreadcrumbLink href={item.href} label={item.title} />}
/>
)
)}
</Breadcrumbs>
</div>
)}
</div>
</div>
);
});
@@ -1,29 +0,0 @@
import { FC } from "react";
import { Info, X } from "lucide-react";
// plane constants
import { TAuthErrorInfo } from "@plane/constants";
type TAuthBanner = {
bannerData: TAuthErrorInfo | undefined;
handleBannerData?: (bannerData: TAuthErrorInfo | undefined) => void;
};
export const AuthBanner: FC<TAuthBanner> = (props) => {
const { bannerData, handleBannerData } = props;
if (!bannerData) return <></>;
return (
<div className="relative flex items-center p-2 rounded-md gap-2 border border-custom-primary-100/50 bg-custom-primary-100/10">
<div className="w-4 h-4 flex-shrink-0 relative flex justify-center items-center">
<Info size={16} className="text-custom-primary-100" />
</div>
<div className="w-full text-sm font-medium text-custom-primary-100">{bannerData?.message}</div>
<div
className="relative ml-auto w-6 h-6 rounded-sm flex justify-center items-center transition-all cursor-pointer hover:bg-custom-primary-100/20 text-custom-primary-100/80"
onClick={() => handleBannerData && handleBannerData(undefined)}
>
<X className="w-4 h-4 flex-shrink-0" />
</div>
</div>
);
};
@@ -1,7 +0,0 @@
export * from "./auth-banner";
export * from "./email-config-switch";
export * from "./password-config-switch";
export * from "./authentication-method-card";
export * from "./gitlab-config";
export * from "./github-config";
export * from "./google-config";
@@ -1,38 +0,0 @@
"use client";
import Link from "next/link";
import { Tooltip } from "@plane/ui";
type Props = {
label?: string;
href?: string;
icon?: React.ReactNode | undefined;
};
export const BreadcrumbLink: React.FC<Props> = (props) => {
const { href, label, icon } = props;
return (
<Tooltip tooltipContent={label} position="bottom">
<li className="flex items-center space-x-2" tabIndex={-1}>
<div className="flex flex-wrap items-center gap-2.5">
{href ? (
<Link
className="flex items-center gap-1 text-sm font-medium text-custom-text-300 hover:text-custom-text-100"
href={href}
>
{icon && (
<div className="flex h-5 w-5 items-center justify-center overflow-hidden !text-[1rem]">{icon}</div>
)}
<div className="relative line-clamp-1 block max-w-[150px] overflow-hidden truncate">{label}</div>
</Link>
) : (
<div className="flex cursor-default items-center gap-1 text-sm font-medium text-custom-text-100">
{icon && <div className="flex h-5 w-5 items-center justify-center overflow-hidden">{icon}</div>}
<div className="relative line-clamp-1 block max-w-[150px] overflow-hidden truncate">{label}</div>
</div>
)}
</div>
</li>
</Tooltip>
);
};
-10
View File
@@ -1,10 +0,0 @@
export * from "./breadcrumb-link";
export * from "./confirm-discard-modal";
export * from "./controller-input";
export * from "./copy-field";
export * from "./password-strength-meter";
export * from "./banner";
export * from "./empty-state";
export * from "./logo-spinner";
export * from "./page-header";
export * from "./code-block";
@@ -1,17 +0,0 @@
import Image from "next/image";
import { useTheme } from "next-themes";
// assets
import LogoSpinnerDark from "@/public/images/logo-spinner-dark.gif";
import LogoSpinnerLight from "@/public/images/logo-spinner-light.gif";
export const LogoSpinner = () => {
const { resolvedTheme } = useTheme();
const logoSrc = resolvedTheme === "dark" ? LogoSpinnerDark : LogoSpinnerLight;
return (
<div className="flex items-center justify-center">
<Image src={logoSrc} alt="logo" className="w-[82px] h-[82px] mr-2" priority={false} />
</div>
);
};
@@ -1,89 +0,0 @@
"use client";
import { FC, useMemo } from "react";
// plane internal packages
import { E_PASSWORD_STRENGTH } from "@plane/constants";
import { cn, getPasswordStrength } from "@plane/utils";
type TPasswordStrengthMeter = {
password: string;
isFocused?: boolean;
};
export const PasswordStrengthMeter: FC<TPasswordStrengthMeter> = (props) => {
const { password, isFocused = false } = props;
// derived values
const strength = useMemo(() => getPasswordStrength(password), [password]);
const strengthBars = useMemo(() => {
switch (strength) {
case E_PASSWORD_STRENGTH.EMPTY: {
return {
bars: [`bg-custom-text-100`, `bg-custom-text-100`, `bg-custom-text-100`],
text: "Please enter your password.",
textColor: "text-custom-text-100",
};
}
case E_PASSWORD_STRENGTH.LENGTH_NOT_VALID: {
return {
bars: [`bg-red-500`, `bg-custom-text-100`, `bg-custom-text-100`],
text: "Password length should me more than 8 characters.",
textColor: "text-red-500",
};
}
case E_PASSWORD_STRENGTH.STRENGTH_NOT_VALID: {
return {
bars: [`bg-red-500`, `bg-custom-text-100`, `bg-custom-text-100`],
text: "Password is weak.",
textColor: "text-red-500",
};
}
case E_PASSWORD_STRENGTH.STRENGTH_VALID: {
return {
bars: [`bg-green-500`, `bg-green-500`, `bg-green-500`],
text: "Password is strong.",
textColor: "text-green-500",
};
}
default: {
return {
bars: [`bg-custom-text-100`, `bg-custom-text-100`, `bg-custom-text-100`],
text: "Please enter your password.",
textColor: "text-custom-text-100",
};
}
}
}, [strength]);
const isPasswordMeterVisible = isFocused ? true : strength === E_PASSWORD_STRENGTH.STRENGTH_VALID ? false : true;
if (!isPasswordMeterVisible) return <></>;
return (
<div className="w-full space-y-2 pt-2">
<div className="space-y-1.5">
<div className="relative flex items-center gap-2">
{strengthBars?.bars.map((color, index) => (
<div key={`${color}-${index}`} className={cn("w-full h-1 rounded-full", color)} />
))}
</div>
<div className={cn(`text-xs font-medium text-custom-text-100`, strengthBars?.textColor)}>
{strengthBars?.text}
</div>
</div>
{/* <div className="relative flex flex-wrap gap-x-4 gap-y-2">
{PASSWORD_CRITERIA.map((criteria) => (
<div
key={criteria.key}
className={cn(
"relative flex items-center gap-1 text-xs",
criteria.isCriteriaValid(password) ? `text-green-500/70` : "text-custom-text-300"
)}
>
<CircleCheck width={14} height={14} />
{criteria.label}
</div>
))}
</div> */}
</div>
);
};
-3
View File
@@ -1,3 +0,0 @@
export * from "./instance-not-ready";
export * from "./instance-failure-view";
export * from "./setup-form";
@@ -1,38 +0,0 @@
"use client";
import { FC } from "react";
import Image from "next/image";
import { useTheme } from "next-themes";
import { Button } from "@plane/ui";
// assets
import InstanceFailureDarkImage from "@/public/instance/instance-failure-dark.svg";
import InstanceFailureImage from "@/public/instance/instance-failure.svg";
export const InstanceFailureView: FC = () => {
const { resolvedTheme } = useTheme();
const instanceImage = resolvedTheme === "dark" ? InstanceFailureDarkImage : InstanceFailureImage;
const handleRetry = () => {
window.location.reload();
};
return (
<div className="h-full w-full relative container px-5 mx-auto flex justify-center items-center">
<div className="w-auto max-w-2xl relative space-y-8 py-10">
<div className="relative flex flex-col justify-center items-center space-y-4">
<Image src={instanceImage} alt="Plane Logo" />
<h3 className="font-medium text-2xl text-white ">Unable to fetch instance details.</h3>
<p className="font-medium text-base text-center">
We were unable to fetch the details of the instance. <br />
Fret not, it might just be a connectivity issue.
</p>
</div>
<div className="flex justify-center">
<Button size="md" onClick={handleRetry}>
Retry
</Button>
</div>
</div>
</div>
);
};
@@ -1,357 +0,0 @@
"use client";
import { FC, useEffect, useMemo, useState } from "react";
import { useSearchParams } from "next/navigation";
// icons
import { Eye, EyeOff } from "lucide-react";
// plane internal packages
import { API_BASE_URL, E_PASSWORD_STRENGTH } from "@plane/constants";
import { AuthService } from "@plane/services";
import { Button, Checkbox, Input, Spinner } from "@plane/ui";
import { getPasswordStrength } from "@plane/utils";
// components
import { Banner, PasswordStrengthMeter } from "@/components/common";
// service initialization
const authService = new AuthService();
// error codes
enum EErrorCodes {
INSTANCE_NOT_CONFIGURED = "INSTANCE_NOT_CONFIGURED",
ADMIN_ALREADY_EXIST = "ADMIN_ALREADY_EXIST",
REQUIRED_EMAIL_PASSWORD_FIRST_NAME = "REQUIRED_EMAIL_PASSWORD_FIRST_NAME",
INVALID_EMAIL = "INVALID_EMAIL",
INVALID_PASSWORD = "INVALID_PASSWORD",
USER_ALREADY_EXISTS = "USER_ALREADY_EXISTS",
}
type TError = {
type: EErrorCodes | undefined;
message: string | undefined;
};
// form data
type TFormData = {
first_name: string;
last_name: string;
email: string;
company_name: string;
password: string;
confirm_password?: string;
is_telemetry_enabled: boolean;
};
const defaultFromData: TFormData = {
first_name: "",
last_name: "",
email: "",
company_name: "",
password: "",
is_telemetry_enabled: true,
};
export const InstanceSetupForm: FC = (props) => {
const {} = props;
// search params
const searchParams = useSearchParams();
const firstNameParam = searchParams.get("first_name") || undefined;
const lastNameParam = searchParams.get("last_name") || undefined;
const companyParam = searchParams.get("company") || undefined;
const emailParam = searchParams.get("email") || undefined;
const isTelemetryEnabledParam = (searchParams.get("is_telemetry_enabled") === "True" ? true : false) || true;
const errorCode = searchParams.get("error_code") || undefined;
const errorMessage = searchParams.get("error_message") || undefined;
// state
const [showPassword, setShowPassword] = useState({
password: false,
retypePassword: false,
});
const [csrfToken, setCsrfToken] = useState<string | undefined>(undefined);
const [formData, setFormData] = useState<TFormData>(defaultFromData);
const [isPasswordInputFocused, setIsPasswordInputFocused] = useState(false);
const [isSubmitting, setIsSubmitting] = useState(false);
const [isRetryPasswordInputFocused, setIsRetryPasswordInputFocused] = useState(false);
const handleShowPassword = (key: keyof typeof showPassword) =>
setShowPassword((prev) => ({ ...prev, [key]: !prev[key] }));
const handleFormChange = (key: keyof TFormData, value: string | boolean) =>
setFormData((prev) => ({ ...prev, [key]: value }));
useEffect(() => {
if (csrfToken === undefined)
authService.requestCSRFToken().then((data) => data?.csrf_token && setCsrfToken(data.csrf_token));
}, [csrfToken]);
useEffect(() => {
if (firstNameParam) setFormData((prev) => ({ ...prev, first_name: firstNameParam }));
if (lastNameParam) setFormData((prev) => ({ ...prev, last_name: lastNameParam }));
if (companyParam) setFormData((prev) => ({ ...prev, company_name: companyParam }));
if (emailParam) setFormData((prev) => ({ ...prev, email: emailParam }));
if (isTelemetryEnabledParam) setFormData((prev) => ({ ...prev, is_telemetry_enabled: isTelemetryEnabledParam }));
}, [firstNameParam, lastNameParam, companyParam, emailParam, isTelemetryEnabledParam]);
// derived values
const errorData: TError = useMemo(() => {
if (errorCode && errorMessage) {
switch (errorCode) {
case EErrorCodes.INSTANCE_NOT_CONFIGURED:
return { type: EErrorCodes.INSTANCE_NOT_CONFIGURED, message: errorMessage };
case EErrorCodes.ADMIN_ALREADY_EXIST:
return { type: EErrorCodes.ADMIN_ALREADY_EXIST, message: errorMessage };
case EErrorCodes.REQUIRED_EMAIL_PASSWORD_FIRST_NAME:
return { type: EErrorCodes.REQUIRED_EMAIL_PASSWORD_FIRST_NAME, message: errorMessage };
case EErrorCodes.INVALID_EMAIL:
return { type: EErrorCodes.INVALID_EMAIL, message: errorMessage };
case EErrorCodes.INVALID_PASSWORD:
return { type: EErrorCodes.INVALID_PASSWORD, message: errorMessage };
case EErrorCodes.USER_ALREADY_EXISTS:
return { type: EErrorCodes.USER_ALREADY_EXISTS, message: errorMessage };
default:
return { type: undefined, message: undefined };
}
} else return { type: undefined, message: undefined };
}, [errorCode, errorMessage]);
const isButtonDisabled = useMemo(
() =>
!isSubmitting &&
formData.first_name &&
formData.email &&
formData.password &&
getPasswordStrength(formData.password) === E_PASSWORD_STRENGTH.STRENGTH_VALID &&
formData.password === formData.confirm_password
? false
: true,
[formData.confirm_password, formData.email, formData.first_name, formData.password, isSubmitting]
);
const password = formData?.password ?? "";
const confirmPassword = formData?.confirm_password ?? "";
const renderPasswordMatchError = !isRetryPasswordInputFocused || confirmPassword.length >= password.length;
return (
<div className="max-w-lg lg:max-w-md w-full">
<div className="relative flex flex-col space-y-6">
<div className="text-center space-y-1">
<h3 className="flex gap-4 justify-center text-3xl font-bold text-onboarding-text-100">
Setup your Plane Instance
</h3>
<p className="font-medium text-onboarding-text-400">
Post setup you will be able to manage this Plane instance.
</p>
</div>
{errorData.type &&
errorData?.message &&
![EErrorCodes.INVALID_EMAIL, EErrorCodes.INVALID_PASSWORD].includes(errorData.type) && (
<Banner type="error" message={errorData?.message} />
)}
<form
className="space-y-4"
method="POST"
action={`${API_BASE_URL}/api/instances/admins/sign-up/`}
onSubmit={() => setIsSubmitting(true)}
onError={() => setIsSubmitting(false)}
>
<input type="hidden" name="csrfmiddlewaretoken" value={csrfToken} />
<input type="hidden" name="is_telemetry_enabled" value={formData.is_telemetry_enabled ? "True" : "False"} />
<div className="flex flex-col sm:flex-row items-center gap-4">
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="first_name">
First name <span className="text-red-500">*</span>
</label>
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="first_name"
name="first_name"
type="text"
inputSize="md"
placeholder="Wilber"
value={formData.first_name}
onChange={(e) => handleFormChange("first_name", e.target.value)}
autoComplete="on"
autoFocus
/>
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="last_name">
Last name <span className="text-red-500">*</span>
</label>
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="last_name"
name="last_name"
type="text"
inputSize="md"
placeholder="Wright"
value={formData.last_name}
onChange={(e) => handleFormChange("last_name", e.target.value)}
autoComplete="on"
/>
</div>
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="email">
Email <span className="text-red-500">*</span>
</label>
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="email"
name="email"
type="email"
inputSize="md"
placeholder="name@company.com"
value={formData.email}
onChange={(e) => handleFormChange("email", e.target.value)}
hasError={errorData.type && errorData.type === EErrorCodes.INVALID_EMAIL ? true : false}
autoComplete="on"
/>
{errorData.type && errorData.type === EErrorCodes.INVALID_EMAIL && errorData.message && (
<p className="px-1 text-xs text-red-500">{errorData.message}</p>
)}
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="company_name">
Company name <span className="text-red-500">*</span>
</label>
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="company_name"
name="company_name"
type="text"
inputSize="md"
placeholder="Company name"
value={formData.company_name}
onChange={(e) => handleFormChange("company_name", e.target.value)}
/>
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="password">
Set a password <span className="text-red-500">*</span>
</label>
<div className="relative">
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="password"
name="password"
type={showPassword.password ? "text" : "password"}
inputSize="md"
placeholder="New password..."
value={formData.password}
onChange={(e) => handleFormChange("password", e.target.value)}
hasError={errorData.type && errorData.type === EErrorCodes.INVALID_PASSWORD ? true : false}
onFocus={() => setIsPasswordInputFocused(true)}
onBlur={() => setIsPasswordInputFocused(false)}
autoComplete="on"
/>
{showPassword.password ? (
<button
type="button"
tabIndex={-1}
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => handleShowPassword("password")}
>
<EyeOff className="h-4 w-4" />
</button>
) : (
<button
type="button"
tabIndex={-1}
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => handleShowPassword("password")}
>
<Eye className="h-4 w-4" />
</button>
)}
</div>
{errorData.type && errorData.type === EErrorCodes.INVALID_PASSWORD && errorData.message && (
<p className="px-1 text-xs text-red-500">{errorData.message}</p>
)}
<PasswordStrengthMeter password={formData.password} isFocused={isPasswordInputFocused} />
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="confirm_password">
Confirm password <span className="text-red-500">*</span>
</label>
<div className="relative">
<Input
type={showPassword.retypePassword ? "text" : "password"}
id="confirm_password"
name="confirm_password"
inputSize="md"
value={formData.confirm_password}
onChange={(e) => handleFormChange("confirm_password", e.target.value)}
placeholder="Confirm password"
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 pr-12 placeholder:text-onboarding-text-400"
onFocus={() => setIsRetryPasswordInputFocused(true)}
onBlur={() => setIsRetryPasswordInputFocused(false)}
/>
{showPassword.retypePassword ? (
<button
type="button"
tabIndex={-1}
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => handleShowPassword("retypePassword")}
>
<EyeOff className="h-4 w-4" />
</button>
) : (
<button
type="button"
tabIndex={-1}
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => handleShowPassword("retypePassword")}
>
<Eye className="h-4 w-4" />
</button>
)}
</div>
{!!formData.confirm_password &&
formData.password !== formData.confirm_password &&
renderPasswordMatchError && <span className="text-sm text-red-500">Passwords don{"'"}t match</span>}
</div>
<div className="relative flex items-center pt-2 gap-2">
<div>
<Checkbox
className="w-4 h-4"
iconClassName="w-3 h-3"
id="is_telemetry_enabled"
onChange={() => handleFormChange("is_telemetry_enabled", !formData.is_telemetry_enabled)}
checked={formData.is_telemetry_enabled}
/>
</div>
<label
className="text-sm text-onboarding-text-300 font-medium cursor-pointer"
htmlFor="is_telemetry_enabled"
>
Allow Plane to anonymously collect usage events.
</label>
<a
tabIndex={-1}
href="https://developers.plane.so/self-hosting/telemetry"
target="_blank"
rel="noopener noreferrer"
className="text-sm font-medium text-blue-500 hover:text-blue-600"
>
See More
</a>
</div>
<div className="py-2">
<Button type="submit" size="lg" className="w-full" disabled={isButtonDisabled}>
{isSubmitting ? <Spinner height="20px" width="20px" /> : "Continue"}
</Button>
</div>
</form>
</div>
</div>
);
};
-1
View File
@@ -1 +0,0 @@
export * from "./sign-in-form";
@@ -1,194 +0,0 @@
"use client";
import { FC, useEffect, useMemo, useState } from "react";
import { useSearchParams } from "next/navigation";
import { Eye, EyeOff } from "lucide-react";
// plane internal packages
import { API_BASE_URL, EAdminAuthErrorCodes, TAuthErrorInfo } from "@plane/constants";
import { AuthService } from "@plane/services";
import { Button, Input, Spinner } from "@plane/ui";
// components
import { Banner } from "@/components/common";
// helpers
import { authErrorHandler } from "@/lib/auth-helpers";
// local components
import { AuthBanner } from "../authentication";
// service initialization
const authService = new AuthService();
// error codes
enum EErrorCodes {
INSTANCE_NOT_CONFIGURED = "INSTANCE_NOT_CONFIGURED",
REQUIRED_EMAIL_PASSWORD = "REQUIRED_EMAIL_PASSWORD",
INVALID_EMAIL = "INVALID_EMAIL",
USER_DOES_NOT_EXIST = "USER_DOES_NOT_EXIST",
AUTHENTICATION_FAILED = "AUTHENTICATION_FAILED",
}
type TError = {
type: EErrorCodes | undefined;
message: string | undefined;
};
// form data
type TFormData = {
email: string;
password: string;
};
const defaultFromData: TFormData = {
email: "",
password: "",
};
export const InstanceSignInForm: FC = (props) => {
const {} = props;
// search params
const searchParams = useSearchParams();
const emailParam = searchParams.get("email") || undefined;
const errorCode = searchParams.get("error_code") || undefined;
const errorMessage = searchParams.get("error_message") || undefined;
// state
const [showPassword, setShowPassword] = useState(false);
const [csrfToken, setCsrfToken] = useState<string | undefined>(undefined);
const [formData, setFormData] = useState<TFormData>(defaultFromData);
const [isSubmitting, setIsSubmitting] = useState(false);
const [errorInfo, setErrorInfo] = useState<TAuthErrorInfo | undefined>(undefined);
const handleFormChange = (key: keyof TFormData, value: string | boolean) =>
setFormData((prev) => ({ ...prev, [key]: value }));
useEffect(() => {
if (csrfToken === undefined)
authService.requestCSRFToken().then((data) => data?.csrf_token && setCsrfToken(data.csrf_token));
}, [csrfToken]);
useEffect(() => {
if (emailParam) setFormData((prev) => ({ ...prev, email: emailParam }));
}, [emailParam]);
// derived values
const errorData: TError = useMemo(() => {
if (errorCode && errorMessage) {
switch (errorCode) {
case EErrorCodes.INSTANCE_NOT_CONFIGURED:
return { type: EErrorCodes.INVALID_EMAIL, message: errorMessage };
case EErrorCodes.REQUIRED_EMAIL_PASSWORD:
return { type: EErrorCodes.REQUIRED_EMAIL_PASSWORD, message: errorMessage };
case EErrorCodes.INVALID_EMAIL:
return { type: EErrorCodes.INVALID_EMAIL, message: errorMessage };
case EErrorCodes.USER_DOES_NOT_EXIST:
return { type: EErrorCodes.USER_DOES_NOT_EXIST, message: errorMessage };
case EErrorCodes.AUTHENTICATION_FAILED:
return { type: EErrorCodes.AUTHENTICATION_FAILED, message: errorMessage };
default:
return { type: undefined, message: undefined };
}
} else return { type: undefined, message: undefined };
}, [errorCode, errorMessage]);
const isButtonDisabled = useMemo(
() => (!isSubmitting && formData.email && formData.password ? false : true),
[formData.email, formData.password, isSubmitting]
);
useEffect(() => {
if (errorCode) {
const errorDetail = authErrorHandler(errorCode?.toString() as EAdminAuthErrorCodes);
if (errorDetail) {
setErrorInfo(errorDetail);
}
}
}, [errorCode]);
return (
<div className="flex-grow container mx-auto max-w-lg px-10 lg:max-w-md lg:px-5 py-10 lg:pt-28 transition-all">
<div className="relative flex flex-col space-y-6">
<div className="text-center space-y-1">
<h3 className="flex gap-4 justify-center text-3xl font-bold text-onboarding-text-100">
Manage your Plane instance
</h3>
<p className="font-medium text-onboarding-text-400">
Configure instance-wide settings to secure your instance
</p>
</div>
{errorData.type && errorData?.message ? (
<Banner type="error" message={errorData?.message} />
) : (
<>{errorInfo && <AuthBanner bannerData={errorInfo} handleBannerData={(value) => setErrorInfo(value)} />}</>
)}
<form
className="space-y-4"
method="POST"
action={`${API_BASE_URL}/api/instances/admins/sign-in/`}
onSubmit={() => setIsSubmitting(true)}
onError={() => setIsSubmitting(false)}
>
<input type="hidden" name="csrfmiddlewaretoken" value={csrfToken} />
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="email">
Email <span className="text-red-500">*</span>
</label>
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="email"
name="email"
type="email"
inputSize="md"
placeholder="name@company.com"
value={formData.email}
onChange={(e) => handleFormChange("email", e.target.value)}
autoComplete="on"
autoFocus
/>
</div>
<div className="w-full space-y-1">
<label className="text-sm text-onboarding-text-300 font-medium" htmlFor="password">
Password <span className="text-red-500">*</span>
</label>
<div className="relative">
<Input
className="w-full border border-onboarding-border-100 !bg-onboarding-background-200 placeholder:text-onboarding-text-400"
id="password"
name="password"
type={showPassword ? "text" : "password"}
inputSize="md"
placeholder="Enter your password"
value={formData.password}
onChange={(e) => handleFormChange("password", e.target.value)}
autoComplete="on"
/>
{showPassword ? (
<button
type="button"
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => setShowPassword(false)}
>
<EyeOff className="h-4 w-4" />
</button>
) : (
<button
type="button"
className="absolute right-3 top-3.5 flex items-center justify-center text-custom-text-400"
onClick={() => setShowPassword(true)}
>
<Eye className="h-4 w-4" />
</button>
)}
</div>
</div>
<div className="py-2">
<Button type="submit" size="lg" className="w-full" disabled={isButtonDisabled}>
{isSubmitting ? <Spinner height="20px" width="20px" /> : "Sign in"}
</Button>
</div>
</form>
</div>
</div>
);
};
-1
View File
@@ -1 +0,0 @@
export * from "./list-item";
@@ -1,81 +0,0 @@
import { observer } from "mobx-react";
import { ExternalLink } from "lucide-react";
// plane internal packages
import { WEB_BASE_URL } from "@plane/constants";
import { Tooltip } from "@plane/ui";
import { getFileURL } from "@plane/utils";
// hooks
import { useWorkspace } from "@/hooks/store";
type TWorkspaceListItemProps = {
workspaceId: string;
};
export const WorkspaceListItem = observer(({ workspaceId }: TWorkspaceListItemProps) => {
// store hooks
const { getWorkspaceById } = useWorkspace();
// derived values
const workspace = getWorkspaceById(workspaceId);
if (!workspace) return null;
return (
<a
key={workspaceId}
href={`${WEB_BASE_URL}/${encodeURIComponent(workspace.slug)}`}
target="_blank"
className="group flex items-center justify-between p-4 gap-2.5 truncate border border-custom-border-200/70 hover:border-custom-border-200 hover:bg-custom-background-90 rounded-md"
>
<div className="flex items-start gap-4">
<span
className={`relative flex h-8 w-8 flex-shrink-0 items-center justify-center p-2 mt-1 text-xs uppercase ${
!workspace?.logo_url && "rounded bg-custom-primary-500 text-white"
}`}
>
{workspace?.logo_url && workspace.logo_url !== "" ? (
<img
src={getFileURL(workspace.logo_url)}
className="absolute left-0 top-0 h-full w-full rounded object-cover"
alt="Workspace Logo"
/>
) : (
(workspace?.name?.[0] ?? "...")
)}
</span>
<div className="flex flex-col items-start gap-1">
<div className="flex flex-wrap w-full items-center gap-2.5">
<h3 className={`text-base font-medium capitalize`}>{workspace.name}</h3>/
<Tooltip tooltipContent="The unique URL of your workspace">
<h4 className="text-sm text-custom-text-300">[{workspace.slug}]</h4>
</Tooltip>
</div>
{workspace.owner.email && (
<div className="flex items-center gap-1 text-xs">
<h3 className="text-custom-text-200 font-medium">Owned by:</h3>
<h4 className="text-custom-text-300">{workspace.owner.email}</h4>
</div>
)}
<div className="flex items-center gap-2.5 text-xs">
{workspace.total_projects !== null && (
<span className="flex items-center gap-1">
<h3 className="text-custom-text-200 font-medium">Total projects:</h3>
<h4 className="text-custom-text-300">{workspace.total_projects}</h4>
</span>
)}
{workspace.total_members !== null && (
<>
<span className="flex items-center gap-1">
<h3 className="text-custom-text-200 font-medium">Total members:</h3>
<h4 className="text-custom-text-300">{workspace.total_members}</h4>
</span>
</>
)}
</div>
</div>
</div>
<div className="flex-shrink-0">
<ExternalLink size={14} className="text-custom-text-400 group-hover:text-custom-text-200" />
</div>
</a>
);
});
-59
View File
@@ -1,59 +0,0 @@
"use client";
import { FC, ReactNode, useEffect } from "react";
import { observer } from "mobx-react";
import { useRouter } from "next/navigation";
import useSWR from "swr";
// components
import { InstanceSidebar } from "@/components/admin-sidebar";
import { InstanceHeader } from "@/components/auth-header";
import { LogoSpinner } from "@/components/common";
import { NewUserPopup } from "@/components/new-user-popup";
// hooks
import { useUser } from "@/hooks/store";
// plane admin hooks
import { useInstanceFeatureFlags } from "@/plane-admin/hooks/store/use-instance-feature-flag";
type TAdminLayout = {
children: ReactNode;
};
export const AdminLayout: FC<TAdminLayout> = observer((props) => {
const { children } = props;
// router
const router = useRouter();
// store hooks
const { isUserLoggedIn } = useUser();
// plane admin hooks
const { fetchInstanceFeatureFlags } = useInstanceFeatureFlags();
// fetching instance feature flags
const { isLoading: flagsLoader, error: flagsError } = useSWR(
`INSTANCE_FEATURE_FLAGS`,
() => fetchInstanceFeatureFlags(),
{ revalidateOnFocus: false, revalidateIfStale: false, errorRetryCount: 1 }
);
useEffect(() => {
if (isUserLoggedIn === false) {
router.push("/");
}
}, [router, isUserLoggedIn]);
if ((flagsLoader && !flagsError) || isUserLoggedIn === undefined) {
return (
<div className="relative flex h-screen w-full items-center justify-center">
<LogoSpinner />
</div>
);
}
return (
<div className="relative flex h-screen w-screen overflow-hidden">
<InstanceSidebar />
<main className="relative flex h-full w-full flex-col overflow-hidden bg-custom-background-100">
<InstanceHeader />
<div className="h-full w-full overflow-hidden">{children}</div>
</main>
<NewUserPopup />
</div>
);
});
-45
View File
@@ -1,45 +0,0 @@
"use client";
import { FC, ReactNode } from "react";
import Image from "next/image";
import Link from "next/link";
import { useTheme } from "next-themes";
// logo/ images
import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg";
import PlaneBackgroundPattern from "public/auth/background-pattern.svg";
import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png";
import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png";
type TDefaultLayout = {
children: ReactNode;
withoutBackground?: boolean;
};
export const DefaultLayout: FC<TDefaultLayout> = (props) => {
const { children, withoutBackground = false } = props;
// hooks
const { resolvedTheme } = useTheme();
const patternBackground = resolvedTheme === "dark" ? PlaneBackgroundPatternDark : PlaneBackgroundPattern;
const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo;
return (
<div className="relative">
<div className="h-screen w-full overflow-hidden overflow-y-auto flex flex-col">
<div className="container h-[110px] flex-shrink-0 mx-auto px-5 lg:px-0 flex items-center justify-between gap-5 z-50">
<div className="flex items-center gap-x-2 py-10">
<Link href={`/`} className="h-[30px] w-[133px]">
<Image src={logo} alt="Plane logo" />
</Link>
</div>
</div>
{!withoutBackground && (
<div className="absolute inset-0 z-0">
<Image src={patternBackground} className="w-screen h-full object-cover" alt="Plane background pattern" />
</div>
)}
<div className="relative z-10 flex-grow">{children}</div>
</div>
</div>
);
};
-55
View File
@@ -1,55 +0,0 @@
import { FC, ReactNode } from "react";
import { observer } from "mobx-react";
import useSWR from "swr";
// components
import { LogoSpinner } from "@/components/common";
import { InstanceSetupForm, InstanceFailureView } from "@/components/instance";
// hooks
import { useInstance } from "@/hooks/store";
// layout
import { DefaultLayout } from "@/layouts/default-layout";
type InstanceProviderProps = {
children: ReactNode;
};
export const InstanceProvider: FC<InstanceProviderProps> = observer((props) => {
const { children } = props;
// store hooks
const { instance, error, fetchInstanceInfo } = useInstance();
// fetching instance details
useSWR("INSTANCE_DETAILS", () => fetchInstanceInfo(), {
revalidateOnFocus: false,
revalidateIfStale: false,
errorRetryCount: 0,
});
if (!instance && !error)
return (
<div className="flex h-screen min-h-[500px] w-full justify-center items-center">
<LogoSpinner />
</div>
);
if (error) {
return (
<DefaultLayout>
<div className="relative h-full w-full overflow-y-auto px-6 py-10 mx-auto flex justify-center items-center">
<InstanceFailureView />
</div>
</DefaultLayout>
);
}
if (!instance?.is_setup_done) {
return (
<DefaultLayout>
<div className="relative h-full w-full overflow-y-auto px-6 py-10 mx-auto flex justify-center items-center">
<InstanceSetupForm />
</div>
</DefaultLayout>
);
}
return <>{children}</>;
});
-31
View File
@@ -1,31 +0,0 @@
"use client";
import { FC, ReactNode, useEffect } from "react";
import { observer } from "mobx-react";
import useSWR from "swr";
// hooks
import { useInstance, useTheme, useUser } from "@/hooks/store";
interface IUserProvider {
children: ReactNode;
}
export const UserProvider: FC<IUserProvider> = observer(({ children }) => {
// hooks
const { isSidebarCollapsed, toggleSidebar } = useTheme();
const { currentUser, fetchCurrentUser } = useUser();
const { fetchInstanceAdmins } = useInstance();
useSWR("CURRENT_USER", () => fetchCurrentUser(), {
shouldRetryOnError: false,
});
useSWR("INSTANCE_ADMINS", () => fetchInstanceAdmins());
useEffect(() => {
const localValue = localStorage && localStorage.getItem("god_mode_sidebar_collapsed");
const localBoolValue = localValue ? (localValue === "true" ? true : false) : false;
if (isSidebarCollapsed === undefined && localBoolValue != isSidebarCollapsed) toggleSidebar(localBoolValue);
}, [isSidebarCollapsed, currentUser, toggleSidebar]);
return <>{children}</>;
});
-190
View File
@@ -1,190 +0,0 @@
import set from "lodash/set";
import { observable, action, computed, makeObservable, runInAction } from "mobx";
// plane internal packages
import { EInstanceStatus, TInstanceStatus } from "@plane/constants";
import {InstanceService} from "@plane/services";
import {
IInstance,
IInstanceAdmin,
IInstanceConfiguration,
IFormattedInstanceConfiguration,
IInstanceInfo,
IInstanceConfig,
} from "@plane/types";
// root store
import { CoreRootStore } from "@/store/root.store";
export interface IInstanceStore {
// issues
isLoading: boolean;
error: any;
instanceStatus: TInstanceStatus | undefined;
instance: IInstance | undefined;
config: IInstanceConfig | undefined;
instanceAdmins: IInstanceAdmin[] | undefined;
instanceConfigurations: IInstanceConfiguration[] | undefined;
// computed
formattedConfig: IFormattedInstanceConfiguration | undefined;
// action
hydrate: (data: IInstanceInfo) => void;
fetchInstanceInfo: () => Promise<IInstanceInfo | undefined>;
updateInstanceInfo: (data: Partial<IInstance>) => Promise<IInstance | undefined>;
fetchInstanceAdmins: () => Promise<IInstanceAdmin[] | undefined>;
fetchInstanceConfigurations: () => Promise<IInstanceConfiguration[] | undefined>;
updateInstanceConfigurations: (data: Partial<IFormattedInstanceConfiguration>) => Promise<IInstanceConfiguration[]>;
}
export class InstanceStore implements IInstanceStore {
isLoading: boolean = true;
error: any = undefined;
instanceStatus: TInstanceStatus | undefined = undefined;
instance: IInstance | undefined = undefined;
config: IInstanceConfig | undefined = undefined;
instanceAdmins: IInstanceAdmin[] | undefined = undefined;
instanceConfigurations: IInstanceConfiguration[] | undefined = undefined;
// service
instanceService;
constructor(private store: CoreRootStore) {
makeObservable(this, {
// observable
isLoading: observable.ref,
error: observable.ref,
instanceStatus: observable,
instance: observable,
instanceAdmins: observable,
instanceConfigurations: observable,
// computed
formattedConfig: computed,
// actions
hydrate: action,
fetchInstanceInfo: action,
fetchInstanceAdmins: action,
updateInstanceInfo: action,
fetchInstanceConfigurations: action,
updateInstanceConfigurations: action,
});
this.instanceService = new InstanceService();
}
hydrate = (data: IInstanceInfo) => {
if (data) {
this.instance = data.instance;
this.config = data.config;
}
};
/**
* computed value for instance configurations data for forms.
* @returns configurations in the form of {key, value} pair.
*/
get formattedConfig() {
if (!this.instanceConfigurations) return undefined;
return this.instanceConfigurations?.reduce((formData: IFormattedInstanceConfiguration, config) => {
formData[config.key] = config.value;
return formData;
}, {} as IFormattedInstanceConfiguration);
}
/**
* @description fetching instance configuration
* @returns {IInstance} instance
*/
fetchInstanceInfo = async () => {
try {
if (this.instance === undefined) this.isLoading = true;
this.error = undefined;
const instanceInfo = await this.instanceService.info();
// handling the new user popup toggle
if (this.instance === undefined && !instanceInfo?.instance?.workspaces_exist)
this.store.theme.toggleNewUserPopup();
runInAction(() => {
console.log("instanceInfo: ", instanceInfo);
this.isLoading = false;
this.instance = instanceInfo.instance;
this.config = instanceInfo.config;
});
return instanceInfo;
} catch (error) {
console.error("Error fetching the instance info");
this.isLoading = false;
this.error = { message: "Failed to fetch the instance info" };
this.instanceStatus = {
status: EInstanceStatus.ERROR,
};
throw error;
}
};
/**
* @description updating instance information
* @param {Partial<IInstance>} data
* @returns void
*/
updateInstanceInfo = async (data: Partial<IInstance>) => {
try {
const instanceResponse = await this.instanceService.update(data);
if (instanceResponse) {
runInAction(() => {
if (this.instance) set(this.instance, "instance", instanceResponse);
});
}
return instanceResponse;
} catch (error) {
console.error("Error updating the instance info");
throw error;
}
};
/**
* @description fetching instance admins
* @return {IInstanceAdmin[]} instanceAdmins
*/
fetchInstanceAdmins = async () => {
try {
const instanceAdmins = await this.instanceService.admins();
if (instanceAdmins) runInAction(() => (this.instanceAdmins = instanceAdmins));
return instanceAdmins;
} catch (error) {
console.error("Error fetching the instance admins");
throw error;
}
};
/**
* @description fetching instance configurations
* @return {IInstanceAdmin[]} instanceConfigurations
*/
fetchInstanceConfigurations = async () => {
try {
const instanceConfigurations = await this.instanceService.configurations();
if (instanceConfigurations) runInAction(() => (this.instanceConfigurations = instanceConfigurations));
return instanceConfigurations;
} catch (error) {
console.error("Error fetching the instance configurations");
throw error;
}
};
/**
* @description updating instance configurations
* @param data
*/
updateInstanceConfigurations = async (data: Partial<IFormattedInstanceConfiguration>) => {
try {
const response = await this.instanceService.updateConfigurations(data);
runInAction(() => {
this.instanceConfigurations = this.instanceConfigurations?.map((config) => {
const item = response.find((item) => item.key === config.key);
if (item) return item;
return config;
});
});
return response;
} catch (error) {
console.error("Error updating the instance configurations");
throw error;
}
};
}
@@ -1,85 +0,0 @@
import { observer } from "mobx-react";
import Image from "next/image";
import { useTheme } from "next-themes";
import {
TInstanceAuthenticationMethodKeys as TBaseAuthenticationMethods,
TInstanceAuthenticationModes,
TInstanceEnterpriseAuthenticationMethodKeys,
} from "@plane/types";
import { getAuthenticationModes as getCEAuthenticationModes } from "@/ce/components/authentication/authentication-modes";
// types
// components
import { AuthenticationMethodCard } from "@/components/authentication";
// helpers
import { getBaseAuthenticationModes } from "@/lib/auth-helpers";
// plane admin components
import { OIDCConfiguration, SAMLConfiguration } from "@/plane-admin/components/authentication";
// images
import { useInstanceFlag } from "@/plane-admin/hooks/store/use-instance-flag";
import OIDCLogo from "@/public/logos/oidc-logo.svg";
import SAMLLogo from "@/public/logos/saml-logo.svg";
// plane admin hooks
type TInstanceAuthenticationMethodKeys = TBaseAuthenticationMethods | TInstanceEnterpriseAuthenticationMethodKeys;
export type TAuthenticationModeProps = {
disabled: boolean;
updateConfig: (key: TInstanceAuthenticationMethodKeys, value: string) => void;
};
export type TGetAuthenticationModeProps = {
disabled: boolean;
updateConfig: (key: TInstanceAuthenticationMethodKeys, value: string) => void;
resolvedTheme: string | undefined;
};
// Enterprise authentication methods
export const getAuthenticationModes: (props: TGetAuthenticationModeProps) => TInstanceAuthenticationModes[] = ({
disabled,
updateConfig,
resolvedTheme,
}) => [
...getBaseAuthenticationModes({ disabled, updateConfig, resolvedTheme }),
{
key: "oidc",
name: "OIDC",
description: "Authenticate your users via the OpenID Connect protocol.",
icon: <Image src={OIDCLogo} height={22} width={22} alt="OIDC Logo" />,
config: <OIDCConfiguration disabled={disabled} updateConfig={updateConfig} />,
},
{
key: "saml",
name: "SAML",
description: "Authenticate your users via the Security Assertion Markup Language protocol.",
icon: <Image src={SAMLLogo} height={22} width={22} alt="SAML Logo" className="pl-0.5" />,
config: <SAMLConfiguration disabled={disabled} updateConfig={updateConfig} />,
},
];
export const AuthenticationModes: React.FC<TAuthenticationModeProps> = observer((props) => {
const { disabled, updateConfig } = props;
// next-themes
const { resolvedTheme } = useTheme();
// plane admin hooks
const isOIDCSAMLEnabled = useInstanceFlag("OIDC_SAML_AUTH");
const authenticationModes = isOIDCSAMLEnabled
? getAuthenticationModes({ disabled, updateConfig, resolvedTheme })
: getCEAuthenticationModes({ disabled, updateConfig, resolvedTheme });
return (
<>
{authenticationModes.map((method) => (
<AuthenticationMethodCard
key={method.key}
name={method.name}
description={method.description}
icon={method.icon}
config={method.config}
disabled={disabled}
unavailable={method.unavailable}
/>
))}
</>
);
});
-27
View File
@@ -1,27 +0,0 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
trailingSlash: true,
reactStrictMode: false,
swcMinify: true,
output: "standalone",
images: {
unoptimized: true,
},
basePath: process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || "",
transpilePackages: [
"@plane/constants",
"@plane/editor",
"@plane/hooks",
"@plane/i18n",
"@plane/logger",
"@plane/propel",
"@plane/services",
"@plane/shared-state",
"@plane/types",
"@plane/ui",
"@plane/utils",
],
};
module.exports = nextConfig;
-53
View File
@@ -1,53 +0,0 @@
{
"name": "admin",
"description": "Admin UI for Plane",
"version": "0.25.3",
"license": "AGPL-3.0",
"private": true,
"scripts": {
"dev": "turbo run develop",
"develop": "next dev --port 3001",
"build": "next build",
"preview": "next build && next start",
"start": "next start",
"lint": "eslint . --ext .ts,.tsx",
"lint:errors": "eslint . --ext .ts,.tsx --quiet"
},
"dependencies": {
"@headlessui/react": "^1.7.19",
"@plane/constants": "*",
"@plane/hooks": "*",
"@plane/types": "*",
"@plane/ui": "*",
"@plane/utils": "*",
"@plane/services": "*",
"@tailwindcss/typography": "^0.5.9",
"@types/lodash": "^4.17.0",
"autoprefixer": "10.4.14",
"axios": "^1.8.3",
"lodash": "^4.17.21",
"lucide-react": "^0.469.0",
"mobx": "^6.12.0",
"mobx-react": "^9.1.1",
"next": "^14.2.26",
"next-themes": "^0.2.1",
"postcss": "^8.4.49",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-hook-form": "7.51.5",
"swr": "^2.2.4",
"uuid": "^9.0.1",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@plane/eslint-config": "*",
"@plane/tailwind-config": "*",
"@plane/typescript-config": "*",
"@types/node": "18.16.1",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.2.18",
"@types/uuid": "^9.0.8",
"@types/zxcvbn": "^4.4.4",
"typescript": "5.3.3"
}
}
-8
View File
@@ -1,8 +0,0 @@
module.exports = {
plugins: {
"postcss-import": {},
"tailwindcss/nesting": {},
tailwindcss: {},
autoprefixer: {},
},
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 919 B

-11
View File
@@ -1,11 +0,0 @@
{
"name": "",
"short_name": "",
"icons": [
{ "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
-15
View File
@@ -1,15 +0,0 @@
{
"extends": "@plane/typescript-config/nextjs.json",
"compilerOptions": {
"plugins": [{ "name": "next" }],
"baseUrl": ".",
"paths": {
"@/*": ["core/*"],
"@/public/*": ["public/*"],
"@/plane-admin/*": ["ee/*"],
"@/ce/*": ["ce/*"]
}
},
"include": ["next-env.d.ts", "next.config.js", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
}
-182
View File
@@ -1,182 +0,0 @@
ARG BASE_TAG=develop
ARG BUILD_TYPE=full
# *****************************************************************************
# STAGE 1: Build the project
# *****************************************************************************
FROM node:18-alpine AS builder
RUN apk add --no-cache libc6-compat
# Set working directory
WORKDIR /app
RUN yarn global add turbo
COPY . .
RUN turbo prune --scope=web --scope=space --scope=admin --docker
# *****************************************************************************
# STAGE 2: Install dependencies & build the project
# *****************************************************************************
# Add lockfile and package.json's of isolated subworkspace
FROM node:18-alpine AS installer
RUN apk add --no-cache libc6-compat
WORKDIR /app
# First install the dependencies (as they change less often)
COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/yarn.lock ./yarn.lock
RUN yarn install
# # Build the project
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
ARG NEXT_PUBLIC_API_BASE_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV TURBO_TELEMETRY_DISABLED=1
RUN yarn turbo run build --filter=web --filter=space --filter=admin
# *****************************************************************************
# STAGE 3: Copy the project and start it
# *****************************************************************************
FROM makeplane/plane-aio-base:${BUILD_TYPE}-${BASE_TAG} AS runner
WORKDIR /app
SHELL [ "/bin/bash", "-c" ]
# PYTHON APPLICATION SETUP
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
COPY apiserver/requirements.txt ./api/
COPY apiserver/requirements ./api/requirements
RUN pip install -r ./api/requirements.txt --compile --no-cache-dir
# Add in Django deps and generate Django's static files
COPY apiserver/manage.py ./api/manage.py
COPY apiserver/plane ./api/plane/
COPY apiserver/templates ./api/templates/
COPY package.json ./api/package.json
COPY apiserver/bin ./api/bin/
RUN chmod +x ./api/bin/*
RUN chmod -R 777 ./api/
# NEXTJS BUILDS
COPY --from=installer /app/web/next.config.js ./web/
COPY --from=installer /app/web/package.json ./web/
COPY --from=installer /app/web/.next/standalone ./web
COPY --from=installer /app/web/.next/static ./web/web/.next/static
COPY --from=installer /app/web/public ./web/web/public
COPY --from=installer /app/space/next.config.js ./space/
COPY --from=installer /app/space/package.json ./space/
COPY --from=installer /app/space/.next/standalone ./space
COPY --from=installer /app/space/.next/static ./space/space/.next/static
COPY --from=installer /app/space/public ./space/space/public
COPY --from=installer /app/admin/next.config.js ./admin/
COPY --from=installer /app/admin/package.json ./admin/
COPY --from=installer /app/admin/.next/standalone ./admin
COPY --from=installer /app/admin/.next/static ./admin/admin/.next/static
COPY --from=installer /app/admin/public ./admin/admin/public
ARG NEXT_PUBLIC_API_BASE_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ARG NEXT_PUBLIC_WEB_BASE_URL=""
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV TURBO_TELEMETRY_DISABLED=1
ARG BUILD_TYPE=full
ENV BUILD_TYPE=$BUILD_TYPE
COPY aio/supervisord-${BUILD_TYPE}-base /app/supervisord.conf
COPY aio/supervisord-app /app/supervisord-app
RUN cat /app/supervisord-app >> /app/supervisord.conf && \
rm /app/supervisord-app
COPY ./aio/nginx.conf /etc/nginx/nginx.conf.template
# if build type is full, run the below copy pg-setup.sh
COPY aio/postgresql.conf /etc/postgresql/postgresql.conf
COPY aio/pg-setup.sh /app/pg-setup.sh
RUN chmod +x /app/pg-setup.sh
# *****************************************************************************
# APPLICATION ENVIRONMENT SETTINGS
# *****************************************************************************
ENV APP_DOMAIN=localhost
ENV WEB_URL=http://${APP_DOMAIN}
ENV DEBUG=0
ENV CORS_ALLOWED_ORIGINS=http://${APP_DOMAIN},https://${APP_DOMAIN}
# Secret Key
ENV SECRET_KEY=60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5
# Gunicorn Workers
ENV GUNICORN_WORKERS=1
ENV POSTGRES_USER="plane"
ENV POSTGRES_PASSWORD="plane"
ENV POSTGRES_DB="plane"
ENV POSTGRES_HOST="localhost"
ENV POSTGRES_PORT="5432"
ENV DATABASE_URL="postgresql://plane:plane@localhost:5432/plane"
ENV REDIS_HOST="localhost"
ENV REDIS_PORT="6379"
ENV REDIS_URL="redis://localhost:6379"
ENV USE_MINIO="1"
ENV AWS_REGION=""
ENV AWS_ACCESS_KEY_ID="access-key"
ENV AWS_SECRET_ACCESS_KEY="secret-key"
ENV AWS_S3_ENDPOINT_URL="http://localhost:9000"
ENV AWS_S3_BUCKET_NAME="uploads"
ENV MINIO_ROOT_USER="access-key"
ENV MINIO_ROOT_PASSWORD="secret-key"
ENV BUCKET_NAME="uploads"
ENV FILE_SIZE_LIMIT="5242880"
# *****************************************************************************
RUN /app/pg-setup.sh
CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"]
-73
View File
@@ -1,73 +0,0 @@
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt
FROM python:3.12-slim
# Set environment variables to non-interactive for apt
ENV DEBIAN_FRONTEND=noninteractive
ENV BUILD_TYPE=full
SHELL [ "/bin/bash", "-c" ]
WORKDIR /app
RUN mkdir -p /app/{data,logs} && \
mkdir -p /app/data/{redis,pg,minio,nginx} && \
mkdir -p /app/logs/{access,error} && \
mkdir -p /etc/supervisor/conf.d
# Update the package list and install prerequisites
RUN apt-get update && \
apt-get install -y \
gnupg2 curl ca-certificates lsb-release software-properties-common \
build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils \
tk-dev libffi-dev liblzma-dev supervisor nginx nano vim ncdu \
sudo lsof net-tools libpq-dev procps gettext
# Install Redis 7.2
RUN echo "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main" > /etc/apt/sources.list.d/backports.list && \
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" > /etc/apt/sources.list.d/redis.list && \
apt-get update && \
apt-get install -y redis-server
# Install PostgreSQL 15
ENV POSTGRES_VERSION=15
RUN curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/pgdg-archive-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/pgdg-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
apt-get update && \
apt-get install -y postgresql-$POSTGRES_VERSION postgresql-client-$POSTGRES_VERSION && \
mkdir -p /var/lib/postgresql/data && \
chown -R postgres:postgres /var/lib/postgresql
COPY postgresql.conf /etc/postgresql/postgresql.conf
RUN sudo -u postgres /usr/lib/postgresql/$POSTGRES_VERSION/bin/initdb -D /var/lib/postgresql/data
# Install MinIO
ARG TARGETARCH
RUN if [ "$TARGETARCH" = "amd64" ]; then \
curl -fSl https://dl.min.io/server/minio/release/linux-amd64/minio -o /usr/local/bin/minio; \
elif [ "$TARGETARCH" = "arm64" ]; then \
curl -fSl https://dl.min.io/server/minio/release/linux-arm64/minio -o /usr/local/bin/minio; \
else \
echo "Unsupported architecture: $TARGETARCH"; exit 1; \
fi && \
chmod +x /usr/local/bin/minio
# Install Node.js 18
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
python -m pip install --upgrade pip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Create Supervisor configuration file
COPY supervisord-full-base /app/supervisord.conf
COPY nginx.conf /etc/nginx/nginx.conf.template
COPY env.sh /app/nginx-start.sh
RUN chmod +x /app/nginx-start.sh
# Expose ports for Redis, PostgreSQL, and MinIO
EXPOSE 6379 5432 9000 80 443
# Start Supervisor
CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"]
-45
View File
@@ -1,45 +0,0 @@
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt
FROM python:3.12-slim
# Set environment variables to non-interactive for apt
ENV DEBIAN_FRONTEND=noninteractive
ENV BUILD_TYPE=slim
SHELL [ "/bin/bash", "-c" ]
WORKDIR /app
RUN mkdir -p /app/{data,logs} && \
mkdir -p /app/data/{nginx} && \
mkdir -p /app/logs/{access,error} && \
mkdir -p /etc/supervisor/conf.d
# Update the package list and install prerequisites
RUN apt-get update && \
apt-get install -y \
gnupg2 curl ca-certificates lsb-release software-properties-common \
build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils \
tk-dev libffi-dev liblzma-dev supervisor nginx nano vim ncdu \
sudo lsof net-tools libpq-dev procps gettext
# Install Node.js 18
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs
RUN python -m pip install --upgrade pip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Create Supervisor configuration file
COPY supervisord-slim-base /app/supervisord.conf
COPY nginx.conf /etc/nginx/nginx.conf.template
COPY env.sh /app/nginx-start.sh
RUN chmod +x /app/nginx-start.sh
# Expose ports for Redis, PostgreSQL, and MinIO
EXPOSE 80 443
# Start Supervisor
CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"]
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
export dollar="$"
export http_upgrade="http_upgrade"
export scheme="scheme"
envsubst < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
exec nginx -g 'daemon off;'
-72
View File
@@ -1,72 +0,0 @@
events {
}
http {
sendfile on;
server {
listen 80;
root /www/data/;
access_log /var/log/nginx/access.log;
client_max_body_size ${FILE_SIZE_LIMIT};
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Permissions-Policy "interest-cohort=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Forwarded-Proto "${dollar}scheme";
add_header X-Forwarded-Host "${dollar}host";
add_header X-Forwarded-For "${dollar}proxy_add_x_forwarded_for";
add_header X-Real-IP "${dollar}remote_addr";
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:3001/;
}
location /spaces/ {
rewrite ^/spaces/?$ /spaces/login break;
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:3002/spaces/;
}
location /god-mode/ {
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:3003/god-mode/;
}
location /api/ {
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:8000/api/;
}
location /auth/ {
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:8000/auth/;
}
location /${BUCKET_NAME}/ {
proxy_http_version 1.1;
proxy_set_header Upgrade ${dollar}http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host ${dollar}http_host;
proxy_pass http://localhost:9000/uploads/;
}
}
}
-14
View File
@@ -1,14 +0,0 @@
#!/bin/bash
if [ "$BUILD_TYPE" == "full" ]; then
export PGHOST=localhost
sudo -u postgres "/usr/lib/postgresql/${POSTGRES_VERSION}/bin/pg_ctl" -D /var/lib/postgresql/data start
sudo -u postgres "/usr/lib/postgresql/${POSTGRES_VERSION}/bin/psql" --command "CREATE USER $POSTGRES_USER WITH SUPERUSER PASSWORD '$POSTGRES_PASSWORD';" && \
sudo -u postgres "/usr/lib/postgresql/${POSTGRES_VERSION}/bin/createdb" -O "$POSTGRES_USER" "$POSTGRES_DB" && \
sudo -u postgres "/usr/lib/postgresql/${POSTGRES_VERSION}/bin/psql" --command "GRANT ALL PRIVILEGES ON DATABASE $POSTGRES_DB TO $POSTGRES_USER;" && \
sudo -u postgres "/usr/lib/postgresql/${POSTGRES_VERSION}/bin/pg_ctl" -D /var/lib/postgresql/data stop
fi
-815
View File
@@ -1,815 +0,0 @@
# -----------------------------
# PostgreSQL configuration file
# -----------------------------
#
# This file consists of lines of the form:
#
# name = value
#
# (The "=" is optional.) Whitespace may be used. Comments are introduced with
# "#" anywhere on a line. The complete list of parameter names and allowed
# values can be found in the PostgreSQL documentation.
#
# The commented-out settings shown in this file represent the default values.
# Re-commenting a setting is NOT sufficient to revert it to the default value;
# you need to reload the server.
#
# This file is read on server startup and when the server receives a SIGHUP
# signal. If you edit the file on a running system, you have to SIGHUP the
# server for the changes to take effect, run "pg_ctl reload", or execute
# "SELECT pg_reload_conf()". Some parameters, which are marked below,
# require a server shutdown and restart to take effect.
#
# Any parameter can also be given as a command-line option to the server, e.g.,
# "postgres -c log_connections=on". Some parameters can be changed at run time
# with the "SET" SQL command.
#
# Memory units: B = bytes Time units: us = microseconds
# kB = kilobytes ms = milliseconds
# MB = megabytes s = seconds
# GB = gigabytes min = minutes
# TB = terabytes h = hours
# d = days
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.
data_directory = '/var/lib/postgresql/data' # use data in another directory
# (change requires restart)
hba_file = '/etc/postgresql/15/main/pg_hba.conf' # host-based authentication file
# (change requires restart)
ident_file = '/etc/postgresql/15/main/pg_ident.conf' # ident configuration file
# (change requires restart)
# If external_pid_file is not explicitly set, no extra PID file is written.
external_pid_file = '/var/run/postgresql/15-main.pid' # write an extra PID file
# (change requires restart)
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 200 # (change requires restart)
#superuser_reserved_connections = 3 # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
# (change requires restart)
#unix_socket_group = '' # (change requires restart)
#unix_socket_permissions = 0777 # begin with 0 to use octal notation
# (change requires restart)
#bonjour = off # advertise server via Bonjour
# (change requires restart)
#bonjour_name = '' # defaults to the computer name
# (change requires restart)
# - TCP settings -
# see "man tcp" for details
#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
# 0 selects the system default
#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
# 0 selects the system default
#tcp_keepalives_count = 0 # TCP_KEEPCNT;
# 0 selects the system default
#tcp_user_timeout = 0 # TCP_USER_TIMEOUT, in milliseconds;
# 0 selects the system default
#client_connection_check_interval = 0 # time between checks for client
# disconnection while running queries;
# 0 for never
# - Authentication -
#authentication_timeout = 1min # 1s-600s
#password_encryption = scram-sha-256 # scram-sha-256 or md5
#db_user_namespace = off
# GSSAPI using Kerberos
#krb_server_keyfile = 'FILE:${sysconfdir}/krb5.keytab'
#krb_caseins_users = off
# - SSL -
ssl = on
#ssl_ca_file = ''
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
#ssl_crl_file = ''
#ssl_crl_dir = ''
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
#ssl_prefer_server_ciphers = on
#ssl_ecdh_curve = 'prime256v1'
#ssl_min_protocol_version = 'TLSv1.2'
#ssl_max_protocol_version = ''
#ssl_dh_params_file = ''
#ssl_passphrase_command = ''
#ssl_passphrase_command_supports_reload = off
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------
# - Memory -
shared_buffers = 256MB # min 128kB
# (change requires restart)
#huge_pages = try # on, off, or try
# (change requires restart)
#huge_page_size = 0 # zero for system default
# (change requires restart)
#temp_buffers = 8MB # min 800kB
#max_prepared_transactions = 0 # zero disables the feature
# (change requires restart)
# Caution: it is not advisable to set max_prepared_transactions nonzero unless
# you actively intend to use prepared transactions.
#work_mem = 4MB # min 64kB
#hash_mem_multiplier = 2.0 # 1-1000.0 multiplier on hash table work_mem
#maintenance_work_mem = 64MB # min 1MB
#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem
#logical_decoding_work_mem = 64MB # min 64kB
#max_stack_depth = 2MB # min 100kB
#shared_memory_type = mmap # the default is the first option
# supported by the operating system:
# mmap
# sysv
# windows
# (change requires restart)
dynamic_shared_memory_type = posix # the default is usually the first option
# supported by the operating system:
# posix
# sysv
# windows
# mmap
# (change requires restart)
#min_dynamic_shared_memory = 0MB # (change requires restart)
# - Disk -
#temp_file_limit = -1 # limits per-process temp file space
# in kilobytes, or -1 for no limit
# - Kernel Resources -
#max_files_per_process = 1000 # min 64
# (change requires restart)
# - Cost-Based Vacuum Delay -
#vacuum_cost_delay = 0 # 0-100 milliseconds (0 disables)
#vacuum_cost_page_hit = 1 # 0-10000 credits
#vacuum_cost_page_miss = 2 # 0-10000 credits
#vacuum_cost_page_dirty = 20 # 0-10000 credits
#vacuum_cost_limit = 200 # 1-10000 credits
# - Background Writer -
#bgwriter_delay = 200ms # 10-10000ms between rounds
#bgwriter_lru_maxpages = 100 # max buffers written/round, 0 disables
#bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round
#bgwriter_flush_after = 512kB # measured in pages, 0 disables
# - Asynchronous Behavior -
#backend_flush_after = 0 # measured in pages, 0 disables
#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
#maintenance_io_concurrency = 10 # 1-1000; 0 disables prefetching
#max_worker_processes = 8 # (change requires restart)
#max_parallel_workers_per_gather = 2 # limited by max_parallel_workers
#max_parallel_maintenance_workers = 2 # limited by max_parallel_workers
#max_parallel_workers = 8 # number of max_worker_processes that
# can be used in parallel operations
#parallel_leader_participation = on
#old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate
# (change requires restart)
#------------------------------------------------------------------------------
# WRITE-AHEAD LOG
#------------------------------------------------------------------------------
# - Settings -
#wal_level = replica # minimal, replica, or logical
# (change requires restart)
#fsync = on # flush data to disk for crash safety
# (turning this off can cause
# unrecoverable data corruption)
#synchronous_commit = on # synchronization level;
# off, local, remote_write, remote_apply, or on
#wal_sync_method = fsync # the default is the first option
# supported by the operating system:
# open_datasync
# fdatasync (default on Linux and FreeBSD)
# fsync
# fsync_writethrough
# open_sync
#full_page_writes = on # recover from partial page writes
#wal_log_hints = off # also do full page writes of non-critical updates
# (change requires restart)
#wal_compression = off # enables compression of full-page writes;
# off, pglz, lz4, zstd, or on
#wal_init_zero = on # zero-fill new WAL files
#wal_recycle = on # recycle WAL files
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
# (change requires restart)
#wal_writer_delay = 200ms # 1-10000 milliseconds
#wal_writer_flush_after = 1MB # measured in pages, 0 disables
#wal_skip_threshold = 2MB
#commit_delay = 0 # range 0-100000, in microseconds
#commit_siblings = 5 # range 1-1000
# - Checkpoints -
#checkpoint_timeout = 5min # range 30s-1d
#checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0
#checkpoint_flush_after = 256kB # measured in pages, 0 disables
#checkpoint_warning = 30s # 0 disables
max_wal_size = 1GB
min_wal_size = 80MB
# - Prefetching during recovery -
#recovery_prefetch = try # prefetch pages referenced in the WAL?
#wal_decode_buffer_size = 512kB # lookahead window used for prefetching
# (change requires restart)
# - Archiving -
#archive_mode = off # enables archiving; off, on, or always
# (change requires restart)
#archive_library = '' # library to use to archive a logfile segment
# (empty string indicates archive_command should
# be used)
#archive_command = '' # command to use to archive a logfile segment
# placeholders: %p = path of file to archive
# %f = file name only
# e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
#archive_timeout = 0 # force a logfile segment switch after this
# number of seconds; 0 disables
# - Archive Recovery -
# These are only used in recovery mode.
#restore_command = '' # command to use to restore an archived logfile segment
# placeholders: %p = path of file to restore
# %f = file name only
# e.g. 'cp /mnt/server/archivedir/%f %p'
#archive_cleanup_command = '' # command to execute at every restartpoint
#recovery_end_command = '' # command to execute at completion of recovery
# - Recovery Target -
# Set these only when performing a targeted recovery.
#recovery_target = '' # 'immediate' to end recovery as soon as a
# consistent state is reached
# (change requires restart)
#recovery_target_name = '' # the named restore point to which recovery will proceed
# (change requires restart)
#recovery_target_time = '' # the time stamp up to which recovery will proceed
# (change requires restart)
#recovery_target_xid = '' # the transaction ID up to which recovery will proceed
# (change requires restart)
#recovery_target_lsn = '' # the WAL LSN up to which recovery will proceed
# (change requires restart)
#recovery_target_inclusive = on # Specifies whether to stop:
# just after the specified recovery target (on)
# just before the recovery target (off)
# (change requires restart)
#recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID
# (change requires restart)
#recovery_target_action = 'pause' # 'pause', 'promote', 'shutdown'
# (change requires restart)
#------------------------------------------------------------------------------
# REPLICATION
#------------------------------------------------------------------------------
# - Sending Servers -
# Set these on the primary and on any standby that will send replication data.
#max_wal_senders = 10 # max number of walsender processes
# (change requires restart)
#max_replication_slots = 10 # max number of replication slots
# (change requires restart)
#wal_keep_size = 0 # in megabytes; 0 disables
#max_slot_wal_keep_size = -1 # in megabytes; -1 disables
#wal_sender_timeout = 60s # in milliseconds; 0 disables
#track_commit_timestamp = off # collect timestamp of transaction commit
# (change requires restart)
# - Primary Server -
# These settings are ignored on a standby server.
#synchronous_standby_names = '' # standby servers that provide sync rep
# method to choose sync standbys, number of sync standbys,
# and comma-separated list of application_name
# from standby(s); '*' = all
#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
# - Standby Servers -
# These settings are ignored on a primary server.
#primary_conninfo = '' # connection string to sending server
#primary_slot_name = '' # replication slot on sending server
#promote_trigger_file = '' # file name whose presence ends recovery
#hot_standby = on # "off" disallows queries during recovery
# (change requires restart)
#max_standby_archive_delay = 30s # max delay before canceling queries
# when reading WAL from archive;
# -1 allows indefinite delay
#max_standby_streaming_delay = 30s # max delay before canceling queries
# when reading streaming WAL;
# -1 allows indefinite delay
#wal_receiver_create_temp_slot = off # create temp slot if primary_slot_name
# is not set
#wal_receiver_status_interval = 10s # send replies at least this often
# 0 disables
#hot_standby_feedback = off # send info from standby to prevent
# query conflicts
#wal_receiver_timeout = 60s # time that receiver waits for
# communication from primary
# in milliseconds; 0 disables
#wal_retrieve_retry_interval = 5s # time to wait before retrying to
# retrieve WAL after a failed attempt
#recovery_min_apply_delay = 0 # minimum delay for applying changes during recovery
# - Subscribers -
# These settings are ignored on a publisher.
#max_logical_replication_workers = 4 # taken from max_worker_processes
# (change requires restart)
#max_sync_workers_per_subscription = 2 # taken from max_logical_replication_workers
#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------
# - Planner Method Configuration -
#enable_async_append = on
#enable_bitmapscan = on
#enable_gathermerge = on
#enable_hashagg = on
#enable_hashjoin = on
#enable_incremental_sort = on
#enable_indexscan = on
#enable_indexonlyscan = on
#enable_material = on
#enable_memoize = on
#enable_mergejoin = on
#enable_nestloop = on
#enable_parallel_append = on
#enable_parallel_hash = on
#enable_partition_pruning = on
#enable_partitionwise_join = off
#enable_partitionwise_aggregate = off
#enable_seqscan = on
#enable_sort = on
#enable_tidscan = on
# - Planner Cost Constants -
#seq_page_cost = 1.0 # measured on an arbitrary scale
#random_page_cost = 4.0 # same scale as above
#cpu_tuple_cost = 0.01 # same scale as above
#cpu_index_tuple_cost = 0.005 # same scale as above
#cpu_operator_cost = 0.0025 # same scale as above
#parallel_setup_cost = 1000.0 # same scale as above
#parallel_tuple_cost = 0.1 # same scale as above
#min_parallel_table_scan_size = 8MB
#min_parallel_index_scan_size = 512kB
#effective_cache_size = 4GB
#jit_above_cost = 100000 # perform JIT compilation if available
# and query more expensive than this;
# -1 disables
#jit_inline_above_cost = 500000 # inline small functions if query is
# more expensive than this; -1 disables
#jit_optimize_above_cost = 500000 # use expensive JIT optimizations if
# query is more expensive than this;
# -1 disables
# - Genetic Query Optimizer -
#geqo = on
#geqo_threshold = 12
#geqo_effort = 5 # range 1-10
#geqo_pool_size = 0 # selects default based on effort
#geqo_generations = 0 # selects default based on effort
#geqo_selection_bias = 2.0 # range 1.5-2.0
#geqo_seed = 0.0 # range 0.0-1.0
# - Other Planner Options -
#default_statistics_target = 100 # range 1-10000
#constraint_exclusion = partition # on, off, or partition
#cursor_tuple_fraction = 0.1 # range 0.0-1.0
#from_collapse_limit = 8
#jit = on # allow JIT compilation
#join_collapse_limit = 8 # 1 disables collapsing of explicit
# JOIN clauses
#plan_cache_mode = auto # auto, force_generic_plan or
# force_custom_plan
#recursive_worktable_factor = 10.0 # range 0.001-1000000
#------------------------------------------------------------------------------
# REPORTING AND LOGGING
#------------------------------------------------------------------------------
# - Where to Log -
#log_destination = 'stderr' # Valid values are combinations of
# stderr, csvlog, jsonlog, syslog, and
# eventlog, depending on platform.
# csvlog and jsonlog require
# logging_collector to be on.
# This is used when logging to stderr:
#logging_collector = off # Enable capturing of stderr, jsonlog,
# and csvlog into log files. Required
# to be on for csvlogs and jsonlogs.
# (change requires restart)
# These are only used if logging_collector is on:
#log_directory = 'log' # directory where log files are written,
# can be absolute or relative to PGDATA
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
# can include strftime() escapes
#log_file_mode = 0600 # creation mode for log files,
# begin with 0 to use octal notation
#log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
#log_rotation_size = 10MB # Automatic rotation of logfiles will
# happen after that much log output.
# 0 disables.
#log_truncate_on_rotation = off # If on, an existing log file with the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation. Default is
# off, meaning append to existing files
# in all cases.
# These are relevant when logging to syslog:
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
#syslog_sequence_numbers = on
#syslog_split_messages = on
# This is only relevant when logging to eventlog (Windows):
# (change requires restart)
#event_source = 'PostgreSQL'
# - When to Log -
#log_min_messages = warning # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# info
# notice
# warning
# error
# log
# fatal
# panic
#log_min_error_statement = error # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# info
# notice
# warning
# error
# log
# fatal
# panic (effectively off)
#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# statements running at least this number
# of milliseconds
#log_min_duration_sample = -1 # -1 is disabled, 0 logs a sample of statements
# and their durations, > 0 logs only a sample of
# statements running at least this number
# of milliseconds;
# sample fraction is determined by log_statement_sample_rate
#log_statement_sample_rate = 1.0 # fraction of logged statements exceeding
# log_min_duration_sample to be logged;
# 1.0 logs all such statements, 0.0 never logs
#log_transaction_sample_rate = 0.0 # fraction of transactions whose statements
# are logged regardless of their duration; 1.0 logs all
# statements from all transactions, 0.0 never logs
#log_startup_progress_interval = 10s # Time between progress updates for
# long-running startup operations.
# 0 disables the feature, > 0 indicates
# the interval in milliseconds.
# - What to Log -
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = on
#log_autovacuum_min_duration = 10min # log autovacuum activity;
# -1 disables, 0 logs all actions and
# their durations, > 0 logs only
# actions running at least this number
# of milliseconds.
#log_checkpoints = on
#log_connections = off
#log_disconnections = off
#log_duration = off
#log_error_verbosity = default # terse, default, or verbose messages
#log_hostname = off
log_line_prefix = '%m [%p] %q%u@%d ' # special values:
# %a = application name
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %b = backend type
# %p = process ID
# %P = process ID of parallel group leader
# %t = timestamp without milliseconds
# %m = timestamp with milliseconds
# %n = timestamp with milliseconds (as a Unix epoch)
# %Q = query ID (0 if none or not computed)
# %i = command tag
# %e = SQL state
# %c = session ID
# %l = session line number
# %s = session start timestamp
# %v = virtual transaction ID
# %x = transaction ID (0 if none)
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
#log_lock_waits = off # log lock waits >= deadlock_timeout
#log_recovery_conflict_waits = off # log standby recovery conflict waits
# >= deadlock_timeout
#log_parameter_max_length = -1 # when logging statements, limit logged
# bind-parameter values to N bytes;
# -1 means print in full, 0 disables
#log_parameter_max_length_on_error = 0 # when logging an error, limit logged
# bind-parameter values to N bytes;
# -1 means print in full, 0 disables
#log_statement = 'none' # none, ddl, mod, all
#log_replication_commands = off
#log_temp_files = -1 # log temporary files equal or larger
# than the specified size in kilobytes;
# -1 disables, 0 logs all temp files
log_timezone = 'Etc/UTC'
#------------------------------------------------------------------------------
# PROCESS TITLE
#------------------------------------------------------------------------------
cluster_name = '15/main' # added to process titles if nonempty
# (change requires restart)
#update_process_title = on
#------------------------------------------------------------------------------
# STATISTICS
#------------------------------------------------------------------------------
# - Cumulative Query and Index Statistics -
#track_activities = on
#track_activity_query_size = 1024 # (change requires restart)
#track_counts = on
#track_io_timing = off
#track_wal_io_timing = off
#track_functions = none # none, pl, all
#stats_fetch_consistency = cache
# - Monitoring -
#compute_query_id = auto
#log_statement_stats = off
#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#------------------------------------------------------------------------------
# AUTOVACUUM
#------------------------------------------------------------------------------
#autovacuum = on # Enable autovacuum subprocess? 'on'
# requires track_counts to also be on.
#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
# (change requires restart)
#autovacuum_naptime = 1min # time between autovacuum runs
#autovacuum_vacuum_threshold = 50 # min number of row updates before
# vacuum
#autovacuum_vacuum_insert_threshold = 1000 # min number of row inserts
# before vacuum; -1 disables insert
# vacuums
#autovacuum_analyze_threshold = 50 # min number of row updates before
# analyze
#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
#autovacuum_vacuum_insert_scale_factor = 0.2 # fraction of inserts over table
# size before insert vacuum
#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
# (change requires restart)
#autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age
# before forced vacuum
# (change requires restart)
#autovacuum_vacuum_cost_delay = 2ms # default vacuum cost delay for
# autovacuum, in milliseconds;
# -1 means use vacuum_cost_delay
#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
# autovacuum, -1 means use
# vacuum_cost_limit
#------------------------------------------------------------------------------
# CLIENT CONNECTION DEFAULTS
#------------------------------------------------------------------------------
# - Statement Behavior -
#client_min_messages = notice # values in order of decreasing detail:
# debug5
# debug4
# debug3
# debug2
# debug1
# log
# notice
# warning
# error
#search_path = '"$user", public' # schema names
#row_security = on
#default_table_access_method = 'heap'
#default_tablespace = '' # a tablespace name, '' uses the default
#default_toast_compression = 'pglz' # 'pglz' or 'lz4'
#temp_tablespaces = '' # a list of tablespace names, '' uses
# only default tablespace
#check_function_bodies = on
#default_transaction_isolation = 'read committed'
#default_transaction_read_only = off
#default_transaction_deferrable = off
#session_replication_role = 'origin'
#statement_timeout = 0 # in milliseconds, 0 is disabled
#lock_timeout = 0 # in milliseconds, 0 is disabled
#idle_in_transaction_session_timeout = 0 # in milliseconds, 0 is disabled
#idle_session_timeout = 0 # in milliseconds, 0 is disabled
#vacuum_freeze_table_age = 150000000
#vacuum_freeze_min_age = 50000000
#vacuum_failsafe_age = 1600000000
#vacuum_multixact_freeze_table_age = 150000000
#vacuum_multixact_freeze_min_age = 5000000
#vacuum_multixact_failsafe_age = 1600000000
#bytea_output = 'hex' # hex, escape
#xmlbinary = 'base64'
#xmloption = 'content'
#gin_pending_list_limit = 4MB
# - Locale and Formatting -
datestyle = 'iso, mdy'
#intervalstyle = 'postgres'
timezone = 'Etc/UTC'
#timezone_abbreviations = 'Default' # Select the set of available time zone
# abbreviations. Currently, there are
# Default
# Australia (historical usage)
# India
# You can create your own file in
# share/timezonesets/.
#extra_float_digits = 1 # min -15, max 3; any value >0 actually
# selects precise output mode
#client_encoding = sql_ascii # actually, defaults to database
# encoding
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'C.UTF-8' # locale for system error message
# strings
lc_monetary = 'C.UTF-8' # locale for monetary formatting
lc_numeric = 'C.UTF-8' # locale for number formatting
lc_time = 'C.UTF-8' # locale for time formatting
# default configuration for text search
default_text_search_config = 'pg_catalog.english'
# - Shared Library Preloading -
#local_preload_libraries = ''
#session_preload_libraries = ''
#shared_preload_libraries = '' # (change requires restart)
#jit_provider = 'llvmjit' # JIT library to use
# - Other Defaults -
#dynamic_library_path = '$libdir'
#extension_destdir = '' # prepend path when loading extensions
# and shared objects (added by Debian)
#gin_fuzzy_search_limit = 0
#------------------------------------------------------------------------------
# LOCK MANAGEMENT
#------------------------------------------------------------------------------
#deadlock_timeout = 1s
#max_locks_per_transaction = 64 # min 10
# (change requires restart)
#max_pred_locks_per_transaction = 64 # min 10
# (change requires restart)
#max_pred_locks_per_relation = -2 # negative values mean
# (max_pred_locks_per_transaction
# / -max_pred_locks_per_relation) - 1
#max_pred_locks_per_page = 2 # min 0
#------------------------------------------------------------------------------
# VERSION AND PLATFORM COMPATIBILITY
#------------------------------------------------------------------------------
# - Previous PostgreSQL Versions -
#array_nulls = on
#backslash_quote = safe_encoding # on, off, or safe_encoding
#escape_string_warning = on
#lo_compat_privileges = off
#quote_all_identifiers = off
#standard_conforming_strings = on
#synchronize_seqscans = on
# - Other Platforms and Clients -
#transform_null_equals = off
#------------------------------------------------------------------------------
# ERROR HANDLING
#------------------------------------------------------------------------------
#exit_on_error = off # terminate session on any error?
#restart_after_crash = on # reinitialize after backend crash?
#data_sync_retry = off # retry or panic on failure to fsync
# data?
# (change requires restart)
#recovery_init_sync_method = fsync # fsync, syncfs (Linux 5.8+)
#------------------------------------------------------------------------------
# CONFIG FILE INCLUDES
#------------------------------------------------------------------------------
# These options allow settings to be loaded from files other than the
# default postgresql.conf. Note that these are directives, not variable
# assignments, so they can usefully be given more than once.
# include_dir = 'conf.d' # include files ending in '.conf' from
# a directory, e.g., 'conf.d'
#include_if_exists = '...' # include file only if it exists
#include = '...' # include file
#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------
# Add settings for extensions here
-71
View File
@@ -1,71 +0,0 @@
[program:web]
command=node /app/web/web/server.js
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
environment=PORT=3001,HOSTNAME=0.0.0.0
[program:space]
command=node /app/space/space/server.js
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
environment=PORT=3002,HOSTNAME=0.0.0.0
[program:admin]
command=node /app/admin/admin/server.js
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
environment=PORT=3003,HOSTNAME=0.0.0.0
[program:migrator]
directory=/app/api
command=sh -c "./bin/docker-entrypoint-migrator.sh"
autostart=true
autorestart=false
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
[program:api]
directory=/app/api
command=sh -c "./bin/docker-entrypoint-api.sh"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
[program:worker]
directory=/app/api
command=sh -c "./bin/docker-entrypoint-worker.sh"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
[program:beat]
directory=/app/api
command=sh -c "./bin/docker-entrypoint-beat.sh"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0
-38
View File
@@ -1,38 +0,0 @@
[supervisord]
user=root
nodaemon=true
stderr_logfile=/app/logs/error/supervisor.err.log
stdout_logfile=/app/logs/access/supervisor.log
[program:redis]
directory=/app/data/redis
command=redis-server
autostart=true
autorestart=true
stderr_logfile=/app/logs/error/redis.err.log
stdout_logfile=/app/logs/access/redis.log
[program:postgresql]
user=postgres
command=/usr/lib/postgresql/15/bin/postgres --config-file=/etc/postgresql/postgresql.conf
autostart=true
autorestart=true
stderr_logfile=/app/logs/error/postgresql.err.log
stdout_logfile=/app/logs/access/postgresql.log
[program:minio]
directory=/app/data/minio
command=minio server /app/data/minio
autostart=true
autorestart=true
stderr_logfile=/app/logs/error/minio.err.log
stdout_logfile=/app/logs/access/minio.log
[program:nginx]
directory=/app/data/nginx
command=/app/nginx-start.sh
autostart=true
autorestart=true
stderr_logfile=/app/logs/error/nginx.err.log
stdout_logfile=/app/logs/access/nginx.log
-14
View File
@@ -1,14 +0,0 @@
[supervisord]
user=root
nodaemon=true
stderr_logfile=/app/logs/error/supervisor.err.log
stdout_logfile=/app/logs/access/supervisor.log
[program:nginx]
directory=/app/data/nginx
command=/app/nginx-start.sh
autostart=true
autorestart=true
stderr_logfile=/app/logs/error/nginx.err.log
stdout_logfile=/app/logs/access/nginx.log
-65
View File
@@ -1,65 +0,0 @@
# Backend
# Debug value for api server use it as 0 for production use
DEBUG=0
CORS_ALLOWED_ORIGINS="http://localhost"
# Database Settings
POSTGRES_USER="plane"
POSTGRES_PASSWORD="plane"
POSTGRES_HOST="plane-db"
POSTGRES_DB="plane"
POSTGRES_PORT=5432
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
# Redis Settings
REDIS_HOST="plane-redis"
REDIS_PORT="6379"
REDIS_URL="redis://${REDIS_HOST}:6379/"
# RabbitMQ Settings
RABBITMQ_HOST="plane-mq"
RABBITMQ_PORT="5672"
RABBITMQ_USER="plane"
RABBITMQ_PASSWORD="plane"
RABBITMQ_VHOST="plane"
# AWS Settings
AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the nginx.conf for uploads if using minio setup
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
# Settings related to Docker
DOCKERIZED=1 # deprecated
# set to 1 If using the pre-configured minio setup
USE_MINIO=1
# Nginx Configuration
NGINX_PORT=80
# Email redirections and minio domain settings
WEB_URL="http://localhost"
# Gunicorn Workers
GUNICORN_WORKERS=2
# Base URLs
ADMIN_BASE_URL=
SPACE_BASE_URL=
APP_BASE_URL=
SILO_BASE_URL=
# Hard delete files after days
HARD_DELETE_AFTER_DAYS=60
# Force HTTPS for handling SSL Termination
MINIO_ENDPOINT_SSL=0
# API key rate limit
API_KEY_RATE_LIMIT="60/minute"
-53
View File
@@ -1,53 +0,0 @@
FROM python:3.12.5-alpine AS backend
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
ENV INSTANCE_CHANGELOG_URL https://sites.plane.so/pages/f366114e9aba4cbfbe4265b8f2b74f65
WORKDIR /code
RUN apk add --no-cache \
"libpq" \
"libxslt" \
"nodejs-current" \
"xmlsec"
COPY requirements.txt ./
COPY requirements ./requirements
RUN apk add --no-cache libffi-dev
RUN apk add --no-cache --virtual .build-deps \
"bash~=5.2" \
"g++" \
"gcc" \
"cargo" \
"git" \
"make" \
"postgresql-dev" \
"libc-dev" \
"linux-headers" \
"xmlsec-dev"\
&& \
pip install -r requirements.txt --compile --no-cache-dir \
&& \
apk del .build-deps
# Add in Django deps and generate Django's static files
COPY manage.py manage.py
COPY plane plane/
COPY templates templates/
COPY package.json package.json
RUN apk --no-cache add "bash~=5.2"
COPY ./bin ./bin/
RUN mkdir -p /code/plane/logs
RUN chmod +x ./bin/*
RUN chmod -R 777 /code
# Expose container port and run entry point script
EXPOSE 8000
-48
View File
@@ -1,48 +0,0 @@
FROM python:3.12.5-alpine AS backend
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
ENV INSTANCE_CHANGELOG_URL https://sites.plane.so/pages/f366114e9aba4cbfbe4265b8f2b74f65
RUN apk --no-cache add \
"bash~=5.2" \
"libpq" \
"libxslt" \
"nodejs-current" \
"xmlsec" \
"libffi-dev" \
"bash~=5.2" \
"g++" \
"gcc" \
"cargo" \
"git" \
"make" \
"postgresql-dev" \
"libc-dev" \
"linux-headers" \
"xmlsec-dev"
WORKDIR /code
COPY requirements.txt ./requirements.txt
ADD requirements ./requirements
# Install the local development settings
RUN pip install -r requirements/local.txt --compile --no-cache-dir
COPY . .
RUN mkdir -p /code/plane/logs
RUN chmod -R +x /code/bin
RUN chmod -R 777 /code
# Expose container port and run entry point script
EXPOSE 8000
CMD [ "./bin/docker-entrypoint-api-local.sh" ]

Some files were not shown because too many files have changed in this diff Show More