@ihabdevteam/core 0.321.0 → 0.322.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 (56) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/components.cjs.js +3 -3
  3. package/dist/hooks.cjs.js +3 -3
  4. package/dist/i18n.cjs.js +1 -1
  5. package/dist/ihabdevteam-core.cjs.js +5 -5
  6. package/dist/ihabdevteam-core.d.ts +64 -60
  7. package/dist/packages/core/src/components/HearingDeviceInfo.d.ts +5 -5
  8. package/dist/packages/core/src/components/HearingDeviceInfo.js +2 -2
  9. package/dist/packages/core/src/components/PanelRow.d.ts +2 -4
  10. package/dist/packages/core/src/components/PanelRow.js +2 -2
  11. package/dist/packages/core/src/components/Popup/DeviceListPopup.d.ts +4 -8
  12. package/dist/packages/core/src/components/Popup/DeviceListPopup.js +1 -1
  13. package/dist/packages/core/src/components/Popup/DeviceSideTable.js +3 -3
  14. package/dist/packages/core/src/components/Popup/ListPopup.js +3 -3
  15. package/dist/packages/core/src/components/Popup/LoadTablePopup.js +3 -3
  16. package/dist/packages/core/src/components/Training/NoisePlayerContext.d.ts +7 -4
  17. package/dist/packages/core/src/components/Training/TrainingBlock.js +2 -2
  18. package/dist/packages/core/src/components/Training/TrainingPagePopup.js +2 -2
  19. package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +2 -2
  20. package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +2 -2
  21. package/dist/packages/core/src/components/Training/oneShotSound.d.ts +1 -1
  22. package/dist/packages/core/src/components/Training/oneShotSound.js +3 -3
  23. package/dist/packages/core/src/components/Training/stepAnswerable.d.ts +2 -2
  24. package/dist/packages/core/src/components/Training/trainingMissStats.js +2 -2
  25. package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +9 -9
  26. package/dist/packages/core/src/components/Word/wordScoreStats.js +2 -2
  27. package/dist/packages/core/src/components/Word/wordTableRecommend.js +2 -2
  28. package/dist/packages/core/src/components/wordTableLayout.d.ts +5 -3
  29. package/dist/packages/core/src/hooks/inputModality.d.ts +1 -1
  30. package/dist/packages/core/src/hooks/inputModality.js +1 -1
  31. package/dist/packages/core/src/hooks/useDeviceManagement.d.ts +5 -17
  32. package/dist/packages/core/src/hooks/useDeviceManagement.js +20 -8
  33. package/dist/packages/core/src/hooks/usePageResetOnChange.d.ts +3 -3
  34. package/dist/packages/core/src/hooks/usePageResetOnChange.js +6 -6
  35. package/dist/packages/core/src/hooks/useTablePaging.d.ts +16 -5
  36. package/dist/packages/core/src/hooks/useTablePaging.js +20 -9
  37. package/dist/packages/core/src/hooks/useWordTrainingFilter.d.ts +3 -1
  38. package/dist/packages/core/src/hooks/useWordTrainingFilter.js +7 -5
  39. package/dist/packages/core/src/utils/devWarn.d.ts +2 -2
  40. package/dist/packages/core/src/utils/devWarn.js +5 -5
  41. package/dist/packages/core/src/utils/filterPanelSummary.d.ts +1 -1
  42. package/dist/packages/core/src/utils/filterPanelSummary.js +4 -4
  43. package/dist/packages/core/src/utils/navScroll.d.ts +2 -2
  44. package/dist/packages/core/src/utils/navScroll.js +4 -4
  45. package/dist/packages/core/src/utils/pressable.d.ts +1 -1
  46. package/dist/packages/core/src/utils/pressable.js +3 -3
  47. package/dist/packages/core/src/utils/sessionTab.d.ts +7 -7
  48. package/dist/packages/core/src/utils/sessionTab.js +9 -9
  49. package/dist/packages/core/src/utils/textSort.d.ts +15 -5
  50. package/dist/packages/core/src/utils/textSort.js +19 -9
  51. package/dist/packages/core/src/utils/wordAttributeFilterCodes.d.ts +2 -2
  52. package/dist/packages/core/src/utils/wordAttributeFilterCodes.js +3 -3
  53. package/dist/packages/core/src/version.d.ts +1 -1
  54. package/dist/packages/core/src/version.js +1 -1
  55. package/dist/utils.cjs.js +1 -1
  56. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,106 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.322.0 — 공개 API 를 영어로
