Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
7434800
chore: show message if dragging unjoined project (#1763)
aaryan610 Aug 2, 2023
b61adbe
fix: invalid project selection in create issue modal (#1766)
dakshesh14 Aug 2, 2023
584192f
style: sidebar project list improvement (#1767)
anmolsinghbhatia Aug 2, 2023
87a9201
fix: comment reaction mutation (#1768)
dakshesh14 Aug 2, 2023
a66dcb9
fix: user profiles n plus 1 (#1765)
pablohashescobar Aug 2, 2023
9a29896
fix: bulk issue import (#1773)
pablohashescobar Aug 2, 2023
c16b0da
style: profile activity (#1771)
anmolsinghbhatia Aug 2, 2023
a1ae338
chore: add non existing states for project entities (#1770)
aaryan610 Aug 2, 2023
5aad6c7
fix: notification read status being toggled when click on link (#1769)
dakshesh14 Aug 2, 2023
97c3fb4
fix: custom theme persisting after signing out (#1780)
aaryan610 Aug 3, 2023
2b46e5f
feat: issue export csv (#1781)
NarayanBavisetti Aug 7, 2023
a164dfd
chore(frontend): add `sharp` (#1451)
TheDevMinerTV Aug 7, 2023
b6744dc
Chore: mobx setup and app sidebar and theme management (#1798)
gurusainath Aug 8, 2023
9df0ba6
feat: initiated plane space (#1801)
gurusainath Aug 8, 2023
cf306ee
feat: user display name (#1179)
pablohashescobar Aug 8, 2023
981acc8
fix: replaced first name, last name or email to display name (#1796)
dakshesh14 Aug 8, 2023
88e5a05
chore: subscribed by me tab on my issues page (#1800)
aaryan610 Aug 8, 2023
5f1209f
chore: empty state for multi-level dropdown (#1802)
aaryan610 Aug 8, 2023
4fcd081
chore: select start date option for issue (#1813)
aaryan610 Aug 9, 2023
1991e09
refactor: removed escape keydown listener (#1814)
dakshesh14 Aug 9, 2023
faa50b0
fix: analytics showing user id instead of display name (#1812)
dakshesh14 Aug 9, 2023
3db69a3
style: profile empty state (#1811)
anmolsinghbhatia Aug 9, 2023
d9ccce4
chore: profile and my issues page start date option (#1815)
aaryan610 Aug 9, 2023
2a6eb5f
style: option to edit display name in profile page (#1818)
dakshesh14 Aug 9, 2023
c9d0c53
style: displaying email in members page depending on user role (#1817)
dakshesh14 Aug 9, 2023
be062cc
fix: import user using endpoint with email (#1819)
dakshesh14 Aug 9, 2023
005b42c
dev: Updating themening worfkflow (#1827)
gurusainath Aug 10, 2023
1c6cdb8
refactor: added validation for display_name (#1823)
dakshesh14 Aug 10, 2023
9ce85cd
refactor: if/else conditions (#1822)
dakshesh14 Aug 10, 2023
8c8668a
refactor: not making calls to member's endpoint to get membership sta…
dakshesh14 Aug 10, 2023
f562fcd
refactor: both delete or backspace can be used to open modal (#1829)
dakshesh14 Aug 10, 2023
8373f20
fix: issues n plus 1 (#1785)
pablohashescobar Aug 11, 2023
2769a73
remove: auto start date configuration (#1799)
pablohashescobar Aug 11, 2023
085cd19
fix: project members endpoint email (#1804)
pablohashescobar Aug 11, 2023
11abd3c
fix: user id for default analytics (#1808)
pablohashescobar Aug 11, 2023
0a1483c
chore: issue list date filters and properties (#1820)
pablohashescobar Aug 11, 2023
be86a7d
feat: project member role (#1828)
pablohashescobar Aug 11, 2023
e06ee25
fix: project states create (#1830)
pablohashescobar Aug 11, 2023
edaeae1
chore: sort order for cycle and modules (#1835)
pablohashescobar Aug 11, 2023
def10af
fix: issue date filtering (#1834)
pablohashescobar Aug 11, 2023
289e81d
chore: issue activity user redirection added (#1805)
anmolsinghbhatia Aug 11, 2023
5c964d1
style: ui improvement (#1806)
anmolsinghbhatia Aug 11, 2023
dbb53a6
style: sidebar ui improvement (#1816)
anmolsinghbhatia Aug 11, 2023
e2b5657
chore: profile cover photo (#1836)
anmolsinghbhatia Aug 11, 2023
762ef42
chore: project search added in project list page (#1837)
anmolsinghbhatia Aug 11, 2023
785a6e8
chore: gantt chart resizable blocks, y-axis drag and drop (#1810)
aaryan610 Aug 11, 2023
88e987b
feat: cycle and module sort order (#1841)
pablohashescobar Aug 11, 2023
abec46a
fix: cmdk not changing theme if active theme is custom-theme (#1842)
dakshesh14 Aug 11, 2023
6617049
fix: sub issue endpoint for state distribution (#1845)
pablohashescobar Aug 11, 2023
ad4cdcc
fix: cmdk modal not closing when choosing an option (#1833)
dakshesh14 Aug 11, 2023
cd5e5b9
feat: Mobx integration, List and Kanban boards implementation in plan…
gurusainath Aug 11, 2023
7becec4
feat: randomize color on label create (#1839)
dakshesh14 Aug 11, 2023
ac6d2b0
chore: updated user permission for project and workspace settings (#1…
anmolsinghbhatia Aug 11, 2023
a3d9910
fix: sub issue progress indicator fix (#1847)
anmolsinghbhatia Aug 11, 2023
5f5790e
chore: start date option added in spreadsheet view (#1824)
anmolsinghbhatia Aug 11, 2023
c6eea9c
fix: empty groups not appearing in the kanban view (#1843)
aaryan610 Aug 11, 2023
079a5b2
style: custom theming color picker position (#1846)
anmolsinghbhatia Aug 11, 2023
feba1cc
feat: project public boards (#1772)
pablohashescobar Aug 11, 2023
1a9faa0
fix: export issues in CSV, JSON and XLSX (#1794)
NarayanBavisetti Aug 11, 2023
70e2509
package.json; fix license
ryota-murakami Aug 12, 2023
816f00d
Merge pull request #1848 from ryota-murakami/fix/license
vamsi Aug 12, 2023
ddd3301
feat: csv, json and, xlsx exporter (#1840)
srinivaspendem Aug 14, 2023
dc2438b
style: image upload modal aspect ratio (#1853)
anmolsinghbhatia Aug 14, 2023
f73239b
refactor: using webp image format instead of svg (#1852)
dakshesh14 Aug 14, 2023
f7a596c
fix: gantt chart block left drag flicker (#1854)
aaryan610 Aug 14, 2023
5ddfee1
fix: changed the display of date format (#1855)
NarayanBavisetti Aug 14, 2023
77fb50f
fix: route fix in imports and exports (#1857)
srinivaspendem Aug 14, 2023
5e76e03
style: profile activity loader (#1858)
anmolsinghbhatia Aug 14, 2023
8ccc1b3
fix: gray background on png image (#1856)
dakshesh14 Aug 14, 2023
6774edd
style: sidebar select date width (#1859)
anmolsinghbhatia Aug 14, 2023
d2cdaac
fix: slack queryset (#1860)
pablohashescobar Aug 14, 2023
daa8f7d
feat / public deploy settings workflow (#1863)
gurusainath Aug 14, 2023
e1ae0d3
feat : Tiptap integration (#1832)
sriramveeraghanta Aug 15, 2023
df46a45
fix: analytics export (#1862)
pablohashescobar Aug 15, 2023
07717e9
chore: file name changed for exported issues (#1865)
NarayanBavisetti Aug 15, 2023
b554087
chore: deploy board status for project (#1866)
pablohashescobar Aug 15, 2023
7241944
fix: added slug in filename for export issues (#1870)
NarayanBavisetti Aug 16, 2023
08382f8
chore: updated migration files for 0.11 (#1851)
pablohashescobar Aug 16, 2023
55e2f00
fix: members list filtering for workspace and projects (#1872)
pablohashescobar Aug 16, 2023
9003c58
merge conflicts resolved
sriramveeraghanta Aug 16, 2023
0979acc
fix: notification card not redirecting to archive issue detail for ar…
dakshesh14 Aug 16, 2023
2c43a15
chore: added new filed in serializer (#1874)
NarayanBavisetti Aug 16, 2023
1ded8f4
chore: updated meta tags for project issues (#1875)
gurusainath Aug 16, 2023
f44d142
chore: tip-tap editor update in workspace user activity (#1877)
gurusainath Aug 16, 2023
fde9788
Merge branch 'develop' of github.com:makeplane/plane into stage/merge…
sriramveeraghanta Aug 16, 2023
550473b
Merge pull request #1876 from makeplane/stage/merge-fixes
pablohashescobar Aug 16, 2023
1750ba3
fix: my issue duplication (#1882)
pablohashescobar Aug 16, 2023
2b6deba
Updated setup document to include tiptap pro install (#1871)
aditipatelpro Aug 16, 2023
10dface
chore: updated error pages 404 and project-not-found in plane deploy …
gurusainath Aug 16, 2023
b24622e
fix: validation for issue activity description (#1887)
NarayanBavisetti Aug 16, 2023
f849712
style: fixed display name coming twice on profile page (#1889)
dakshesh14 Aug 16, 2023
5b6b43f
fix: quick action buttons: (#1884)
aaryan610 Aug 16, 2023
65295f6
chore: updating the theme using MobX from command k (#1879)
gurusainath Aug 16, 2023
0afd72d
fix: updated theming in workspace preferences (#1890)
gurusainath Aug 16, 2023
abb8782
fix: handled default view on plane deploy (#1893)
gurusainath Aug 17, 2023
e593a8d
chore: Edited Setup Script to take TipTap Auth Token and Generate .np…
henit-chobisa Aug 18, 2023
d74ec7b
fix: ui improvement and bug fixes (#1883)
anmolsinghbhatia Aug 18, 2023
c3c6ba9
chore: link edit functionality (#1895)
anmolsinghbhatia Aug 18, 2023
93fec2c
fix: completed cycle validation , style: assignee count alignment fix…
anmolsinghbhatia Aug 18, 2023
b67e30f
chore: analytics start date property for x-axis and group (#1888)
aaryan610 Aug 18, 2023
6344f6f
chore: set order by to manual on gantt chart (#1886)
aaryan610 Aug 18, 2023
9316475
style: analytics stats empty state (#1903)
anmolsinghbhatia Aug 18, 2023
02ac4ce
chore: renamed target date to start date (#1902)
NarayanBavisetti Aug 18, 2023
125e909
chore: module link model (#1905)
NarayanBavisetti Aug 18, 2023
1f8117c
fix: dashboard upcoming issues list (#1904)
aaryan610 Aug 18, 2023
d825dc5
style: showing first name for bot profile (#1894)
dakshesh14 Aug 18, 2023
2f39181
fix: priority ordering (#1908)
NarayanBavisetti Aug 18, 2023
0fbdc0b
style: consistent ui for create update issue modal (#1907)
anmolsinghbhatia Aug 18, 2023
8d50183
chore: add favorite project from sidebar (#1909)
anmolsinghbhatia Aug 18, 2023
13d21e7
Merge pull request #1910 from makeplane/develop
pablohashescobar Aug 18, 2023
64b5ba1
style: responsive empty state for profile stats (#1911)
anmolsinghbhatia Aug 18, 2023
cebc8bd
fix: context menu dynamic positioning, multiple context menus opening…
aaryan610 Aug 19, 2023
d470adf
fix: Image resize, Link selector in Modals, Delete/ sync images and s…
Palanikannan1437 Aug 19, 2023
2eb956e
refactor: project and workspace delete modals (#1915)
aaryan610 Aug 21, 2023
0bccb63
fix: module start and target date validations (#1914)
aaryan610 Aug 21, 2023
41e55df
fix: build error for 404 and search params null check (#1919)
gurusainath Aug 21, 2023
cfc7049
Dockerrizing space project (#1921)
henit-chobisa Aug 21, 2023
ae052f1
chore: update restricted workspace slugs (#1920)
aaryan610 Aug 21, 2023
9bb6254
chore: updated default api base_url (#1922)
gurusainath Aug 21, 2023
3beab9d
Merge pull request #1923 from makeplane/develop
pablohashescobar Aug 21, 2023
f7682c5
fix: plane space start up command (#1925)
pablohashescobar Aug 21, 2023
d040394
fix: create project button not appearing on the sidebar (#1926)
aaryan610 Aug 21, 2023
b024171
chore: hide new issue button from my subscribed issues page (#1927)
aaryan610 Aug 21, 2023
aa2e169
Merge pull request #1928 from makeplane/develop
pablohashescobar Aug 21, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ NEXT_PUBLIC_TRACK_EVENTS=0
NEXT_PUBLIC_SLACK_CLIENT_ID=""
# For Telemetry, set it to "app.plane.so"
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=""
# public boards deploy url
NEXT_PUBLIC_DEPLOY_URL=""

# Backend
# Debug value for api server use it as 0 for production use
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,6 @@ package-lock.json
# lock files
package-lock.json
pnpm-lock.yaml
pnpm-workspace.yaml
pnpm-workspace.yaml

.npmrc
13 changes: 10 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ WORKDIR /app
ENV NEXT_PUBLIC_API_BASE_URL=http://NEXT_PUBLIC_API_BASE_URL_PLACEHOLDER

RUN yarn global add turbo
RUN apk add tree
COPY . .

RUN turbo prune --scope=app --docker
RUN turbo prune --scope=app --scope=plane-deploy --docker
CMD tree -I node_modules/

# Add lockfile and package.json's of isolated subworkspace
FROM node:18-alpine AS installer
Expand All @@ -21,14 +23,14 @@ COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/yarn.lock ./yarn.lock
RUN yarn install

# Build the project
# # Build the project
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
COPY replace-env-vars.sh /usr/local/bin/
USER root
RUN chmod +x /usr/local/bin/replace-env-vars.sh

RUN yarn turbo run build --filter=app
RUN yarn turbo run build

ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL \
BUILT_NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
Expand Down Expand Up @@ -96,11 +98,16 @@ RUN adduser --system --uid 1001 captain

COPY --from=installer /app/apps/app/next.config.js .
COPY --from=installer /app/apps/app/package.json .
COPY --from=installer /app/apps/space/next.config.js .
COPY --from=installer /app/apps/space/package.json .

COPY --from=installer --chown=captain:plane /app/apps/app/.next/standalone ./

COPY --from=installer --chown=captain:plane /app/apps/app/.next/static ./apps/app/.next/static

COPY --from=installer --chown=captain:plane /app/apps/space/.next/standalone ./
COPY --from=installer --chown=captain:plane /app/apps/space/.next ./apps/space/.next

ENV NEXT_TELEMETRY_DISABLED 1

# RUN rm /etc/nginx/conf.d/default.conf
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,16 @@ chmod +x setup.sh

> If running in a cloud env replace localhost with public facing IP address of the VM

- Setup Tiptap Pro

Visit [Tiptap Pro](https://collab.tiptap.dev/pro-extensions) and signup (it is free).

Create a **`.npmrc`** file, copy the following and replace your registry token generated from Tiptap Pro.

```
@tiptap-pro:registry=https://registry.tiptap.dev/
//registry.tiptap.dev/:_authToken=YOUR_REGISTRY_TOKEN
```
- Run Docker compose up

```bash
Expand Down
8 changes: 4 additions & 4 deletions apiserver/bin/user_script.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import os, sys
import os, sys, random, string
import uuid

sys.path.append("/code")
Expand All @@ -19,9 +19,9 @@ def populate():
user = User.objects.create(email=default_email, username=uuid.uuid4().hex)
user.set_password(default_password)
user.save()
print("User created")

print("Success")
print(f"User created with an email: {default_email}")
else:
print(f"User already exists with the default email: {default_email}")


if __name__ == "__main__":
Expand Down
13 changes: 7 additions & 6 deletions apiserver/plane/api/serializers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
from .base import BaseSerializer
from .people import (
ChangePasswordSerializer,
ResetPasswordSerializer,
TokenSerializer,
)
from .user import UserSerializer, UserLiteSerializer
from .user import UserSerializer, UserLiteSerializer, ChangePasswordSerializer, ResetPasswordSerializer, UserAdminLiteSerializer
from .workspace import (
WorkSpaceSerializer,
WorkSpaceMemberSerializer,
TeamSerializer,
WorkSpaceMemberInviteSerializer,
WorkspaceLiteSerializer,
WorkspaceThemeSerializer,
WorkspaceMemberAdminSerializer,
)
from .project import (
ProjectSerializer,
Expand All @@ -22,6 +18,8 @@
ProjectFavoriteSerializer,
ProjectLiteSerializer,
ProjectMemberLiteSerializer,
ProjectDeployBoardSerializer,
ProjectMemberAdminSerializer,
)
from .state import StateSerializer, StateLiteSerializer
from .view import IssueViewSerializer, IssueViewFavoriteSerializer
Expand All @@ -45,6 +43,7 @@
IssueSubscriberSerializer,
IssueReactionSerializer,
CommentReactionSerializer,
IssueVoteSerializer,
)

from .module import (
Expand Down Expand Up @@ -82,3 +81,5 @@
from .analytic import AnalyticViewSerializer

from .notification import NotificationSerializer

from .exporter import ExporterHistorySerializer
1 change: 1 addition & 0 deletions apiserver/plane/api/serializers/cycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def get_assignees(self, obj):
{
"avatar": assignee.avatar,
"first_name": assignee.first_name,
"display_name": assignee.display_name,
"id": assignee.id,
}
for issue_cycle in obj.issue_cycle.all()
Expand Down
26 changes: 26 additions & 0 deletions apiserver/plane/api/serializers/exporter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Module imports
from .base import BaseSerializer
from plane.db.models import ExporterHistory
from .user import UserLiteSerializer


class ExporterHistorySerializer(BaseSerializer):
initiated_by_detail = UserLiteSerializer(source="initiated_by", read_only=True)

class Meta:
model = ExporterHistory
fields = [
"id",
"created_at",
"updated_at",
"project",
"provider",
"status",
"url",
"initiated_by",
"initiated_by_detail",
"token",
"created_by",
"updated_by",
]
read_only_fields = fields
15 changes: 15 additions & 0 deletions apiserver/plane/api/serializers/issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
IssueAttachment,
IssueReaction,
CommentReaction,
IssueVote,
)


Expand Down Expand Up @@ -111,6 +112,11 @@ class Meta:
"updated_at",
]

def validate(self, data):
if data.get("start_date", None) is not None and data.get("target_date", None) is not None and data.get("start_date", None) > data.get("target_date", None):
raise serializers.ValidationError("Start date cannot exceed target date")
return data

def create(self, validated_data):
blockers = validated_data.pop("blockers_list", None)
assignees = validated_data.pop("assignees_list", None)
Expand Down Expand Up @@ -549,6 +555,14 @@ class Meta:



class IssueVoteSerializer(BaseSerializer):

class Meta:
model = IssueVote
fields = ["issue", "vote", "workspace_id", "project_id", "actor"]
read_only_fields = fields


class IssueCommentSerializer(BaseSerializer):
actor_detail = UserLiteSerializer(read_only=True, source="actor")
issue_detail = IssueFlatSerializer(read_only=True, source="issue")
Expand All @@ -568,6 +582,7 @@ class Meta:
"updated_by",
"created_at",
"updated_at",
"access",
]


Expand Down
57 changes: 0 additions & 57 deletions apiserver/plane/api/serializers/people.py

This file was deleted.

40 changes: 36 additions & 4 deletions apiserver/plane/api/serializers/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
# Module imports
from .base import BaseSerializer
from plane.api.serializers.workspace import WorkSpaceSerializer, WorkspaceLiteSerializer
from plane.api.serializers.user import UserLiteSerializer
from plane.api.serializers.user import UserLiteSerializer, UserAdminLiteSerializer
from plane.db.models import (
Project,
ProjectMember,
ProjectMemberInvite,
ProjectIdentifier,
ProjectFavorite,
ProjectDeployBoard,
)


Expand Down Expand Up @@ -80,7 +81,15 @@ def update(self, instance, validated_data):
class ProjectLiteSerializer(BaseSerializer):
class Meta:
model = Project
fields = ["id", "identifier", "name"]
fields = [
"id",
"identifier",
"name",
"cover_image",
"icon_prop",
"emoji",
"description",
]
read_only_fields = fields


Expand All @@ -94,6 +103,8 @@ class ProjectDetailSerializer(BaseSerializer):
total_modules = serializers.IntegerField(read_only=True)
is_member = serializers.BooleanField(read_only=True)
sort_order = serializers.FloatField(read_only=True)
member_role = serializers.IntegerField(read_only=True)
is_deployed = serializers.BooleanField(read_only=True)

class Meta:
model = Project
Expand All @@ -110,6 +121,16 @@ class Meta:
fields = "__all__"


class ProjectMemberAdminSerializer(BaseSerializer):
workspace = WorkspaceLiteSerializer(read_only=True)
project = ProjectLiteSerializer(read_only=True)
member = UserAdminLiteSerializer(read_only=True)

class Meta:
model = ProjectMember
fields = "__all__"


class ProjectMemberInviteSerializer(BaseSerializer):
project = ProjectLiteSerializer(read_only=True)
workspace = WorkspaceLiteSerializer(read_only=True)
Expand Down Expand Up @@ -137,8 +158,6 @@ class Meta:
]




class ProjectMemberLiteSerializer(BaseSerializer):
member = UserLiteSerializer(read_only=True)
is_subscribed = serializers.BooleanField(read_only=True)
Expand All @@ -147,3 +166,16 @@ class Meta:
model = ProjectMember
fields = ["member", "id", "is_subscribed"]
read_only_fields = fields


class ProjectDeployBoardSerializer(BaseSerializer):
project_details = ProjectLiteSerializer(read_only=True, source="project")
workspace_detail = WorkspaceLiteSerializer(read_only=True, source="workspace")

class Meta:
model = ProjectDeployBoard
fields = "__all__"
read_only_fields = [
"workspace",
"project" "anchor",
]
Loading