@ihabdevteam/core 0.337.0 → 0.339.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.
Files changed (191) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +1 -1
  3. package/dist/components.cjs.js +183 -183
  4. package/dist/components.esm.css +2 -2
  5. package/dist/hooks.cjs.js +3 -3
  6. package/dist/i18n.cjs.js +1 -1
  7. package/dist/ihabdevteam-core.cjs.js +188 -188
  8. package/dist/ihabdevteam-core.d.ts +97 -8
  9. package/dist/logo/Logo_APEB_en.svg +1 -0
  10. package/dist/logo/Logo_APEB_en_mono.svg +1 -0
  11. package/dist/logo/Logo_APEB_ko.svg +1 -0
  12. package/dist/logo/Logo_APEB_ko_mono.svg +1 -0
  13. package/dist/logo/Logo_HTP_en.svg +1 -0
  14. package/dist/logo/Logo_HTP_en_mono.svg +1 -0
  15. package/dist/logo/Logo_HTP_ko.svg +1 -0
  16. package/dist/logo/Logo_HTP_ko_mono.svg +1 -0
  17. package/dist/logo/Logo_IHAB_en.svg +1 -18
  18. package/dist/logo/Logo_IHAB_en_mono.svg +1 -0
  19. package/dist/logo/Logo_IHAB_ko.svg +1 -0
  20. package/dist/logo/Logo_IHAB_ko_mono.svg +1 -0
  21. package/dist/logo/Logo_SL_en.svg +1 -0
  22. package/dist/logo/Logo_SL_en_mono.svg +1 -0
  23. package/dist/logo/Logo_SL_ko.svg +1 -0
  24. package/dist/logo/Logo_SL_ko_mono.svg +1 -0
  25. package/dist/logo/Logo_SpeechEarManager_en.svg +1 -0
  26. package/dist/logo/Logo_SpeechEarManager_en_mono.svg +1 -0
  27. package/dist/logo/Logo_SpeechEarManager_ko.svg +1 -0
  28. package/dist/logo/Logo_SpeechEarManager_ko_mono.svg +1 -0
  29. package/dist/logo/Logo_SpeechEar_en.svg +1 -0
  30. package/dist/logo/Logo_SpeechEar_en_mono.svg +1 -0
  31. package/dist/logo/Logo_SpeechEar_ko.svg +1 -0
  32. package/dist/logo/Logo_SpeechEar_ko_mono.svg +1 -0
  33. package/dist/logo/Logo_VRSL_en.svg +1 -0
  34. package/dist/logo/Logo_VRSL_en_mono.svg +1 -0
  35. package/dist/logo/Logo_VRSL_ko.svg +1 -0
  36. package/dist/logo/Logo_VRSL_ko_mono.svg +1 -0
  37. package/dist/logo/Symbol_APEB.svg +1 -34
  38. package/dist/logo/Symbol_APEB_mono.svg +1 -0
  39. package/dist/logo/Symbol_HTP.svg +1 -14
  40. package/dist/logo/Symbol_HTP_mono.svg +1 -0
  41. package/dist/logo/Symbol_IHAB.svg +1 -14
  42. package/dist/logo/Symbol_IHAB_mono.svg +1 -0
  43. package/dist/logo/Symbol_SL.svg +1 -0
  44. package/dist/logo/Symbol_SL_mono.svg +1 -0
  45. package/dist/logo/Symbol_SpeechEar.svg +1 -0
  46. package/dist/logo/Symbol_SpeechEar_mono.svg +1 -0
  47. package/dist/logo/Symbol_VRSL.svg +1 -0
  48. package/dist/logo/Symbol_VRSL_mono.svg +1 -0
  49. package/dist/packages/core/src/components/BrandLogo.css +48 -0
  50. package/dist/packages/core/src/components/BrandLogo.d.ts +76 -0
  51. package/dist/packages/core/src/components/BrandLogo.js +28 -0
  52. package/dist/packages/core/src/components/Header.js +6 -6
  53. package/dist/packages/core/src/components/PassCard/PassCard.js +27 -22
  54. package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.css +5 -3
  55. package/dist/packages/core/src/components/PassCard/PassCardBgIHAB.js +1 -1
  56. package/dist/packages/core/src/components/PassCard/PassCardBgLeftColorGrid.js +2 -2
  57. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLine.js +1 -1
  58. package/dist/packages/core/src/components/PassCard/PassCardBgSoundLineV1.js +3 -3
  59. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMove.js +8 -3
  60. package/dist/packages/core/src/components/PassCard/PassCardBgSoundMoveV1.js +10 -5
  61. package/dist/packages/core/src/components/PassCard/PassCardBgTalk.js +1 -1
  62. package/dist/packages/core/src/components/PassCard/PassCardBgTalkV1.js +1 -1
  63. package/dist/packages/core/src/components/PassCard/PassCardBgTheme.d.ts +7 -4
  64. package/dist/packages/core/src/components/PassCard/PassCardBgTwoCircle.js +2 -2
  65. package/dist/packages/core/src/components/PassCard/ihabOutlinePath.d.ts +15 -9
  66. package/dist/packages/core/src/components/PassCard/ihabOutlinePath.js +15 -16
  67. package/dist/packages/core/src/components/Table.js +6 -2
  68. package/dist/packages/core/src/components/Training/TrainingWordCard.css +14 -1
  69. package/dist/packages/core/src/components/Training/TrainingWordCard.js +7 -3
  70. package/dist/packages/core/src/components/WordTable.css +11 -6
  71. package/dist/packages/core/src/components/WordTable.js +1 -1
  72. package/dist/packages/core/src/components.d.ts +2 -0
  73. package/dist/packages/core/src/components.js +4 -0
  74. package/dist/packages/core/src/hooks/useInlineSvg.d.ts +34 -0
  75. package/dist/packages/core/src/hooks/useInlineSvg.js +133 -0
  76. package/dist/packages/core/src/hooks.d.ts +1 -0
  77. package/dist/packages/core/src/hooks.js +2 -0
  78. package/dist/packages/core/src/logo/Logo_APEB_en.svg +1 -0
  79. package/dist/packages/core/src/logo/Logo_APEB_en_mono.svg +1 -0
  80. package/dist/packages/core/src/logo/Logo_APEB_ko.svg +1 -0
  81. package/dist/packages/core/src/logo/Logo_APEB_ko_mono.svg +1 -0
  82. package/dist/packages/core/src/logo/Logo_HTP_en.svg +1 -0
  83. package/dist/packages/core/src/logo/Logo_HTP_en_mono.svg +1 -0
  84. package/dist/packages/core/src/logo/Logo_HTP_ko.svg +1 -0
  85. package/dist/packages/core/src/logo/Logo_HTP_ko_mono.svg +1 -0
  86. package/dist/packages/core/src/logo/Logo_IHAB_en.svg +1 -18
  87. package/dist/packages/core/src/logo/Logo_IHAB_en_mono.svg +1 -0
  88. package/dist/packages/core/src/logo/Logo_IHAB_ko.svg +1 -0
  89. package/dist/packages/core/src/logo/Logo_IHAB_ko_mono.svg +1 -0
  90. package/dist/packages/core/src/logo/Logo_SL_en.svg +1 -0
  91. package/dist/packages/core/src/logo/Logo_SL_en_mono.svg +1 -0
  92. package/dist/packages/core/src/logo/Logo_SL_ko.svg +1 -0
  93. package/dist/packages/core/src/logo/Logo_SL_ko_mono.svg +1 -0
  94. package/dist/packages/core/src/logo/Logo_SpeechEarManager_en.svg +1 -0
  95. package/dist/packages/core/src/logo/Logo_SpeechEarManager_en_mono.svg +1 -0
  96. package/dist/packages/core/src/logo/Logo_SpeechEarManager_ko.svg +1 -0
  97. package/dist/packages/core/src/logo/Logo_SpeechEarManager_ko_mono.svg +1 -0
  98. package/dist/packages/core/src/logo/Logo_SpeechEar_en.svg +1 -0
  99. package/dist/packages/core/src/logo/Logo_SpeechEar_en_mono.svg +1 -0
  100. package/dist/packages/core/src/logo/Logo_SpeechEar_ko.svg +1 -0
  101. package/dist/packages/core/src/logo/Logo_SpeechEar_ko_mono.svg +1 -0
  102. package/dist/packages/core/src/logo/Logo_VRSL_en.svg +1 -0
  103. package/dist/packages/core/src/logo/Logo_VRSL_en_mono.svg +1 -0
  104. package/dist/packages/core/src/logo/Logo_VRSL_ko.svg +1 -0
  105. package/dist/packages/core/src/logo/Logo_VRSL_ko_mono.svg +1 -0
  106. package/dist/packages/core/src/logo/Symbol_APEB.svg +1 -34
  107. package/dist/packages/core/src/logo/Symbol_APEB_mono.svg +1 -0
  108. package/dist/packages/core/src/logo/Symbol_HTP.svg +1 -14
  109. package/dist/packages/core/src/logo/Symbol_HTP_mono.svg +1 -0
  110. package/dist/packages/core/src/logo/Symbol_IHAB.svg +1 -14
  111. package/dist/packages/core/src/logo/Symbol_IHAB_mono.svg +1 -0
  112. package/dist/packages/core/src/logo/Symbol_SL.svg +1 -0
  113. package/dist/packages/core/src/logo/Symbol_SL_mono.svg +1 -0
  114. package/dist/packages/core/src/logo/Symbol_SpeechEar.svg +1 -0
  115. package/dist/packages/core/src/logo/Symbol_SpeechEar_mono.svg +1 -0
  116. package/dist/packages/core/src/logo/Symbol_VRSL.svg +1 -0
  117. package/dist/packages/core/src/logo/Symbol_VRSL_mono.svg +1 -0
  118. package/dist/packages/core/src/utils/assets.d.ts +3 -3
  119. package/dist/packages/core/src/utils/assets.js +3 -3
  120. package/dist/packages/core/src/version.d.ts +1 -1
  121. package/dist/packages/core/src/version.js +1 -1
  122. package/dist/utils.cjs.js +1 -1
  123. package/package.json +1 -1
  124. package/dist/logo/Logo_APEB.svg +0 -53
  125. package/dist/logo/Logo_APEB_black.svg +0 -42
  126. package/dist/logo/Logo_APEB_white.svg +0 -42
  127. package/dist/logo/Logo_HTP_kr.svg +0 -21
  128. package/dist/logo/Logo_HTP_kr_black.svg +0 -17
  129. package/dist/logo/Logo_HTP_kr_white.svg +0 -17
  130. package/dist/logo/Logo_IHAB_en_black.svg +0 -14
  131. package/dist/logo/Logo_IHAB_en_white.svg +0 -14
  132. package/dist/logo/Logo_IHAB_kr.svg +0 -18
  133. package/dist/logo/Logo_IHAB_kr_black.svg +0 -14
  134. package/dist/logo/Logo_IHAB_kr_white.svg +0 -14
  135. package/dist/logo/Logo_SDS_kr.svg +0 -22
  136. package/dist/logo/Logo_SDS_kr_black.svg +0 -18
  137. package/dist/logo/Logo_SDS_kr_white.svg +0 -18
  138. package/dist/logo/Logo_speechearManager_kr.svg +0 -20
  139. package/dist/logo/Logo_speechearManager_kr_black.svg +0 -21
  140. package/dist/logo/Logo_speechearManager_kr_textWhite.svg +0 -45
  141. package/dist/logo/Logo_speechearManager_kr_white.svg +0 -21
  142. package/dist/logo/Logo_speechear_kr.svg +0 -17
  143. package/dist/logo/Logo_speechear_kr_black.svg +0 -16
  144. package/dist/logo/Logo_speechear_kr_textWhite.svg +0 -42
  145. package/dist/logo/Logo_speechear_kr_white.svg +0 -16
  146. package/dist/logo/Symbol_APEB_black.svg +0 -15
  147. package/dist/logo/Symbol_APEB_white.svg +0 -15
  148. package/dist/logo/Symbol_HTP_black.svg +0 -10
  149. package/dist/logo/Symbol_HTP_white.svg +0 -10
  150. package/dist/logo/Symbol_IHAB_black.svg +0 -10
  151. package/dist/logo/Symbol_IHAB_white.svg +0 -10
  152. package/dist/logo/Symbol_SDS.svg +0 -14
  153. package/dist/logo/Symbol_SDS_black.svg +0 -10
  154. package/dist/logo/Symbol_SDS_white.svg +0 -10
  155. package/dist/logo/Symbol_speechear.svg +0 -15
  156. package/dist/logo/Symbol_speechear_black.svg +0 -16
  157. package/dist/logo/Symbol_speechear_white.svg +0 -16
  158. package/dist/packages/core/src/logo/Logo_APEB.svg +0 -53
  159. package/dist/packages/core/src/logo/Logo_APEB_black.svg +0 -42
  160. package/dist/packages/core/src/logo/Logo_APEB_white.svg +0 -42
  161. package/dist/packages/core/src/logo/Logo_HTP_kr.svg +0 -21
  162. package/dist/packages/core/src/logo/Logo_HTP_kr_black.svg +0 -17
  163. package/dist/packages/core/src/logo/Logo_HTP_kr_white.svg +0 -17
  164. package/dist/packages/core/src/logo/Logo_IHAB_en_black.svg +0 -14
  165. package/dist/packages/core/src/logo/Logo_IHAB_en_white.svg +0 -14
  166. package/dist/packages/core/src/logo/Logo_IHAB_kr.svg +0 -18
  167. package/dist/packages/core/src/logo/Logo_IHAB_kr_black.svg +0 -14
  168. package/dist/packages/core/src/logo/Logo_IHAB_kr_white.svg +0 -14
  169. package/dist/packages/core/src/logo/Logo_SDS_kr.svg +0 -22
  170. package/dist/packages/core/src/logo/Logo_SDS_kr_black.svg +0 -18
  171. package/dist/packages/core/src/logo/Logo_SDS_kr_white.svg +0 -18
  172. package/dist/packages/core/src/logo/Logo_speechearManager_kr.svg +0 -20
  173. package/dist/packages/core/src/logo/Logo_speechearManager_kr_black.svg +0 -21
  174. package/dist/packages/core/src/logo/Logo_speechearManager_kr_textWhite.svg +0 -45
  175. package/dist/packages/core/src/logo/Logo_speechearManager_kr_white.svg +0 -21
  176. package/dist/packages/core/src/logo/Logo_speechear_kr.svg +0 -17
  177. package/dist/packages/core/src/logo/Logo_speechear_kr_black.svg +0 -16
  178. package/dist/packages/core/src/logo/Logo_speechear_kr_textWhite.svg +0 -42
  179. package/dist/packages/core/src/logo/Logo_speechear_kr_white.svg +0 -16
  180. package/dist/packages/core/src/logo/Symbol_APEB_black.svg +0 -15
  181. package/dist/packages/core/src/logo/Symbol_APEB_white.svg +0 -15
  182. package/dist/packages/core/src/logo/Symbol_HTP_black.svg +0 -10
  183. package/dist/packages/core/src/logo/Symbol_HTP_white.svg +0 -10
  184. package/dist/packages/core/src/logo/Symbol_IHAB_black.svg +0 -10
  185. package/dist/packages/core/src/logo/Symbol_IHAB_white.svg +0 -10
  186. package/dist/packages/core/src/logo/Symbol_SDS.svg +0 -14
  187. package/dist/packages/core/src/logo/Symbol_SDS_black.svg +0 -10
  188. package/dist/packages/core/src/logo/Symbol_SDS_white.svg +0 -10
  189. package/dist/packages/core/src/logo/Symbol_speechear.svg +0 -15
  190. package/dist/packages/core/src/logo/Symbol_speechear_black.svg +0 -16
  191. package/dist/packages/core/src/logo/Symbol_speechear_white.svg +0 -16
