Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughMigrates the docs site from Docusaurus/React to VitePress/Vue: replaces site config and build scripts, adds a VitePress theme and Vue components, removes legacy React components and global CSS, updates dependencies/CI, and converts numerous docs from JSX/MDX to Vue/Markdown syntax. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~55 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/templates/work-item-templates.md (1)
68-70:⚠️ Potential issue | 🟡 MinorRemove the duplicated lead-in line.
The two consecutive lead-ins are redundant; keep one for clarity.Proposed diff
-From either location you can: - -From here you can: +From either location you can:
🤖 Fix all issues with AI agents
In `@docs/.vitepress/theme/components/HomeLanding.vue`:
- Around line 94-95: Several Tailwind "important" modifiers use the old prefix
form (e.g., "!text-2xl !font-[640]") which breaks with Tailwind v4; update every
class string that uses a leading "!" to the postfix form (e.g., "text-2xl!
font-[640]!") so the important marker is suffixed after each utility; search for
the instances that include "!text-2xl", "!font-[640]", "!mb-6", "!mt-0",
"!border-none", "!pt-0" and other classes with leading "!" (there are nine
occurrences in this component) and replace each leading "!" by moving it to the
end of the corresponding utility token.
In `@docs/importers/github-imp.md`:
- Line 8: The tip directive is malformed: change the inline ":::tipIntegrations
and importers..." into a proper VitePress tip block by separating the marker and
content (use "::: tip" on its own line, then the text on the next line) and
ensure the block is closed with a standalone ":::"; update the instance of
":::tip" and the corresponding closing marker so the directive renders
correctly.
In `@docs/importers/jira.md`:
- Line 67: Replace the incorrect VitePress admonition token ":::warning" with
the correct syntax "::: warning" in the docs/importers/jira.md file (the
occurrence shown as :::warning in the diff); locate the stanza that opens with
:::warning and add a space after the colons so it matches the other admonitions
(e.g., ::: info and ::: tip) and closes properly with the matching ::: end
marker.
🟡 Minor comments (23)
docs/communication-and-collaboration/comments-and-activity.md-66-68 (1)
66-68:⚠️ Potential issue | 🟡 MinorUse a real heading instead of bold text for “What happens”.
Line 66 appears to be a section heading but is formatted as bold text. Please convert it to a proper heading for consistency and to satisfy MD036.
✅ Suggested fix
-**What happens** +### What happensdocs/core-concepts/projects/manage-project-members.md-132-135 (1)
132-135:⚠️ Potential issue | 🟡 MinorMove the heading outside the HTML wrapper for correct parsing in VitePress.
In VitePress, Markdown inside a block-level HTML element (like
<div>) without blank line separation is treated as raw HTML content and won't be parsed as a heading. The heading text will remain literal.✅ Suggested fix
-<div class="tag-wrapper"> - ## View project member activity - <Tags :tags='[{ name: "Enterprise", link: "https://plane.so/pricing", additionalClass: "enterprise" }]' /> -</div> +## View project member activity +<div class="tag-wrapper"> + <Tags :tags='[{ name: "Enterprise", link: "https://plane.so/pricing", additionalClass: "enterprise" }]' /> +</div>Alternatively, add blank lines inside the div to allow Markdown parsing:
<div class="tag-wrapper"> ## View project member activity <Tags :tags='[{ name: "Enterprise", link: "https://plane.so/pricing", additionalClass: "enterprise" }]' /> </div>docs/importers/linear.md-11-11 (1)
11-11:⚠️ Potential issue | 🟡 MinorFix typo: "importert" → "importer".
There's a spelling error in the info callout.
🔤 Proposed fix
-The Linear importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. +The Linear importer is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances.docs/introduction/tutorials/collaborate-on-work-items.md-35-37 (1)
35-37:⚠️ Potential issue | 🟡 MinorAdd language identifier to code block.
The code block is missing a language identifier after the opening fence, which is a markdown best practice for proper syntax highlighting and accessibility.
📝 Proposed fix
- ``` + ```text Started working on this - I've identified the CSS issue and should have a fix ready by tomorrow. The problem is with the media query breakpoint at 375px. ```docs/importers/asana.md-11-11 (1)
11-11:⚠️ Potential issue | 🟡 MinorFix typo in documentation text.
The word "importert" should be "importer".
📝 Proposed fix for the typo
-The Asana importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. +The Asana importer is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances.docs/devices/mobile.md-234-237 (1)
234-237:⚠️ Potential issue | 🟡 MinorFix the GitHub callback URL code fence.
The current single-backtick block won’t render as a code block.🛠️ Proposed fix
-- For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: - `bash - https://<plane.example.com>/auth/mobile/github/callback/ - ` +- For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: + ```bash + https://<plane.example.com>/auth/mobile/github/callback/ + ```docs/workspaces-and-users/add-remove-seats.md-21-32 (1)
21-32:⚠️ Potential issue | 🟡 MinorSplit the image and numbered steps; fix admonition closing indentation.
The merged line likely breaks the ordered list and can render the admonition incorrectly.🛠️ Proposed fix
- 4. Enter the number of seats to add. 5. Click **Change**. 6. Complete payment in Stripe. + +4. Enter the number of seats to add. +5. Click **Change**. +6. Complete payment in Stripe. ::: info Billing impact - New seats are charged immediately. - Future bills include the full price of all seats. - ::: +:::docs/core-concepts/issues/visualise_filter.md-52-55 (1)
52-55:⚠️ Potential issue | 🟡 MinorFix the extra bracket in the date range placeholder.
The current text renders as a typo.🛠️ Proposed fix
-- Set **Target date** → **between** → [[Select date range] +- Set **Target date** → **between** → [Select date range]docs/core-concepts/issues/visualise_filter.md-137-142 (1)
137-142:⚠️ Potential issue | 🟡 MinorHyphenate compound adjective (“high-priority”).
This reads better and is standard for noun modifiers.🛠️ Proposed fix
-| `is` | Exactly matches one priority | Only high priority items | +| `is` | Exactly matches one priority | Only high-priority items |docs/intake/overview.md-54-56 (1)
54-56:⚠️ Potential issue | 🟡 MinorFix typo in section title (“responsbility”).
The heading should read “Intake responsibility.”✏️ Proposed fix
- ## Intake responsbility + ## Intake responsibilitydocs/introduction/tutorials/organize-and-view-work.md-12-15 (1)
12-15:⚠️ Potential issue | 🟡 MinorHyphenate “project-level.”
✏️ Proposed fix
-- Navigate workspace and project level views +- Navigate workspace and project-level viewsdocs/workspaces-and-users/customize-navigation.md-29-38 (1)
29-38:⚠️ Potential issue | 🟡 MinorUse headings instead of bold text for section titles.
This improves TOC generation and structure.✏️ Proposed fix
-**Accordion navigation control** +### Accordion navigation control ... -**Horizontal navigation bar** +### Horizontal navigation bardocs/core-concepts/projects/initiatives.md-6-11 (1)
6-11:⚠️ Potential issue | 🟡 MinorReplace Markdown heading with HTML element inside the
<div>block.VitePress uses markdown-it, which follows CommonMark spec—Markdown is not parsed inside HTML block elements without blank-line separation. The heading
# Group multiple projects using Initiativeswill render as literal text instead of a styled heading.Note: The same issue exists in
docs/core-concepts/projects/project-states.md(lines 8-11).🔧 Suggested fix (HTML heading)
<div class="tag-wrapper"> - # Group multiple projects using Initiatives + <h2>Group multiple projects using Initiatives</h2> <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> </div>docs/core-concepts/projects/project-states.md-6-11 (1)
6-11:⚠️ Potential issue | 🟡 MinorHeading inside the
<div>renders as literal text in VitePress.VitePress uses markdown-it, which follows CommonMark behavior: Markdown is not parsed inside block-level HTML elements like
<div>. The# Track your projects with stateswill appear as plain text instead of being rendered as a heading.Replace the Markdown heading with an HTML
<h2>tag:🔧 Suggested fix
<div class="tag-wrapper"> - # Track your projects with states + <h2>Track your projects with states</h2> <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> </div>docs/core-concepts/pages/overview.md-57-60 (1)
57-60:⚠️ Potential issue | 🟡 MinorFix the merged bullet in the AI helper list.
Line 59 has two sentences fused with a stray hyphen, which reads awkwardly in Markdown. Suggest splitting into two bullets.Proposed diff
- - Expand on ideas to add context, detail, or depth to your writing. - Get suggestions for clear, catchy titles. + - Expand on ideas to add context, detail, or depth to your writing. + - Get suggestions for clear, catchy titles.docs/core-concepts/pages/wiki.md-6-6 (1)
6-6:⚠️ Potential issue | 🟡 MinorMinor grammar: use "company-wide" (hyphenated).
The compound adjective "company-wide" should be hyphenated when it modifies a noun.
📝 Proposed fix
-# Wiki for company wide knowledge base +# Wiki for company-wide knowledge basedocs/introduction/tutorials/create-project.md-31-33 (1)
31-33:⚠️ Potential issue | 🟡 MinorFix typo in sentence.
Line 32 has a missing space: “part ofdisplay”.Proposed fix
- - Projects you're part ofdisplay directly in your sidebar under the **Projects** section. + - Projects you're part of display directly in your sidebar under the **Projects** section.docs/introduction/tutorials/create-project.md-87-89 (1)
87-89:⚠️ Potential issue | 🟡 MinorResolve MD007 list indentation warning.
Lines 88–89 are indented inconsistently, which trips markdownlint’s list indentation rule.Proposed fix
3. **Save your changes** - - Click **Update project** to apply your modifications. - - Your project now reflects the updated configuration. + - Click **Update project** to apply your modifications. + - Your project now reflects the updated configuration.docs/core-concepts/pages/editor-blocks.md-115-117 (1)
115-117:⚠️ Potential issue | 🟡 MinorAdd a language to the fenced LaTeX examples.
This addresses MD040 and improves readability.
Proposed fix
-``` +```latex \lim_{x \to \infty} \frac{1}{x} = 0@@
-+latex
\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_iAlso applies to: 131-133
docs/core-concepts/pages/editor-blocks.md-73-75 (1)
73-75:⚠️ Potential issue | 🟡 MinorKeep heading levels incremental for markdownlint.
This H4 should be H3 under the Attachment section.
Proposed fix
-#### Show video preview +### Show video previewdocs/automations/custom-automations.md-6-6 (1)
6-6:⚠️ Potential issue | 🟡 MinorHyphenate the compound modifier in the heading.
Use “trigger-based” instead of “trigger based”.
Proposed fix
-# Automate project tasks with trigger based workflows +# Automate project tasks with trigger-based workflowsdocs/integrations/github.md-265-270 (1)
265-270:⚠️ Potential issue | 🟡 MinorUse a real heading for “Example” and align the code block style with markdownlint.
This resolves MD036 and MD046.
Proposed fix
-_Example_ - -```bash -PR Title: [WEB-344] Add user authentication feature -PR Description: Implements login functionality for WEB-345 -``` +##### Example + + PR Title: [WEB-344] Add user authentication feature + PR Description: Implements login functionality for WEB-345docs/integrations/gitlab.md-240-245 (1)
240-245:⚠️ Potential issue | 🟡 MinorUse a real heading for “Example” and align the code block style with markdownlint.
This resolves MD036 and MD046.
Proposed fix
-_Example_ - -```bash -PR Title: [WEB-344] Add user authentication feature -PR Description: Implements login functionality for WEB-345 -``` +##### Example + + PR Title: [WEB-344] Add user authentication feature + PR Description: Implements login functionality for WEB-345
🧹 Nitpick comments (9)
docs/importers/jira.md (1)
46-46: Optional: Consider varying the phrasing.The phrase "where you want to import" appears in both step 6 (line 41) and step 7 (line 46). Consider rephrasing for variety, such as: "Choose the source workspace and project in Jira."
docs/core-concepts/account/settings.md (1)
21-123: Consider using proper headings instead of bold text for subsections.Several subsections use bold text (e.g.,
**Profile picture and cover image**,**Personal information**,**Property changes**) instead of Markdown headings. Using proper heading levels (###) would improve semantic structure, accessibility, and navigation.For example:
- Line 21:
**Profile picture and cover image**→### Profile picture and cover image- Line 27:
**Personal information**→### Personal information- Line 101:
**Property changes**→### Property changes- And similar patterns throughout the document
📝 Example refactor for a few subsections
-**Profile picture and cover image** +### Profile picture and cover image - Profile picture appears throughout Plane (work items, comments, assignments). ... -**Personal information** +### Personal information - **First name** - Your given name (required) ... -**Property changes** +### Property changes - Notifies when work item properties change (assignees, priority, estimates, etc.)postcss.config.js (1)
1-1: Autoprefixer may be redundant with Tailwind v4’s Lightning CSS.Tailwind v4 already applies vendor prefixes via Lightning CSS, so running autoprefixer can add extra processing. Consider dropping it unless you still need it for non‑Tailwind CSS.
🔧 Suggested simplification
-export default { plugins: { "@tailwindcss/postcss": {}, autoprefixer: {} } }; +export default { plugins: { "@tailwindcss/postcss": {} } };docs/integrations/slack.md (1)
217-233: Add language identifiers to code blocks for better rendering.The code blocks showing Slack command examples should specify a language identifier for proper syntax highlighting in VitePress.
📝 Suggested improvement for syntax highlighting
**Create work items conversationally:** -``` +```text `@Plane` create a work item 'live tail' and assign it to Mike.Get project information:
-+text
@Planecan you provide the identifiers of these projects?**Check cycle progress:** -``` +```text `@Plane` how are we doing in the current cycle for the AI project?</details> </blockquote></details> <details> <summary>docs/.vitepress/theme/components/Tags.vue (1)</summary><blockquote> `13-13`: **Consider using a unique key instead of index.** Using `index` as the `:key` works for static lists but can cause issues if tags are dynamically reordered or filtered. Since `tag.name` should be unique within a tag list, consider using it as the key. <details> <summary>💡 Suggested improvement</summary> ```diff - <template v-for="(tag, index) in tags" :key="index"> + <template v-for="tag in tags" :key="tag.name">docs/core-concepts/workspaces/members.md (1)
55-57: Add language specifier to fenced code block.The code block showing CSV column headers lacks a language specifier. Consider adding
textorcsvfor consistency and to satisfy linting rules.Suggested fix
-``` +```text Email, Display Name, First Name, Last Name, Role</details> </blockquote></details> <details> <summary>docs/importers/notion.md (1)</summary><blockquote> `31-33`: **Minor inconsistency in admonition syntax.** This file uses `:::info` (no space) while other files in this PR use `::: info` (with space). Both work in VitePress, but consider aligning for consistency. <details> <summary>Suggested fix for consistency</summary> ```diff -:::info +::: info Only HTML exports from Notion are supported. Make sure to select HTML as your export format. :::docs/intake/intake-forms.md (1)
6-8: Tags component placement differs from other files.This file places the Tags component directly after the H1 heading without the
<div class="tag-wrapper">wrapper used in other files (e.g.,estimates.md,members.md). Both approaches work, but the tag-wrapper provides consistent alignment styling. Consider wrapping for visual consistency.Optional: Wrap with tag-wrapper for consistency
-# Intake to collect and triage external work requests - -<Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> +<div class="tag-wrapper"> + # Intake to collect and triage external work requests + <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> +</div>docs/.vitepress/theme/components/HomeLanding.vue (1)
17-22: Avoidanyfor icon components to keep TS safety.Use a Vue component type instead of
any.Proposed fix
import { Building2, LayoutDashboard, Inbox, @@ ArrowRight, } from "lucide-vue-next"; +import type { Component } from "vue"; interface LinkItem { - icon: any; + icon: Component; title: string; description: string; href: string;
| <h2 class="!text-2xl !font-[640] !mb-6 !mt-0 !border-none !pt-0 tracking-tight text-[var(--vp-c-text-1)]">Explore by Topic</h2> | ||
| <div class="grid grid-cols-1 sm:grid-cols-2 min-[960px]:grid-cols-3 gap-4"> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, check the project's Tailwind version
find . -type f \( -name "package.json" -o -name "tailwind.config.*" \) | head -20Repository: makeplane/docs
Length of output: 72
🏁 Script executed:
# Check the actual file content at the specified lines
wc -l docs/.vitepress/theme/components/HomeLanding.vueRepository: makeplane/docs
Length of output: 110
🏁 Script executed:
# Read the file to see the code at specified lines
sed -n '90,160p' docs/.vitepress/theme/components/HomeLanding.vueRepository: makeplane/docs
Length of output: 3833
🏁 Script executed:
# Check Tailwind version in package.json
cat package.json | grep -i tailwindRepository: makeplane/docs
Length of output: 123
🌐 Web query:
Tailwind CSS v4 important modifier syntax
💡 Result:
In Tailwind CSS v4, the important modifier uses a postfix !:
- Utility:
bg-red-500!(preferred) instead of!bg-red-500(old style) [1] - With variants: put
!at the very end:hover:bg-red-500!,md:hover:bg-red-500![1] - The change was made so the
!is always in a consistent position (at the end), even when variants are present [1].
Example:
<div class="bg-sky-500 bg-red-500! hover:bg-green-500!"></div>Sources: [1]
🏁 Script executed:
# Count all instances of prefix important modifier in the file
rg '!\w+' docs/.vitepress/theme/components/HomeLanding.vue | wc -lRepository: makeplane/docs
Length of output: 59
🏁 Script executed:
# Find all lines with prefix important modifiers to verify scope
rg -n '!\w+' docs/.vitepress/theme/components/HomeLanding.vue | head -20Repository: makeplane/docs
Length of output: 1538
Update all prefix ! important modifiers to suffix form for Tailwind v4 compatibility.
This file uses the old prefix syntax (!text-2xl) which is incompatible with Tailwind v4. The project has @tailwindcss/postcss@^4.0.6 installed, which requires the postfix form (text-2xl!). There are 9 instances across the file (lines 94, 100, 123, 130, 135, 150, 157, 169, 177) that need updating.
Example fix
-<h2 class="!text-2xl !font-[640] !mb-6 !mt-0 !border-none !pt-0 tracking-tight text-[var(--vp-c-text-1)]">Explore by Topic</h2>
+<h2 class="text-2xl! font-[640]! mb-6! mt-0! border-none! pt-0! tracking-tight text-[var(--vp-c-text-1)]">Explore by Topic</h2>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <h2 class="!text-2xl !font-[640] !mb-6 !mt-0 !border-none !pt-0 tracking-tight text-[var(--vp-c-text-1)]">Explore by Topic</h2> | |
| <div class="grid grid-cols-1 sm:grid-cols-2 min-[960px]:grid-cols-3 gap-4"> | |
| <h2 class="text-2xl! font-[640]! mb-6! mt-0! border-none! pt-0! tracking-tight text-[var(--vp-c-text-1)]">Explore by Topic</h2> | |
| <div class="grid grid-cols-1 sm:grid-cols-2 min-[960px]:grid-cols-3 gap-4"> |
🤖 Prompt for AI Agents
In `@docs/.vitepress/theme/components/HomeLanding.vue` around lines 94 - 95,
Several Tailwind "important" modifiers use the old prefix form (e.g., "!text-2xl
!font-[640]") which breaks with Tailwind v4; update every class string that uses
a leading "!" to the postfix form (e.g., "text-2xl! font-[640]!") so the
important marker is suffixed after each utility; search for the instances that
include "!text-2xl", "!font-[640]", "!mb-6", "!mt-0", "!border-none", "!pt-0"
and other classes with leading "!" (there are nine occurrences in this
component) and replace each leading "!" by moving it to the end of the
corresponding utility token.
|
|
||
| # GitHub Importer | ||
|
|
||
| :::tipIntegrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed.::: |
There was a problem hiding this comment.
Fix malformed directive syntax.
The tip directive is malformed - there's no space or newline between :::tip and the content. This will cause rendering issues in VitePress.
🔧 Proposed fix
-:::tipIntegrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed.:::
+:::tip
+Integrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed.
+:::📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| :::tipIntegrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed.::: | |
| :::tip | |
| Integrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed. | |
| ::: |
🤖 Prompt for AI Agents
In `@docs/importers/github-imp.md` at line 8, The tip directive is malformed:
change the inline ":::tipIntegrations and importers..." into a proper VitePress
tip block by separating the marker and content (use "::: tip" on its own line,
then the text on the next line) and ensure the block is closed with a standalone
":::"; update the instance of ":::tip" and the corresponding closing marker so
the directive renders correctly.
| @@ -68,27 +67,27 @@ To import Jira issues to a Plane project, follow these steps: | |||
| :::warning | |||
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
VitePress admonition blocks syntax spacing rules
💡 Result:
VitePress “admonition” (callout) syntax + spacing rules
1) Custom container admonitions (::: ...)
- Opening fence must be on its own line and starts with
:::, then a space, then the type:::: tip Content... :::
- Custom title (optional) goes on the same opening line, after a space following the type:
::: danger STOP Danger zone, do not proceed :::
- Attributes (optional) go at the end of the same opening line in
{...}, typically separated by a space from the title/type:::: details Click me {open} Content... ::: - Closing fence is
:::alone on its own line. (vitepress.dev)
2) GitHub-flavored alert blocks (> [!NOTE])
- The marker line is a blockquote with
>then[!TYPE]:> [!NOTE] > Your text...
- Every line in the alert block should be prefixed with
>(including blank lines if you want a blank line inside the callout). - Separate multiple alerts with a blank line between blockquote groups (as in the docs examples). (vitepress.dev)
Citations:
🏁 Script executed:
# Check the actual content of the file at the relevant lines
sed -n '10p;18p;50p;67p' docs/importers/jira.mdRepository: makeplane/docs
Length of output: 120
Update line 67 to use correct VitePress admonition syntax.
Lines 10, 18, and 50 were updated to use ::: info and ::: tip with a space after :::, but line 67 still contains :::warning without a space. VitePress requires a space between ::: and the admonition type. Update line 67 to ::: warning.
🤖 Prompt for AI Agents
In `@docs/importers/jira.md` at line 67, Replace the incorrect VitePress
admonition token ":::warning" with the correct syntax "::: warning" in the
docs/importers/jira.md file (the occurrence shown as :::warning in the diff);
locate the stanza that opens with :::warning and add a space after the colons so
it matches the other admonitions (e.g., ::: info and ::: tip) and closes
properly with the matching ::: end marker.
There was a problem hiding this comment.
Actionable comments posted: 2
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (6)
docs/automations/custom-automations.md (1)
67-67:⚠️ Potential issue | 🟡 MinorRemove duplicate word and smooth phrasing.
Currently reads “to to start turn on”.✏️ Proposed edit
-8. Click **Enable** on the top right corner of the screen to to start turn on the automation on your project. +8. Click **Enable** in the top-right corner of the screen to turn on the automation for your project.docs/core-concepts/account/settings.md (1)
139-141:⚠️ Potential issue | 🟡 MinorIncomplete or placeholder Connections section.
The Connections section contains only a header and a single descriptive line with no actionable content or details about managing integrations. Users would expect information about what connections are available, how to add/remove them, and their purposes.
Consider either:
- Expanding this section with complete documentation about connection management
- Removing it entirely if this feature is not yet implemented or documented
- Adding a note indicating this section is under construction
docs/core-concepts/issues/visualise_filter.md (1)
81-87:⚠️ Potential issue | 🟡 MinorRemove extra space before the period.
There’s an extra space before the final period in the operator list sentence.✏️ Suggested fix
-... `is empty`, etc. . +... `is empty`, etc.docs/core-concepts/projects/manage-project-members.md (1)
162-170:⚠️ Potential issue | 🟡 MinorRemove duplicated “How users join projects” section.
The same section appears earlier (Lines 122–131). This duplication reads like a merge artifact.
🧹 Suggested removal (keep earlier section)
-## How users join projects - -Users can become project members in two different ways, and understanding both helps you manage your project team effectively. - -**Direct project membership** is where you specifically invite users to your project and assign them roles. These members have access only to the projects you've added them to, and you have full control over their permissions. - -**Teamspace-based membership** happens automatically when your project is linked to a [Teamspace](/core-concepts/workspaces/teamspaces). All members of that teamspace automatically receive `Member` access to your project, making it perfect for teams that collaborate across multiple projects. - -Users can have both types of access simultaneously. When this happens, Plane automatically applies whichever role gives them higher permissions. For example, if someone is a `Guest` on your project but joins a linked teamspace, they're automatically upgraded to `Member` access. If they're already an `Admin`, they keep their `Admin` role.docs/templates/work-item-templates.md (1)
31-71:⚠️ Potential issue | 🟡 MinorFix minor typos and remove the duplicated lead‑in.
Improves readability and removes repetition.✏️ Suggested fix
- - Fill in any default fields you want pre-populated (title format, description,..) + - Fill in any default fields you want pre-populated (title format, description...) -4. Click the templates icon and choose and from available templates in the dropdown menu. +4. Click the templates icon and choose one from the available templates in the dropdown menu. -From either location you can: - -From here you can: +From either location you can:docs/importers/jira.md (1)
40-69:⚠️ Potential issue | 🟡 MinorFix duplicated word and align admonition syntax.
Line 41 has "and and"; Line 67 should use
::: warning(with space) for correct VitePress parsing.✏️ Suggested fix
- Select the Plane project where you want to import your Jira data and and click **Next**. + Select the Plane project where you want to import your Jira data and click **Next**. - :::warning + ::: warning
🤖 Fix all issues with AI agents
In `@docs/importers/asana.md`:
- Around line 10-12: Fix the typo in the Asana importer documentation by
replacing the misspelled word "importert" with "importer" in the sentence that
currently reads "The Asana importert is available on Plane Cloud and on all
plans of the Commercial Edition for self-hosted instances." Update that phrase
to "The Asana importer is available on Plane Cloud and on all plans of the
Commercial Edition for self-hosted instances."
In `@docs/workspaces-and-users/permissions.md`:
- Line 17: The table elements in permissions.md are missing accessible context
and rely on color-only cues; add a <caption> to each <table> to provide
screen-reader context and update the permission indicator markup (the
checkmark/cross icons and their container elements) to include accessible text
or aria attributes (e.g., aria-label or visually-hidden descriptive text) so
status isn't conveyed by color alone; ensure every permission cell or icon (the
checkmark/cross nodes) has an explicit accessible name and consider adding
aria-labels on the table when appropriate.
🟡 Minor comments (28)
docs/workspaces-and-users/add-remove-seats.md-26-26 (1)
26-26:⚠️ Potential issue | 🟡 MinorFix ordered list formatting — steps 4–6 are embedded in the image line.
This breaks the numbered list and makes the steps hard to read in VitePress. Put the image on its own line and keep steps 4–6 as separate list items.
✅ Suggested fix
- 4. Enter the number of seats to add. 5. Click **Change**. 6. Complete payment in Stripe. + + +4. Enter the number of seats to add. +5. Click **Change**. +6. Complete payment in Stripe.docs/workspaces-and-users/add-remove-seats.md-28-32 (1)
28-32:⚠️ Potential issue | 🟡 MinorUnindented closing fence needed to terminate the admonition.
The closing
:::is indented, which can render as a code block and leave the info block unclosed.✅ Suggested fix
- ::: +:::docs/core-concepts/issues/visualise_filter.md-54-54 (1)
54-54:⚠️ Potential issue | 🟡 MinorFix stray bracket in date-range placeholder.
There’s a double[in the placeholder text.✏️ Suggested fix
-- Set **Target date** → **between** → [[Select date range] +- Set **Target date** → **between** → [Select date range]docs/core-concepts/issues/visualise_filter.md-159-164 (1)
159-164:⚠️ Potential issue | 🟡 MinorUse lowercase “labels” in the use case.
Capital “Labels” looks inconsistent with other rows.✏️ Suggested fix
-| `is any of` | Matches any of the Labels | frontend or backend | +| `is any of` | Matches any of the labels | frontend or backend |docs/core-concepts/issues/visualise_filter.md-137-142 (1)
137-142:⚠️ Potential issue | 🟡 MinorTighten wording in Priority use cases.
“high priority” should be hyphenated, and “none priority” reads awkwardly.✏️ Suggested fix
-| `is` | Exactly matches one priority | Only high priority items | +| `is` | Exactly matches one priority | Only high-priority items | ... -| `is not any of` | Excludes several priorities | Not low or none priority | +| `is not any of` | Excludes several priorities | Not low or no-priority items |docs/introduction/tutorials/create-workspace.md-45-47 (1)
45-47:⚠️ Potential issue | 🟡 MinorFix admonition syntax for VitePress.
Use
::: warning(with a space) to ensure the block renders correctly.🛠️ Suggested fix
- :::warning + ::: warning This URL choice is permanent and cannot be changed later. Make sure it's exactly how you want it. :::docs/importers/linear.md-10-12 (1)
10-12:⚠️ Potential issue | 🟡 MinorFix typo in user-facing text.
“importert” should be “importer”.
✏️ Suggested fix
- The Linear importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. + The Linear importer is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances.docs/importers/github-imp.md-8-8 (1)
8-8:⚠️ Potential issue | 🟡 MinorFix admonition syntax to ensure VitePress renders tip blocks.
Both tip blocks are missing the required space after the directive (
::: tip). Without it, VitePress may not parse the block as an admonition.✅ Suggested fix
-:::tipIntegrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed.::: +::: tip +Integrations and importers are only available on the cloud version. We plan to open-source our SDKs in the near future so that the community can request or contribute integrations as needed. +:::-:::tipPlease note that the importer services are still a work in progress. We plan to make this open-source soon and will also extend its features based on community requirements.::: +::: tip +Please note that the importer services are still a work in progress. We plan to make this open-source soon and will also extend its features based on community requirements. +:::Also applies to: 89-89
docs/intake/overview.md-54-56 (1)
54-56:⚠️ Potential issue | 🟡 MinorFix typo in section title (“responsibility”).
The heading currently reads “responsbility”.
✏️ Proposed edit
- ## Intake responsbility + ## Intake responsibilitydocs/workspaces-and-users/billing-and-plans.md-9-9 (1)
9-9:⚠️ Potential issue | 🟡 MinorFix grammar: “per-user” (not “per-users”).
Minor wording issue in the opening paragraph.
✏️ Proposed edit
-Unlike a majority of SaaS, our subscription models on Pro and higher plans are per-seat, not per-users. +Unlike a majority of SaaS, our subscription models on Pro and higher plans are per-seat, not per-user.docs/support/keyboard-shortcuts.md-79-105 (1)
79-105:⚠️ Potential issue | 🟡 MinorAdd context clarification for duplicate keyboard shortcuts.
The documentation lists duplicate shortcut sequences without explaining their context-dependent application:
OthenS: "Open a project setting" (line 84) and "Open a workspace setting" (line 89)GthenS: "Go to project settings" (line 101) and "Go to workspace settings" (line 104)GthenR: "Go to project archives" (line 102) and "Go to workspace archives" (line 106)Since the action labels clearly distinguish project-level vs workspace-level actions, these shortcuts appear to be context-dependent. Consider adding a note to the Navigate section explaining that shortcuts trigger based on the current context (e.g., "project setting shortcuts apply when viewing a project"), so users understand these aren't actual conflicts.
docs/workspaces-and-users/roles.md-15-15 (1)
15-15:⚠️ Potential issue | 🟡 MinorFix subject-verb agreement (“It provide” → “It provides”).
Small grammar issue in the Admin description.
✍️ Suggested edit
-Admins control the workspace itself - settings, members, features, and access. They determine what capabilities are available to all Members. It provide complete control for workspace owners and senior stakeholders who need to manage team structure and configuration. This centralized authority prevents configuration conflicts and maintains consistent workspace policies. +Admins control the workspace itself - settings, members, features, and access. They determine what capabilities are available to all Members. It provides complete control for workspace owners and senior stakeholders who need to manage team structure and configuration. This centralized authority prevents configuration conflicts and maintains consistent workspace policies.docs/communication-and-collaboration/comments-and-activity.md-66-66 (1)
66-66:⚠️ Potential issue | 🟡 MinorUse a proper heading instead of bold text.
markdownlint MD036 flags emphasis used as a heading.
📝 Suggested change
-**What happens** +### What happensdocs/introduction/tutorials/create-pages.md-61-76 (1)
61-76:⚠️ Potential issue | 🟡 MinorAdd a language identifier to the fenced code block.
markdownlint MD040 is triggered here.
✅ Suggested fix
- ``` + ```markdown # Project Requirements Document ... ```docs/importers/notion.md-24-33 (1)
24-33:⚠️ Potential issue | 🟡 MinorIndent the sublist and info block under step 4.
Unindented bullets break the ordered list structure.
📑 Suggested indentation
4. In the export dialog: - -- **Export format**: Choose **HTML** -- **Include databases**: Select **Current view** -- **Include content**: Choose **Everything** -- **Include subpages**: Toggle this **ON** -- **Create folders for subpages**: Toggle this **ON** -- **Export comments**: Toggle this **OFF** (unless you want comments included) - -:::info -Only HTML exports from Notion are supported. Make sure to select HTML as your export format. -::: + - **Export format**: Choose **HTML** + - **Include databases**: Select **Current view** + - **Include content**: Choose **Everything** + - **Include subpages**: Toggle this **ON** + - **Create folders for subpages**: Toggle this **ON** + - **Export comments**: Toggle this **OFF** (unless you want comments included) + + :::info + Only HTML exports from Notion are supported. Make sure to select HTML as your export format. + :::docs/ai/pi-chat.md-151-165 (1)
151-165:⚠️ Potential issue | 🟡 MinorFix the broken relations link and trailing punctuation. The Markdown link is missing a closing
)and the URL references line ends with a double period.Suggested fix
-- Add [relations](/core-concepts/issues/overview#add-relations to work items (blocking, blocked by, relates to, duplicate of, etc.). +- Add [relations](/core-concepts/issues/overview#add-relations) to work items (blocking, blocked by, relates to, duplicate of, etc.). ... -- Add, edit, or remove external URL references.. +- Add, edit, or remove external URL references.docs/ai/pi-chat.md-6-6 (1)
6-6:⚠️ Potential issue | 🟡 MinorHyphenate “AI-powered” in the H1. This reads better and matches standard usage.
Suggested fix
-# AI powered assistant for project management +# AI-powered assistant for project managementdocs/introduction/tutorials/collaborate-on-work-items.md-33-37 (1)
33-37:⚠️ Potential issue | 🟡 MinorAdd a language to the fenced example block. This resolves MD040 and improves rendering consistency.
Suggested fix
- ``` + ```text Started working on this - I've identified the CSS issue and should have a fix ready by tomorrow. The problem is with the media query breakpoint at 375px.</details> </blockquote></details> <details> <summary>docs/core-concepts/projects/overview.md-82-87 (1)</summary><blockquote> `82-87`: _⚠️ Potential issue_ | _🟡 Minor_ **Use a heading instead of bold for “Change visibility.”** Line 82 uses bold as a heading; switching to a real heading fixes MD036 and improves TOC/navigation. <details> <summary>✏️ Suggested fix</summary> ```diff - **Change visibility** + ### Change visibilitydocs/introduction/quickstart.md-62-66 (1)
62-66:⚠️ Potential issue | 🟡 MinorAdd missing punctuation after “Public.”
Line 65 reads as a run-on sentence.✏️ Suggested fix
- 3. By default, the project access is **Public** This means that all Workspace Admins and Members can see and join this project. Change this to **Private** if you want members to join only through invite. + 3. By default, the project access is **Public**. This means that all Workspace Admins and Members can see and join this project. Change this to **Private** if you want members to join only through invite.docs/core-concepts/projects/project-states.md-8-10 (1)
8-10:⚠️ Potential issue | 🟡 MinorFix Markdown heading rendering inside HTML block.
Line 9 uses a Markdown heading
#inside a block-level<div>. Per CommonMark/markdown-it rules that VitePress follows, Markdown is not parsed inside block HTML elements and will render as plain text. Replace with an explicit HTML heading:Suggested fix
- # Track your projects with states + <h2>Track your projects with states</h2>docs/templates/project-templates.md-8-8 (1)
8-8:⚠️ Potential issue | 🟡 MinorAdd missing
linkproperty to Business tag for consistency.The Business tag is missing the
link: "https://plane.so/pricing"property used in most other Business tags across the documentation (e.g., workflows.md, draw-io.md, intake-forms.md). Update line 8 to match the standard pattern:<Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' />Note:
docs/intake/overview.mdanddocs/intake/intake-email.mdhave the same issue.docs/core-concepts/workspaces/members.md-42-43 (1)
42-43:⚠️ Potential issue | 🟡 MinorConvert bold pseudo-heading to proper Markdown heading (MD036).
Markdownlint detects emphasis used as a heading; use heading syntax instead.Suggested fix
-**To import members:** +### To import membersdocs/devices/mobile.md-234-237 (1)
234-237:⚠️ Potential issue | 🟡 MinorFix malformed code fence for the GitHub callback URL.
Lines 235-237 use single backticks instead of triple backticks, preventing proper code block rendering. The Google Sign-In block above (lines 231-233) uses the correct triple-backtick syntax; the GitHub block should match:
Suggested fix
- For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: - `bash - https://<plane.example.com>/auth/mobile/github/callback/ - ` + ```bash + https://<plane.example.com>/auth/mobile/github/callback/ + ```docs/introduction/tutorials/create-project.md-32-32 (1)
32-32:⚠️ Potential issue | 🟡 MinorTypo: Missing space between words.
"part ofdisplay" should be "part of display".
✏️ Proposed fix
-- Projects you're part ofdisplay directly in your sidebar under the **Projects** section. +- Projects you're part of display directly in your sidebar under the **Projects** section.docs/introduction/tutorials/create-project.md-79-89 (1)
79-89:⚠️ Potential issue | 🟡 MinorMarkdown formatting issue with image and list structure.
Line 79 has an image reference immediately followed by list content on the same line, which creates rendering ambiguity. The nested list items on lines 81-86 also have inconsistent indentation (3 spaces instead of 4), flagged by markdownlint.
✏️ Proposed fix
- - **Project icon and cover**: Choose an emoji and a header image for your project. +  - - **Project visibility (Network)**: Choose based on your team's collaboration needs. - - **Public**: All workspace members can see and join the project. - - **Private**: Only invited members can access the project. + - **Project icon and cover**: Choose an emoji and a header image for your project. + - **Project visibility (Network)**: Choose based on your team's collaboration needs. + - **Public**: All workspace members can see and join the project. + - **Private**: Only invited members can access the project. - - **Project timezone**: Set the timezone for project scheduling and deadlines. + - **Project timezone**: Set the timezone for project scheduling and deadlines.docs/core-concepts/projects/milestones.md-6-11 (1)
6-11:⚠️ Potential issue | 🟡 MinorDuplicate h1 headings detected.
There are two
#(h1) headings on this page:
- Line 6:
# Align work toward target dates with Milestones- Line 9:
# Track goals with MilestonesThis is problematic for SEO and accessibility. A page should have only one h1 heading. Based on the pattern used elsewhere in this PR, it appears the intent is to have a single heading with the Tags component. Consider removing one of the headings.
Proposed fix
-# Align work toward target dates with Milestones - <div class="tag-wrapper"> - # Track goals with Milestones + # Align work toward target dates with Milestones <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> </div>docs/core-concepts/issues/epics.md-6-11 (1)
6-11:⚠️ Potential issue | 🟡 MinorDuplicate h1 headings detected.
Same issue as in
milestones.md- there are two h1 headings:
- Line 6:
# Organize related work items with Epics- Line 9:
# Organize and track your work items with EpicsProposed fix
-# Organize related work items with Epics - <div class="tag-wrapper"> - # Organize and track your work items with Epics + # Organize related work items with Epics <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> </div>
🧹 Nitpick comments (14)
docs/automations/custom-automations.md (1)
6-6: Fix compound adjective in heading.
Use “trigger-based” as a hyphenated compound adjective.✏️ Proposed edit
-# Automate project tasks with trigger based workflows +# Automate project tasks with trigger-based workflowsdocs/communication-and-collaboration/project-updates.md (1)
63-63: Consider using proper heading levels for subsections.The subsections "Start discussions", "Use emoji reactions", and "Mention team members" use bold text instead of proper markdown headings. Converting these to level 3 headings would improve document structure, accessibility (screen readers can navigate by headings), and semantic HTML output.
📝 Proposed refactor to use proper headings
-**Start discussions** +### Start discussions - Add comments in the thread below the update.-**Use emoji reactions** +### Use emoji reactions - React to updates with emojis for quick feedback.-**Mention team members** _(Coming soon)_ +### Mention team members _(Coming soon)_ - Tag specific team members in update comments to notify them directly.Also applies to: 69-69, 74-74
docs/core-concepts/account/settings.md (1)
27-27: Use proper markdown headings instead of bold text for subsections.Several subsection labels use bold text (
**text**) instead of proper markdown headings. This affects document structure, navigation, and accessibility. As per static analysis, lines 27, 106, 111, 116, and 121 should use heading syntax.📝 Proposed fix to convert bold text to proper headings
-**Personal information** +#### Personal information-**Property changes** +#### Property changes-**State change** +#### State change-**Work item completed** +#### Work item completed-**Comments** +#### Comments-**Mentions** +#### MentionsApply similar changes to other bold subsection headers like "Profile picture and cover image" (line 21), "Account deactivation" (line 34), "Default:" (line 45), "Theme options:" (line 47), "Custom theme" (line 55), "Customizable colors:" (line 58), "Timezone:" (line 83), and "Language:" (line 88) for consistency.
Also applies to: 101-123
docs/core-concepts/pages/nested-pages.md (1)
10-10: Consider using consistent quote styles.The Vue prop binding syntax is correct, but mixing single quotes (outer) with double quotes (inner strings) can be less readable. Consider using double quotes for the attribute value for consistency.
♻️ Suggested improvement for quote consistency
- <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> + <Tags :tags="[{ name: 'Business', link: 'https://plane.so/pricing', additionalClass: 'business' }]" />docs/workspaces-and-users/permissions.md (2)
29-31: Use proper cross mark symbol instead of lowercase "x".For visual consistency and clarity, replace the lowercase "x" with the proper cross mark symbol "✗" to match the style of the checkmark "✓".
✨ Proposed change for better visual consistency
-<td align="center"><span style="color: red; font-weight: bold; font-size: 16px">x</span></td> +<td align="center"><span style="color: red; font-weight: bold; font-size: 16px">✗</span></td>This change should be applied consistently across all tables in the document (appears in hundreds of locations).
Also applies to: 36-37, 42-43
17-17: Refactor inline styles to CSS classes for better maintainability.The extensive use of inline
styleattributes throughout the tables makes the document harder to maintain and prevents proper theme integration. Consider extracting these styles into CSS classes that VitePress can manage.♻️ Recommended refactoring approach
Define CSS classes in your VitePress theme:
.permissions-table { width: 100%; display: table; margin-left: 2px; } .permission-allowed { color: var(--vp-c-green); font-weight: bold; font-size: 16px; } .permission-denied { color: var(--vp-c-red); font-weight: bold; font-size: 16px; }Then update the tables:
-<table style="width: 100%; display: table; margin-left: 2px"> +<table class="permissions-table"> ... -<span style="color: green; font-weight: bold; font-size: 16px">✓</span> +<span class="permission-allowed">✓</span>This approach allows theme-aware colors and centralized style management.
Also applies to: 29-31, 206-207
docs/introduction/tutorials/invite-members.md (1)
21-21: Use proper headings instead of bold text for section markers.The bold text at these lines (
**From the workspace switcher**and**From workspace settings**) should be converted to proper headings (e.g.,###) to improve document structure and accessibility. Screen readers rely on heading hierarchy for navigation.♻️ Suggested fix
-**From the workspace switcher** +### From the workspace switcher ... -**From workspace settings** +### From workspace settingsAlso applies to: 28-28
docs/importers/overview.md (1)
14-33: Standardize Card component formatting.The Card components have inconsistent spacing. Some have blank lines after the opening tag (Linear and Asana cards), while others don't (Jira and CSV cards). This inconsistency affects readability.
♻️ Proposed fix for consistent formatting
<CardGroup :cols="2"> <Card title="Jira" icon="FaJira" href="/importers/jira"> Import boards from Jira into Plane, streamlining your project setup. </Card> -<Card title="Linear" icon="linear" href="/importers/linear"> - -Bring Linear tasks into Plane, ensuring smooth transitions and continued progress. -</Card> - -<Card title="Asana" icon="asana" href="/importers/asana"> - -Migrate tasks from Asana to Plane, keeping your workflow intact and organized. -</Card> + <Card title="Linear" icon="linear" href="/importers/linear"> + Bring Linear tasks into Plane, ensuring smooth transitions and continued progress. + </Card> + + <Card title="Asana" icon="asana" href="/importers/asana"> + Migrate tasks from Asana to Plane, keeping your workflow intact and organized. + </Card> -<Card title="CSV" icon="FaFileCsv" href="/importers/csv"> - Import work items from CSV files, perfect for migrating data from spreadsheets or other tools. -</Card> + <Card title="CSV" icon="FaFileCsv" href="/importers/csv"> + Import work items from CSV files, perfect for migrating data from spreadsheets or other tools. + </Card> </CardGroup>docs/integrations/github.md (1)
265-270: Consider using proper heading syntax instead of emphasis.Line 265 uses emphasis (
_Example_) where a heading would be more semantically appropriate for document structure.♻️ Proposed fix
-_Example_ +**Example:** ```bash PR Title: [WEB-344] Add user authentication feature PR Description: Implements login functionality for WEB-345</details> </blockquote></details> <details> <summary>docs/.vitepress/theme/components/HomeLanding.vue (1)</summary><blockquote> `17-23`: **Tighten icon typing to avoid `any`** Consider using Vue’s `Component` type to keep TS safety without sacrificing flexibility. <details> <summary>♻️ Suggested typing update</summary> ```diff import { Building2, LayoutDashboard, Inbox, BarChart3, Sparkles, Import, Cloud, Server, Code2, MessageCircle, Newspaper, ArrowRight, } from "lucide-vue-next"; +import type { Component } from "vue"; interface LinkItem { - icon: any; + icon: Component; title: string; description: string; href: string; cta?: string; }docs/support/get-help.md (1)
36-36: Optional: soften wording with a polite nudgeMinor copy tweak for tone (matches the LanguageTool hint).
✏️ Suggested copy adjustment
-Notice something unclear or missing in our documentation? Let us know on the [docs GitHub repository](https://github.com/makeplane/docs). Your feedback helps us create better resources for everyone. +Notice something unclear or missing in our documentation? Please let us know on the [docs GitHub repository](https://github.com/makeplane/docs). Your feedback helps us create better resources for everyone.docs/integrations/slack.md (1)
217-233: Add language specifier to fenced code blocks.The code blocks for Slack commands/messages lack language specifiers. Adding
textorplaintextimproves consistency and satisfies markdown linting rules.✏️ Proposed fix
**Create work items conversationally:** -``` +```text `@Plane` create a work item 'live tail' and assign it to Mike....
Get project information:
-
+text
@Planecan you provide the identifiers of these projects?**Check cycle progress:** -``` +```text `@Plane` how are we doing in the current cycle for the AI project?</details> </blockquote></details> <details> <summary>docs/core-concepts/pages/wiki.md (1)</summary><blockquote> `6-6`: **Consider hyphenating "company-wide" as a compound adjective.** "Company wide" as a compound adjective modifying "knowledge base" should typically be hyphenated as "company-wide". This also appears in line 2 (front matter title) and line 9. <details> <summary>✏️ Proposed fix</summary> ```diff -# Wiki for company wide knowledge base +# Wiki for company-wide knowledge baseAlso update the front matter on line 2:
-title: Wiki for company wide knowledge base +title: Wiki for company-wide knowledge basedocs/integrations/gitlab.md (1)
240-241: Consider using a proper heading instead of emphasis.Using
_Example_(emphasis/italics) as a pseudo-heading is flagged by markdownlint (MD036). Consider using a proper heading level or removing the emphasis if it's just introductory text.Proposed fix
-_Example_ - +**Example:**Or use a heading if appropriate:
-_Example_ +#### Example
| ::: info | ||
| The Asana importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. | ||
| ::: |
There was a problem hiding this comment.
Fix typo: "importert" should be "importer".
Line 11 contains a typo that needs correction.
🐛 Proposed fix
::: info
-The Asana importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances.
+The Asana importer is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances.
:::📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ::: info | |
| The Asana importert is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. | |
| ::: | |
| ::: info | |
| The Asana importer is available on Plane Cloud and on all plans of the Commercial Edition for self-hosted instances. | |
| ::: |
🧰 Tools
🪛 LanguageTool
[grammar] ~11-~11: Ensure spelling is correct
Context: ... existing projects. ::: info The Asana importert is available on Plane Cloud and on all ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
In `@docs/importers/asana.md` around lines 10 - 12, Fix the typo in the Asana
importer documentation by replacing the misspelled word "importert" with
"importer" in the sentence that currently reads "The Asana importert is
available on Plane Cloud and on all plans of the Commercial Edition for
self-hosted instances." Update that phrase to "The Asana importer is available
on Plane Cloud and on all plans of the Commercial Edition for self-hosted
instances."
| <details> | ||
| <summary><b>Workspaces</b></summary> | ||
| <div> | ||
| <table style="width: 100%; display: table; margin-left: 2px"> |
There was a problem hiding this comment.
Improve accessibility: Add table captions and reconsider color-only indicators.
The tables lack <caption> elements, which are important for screen readers to provide context. Additionally, while the checkmark/cross symbols provide some redundancy, the heavy reliance on color (green/red) to convey permission status may not be sufficient for users with color vision deficiencies.
♿ Suggested improvements for accessibility
Add a <caption> element to each table:
<div>
<table style="width: 100%; display: table; margin-left: 2px">
+ <caption>Workspace permissions by role</caption>
<thead>Consider adding aria-label attributes to the permission indicators or using more descriptive text alongside the symbols to ensure the information is conveyed through multiple channels, not just color.
Also applies to: 29-31, 206-206
🤖 Prompt for AI Agents
In `@docs/workspaces-and-users/permissions.md` at line 17, The table elements in
permissions.md are missing accessible context and rely on color-only cues; add a
<caption> to each <table> to provide screen-reader context and update the
permission indicator markup (the checkmark/cross icons and their container
elements) to include accessible text or aria attributes (e.g., aria-label or
visually-hidden descriptive text) so status isn't conveyed by color alone;
ensure every permission cell or icon (the checkmark/cross nodes) has an explicit
accessible name and consider adding aria-labels on the table when appropriate.
There was a problem hiding this comment.
Actionable comments posted: 9
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
docs/core-concepts/issues/visualise_filter.md (1)
85-86:⚠️ Potential issue | 🟡 MinorRemove extra punctuation.
There’s an extra space before the period in “etc. .”.✏️ Proposed fix
-We will be adding more conditions here such as `not in`, `contains`, `is empty`, etc. . +We will be adding more conditions here such as `not in`, `contains`, `is empty`, etc.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/core-concepts/issues/visualise_filter.md` around lines 85 - 86, In the "Paid plans" paragraph (the sentence that currently ends with "etc. ."), remove the stray extra space and duplicated period so the sentence ends with "etc." — locate the string "etc. ." in visualise_filter.md and replace it with "etc.".docs/ai/pi-chat.md (1)
548-548:⚠️ Potential issue | 🟡 MinorRemove the editorial instruction from published content.
“Add this section at the very end…” reads like a note to editors and shouldn’t ship in the doc.🧹 Proposed fix
-Add this section at the very end of the document, after "What's coming next": -🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/ai/pi-chat.md` at line 548, Remove the editorial instruction line "Add this section at the very end of the document, after 'What's coming next':" from the markdown (docs/ai/pi-chat.md) so it doesn't appear in published content; if the intent was to add new content, place the actual section content after the "What's coming next" heading instead of leaving the editor note.sidebars.ts (1)
1-341:⚠️ Potential issue | 🟠 Major
sidebars.tsis not migrated to VitePress format and is now orphaned — the entire file is still Docusaurus-specific.This file was only reformatted (quote style, indentation, inline arrays) but the schema was never converted. All of the following are Docusaurus-only conventions that VitePress does not recognize:
Docusaurus construct Lines (examples) import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"1 Named sidebar key tutorialSidebar3 type: "category"6, 41, 93, … type: "link"withhref29–32, 34–37, 68–71, … link: { type: "doc", id: "..." }16, 216, 258 Bare string doc IDs ( "introduction/home")10–12, 49–53, … Since
@docusaurus/plugin-content-docsis no longer a dependency and no file in the codebase importssidebars.ts, this file is currently dead code. VitePress configures the sidebar viathemeConfig.sidebarusing objects with{ text, link, items?, collapsed? }— there is notypediscriminator, nohref, noid, and no bare string shorthand. The exported type isDefaultTheme.Sidebar(fromvitepress, not@docusaurus/plugin-content-docs).The file must either be fully rewritten in VitePress format or deleted during the migration. A sketch of the required shape:
♻️ Suggested VitePress sidebar skeleton
-import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; +import type { DefaultTheme } from "vitepress"; -const sidebars: SidebarsConfig = { - tutorialSidebar: [ - { - type: "category", - collapsed: false, - label: "Get started", - items: [ - "introduction/home", - "introduction/quickstart", - "introduction/core-concepts", - { - type: "category", - label: "Tutorials", - link: { type: "doc", id: "introduction/tutorials/overview" }, - items: [ - "introduction/tutorials/create-workspace", - // ... - ], - }, - { - type: "link", - label: "Download Plane", - href: "https://plane.so/download", - }, - ], - }, - // ... - ], -}; +const sidebar: DefaultTheme.Sidebar = [ + { + text: "Get started", + collapsed: false, + items: [ + { text: "Home", link: "/introduction/home" }, + { text: "Quickstart", link: "/introduction/quickstart" }, + { text: "Core Concepts", link: "/introduction/core-concepts" }, + { + text: "Tutorials", + link: "/introduction/tutorials/overview", + items: [ + { text: "Create a workspace", link: "/introduction/tutorials/create-workspace" }, + // ... + ], + }, + { text: "Download Plane", link: "https://plane.so/download" }, + ], + }, + // ... +]; -export default sidebars; +export default sidebar;Then consume it in
.vitepress/config.ts:import sidebar from "../sidebars"; export default defineConfig({ themeConfig: { sidebar }, });🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@sidebars.ts` around lines 1 - 341, The file sidebars.ts is still in Docusaurus format and must be migrated or removed; update the export named sidebars (and remove the Docusaurus-only import of SidebarsConfig) to a VitePress-compatible DefaultTheme.Sidebar object shape (use {text, link, items?, collapsed?} instead of Docusaurus constructs like tutorialSidebar, type: "category", type: "link", link: { type: "doc", id: "..." } or bare string doc IDs), or delete sidebars.ts if no sidebar is needed; then ensure .vitepress/config.ts consumes the new export via themeConfig.sidebar.
🧹 Nitpick comments (2)
docs/ai/pi-chat.md (1)
267-271: Optional: reduce repetitive sentence starts.
Two bullets start with “Create new pages…”, which reads repetitive in a short list.✍️ Example rewording
-- Create new pages within projects. -- Create new pages within workspaces. +- Create new pages within projects. +- Create workspace-level pages.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/ai/pi-chat.md` around lines 267 - 271, The two bullets "Create new pages within projects." and "Create new pages within workspaces." are repetitive; rewrite them to avoid repeated sentence starts by combining or rephrasing—for example, merge into a single bullet like "Create new pages within projects and workspaces" or change to "Add new pages to projects" and "Add new pages to workspaces"; update the list items in the Create and organize knowledge section accordingly to keep tone consistent with surrounding bullets.docs/.vitepress/config.mts (1)
320-330:Native integrationssidebar group is missingcollapsed: true.Every other sidebar group that contains child
itemsis declared withcollapsed: true, keeping the sidebar compact by default. TheNative integrationsgroup omits it, so those five sub-links will always be expanded on page load — an inconsistency likely to look unintentional.♻️ Proposed fix
{ text: "Native integrations", link: "/integrations/about", + collapsed: true, items: [🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/.vitepress/config.mts` around lines 320 - 330, The "Native integrations" sidebar group object (the entry with text: "Native integrations" and items: [...]) is missing collapsed: true; update that object to include collapsed: true so it follows the same collapsed-by-default behavior as the other groups — add the collapsed: true property alongside text, link, and items in that group definition.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 1-85: CI failed due to formatting; run the repository formatter
and commit the changes: locally run pnpm format (which runs oxfmt --write),
verify formatting passes pnpm format:check, stage and commit the modified files
(the CLAUDE.md and any other files changed by oxfmt), and push the commit to
update the PR so the GitHub Actions "format" job succeeds.
In `@docs/ai/pi-chat.md`:
- Around line 94-96: The fenced code blocks in the doc examples (e.g., the
blocks containing "Create a bug report for the login page crash", "Create a
teamspace called \"Frontend Team\"...", and "Enable Initiatives for this
workspace...") lack a language specifier; update each triple-backtick fence to
include a language token (use "text") so they become ```text ... ``` to satisfy
markdownlint MD040 and ensure consistent rendering.
- Line 6: Update the document H1 text "AI powered assistant for project
management" to include a hyphen so it reads "AI-powered assistant for project
management"; locate the header line containing that exact string and replace it
with the hyphenated version.
In `@docs/core-concepts/cycles.md`:
- Around line 31-33: The markdown list item is being terminated by unindented
blank lines around the embedded image (the "Empty cycle" image), causing the
image to render outside its bullet; fix by preserving the list-item
structure—either indent the blank lines under the list bullet or remove the
extraneous blank lines so the image markdown remains part of the bullet (apply
the same change to the similar block referenced at lines 35–37).
In `@docs/core-concepts/issues/visualise_filter.md`:
- Around line 161-164: Update the table entry under the "Use case" column for
the `is` operator to hyphenate the compound adjective: change "Only high
priority items" to "Only high-priority items" so the phrase reads correctly;
locate the table rows containing the `is` and `is any of` operator labels to
make this edit (the row with `is` is the one to modify).
- Around line 52-55: Replace the malformed placeholder string `[[Select date
range]` with a correctly balanced bracketed placeholder (e.g. `[Select date
range]`) so the markdown renders properly; locate the text `[[Select date
range]` in the "Set Target date → between →" line and update it to the balanced
form.
In `@docs/core-concepts/projects/milestones.md`:
- Around line 6-11: Remove the stale top-level heading to avoid duplicate H1s:
delete the standalone "Align work toward target dates with Milestones" line (the
pre-migration heading) so only the intended H1 inside the <div
class="tag-wrapper"> — "Track goals with Milestones" rendered via the Tags block
remains; update the surrounding markup if needed to ensure the <div
class="tag-wrapper"> and Tags component are the sole header/title for this page.
In `@docs/devices/mobile.md`:
- Around line 234-238: Replace the malformed inline code fence in the GitHub
Sign-In callback URL snippet with a proper triple-backtick fenced code block
using the bash language tag so the URL is rendered and syntax-highlighted like
the Google Sign-In example; specifically change the single-backtick span around
"https://<plane.example.com>/auth/mobile/github/callback/" in the GitHub Sign-In
section to a fenced block starting with ```bash and ending with ``` so the
snippet matches the Google Sign-In formatting.
In `@docs/integrations/slack.md`:
- Around line 221-223: The fenced code blocks containing the example commands
(the lines with "@Plane create a work item 'live tail' and assign it to Mike."
and "@Plane can you provide the identifiers of these projects?") are missing
language identifiers; update each triple-backtick fence to include a language
(use "text") so they read ```text ... ``` to satisfy MD040 and improve
readability, and apply the same change to the other occurrence noted (lines
229-231).
---
Outside diff comments:
In `@docs/ai/pi-chat.md`:
- Line 548: Remove the editorial instruction line "Add this section at the very
end of the document, after 'What's coming next':" from the markdown
(docs/ai/pi-chat.md) so it doesn't appear in published content; if the intent
was to add new content, place the actual section content after the "What's
coming next" heading instead of leaving the editor note.
In `@docs/core-concepts/issues/visualise_filter.md`:
- Around line 85-86: In the "Paid plans" paragraph (the sentence that currently
ends with "etc. ."), remove the stray extra space and duplicated period so the
sentence ends with "etc." — locate the string "etc. ." in visualise_filter.md
and replace it with "etc.".
In `@sidebars.ts`:
- Around line 1-341: The file sidebars.ts is still in Docusaurus format and must
be migrated or removed; update the export named sidebars (and remove the
Docusaurus-only import of SidebarsConfig) to a VitePress-compatible
DefaultTheme.Sidebar object shape (use {text, link, items?, collapsed?} instead
of Docusaurus constructs like tutorialSidebar, type: "category", type: "link",
link: { type: "doc", id: "..." } or bare string doc IDs), or delete sidebars.ts
if no sidebar is needed; then ensure .vitepress/config.ts consumes the new
export via themeConfig.sidebar.
---
Nitpick comments:
In `@docs/.vitepress/config.mts`:
- Around line 320-330: The "Native integrations" sidebar group object (the entry
with text: "Native integrations" and items: [...]) is missing collapsed: true;
update that object to include collapsed: true so it follows the same
collapsed-by-default behavior as the other groups — add the collapsed: true
property alongside text, link, and items in that group definition.
In `@docs/ai/pi-chat.md`:
- Around line 267-271: The two bullets "Create new pages within projects." and
"Create new pages within workspaces." are repetitive; rewrite them to avoid
repeated sentence starts by combining or rephrasing—for example, merge into a
single bullet like "Create new pages within projects and workspaces" or change
to "Add new pages to projects" and "Add new pages to workspaces"; update the
list items in the Create and organize knowledge section accordingly to keep tone
consistent with surrounding bullets.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (16)
.github/workflows/build.yml.gitignore.oxfmtrc.json.prettierrcCLAUDE.mddocs/.vitepress/config.mtsdocs/.vitepress/theme/components/HomeLanding.vuedocs/ai/pi-chat.mddocs/core-concepts/cycles.mddocs/core-concepts/issues/visualise_filter.mddocs/core-concepts/issues/work-item-url.mddocs/core-concepts/projects/milestones.mddocs/devices/mobile.mddocs/integrations/slack.mdpackage.jsonsidebars.ts
💤 Files with no reviewable changes (1)
- .prettierrc
✅ Files skipped from review due to trivial changes (1)
- .oxfmtrc.json
🚧 Files skipped from review as they are similar to previous changes (3)
- package.json
- docs/.vitepress/theme/components/HomeLanding.vue
- .gitignore
| <Tags tags={[{ name: "Pro", additionalClass: "pro" }]} /> | ||
| <Tags tags={[{ name: "Business", additionalClass: "business" }]} /> | ||
| </div> | ||
| # AI powered assistant for project management |
There was a problem hiding this comment.
Hyphenate “AI-powered” in the H1.
Static analysis flagged the missing hyphen; this is a minor grammar fix.
✏️ Proposed fix
-# AI powered assistant for project management
+# AI-powered assistant for project management📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # AI powered assistant for project management | |
| # AI-powered assistant for project management |
🧰 Tools
🪛 LanguageTool
[grammar] ~6-~6: Use a hyphen to join words.
Context: ... tasks using natural language. --- # AI powered assistant for project management...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/ai/pi-chat.md` at line 6, Update the document H1 text "AI powered
assistant for project management" to include a hyphen so it reads "AI-powered
assistant for project management"; locate the header line containing that exact
string and replace it with the hyphenated version.
| ``` | ||
| Create a bug report for the login page crash | ||
| ``` |
There was a problem hiding this comment.
Add languages to fenced code blocks.
Markdownlint MD040 requires a language specifier on fenced code blocks.
🧩 Proposed fix
- ```
+ ```text
Create a bug report for the login page crash
```-```
+```text
Create a teamspace called "Frontend Team"
Add Sarah and Mike to the Design teamspace
```diff
-```
+```text
Enable Initiatives for this workspace
Disable the Customers feature
</details>
Also applies to: 323-327, 363-366
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.21.0)</summary>
[warning] 94-94: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
Verify each finding against the current code and only fix it if needed.
In @docs/ai/pi-chat.md around lines 94 - 96, The fenced code blocks in the doc
examples (e.g., the blocks containing "Create a bug report for the login page
crash", "Create a teamspace called "Frontend Team"...", and "Enable
Initiatives for this workspace...") lack a language specifier; update each
triple-backtick fence to include a language token (use "text") so they become
text ... to satisfy markdownlint MD040 and ensure consistent rendering.
</details>
<!-- fingerprinting:phantom:triton:eagle -->
<!-- This is an auto-generated comment by CodeRabbit -->
| - After you create a cycle, you can start adding new work items or bringing in existing work items right in the Cycle page. | ||
|
|
||
|  |
There was a problem hiding this comment.
Keep list item structure intact by indenting the blank line.
The unindented blank lines (Lines 32 and 36) can terminate the list item, causing the images to render outside their bullets. Indent the blank lines or remove them.
💡 Suggested fix
-
- 
+
+ -
- 
+
+ Also applies to: 35-37
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/cycles.md` around lines 31 - 33, The markdown list item is
being terminated by unindented blank lines around the embedded image (the "Empty
cycle" image), causing the image to render outside its bullet; fix by preserving
the list-item structure—either indent the blank lines under the list bullet or
remove the extraneous blank lines so the image markdown remains part of the
bullet (apply the same change to the similar block referenced at lines 35–37).
| **This week's deliverables:** | ||
|
|
||
| - Set **Target date** → **between** → [[Select date range] | ||
|
|
There was a problem hiding this comment.
Fix the placeholder brackets.
Line 54 shows [[Select date range], which appears to be a typo and renders incorrectly.
✏️ Proposed fix
-- Set **Target date** → **between** → [[Select date range]
+- Set **Target date** → **between** → [Select date range]📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **This week's deliverables:** | |
| - Set **Target date** → **between** → [[Select date range] | |
| **This week's deliverables:** | |
| - Set **Target date** → **between** → [Select date range] |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/issues/visualise_filter.md` around lines 52 - 55, Replace
the malformed placeholder string `[[Select date range]` with a correctly
balanced bracketed placeholder (e.g. `[Select date range]`) so the markdown
renders properly; locate the text `[[Select date range]` in the "Set Target date
→ between →" line and update it to the balanced form.
| | Operator | Description | Use case | | ||
| | --------------- | --------------------------------- | ------------------------------ | | ||
| | `is` | Exactly matches one priority | Only high priority items | | ||
| | `is any of` | Matches any of several priorities | High or medium priority | |
There was a problem hiding this comment.
Hyphenate the compound adjective.
“High priority items” reads better as “high-priority items.”
✏️ Proposed fix
-| `is` | Exactly matches one priority | Only high priority items |
+| `is` | Exactly matches one priority | Only high-priority items |📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| | Operator | Description | Use case | | |
| | --------------- | --------------------------------- | ------------------------------ | | |
| | `is` | Exactly matches one priority | Only high priority items | | |
| | `is any of` | Matches any of several priorities | High or medium priority | | |
| | Operator | Description | Use case | | |
| | --------------- | --------------------------------- | ------------------------------ | | |
| | `is` | Exactly matches one priority | Only high-priority items | | |
| | `is any of` | Matches any of several priorities | High or medium priority | |
🧰 Tools
🪛 LanguageTool
[uncategorized] ~163-~163: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...xactly matches one priority | Only high priority items | | is any of | Match...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/issues/visualise_filter.md` around lines 161 - 164, Update
the table entry under the "Use case" column for the `is` operator to hyphenate
the compound adjective: change "Only high priority items" to "Only high-priority
items" so the phrase reads correctly; locate the table rows containing the `is`
and `is any of` operator labels to make this edit (the row with `is` is the one
to modify).
| # Align work toward target dates with Milestones | ||
|
|
||
| <div className="tag-wrapper"> | ||
| <div class="tag-wrapper"> | ||
| # Track goals with Milestones | ||
| <Tags tags={[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]} /> | ||
| <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> | ||
| </div> |
There was a problem hiding this comment.
Duplicate H1 — the old heading at line 6 was not removed.
The page now has two <h1> elements: one at line 6 (Align work toward target dates with Milestones) and one inside the tag-wrapper div at line 9 (Track goals with Milestones). VitePress processes Markdown inside HTML blocks, so both render as real H1s. This breaks the ToC, produces invalid document structure, and harms SEO. The line 6 heading appears to be the pre-migration heading left behind when the new heading+Tags block was introduced.
🐛 Proposed fix — remove the stale top-level heading
-# Align work toward target dates with Milestones
-
<div class="tag-wrapper">
# Track goals with Milestones
<Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' />
</div>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/projects/milestones.md` around lines 6 - 11, Remove the
stale top-level heading to avoid duplicate H1s: delete the standalone "Align
work toward target dates with Milestones" line (the pre-migration heading) so
only the intended H1 inside the <div class="tag-wrapper"> — "Track goals with
Milestones" rendered via the Tags block remains; update the surrounding markup
if needed to ensure the <div class="tag-wrapper"> and Tags component are the
sole header/title for this page.
| - For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: | ||
| `bash | ||
| https://<plane.example.com>/auth/mobile/github/callback/ | ||
| ` | ||
| https://<plane.example.com>/auth/mobile/github/callback/ | ||
| ` | ||
| Verify that the `<plane.example.com>` part of the URL matches your self-hosted instance's domain. |
There was a problem hiding this comment.
Malformed code fence for the GitHub callback URL snippet.
Lines 235–237 use a single-backtick inline code span (`bash\n...\n`) instead of a triple-backtick fenced block, unlike the identical Google Sign-In snippet directly above it. The word bash will appear as literal inline content and no syntax highlighting will be applied.
🐛 Proposed fix
-- For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app:
- `bash
-https://<plane.example.com>/auth/mobile/github/callback/
-`
+- For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app:
+ ```bash
+ https://<plane.example.com>/auth/mobile/github/callback/
+ ```📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: | |
| `bash | |
| https://<plane.example.com>/auth/mobile/github/callback/ | |
| ` | |
| https://<plane.example.com>/auth/mobile/github/callback/ | |
| ` | |
| Verify that the `<plane.example.com>` part of the URL matches your self-hosted instance's domain. | |
| - For GitHub Sign-In: Add the following URL to the Callback URL section in your GitHub OAuth app: |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/devices/mobile.md` around lines 234 - 238, Replace the malformed inline
code fence in the GitHub Sign-In callback URL snippet with a proper
triple-backtick fenced code block using the bash language tag so the URL is
rendered and syntax-highlighted like the Google Sign-In example; specifically
change the single-backtick span around
"https://<plane.example.com>/auth/mobile/github/callback/" in the GitHub Sign-In
section to a fenced block starting with ```bash and ending with ``` so the
snippet matches the Google Sign-In formatting.
| ``` | ||
| @Plane create a work item 'live tail' and assign it to Mike. | ||
| ``` |
There was a problem hiding this comment.
Add language identifiers to fenced code blocks.
Markdownlint flags these blocks; please specify a language (e.g., text) to satisfy MD040 and improve readability.
✏️ Suggested fix
-```
+```text
`@Plane` create a work item 'live tail' and assign it to Mike.
-```
+```
-```
+```text
`@Plane` can you provide the identifiers of these projects?
-```
+```Also applies to: 229-231
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 221-221: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/integrations/slack.md` around lines 221 - 223, The fenced code blocks
containing the example commands (the lines with "@Plane create a work item 'live
tail' and assign it to Mike." and "@Plane can you provide the identifiers of
these projects?") are missing language identifiers; update each triple-backtick
fence to include a language (use "text") so they read ```text ... ``` to satisfy
MD040 and improve readability, and apply the same change to the other occurrence
noted (lines 229-231).
There was a problem hiding this comment.
♻️ Duplicate comments (1)
CLAUDE.md (1)
83-89: Formatting CI failure previously flagged — still needs resolution.The past review noted that
pnpm format:checkis failing in CI. Ensureoxfmt --writehas been run across the full working tree and the result committed before merging.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CLAUDE.md` around lines 83 - 89, CI is failing because formatting check (pnpm format:check) detects unformatted files; run the formatter (oxfmt --write) across the full working tree, review and stage all changes, commit them, and push so the build job (`pnpm format:check` in the CI workflow) passes; if the project uses a package script or toolchain hook, ensure the same command is invoked (pnpm format:check / oxfmt --write) locally before creating the PR.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@CLAUDE.md`:
- Around line 83-89: CI is failing because formatting check (pnpm format:check)
detects unformatted files; run the formatter (oxfmt --write) across the full
working tree, review and stage all changes, commit them, and push so the build
job (`pnpm format:check` in the CI workflow) passes; if the project uses a
package script or toolchain hook, ensure the same command is invoked (pnpm
format:check / oxfmt --write) locally before creating the PR.
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/ai/pi-chat.md (1)
547-547:⚠️ Potential issue | 🟡 MinorRemove the internal instruction from published content.
The line “Add this section at the very end of the document, after ‘What’s coming next’” reads like an authoring note and shouldn’t ship in user-facing docs.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/ai/pi-chat.md` at line 547, Remove the authoring note "Add this section at the very end of the document, after 'What's coming next'" from the published docs (docs/ai/pi-chat.md) so it doesn't appear in user-facing content; instead move that instruction into the PR description or an editorial/comment block, and ensure the final document only contains the intended section heading/content and not the internal instruction text.
♻️ Duplicate comments (2)
docs/ai/pi-chat.md (2)
93-95:⚠️ Potential issue | 🟡 MinorAdd language identifiers to fenced code blocks.
Markdownlint MD040 requires a language specifier (e.g.,
text) on all fenced blocks; several remain bare.Also applies to: 167-172, 185-189, 204-209, 222-226, 240-244, 258-262, 273-276, 288-291, 322-325, 334-337, 349-352, 362-365
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/ai/pi-chat.md` around lines 93 - 95, Several fenced code blocks are missing language identifiers (e.g., the block containing "Create a bug report for the login page crash"); update each bare triple-backtick block to include an appropriate language token such as ```text or ```markdown. Search for the shown snippet and the other affected blocks mentioned (blocks at the additional ranges) and add the language specifier to each fenced block so they comply with MD040.
6-6:⚠️ Potential issue | 🟡 MinorHyphenate “AI-powered” in the H1.
This repeats a prior review note; the header still lacks the hyphen.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/ai/pi-chat.md` at line 6, Update the H1 string in the docs file where it reads "AI powered assistant for project management" to hyphenate AI-powered so it becomes "AI-powered assistant for project management"; locate the header line in docs/ai/pi-chat.md (the H1) and replace the unhyphenated phrase accordingly.
🧹 Nitpick comments (2)
docs/core-concepts/pages/wiki.md (1)
43-45: Nit: missing space afterlink:in the Business tag propLine 44 has
link:"https://..."while line 8 useslink: "https://..."(with a space). Minor inconsistency — covered by the proposed fix above.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/core-concepts/pages/wiki.md` around lines 43 - 45, The Tags component's inline prop array has an inconsistent spacing for the Business tag's link property; update the Tags :tags value so the Business tag uses `link: "https://plane.so/pricing"` (add a space after `link:`) to match the other entries and maintain consistent formatting for the Tags :tags prop and the Business tag object.docs/.vitepress/theme/style.css (1)
201-205: Add a fallback for--colsto avoid invalid grid templates.If
--colsis missing,repeat(var(--cols), 1fr)becomes invalid and collapses the layout.♻️ Suggested change
.card-group { display: grid; gap: 16px; - grid-template-columns: repeat(var(--cols), 1fr); + grid-template-columns: repeat(var(--cols, 1), 1fr); }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/.vitepress/theme/style.css` around lines 201 - 205, The .card-group rule can produce an invalid grid when the CSS variable --cols is unset; update the grid-template-columns declaration to use a fallback for --cols (e.g., var(--cols, 1) or another sensible default) so repeat() always receives a valid number; modify the grid-template-columns in the .card-group selector to use var(--cols, <fallback>) to avoid collapsing layouts.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/.vitepress/theme/style.css`:
- Around line 1-3: Add Tailwind v4 at-rule allowlisting to the stylelint config
so the `@source` directive in docs/.vitepress/theme/style.css is not flagged:
update .stylelintrc.json's rules.at-rule-no-unknown to ignore at-rules like
"source" (and any other Tailwind v4 at-rules you use, e.g., "tailwind") by
adding them to the ignoreAtRules array, or alternatively add this file to
stylelint's ignoreFiles list to exclude it from linting; edit the
.stylelintrc.json entry rather than changing the CSS file.
- Around line 6-12: The `@font-face` rule for font-family "Satoshi" uses an
invalid combined descriptor "font-style: normal italic"; replace the single
`@font-face` block with two separate `@font-face` rules for "Satoshi" that reuse the
same src and font-weight range: one rule with font-style: normal and one rule
with font-style: italic (preserve font-display: swap and other descriptors like
src and font-weight), so the font selection is valid per CSS Fonts Level 4.
In `@docs/core-concepts/issues/epics.md`:
- Around line 90-93: The markdown heading "## Duplicate Epics" is currently
inside the HTML block <div class="tag-wrapper"> so it will not be parsed as an
<h2> or included in the TOC; move the "## Duplicate Epics" heading out of the
<div class="tag-wrapper"> and make the <Tags :tags='[...]' /> component an
inline sibling (e.g., heading first, then the tag wrapper containing only <Tags
/>), ensuring the wrapper only contains the <Tags /> component and not the
Markdown heading.
- Around line 163-166: The heading "Convert Epics to Work Items" is wrapped
inside a <div class="tag-wrapper"> which causes it to render as plain text and
be excluded from the table of contents; move the markdown heading out of that
wrapper (place the ## Convert Epics to Work Items line above or below the <div
class="tag-wrapper">) and keep the <Tags ... /> component inside the wrapper (or
wrap only the <Tags> element) so the heading is a top-level markdown heading
that will be picked up by the TOC.
In `@docs/core-concepts/pages/wiki.md`:
- Around line 2-6: Update the two occurrences of the phrase to use the
hyphenated compound modifier "company-wide": change the front matter title value
(the `title:` string) and the H1 heading text ("# Wiki for company wide
knowledge base") to "company-wide knowledge base" so both the `title` and the
displayed heading are corrected.
In `@docs/importers/notion.md`:
- Line 26: There's a contradiction between the "Export comments" guidance (the
"Export comments" toggle line) and the mapping table row "Comments | Not
supported"; pick one behavior and make both docs consistent: either (A) if
comments are not supported, change the "Export comments" line to instruct users
to keep the toggle OFF unconditionally and remove the parenthetical caveat,
leaving the mapping table as "Not supported", or (B) if comments are partially
supported, update the mapping table row "Comments | Not supported" to describe
the level of support and any limitations and adjust the "Export comments"
guidance to explain when to toggle ON and what will be imported; ensure both the
"Export comments" sentence and the mapping table row use the same wording and
include any caveats.
- Line 37: The image line in docs/importers/notion.md is indented by four spaces
so Markdown treats it as a code block; remove the leading spaces from the line
containing ""
so it becomes a normal top-level Markdown image line (no surrounding backticks
or additional indentation) and verify it renders as an image rather than inside
a <pre> block.
---
Outside diff comments:
In `@docs/ai/pi-chat.md`:
- Line 547: Remove the authoring note "Add this section at the very end of the
document, after 'What's coming next'" from the published docs
(docs/ai/pi-chat.md) so it doesn't appear in user-facing content; instead move
that instruction into the PR description or an editorial/comment block, and
ensure the final document only contains the intended section heading/content and
not the internal instruction text.
---
Duplicate comments:
In `@docs/ai/pi-chat.md`:
- Around line 93-95: Several fenced code blocks are missing language identifiers
(e.g., the block containing "Create a bug report for the login page crash");
update each bare triple-backtick block to include an appropriate language token
such as ```text or ```markdown. Search for the shown snippet and the other
affected blocks mentioned (blocks at the additional ranges) and add the language
specifier to each fenced block so they comply with MD040.
- Line 6: Update the H1 string in the docs file where it reads "AI powered
assistant for project management" to hyphenate AI-powered so it becomes
"AI-powered assistant for project management"; locate the header line in
docs/ai/pi-chat.md (the H1) and replace the unhyphenated phrase accordingly.
---
Nitpick comments:
In `@docs/.vitepress/theme/style.css`:
- Around line 201-205: The .card-group rule can produce an invalid grid when the
CSS variable --cols is unset; update the grid-template-columns declaration to
use a fallback for --cols (e.g., var(--cols, 1) or another sensible default) so
repeat() always receives a valid number; modify the grid-template-columns in the
.card-group selector to use var(--cols, <fallback>) to avoid collapsing layouts.
In `@docs/core-concepts/pages/wiki.md`:
- Around line 43-45: The Tags component's inline prop array has an inconsistent
spacing for the Business tag's link property; update the Tags :tags value so the
Business tag uses `link: "https://plane.so/pricing"` (add a space after `link:`)
to match the other entries and maintain consistent formatting for the Tags :tags
prop and the Business tag object.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (15)
docs/.vitepress/theme/style.cssdocs/ai/pi-chat.mddocs/core-concepts/issues/epics.mddocs/core-concepts/pages/inline-comments.mddocs/core-concepts/pages/nested-pages.mddocs/core-concepts/pages/wiki.mddocs/core-concepts/projects/initiatives.mddocs/core-concepts/projects/milestones.mddocs/core-concepts/projects/project-overview.mddocs/core-concepts/projects/project-states.mddocs/core-concepts/projects/recurring-work-items.mddocs/core-concepts/workspaces/teamspaces.mddocs/importers/confluence.mddocs/importers/notion.mdpackage.json
🚧 Files skipped from review as they are similar to previous changes (7)
- docs/core-concepts/projects/project-states.md
- docs/core-concepts/pages/inline-comments.md
- docs/core-concepts/projects/initiatives.md
- docs/core-concepts/projects/recurring-work-items.md
- docs/core-concepts/workspaces/teamspaces.md
- docs/importers/confluence.md
- docs/core-concepts/pages/nested-pages.md
| @import "tailwindcss"; | ||
| @source "../../**/*.md"; | ||
| @source "../theme/**/*.vue"; |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Locate lint config files and check Tailwind directive handling
echo "=== Looking for lint configuration files ==="
find . -maxdepth 3 -type f \( -name ".stylelintrc*" -o -name "stylelint.config.*" -o -name "biome.json" -o -name ".biomeignore" \) 2>/dev/null | head -20
echo -e "\n=== Checking for lint configs in root ==="
ls -la | grep -E 'stylelint|biome|lint'
echo -e "\n=== Checking for lint configs in docs or config directories ==="
find . -path ./node_modules -prune -o -type f -name "*.config.*" -print 2>/dev/null | grep -iE 'stylelint|biome|lint' | head -20Repository: makeplane/docs
Length of output: 542
🏁 Script executed:
#!/bin/bash
# Check package.json for stylelint/biome configuration
echo "=== Checking package.json for lint config ==="
if [ -f "package.json" ]; then
cat package.json | grep -A 20 -E '"stylelint"|"biome"' || echo "No stylelint/biome in package.json root"
fi
# Check if there's a biome.json or stylelint config
echo -e "\n=== Checking for biome.json ==="
[ -f "biome.json" ] && cat biome.json || echo "No biome.json found"
echo -e "\n=== Checking for .stylelintrc ==="
for file in .stylelintrc .stylelintrc.json .stylelintrc.js .stylelintrc.yaml .stylelintrc.yml; do
[ -f "$file" ] && echo "Found: $file" && cat "$file"
doneRepository: makeplane/docs
Length of output: 3017
🏁 Script executed:
#!/bin/bash
# Check if Tailwind CSS v4 at-rules are mentioned anywhere in config
echo "=== Searching for Tailwind or at-rule mentions in config files ==="
rg -i "tailwind|@source|@import|at-rule" --type-list | head -10
rg -i "tailwind|@source|at-rule-no-unknown" . --type json -A 3 -B 1 2>/dev/null | head -50
# Also check for Tailwind in CSS files
echo -e "\n=== Checking Tailwind mentions in CSS files ==="
fd -e css -x rg -l "tailwind|@source" {} \; 2>/dev/nullRepository: makeplane/docs
Length of output: 928
🏁 Script executed:
#!/bin/bash
# Check if style.css is linted in CI or scripts
echo "=== Checking for CI/linting scripts ==="
fd -e yml -e yaml | xargs grep -l "stylelint\|biome" 2>/dev/null | head -10
echo -e "\n=== Checking for stylelint in package.json scripts ==="
if [ -f "package.json" ]; then
rg '"scripts"' -A 30 package.json | grep -E "lint|style" || echo "No lint scripts found"
fi
# Check Tailwind v4 documentation requirements
echo -e "\n=== Checking if stylelint has known issues with Tailwind v4 ==="
rg "at-rule-no-unknown" . 2>/dev/null || echo "No at-rule-no-unknown config found"Repository: makeplane/docs
Length of output: 275
🏁 Script executed:
#!/bin/bash
# Check what Tailwind v4 at-rules need allowlisting
echo "=== Tailwind v4 directives used in CSS files ==="
fd -e css -x rg "@import|@source|@layer|@utility|@tailwind" {} + 2>/dev/null | head -20
# Check the specific style.css file for all at-rules
echo -e "\n=== All at-rules in docs/.vitepress/theme/style.css ==="
cat docs/.vitepress/theme/style.css | grep "^@" || echo "No at-rules found at line start"
cat docs/.vitepress/theme/style.css | rg "^\s*@" || echo "No at-rules found"Repository: makeplane/docs
Length of output: 559
Add Tailwind v4 @source directive to stylelint allowlist.
The .stylelintrc.json config doesn't explicitly allowlist Tailwind v4 at-rules like @source. While linting isn't currently enforced in CI, the stylelint configuration extends stylelint-config-standard-scss which will flag @source as an unknown at-rule. Either add an at-rule-no-unknown allowlist for Tailwind v4 directives to .stylelintrc.json, or exclude this file from linting.
🧰 Tools
🪛 Biome (2.4.4)
[error] 2-2: Tailwind-specific syntax is disabled.
(parse)
[error] 3-3: Tailwind-specific syntax is disabled.
(parse)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/.vitepress/theme/style.css` around lines 1 - 3, Add Tailwind v4 at-rule
allowlisting to the stylelint config so the `@source` directive in
docs/.vitepress/theme/style.css is not flagged: update .stylelintrc.json's
rules.at-rule-no-unknown to ignore at-rules like "source" (and any other
Tailwind v4 at-rules you use, e.g., "tailwind") by adding them to the
ignoreAtRules array, or alternatively add this file to stylelint's ignoreFiles
list to exclude it from linting; edit the .stylelintrc.json entry rather than
changing the CSS file.
| @font-face { | ||
| font-family: "Satoshi"; | ||
| src: url("/fonts/Satoshi/Satoshi-Variable.ttf") format("truetype"); | ||
| font-weight: 400 680; | ||
| font-style: normal italic; | ||
| font-display: swap; | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check the current state of the CSS file
echo "=== CSS File Content ==="
cat -n docs/.vitepress/theme/style.css | head -20
echo -e "\n=== Looking for Satoshi font files ==="
fd 'Satoshi' . --type f 2>/dev/null || echo "No files found with 'Satoshi' in name"
echo -e "\n=== Checking fonts directory structure ==="
find docs -type d -name fonts 2>/dev/null | head -5Repository: makeplane/docs
Length of output: 831
🌐 Web query:
CSS @font-face font-style descriptor specification - can it accept multiple keywords?
💡 Result:
No. In @font-face, the font-style descriptor takes one style keyword, not multiple keywords.
Per CSS Fonts Level 4, the grammar is: auto | normal | italic | oblique [ <angle>{1,2} ]?—i.e., a single keyword, and only for oblique you may add one angle (oblique 20deg) or two angles to declare a range (oblique 20deg 50deg). Values like normal italic are invalid. [1][2]
If you need both normal and italic faces, declare separate @font-face rules (one with font-style: normal, one with font-style: italic). [2]
Sources:
[1] W3C, CSS Fonts Module Level 4 (@font-face font-style descriptor definition)
[2] MDN, @font-face: font-style (syntax + oblique angle/range examples)
font-style: normal italic is not a valid @font-face descriptor.
Per W3C CSS Fonts Level 4, the font-style descriptor accepts only a single keyword: auto | normal | italic | oblique [ <angle>{1,2} ]?. Multiple keywords invalidate the rule and break font selection. Split into separate @font-face rules—one with font-style: normal and one with font-style: italic.
🛠️ Suggested fix
`@font-face` {
font-family: "Satoshi";
src: url("/fonts/Satoshi/Satoshi-Variable.ttf") format("truetype");
font-weight: 400 680;
- font-style: normal italic;
+ font-style: normal;
font-display: swap;
}
+
+@font-face {
+ font-family: "Satoshi";
+ src: url("/fonts/Satoshi/Satoshi-Variable.ttf") format("truetype");
+ font-weight: 400 680;
+ font-style: italic;
+ font-display: swap;
+}🧰 Tools
🪛 Stylelint (17.3.0)
[error] 7-7: Unexpected quotes around "Satoshi" (font-family-name-quotes)
(font-family-name-quotes)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/.vitepress/theme/style.css` around lines 6 - 12, The `@font-face` rule for
font-family "Satoshi" uses an invalid combined descriptor "font-style: normal
italic"; replace the single `@font-face` block with two separate `@font-face` rules
for "Satoshi" that reuse the same src and font-weight range: one rule with
font-style: normal and one rule with font-style: italic (preserve font-display:
swap and other descriptors like src and font-weight), so the font selection is
valid per CSS Fonts Level 4.
| <div class="tag-wrapper"> | ||
| ## Duplicate Epics | ||
| <Tags tags={[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]} /> | ||
| <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> | ||
| </div> |
There was a problem hiding this comment.
## heading inside <div> won't render as <h2> and will be absent from the page TOC.
It's not possible to use Markdown inside an HTML block — ## Duplicate Epics on Line 91, nested inside the <div class="tag-wrapper">, will be emitted as the literal string ## Duplicate Epics rather than an <h2> element. The parsed headers are handled by VitePress and used for both the sidebar and document title, so this section will also be missing from the page's table of contents.
Move the heading outside the wrapper and position the <Tags /> component as an inline sibling:
🐛 Proposed fix
-<div class="tag-wrapper">
- ## Duplicate Epics
- <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' />
-</div>
+## Duplicate Epics <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' />📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <div class="tag-wrapper"> | |
| ## Duplicate Epics | |
| <Tags tags={[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]} /> | |
| <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> | |
| </div> | |
| ## Duplicate Epics <Tags :tags='[{ name: "Pro", link: "https://plane.so/pricing", additionalClass: "pro" }]' /> |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/issues/epics.md` around lines 90 - 93, The markdown
heading "## Duplicate Epics" is currently inside the HTML block <div
class="tag-wrapper"> so it will not be parsed as an <h2> or included in the TOC;
move the "## Duplicate Epics" heading out of the <div class="tag-wrapper"> and
make the <Tags :tags='[...]' /> component an inline sibling (e.g., heading
first, then the tag wrapper containing only <Tags />), ensuring the wrapper only
contains the <Tags /> component and not the Markdown heading.
| <div class="tag-wrapper"> | ||
| ## Convert Epics to Work Items | ||
| <Tags tags={[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]} /> | ||
| <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> | ||
| </div> |
There was a problem hiding this comment.
Same heading-inside-<div> problem as the "Duplicate Epics" block above — ## Convert Epics to Work Items will render as plain text and be missing from the TOC.
🐛 Proposed fix
-<div class="tag-wrapper">
- ## Convert Epics to Work Items
- <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' />
-</div>
+## Convert Epics to Work Items <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' />📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <div class="tag-wrapper"> | |
| ## Convert Epics to Work Items | |
| <Tags tags={[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]} /> | |
| <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> | |
| </div> | |
| ## Convert Epics to Work Items <Tags :tags='[{ name: "Business", link: "https://plane.so/pricing", additionalClass: "business" }]' /> |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/issues/epics.md` around lines 163 - 166, The heading
"Convert Epics to Work Items" is wrapped inside a <div class="tag-wrapper">
which causes it to render as plain text and be excluded from the table of
contents; move the markdown heading out of that wrapper (place the ## Convert
Epics to Work Items line above or below the <div class="tag-wrapper">) and keep
the <Tags ... /> component inside the wrapper (or wrap only the <Tags> element)
so the heading is a top-level markdown heading that will be picked up by the
TOC.
| title: Wiki for company wide knowledge base | ||
| sidebar_label: Wiki | ||
| hide_title: true | ||
| description: Create and organize company-wide documentation, policies, guides, and knowledge that extends beyond individual projects. | ||
| --- | ||
|
|
||
| import Tags from "@site/src/components/Tags"; | ||
| # Wiki for company wide knowledge base |
There was a problem hiding this comment.
Fix hyphenation: "company-wide knowledge base"
"Company-wide" is a compound modifier and should be hyphenated. The issue appears in both the front matter title (line 2) and the H1 heading (line 6).
✏️ Proposed fix
-title: Wiki for company wide knowledge base
+title: Wiki for company-wide knowledge base-# Wiki for company wide knowledge base
+# Wiki for company-wide knowledge base📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| title: Wiki for company wide knowledge base | |
| sidebar_label: Wiki | |
| hide_title: true | |
| description: Create and organize company-wide documentation, policies, guides, and knowledge that extends beyond individual projects. | |
| --- | |
| import Tags from "@site/src/components/Tags"; | |
| # Wiki for company wide knowledge base | |
| title: Wiki for company-wide knowledge base | |
| description: Create and organize company-wide documentation, policies, guides, and knowledge that extends beyond individual projects. | |
| --- | |
| # Wiki for company-wide knowledge base |
🧰 Tools
🪛 LanguageTool
[grammar] ~6-~6: Use a hyphen to join words.
Context: ...vidual projects. --- # Wiki for company wide knowledge base <Tags :tags='[{ nam...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/core-concepts/pages/wiki.md` around lines 2 - 6, Update the two
occurrences of the phrase to use the hyphenated compound modifier
"company-wide": change the front matter title value (the `title:` string) and
the H1 heading text ("# Wiki for company wide knowledge base") to "company-wide
knowledge base" so both the `title` and the displayed heading are corrected.
| - **Include content**: Choose **Everything** | ||
| - **Include subpages**: Toggle this **ON** | ||
| - **Create folders for subpages**: Toggle this **ON** | ||
| - **Export comments**: Toggle this **OFF** (unless you want comments included) |
There was a problem hiding this comment.
Contradiction between export guidance and the import mapping table for Comments.
Line 26 tells users they can toggle Export comments ON (implying comments will be imported), but the mapping table at Line 78 explicitly states Comments | Not supported. One of these must be incorrect:
- If comments are truly unsupported, Line 26 should advise users to keep the toggle OFF unconditionally and remove the parenthetical caveat.
- If comments are partially supported, the mapping table should reflect that accurately instead of "Not supported."
✏️ Proposed fix (if comments are unsupported)
- - **Export comments**: Toggle this **OFF** (unless you want comments included)
+ - **Export comments**: Toggle this **OFF** (comments are not supported by the importer)Also applies to: 78-78
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/importers/notion.md` at line 26, There's a contradiction between the
"Export comments" guidance (the "Export comments" toggle line) and the mapping
table row "Comments | Not supported"; pick one behavior and make both docs
consistent: either (A) if comments are not supported, change the "Export
comments" line to instruct users to keep the toggle OFF unconditionally and
remove the parenthetical caveat, leaving the mapping table as "Not supported",
or (B) if comments are partially supported, update the mapping table row
"Comments | Not supported" to describe the level of support and any limitations
and adjust the "Export comments" guidance to explain when to toggle ON and what
will be imported; ensure both the "Export comments" sentence and the mapping
table row use the same wording and include any caveats.
|
|
||
| ## Import Notion content | ||
|
|
||
|  |
There was a problem hiding this comment.
Standalone image will render as a code block due to 4-space indentation.
In Markdown (including VitePress/markdown-it), a block indented with 4 spaces at the top level is treated as a fenced code block, not rendered content. This image will appear as literal text  inside a <pre> element.
Remove the leading spaces so the image renders correctly:
🐛 Proposed fix
- 
+📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
|  | |
|  |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/importers/notion.md` at line 37, The image line in
docs/importers/notion.md is indented by four spaces so Markdown treats it as a
code block; remove the leading spaces from the line containing ""
so it becomes a normal top-level Markdown image line (no surrounding backticks
or additional indentation) and verify it renders as an image rather than inside
a <pre> block.
Summary by CodeRabbit
New Features
Documentation
Chores