@ihabdevteam/core 0.265.0 → 0.266.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,55 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.266.0
11
+
12
+ ### 단어 소리에 **앞뒤 뜸**을 둔다 — `TrainingStepAudioPlayer` (말귀 요청 (74))
13
+
14
+ `leadInMs` · `tailMs` 둘을 더한다(기본 0 — 안 주면 전과 똑같이 돈다).
15
+
16
+ 말귀 실측: 단어 녹음은 앞뒤 무음이 **50~70ms** 뿐이라, 누르는 순간 소리가 터진다.
17
+ 그 뜸은 시간선의 일부다 — 파형이 그 구간까지 그리고, 재생바는 **소리가 날 때가
18
+ 아니라 뜸부터** 움직인다. 잇따라 틀면 앞 것의 뒤 뜸과 뒤 것의 앞 뜸이 놓여 사이가
19
+ 돋을 만큼 된다.
20
+
21
+ **세 자리를 함께 고쳤다. 하나만 고치면 어긋난 그림이 된다.**
22
+
23
+ 1. **재생 흐름** — `play()` 앞에 앞 뜸, `ended` 뒤에 뒤 뜸을 두고 그다음에 이어 간다.
24
+ 멈추면 기다리던 뜸도 함께 걷는다(`멈춤의도`). 뜸을 기다리는 동안 누름이 바뀌면
25
+ 그 기다림은 버린다 — 재생 의도를 다시 확인하고 돌아온다.
26
+ 2. **재생바** — `progressWithPad` 로 **뜸을 포함한 시간선** 위에서 잰다. 전에는
27
+ `currentTime` 만 따라 뜸 내내 0% 에 붙어 있었다(말귀 실측: 누른 뒤 2029ms 에 `play`,
28
+ 그때까지 채움 0%).
29
+ 3. **파형** — `padBarSpans` 로 앞·소리·뒤에 막대를 나눠 준다. 2초 단어에 앞뒤 1초면
30
+ **4초가 한 폭**이고 소리는 가운데 절반이다.
31
+
32
+ 실측으로 확인했다(2026-10-05, 브라우저 칸 800×600 · 13.09초 문장 · 앞뒤 뜸 1000ms):
33
+ 누른 뒤 **1039ms 에 `play`**, 그전 152ms·452ms·756ms 에 재생바는 **0.70% · 2.69% · 4.78%**
34
+ — 소리가 없는 동안에도 움직였다. 뜸이 끝나는 자리(1000/15090 = 6.63%)와 1051ms 의
35
+ 실측 6.69% 가 맞는다.
36
+
37
+ ### 파형의 **빈 자리**를 메운다 — 깔개가 없으면 막대를 안 숨긴다
38
+
39
+ 작은 막대를 숨기는(`--hidden`) 결정은 **뒤에 소음 층이 깔려 있다**는 전제 위에 있었다.
40
+ 뜻 없는 1px 막대를 지워도 바탕 결이 그 자리를 지키니까. 그런데 소음을 안 주면 그 전제가
41
+ 깨지는데 숨기는 쪽만 남아 있었다 — 실측: 소음 없는 13.09초 문장에서 94칸 중
42
+ **앞 0~15 · 뒤 81~93 이 `--hidden`**, 눈에는 파형 양끝이 잘려 보인다. 사용자가 짚은
43
+ "빈 공간"이 이것이다.
44
+
45
+ 깔개가 없을 때만 문장 막대가 바닥값을 진다. 소음을 주면 전과 같이 숨긴다 — 숨기는
46
+ 까닭이 사라진 것이 아니라 **그 까닭이 서는 자리가 어디인지**를 적은 것이다.
47
+ 소음 막대 자체는 (74) 에서 이미 바닥값을 받았다.
48
+
49
+ > **고친 시험 하나.** `아주 작은 바는 숨긴다` 가 소음 없이 재고 있었다 — 숨기면 안 되는
50
+ > 자리를 숨기라고 요구하는 꼴이라, 깔개를 주고 재게 고쳤다. 반대쪽은
51
+ > `test/audioWaveNoEmptyBars.test.tsx` 가 센다. 뜻이 아니라 소스 글자를 짚던 시험 둘은
52
+ > 지웠다(이름만 바꿔도 빨개졌다).
53
+
54
+ ### 소리를 만드는 동안 그렇게 말한다 — (75) 이어서
55
+
56
+ TTS 를 받아 오는 자리의 상태를 `resolving` 에서 `synthesizing` 으로 옮겼다. (75) 에서
57
+ 세운 말(`소리를 만들고 있습니다…`)이 실제로 그 자리에 선다.
58
+
10
59
  ## 0.265.0
11
60
 
12
61
  ### 눌린 소리 고르개가 **손이 없으면 안 보였다** — `TrainingStepAudioPlayer` (말귀 요청 (76))