Skip to content

Commit 8223717

Browse files
committed
Merge branch 'master' of github.com:makeplane/docs into plane-runner
2 parents f429253 + 0ca22d4 commit 8223717

23 files changed

Lines changed: 1013 additions & 147 deletions

AGENTS.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# AGENTS.md — Plane Documentation
2+
3+
## Project overview
4+
5+
This is the [Plane](https://plane.so) product documentation site, built with [VitePress v1.6.3](https://vitepress.dev/) and hosted at [docs.plane.so](https://docs.plane.so). All content lives in the `docs/` directory as Markdown files.
6+
7+
## Stack
8+
9+
| Tool | Version/Notes |
10+
| --------------- | --------------- |
11+
| Framework | VitePress 1.6.3 |
12+
| Package manager | pnpm 10 |
13+
| Node | >=24.0.0 |
14+
| Formatting | oxfmt |
15+
| Styling | Tailwind CSS v4 |
16+
17+
## Common commands
18+
19+
```bash
20+
pnpm dev # Start local dev server (http://localhost:5173)
21+
pnpm build # Build static output into docs/.vitepress/dist
22+
pnpm preview # Preview the production build locally
23+
pnpm fix:format # Auto-format all files with oxfmt
24+
pnpm check:format # Check formatting without writing
25+
```
26+
27+
## Repo structure
28+
29+
```text
30+
docs/ # All content and VitePress config
31+
.vitepress/
32+
config.ts # VitePress config — nav, sidebar, search, head tags
33+
theme/ # Custom theme overrides
34+
index.md # Home page (hero layout)
35+
introduction/ # Quickstart, tutorials, core-concepts overview
36+
core-concepts/ # Issues, projects, workspaces, pages, cycles, modules
37+
integrations/ # GitHub, GitLab, Slack, Sentry, draw.io
38+
importers/ # Jira, Asana, Linear, ClickUp, CSV, Notion
39+
authentication/ # SSO, group sync
40+
automations/ # Custom automations
41+
workflows-and-approvals/ # Workflows
42+
workspaces-and-users/ # Billing, seats, licenses, navigation
43+
ai/ # Plane AI features
44+
support/ # Keyboard shortcuts, get help
45+
templates/ # Page, project, work-item templates
46+
CONTRIBUTING.md
47+
README.md
48+
package.json
49+
```
50+
51+
## Content conventions
52+
53+
- All content files are Markdown (`.md`). Use GitHub-flavored Markdown.
54+
55+
- Each file should have a front matter block at minimum with `title`:
56+
57+
```yaml
58+
---
59+
title: Page Title
60+
description: One-sentence summary (used for SEO meta and og:description)
61+
---
62+
```
63+
64+
- Page headings (`#`) must match the sidebar label defined in `docs/.vitepress/config.ts`. When renaming a page, update both the file heading and the sidebar entry.
65+
66+
- Use relative links between docs (e.g., `[Cycles](/core-concepts/cycles)`). Do not use `.md` extensions in links.
67+
68+
- Images are hosted externally at `https://media.docs.plane.so/`. Do not commit binary assets. Reference them directly in Markdown.
69+
70+
- Use the `tabs` plugin (`vitepress-plugin-tabs`) for multi-tab code blocks where appropriate.
71+
72+
## Navigation and sidebar
73+
74+
The sidebar and top nav are configured entirely in `docs/.vitepress/config.ts`. When you add a new page:
75+
76+
1. Create the `.md` file in the appropriate `docs/` subdirectory.
77+
2. Add an entry to the relevant sidebar section in `config.ts`.
78+
3. If it needs a top-nav link, add it to `themeConfig.nav`.
79+
80+
## Formatting
81+
82+
Run `pnpm fix:format` before committing. CI checks formatting via `pnpm check:format`. Never skip this step.
83+
84+
## Branches and PRs
85+
86+
- Default/main branch: `master`
87+
- Active development and review happens on the `preview` branch — open PRs targeting `preview`, not `master`.
88+
- Branch naming: use short descriptive slugs (e.g., `fix/csv-importer-typo`, `docs/add-milestones-page`).
89+
- Commit messages: `<type>: short description` — link to an issue where applicable (e.g., `docs: add recurring work items page (#412)`).
90+
91+
## What NOT to do
92+
93+
- Do not commit image or font binaries. Use the external CDN.
94+
- Do not modify `pnpm-lock.yaml` manually — let pnpm manage it.
95+
- Do not edit generated files in `docs/.vitepress/dist/`.
96+
- Do not add analytics keys, API keys, or secrets to any file. Use environment variables (`.env` locally, platform env vars in CI).
97+
- Do not rewrite VitePress config structure without understanding the existing sidebar/nav shape — the sidebar is hand-curated and order matters.

docs/.vitepress/config.ts

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { readFileSync } from "fs";
2-
import { resolve } from "path";
1+
import { copyFileSync, mkdirSync, readFileSync, readdirSync, statSync } from "fs";
2+
import { dirname, join, relative, resolve } from "path";
33
import { defineConfig, type HeadConfig } from "vitepress";
44
import { tabsMarkdownPlugin } from "vitepress-plugin-tabs";
55

@@ -50,6 +50,30 @@ export default defineConfig({
5050
description: "Modern project management software",
5151
cleanUrls: true,
5252

53+
buildEnd(siteConfig) {
54+
// Copy source .md files into dist/ for Accept: text/markdown negotiation.
55+
const srcDir = siteConfig.srcDir;
56+
const outDir = siteConfig.outDir;
57+
58+
function walk(dir: string): void {
59+
for (const entry of readdirSync(dir)) {
60+
if (entry === ".vitepress" || entry === "public" || entry === "node_modules") continue;
61+
const abs = join(dir, entry);
62+
const stat = statSync(abs);
63+
if (stat.isDirectory()) {
64+
walk(abs);
65+
} else if (stat.isFile() && abs.endsWith(".md")) {
66+
const rel = relative(srcDir, abs);
67+
const dest = join(outDir, rel);
68+
mkdirSync(dirname(dest), { recursive: true });
69+
copyFileSync(abs, dest);
70+
}
71+
}
72+
}
73+
74+
walk(srcDir);
75+
},
76+
5377
head: [
5478
[
5579
"link",
@@ -387,8 +411,12 @@ export default defineConfig({
387411
],
388412
},
389413
{
390-
text: "Work Item Types",
391-
link: "/core-concepts/issues/issue-types",
414+
text: "Project Work Item Types",
415+
link: "/work-items/project-work-item-types",
416+
},
417+
{
418+
text: "Workspace Work Item Types",
419+
link: "/work-items/workspace-work-item-types",
392420
},
393421
{ text: "Work Item States", link: "/core-concepts/issues/states" },
394422
{ text: "Work Item Labels", link: "/core-concepts/issues/labels" },
@@ -424,6 +452,10 @@ export default defineConfig({
424452
text: "Milestones",
425453
link: "/core-concepts/projects/milestones",
426454
},
455+
{
456+
text: "Releases",
457+
link: "/releases",
458+
},
427459
{ text: "Stickies", link: "/core-concepts/stickies" },
428460
],
429461
},
@@ -476,9 +508,17 @@ export default defineConfig({
476508
link: "/core-concepts/issues/time-tracking",
477509
},
478510
{ text: "Workflows and Approvals", link: "/workflows-and-approvals/workflows" },
511+
{ text: "Custom Relations", link: "/work-items/custom-relations" },
479512
{
480513
text: "Automations",
481-
link: "/automations/custom-automations",
514+
collapsed: true,
515+
link: "/automations/overview",
516+
items: [
517+
{
518+
text: "Custom automations",
519+
link: "/automations/custom-automations",
520+
},
521+
],
482522
},
483523
{
484524
text: "Plane Runner",

docs/automations/custom-automations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Automate project tasks with trigger based workflows
33
description: Automate repetitive project tasks with trigger-based workflows. Set up rules to automatically update work item properties, assign team members, and manage priorities when specific conditions are met.
44
---
55

6-
# Automations <Badge type="tip" text="Business" />
6+
# Custom automations <Badge type="tip" text="Business" />
77

88
Automations let you streamline your project management workflow by automatically performing actions based on specific triggers and conditions. This powerful feature eliminates repetitive manual tasks, ensures consistency in your processes, and helps your team maintain focus on high-value work by letting the system handle routine operations.
99

docs/automations/overview.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: Automate project tasks with automations
3+
description: Automate repetitive project tasks in Plane.
4+
---
5+
6+
# Automations
7+
8+
Automations handle repetitive project work so your team can focus on the work that matters. Plane offers two kinds of automations, both configured in **Project Settings → Automations**.
9+
10+
- **Built-in automations** are ready-to-use toggles for common housekeeping tasks — archiving closed work items, closing stale ones, and sending deadline reminders.
11+
12+
- **[Custom automations](/automations/custom-automations)** let you build your own trigger-condition-action workflows — like auto-assigning a reviewer when a work item moves to QA, or adding a label when priority changes.
13+
14+
![Automations](https://media.docs.plane.so/automations/automations.webp#hero)
15+
16+
## Auto-archive closed work items
17+
18+
Automatically archive work items that have been completed or cancelled, keeping your active views clean.
19+
20+
1. Navigate to **Project Settings → Automations**.
21+
2. Toggle on **Auto-archive closed work items**.
22+
3. Set the **Auto-archive work items that are closed for** duration. Options include 1 month, 3 months, 6 months, 9 months, 12 months, or a custom time range.
23+
24+
Once enabled, work items that have been in a completed or cancelled state for longer than the configured duration are archived automatically. Archived work items remain searchable and accessible in the project's archived view, but they no longer appear in active lists, boards, or spreadsheets.
25+
26+
## Auto-close work items
27+
28+
Automatically close work items that have been inactive — not completed or cancelled — after a period you define. This prevents stale work items from cluttering your project indefinitely.
29+
30+
1. Navigate to **Project Settings → Automations**.
31+
2. Toggle on **Auto-close work items**.
32+
3. Set the **Auto-close work items that are inactive for** duration — for example, 1 month.
33+
4. Choose the **Auto-close status** — the state that inactive work items will be moved to (e.g., Cancelled).
34+
35+
Work items that haven't been updated within the configured period are automatically moved to the selected auto-close status. Only work items that are not already in a completed or cancelled state are affected.
36+
37+
## Auto-reminders
38+
39+
Send automatic reminders via email and in-app notifications to keep your team on track with deadlines. When a work item's due date is approaching, assignees receive a reminder so nothing slips through the cracks.
40+
41+
1. Navigate to **Project Settings → Automations**.
42+
2. Toggle on **Auto-reminders**.
43+
3. Set the **Send reminder before** timing — for example, 3 days before the due date.
44+
45+
Once enabled, assignees and work item subscribers receive both an email and an in-app notification at the configured interval before each work item's due date. Only work items with a due date and at least one assignee or subscriber trigger reminders.

docs/core-concepts/cycles.md

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ By default, Cycles are automatically turned on when you create a new project. If
1515

1616
## Create cycles
1717

18-
::: warning Caution
19-
Two cycles cannot have overlapping dates.
18+
:::warning
19+
By default, two cycles cannot have overlapping dates. If you need overlapping cycles, see [Parallel cycles](/core-concepts/cycles#parallel-cycles).
2020
:::
21+
2122
To create a new Cycle, just press `Q` from anywhere in your project. Or, you can head to the **Cycles** page under your project in the sidebar and click the **Add Cycle** button. You’ll need to give it a name and set the start and due dates. If you want, you can also add a description—either right away or later on!
2223

2324
![Create cycle](https://media.docs.plane.so/cycles/create-cycles.webp#hero)
@@ -39,7 +40,7 @@ If the Project Admin sets the **Timezone** in [Project settings](/core-concepts/
3940
## Cycle states
4041

4142
- **Active cycle**
42-
An active cycle is the current, ongoing cycle (the current date falls within the cycle's start and due dates) in which a team is working to complete a set of tasks or user stories within a defined time period. Only one cycle can be active at a time.
43+
An active cycle is the current, ongoing cycle (the current date falls within the cycle's start and due dates) in which a team is working to complete a set of tasks or user stories within a defined time period. By default, only one cycle can be active at a time. To run multiple active cycles simultaneously, see [Parallel cycles](/core-concepts/cycles#parallel-cycles).
4344

4445
- **Upcoming cycle**
4546
A cycle with a start date in the future is considered upcoming. This allows teams to plan their next phase of work in advance, ensuring a seamless transition from the current active cycle to the next, with everything lined up and ready to go.
@@ -58,7 +59,7 @@ While Cycles typically run for their set duration, sometimes you need more flexi
5859
To start a Cycle, simply click the **Start Cycle** button next to your upcoming Cycle. This is particularly useful when you want to begin a planned Cycle earlier than its scheduled start date or if you need to start a fresh Cycle immediately.
5960

6061
::: tip
61-
You can't start a new Cycle while another is in progress. To begin a new Cycle, you'll need to stop the currently active one first.
62+
By default, you can't start a new Cycle while another is in progressyou'll need to stop the active one first. With [parallel cycles](/core-concepts/cycles#parallel-cycles) enabled, this restriction is removed and multiple cycles can run simultaneously.
6263
:::
6364

6465
![Start Cycle](https://media.docs.plane.so/cycles/start-cycle.webp#hero-br)
@@ -81,6 +82,33 @@ Any unfinished work items in the ended Cycle will remain in their current state.
8182

8283
This manual control gives you the flexibility to adapt your Cycles to your team's actual work rhythm, rather than being strictly bound to predetermined dates.
8384

85+
## Parallel cycles <Badge type="warning" text="Enterprise Grid" />
86+
87+
By default, only one cycle can be active at a time, and cycles cannot have overlapping dates. With parallel cycles enabled, you can run multiple cycles simultaneously with overlapping date ranges. This is useful when your team manages parallel workstreams — for example, a two-week sprint running alongside a longer release cycle.
88+
89+
### Turn on parallel cycles
90+
91+
1. Go to **Project Settings > Features > Cycles**.
92+
2. Toggle on **Parallel cycles**.
93+
94+
![Parallel cycles setting](https://media.docs.plane.so/cycles/parallel-cycles-setting.webp#hero)
95+
96+
Once enabled, you can create cycles with overlapping dates and start multiple cycles at the same time. Each active cycle appears independently in the Cycles page with its own progress breakdown and burn-down chart.
97+
98+
![Multiple active cycles](https://media.docs.plane.so/cycles/multiple-active-cycles.webp#hero)
99+
100+
### How parallel cycles work
101+
102+
Even with parallel cycles enabled, a work item can only belong to one cycle at a time. This prevents duplicate tracking and keeps cycle metrics accurate. If you try to add a work item that already belongs to another cycle, the system will block the action.
103+
104+
When you end a parallel cycle, you're prompted to choose what happens to incomplete work items — leave them in the ended cycle or transfer them to an upcoming cycle.
105+
106+
Parallel cycles also appear in the workspace-level Active Cycles view and in any connected Teamspace Cycles view, so managers can track overlapping cycles across projects.
107+
108+
### Turn off parallel cycles
109+
110+
If you turn off the parallel cycles toggle after overlapping cycles already exist, those cycles continue to run normally. You just won't be able to create new overlapping cycles going forward. No existing data is disrupted.
111+
84112
## Transfer work items
85113

86114
Once the due date of an active Cycle passes, it’s automatically marked as completed. After that, you can easily transfer any unfinished work items to an active or upcoming cycle, making it simple to move any leftover tasks to the next cycle.
@@ -104,7 +132,7 @@ Automate the creation and management of cycles according to predefined configura
104132

105133
1. Navigate to **Project Settings → Features → Cycles**.
106134
2. Turn on the **Auto-schedule cycles** toggle and configure:
107-
- Cycle Title — Set a naming convention for automatically created cycles.
135+
- Cycle Title — Set a base name for automatically created cycles. Each cycle gets a numerical suffix appended automatically (e.g., if you set the title to "Sprint", cycles are created as "Sprint 1", "Sprint 2", "Sprint 3", and so on).
108136
- Cycle Duration — Define the length of each cycle in weeks (e.g., 1 week, 2 weeks).
109137
- Cooldown Period — Add an optional buffer between cycles in days for planning and retrospectives.
110138
- Cycle starts day — Choose the start date for the first auto-scheduled cycle.
@@ -115,6 +143,7 @@ Once enabled, the system automatically:
115143

116144
- Generates the configured number of future cycles based on your settings.
117145
- Creates a new cycle when the current one concludes to maintain the specified schedule.
146+
- Numbers each new cycle sequentially, continuing from the last created cycle.
118147
- Ensures cycles don't overlap and follow the defined cadence.
119148
- Applies consistent naming conventions and durations across all cycles.
120149

docs/core-concepts/issues/display-options.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,25 @@ Grouping helps you organize work items based on shared attributes, making it eas
4343
- Created By
4444
- Milestones
4545
- Epics
46+
- Releases
47+
- Work Item Types
4648
- None
4749

4850
## Sub-group by
4951

5052
You can further refine your view by adding a sub-grouping. For example, you could group by State and then sub-group by Assignees to see the state of tasks per team member. Sub-grouping options include:
5153

54+
- State
5255
- Priority
5356
- Cycle
5457
- Module
5558
- Labels
5659
- Assignees
5760
- Created By
61+
- Milestones
62+
- Epics
63+
- Releases
64+
- Work Item Types
5865
- None
5966

6067
## Order by

0 commit comments

Comments
 (0)