Releases: mhju0/allergy-tracker
Release list
v2.2.4 — Animated demo in the README
README demo GIF.
Docs
- Animated demo as the README hero. A ~7s looping GIF of the core flow — a no-reaction check-in landing, the traffic-light food list, a food's flat reaction timeline, and the calendar history — now sits at the top of the README (
docs/screenshots/demo.gif, 320×695, 0.48 MB). - Removed the now-redundant home screenshot and tightened the gallery to a 2×2 (foods, detail, calendar, reaction) — the screens a still reads better than motion.
No application changes; tsc + 45 Jest tests green.
Full changelog: v2.2.3...v2.2.4
v2.2.3 — Calendar dot centering
Calendar day-cell polish.
Fixes
- Calendar — event dot centering. The little status dot under each day now sits centered in the gap between the digit and the cell floor. It was pinned with a hard-coded
bottom: 6px offset (tuned for one cell size) that read slightly low; it's now positioned as a share of cell height, so it stays centered at any screen size. The day number is unchanged.
Docs
- Regenerated the calendar screenshot and the social-preview banner for the new dot position, and relocated the social preview under
docs/screenshots/.
npx tsc --noEmit and 45 Jest tests pass in CI.
Full changelog: v2.2.2...v2.2.3
v2.2.2 — Calendar event ordering fix
Calendar event ordering fix and asset refresh.
Fixes
- Calendar — same-instant events now read close-then-open. On an autoclose→next-start handoff two events share a timestamp (e.g. one food's 안전 확인 and the next food's 테스트 시작 both at 09:00). The day-detail list used to interleave the two foods awkwardly (달걀 → 소고기 → 달걀); it now lists a trial's close before the next trial's start, so events stay grouped per food (소고기 안전 확인 → 달걀 테스트 시작 → 달걀 이상 없음). Extracted as a pure
sortDayEventshelper with a regression test proven to fail on the old time-only sort.
Docs & assets
- Regenerated the social-preview banner and the home/calendar screenshots so the mockups reflect the current 55-food catalog (untried count 41) and the corrected calendar ordering.
- README test count updated to 45.
npx tsc --noEmit and 45 Jest tests pass in CI.
Full changelog: v2.2.1...v2.2.2
v2.2.1 — Korean vocabulary polish
Korean vocabulary polish for the ingredient catalog.
Changes
- Removed 그린빈 from the catalog. It was a literal transliteration of English "green bean" with no unambiguous native Korean equivalent, so the ingredient is dropped rather than guessed (catalog 56 → 55 foods).
- Standardized two loanword spellings to their 외래어 표기법 forms: 요거트 → 요구르트, 캐슈넛 → 캐슈너트.
- README catalog count and the home / foods screenshots refreshed to match (untried count and list).
Every other ingredient name was audited and confirmed proper or standard Korean.
Full changelog: v2.2.0...v2.2.1
v2.2.0 — Chronological history & designer polish
On-device baby food-allergy tracker — Expo · React Native · TypeScript · SQLite/Drizzle. Korean-only, 100% offline.
Highlights
- Chronological record history. The food-detail 기록 section is now a flat, newest-first list where every record — 테스트 시작 · 이상 없음 · 반응 발생 · 안전 확인 · 취소됨 — is its own dated, traffic-light-colored bullet. No more nesting a trial's check-ins and reactions inside one outcome row; it now mirrors the calendar's day-detail model.
- Tappable status counts. The home 안전 / 테스트 중 / 반응 / 안 먹어봄 rows jump straight to that section of the foods list — one list, no new filters.
- Designer-feedback polish. Content-inset alignment applied app-wide (home, foods, calendar, settings, buttons), calendar spacing and month-nav refinements, list polish, and home eyebrow / trial-status-line alignment to the row-inset edge.
Quality
npx tsc --noEmit and 43 Jest unit tests pass in CI on every push. Screenshots regenerated from the deterministic EXPO_PUBLIC_DEMO=1 fixture.
Full changelog: v2.1.1...v2.2.0
v2.1.1 — trial escape hatch & check-in clarity
Closes out the pre-design-review polish round.
UX
- Blocked start is now actionable — starting a food while another is under observation names the active trial and offers a one-tap 취소하고 시작 (with 닫기 to dismiss). If the observation window elapsed while the alert was open, the finished trial is auto-closed as safe instead of cancelled.
- 테스트 취소 asks first — cancelling an in-progress trial now shows a confirmation dialog before discarding observation days.
- Check-in done-state teaches its cadence — after the daily 이상 없음 tap:
✓ 이상 없음 기록됨 · 오후 2:30+하루 한 번이면 충분해요.
Hardening
cancelTrialcan no longer overwrite a finished safe/reacted outcome via a stale id — the UPDATE is guarded byoutcome IS NULL, with a regression test asserting the generated SQL (proven to fail on the unguarded code).
Gates: TypeScript strict clean · Jest 43/43 · CI green.
v2.1.0 — Korean-only, editorial redesign, calendar & check-ins
Highlights
- Korean-only app — bilingual support removed by design; dates pinned to ko-KR
- Editorial design system — paper/ink/persimmon tokens, big-type headlines, hairline lists
- 캘린더 — month history view with tinted trial windows and reaction/check-in dots
- 이상 없음 check-ins — one-tap "no reaction observed" logging during a trial
- Fixed 3-day observation window, aligned with pediatric guidance (KDCA, 대한소아청소년과학회, NHS)
- Demo mode (
EXPO_PUBLIC_DEMO=1) — 46 days of realistic seeded history for demos - Branding — traffic-light app icon, paper splash, light/dark logo
- CI — typecheck + 42 Jest tests on every push
Full design document: docs/design-spec.md
v2.0.0-alpha — ground-up rebuild
First working build of the v2 rebuild: Expo + React Native + TypeScript, on-device SQLite (Drizzle ORM), derived traffic-light statuses, one-trial-at-a-time enforcement, local check-in notifications, doctor-ready PDF and JSON export. 23 unit tests.
v0.9 — 1-minute iOS simulator demo
One-minute walkthrough recorded on the iPhone 17 (iOS 26.1) simulator: dashboard traffic-light hero → ingredient stamp grid → reaction-retest consent gate → 72h observation → doctor-shareable report.
Asset: mammacare-demo-1min.mp4 (70s, H.264)
대시보드 신호등 히어로 → 도감 잉크 스탬프 그리드 → 반응 재료 재테스트 동의 게이트 → 72시간 관찰 → 리포트까지 1분 데모.