@roottale/cms-mcp 0.75.0 → 0.75.1

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,14 @@
1
1
  # @roottale/cms-mcp
2
2
 
3
+ ## 0.75.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 20431b5: 내용이 공개본과 같은 작업본은 계약 재등록 뒤 자동으로 다시 연결하며 대기 중 수정은 보존합니다.
8
+ 모델의 선택 숨김 조건과 사이트의 화면 표기 규칙을 공개 확인에 반영합니다.
9
+ 표기 규칙이 없는 기존 계약의 checksum은 유지합니다.
10
+ - 13e6da1: 필수 칸의 빈 글자와 공백은 값이 없는 것으로 보고 저장·발행을 거절하는 동작을 문서화합니다.
11
+
3
12
  ## 0.75.0
4
13
 
5
14
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1855,7 +1855,7 @@ function registerTools(server) {
1855
1855
  }
1856
1856
 
1857
1857
  // src/server.ts
1858
- var VERSION = true ? "0.75.0" : "dev";
1858
+ var VERSION = true ? "0.75.1" : "dev";
1859
1859
  var SERVER_INSTRUCTIONS = `
1860
1860
  roottale-cms-mcp\uB294 RootTale CMS\uB97C \uC678\uBD80 \uC0AC\uC774\uD2B8(\uC8FC\uB85C Next.js)\uC5D0 \uC5F0\uB3D9\uD558\uACE0
1861
1861
  \uAE00\xB7\uC378\uB124\uC77C\xB7\uBCF8\uBB38 \uC774\uBBF8\uC9C0\uB97C \uC790\uB3D9\uD654\uD558\uAE30 \uC704\uD55C \uBB38\uC11C\xB7\uC608\uC2DC \uCF54\uB4DC\xB7API tool\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4.
@@ -81,6 +81,7 @@ RootTale의 콘텐츠 관리 단위는 다음과 같습니다.
81
81
  필드 그룹의 `definition`은 필드 배열과 검증 규칙을 담습니다. 정의되지 않은
82
82
  `field_values` 키, 형식이 틀린 값, 다른 사이트 항목을 가리키는 관계 값은 저장되지
83
83
  않습니다.
84
+ 필수 칸에 빈 글자나 공백만 보내도 값이 없는 것으로 보고 저장하지 않습니다.
84
85
 
85
86
  ## 계층형 분류 모델
86
87
 
@@ -579,3 +580,32 @@ ROOT-ADMIN 글 목록·편집 화면의 공개/검수 사이트 열기가 저장
579
580
  시설·의료진 같은 entity와 고정 페이지는 제외하며, 구 collection 연결도 모델의
580
581
  `compatibilityCollectionKey`로 구분한다. 알 수 없는 모델은 표시하지 않는다.
581
582
  모델과 collection이 없는 기존 일반 글·기획 초안은 계속 표시한다.
583
+
584
+ ## 숨김 글과 화면 표기 확인
585
+
586
+ `data_only`·`detail`·`category_tree` presentation은 `listPaths`와 함께
587
+ `hiddenWhen: { field: "hidden", equals: true }`를 선택 선언할 수 있습니다.
588
+ FRONT가 `acf.hidden === true`인 글을 숨기는 경우 사용합니다. 이 조건에 맞는 글은
589
+ 제목으로 공개 여부를 검사하지 않습니다. 삭제 확인(`expect: absent`)으로 바꾸지 않으므로
590
+ 메뉴 등에 같은 글자가 있어도 실패 경보를 만들지 않습니다. 조건이 없거나 숨김을 해제하면
591
+ 기존 확인을 수행합니다. 이 선언 자체가 FRONT에서 글을 숨기지는 않습니다.
592
+
593
+ FRONT가 저장된 제목을 다른 표기로 표시한다면 사이트 콘텐츠 계약에 규칙을 선언합니다.
594
+
595
+ ```json
596
+ {
597
+ "displayTextRewrites": [
598
+ { "pattern": "도수기능치료실", "replacement": "기능회복치료실" }
599
+ ]
600
+ }
601
+ ```
602
+
603
+ 규칙은 순서대로 적용합니다. 최대 20개이며 `pattern`은 200자 이하의 Unicode 정규식
604
+ (`gu`), `replacement`는 `$`를 포함하지 않는 100자 이하 문자열이어야 합니다.
605
+ 잘못된 정규식과 제한 위반은 계약 등록에서 거절합니다. FRONT도 같은 규칙으로 렌더링해야
606
+ 하며 CMS 원문은 바꾸지 않습니다. [표시 예시](../examples/nextjs/connected-content.md#화면-표기-규칙)를 참고하세요.
607
+
608
+ ROOT-ADMIN은 변환된 제목을 확인 항목의 `expectedTitle`에 담아 상세·목록에서 비교합니다.
609
+ 화면과 경보의 글 이름은 원문을 유지합니다. 규칙이 없는 기존 계약은 checksum이 그대로이며,
610
+ 설치 계약을 읽지 못한 경우에는 원문으로 확인합니다. 공통 필드·검색 메타데이터 검사는
611
+ 제목 변환의 대상이 아닙니다. FRONT 코드와 플랫폼 파서를 배포한 뒤 계약 version을 올려 등록하세요.
@@ -106,3 +106,30 @@ HTTPS `*.roottale.app`은 배포 수준에서 검색을 차단한다. 검색·
106
106
  미리보기는 저장된 작업본 ID로 행 주소를 만들고 공개 사이트에는 다음 발행 때 반영된다.
107
107
  행 순번으로 ID를 대신하거나 공개 렌더에서 임시 ID를 생성하지 않는다.
108
108
  자세한 연결 규칙은 [실제화면 콘텐츠 편집](../../docs/visual-content-editing.md)을 따른다.
109
+
110
+ ## 화면 표기 규칙
111
+
112
+ 사이트가 CMS 문구를 다른 표기로 보여 준다면 같은 규칙을 사이트 콘텐츠 계약의
113
+ `displayTextRewrites`에도 선언한다. 다음은 계약에 선언한 배열을 사이트에서 소비하는 예시다.
114
+ 플랫폼 내부에서는 `@roottale/site-content-contract`의 `applyDisplayTextRewrites`가 같은 처리를 한다.
115
+
116
+ ```ts
117
+ const displayTextRewrites = [
118
+ { pattern: "도수기능치료실", replacement: "기능회복치료실" },
119
+ ];
120
+
121
+ // 이 배열을 기존 사이트 계약의 displayTextRewrites에도 포함한다.
122
+ function displayTitle(title: string): string {
123
+ return displayTextRewrites.reduce(
124
+ (text, rule) => text.replace(new RegExp(rule.pattern, "gu"), () => rule.replacement),
125
+ title,
126
+ );
127
+ }
128
+ // JSX: <h2>{displayTitle(post.title)}</h2>
129
+ ```
130
+
131
+ 규칙은 20개 이하, pattern은 200자 이하, replacement는 100자 이하이며 `$`를 허용하지
132
+ 않는다. 계약 파서가 정규식의 `gu` 컴파일도 검사한다. 글 원문과 경보 이름은 유지되고
133
+ 공개 화면 확인만 변환된 제목을 기대한다. FRONT에서 숨기는 히어로 모델이라면
134
+ presentation에 `hiddenWhen: { field: "hidden", equals: true }`도 선언하고 렌더링에서
135
+ `acf.hidden === true`인 항목을 제외한다. 숨김 글은 제목 검사 계획을 만들지 않는다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roottale/cms-mcp",
3
- "version": "0.75.0",
3
+ "version": "0.75.1",
4
4
  "type": "module",
5
5
  "description": "RootTale CMS MCP server and CLI for models, entries, exposures, media, integration docs, and public API access.",
6
6
  "bin": {