@yoonion/mimi-seed-mcp 0.9.2 → 0.9.3

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.
@@ -141,13 +141,20 @@ export async function getListing(auth, packageName, language = 'ko-KR') {
141
141
  }
142
142
  // ─── 스토어 리스팅 수정 ───
143
143
  export async function updateListing(auth, packageName, language, data) {
144
+ // ⚠️ edits.listings.update 는 리소스를 **통째로 교체**한다(PUT). requestBody 에 없는 필드는
145
+ // 지워진다 — 특히 `video`(스토어 프로모 영상)는 이 함수의 시그니처에 아예 없으므로,
146
+ // "제목만 바꾸기"가 조용히 앱의 프로모 영상을 삭제한다. patch 는 넘긴 필드만 부분 갱신한다.
147
+ //
148
+ // undefined 를 걸러내는 이유: 호출자가 title 만 준 경우 { shortDescription: undefined } 가
149
+ // 그대로 실려 나가면 patch 라도 해당 필드를 비우려는 의도로 해석될 여지가 있다.
150
+ const requestBody = Object.fromEntries(Object.entries(data).filter(([, v]) => v !== undefined));
144
151
  return withEdit(auth, packageName, async (editId) => {
145
- const updated = await publisher().edits.listings.update({
152
+ const updated = await publisher().edits.listings.patch({
146
153
  auth,
147
154
  packageName,
148
155
  editId,
149
156
  language,
150
- requestBody: data,
157
+ requestBody,
151
158
  });
152
159
  return updated.data;
153
160
  }, true);
@@ -59,7 +59,7 @@ export function registerPlaystoreTools(server) {
59
59
  const listing = await playstore.getListing(auth, packageName, language);
60
60
  return { content: [{ type: 'text', text: JSON.stringify(listing, null, 2) }] };
61
61
  });
62
- server.tool('playstore_update_listing', 'Google Play 스토어 리스팅 수정 (제목, 설명문 변경). ⚠️ Play API 편집과 Console 동시 편집은 충돌 — Console에서 같은 리스팅을 편집·미게시 중이면 그 변경이 덮어써질 수 있음.', {
62
+ server.tool('playstore_update_listing', 'Google Play 스토어 리스팅 수정 (제목, 설명문 변경). 넘긴 필드만 부분 갱신(edits.listings.patch) — 생략한 필드와 프로모 영상(video)은 보존된다. ⚠️ Play API 편집과 Console 동시 편집은 충돌 — Console에서 같은 리스팅을 편집·미게시 중이면 그 변경이 덮어써질 수 있음.', {
63
63
  packageName: z.string().describe('패키지명'),
64
64
  language: z.string().describe('언어 코드 (예: ko-KR, en-US)'),
65
65
  title: z.string().optional().describe('앱 제목 (30자 이내)'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yoonion/mimi-seed-mcp",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "Mimi Seed MCP server — Firebase + AdMob + Google Play + App Store management for Claude Code / Codex / Cursor / any MCP client.",
5
5
  "type": "module",
6
6
  "bin": {