Skip to content

Commit b15de97

Browse files
neoneyeclaude
andcommitted
Build docs from PlanExe2 docs/website/ instead of PlanExe v1
Drop the v1 nav, component README copying, nav-status CSS and proposals nav injection. v1 docs remain readable in PlanExe/docs on GitHub. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 75b777a commit b15de97

5 files changed

Lines changed: 43 additions & 175 deletions

File tree

‎.github/workflows/deploy.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- main
77
workflow_dispatch:
8-
# Trigger on changes to PlanExe repo (requires repository_dispatch or manual trigger)
8+
# Trigger on changes to the source repo (requires repository_dispatch or manual trigger)
99
repository_dispatch:
1010
types: [docs-updated]
1111

@@ -22,10 +22,10 @@ jobs:
2222
with:
2323
fetch-depth: 0
2424

25-
- name: Checkout PlanExe (source)
25+
- name: Checkout PlanExe2 (source)
2626
uses: actions/checkout@v4
2727
with:
28-
repository: PlanExeOrg/PlanExe
28+
repository: PlanExeOrg/PlanExe2
2929
path: planexe-source
3030
token: ${{ secrets.GITHUB_TOKEN }}
3131

@@ -40,7 +40,7 @@ jobs:
4040
4141
- name: Build documentation
4242
run: |
43-
PLANEXE_REPO=planexe-source DOCS_SOURCE_DIR=docs python build.py
43+
PLANEXE_REPO=planexe-source DOCS_SOURCE_DIR=docs/website python build.py
4444
4545
- name: Deploy to GitHub Pages
4646
uses: peaceiris/actions-gh-pages@v3

‎AGENTS.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,5 @@ If you're unsure where to start or have questions:
173173

174174
- **Tone**: keep docs factual and direct; avoid marketing language.
175175
- **Social cards**: configured in `mkdocs.yml` via the `social` plugin; titles come from page front matter (`title:`) when needed.
176-
- **Branding**: social cards use the PlanExe logo from `PlanExe/docs/assets/logo.svg` (copied during build).
176+
- **Source**: pages live in `PlanExe2/docs/website/`; only that directory is copied into the build.
177+
- **Branding**: social cards use the PlanExe logo from `PlanExe2/docs/website/assets/logo.svg` (copied during build).

