@ihabdevteam/core 0.356.0 → 0.357.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,86 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.357.0 — 겨누는 수 **85** · 사본을 지키는 못이 사본보다 성길 수 없다
11
+
12
+ 사장님 지시(2026-10-21) — *"sms 전수조사 해 85바이트 이하로 전부 조정해"*. 90을 겨누면
13
+ *맞았다* 와 *넘었다* 사이에 **아무것도 없다** — 글을 한 글자 고치다 넘긴 것이 화면 어디에도
14
+ 안 보이고 **청구서에만** 보인다. 통신사 한계(90)는 그대로 두고, **우리가 겨누는 수**를
15
+ 따로 세웠다.
16
+
17
+ ### 한계와 목표는 **다른 사실**이다
18
+
19
+ `measureSmsText` 가 둘을 따로 돌려준다 — `over`(한계를 넘었다: 값이 바뀌거나 잘린다)와
20
+ `overTarget`(목표를 넘었다: 나가기는 하지만 여유가 없다). 섞어 세면 86~90 이 아무 데도
21
+ 안 보인다.
22
+
23
+ ```ts
24
+ import { measureSmsText, SMS_TARGET_BYTES } from '@ihabdevteam/core/utils'
25
+ measureSmsText(text) // { bytes, type, limit, over, target, overTarget }
26
+ measureSmsText(text, null) // 목표를 안 본다
27
+ SMS_TARGET_BYTES // 85 — 한계(SMS_BYTE_LIMIT, 90)와 다른 수다
28
+ ```
29
+
30
+ `NotifyTextPreview` 는 `{바이트} / 목표 85바이트 · 단문` 으로 적고, 86~90 은 **주황**으로
31
+ 선다. **주황을 글자색으로 안 썼다** — `--color-warn`(#e6b94e)은 흰 지면에서 1.9:1 이라
32
+ caption 크기 글이 안 읽힌다. 바탕과 테두리로 주황을 두고 글자는 짙은 쪽을 쓴다. 세 자리 다
33
+ 색만으로 말하지 않는다(`목표 넘음` · `값이 두 배 반` · `한계 넘음`).
34
+
35
+ ### 화면을 보다 걸린 것 — **장문이 주황으로 서 있었다**
36
+
37
+ 127바이트짜리 보기에 *"목표 넘음 — 한 글자만 늘어도 2000을 넘는다"* 가 적혀 있었다.
38
+ 장문 한계는 2000이니 `over` 가 거짓이고, 그래서 주황이 섰다. 셈은 맞는데 **말이 틀렸다** —
39
+ *값이 두 배 반이 된 사실*이 *여유가 없다* 로 읽힌다. 돈이 걸린 쪽을 약하게 말할 자리가
40
+ 아니다. 장문은 빨강으로 세우고 `값이 두 배 반` 이라고 적는다. 시험 셋을 박았다.
41
+
42
+ ### 사본이 **두 번 낡았다** — 그래서 못이 글자까지 센다
43
+
44
+ 놀이터의 문자 열여섯이 또 어긋나 있었다. 이번에는 **다섯**이다:
45
+
46
+ ```
47
+ 앱 ← 놀이터
48
+ 78 ← 87 보호자 동의 확인 '생성에 동의하신 것이' → '생성 동의가'
49
+ 83 ← 87 숙제 도착 '도착했어요' → '왔어요'
50
+ 82 ← 85 인증번호 (번호 이관) 조사 '를'
51
+ 82 ← 85 이용권 만료 예고 '확인해 주세요' → '확인하세요'
52
+ 64 ← 80 방문 하루 전 ← 주소가 붙은 **옛 글**을 그리고 있었다
53
+ ```
54
+
55
+ 마지막 것이 요점이다. 그 넷은 그날 오후에 줄어든 것이지만, **방문 알림은 전날 바뀐
56
+ 글**이었다(사장님이 *"주소 빼고 기관 이름 넣어"* 하셨다). 하루 내내 이 화면이 **우리가
57
+ 안 보내는 글**을 그리면서 80바이트라고 적고 있었다.
58
+
59
+ `notifyFormsNotStale` 은 **열쇠 집합**만 세고 있었다. 늘어난 것은 잡지만 **고쳐진 것은 못
60
+ 잡는다** — 그리고 고쳐지는 쪽이 더 흔하고 더 안 보인다. 세우면서 *"글자까지 견주면 이 못이
61
+ 또 하나의 사본이 된다"* 고 적었는데, 그 조심이 **못을 사본보다 성기게** 만들었다.
62
+
63
+ > 사본을 지키는 못이 사본보다 성길 수 없다.
64
+
65
+ 이제 앱 파일을 `test/.tmp/` 로 베껴 코어 들이는 줄만 제 자리로 고쳐 **참으로 싣고**,
66
+ 열여섯을 글자까지 맞댄다. 앞서 *"저장소 밖 파일은 vitest 가 못 싣는다"* 고 적어 둔 것은
67
+ 맞았다 — **안으로 베끼면** 실린다(들이는 글귀는 변수로 가려야 한다: 글자로 박으면 vite 가
68
+ 싣기 전에 찾는다). 깨 보았다: 놀이터 글 한 낱말을 되돌리니 양쪽 바이트를 나란히 적고 운다.
69
+
70
+ 못 셋이 늘었다 — 글자 맞댐 · **앱이 겨누는 수가 코어 것과 같은가** · 앱이 내는 글이 모두
71
+ 목표 아래인가. 둘째가 특히 값지다: 85가 두 자리에 살면 *화면은 맞다는데 청구서는 다른* 날이
72
+ 온다(`eucKrBytes` 를 모은 것과 같은 까닭이다). 말귀가 코어의 `SMS_TARGET_BYTES` 를 들이면
73
+ 그 어긋남이 **아예 안 난다.**
74
+
75
+ ### 바닥글에 **사업자등록번호** (말귀 청 214)
76
+
77
+ 사장님 지시 — 주소 줄과 고객센터 줄 사이에 `526-81-02926`. `contact`(이메일·대표번호)처럼
78
+ 주입받지 않고 **박아 두었다** — 대표번호는 소비처마다 다를 수 있지만 사업자등록번호는
79
+ **법인 하나의 수**라 다를 수 없다.
80
+
81
+ 말귀가 미리 짚어 준 것이 맞았다 — 이름표 칸이 `80px` 인데 *사업자등록번호* 는 일곱 글자다.
82
+ 재 보니 **79px, 여유 1px** 로 **넘치지는 않았다**(영어 `Business no.` 는 77px). 그래도
83
+ `96px` 로 넓혔다 — 바이트에서 하루 종일 고친 것과 같은 자리다. *여유가 0 인 수는 넘어간
84
+ 것이 화면에 안 보인다.* 네 줄이 똑같이 밀리므로 줄맞춤은 그대로고, 375px 에서도 두 말 다
85
+ 한 줄에 선다(실측).
86
+
87
+ 번호가 **세 자리**(`Footer.tsx` 기본값 · `ko.json` · `en.json`)에 적히므로 같은지 세는 못을
88
+ 달았다. 영어 쪽만 한 자리 틀려 보니 운다 — 눈으로는 영영 안 걸릴 흠이다.
89
+
10
90
  ## 0.356.0 — 문자에서 **장문이 사라졌다** · 보기값이 가짜면 잰 값도 거짓이다
11
91
 
12
92
  사장님이 화면에서 *"간당간당하다"* 고 짚으셨고(인증 해제 90바이트 — **한 칸도 없음**),