11
+
12
+ ### 공개 API 의 이름을 영어로 — **값은 그대로**(그날 아침)
13
+
14
+ 안쪽은 한글로 쓰는 저장소지만, **배포 `d.ts` 는 소비자 편집기에 그대로 보인다.** 거기 한글로
15
+ 나가던 자리를 영어로 돌렸다(사장님 지시 2026-10-13). **옮기기 전에 사용처를 먼저 셌다** —
16
+ 소리방향성·kscan 은 모든 이름에서 0 이다.
17
+
18
+ | 자리 | 전 | 후 | 소비자 사용처 |
19
+ |---|---|---|---|
20
+ | `effectiveSpeechVolume`·`effectiveNoiseVolume`·`noiseElementVolume` 이 받는 타입 | `비율설정` | `SpeechVolumeSettings` | 0 — 타입 이름을 적는 곳이 없다 |
21
+ | `posLabels`·`wordTypeLabels` 가 받는 타입 | `번역` | `Translate` | 0 |
22
+ | 등급 설명 줄 | `등급설명` | `gradeDescriptions` | 0 — 말귀의 같은 이름 함수는 제 지역 것이다(`./gradeInfoLines`) |
23
+ | `HearingDeviceInfo`·`PanelRow`·`DeviceListPopup` 의 `devices`·`deviceHistory` | `{ 좌: …; 우: … }` | `Record<DeviceSide, …>` | 모양만 바뀌어 호출부는 그대로 |
24
+ | `useTableSort()` 가 돌려주는 것 | `{ 정렬, 칸 }` | `{ sort, field }` + 옛 이름 유지 | 말귀 **77 줄** — 한 번에 걷으면 통째로 빨개진다 |
25
+
26
+ **`useTableSort` 는 영어 이름을 더하고 한글 이름을 `@deprecated` 로 남겼다** — `sort`·`field`
27
+ 가 정본이고 `정렬`·`칸` 은 같은 값을 가리킨다. 소비자가 옮긴 뒤 걷는다. 그래서 이번 판은
28
+ **아무 호출부도 안 깨진다.**
29
+
30
+ **`DeviceSide = '좌' | '우'` 는 그대로다 — 그것은 이름이 아니라 값이다.** 서버의 `side` 열과
31
+ 그대로 오가는 자료라(말귀 `direction` ↔ `row.side`, 앱·어드민 **21 파일·80 줄**이 그 값을
32
+ 적는다) 바꾸려면 **DB 결정**이 필요하다. 칸 사이 선 값(`'표시'`·`'점선'`·`'코너'`·`'미표시'`)도
33
+ 같은 몫으로 뒀다. **그날 저녁 `DeviceSide` 에 결정이 나 값까지 옮겼다 — 아래 절을 본다.**
34
+
35
+ 다시 생기지 않게 문을 뒀다(`test/publicApiEnglishNames1013.test.ts`) — **주석을 걷고** 한글
36
+ 선언·인자 이름을 세고, 옛 이름으로 남겨 둔 것만 허락하며, **옛 이름 옆에 영어 이름이 함께
37
+ 있는지**와 `DeviceSide` 값이 그대로인지까지 본다. (이 못은 처음에 배포 `d.ts` 를 셌다 —
38
+ **헌 몸을 보고 있었다.** 같은 날 말귀가 짚어 소스를 세도록 고쳤다. 아래 ★ 를 본다.)
39
+
40
+ ### 남은 공개 한글 이름 일곱 + 서명 속 인자 열 — 말귀가 세어 왔다
41
+
42
+ 아침에 다섯 자리를 옮긴 뒤 **말귀가 링크를 걸고 다시 셌다**(2026-10-13). 일곱이 더 있었다.
43
+ 제 저장소 식별자를 통째로 영어로 옮기는 중이라(1,884파일·7,149이름) 코어 쪽 자리도 함께 짚어 왔다.
44
+
45
+ | 이름 | 자리 | 전 → 후 | 들여오는 소비자 |
46
+ |---|---|---|---|
47
+ | 칸 견주개 | `utils/textSort.ts` | `칸순` → **`compareCell`** | 말귀 `import` **5줄** — 옛 이름 남김 |
48
+ | 빈 값 뒤로 | `utils/textSort.ts` | `칸순빈값뒤` → **`compareCellBlankLast`** | 0 |
49
+ | 한국어 차례 | `utils/textSort.ts` | `한글순` → **`compareKorean`** | 0 |
50
+ | 등급 빔 판정 | `utils/wordAttributeFilterCodes.ts` | `빈등급인가` → **`isBlankGrade`** | 0 |
51
+ | 기본 통 고르개 | `utils/navScroll.ts` | `기본통고르개` → **`DEFAULT_SCROLL_SELECTOR`** | 0 |
52
+ | 단계 상태 타입 | `components/Training/stepAnswerable.ts` | `단계상태` → **`StepState`** | 0 |
53
+ | 마지막 입력 | `hooks/inputModality.ts` | `키보드로눌렀나` → **`wasKeyboardPress`** | 0 |
54
+
55
+ **`칸순` 만 영어 이름을 더하고 옛 이름을 `@deprecated` 로 남겼다** — 나머지 여섯은 코어 바깥에
56
+ 쓰는 데가 없어 그냥 바꿨다. 내 쪽에서도 세어 보고 옮겼다: 말귀 `src` 의 `import` 5줄,
57
+ 어드민의 세 줄은 **주석**이고, kscan·소리방향성은 **파일 0개**다.
58
+
59
+ **서명 속 인자·멤버 이름 열도 영어로.** 안 깨지지만 소비자 편집기 툴팁에 그대로 뜨던 자리다 —
60
+ `buildFilterSummary(…, allLabel)` · `isSessionForThisTab(incoming, thisTab)` ·
61
+ `devWarnOnce(key, …args)` · `scrollNavTargetToTop(…, from)` · `pressable(…, options)` ·
62
+ `usePageResetOnChange(key, …)` · `useTableSort().sortRows(rows, getValue)`.
63
+
64
+ ### `DeviceSide` 의 **값**을 영어로 — `'좌' | '우'` → `'left' | 'right'`
65
+
66
+ **이것은 이름이 아니라 값이다.** 서버 `managed_device.direction` 열에 그대로 오가는 자료라
67
+ 코어가 혼자 정할 수 없어 아침에는 손대지 않고 **사장님 판단거리로 올렸다.** 그 사이 말귀가
68
+ 라이브를 읽어 왔다 — 그 값을 담는 열은 **하나**(`public.managed_device.direction`, text,
69
+ nullable), 줄은 **15줄**(`좌` 9 · `우` 6), CHECK 제약 **없음**, 그 값을 보는 함수 **0개**,
70
+ 정책·색인은 값에 안 기댄다. **바꾸는 값이 `UPDATE` 두 줄**이라는 것을 알고 정하셨다
71
+ (2026-10-13 사장님 지시 "left, right 로 바꾸고 계속 진행해").
72
+
73
+ **가름이 틀렸던 것이 아니라, 가름 덕에 결정을 기다릴 수 있었다.**
74
+
75
+ | 바뀐 것 | 안 바뀐 것 |
76
+ |---|---|
77
+ | `DeviceSide` · `useDeviceManagement` 의 `Side` 타입 값 | **화면에 찍히는 글자** — 사전이 쥔다(`t('device.direction.left', '좌')`) |
78
+ | `devices` · `deviceHistory` 의 열쇠(`{ left, right }`) | 사전 열쇠 `device.direction.left`·`.right` |
79
+ | `DeviceRow.side` · `onAddDevice`·`onOpenList`·`onRemoveDevice`·`onRelease` 가 주는 값 | `DeviceForm.direction` 의 타입(`string` 그대로) |
80
+
81
+ `'좌'`·`'우'` 가 코어에 남은 자리는 **사전이 빌 때의 되돌이 글자** 셋뿐이다(`HearingDeviceInfo`
82
+ · `PanelRow` · `DeviceSideTable`) — 그것은 값이 아니다. `test/panelRowDevice.test.tsx:89` 가
83
+ 그 글자가 그대로 `'좌'` 로 찍히는 것을 잰다. 값만 바뀌고 **화면은 그대로**라는 증거다.
84
+
85
+ **너그럽게 받는 몫은 소비자가 진다**(사장님 결정). 코어의 `toSide` 는 `'left'`·`'right'` 만
86
+ 받고, 옛 값이 오면 **조용히 `null`** 이다 — 터지지도 찍지도 않고 기기가 안 골라진다. 그래서
87
+ 소비자는 **코어에 넘기기 전에** 옮긴다. 말귀는 DB 와 오가는 길목 한 자리에 세워 두었다
88
+ (`toDbDirection`/`fromDbDirection`, 말귀 `15c483ced`) — DB `UPDATE` 가 끝나면 항등식이 되어
89
+ 걷힌다. 코어에서 함께 받으면 두 자리가 같은 일을 하고, 나중에 **어느 쪽이 걷혔는지 아무도
90
+ 모르게 된다.**
91
+
92
+ `wordTrainingGenerators.ts` 의 `'ㅜ': '우'` 는 **홀소리 표**라 손대지 않았다 — 값이 같은
93
+ 글자라서 일괄 치환하면 여기가 조용히 깨진다. 자리마다 세어 고쳤다.
94
+
95
+ ### ★ 그 못은 **헌 `dist`** 를 보고 있었다 — 말귀가 짚었다
96
+
97
+ 아침에 세운 `publicApiEnglishNames1013` 은 배포 `d.ts` 만 셌다. 말귀가 링크로 읽어 보니
98
+ `비율설정` → `SpeechVolumeSettings` 를 **커밋한 뒤에도** `dist/ihabdevteam-core.d.ts` 에는
99
+ 옛 이름이 그대로 있었다. 묶기 전에 돌면 그 못은 **없어진 이름을 보고 판정한다.**
100
+
101
+ 묶은 몸으로 이름을 세면 **묶인 때**에 매인다. 이름 규칙은 **소스**에서 센다.
102
+
103
+ 그래서 **소스를 센다** — `src` 안의 `export` 이름과 **공개 함수의 인자 이름**까지. `exports` 가
104
+ `./utils/*` 를 열어 두니 `src` 의 `export` 는 사실상 다 공개다(말귀가 `utils/textSort` 를 바로
105
+ 들여오는 것이 그 증거다). `dist` 는 곁셈으로만 보고, **소스보다 새것일 때만** 본다 — 헌것이면
106
+ *"안 쟀다"* 고 적는다. 안 센 것을 초록이라 말하지 않는다.
107
+
108
+ 같은 때 셈을 `npm run dist:fresh` 가 이미 하고 있었다 — 이 못은 그것을 **이름 셈 안으로** 들였다.
109
+
10
110
  ## 0.321.0
11
111
 
12
112
  ### (209) `TrainingCardGroup.beforeSort` — 정렬 드롭다운 **왼쪽** 자리