diff --git a/deploy/coolify/README.md b/deploy/coolify/README.md
index 9bd11568f..0bf6b4d63 100644
--- a/deploy/coolify/README.md
+++ b/deploy/coolify/README.md
@@ -1,8 +1,8 @@
-## Coolify Setup
+## Coolify Setup
Access the `coolify-docker-compose` file [here](https://raw.githubusercontent.com/makeplane/plane/master/deploy/coolify/coolify-docker-compose.yml) or download using using below command
```
curl -fsSL https://raw.githubusercontent.com/makeplane/plane/master/deploy/coolify/coolify-docker-compose.yml
-```
\ No newline at end of file
+```
diff --git a/deploy/kubernetes/README.md b/deploy/kubernetes/README.md
index fe7991fcf..905721813 100644
--- a/deploy/kubernetes/README.md
+++ b/deploy/kubernetes/README.md
@@ -1,8 +1,5 @@
-
# Helm Chart
-Click on the below link to access the helm chart instructions.
+Click on the below link to access the helm chart instructions.
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/makeplane)](https://artifacthub.io/packages/search?repo=makeplane)
-
-
diff --git a/deploy/selfhost/README.md b/deploy/selfhost/README.md
index e36c33c76..8988e77f5 100644
--- a/deploy/selfhost/README.md
+++ b/deploy/selfhost/README.md
@@ -1,18 +1,20 @@
-# Self Hosting
+# Self Hosting
-In this guide, we will walk you through the process of setting up a self-hosted environment. Self-hosting allows you to have full control over your applications and data. It's a great way to ensure privacy, control, and customization.
+In this guide, we will walk you through the process of setting up a self-hosted environment. Self-hosting allows you to have full control over your applications and data. It's a great way to ensure privacy, control, and customization.
-We will cover two main options for setting up your self-hosted environment: using a cloud server or using your desktop. For the cloud server, we will use an AWS EC2 instance. For the desktop, we will use Docker to create a local environment.
+We will cover two main options for setting up your self-hosted environment: using a cloud server or using your desktop. For the cloud server, we will use an AWS EC2 instance. For the desktop, we will use Docker to create a local environment.
Let's get started!
-## Setting up Docker Environment
+## Setting up Docker Environment
+
Option 1 - Using Cloud Server
Best way to start is to create EC2 maching on AWS. It must of minimum t3.medium/t3a/medium
Run the below command to install docker engine.
- ```curl -fsSL https://get.docker.com -o install-docker.sh```
+`curl -fsSL https://get.docker.com -o install-docker.sh`
+
---
@@ -20,30 +22,34 @@ Let's get started!
Option 2 - Using Desktop
- #### For Mac
+#### For Mac
+
Download Docker Desktop for Mac from the Docker Hub.
Double-click the downloaded `.dmg` file and drag the Docker app icon to the Applications folder.
Open Docker Desktop from the Applications folder. You might be asked to provide your system password to install additional software.
- #### For Windows:
+#### For Windows:
+
Download Docker Desktop for Windows from the Docker Hub.
Run the installer and follow the instructions. You might be asked to enable Hyper-V and "Containers" Windows features.
Open Docker Desktop. You might be asked to log out and log back in, or restart your machine, for changes to take effect.
- After installation, you can verify the installation by opening a terminal (Command Prompt on Windows, Terminal app on Mac) and running the command `docker --version`. This should display the installed version of Docker.
+After installation, you can verify the installation by opening a terminal (Command Prompt on Windows, Terminal app on Mac) and running the command `docker --version`. This should display the installed version of Docker.
+
---
## Installing Plane
-Installing plane is a very easy and minimal step process.
+Installing plane is a very easy and minimal step process.
+
+### Prerequisite
-### Prerequisite
- Docker installed and running
- OS with bash scripting enabled (Ubuntu, Linux AMI, macos). Windows systems need to have [gitbash](https://git-scm.com/download/win)
- User context used must have access to docker services. In most cases, use sudo su to switch as root user
@@ -82,11 +88,11 @@ chmod +x setup.sh
### Proceed with setup
-Above steps will set you ready to install and start plane services.
+Above steps will set you ready to install and start plane services.
-Lets get started by running the `./setup.sh` command.
+Lets get started by running the `./setup.sh` command.
-This will prompt you with the below options.
+This will prompt you with the below options.
```
Select a Action you want to perform:
@@ -100,26 +106,27 @@ Select a Action you want to perform:
Action [2]: 1
```
-For the 1st time setup, type "1" as action input.
+For the 1st time setup, type "1" as action input.
This will create a create a folder `plane-app` or `plane-app-preview` (in case of preview deployment) and will download 2 files inside that
+
- `docker-compose.yaml`
- `.env`
-Again the `options [1-6]` will be popped up and this time hit `6` to exit.
+Again the `options [1-6]` will be popped up and this time hit `6` to exit.
---
### Continue with setup - Environment Settings
-Before proceeding, we suggest used to review `.env` file and set the values.
-Below are the most import keys you must refer to. *You can use any text editor to edit this file*.
+Before proceeding, we suggest used to review `.env` file and set the values.
+Below are the most import keys you must refer to. _You can use any text editor to edit this file_.
> `NGINX_PORT` - This is default set to `80`. Make sure the port you choose to use is not preoccupied. (e.g `NGINX_PORT=8080`)
-> `WEB_URL` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+> `WEB_URL` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
-> `CORS_ALLOWED_ORIGINS` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+> `CORS_ALLOWED_ORIGINS` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
There are many other settings you can play with, but we suggest you configure `EMAIL SETTINGS` as it will enable you to invite your teammates onto the platform.
@@ -148,15 +155,15 @@ Be patient as it might take sometime based on download speed and system configur
![Downloading completed](images/started.png)
-This is the confirmation that all images were downloaded and the services are up & running.
+This is the confirmation that all images were downloaded and the services are up & running.
-You have successfully self hosted `Plane` instance. Access the application by going to IP or domain you have configured it (e.g `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+You have successfully self hosted `Plane` instance. Access the application by going to IP or domain you have configured it (e.g `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
---
### Stopping the Server
-In case you want to make changes to `.env` variables, we suggest you to stop the services before doing that.
+In case you want to make changes to `.env` variables, we suggest you to stop the services before doing that.
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `3` to stop the sevices
@@ -180,7 +187,7 @@ If all goes well, you must see something like this
### Restarting the Server
-In case you want to make changes to `.env` variables, without stopping the server or you noticed some abnormalies in services, you can restart the services with RESTART option.
+In case you want to make changes to `.env` variables, without stopping the server or you noticed some abnormalies in services, you can restart the services with RESTART option.
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `4` to restart the sevices
@@ -206,7 +213,7 @@ If all goes well, you must see something like this
It is always advised to keep Plane up to date with the latest release.
-Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `5` to upgrade the release.
+Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `5` to upgrade the release.
```
Select a Action you want to perform:
@@ -220,7 +227,7 @@ Select a Action you want to perform:
Action [2]: 5
```
-By choosing this, it will stop the services and then will download the latest `docker-compose.yaml` and `variables-upgrade.env`. Here system will not replace `.env` with the new one.
+By choosing this, it will stop the services and then will download the latest `docker-compose.yaml` and `variables-upgrade.env`. Here system will not replace `.env` with the new one.
You must expect the below message
@@ -228,18 +235,17 @@ You must expect the below message
Once done, choose `6` to exit from prompt.
-> It is very important for you to compare the 2 files `variables-upgrade.env` and `.env`. Copy the newly added variable from downloaded file to `.env` and set the expected values.
+> It is very important for you to compare the 2 files `variables-upgrade.env` and `.env`. Copy the newly added variable from downloaded file to `.env` and set the expected values.
Once done with making changes in `.env` file, jump on to `Start Server`
-
## Upgrading from v0.13.2 to v0.14.x
This is one time activity for users who are upgrading from v0.13.2 to v0.14.0
As there has been significant changes to Self Hosting process, this step mainly covers the data migration from current (v0.13.2) docker volumes from newly created volumes
-> Before we begin with migration, make sure your v0.14.0 was started and then stopped. This is required to know the newly created docker volume names.
+> Before we begin with migration, make sure your v0.14.0 was started and then stopped. This is required to know the newly created docker volume names.
Begin with downloading the migration script using below command
@@ -256,15 +262,15 @@ Now run the `./migrate.sh` command and expect the instructions as below
```
******************************************************************
-This script is solely for the migration purpose only.
+This script is solely for the migration purpose only.
This is a 1 time migration of volume data from v0.13.2 => v0.14.x
-Assumption:
+Assumption:
1. Postgres data volume name ends with _pgdata
2. Minio data volume name ends with _uploads
3. Redis data volume name ends with _redisdata
-Any changes to this script can break the migration.
+Any changes to this script can break the migration.
Before you proceed, make sure you run the below command
to know the docker volumes
@@ -275,12 +281,12 @@ docker volume ls -q | grep -i "_redisdata"
*******************************************************
-Given below list of REDIS volumes, identify the prefix of source and destination volumes leaving "_redisdata"
+Given below list of REDIS volumes, identify the prefix of source and destination volumes leaving "_redisdata"
---------------------
plane-app_redisdata
v0132_redisdata
-Provide the Source Volume Prefix :
+Provide the Source Volume Prefix :
```
**Open another terminal window**, and run the mentioned 3 command. This may be different for users who have changed the volume names in their previous setup (v0.13.2)
@@ -289,9 +295,9 @@ For every command you must see 2 records something like shown in above example o
To move forward, you would need PREFIX of old setup and new setup. As per above example, `v0132` is the prefix of v0.13.2 and `plane-app` is the prefix of v0.14.0 setup
-**Back to original terminal window**, *Provide the Source Volume Prefix* and hit ENTER.
+**Back to original terminal window**, _Provide the Source Volume Prefix_ and hit ENTER.
-Now you will be prompted to *Provide Destination Volume Prefix*. Provide the value and hit ENTER
+Now you will be prompted to _Provide Destination Volume Prefix_. Provide the value and hit ENTER
```
Provide the Source Volume Prefix : v0132
@@ -302,8 +308,6 @@ In case the suffixes are wrong or the mentioned volumes are not found, you will
![Migrate Error](images/migrate-error.png)
-In case of successful migration, it will be a silent exit without error.
-
-Now its time to restart v0.14.0 setup.
-
+In case of successful migration, it will be a silent exit without error.
+Now its time to restart v0.14.0 setup.
diff --git a/package.json b/package.json
index 7c3937852..06e84557b 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"prettier": "latest",
"prettier-plugin-tailwindcss": "^0.5.4",
"tailwindcss": "^3.3.3",
- "turbo": "^1.10.16"
+ "turbo": "^1.11.1"
},
"resolutions": {
"@types/react": "18.2.42"
diff --git a/packages/editor/core/.eslintrc.js b/packages/editor/core/.eslintrc.js
new file mode 100644
index 000000000..c8df60750
--- /dev/null
+++ b/packages/editor/core/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ root: true,
+ extends: ["custom"],
+};
diff --git a/packages/editor/core/.prettierignore b/packages/editor/core/.prettierignore
new file mode 100644
index 000000000..43e8a7b8f
--- /dev/null
+++ b/packages/editor/core/.prettierignore
@@ -0,0 +1,6 @@
+.next
+.vercel
+.tubro
+out/
+dis/
+build/
\ No newline at end of file
diff --git a/packages/editor/core/.prettierrc b/packages/editor/core/.prettierrc
new file mode 100644
index 000000000..87d988f1b
--- /dev/null
+++ b/packages/editor/core/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "printWidth": 120,
+ "tabWidth": 2,
+ "trailingComma": "es5"
+}
diff --git a/packages/editor/core/src/lib/editor-commands.ts b/packages/editor/core/src/lib/editor-commands.ts
index 725b72b8b..4a331e7cd 100644
--- a/packages/editor/core/src/lib/editor-commands.ts
+++ b/packages/editor/core/src/lib/editor-commands.ts
@@ -4,35 +4,17 @@ import { startImageUpload } from "../ui/plugins/upload-image";
import { findTableAncestor } from "./utils";
export const toggleHeadingOne = (editor: Editor, range?: Range) => {
- if (range)
- editor
- .chain()
- .focus()
- .deleteRange(range)
- .setNode("heading", { level: 1 })
- .run();
+ if (range) editor.chain().focus().deleteRange(range).setNode("heading", { level: 1 }).run();
else editor.chain().focus().toggleHeading({ level: 1 }).run();
};
export const toggleHeadingTwo = (editor: Editor, range?: Range) => {
- if (range)
- editor
- .chain()
- .focus()
- .deleteRange(range)
- .setNode("heading", { level: 2 })
- .run();
+ if (range) editor.chain().focus().deleteRange(range).setNode("heading", { level: 2 }).run();
else editor.chain().focus().toggleHeading({ level: 2 }).run();
};
export const toggleHeadingThree = (editor: Editor, range?: Range) => {
- if (range)
- editor
- .chain()
- .focus()
- .deleteRange(range)
- .setNode("heading", { level: 3 })
- .run();
+ if (range) editor.chain().focus().deleteRange(range).setNode("heading", { level: 3 }).run();
else editor.chain().focus().toggleHeading({ level: 3 }).run();
};
@@ -57,8 +39,7 @@ export const toggleCodeBlock = (editor: Editor, range?: Range) => {
};
export const toggleOrderedList = (editor: Editor, range?: Range) => {
- if (range)
- editor.chain().focus().deleteRange(range).toggleOrderedList().run();
+ if (range) editor.chain().focus().deleteRange(range).toggleOrderedList().run();
else editor.chain().focus().toggleOrderedList().run();
};
@@ -78,21 +59,8 @@ export const toggleStrike = (editor: Editor, range?: Range) => {
};
export const toggleBlockquote = (editor: Editor, range?: Range) => {
- if (range)
- editor
- .chain()
- .focus()
- .deleteRange(range)
- .toggleNode("paragraph", "paragraph")
- .toggleBlockquote()
- .run();
- else
- editor
- .chain()
- .focus()
- .toggleNode("paragraph", "paragraph")
- .toggleBlockquote()
- .run();
+ if (range) editor.chain().focus().deleteRange(range).toggleNode("paragraph", "paragraph").toggleBlockquote().run();
+ else editor.chain().focus().toggleNode("paragraph", "paragraph").toggleBlockquote().run();
};
export const insertTableCommand = (editor: Editor, range?: Range) => {
@@ -105,19 +73,8 @@ export const insertTableCommand = (editor: Editor, range?: Range) => {
}
}
}
- if (range)
- editor
- .chain()
- .focus()
- .deleteRange(range)
- .insertTable({ rows: 3, cols: 3, withHeaderRow: true })
- .run();
- else
- editor
- .chain()
- .focus()
- .insertTable({ rows: 3, cols: 3, withHeaderRow: true })
- .run();
+ if (range) editor.chain().focus().deleteRange(range).insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
+ else editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
};
export const unsetLinkEditor = (editor: Editor) => {
@@ -131,10 +88,8 @@ export const setLinkEditor = (editor: Editor, url: string) => {
export const insertImageCommand = (
editor: Editor,
uploadFile: UploadImage,
- setIsSubmitting?: (
- isSubmitting: "submitting" | "submitted" | "saved",
- ) => void,
- range?: Range,
+ setIsSubmitting?: (isSubmitting: "submitting" | "submitted" | "saved") => void,
+ range?: Range
) => {
if (range) editor.chain().focus().deleteRange(range).run();
const input = document.createElement("input");
diff --git a/packages/editor/core/src/lib/utils.ts b/packages/editor/core/src/lib/utils.ts
index f426b70b7..5c7a8f08f 100644
--- a/packages/editor/core/src/lib/utils.ts
+++ b/packages/editor/core/src/lib/utils.ts
@@ -6,25 +6,19 @@ interface EditorClassNames {
customClassName?: string;
}
-export const getEditorClassNames = ({
- noBorder,
- borderOnFocus,
- customClassName,
-}: EditorClassNames) =>
+export const getEditorClassNames = ({ noBorder, borderOnFocus, customClassName }: EditorClassNames) =>
cn(
"relative w-full max-w-full sm:rounded-lg mt-2 p-3 relative focus:outline-none rounded-md",
noBorder ? "" : "border border-custom-border-200",
borderOnFocus ? "focus:border border-custom-border-300" : "focus:border-0",
- customClassName,
+ customClassName
);
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
-export const findTableAncestor = (
- node: Node | null,
-): HTMLTableElement | null => {
+export const findTableAncestor = (node: Node | null): HTMLTableElement | null => {
while (node !== null && node.nodeName !== "TABLE") {
node = node.parentNode;
}
diff --git a/packages/editor/core/src/ui/components/editor-container.tsx b/packages/editor/core/src/ui/components/editor-container.tsx
index 050755f5a..8de6298b5 100644
--- a/packages/editor/core/src/ui/components/editor-container.tsx
+++ b/packages/editor/core/src/ui/components/editor-container.tsx
@@ -7,11 +7,7 @@ interface EditorContainerProps {
children: ReactNode;
}
-export const EditorContainer = ({
- editor,
- editorClassNames,
- children,
-}: EditorContainerProps) => (
+export const EditorContainer = ({ editor, editorClassNames, children }: EditorContainerProps) => (
- {
- "This Issue embed is not found in any project. It can no longer be updated or accessed from here."
- }
+ {"This Issue embed is not found in any project. It can no longer be updated or accessed from here."}