memi-board 0.30.2 → 0.32.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/README.md CHANGED
@@ -81,7 +81,7 @@ export default defineNuxtConfig({
81
81
  moderateImages: false,
82
82
  useLimitedUseAppCheckTokens: false,
83
83
  // localBlocklist: ['금칙어'],
84
- // blockBanThreshold: 3,
84
+ // blockBanThreshold: 10,
85
85
  // blockBanDecayMs: 24 * 60 * 60 * 1000,
86
86
  },
87
87
  // 공유 미리보기(OG) — 호스트 API 없이 패키지 composable 사용
@@ -377,7 +377,8 @@ const router = useRouter()
377
377
  **Editor props:** `postId`(수정), `fixedCategory`(path 고정 시 선택 UI 숨김)
378
378
  본문은 Nuxt UI **`UEditor`**(TipTap, `content-type="html"`). 호스트 `@nuxt/ui` 4.x 에 Editor 포함 필요.
379
379
 
380
- **에디터 이미지:** 툴바 / 붙여넣기 / 드롭 → Firebase Storage
380
+ **에디터 이미지:** 툴바에서 기기 파일 또는 외부 HTTPS 이미지 URL을 추가할 수 있고, 붙여넣기 / 드롭 파일은 Firebase Storage에 업로드한다. 외부 URL은 Storage에 복사하지 않으며 원본이 삭제되거나 핫링크가 차단되면 표시되지 않는다. 첫 본문 이미지는 업로드·외부 링크 구분 없이 목록과 공유 대표 이미지로 사용한다.
381
+
381
382
  `memiBoardPosts/{postId}/images/*` + `.../images/thumbnails/*` (최적화 이미지+썸네일).
382
383
  글 문서는 아직 없을 수 있고, 붙여넣기는 `image/png` 등이 온다. Storage 예시 규칙은 쓰기를 **로그인 + 5MB + `image/*`** 로 본다. 규칙은 **앱 `storageBucket`과 같은 버킷**에 배포해야 한다.
383
384
 
@@ -439,11 +440,18 @@ const router = useRouter()
439
440
  | `onError` | `'allow'` | AI 실패 시 `'block'` 이면 저장 거부 |
440
441
  | `localBlocklist` | `[]` | 기본 목록에 문자열 추가 |
441
442
  | `useLimitedUseAppCheckTokens` | `true` | `false`면 일반 App Check 세션 토큰 |
442
- | `blockBanThreshold` | `3` | 콘텐츠 차단(local/ai) 누적 이상이면 글·댓글 제한. `0` = off |
443
+ | `blockBanThreshold` | `10` | 콘텐츠 차단(local/ai) 누적 이상이면 글·댓글 제한. `0` = off |
443
444
  | `blockBanDecayMs` | `86400000` | 경고 1회 차감 간격(기본 24h) |
444
445
 
445
446
  콘텐츠 차단이 누적되면 `memiBoardUsers/{uid}` 에 `moderationBlockCount` / `moderationBlockAt` 이 기록된다.
446
- 3회면 약 하루 동안 작성 불가(24h마다 1 차감). Rules 예시에서 본인은 **+1만** 가능하고 감소·리셋은 admin.
447
+ 10회면 약 하루 동안 작성 불가(24h마다 1 차감). Rules 예시에서 본인은 **+1만** 가능하고 감소·리셋은 admin.
448
+
449
+ ### AI 글쓰기 도우미 사용 제한
450
+
451
+ 에디터의 AI 글쓰기 도우미는 로그인 사용자별 24시간 구간에 최대 **10회** 사용할 수 있다.
452
+ `memiBoardUsers/{uid}`의 `aiWritingCount` / `aiWritingWindowAt`을 Firestore 트랜잭션으로 갱신하므로 여러 탭에서 동시에 실행해도 제한을 넘지 않는다.
453
+
454
+ 호스트는 반드시 최신 `docs/firestore.rules.example`의 `memiBoardUsers/{uid}` 규칙을 실제 Firestore Rules에 병합·배포해야 한다. 규칙을 배포하지 않으면 클라이언트가 카운터를 임의로 수정해 제한을 우회할 수 있다.
447
455
 
448
456
  콘솔에서 **AI Logic(Gemini Developer API)** 활성화. 신규 프로젝트는 구형 `gemini-2.5-flash` 가 404 날 수 있음 → 3.x Flash / Flash-Lite 사용.
449
457
 
@@ -0,0 +1,13 @@
1
+ export declare const WRITING_ASSISTANT_DAILY_LIMIT = 10;
2
+ export type WritingAssistantAction = 'proofread' | 'polish' | 'continue' | 'summarize' | 'translate-en' | 'translate-ko' | 'title';
3
+ interface WritingAssistantInput {
4
+ action: WritingAssistantAction;
5
+ content: string;
6
+ title?: string;
7
+ selection?: boolean;
8
+ }
9
+ /** 검열과 동일한 Firebase AI Logic 연결을 사용하는 글쓰기 도우미. */
10
+ export declare function useMemiBoardWritingAssistant(): {
11
+ assist: (input: WritingAssistantInput) => Promise<string>;
12
+ };
13
+ export {};
@@ -1,4 +1,4 @@
1
- import { O as e } from "./slugify-CDMIDDCN.js";
1
+ import { O as e } from "./slugify-B5XHr4SZ.js";
2
2
  //#region node_modules/.pnpm/heic2any@0.0.4/node_modules/heic2any/dist/heic2any.js
3
3
  var t = /* @__PURE__ */ e(((e, t) => {
4
4
  (function(n, r, i, a) {
@@ -974,4 +974,4 @@ var t = /* @__PURE__ */ e(((e, t) => {
974
974
  //#endregion
975
975
  export default t();
976
976
 
977
- //# sourceMappingURL=heic2any-BHVEj2CD.js.map
977
+ //# sourceMappingURL=heic2any-BWRKffWN.js.map