@ihabdevteam/core 0.292.0 → 0.294.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/CHANGELOG.md CHANGED
@@ -7,6 +7,75 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.294.0
11
+
12
+ ### 자리(어두·어중·어말)를 **음절이 아니라 자음에** 매긴다 — 말귀 요청 (93)
13
+
14
+ 옛 판정은 **음절 색인**으로 갈랐다(0번=어두 · 마지막=어말 · 그 사이=어중). 그래서
15
+ **2음절 낱말에는 어중이 아예 없었다** — `선물` 의 ㄴ받침·ㅁ초성을 뽑을 길이 없어
16
+ **검색이 자료의 일부에 못 닿았다.** 말귀 두 화면은 그 판정에 맞춰 2음절 이하면 어중 단추를
17
+ 잠가 두고 있었다.
18
+
19
+ 임상에서 쓰는 모델은 자리를 **자음에만** 매긴다(김동민 팀장·사공정희 선생 논의로 확인):
20
+
21
+ 선물 → ㅅ 어두초성 · ㄴ 어중종성 · ㅁ 어중초성 · ㄹ 어말종성
22
+ 아기 → ㄱ 어중초성 (어두초성 없음 · 어말종성 없음)
23
+
24
+ 어두 = 첫 음절의 **초성**(`ㅇ` 은 음가가 없어 자리를 안 가진다)
25
+ 어말 = 마지막 음절의 **받침**(없으면 없는 것)
26
+ 어중 = 그 밖의 **모든 초성·종성** — **2음절에도 생긴다**
27
+ 중성(모음)에는 자리를 안 매긴다
28
+
29
+ `wordHasConsonantAt(word, {cho, jong, jongNone}, position, jongMatch?)` 를 새로 둔다.
30
+ `mid` 에서 `cho` 와 `jong` 을 **둘 다 주면 둘 다** 있어야 한다(AND, 사용자 결정) — `선물`
31
+ 처럼 받침과 다음 초성이 맞물리는 자음동화 꼴을 잡으려는 것이고, **붙어 있어야 하는 것은
32
+ 아니다.**
33
+
34
+ **`wordHasSyllableMatching` 은 안 건드렸다.** 위치가 `무관` 일 때 초성·중성·종성을 **한 음절
35
+ 안에서** 묶어 보는 것은 그 나름대로 맞다(`ㄱ+ㅏ+ㅇ` = `강`). 둘은 **묻는 것이 다르다** —
36
+ 고쳐서 하나로 만들면 둘 중 하나가 틀려진다. 쓰는 쪽이 위치를 고르면 새 것으로, `무관` 이면
37
+ 옛 것으로 간다.
38
+
39
+ > 못 열둘을 박고 **다섯 자리를 따로 깨 봤다**(어두의 `ㅇ` 가림 · 어중에서 첫 초성 빼기 ·
40
+ > 마지막 종성 빼기 · AND 를 OR 로 · 어중의 `ㅇ` 가림). 다섯이 각각 다른 못을 울린다.
41
+ > 그중 하나는 **옛 함수가 같은 물음에 거짓을 준다**는 것까지 함께 박았다 — 두 모델이
42
+ > 다르다는 사실 자체가 지켜야 할 것이라서다.
43
+
44
+ ## 0.293.0
45
+
46
+ ### **뜸에서 멈춰도 그 자리에서 이어진다** — 뜸을 포함한 시간표가 한 시계다
47
+
48
+ 사용자 결정. 그대로 옮긴다:
49
+
50
+ > 단어 재생 중에는 괜찮은 거 같은데 앞 뜸과 뒤 뜸에서 멈추면 앞 뜸은 아예 처음부터 시작하고
51
+ > 뒤 뜸은 그냥 끝나버려. **앞 뒤 뜸을 고려한 시간으로 계산이 가능하도록 해야** 앞 뒤에서
52
+ > 멈추더라도 그 자리에서 동일하게 재생될 거 같은데?
53
+
54
+ **소리 구간만 제자리에서 이어지고 뜸 구간은 "다시" 아니면 "건너뜀" 이었다.** 그러면 재생바가
55
+ 그 경계에서 뒤로 가거나 튄다 — (90)(91) 에서 사용자가 본 것이 바로 그 어긋남이고, 뜸 쪽에
56
+ 같은 꼴이 남아 있었다.
57
+
58
+ 어디서 멈췄나 전 이제
59
+ 앞뜸 중 앞뜸을 **처음부터 다시** **남은 앞뜸**만 채우고 소리
60
+ 소리 중 그 자리에서 바로(0.291.0) 그대로
61
+ 사이 뜸 중 다음 소리의 앞뜸부터 **남은 사이**를 채우고 다음 소리
62
+ 뒤뜸 중 **건너뛰고 즉시 완료** **남은 뒤뜸**을 돌고 완료
63
+
64
+ 진행기가 `'restart'` 나 `(이어 갈 함수)` 대신 **어느 뜸의 몇 ms 자리였나**(`{phase, 흐른}`)를
65
+ 적는다. 그리고 `waitPad(남은, phase, 이미흐른)` 의 셋째 자리가 **자리를 그만큼 뒤로 민다** —
66
+ 안 밀면 남은 시간만 기다리면서 재생바는 0 부터 다시 긴다. **그 어긋남이 (90)(91) 의 튐이었다.**
67
+
68
+ > **0.278.0 의 까닭을 사용자가 뒤집었다.** 그때 적힌 것은 *"앞뜸은 귀가 소음에 자리를 잡는
69
+ > 시간이라 남은 뜸만 채우면 그 시간이 잘린다"* 였다. 틀린 글이 아니라 **다른 셈**이다 —
70
+ > 사용자는 시간표의 한결같음을 골랐다. 못을 뒤집으며 옛 까닭도 함께 남긴다.
71
+
72
+ 못 넷을 박고 넷을 따로 깨 봤다(앞뜸을 처음부터 · 뒤뜸을 건너뜀 · 자리를 안 밂 · 흐른 만큼을
73
+ 안 적음). 넷이 각각 다른 못을 울린다.
74
+
75
+ > 글자를 짚던 시험 넷이 또 빨개졌다 — 조건이 `leadInMsRef.current > 0` 에서 `남은앞뜸 > 0` 이
76
+ > 됐기 때문이다. 이제 그 자리는 **`'lead'` 를 기다리는 줄을 찾아 거슬러 올라** 그것을 감싼
77
+ > `if` 를 집는다. 오늘만 **여섯 번째**로 뜻은 그대로인데 글자가 달라진 자리다.
78
+
10
79
  ## 0.292.0
11
80
 
12
81
  ### 다 들은 직후에 다시 누르면 — **지난 완료의 연출이 새 재생 위에 안 붙는다**