‎README.md‎

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ This repository contains the built documentation for [PlanExe](https://planexe.o
44

55
## Overview
66

7-
The documentation source files are maintained in the main [PlanExe repository](https://github.com/PlanExeOrg/PlanExe) in the `docs` directory. This repository contains the compiled output from MkDocs Material, which is automatically deployed to GitHub Pages.
7+
The documentation source files are maintained in the [PlanExe2 repository](https://github.com/PlanExeOrg/PlanExe2) in the `docs/website/` directory. Only that directory is published; the rest of `PlanExe2/docs/` is internal. This repository contains the build configuration; MkDocs Material output is deployed to GitHub Pages.
8+
9+
The PlanExe v1 documentation is no longer published here; it remains readable in [PlanExe/docs](https://github.com/PlanExeOrg/PlanExe/tree/main/docs).
810

911
## Architecture
1012

11-
- **Source**: [PlanExeOrg/PlanExe/docs](https://github.com/PlanExeOrg/PlanExe/tree/main/docs)
13+
- **Source**: [PlanExeOrg/PlanExe2/docs/website](https://github.com/PlanExeOrg/PlanExe2/tree/main/docs/website)
1214
- **Build Tool**: MkDocs Material
1315
- **Output**: This repository (deployed to GitHub Pages)
1416
- **Domain**: docs.planexe.org
@@ -39,8 +41,8 @@ The documentation source files are maintained in the main [PlanExe repository](h
3941
git clone https://github.com/PlanExeOrg/PlanExe-docs.git
4042
cd PlanExe-docs
4143

42-
# Clone the PlanExe repo (adjust path as needed)
43-
git clone https://github.com/PlanExeOrg/PlanExe.git ../PlanExe
44+
# Clone the PlanExe2 repo (adjust path as needed)
45+
git clone https://github.com/PlanExeOrg/PlanExe2.git ../PlanExe2
4446
```
4547

4648
4. Build the documentation:
@@ -50,8 +52,8 @@ The documentation source files are maintained in the main [PlanExe repository](h
5052

5153
Or manually:
5254
```bash
53-
# Copy docs from PlanExe repo
54-
cp -r ../PlanExe/docs/* docs/
55+
# Copy docs from PlanExe2 repo
56+
cp -r ../PlanExe2/docs/website/* docs/
5557

5658
# Build
5759
mkdocs build
@@ -65,10 +67,10 @@ The documentation source files are maintained in the main [PlanExe repository](h
6567

6668
### Custom Build Paths
6769

68-
If your PlanExe repo is in a different location:
70+
If your PlanExe2 repo is in a different location:
6971

7072
```bash
71-
PLANEXE_REPO=/path/to/PlanExe DOCS_SOURCE_DIR=docs python build.py
73+
PLANEXE_REPO=/path/to/PlanExe2 DOCS_SOURCE_DIR=docs/website python build.py
7274
```
7375

7476
## Deployment
@@ -96,15 +98,15 @@ PLANEXE_REPO=/path/to/PlanExe DOCS_SOURCE_DIR=docs python build.py
9698

9799
See `.github/workflows/deploy.yml` for GitHub Actions automation.
98100

99-
**Why doesn’t the site rebuild when I push docs changes in PlanExe?**
101+
**Why doesn’t the site rebuild when I push docs changes in PlanExe2?**
100102

101-
The docs site is built and deployed from **this** repo (PlanExe-docs). Pushing to the **PlanExe** repo does not run workflows here. Rebuilds happen when:
103+
The docs site is built and deployed from **this** repo (PlanExe-docs). Pushing to **PlanExe2** does not run workflows here. Rebuilds happen when:
102104

103-
1. **Someone pushes to `main` on PlanExe-docs** (this repo), or
104-
2. **Someone manually runs** the “Deploy Documentation” workflow in PlanExe-docs (Actions → Deploy Documentation → Run workflow), or
105-
3. **The PlanExe repo triggers a rebuild** when `docs/` changes on `main`.
105+
1. **Someone pushes to `main` on PlanExe-docs** (this repo), or
106+
2. **Someone manually runs** the “Deploy Documentation” workflow in PlanExe-docs (Actions → Deploy Documentation → Run workflow), or
107+
3. **A `repository_dispatch` of type `docs-updated`** is sent to this repo.
106108

107-
For (3), the [PlanExe repo](https://github.com/PlanExeOrg/PlanExe) has a workflow (`.github/workflows/docs-update.yml`) that sends a `repository_dispatch` to this repo when files under `docs/` change. For that to work you must configure a secret in the **PlanExe** repo named **`PLANEXE_DOCS_DISPATCH_TOKEN`** (PlanExe → Settings → Secrets and variables → Actions).
109+
PlanExe2 has no workflow that sends (3) yet, so after merging docs changes in PlanExe2, use (2). To automate it, add a workflow to PlanExe2 that sends the dispatch when `docs/website/**` changes on `main`, with a secret named **`PLANEXE_DOCS_DISPATCH_TOKEN`** (PlanExe2 → Settings → Secrets and variables → Actions). The PlanExe v1 repo has such a workflow (`.github/workflows/docs-update.yml`) that can be used as a template; while it is active, v1 docs changes also trigger a (harmless) rebuild of this site.
108110

109111
**Token value:** use a GitHub Personal Access Token that can trigger workflows in this repo. A **fine-grained** token is recommended (narrower permissions). Fine-grained tokens have a **maximum expiration of 1 year**, so the secret must be renewed annually.
110112

@@ -114,20 +116,20 @@ For (3), the [PlanExe repo](https://github.com/PlanExeOrg/PlanExe) has a workflo
114116
2. **Generate new token** (or open an existing one to regenerate/check expiry).
115117
3. **Token name:** e.g. `PlanExe docs dispatch`.
116118
4. **Expiration:** set the maximum (1 year); add a calendar reminder to renew before it expires.
117-
5. **Resource owner:** your user or the org that owns PlanExe.
119+
5. **Resource owner:** your user or the org that owns PlanExe2.
118120
6. **Repository access:** Only select repositories → choose **PlanExeOrg/PlanExe-docs**.
119121
7. **Permissions → Repository permissions:** set **Contents** to **Read and write** (required for the `repository_dispatch` API; Actions alone is not enough).
120-
8. Generate the token, copy it (it is shown only once), then in the **PlanExe** repo update the **`PLANEXE_DOCS_DISPATCH_TOKEN`** secret with this value.
122+
8. Generate the token, copy it (it is shown only once), then in the source repo update the **`PLANEXE_DOCS_DISPATCH_TOKEN`** secret with this value.
121123

122124
**Alternative:** a [classic PAT](https://github.com/settings/tokens) with **`repo`** scope also works and can have a longer or no expiration.
123125

124-
If the secret is missing or expired, the “Notify docs deploy” job in PlanExe will fail and the site will not rebuild. Until the token is set, use option (2) and manually run “Deploy Documentation” in PlanExe-docs after merging docs changes.
126+
If the secret is missing or expired, the “Notify docs deploy” job in the source repo will fail and the site will not rebuild. Until then, use option (2).
125127

126128
**Troubleshooting deployment**
127129

128130
The main place to check is the **PlanExe-docs Actions** page: **[github.com/PlanExeOrg/PlanExe-docs/actions](https://github.com/PlanExeOrg/PlanExe-docs/actions)**. There you can see all workflow runs: “Deploy Documentation” (builds the site and deploys to GitHub Pages) and “pages build and deployment” (GitHub’s Pages publish). Runs triggered by a docs change in PlanExe show the event **docs-updated** and “Repository dispatch triggered by …”. Use this page to confirm a deploy ran, re-run a failed workflow, or manually start “Deploy Documentation” (Actions → Deploy Documentation → Run workflow).
129131

130-
- **Site didn’t update after pushing to PlanExe/docs?** Open the [PlanExe-docs Actions](https://github.com/PlanExeOrg/PlanExe-docs/actions) page. If there is no “Deploy Documentation” run for your push, the trigger from PlanExe likely failed — check the [PlanExe Actions](https://github.com/PlanExeOrg/PlanExe/actions) tab: a failed “Notify docs deploy” job will show the API error (e.g. token missing **Contents: Read and write**). If “Deploy Documentation” ran but failed, open that run and fix the error shown in the logs. If it succeeded, wait a minute or two for GitHub Pages to update and try a hard refresh (Ctrl+Shift+R / Cmd+Shift+R) or a private window to avoid cache.
132+
- **Site didn’t update after pushing to PlanExe2/docs/website?** Open the [PlanExe-docs Actions](https://github.com/PlanExeOrg/PlanExe-docs/actions) page. If there is no “Deploy Documentation” run for your push, the trigger from PlanExe likely failed — check the [PlanExe Actions](https://github.com/PlanExeOrg/PlanExe/actions) tab: a failed “Notify docs deploy” job will show the API error (e.g. token missing **Contents: Read and write**). If “Deploy Documentation” ran but failed, open that run and fix the error shown in the logs. If it succeeded, wait a minute or two for GitHub Pages to update and try a hard refresh (Ctrl+Shift+R / Cmd+Shift+R) or a private window to avoid cache.
131133
- **“Notify docs deploy” succeeded in PlanExe, but no “Deploy Documentation” run appears in PlanExe-docs?** The dispatch API may have rejected the request (e.g. 403). Fine-grained tokens need **Contents: Read and write** on PlanExe-docs; **Actions** alone is not enough. Update the token with that permission and update **`PLANEXE_DOCS_DISPATCH_TOKEN`** in the PlanExe repo. After the change, the PlanExe workflow fails the job and prints the API response when the dispatch is rejected, so the exact error will appear in [PlanExe Actions](https://github.com/PlanExeOrg/PlanExe/actions).
132134

133135
## Configuration
@@ -136,15 +138,15 @@ The MkDocs configuration is in `mkdocs.yml`. Key settings:
136138

137139
- **Site URL**: https://docs.planexe.org
138140
- **Theme**: Material for MkDocs
139-
- **Source**: Points to PlanExe repo's `docs` directory
141+
- **Source**: Points to PlanExe2 repo's `docs/website` directory
140142

141143
## Contributing
142144

143145
To contribute to the documentation:
144146

145-
1. Edit files in the [PlanExe repository's `docs` directory](https://github.com/PlanExeOrg/PlanExe/tree/main/docs)
147+
1. Edit files in the [PlanExe2 repository's `docs/website` directory](https://github.com/PlanExeOrg/PlanExe2/tree/main/docs/website)
146148
2. Build and test locally using the instructions above
147-
3. Submit a pull request to the PlanExe repository
149+
3. Submit a pull request to the PlanExe2 repository
148150
4. After merging, rebuild and deploy to this repository
149151

150152
## License

‎build.py‎

Lines changed: 5 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env python3
22
"""
33
Build script for PlanExe documentation.
4-
This script builds the docs from the PlanExe repo and outputs to this repo.
4+
This script builds the docs from the PlanExe2 repo (docs/website/) and outputs to this repo.
55
"""
66

77
import os
@@ -10,7 +10,6 @@
1010
import subprocess
1111
import tempfile
1212
from pathlib import Path
13-
import yaml
1413

1514
# ANSI color codes
1615
GREEN = '\033[0;32m'
@@ -27,19 +26,19 @@ def print_colored(message: str, color: str = NC):
2726
def main():
2827
"""Main build function."""
2928
# Configuration
30-
planexe_repo = Path(os.environ.get("PLANEXE_REPO", "../PlanExe"))
31-
docs_source_dir = os.environ.get("DOCS_SOURCE_DIR", "docs")
29+
planexe_repo = Path(os.environ.get("PLANEXE_REPO", "../PlanExe2"))
30+
docs_source_dir = os.environ.get("DOCS_SOURCE_DIR", "docs/website")
3231
output_dir = "site"
3332

3433
print_colored("Building PlanExe documentation...", GREEN)
3534

3635
# Check if PlanExe repo exists
3736
if not planexe_repo.exists() or not planexe_repo.is_dir():
3837
print_colored(
39-
f"Error: PlanExe repo not found at {planexe_repo}",
38+
f"Error: PlanExe2 repo not found at {planexe_repo}",
4039
RED
4140
)
42-
print("Set PLANEXE_REPO environment variable to point to the PlanExe repository")
41+
print("Set PLANEXE_REPO environment variable to point to the PlanExe2 repository")
4342
sys.exit(1)
4443

4544
# Check if docs source directory exists
@@ -78,95 +77,9 @@ def main():
7877
)
7978
shutil.copytree(docs_source_path, docs_dir, dirs_exist_ok=True)
8079

81-
# Ensure custom CSS for nav status icons exists (PlanExe-docs override).
82-
nav_css_path = docs_dir / "assets" / "stylesheets" / "nav-status.css"
83-
nav_css_path.parent.mkdir(parents=True, exist_ok=True)
84-
nav_css_path.write_text(
85-
".md-nav__link .md-status--proposal { display: none; }\n",
86-
encoding="utf-8",
87-
)
88-
89-
# Copy component READMEs into docs/developer/ so they are part of the built docs
90-
developer_dir = docs_dir / "developer"
91-
developer_dir.mkdir(exist_ok=True)
92-
component_readmes = [
93-
("open_dir_server", "README.md"),
94-
("worker_plan", "README.md"),
95-
("frontend_single_user", "README.md"),
96-
("database_postgres", "README.md"),
97-
("worker_plan_database", "README.md"),
98-
("frontend_multi_user", "README.md"),
99-
("mcp_local", "README.md"),
100-
("mcp_cloud", "README.md"),
101-
]
102-
for component, readme_name in component_readmes:
103-
src = planexe_repo / component / readme_name
104-
dst = developer_dir / f"{component}.md"
105-
if src.exists():
106-
shutil.copy2(src, dst)
107-
else:
108-
print_colored(
109-
f"Warning: {src} not found, skipping for docs",
110-
YELLOW
111-
)
112-
11380
# Copy mkdocs.yml to temp directory
11481
shutil.copy2(mkdocs_yml, temp_docs_path / "mkdocs.yml")
11582

116-
# Inject proposals into nav (alphabetical) if proposals dir exists.
117-
proposals_dir = docs_dir / "proposals"
118-
if proposals_dir.exists():
119-
class _IgnoreUnknownTagLoader(yaml.SafeLoader):
120-
pass
121-
122-
def _construct_undefined(loader, node):
123-
return node.value
124-
125-
_IgnoreUnknownTagLoader.add_constructor(None, _construct_undefined)
126-
127-
mkdocs_temp_path = temp_docs_path / "mkdocs.yml"
128-
with open(mkdocs_temp_path, "r") as f:
129-
mkdocs_config = yaml.load(f, Loader=_IgnoreUnknownTagLoader)
130-
131-
def _collect_proposals(directory: Path, url_prefix: str) -> list:
132-
entries = []
133-
files = sorted(
134-
[
135-
p for p in directory.glob("*.md")
136-
if p.name.lower() != "agents.md"
137-
],
138-
key=lambda p: p.name.lower(),
139-
)
140-
for proposal_path in files:
141-
title = proposal_path.stem.replace("_", " ").replace("-", " ").strip()
142-
entries.append({title: f"{url_prefix}{proposal_path.name}"})
143-
return entries
144-
145-
proposals_nav = _collect_proposals(proposals_dir, "proposals/")
146-
147-
for subdir_name, label in (("archive", "Archive"), ("done", "Done")):
148-
subdir = proposals_dir / subdir_name
149-
if subdir.exists():
150-
sub_entries = _collect_proposals(subdir, f"proposals/{subdir_name}/")
151-
if sub_entries:
152-
proposals_nav.append({label: sub_entries})
153-
154-
nav = mkdocs_config.get("nav", [])
155-
for entry in nav:
156-
if isinstance(entry, dict) and "Development" in entry:
157-
dev_items = entry["Development"]
158-
if isinstance(dev_items, list):
159-
dev_items = [
160-
item for item in dev_items
161-
if not (isinstance(item, dict) and "Proposals" in item)
162-
]
163-
dev_items.append({"Proposals": proposals_nav})
164-
entry["Development"] = dev_items
165-
break
166-
167-
with open(mkdocs_temp_path, "w") as f:
168-
yaml.safe_dump(mkdocs_config, f, sort_keys=False)
169-
17083
# Build the documentation
17184
print_colored("Building with mkdocs...", YELLOW)
17285

‎mkdocs.yml‎

Lines changed: 9 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,16 @@
1-
site_name: PlanExe Documentation
1+
site_name: PlanExe2 Documentation
22
site_description: From a single goal statement to a full strategic plan. Free and open source.
33
site_url: https://docs.planexe.org
4-
repo_url: https://github.com/PlanExeOrg/PlanExe
5-
repo_name: PlanExeOrg/PlanExe
6-
edit_uri: edit/main/docs/
4+
repo_url: https://github.com/PlanExeOrg/PlanExe2
5+
repo_name: PlanExeOrg/PlanExe2
6+
edit_uri: edit/main/docs/website/
77

88
nav:
9-
- Getting started:
10-
- Welcome: index.md
11-
- Start here: start_here.md
12-
- Getting started: getting_started.md
13-
- Prompt writing guide: prompt_writing_guide.md
14-
- Plan output anatomy: plan_output_anatomy.md
15-
- Costs and models: costs_and_models.md
16-
- FAQ: faq.md
17-
- Statistics: statistics.md
18-
- MCP:
19-
- Welcome: mcp/mcp_welcome.md
20-
- MCP setup: mcp/mcp_setup.md
21-
- MCP registry publishing: mcp/mcp_registry.md
22-
- MCP Inspector: mcp/inspector.md
23-
- Claude: mcp/claude.md
24-
- Cursor: mcp/cursor.md
25-
- Codex: mcp/codex.md
26-
- Antigravity: mcp/antigravity.md
27-
- Windsurf: mcp/windsurf.md
28-
- LM Studio: mcp/lm_studio.md
29-
- MCP details: mcp/mcp_details.md
30-
- MCP troubleshooting: mcp/mcp_troubleshooting.md
31-
- PlanExe MCP interface: mcp/planexe_mcp_interface.md
32-
- Autonomous agent guide: mcp/autonomous_agent_guide.md
33-
- Development:
34-
- Developer plan: plan.md
35-
- Docker: docker.md
36-
- Developer install: install_developer.md
37-
- OAuth setup: oauth.md
38-
- LLM config: llm_config.md
39-
- Token counting: token_counting.md
40-
- Components:
41-
- open_dir_server: developer/open_dir_server.md
42-
- worker_plan: developer/worker_plan.md
43-
- frontend_single_user: developer/frontend_single_user.md
44-
- database_postgres: developer/database_postgres.md
45-
- worker_plan_database: developer/worker_plan_database.md
46-
- frontend_multi_user: developer/frontend_multi_user.md
47-
- mcp_local: developer/mcp_local.md
48-
- mcp_cloud: developer/mcp_cloud.md
49-
- AI providers:
50-
- OpenRouter: ai_providers/openrouter.md
51-
- Anthropic: ai_providers/anthropic.md
52-
- Ollama: ai_providers/ollama.md
53-
- LM Studio: ai_providers/lm_studio.md
54-
- Mistral: ai_providers/mistral.md
55-
- Status: status.md
56-
- Railway: railway.md
57-
- Deployment and hosting: deployment_hosting.md
58-
- Docs style guide: docs_style_guide.md
59-
- Troubleshooting:
60-
- Stuck pipeline: troubleshooting_stuck_pipeline.md
9+
- Welcome: index.md
10+
- Getting started: getting_started.md
11+
- The report: report.md
12+
- Commands: commands.md
13+
- How it works: how_it_works.md
6114

6215
theme:
6316
name: material
@@ -114,7 +67,6 @@ extra_javascript:
11467

11568
extra_css:
11669
- assets/stylesheets/copy-all.css
117-
- assets/stylesheets/nav-status.css
11870

11971
extra:
12072
analytics:

0 commit comments

Comments
 (0)