Skip to content

Commit 461e099

Browse files
release: v0.26.0 #6962
2 parents 45e25ce + f278a28 commit 461e099

File tree

586 files changed

+25950
-6131
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

586 files changed

+25950
-6131
lines changed

.github/workflows/build-branch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ jobs:
273273
run: |
274274
cp ./deploy/selfhost/install.sh deploy/selfhost/setup.sh
275275
sed -i 's/${APP_RELEASE:-stable}/${APP_RELEASE:-'${REL_VERSION}'}/g' deploy/selfhost/docker-compose.yml
276-
sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deploy/selfhost/variables.env
276+
# sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deploy/selfhost/variables.env
277277
278278
- name: Create Release
279279
id: create_release

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,17 @@ pnpm-workspace.yaml
7878
.npmrc
7979
.secrets
8080
tmp/
81+
8182
## packages
8283
dist
8384
.temp/
8485
deploy/selfhost/plane-app/
86+
8587
## Storybook
8688
*storybook.log
8789
output.css
90+
91+
dev-editor
92+
# Redis
93+
*.rdb
94+
*.rdb.gz

CONTRIBUTING.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ Without said minimal reproduction, we won't be able to investigate all [issues](
1515

1616
You can open a new issue with this [issue form](https://github.com/makeplane/plane/issues/new).
1717

18+
### Naming conventions for issues
19+
20+
When opening a new issue, please use a clear and concise title that follows this format:
21+
22+
- For bugs: `🐛 Bug: [short description]`
23+
- For features: `🚀 Feature: [short description]`
24+
- For improvements: `🛠️ Improvement: [short description]`
25+
- For documentation: `📘 Docs: [short description]`
26+
27+
**Examples:**
28+
- `🐛 Bug: API token expiry time not saving correctly`
29+
- `📘 Docs: Clarify RAM requirement for local setup`
30+
- `🚀 Feature: Allow custom time selection for token expiration`
31+
32+
This helps us triage and manage issues more efficiently.
33+
1834
## Projects setup and Architecture
1935

2036
### Requirements
@@ -23,6 +39,8 @@ You can open a new issue with this [issue form](https://github.com/makeplane/pla
2339
- Python version 3.8+
2440
- Postgres version v14
2541
- Redis version v6.2.7
42+
- **Memory**: Minimum **12 GB RAM** recommended
43+
> ⚠️ 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.
2644
2745
### Setup the project
2846

ENV_SETUP.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ NGINX_PORT=80
4343
# Debug value for api server use it as 0 for production use
4444
DEBUG=0
4545
CORS_ALLOWED_ORIGINS="http://localhost"
46-
# Error logs
47-
SENTRY_DSN=""
48-
SENTRY_ENVIRONMENT="development"
4946
# Database Settings
5047
POSTGRES_USER="plane"
5148
POSTGRES_PASSWORD="plane"

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
</p>
1717

1818
<p align="center">
19-
<a href="https://dub.sh/plane-website-readme"><b>Website</b></a> •
20-
<a href="https://git.new/releases"><b>Releases</b></a> •
21-
<a href="https://dub.sh/planepowershq"><b>Twitter</b></a> •
22-
<a href="https://dub.sh/planedocs"><b>Documentation</b></a>
19+
<a href="https://plane.so/"><b>Website</b></a> •
20+
<a href="https://github.com/makeplane/plane/releases"><b>Releases</b></a> •
21+
<a href="https://twitter.com/planepowers"><b>Twitter</b></a> •
22+
<a href="https://docs.plane.so/"><b>Documentation</b></a>
2323
</p>
2424

2525
<p>
@@ -39,7 +39,7 @@
3939
</a>
4040
</p>
4141

42-
Meet [Plane](https://dub.sh/plane-website-readme), an open-source project management tool to track issues, run ~sprints~ cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘‍♀️
42+
Meet [Plane](https://plane.so/), an open-source project management tool to track issues, run ~sprints~ cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘‍♀️
4343

4444
> Plane is evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on [Discord](https://discord.com/invite/A92xrEGCge) or raise a GitHub issue. We read everything and respond to most.
4545

admin/app/authentication/github/form.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const InstanceGithubConfigForm: FC<Props> = (props) => {
4343
defaultValues: {
4444
GITHUB_CLIENT_ID: config["GITHUB_CLIENT_ID"],
4545
GITHUB_CLIENT_SECRET: config["GITHUB_CLIENT_SECRET"],
46+
GITHUB_ORGANIZATION_ID: config["GITHUB_ORGANIZATION_ID"],
4647
},
4748
});
4849

@@ -93,6 +94,19 @@ export const InstanceGithubConfigForm: FC<Props> = (props) => {
9394
error: Boolean(errors.GITHUB_CLIENT_SECRET),
9495
required: true,
9596
},
97+
{
98+
key: "GITHUB_ORGANIZATION_ID",
99+
type: "text",
100+
label: "Organization ID",
101+
description: (
102+
<>
103+
The organization github ID.
104+
</>
105+
),
106+
placeholder: "123456789",
107+
error: Boolean(errors.GITHUB_ORGANIZATION_ID),
108+
required: false,
109+
},
96110
];
97111

98112
const GITHUB_SERVICE_FIELD: TCopyField[] = [
@@ -150,6 +164,7 @@ export const InstanceGithubConfigForm: FC<Props> = (props) => {
150164
reset({
151165
GITHUB_CLIENT_ID: response.find((item) => item.key === "GITHUB_CLIENT_ID")?.value,
152166
GITHUB_CLIENT_SECRET: response.find((item) => item.key === "GITHUB_CLIENT_SECRET")?.value,
167+
GITHUB_ORGANIZATION_ID: response.find((item) => item.key === "GITHUB_ORGANIZATION_ID")?.value,
153168
});
154169
})
155170
.catch((err) => console.error(err));

admin/next.config.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@ const nextConfig = {
99
unoptimized: true,
1010
},
1111
basePath: process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || "",
12+
transpilePackages: [
13+
"@plane/constants",
14+
"@plane/editor",
15+
"@plane/hooks",
16+
"@plane/i18n",
17+
"@plane/logger",
18+
"@plane/propel",
19+
"@plane/services",
20+
"@plane/shared-state",
21+
"@plane/types",
22+
"@plane/ui",
23+
"@plane/utils",
24+
],
1225
};
1326

1427
module.exports = nextConfig;

admin/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "admin",
33
"description": "Admin UI for Plane",
4-
"version": "0.25.3",
4+
"version": "0.26.0",
55
"license": "AGPL-3.0",
66
"private": true,
77
"scripts": {
@@ -21,7 +21,6 @@
2121
"@plane/ui": "*",
2222
"@plane/utils": "*",
2323
"@plane/services": "*",
24-
"@sentry/nextjs": "^8.54.0",
2524
"@tailwindcss/typography": "^0.5.9",
2625
"@types/lodash": "^4.17.0",
2726
"autoprefixer": "10.4.14",
@@ -30,7 +29,7 @@
3029
"lucide-react": "^0.469.0",
3130
"mobx": "^6.12.0",
3231
"mobx-react": "^9.1.1",
33-
"next": "^14.2.20",
32+
"next": "^14.2.26",
3433
"next-themes": "^0.2.1",
3534
"postcss": "^8.4.38",
3635
"react": "^18.3.1",

aio/Dockerfile-app

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,8 @@ RUN chmod +x /app/pg-setup.sh
145145
# APPLICATION ENVIRONMENT SETTINGS
146146
# *****************************************************************************
147147
ENV APP_DOMAIN=localhost
148-
149148
ENV WEB_URL=http://${APP_DOMAIN}
150149
ENV DEBUG=0
151-
ENV SENTRY_DSN=
152-
ENV SENTRY_ENVIRONMENT=production
153150
ENV CORS_ALLOWED_ORIGINS=http://${APP_DOMAIN},https://${APP_DOMAIN}
154151
# Secret Key
155152
ENV SECRET_KEY=60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5

apiserver/.env.example

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
DEBUG=0
44
CORS_ALLOWED_ORIGINS="http://localhost"
55

6-
# Error logs
7-
SENTRY_DSN=""
8-
SENTRY_ENVIRONMENT="development"
9-
106
# Database Settings
117
POSTGRES_USER="plane"
128
POSTGRES_PASSWORD="plane"

apiserver/file.txt

Whitespace-only changes.

apiserver/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "plane-api",
3-
"version": "0.25.3",
3+
"version": "0.26.0",
44
"license": "AGPL-3.0",
55
"private": true,
66
"description": "API server powering Plane's backend"

apiserver/plane/api/serializers/cycle.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Third party imports
2+
import pytz
23
from rest_framework import serializers
34

45
# Module imports
@@ -18,6 +19,14 @@ class CycleSerializer(BaseSerializer):
1819
completed_estimates = serializers.FloatField(read_only=True)
1920
started_estimates = serializers.FloatField(read_only=True)
2021

22+
def __init__(self, *args, **kwargs):
23+
super().__init__(*args, **kwargs)
24+
project = self.context.get("project")
25+
if project and project.timezone:
26+
project_timezone = pytz.timezone(project.timezone)
27+
self.fields["start_date"].timezone = project_timezone
28+
self.fields["end_date"].timezone = project_timezone
29+
2130
def validate(self, data):
2231
if (
2332
data.get("start_date", None) is not None
@@ -30,7 +39,15 @@ def validate(self, data):
3039
data.get("start_date", None) is not None
3140
and data.get("end_date", None) is not None
3241
):
33-
project_id = self.initial_data.get("project_id") or self.instance.project_id
42+
project_id = self.initial_data.get("project_id") or (
43+
self.instance.project_id
44+
if self.instance and hasattr(self.instance, "project_id")
45+
else None
46+
)
47+
48+
if not project_id:
49+
raise serializers.ValidationError("Project ID is required")
50+
3451
is_start_date_end_date_equal = (
3552
True
3653
if str(data.get("start_date")) == str(data.get("end_date"))

apiserver/plane/api/serializers/project.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class ProjectSerializer(BaseSerializer):
1616
member_role = serializers.IntegerField(read_only=True)
1717
is_deployed = serializers.BooleanField(read_only=True)
1818
cover_image_url = serializers.CharField(read_only=True)
19-
inbox_view = serializers.BooleanField(read_only=True, source="intake_view")
2019

2120
class Meta:
2221
model = Project

apiserver/plane/api/urls/intake.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@
44

55

66
urlpatterns = [
7-
path(
8-
"workspaces/<str:slug>/projects/<uuid:project_id>/inbox-issues/",
9-
IntakeIssueAPIEndpoint.as_view(),
10-
name="inbox-issue",
11-
),
12-
path(
13-
"workspaces/<str:slug>/projects/<uuid:project_id>/inbox-issues/<uuid:issue_id>/",
14-
IntakeIssueAPIEndpoint.as_view(),
15-
name="inbox-issue",
16-
),
177
path(
188
"workspaces/<str:slug>/projects/<uuid:project_id>/intake-issues/",
199
IntakeIssueAPIEndpoint.as_view(),

0 commit comments

Comments
 (0)