package/CHANGELOG.md CHANGED
@@ -7,6 +7,112 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.339.0 — 속에 넣은 로고 둘이 색을 바꿔치기하던 것을 막는다
11
+
12
+ `BrandLogo` 의 `textColor` 길은 svg 를 **문서 속에 넣는다.** 내보낸 로고들이 같은 id 를 쓰고
13
+ 되부르고 있어서, 그 길로 로고 둘을 한 쪽에 놓으면 **뒤엣것이 앞엣것의 그라데이션을 썼다.**
14
+
15
+ ```
16
+ id=linear-gradient 가진 파일 10 그 중 되부르는 파일 10
17
+ id=b 가진 파일 5 그 중 되부르는 파일 5
18
+ ```
19
+
20
+ `url(#X)` 는 **문서 전체**에서 먼저 나온 `X` 에 걸린다. **오류는 안 났다 — 색만 틀렸다.**
21
+ 마스크 비가 틀렸을 때와 같은 꼴의 조용한 결함이고, 이달 들어 같은 꼴을 세 번째 만났다.
22
+
23
+ ### 고친 것
24
+
25
+ - `BrandLogo` 가 속에 넣을 때 **그 로고만의 이름표**를 붙인다(`useId()`). 쓰는 쪽은 아무것도
26
+ 안 바꿔도 된다 — 프롭도 그대로고, 보이는 것도 그대로다.
27
+ - **되부르는 id 만** 바꾼다. `text`·`symbol` 은 아무도 `url(#…)` 로 안 가리켜 겹쳐도 해가 없고,
28
+ 저 둘을 바꾸면 `BrandLogo.css` 의 `[id='text']` 가 못 집어 **글자색이 안 먹는다.**
29
+ - 새 export: `namespaceSvgIds(svg, prefix)` (`hooks/useInlineSvg`).
30
+
31
+ ### 왜 파일을 고치지 않았나
32
+
33
+ 이 svg 들은 디자인 도구에서 내보내는 것이라 고쳐 두면 **다음 내보내기에 돌아오고, 그때는
34
+ 아무도 안 본다.** 그래서 **넣는 그 자리**에서 막았다.
35
+
36
+ ### 못 둘을 세웠다
37
+
38
+ - `test/brandLogoInlineIds.test.tsx` — 로고 둘을 속에 넣어 id 가 겹치지 않는지, 되부름이 제
39
+ 파일 안을 가리키는지, `text` 는 그대로인지. 네 가지로 깨 보고 넷 다 붉어지는 것을 봤다.
40
+ - `test/logoInternalIds.test.ts` — **되부름의 꼴이 아는 둘뿐인지**(`fill="url(#…)"` · `xlink:href`).
41
+ `clip-path`·`mask`·`style` 로 가리키는 꼴이 들어오면 이름표가 안 붙어 **조용히 색이 틀리므로**
42
+ 그때 운다. 뿌리 id 가 파일 이름과 같은 말을 쓰는지도 센다(아직 어긋난 37곳은 **까닭과 함께**
43
+ 적어 두고, 고쳐진 것이 표에 남아 있으면 운다).
44
+ - `test/fileNamesAreAscii.test.ts` — 저장소 파일 이름에 ASCII 밖 글자가 없는지. 맥은 한글을
45
+ 자모로 흩어 적고(NFD) 리눅스·꾸러미는 모아 적어(NFC) **맥에서만 열리는 이름**이 생긴다.
46
+
47
+ ## 0.338.0 — 로고를 새로 받았다 — **이름이 바뀐다(소비자가 고쳐야 한다)**
48
+
49
+ 사장님이 `logo/` 를 새로 내셨다. **이름 규칙과 속 생김새가 둘 다 바뀌었고, 옛 이름은 없다.**
50
+
51
+ ### 바꿔야 하는 이름
52
+
53
+ | 옛 이름 | 새 이름 |
54
+ |---|---|
55
+ | `Logo_speechear_kr.svg` | `Logo_SpeechEar_ko.svg` |
56
+ | `Logo_speechearManager_kr.svg` | `Logo_SpeechEarManager_ko.svg` |
57
+ | `Logo_IHAB_kr.svg` | `Logo_IHAB_ko.svg` |
58
+ | `Logo_SDS_kr.svg` | `Logo_SL_ko.svg` |
59
+ | `Symbol_speechear.svg` | `Symbol_SpeechEar.svg` |
60
+ | `…_white.svg` | `…_mono.svg` |
61
+ | `…_black.svg` · `…_textWhite.svg` | **없다** — 아래 참고 |
62
+
63
+ 규칙은 `Logo_<브랜드>_<ko|en>[_mono].svg` · `Symbol_<브랜드>[_mono].svg` 다.
64
+ 브랜드는 APEB · HTP · IHAB · SL · SpeechEar · SpeechEarManager · VRSL (SDS 가 SL 로, VRSL 이 새로).
65
+
66
+ > **대소문자가 바뀐 것이 있다**(`speechear` → `SpeechEar`). 맥은 안 가리지만 **리눅스는 가린다** —
67
+ > 그쪽 CI 에서만 404 가 난다. 코어도 `git` 에 옛 대소문자가 들어 있어 `git mv` 두 걸음으로 고쳤다.
68
+
69
+ ### 파일로 나누던 색을 **입히는 쪽으로** 바꿨다
70
+
71
+ 파일은 이제 둘이다 — 기본(제 색)과 `_mono`(단일톤, 흰색). 다른 색은 **`BrandLogo`** 가 낸다.
72
+
73
+ ```tsx
74
+ import { BrandLogo } from '@ihabdevteam/core/components'
75
+ <BrandLogo src={logo} alt="말귀 로고" /> // 그대로
76
+ <BrandLogo src={mono} alt="말귀 로고" tone="var(--color-gray)" /> // 한 톤(마스크)
77
+ <BrandLogo src={logo} alt="말귀 로고" textColor="#fff" /> // 글자만 — 마크는 제 색
78
+ ```
79
+
80
+ `textColor` 가 되는 까닭은 새 파일의 속 생김새다 — `<g id="text">` 는 `fill` 이 **없어 물려받고**,
81
+ `<g id="symbol">` 은 **제 색을 들고 있다.** 그래서 속에 넣고 `fill` 만 주면 글자만 바뀐다.
82
+ 속에 넣는 몫은 `useInlineSvg` 에 있다 — 묶음에서는 svg 가 `data:` 라 바로 풀리고, 개발 중에는
83
+ 한 번 받아 쌓아 둔다(컴포넌트는 스스로 바깥에 손을 안 뻗는다).
84
+
85
+ ### 가로 칸을 줄였다 — **비가 크게 바뀐다**
86
+
87
+ 새 파일은 전부 `4000×240` 인데 그림은 x 563~2306 에서 끝나 **가로의 14~58%만** 쓰고 있었다.
88
+ 사장님 지시로 **오른쪽을 20 만 남기고** 줄였다(왼쪽은 안 건드렸다).
89
+
90
+ ```
91
+ 말귀 ko 583.33 · 말귀 en 1301.02 · 매니저 ko 1035.43 · 매니저 en 2067.72
92
+ IHAB ko 891.76 · IHAB en 765.08 · HTP ko 1356.29 · HTP en 1332.72
93
+ SL ko 1498.41 · SL en 2051.48 · APEB ko 1646.80 · APEB en 790.08
94
+ VRSL ko 1768.41 · VRSL en 2326.29 (세로는 전부 240, 심볼은 240×240)
95
+ ```
96
+
97
+ **높이만 주던 자리는 그대로 산다.** 폭을 박아 두었거나 비를 수로 적어 둔 자리는 어긋난다.
98
+
99
+ ### 비를 박아 둔 자리 셋이 **다 틀려 있었다**
100
+
101
+ `WordTable.css` 와 `PassCardBgIHAB.css` 가 `264 / 100`(옛 파일 비)을 들고 있었고, 시험 하나는
102
+ **그 옛 수를 지키라고 우기고** 있었다. 마스크는 비가 틀려도 `contain` 으로 들어맞게 그려
103
+ **아무 오류가 안 난다** — 로고만 작아진다. 셋 다 고치고, CSS 의 비를 **파일과 대조하는** 못을 세웠다.
104
+
105
+ 같은 꼴을 `IHAB_OUTLINE_PATH` 에서도 밟았다 — `Symbol_IHAB` 의 viewBox 가 100 에서 240 으로
106
+ 커져, path 글자만 갈아 끼우면 **아무 오류 없이 2.4배로** 그려질 자리였다. 칸 크기를 함께
107
+ 내보내고 배경이 그것으로 셈하게 했다.
108
+
109
+ ### 못이 두 번 제 몫을 했다
110
+
111
+ - `Logo_APEB_en_mono.svg` 가 칸도 묶음도 달랐다 — 못을 **세운 그날** 잡혔고 다시 받았다.
112
+ - `Symbol_IHAB_mono.svg` 가 **126바이트**로 들어왔다. 꼬리표만 있고 그릴 마디가 없었는데
113
+ 이름·짝·칸이 다 맞아 **다른 못은 전부 초록**이었다. 화면의 빈 네모를 보고서야 알았다.
114
+ 이제 **그릴 마디가 있는지**를 센다(글자 수로는 안 센다 — 꼬리표만 늘어도 커진다).
115
+
10
116
  ## 0.337.0 — 다시 듣기 길이 **스스로 자취를 남긴다**(개발 모드)
