yadflow 2.12.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -7
- package/cli/docs.mjs +7 -5
- package/package.json +1 -1
- package/skills/yad-docs-overview/SKILL.md +20 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
# [2.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Bug Fixes
|
|
5
|
-
|
|
6
|
-
* **checks:** harden spec-link + gitlab gate templates ([#69](https://github.com/abdelrahmannasr/yadflow/issues/69)) ([42f3949](https://github.com/abdelrahmannasr/yadflow/commit/42f3949841095624db03cb17f85db3138be8b93b))
|
|
1
|
+
# [2.13.0](https://github.com/abdelrahmannasr/yadflow/compare/v2.12.0...v2.13.0) (2026-06-16)
|
|
7
2
|
|
|
8
3
|
|
|
9
4
|
### Features
|
|
10
5
|
|
|
11
|
-
* **docs:**
|
|
6
|
+
* **docs:** make the report the main documentation, mount the SPA under /app/ ([#71](https://github.com/abdelrahmannasr/yadflow/issues/71)) ([1993e4d](https://github.com/abdelrahmannasr/yadflow/commit/1993e4dc282df281474ca1923acd52dbd1262dcb))
|
|
12
7
|
|
|
13
8
|
# [2.2.0](https://github.com/abdelrahmannasr/yadflow/compare/v2.1.0...v2.2.0) (2026-06-14)
|
|
14
9
|
|
package/cli/docs.mjs
CHANGED
|
@@ -43,11 +43,12 @@ export function deployTargetFromHub(hub = {}) {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// The Vite `base` for one site: join the project base path (from docs.json) with the per-site
|
|
46
|
-
// subpath.
|
|
46
|
+
// subpath. The overview SPA mounts under `app/` so the hand-maintained report.html can own the
|
|
47
|
+
// Pages root (`<base>/`) as the main documentation; per-epic sites nest under epics/<id>/. Always a
|
|
47
48
|
// leading+trailing slash so it works as a Vite base and a router basename.
|
|
48
49
|
export function siteBasePath(docs = {}, { epic, overview } = {}) {
|
|
49
50
|
const root = (docs.basePath || '/').replace(/\/+$/, '') || '';
|
|
50
|
-
const sub = overview ? '' : epic ? `/epics/${epic}` : '';
|
|
51
|
+
const sub = overview ? '/app' : epic ? `/epics/${epic}` : '';
|
|
51
52
|
const joined = `${root}${sub}`.replace(/\/+/g, '/');
|
|
52
53
|
return joined ? `${joined.replace(/\/$/, '')}/` : '/';
|
|
53
54
|
}
|
|
@@ -113,12 +114,13 @@ export function docsStale(manifest, { artifactHash, repoHeads = {}, templateVers
|
|
|
113
114
|
|
|
114
115
|
// ---- pure: the Pages CI workflow (committed by `yad docs sync --wire`) ---------------------------
|
|
115
116
|
// GitHub Actions deploy-pages, or a GitLab `pages` job. Both assemble a single `public/` tree: the
|
|
116
|
-
//
|
|
117
|
-
//
|
|
117
|
+
// hand-maintained report.html owns the root (`<base>/` — the main documentation), the overview SPA
|
|
118
|
+
// mounts under `app/`, and every per-epic site nests under `epics/<id>/` — matching siteBasePath
|
|
119
|
+
// (overview at `<base>/app/`, epics at `<base>/epics/EP-<slug>/`). A concurrency group prevents the
|
|
118
120
|
// deploy from retriggering. The shared shell script keeps the two platforms byte-for-byte aligned.
|
|
119
121
|
const BUILD_PUBLIC = [
|
|
120
122
|
'mkdir -p public',
|
|
121
|
-
'if [ -d docs/sdlc-site ]; then (cd docs/sdlc-site && npm ci && npm run build) && cp -r docs/sdlc-site/dist/. public
|
|
123
|
+
'if [ -d docs/sdlc-site ]; then (cd docs/sdlc-site && npm ci && npm run build) && mkdir -p public/app && cp -r docs/sdlc-site/dist/. public/app/ && cp docs/sdlc-site/public/report.html public/index.html && cp docs/sdlc-site/public/report.html public/report.html; fi',
|
|
122
124
|
'for d in epics/*/docs-site; do [ -d "$d" ] || continue; id=$(basename "$(dirname "$d")"); (cd "$d" && npm ci && npm run build) && mkdir -p "public/epics/$id" && cp -r "$d/dist/." "public/epics/$id/"; done',
|
|
123
125
|
];
|
|
124
126
|
export function pagesWorkflow(platform) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yadflow",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "Yadflow — the gated, team, multi-repo SDLC: author → review → build with a PR-driven review gate and a zero-dependency `yad` CLI (setup, gate, commit, open-pr, ship, repo). A BMAD module + 30 yad-* skills.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "AbdelRahman Nasr",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yad-docs-overview
|
|
3
|
-
description: 'Generates the project-level SDLC-overview interactive site — the same React/Vite/Tailwind shell as the per-epic docs — showing every yadflow stage from setup → ship: the pipeline as a flow canvas, each skill/gate as a flow step, the durable .sdlc state objects as system components, and the lenses as stakeholder roles. Themed with yadflow''s own brand palette for continuity, built from config.yaml + module-help.csv + the overview diagram.
|
|
3
|
+
description: 'Generates the project-level SDLC-overview interactive site — the same React/Vite/Tailwind shell as the per-epic docs — showing every yadflow stage from setup → ship: the pipeline as a flow canvas, each skill/gate as a flow step, the durable .sdlc state objects as system components, and the lenses as stakeholder roles. Themed with yadflow''s own brand palette for continuity, built from config.yaml + module-help.csv + the overview diagram. The hand-maintained report is the MAIN documentation at the Pages root (report.html, also served as index.html); the interactive SPA mounts under `app/` and is reached from it (and links back). Deploys via `yad docs deploy --overview`. This is project documentation, not a gated state — it never touches any epic''s state or approvals. Use when the user says "generate the overview site", "build the SDLC overview docs", or after the pipeline (module-help.csv / config.yaml / skill count) changes.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# SDLC — Author the Overview Site (project-level, the pipeline as a living map)
|
|
@@ -8,8 +8,10 @@ description: 'Generates the project-level SDLC-overview interactive site — the
|
|
|
8
8
|
**Goal:** Render the **whole yadflow pipeline** — every stage from setup → ship — as an interactive site,
|
|
9
9
|
reusing the same shell as the per-epic docs (`skills/yad-docs/templates/app/`). Where `yad-docs`
|
|
10
10
|
animates one epic's flows, this animates the **workflow itself**: the front gates, the build half, the
|
|
11
|
-
automation dial, the setup connectors.
|
|
12
|
-
|
|
11
|
+
automation dial, the setup connectors. The hand-maintained overview report stays the **main
|
|
12
|
+
documentation at the Pages root** (`<base>/`, served from `public/report.html` and `public/index.html`);
|
|
13
|
+
this interactive SPA mounts under `<base>/app/` and is reached from the report — the report links
|
|
14
|
+
forward to `app/`, the app links back to the report root.
|
|
13
15
|
|
|
14
16
|
This is **project documentation, not a gated state** — there is no epic, no `state.json`, no approvals.
|
|
15
17
|
It only reads the pipeline definition and writes a project-level site. When a docs target is connected
|
|
@@ -70,7 +72,8 @@ determinism rules as `yad-docs`: stable-ID sort by skill pipeline order / phase,
|
|
|
70
72
|
timestamps in the data files), theme the `:root` of `index.css` from **yadflow's brand palette** — the
|
|
71
73
|
the legacy report's `:root`: `--accent: #2471a3` and the node colors (`--artifact-*`, `--gate-*`,
|
|
72
74
|
`--earns-*`, `--locked-*`, `--sentinel-*`) — and substitute the Vite base from `.sdlc/docs.json`
|
|
73
|
-
`basePath` (the
|
|
75
|
+
`basePath` **with `app/` appended** (the SPA mounts under `<base>/app/`, e.g. `/<repo>/app/`, so the
|
|
76
|
+
report can own the root). `siteBasePath(docs, { overview: true })` in `cli/docs.mjs` computes this.
|
|
74
77
|
|
|
75
78
|
### Step 4 — Write the overview build manifest (the staleness baseline)
|
|
76
79
|
Write `docs/sdlc-site/.docs-build.json` — `yad-docs-sync` compares against it:
|
|
@@ -91,13 +94,16 @@ doc-shell upgrade triggers a rebuild). `skillCount` rides along in the manifest
|
|
|
91
94
|
— it is **not** a separate hash input, since `module-help.csv` already moves whenever the skill set does.
|
|
92
95
|
Not per-epic artifacts/repo heads.
|
|
93
96
|
|
|
94
|
-
### Step 5 —
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
### Step 5 — The report is the main documentation; the SPA is reached from it
|
|
98
|
+
The hand-maintained static report lives at `docs/sdlc-site/public/report.html` and is the **primary
|
|
99
|
+
documentation at the Pages root**. The deploy (`BUILD_PUBLIC` in `cli/docs.mjs`, mirrored by the Pages CI
|
|
100
|
+
workflow) copies it to **both** `public/index.html` (the landing `<base>/`) and `public/report.html`
|
|
101
|
+
(so the `<base>/report.html` URL keeps working), and copies the built SPA into `public/app/`. Wire the
|
|
102
|
+
two cross-links: the report links **forward** to the interactive map with a relative `app/` href (its
|
|
103
|
+
hero CTA); the app's `TopNavBar` "Full report" link points **back** to the report root
|
|
104
|
+
(`import.meta.env.BASE_URL` with the trailing `app/` stripped). No orphaned `docs/index.html` at the repo
|
|
105
|
+
root. This generalizes the standing rule that feature work hand-updates the report: the overview SPA now
|
|
106
|
+
**regenerates** instead, while the report stays the front door.
|
|
101
107
|
|
|
102
108
|
### Step 6 — Build / deploy (`action`)
|
|
103
109
|
- `action: generate` (default) — generate source + manifest; stop.
|
|
@@ -106,8 +112,9 @@ report: the overview site now **regenerates** instead.
|
|
|
106
112
|
|
|
107
113
|
### Step 7 — Stop. Report (no gate, no epic)
|
|
108
114
|
Report: the site path (`docs/sdlc-site/`), the data files produced, that the theme is the yadflow brand
|
|
109
|
-
palette, the deploy URL or "build-only", the staleness baseline, and that the
|
|
110
|
-
at `public/
|
|
115
|
+
palette, the deploy URL or "build-only", the staleness baseline, and that the report is the main
|
|
116
|
+
documentation at `<base>/` (`public/index.html` + `public/report.html`) with the interactive SPA mounted
|
|
117
|
+
under `<base>/app/` and cross-linked. Never touches any epic state.
|
|
111
118
|
|
|
112
119
|
## Hard rules
|
|
113
120
|
|