Skip to content

Releases: redchupa/kr_baby_kit

v0.8.9 — fix HA event-loop blocking-IO warnings

14 May 02:59

Choose a tag to compare

Fixed

  • Blocking-IO warnings on setup. Home Assistant 2024+ flags synchronous file reads inside the event loop. The coordinator was loading four bundled JSON tables (growth_chart_kr.json, nip_schedule.json, health_checkup_schedule.json, care_tuition_kr.json) with plain open() calls in __init__ and on every refresh, producing four Detected blocking call to open warnings per child entry.

    Now all four files are pre-loaded once via hass.async_add_executor_job in async_setup_entry and handed to the coordinator as plain dicts, so update cycles stay pure-CPU. The sync load_* / from_default helpers remain for tests.

No schema, entity, or behavior changes — only the I/O path moved.

Upgrade

HACS → 통합 → kr_baby_kit → 재다운로드, 그리고 Home Assistant 재시작.

v0.8.8 — License badge removed for good

12 May 19:05

Choose a tag to compare

Three rounds of trying to make the README License badge render in HACS UI — shields.io URL (v0.8.5), self-hosted SVG (v0.8.6), self-hosted PNG (v0.8.7) — and the reporting user still saw it broken after each one. HACS upstream has marked README image-rendering quirks as 'not planned' (hacs/integration#4787, #3362, catppuccin/home-assistant#52). v0.8.8 just removes the badge.

License information stays available via:

  • the LICENSE file (linked from the bottom of the README)
  • the 📜 라이선스 section in the README, with a plain text link

No code, schema, or behavior changes.

After HACS REDOWNLOAD the broken-image slot is gone — the four remaining badges (Validate / Tests / HACS-Custom / Release) render unchanged.

v0.8.7 — License + HACS badges: PNG (raw.gh SVG sandbox fix)

12 May 18:53

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.

🐛 Real root cause finally found

`raw.githubusercontent.com` adds a `Content-Security-Policy: default-src 'none'; ... sandbox` response header for any `*.svg` file it serves. Some HACS frontend environments respect that sandbox and refuse to render the inline image; PNG responses don't carry the header and always render.

That's why the Toss / PayPal donation PNGs always worked in the same environments where the License SVG (v0.8.6's self-hosted one, and shields.io's original) didn't.

Fix

Before After
License `images/license-badge.svg` `images/license-badge.png` (1434 bytes, 82×20 RGBA)
HACS-Custom `shields.io/badge/HACS-Custom-...` `images/hacs-custom-badge.png` (2087 bytes, self-hosted)

Unchanged badges

  • Validate / Tests — served from `github.com` (not `raw.githubusercontent.com`), no SVG sandbox
  • Release — dynamic shields.io URL that hasn't been reported broken; self-hosting would defeat the auto-refresh

Upgrade

HACS → Integrations → 한국 영유아 키트 → ⋮ → UPDATE (or REDOWNLOAD). All five badges should render this time, including License.

No code, schema, or behavior changes from v0.8.6.


Full CHANGELOG: CHANGELOG.md

v0.8.6 — Self-hosted License badge

12 May 18:37

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → `https://github.com/redchupa/kr_baby_kit\` (Category: Integration).

What's fixed

The shields.io License badge URL was being blocked by adblock-style content filters in some HACS-over-HTTP setups (any URL matching `license` is a common ad-list pattern, and shields.io's License badge path literally contains it).

v0.8.6 self-hosts the badge:

  • New: `images/license-badge.svg` (1087 bytes) — exact byte-for-byte copy of the shields.io output, served from this repo
  • README badge URL updated to the self-hosted path (`raw.githubusercontent.com/redchupa/kr_baby_kit/main/images/license-badge.svg`)

Same approach as the donation QR images, which already render fine in the environments where the shields.io License badge was being blocked.

Other badges unchanged

Validate, Tests, HACS-Custom, Release badges keep their original sources because:

  • They were never reported broken
  • Validate / Tests / Release are dynamic — self-hosting would defeat their purpose (auto-refresh on each push)
  • HACS-Custom is static but the URL path doesn't match common adblock patterns

No code, schema, or behavior changes from v0.8.5.


Full CHANGELOG: CHANGELOG.md

v0.8.5 — README refresh (HACS pick-up tag)

12 May 18:21

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → `https://github.com/redchupa/kr_baby_kit\` (Category: Integration).

Why this release exists

v0.8.4 already shipped two README fixes on main:

  1. The shields.io License badge was removed (broken on HACS-over-HTTP setups due to adblock filters matching `license` URL patterns).
  2. The "등록 후 대시보드에서 보이는 것들" section was synced to the v0.8.4 underscore-only friendly-name form.

But HACS users fetching the latest tag kept seeing the older v0.8.4 README (with the broken badge). v0.8.5 is purely a tag bump so HACS re-fetches the current README.

What changed

  • README: License badge dropped, entity-name listing already in v0.8.4 form
  • `manifest.json` version bump only — no code, schema, or behavior changes
  • `unique_id`, sensor values, attribute payloads, on-disk records all unchanged from v0.8.4

After upgrading

HACS → Integrations → 한국 영유아 키트 카드의 ⋮ → UPDATE 또는 REDOWNLOAD. README의 License 배지 자리가 사라지고 entity 이름이 `키_입력`, `백분위_키_1퍼센트는_가장_큼`, `양극단_주의_BMI` 형식으로 노출됩니다.


Full CHANGELOG: CHANGELOG.md

v0.8.4 — Underscore-only friendly names

12 May 18:01

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → `https://github.com/redchupa/kr_baby_kit\` (Category: Integration).

Friendly-name typography pass. Every entity now follows a single rule:

  • no `·` separator
  • no parentheses
  • spaces become underscores
  • symbols inside the old parentheses are spelled out in Korean (`%` → `퍼센트`, `=` → `는`)

Before / After

Before After
`백분위 · 키 (1%=가장 큼)` `백분위_키_1퍼센트는_가장_큼`
`백분위 · 몸무게 (1%=가장 무거움)` `백분위_몸무게_1퍼센트는_가장_무거움`
`정보 · 월령 (개월 수)` `정보_월령_개월_수`
`정보 · BMI 수치` `정보_BMI_수치`
`키 입력` / `몸무게 입력` / `머리둘레 입력` `키_입력` / `몸무게_입력` / `머리둘레_입력`
`일정 · 다음 예방접종` / `다음 검진` / `이번 달 예방접종` / `이번 달 검진` `일정_다음_예방접종` / `일정_다음_검진` / `일정_이번_달_예방접종` / `일정_이번_달_검진`
`보육료 · 표준` / `정부지원금` / `본인부담금` `보육료_표준` / `보육료_정부지원금` / `보육료_본인부담금`
`캘린더 · 예방접종` / `검진` `캘린더_예방접종` / `캘린더_검진`
`머리둘레 양극단 주의` `양극단_주의_머리둘레`
`BMI 양극단 주의` `양극단_주의_BMI`
`신장별 몸무게 양극단 주의` `양극단_주의_신장별_몸무게`

양극단_주의 entities now share a prefix

All three concern alerts begin with `양극단_주의_` so the dashboard's sort-by-name view groups them together — useful when scanning a daily-routines view.

Upgrade notes

  • `unique_id`, sensor values, attribute payloads, and on-disk records are unchanged.
  • Only the displayed friendly names update.
  • Any existing dashboard card or automation that already references `entity_id` (e.g. `binary_sensor._bmi_concern`) continues to work unchanged.

Full CHANGELOG: CHANGELOG.md

v0.8.3 — Keep BMI concern entity available under 24 months

12 May 17:56

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → `https://github.com/redchupa/kr_baby_kit\` (Category: Integration).

🛠️ Fixed

`binary_sensor._bmi_concern` no longer shows "unavailable" for children under 24 months.

KDCA's BMI percentile table starts at 24 months. For younger children there is no statistical percentile to compare, so the entity used to go to unavailable — but most parents reasonably read that as a misconfiguration on their end.

v0.8.3 keeps the entity available with:

  • `state: off` (no concern flagged — BMI percentile is simply undefined at this age)
  • `summary_ko` attribute: "만 24개월 미만 — BMI 백분위는 KDCA 기준상 만 2세부터 적용됩니다. 같은 자녀의 '신장별 몸무게 양극단 주의' binary_sensor 를 함께 확인하세요."
  • `value` attribute: the raw BMI value (still computed from height + weight, just not percentile-ranked)

For a child under 24 months, the clinically correct alert is the `_weight_for_length_concern` binary sensor, which is defined for that age band.

What changed under the hood

  • `_ConcernSensor.available` is now "available if a percentile OR a summary advisory is present" (previously "percentile present" only).
  • `BMIConcernSensor._info` returns the advisory dict for children under 24 months instead of an empty dict.
  • Head circumference and weight-for-length concern entities are unaffected.

Upgrade notes

  • `unique_id`, sensor values, and on-disk records all unchanged.
  • Any automation that triggered on `binary_sensor._bmi_concern` state change still works exactly as before.

Full CHANGELOG: CHANGELOG.md

v0.8.2 — Three-layer measurement input validation

12 May 17:27

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → https://github.com/redchupa/kr_baby_kit (Category: Integration).

Medical data integrity patch. Until v0.8.1 the integration accepted anything coerce-able to float() on measurement inputs — including NaN, Infinity, negative numbers, and stratospheric out-of-range values — and the LMS / BMI / weight-for-length math downstream then either produced nonsense percentiles or crashed deep inside the calculation. v0.8.2 closes that.

🛡️ Three layers of validation

Layer What it does Surfaces error as
record_measurement service _bounded_float() schema rejects type / NaN / Inf / range up front voluptuous Invalid → service-call response
Dashboard number entity HA's native min/max/step constrain the slider (unchanged behaviour) UI-level clamping
storage.async_append_measurement Re-validates regardless of caller ValueError with Korean message

The middle layer was already fine; the first and third are new in v0.8.2.

❌ Inputs now rejected (Korean error messages)

Bad input Message
None / 빈 값 키 값이 비어 있습니다.
"abc", "!!", "1,2", "" 키 값을 숫자로 읽지 못했습니다: 'abc'
True / False 키 값은 숫자여야 합니다 (참/거짓 X).
NaN 몸무게 값이 NaN 입니다.
±Infinity 몸무게 값이 무한대입니다.
height=-5 / weight=150 / head=10 등 범위 밖 키 값이 허용 범위를 벗어났습니다: -5.0 cm (허용: 30.0–200.0 cm).
date: "not-a-date" 측정일 형식이 올바르지 않습니다 (YYYY-MM-DD): 'not-a-date'

📏 Plausibility ranges

Wider than the KDCA 0–228 month chart (45–180 cm height, 3–80 kg weight, 33–58 cm head) so a slightly off entry still stores; clearly-mistyped values are caught up front.

항목 최소 최대
30.0 cm 200.0 cm
몸무게 1.0 kg 100.0 kg
머리둘레 25.0 cm 65.0 cm

✅ Tests

  • +33 unit tests in tests/test_validation.py covering every rejection class.
  • +4 storage-layer regression tests proving out-of-range / negative / non-numeric / NaN values are rejected at the persistence boundary, not only at the schema.
  • Total: 109 passed (pytest -q --ignore=tests/integration).

Upgrade notes

  • unique_id, sensor values, and on-disk records all unchanged.
  • Existing valid measurements continue to work without re-entry.
  • Service-call payloads that previously accidentally passed (e.g. weight: 0) now fail loudly with a Korean message — fix the payload and resubmit.

Full CHANGELOG: CHANGELOG.md

v0.8.1 — Infant checkup schedule 7→8 (MOHW 2021 reform)

12 May 17:20

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → https://github.com/redchupa/kr_baby_kit (Category: Integration).

🛠️ Data correctness fix

보건복지부 added a 생후 14~35일 초기 검진 to the standard 영유아 건강검진 program on 2021-01-01. The integration was shipping the pre-2021 7-visit table, so a brand-new parent's "next checkup" sensor was quietly skipping the 2-week visit entirely.

v0.8.1 fixes that.

New 8-visit schedule

차수 시기 상태
1차 (초기) 생후 14~35일 신규 (2021-01-01 시행, v0.8.1 추가)
2차 4~6개월 (기존 1차)
3차 9~12개월 (기존 2차)
4차 18~24개월 (기존 3차)
5차 30~36개월 (기존 4차)
6차 42~48개월 (기존 5차)
7차 54~60개월 (기존 6차)
8차 66~71개월 (기존 7차)

name_ko shifts up by one number for every existing visit so the차수 matches what clinics and the 국민건강보험공단 system show.

🔍 Other data spot-checked (2026-05)

데이터 결과
KDCA 2017 소아청소년 성장도표 공식 표준 유지 (2027년 갱신본 개발 중)
KDCA NIP 표준 예방접종 일정 2025-01-20 sync 이후 코어 일정 변경 없음
BMI 24개월 기준 (≥24m BMI, <24m weight-for-length) KDCA 권고와 일치
양극단 임계 5/95 학회 < 5 저체중 / ≥ 95 비만 기준과 일치; 과체중 단계(85~95)는 *_concern attribute의 summary_ko 부연으로 안내

Upgrade notes

  • unique_id for every retained entity is unchanged. Existing installs keep their entity_id.
  • The user-visible difference is the next-checkup sensor's name_ko shifting up by one for every visit beyond the new early one.
  • No behavior change for height / weight / BMI / head / vaccination / tuition entities.

Full CHANGELOG: CHANGELOG.md

v0.8.0 — Drop %-percentile sensors for bi-directional metrics

12 May 16:12

Choose a tag to compare

Korean infant/child reference data integration for Home Assistant.
Install via HACS → Custom repositories → https://github.com/redchupa/kr_baby_kit (Category: Integration).

A sensor whose state is a percent and whose "good" reading is 50% reads like "half-full" to most users. The v0.7.x label hints ("50%=정상") couldn't undo that mismatch, so v0.8.0 takes the underlying step and removes the offending sensors.

⚠️ Removed (BREAKING)

  • sensor.<child>_head_percentile
  • sensor.<child>_bmi_percentile
  • sensor.<child>_weight_for_length_percentile

Added

Three new device_class: problem binary sensors take their place:

Entity Meaning
binary_sensor.<child>_head_concern 머리둘레 양극단 주의 (microcephaly · macrocephaly)
binary_sensor.<child>_bmi_concern BMI 양극단 주의 (저체중 · 비만)
binary_sensor.<child>_weight_for_length_concern 신장별 몸무게 양극단 주의

Each is on when the KDCA statistical percentile is < 5 or > 95. Attributes carry the full picture:

Attribute Value
statistical_percentile 0–100
level low / high / null
summary_ko one-line Korean readout
value raw measurement (BMI float, or {length_cm, weight_kg, band} dict)
measured_at ISO date

Unchanged

  • sensor.<child>_height_percentile, sensor.<child>_weight_percentile — still 1%=가장 큼 (rank scheme is medically safe for single-direction-favorable metrics).
  • sensor.<child>_bmi_raw — raw BMI value sensor stays, with percentile/summary on its attributes.
  • All schedule, calendar, tuition, and number-input entities.

Automation example impact

Example #4 (BMI 양극단 알림) rewritten as a state trigger:

trigger:
  - platform: state
    entity_id: binary_sensor.kr_baby_kit_<child>_bmi_concern
    to: "on"

…much simpler than the previous dual numeric_state form.

Upgrade notes

  • unique_id of every retained entity is unchanged — existing entity_ids stay.
  • The three removed *_percentile entities will appear in HA's "Unavailable entities" list after upgrade; they can be safely deleted from the entity registry.
  • Any automation that triggered on numeric_state of the removed sensors should be rewritten against the new binary_sensor.*_concern state trigger.

Full CHANGELOG: CHANGELOG.md