@ihabdevteam/core 0.298.0 → 0.300.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,68 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.300.0
11
+
12
+ ### 다 푼 판은 **결과창이 서는 순간** 남는다 — 닫기를 안 기다린다 (말귀 요청 (100))
13
+
14
+ 적는 일이 `handleResultDone`(**결과창을 닫는 동작**)에만 걸려 있었다. 그래서 다 풀고
15
+ **안 닫고 떠나면 아무것도 안 남았다.** 말귀 실측(2026-10-08, 5문장 한 갈래를 결과판까지):
16
+
17
+ 뒤로 가기 아무것도 안 남음 ✘
18
+ 새로고침 rpc 0건 ✘
19
+ 결과판 ✕ 완료·숙제항목·진행률 셋 다 나감 ✔
20
+
21
+ 화면은 이미 `5/5` 라고 말한 뒤였다.
22
+
23
+ **판이 끝났다는 것은 사실이고, 결과창을 어떻게 닫았다는 것은 조작이다.** 조작이 사실을
24
+ 정하면 닫는 길마다 같은 일을 적어야 하고, 넷 중 둘이 빠졌듯 **새 길이 하나 더 생기면 또
25
+ 빠진다.** 이제 **결과창이 서는 것**을 보고 한 곳에서 적는다 — 결과를 세우는 자리가 넷이라
26
+ (갈래·어린이·자식 손잡이·바깥 손잡이) 그 넷에 각각 적으면 또 한 자리가 안 따라간다.
27
+
28
+ **`onRoundFinished` 를 새로 둔다.** `onComplete` 는 **닫을 때** 불린다 — 숙제처럼 *"이 문항
29
+ 풀었다"* 를 세는 쪽은 닫기를 기다릴 수 없다. 둘을 가른다: **끝났다를 알리는 것**과
30
+ **닫는 것**. 닫으면서 할 일(창 닫기·다음으로)은 `onComplete` 에 그대로 둔다.
31
+
32
+ onRoundFinished 판이 끝난 그 순간, 판마다 한 번 ← 새로 둠
33
+ onComplete 닫을 때 ← 그대로
34
+
35
+ > **셀 것이 있어야 적는다.** 결과가 `{}` 로 서는 길이 있다(자식이 빈손을 주거나 늦게
36
+ > 실패했을 때) — 그것을 끝난 판으로 적으면 `0/0` 이 쌓인다. 그 꼴에서는 **전과 같이 닫을
37
+ > 때만** 적힌다. 앞당기지만 않는 것이다.
38
+
39
+ > **다시하기도 "안 닫고 떠난" 한 꼴이다.** 그래서 1회차도 이제 제 기록을 갖는다 — 전에는
40
+ > `previousAttempts` 로만 전해지고 완료 기록에는 없었다. 판이 둘이면 기록도 둘이다.
41
+ > `replayDuration0915` 의 수를 그에 맞춰 고쳤다(그 못이 재는 것은 **시간**이다).
42
+
43
+ > **못이 못 지키는 자리를 적어 둔다.** 닫는 길이 jsdom 에서 안 닿아(✕ 가 닫힘 연출을 거쳐
44
+ > `onClose` 를 부르는데 그 사슬이 안 돈다) **세대 가림을 빼도 못이 안 운다.** 지키는 것은
45
+ > *"서면서 한 번 적힌다"* 까지다. **"안 난다" 가 아니라 "못 쟀다"** 로 적는다 — 앱에서는
46
+ > 잴 수 있다(다 풀고 ✕ → `record_training_completion` 이 한 번만).
47
+
48
+ ## 0.299.0
49
+
50
+ ### 소리가 나는 동안 **왜 못 누르는지** 말해 준다 — 말귀 요청 (99)
51
+
52
+ 다 듣기 전에는 답 단추가 잠긴다. **막는 것 자체는 뜻이 있다** — 안 듣고 찍는 것을 막는
53
+ 자리다. 그런데 **그 말이 화면에 없었다.** 소음 섞인 문장은 **9~11초** 걸리는데 단추는
54
+ 사라지지 않고 자리에 선 채 흐리기만 해서 **누른 사람은 멈춘 줄 안다** — 검수하던 사람이
55
+ 실제로 그 자리에서 두 번 헛돌았다.
56
+
57
+ 답 단추 바로 위에 한 줄이 섰다가 다 들으면 사라진다:
58
+
59
+ 다 들으면 고를 수 있어요.
60
+
61
+ **`role="status"` 로 둔다.** 단추가 **진짜 `disabled`** 라 초점이 안 가고, 그래서 눈으로 못
62
+ 보는 사람은 **왜 못 고르는지 들을 길이 아예 없었다.** 살아 있는 자리로 두면 문항이 열릴 때
63
+ 읽히고, 다 들어 사라질 때도 그것이 전해진다.
64
+
65
+ > **`disabled` 를 `aria-disabled` 로 바꾸지 않았다.** 그러면 초점이 가서 `aria-describedby`
66
+ > 로 까닭을 달 수 있지만, 단추가 탭 차례에 들어와 *누를 수 있을 것 같은데 안 눌리는* 꼴이
67
+ > 된다. **막는 뜻은 그대로 두고 말만 더한다** — 청한 것도 그것이었다.
68
+
69
+ 못 다섯. 그중 둘이 반대쪽이다 — *열리면 까닭이 **사라진다*** (남으면 그 줄이 거짓말이 된다)
70
+ 와 *단추는 **여전히 잠겨 있다*** (말을 더한 것이지 막는 것을 푼 게 아니다).
71
+
10
72
  ## 0.298.0
11
73
 
12
74
  ### 접기 손잡이의 말을 `닫기` → `접기` 로 — 말귀 요청 (97)