@se-studio/skills 1.9.16 → 1.9.17
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
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @se-studio/skills
|
|
2
2
|
|
|
3
|
+
## 1.9.17
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d645ee4: Document both person URL shapes. The legacy generator uses `/peopleType/[peopleType]/[person]`. The section generator uses a static `/{peopleSlug}/{type}/[person]`.
|
|
8
|
+
|
|
3
9
|
## 1.9.16
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -31,10 +31,14 @@ export default function CmsRoutesLayout({ children }: { children: React.ReactNod
|
|
|
31
31
|
| `/{slug1}/{slug2}/...` | `[level1]/[...slugs]/page.ts` | Multi-level pages |
|
|
32
32
|
| `/articles/` | `articles/page.ts` | Articles index (uses ARTICLES_BASE) |
|
|
33
33
|
| `/articles/{type}/` | `articles/[articleType]/page.ts` | Article type index |
|
|
34
|
-
| `/articles/{type}/{tag}/` | `articles/[articleType]/[tag]/page.ts` | Article type + tag index.
|
|
34
|
+
| `/articles/{type}/{tag}/` | `articles/[articleType]/[tag]/page.ts` | Article type + tag index. Generated when that base sets `tagInPath: true`. |
|
|
35
35
|
| `/articles/{type}/{tag}/{article}/` | `articles/[articleType]/[tag]/[...slugs]/page.ts` | Individual article with a tag segment. Same `tagInPath` rule. |
|
|
36
36
|
| `/tags/`, `/tags/{tag}/` | `tags/` | Tag index when `tags: true` |
|
|
37
|
-
| `/people
|
|
37
|
+
| `/people/` | `people/page.ts` | People index when `personBases[].index` is on |
|
|
38
|
+
| `/people/{person}/` | `people/[person]/page.ts` | Legacy person with no person type. No redirect to the typed URL |
|
|
39
|
+
| `/peopleType/{peopleType}/{person}/` | `peopleType/[peopleType]/[person]/page.ts` | Legacy person with a person type. The type segment is dynamic so it does not sit beside `people/[person]` |
|
|
40
|
+
| `/{peopleSlug}/{type}/`, `/{peopleSlug}/{type}/{person}/` | `{peopleSlug}/{type}/page.ts`, `{peopleSlug}/{type}/[person]/page.ts` | Section generator. The type segment is the person type slug, not `[peopleType]`. With no person prefix the folders are `/{type}/` and `/{type}/[person]/` |
|
|
41
|
+
| `/people/{type}/`, `/people/{type}/{person}/` | `people/{type}/` | Extra folders for each name in `personBases[].types` |
|
|
38
42
|
|
|
39
43
|
Base paths come from `@/lib/constants` (e.g. ARTICLES_BASE = `/learning-hub` or `/articles`).
|
|
40
44
|
|
|
@@ -99,7 +103,7 @@ export default async function (props: PageProps<'/[level1]'>) {
|
|
|
99
103
|
}
|
|
100
104
|
```
|
|
101
105
|
|
|
102
|
-
A dynamic `articles` route uses `converterContext.urlCalculators` (`article`, `articleType`, `articleTypeTag`). Import `converterContext` from `@/lib/converter-context` when that module exists (so route files don't pull in cms-server); otherwise from `@/lib/cms-server`. A fixed article folder, and a dynamic base whose path is not `articles`, passes the path of
|
|
106
|
+
A dynamic `articles` route uses `converterContext.urlCalculators` (`article`, `articleType`, `articleTypeTag`). Import `converterContext` from `@/lib/converter-context` when that module exists (so route files don't pull in cms-server); otherwise from `@/lib/cms-server`. A fixed article folder, and a dynamic base whose path is not `articles`, passes the path of the file that was written (`/work/`, `/work/${articleSlug}/`). `article()` prefixes `ARTICLES_BASE` and, when primary tags are on, inserts `other`. That is a different URL from the file that was written. The generator writes `[tag]` pages with `articleTypeTag` when `tagInPath` is true. Feature flags live in `marketing-routes.json` and `src/generated/marketing-flags.ts`. The legacy generator writes a typed person at `/peopleType/${peopleType}/${slug}/`. The section generator writes a static `/${peopleSlug}/${type}/${slug}/`, or `/${type}/${slug}/` when there is no person prefix. A person with no type is `/${peopleSlug}/${slug}/`. Neither route redirects to the other. `[level1]` stays a generic page.
|
|
103
107
|
|
|
104
108
|
## See Also
|
|
105
109
|
|
|
@@ -41,12 +41,10 @@ export const customerName = '...';
|
|
|
41
41
|
export const applicationName = '...';
|
|
42
42
|
export const siteTitle = '...';
|
|
43
43
|
export const siteDescription = '...';
|
|
44
|
-
export const enablePerson = false;
|
|
45
|
-
export const enablePeopleIndex = false;
|
|
46
|
-
export const enableTag = false;
|
|
47
|
-
export const enableTagsIndex = false;
|
|
48
44
|
```
|
|
49
45
|
|
|
46
|
+
`enablePerson`, `enablePeopleIndex`, `enableTag`, `enableTagsIndex`, `enableArticleTypeIndex`, `enableArticleTypeTagIndex`, and `enablePrimaryTagPartOfSlug` live in `src/lib/marketing-routes.json`. `scripts/generate-marketing-routes.mjs` writes `src/generated/marketing-flags.ts`.
|
|
47
|
+
|
|
50
48
|
## Data Flow
|
|
51
49
|
|
|
52
50
|
```
|