11
117
 
12
118
  말귀_1 이 0.336.0 으로 재니 **고친 둘은 섰다**:
@@ -50,6 +156,27 @@ word-tts-speak fetch 0건 ← 0.335.0 의 게으름이 먹는다
50
156
 
51
157
  > 이번에 고친 것은 없다. **못 찾는 것을 못 찾는다고 적고, 찾을 자를 댔다.**
52
158
 
159
+ ### 뒤에 밝혀진 것 — **결함이 아니었다**
160
+
161
+ 0.337.0 의 자취로 말귀_1 이 다섯 줄을 하나씩 눌러 재니, **다섯 다 `끝까지 들었다`** 였다.
162
+ 멈추개는 한 번도 안 불렸고 경고 줄도 없었다.
163
+
164
+ *"이름표가 1.15초에 되돌아간다"* 는 **티가 풀린 것이 아니라 소리가 정상으로 끝난 것**이었다 —
165
+ 낱말이 1초 안팎이라 그만큼에 끝난다. `play@6.43s` 도 **앞서 누른 다른 줄**의 사슬이 늦게 닿은
166
+ 것이었다(자를 걸어 두고 여러 번 누르면서 어느 누름의 자취인지 안 가렸다).
167
+
168
+ **읽어서 못 찾은 까닭은 셋 다 안 돌았기 때문이다.** 코드가 맞았고 관찰이 틀렸다.
169
+
170
+ 차례도 설계대로 선다 — `['raw', 'urlResolver', 'fallbackUrlResolver']`. 앱이 넘긴 주소가
171
+ **첫 차례**(0ms)로 쓰이고, 없는 줄만 리졸버로 간다(16ms). `raw` 로 끝난 넷은 **리졸버를 아예
172
+ 안 묻는다**(0.335.0 의 게으름).
173
+
174
+ ```
175
+ (307) ① 수평 어긋남 0 · ② 기본 변형 · ③ 단추 5/5 · 소리 5/5 · 합성 호출 0건
176
+ ```
177
+
178
+ **자취는 그대로 둔다.** 개발 모드에서만 찍고, 이번에 제 몫을 했다 — 네 번째 짐작을 막았다.
179
+
53
180
  ## 0.336.0 — `playOneShot` 이 **빈 주소를 막고 말한다**
54
181
 
55
182
  말귀_1 이 앱에서 잡았다:
package/README.md CHANGED
@@ -346,7 +346,7 @@ setAssetBaseUrl('https://cdn.example.com/ihab-assets')
346
346
  이후 패키지 내부 로고/배경 이미지는 위 베이스 URL을 기준으로 해석됩니다. 소비자에서 로고를 사용하려면 권장 순서는:
347
347
 
348
348
  1. 앱의 퍼블릭(public) 디렉터리에 로고를 두고 호스팅
349
- 2. 패키지에 포함된 로고를 직접 사용하려면(비권장) `import LogoUrl from '@ihabdevteam/core/logo/Logo_speechear_kr.svg'` 처럼 소비자의 번들러가 처리하도록 import
349
+ 2. 패키지에 포함된 로고를 직접 사용하려면(비권장) `import LogoUrl from '@ihabdevteam/core/logo/Logo_SpeechEar_ko.svg'` 처럼 소비자의 번들러가 처리하도록 import
350
350
 
351
351
  패키지 내 `exports`에 `"./logo/*": "./dist/logo/*"` 매핑을 추가했으나, 번들러/런타임 환경에 따라 서브패스 접근이 제한될 수 있으니 퍼블릭 호스팅을 우선 권장합니다.
352
352