Releases: eigger/kibble
Release list
v0.7.0
"작성자" 정보가 화면에 안 뜨던 진짜 원인을 찾아 고쳤고, 이제 편집자 이름도 함께 보입니다. 첨부 사진 관련 버그 두 개도 고쳤습니다.
고친 것
"{이름} 작성" 줄이 처음부터 뜬 적이 없었습니다
바로 지난 버전(v0.6.0)에서 추가했던 이 표시가 코드의 사소한 실수로 한 번도 렌더되지 않고 있었습니다. "수정 시간은 나오는데 작성자는 없다"는 리포트가 정확히 이 버그를 짚어냈습니다.
첨부 사진 상세 그리드가 이상하게 벌어져 보이던 문제
기록을 열어 사진을 여러 장 봤을 때, 사진이 작게 찌그러진 채 넓은 빈 공간과 함께 떠 있던 버그입니다. 안 쓰이던 옛날 CSS 코드가 몰래 충돌을 일으키고 있었습니다.
새 기능
"수정한 사람" 이름 추가
기록을 열면 하단에 다음처럼 표시됩니다:
보람 작성 · 별이 · 9월 3일 10:02 수정
여러 사람이 함께 기록하는 가구에서, 누가 마지막으로 이 기록을 고쳤는지도 이제 보입니다. 만든 사람과 고친 사람이 같으면 이름을 반복해서 보여주지 않습니다.
이력 목록에서 사진을 바로 볼 수 있습니다
- 기존엔 사진 1장만 미리보기로 보였는데, 이제 최대 4장까지 보여줍니다
- 사진을 누르면 바로 확대 보기가 열립니다 (기존엔 사진을 눌러도 기록 상세만 열렸습니다)
- 행의 나머지 부분을 누르면 예전처럼 기록 상세가 열립니다
업그레이드
updateDB 마이그레이션이 있습니다 (Event.updatedById 컬럼 추가). update가 자동으로 적용합니다.
Full Changelog: v0.6.0...v0.7.0
v0.6.0
투약 시간 버튼이 안 보이던 버그를 고쳤고, 기록 상세에 작성자·최종 수정 표기가 추가됐습니다.
고친 것
투약 시간 버튼이 흰 배경에 흰 글자였던 문제
케어 화면에서 처방을 추가한 뒤, "오전 8:00" 같은 투약 시간 버튼의 텍스트가 안 보이던 버그입니다. 배경색과 글자색이 우연히 같은 흰색이었던 게 원인입니다. "수정" 버튼은 멀쩡했던 이유도 함께 확인했습니다.
새 기능
기록 상세에 작성자·최종 수정 표기
기록을 열면 하단에 다음처럼 한 줄이 붙습니다:
보람 작성 · 9월 3일 10:02 수정
- 여러 사람이 함께 기록하는 가구에서 "누가 언제 이걸 적었는지" 바로 보입니다
- 자동 입력(API 연동)으로 생긴 기록처럼 작성자를 알 수 없는 경우는 그 줄이 조용히 빠집니다
- 기록한 직후에는 "수정" 표시가 붙지 않습니다 — 실제로 나중에 고쳤을 때만 보입니다
업그레이드
updateDB 마이그레이션은 없습니다.
Full Changelog: v0.5.0...v0.6.0
v0.5.0
사진 확대가 되고, 카카오 길찾기가 폰에서 제대로 열립니다. 이력 화면도 손봤습니다.
고친 것
카카오 길찾기가 경로를 못 잡던 문제
map.kakao.com/link/to/… 웹 링크를 쓰고 있어서 폰에서 앱으로 넘어가지 않고 웹 지도만 떴습니다. 네이버·티맵은 앱 스킴(nmap://, tmap://)인데 카카오만 https였던 게 원인입니다. 이제 kakaomap://route로 열립니다.
버튼 이름도 실제로 열리는 앱에 맞춰 "카카오맵" 으로 바꿨습니다.
이력 행의 수정·삭제 버튼 위치
행 전체 기준으로 가운데 정렬돼 있어서, 메모가 길거나 이름이 두 줄이면 버튼이 아래로 내려갔습니다. 이제 항상 태그와 같은 줄에 있습니다.
이력 목록에서 병원 주소 제거
목록에는 병원 이름까지만 나옵니다. 주소는 기록을 열면 그대로 보입니다.
새 기능
사진 확대
기록의 사진을 열었을 때:
- 폰 — 두 손가락으로 벌려서 확대, 끌어서 이동, 두 번 톡 쳐서 원래대로
- PC — 마우스 휠로 확대·축소, 끌어서 이동, 더블클릭으로 원래대로
- 확대 중에는 "원래 크기" 버튼이 뜹니다
영상은 기존 재생 컨트롤 그대로입니다.
그 외
fast-uri보안 권고 대응 (의존성 갱신)
업그레이드
updateDB 마이그레이션은 없습니다.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
관리자용 API 탐색기가 생겼고, 자동화가 kibble을 읽을 수 있게 됐습니다. 지금까지 API 토큰은 기록을 밀어넣기만 할 수 있었습니다.
새 기능
API 탐색기 — 더보기 → 관리 → API 탐색기 (관리자 전용)
- 읽기(GET) 21종을 화면에서 눌러 상태 코드·소요 시간·응답 본문을 바로 확인합니다
- 쓰기는 실행 버튼 없이 curl 예시만 — 눌러 보는 화면에서 실제 기록이 생기면 안 되니까요
- kibble은 GET으로 아무것도 쓰지 않으므로(K-7) 읽기 목록은 눌러도 기록이 바뀌지 않습니다
GET /api/states — 역방향 읽기 API
홈어시스턴트 같은 자동화가 반려동물의 현재 상태를 한 번에 읽습니다.
| 필드 | 내용 |
|---|---|
lastEvents[] |
타입별 마지막 기록 — 시각, 수량·단위, 경과 시간(hoursSince) |
today[] |
오늘(KST) 타입별 건수와 합계 |
medication |
진행 중 과정, 오늘 먹인/계획 횟수, 시각이 지난 슬롯 |
reminders[] |
예정일과 지남 여부 |
curl "$BASE/api/states" -H "Authorization: Bearer kbl_..."GET /api/events/:id — 기록 하나만 읽습니다 (세션 전용).
업그레이드
Docker 이미지 빌드가 끝난 뒤:
updateDB 마이그레이션은 없습니다.
⚠️ 기존 API 토큰은 상태 조회가 막힙니다
GET /api/states에는 state:read 스코프가 필요합니다. 지금까지 발급된 토큰은 event:create만 갖고 있어서 403이 납니다.
배포만으로 쓰기 전용 토큰에 읽기 권한이 붙으면 조용한 권한 확대라, 일부러 이렇게 뒀습니다. 상태 조회를 쓰시려면 토큰을 새로 발급하세요:
curl -X POST "$BASE/api/tokens" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"홈어시스턴트","scopes":["event:create","state:read"],"petId":"<pet-id>"}'기존 토큰의 기록 생성은 그대로 동작합니다 — 상태 조회를 안 쓰신다면 아무것도 안 하셔도 됩니다.
Full Changelog: v0.3.1...v0.4.0
v0.3.1
카카오 지도 연동이 들어갔습니다. 병원 방문을 기록할 때 상호로 검색해서 고르면 좌표까지 남고, 나중에 이력에서 지도로 보고 길찾기를 바로 띄울 수 있습니다.
v0.2.6이 릴리스되지 않았던 터라 이번 배포에 함께 들어갑니다.
새 기능
병원 상호 검색 → 지도 → 내비 (v0.3.0)
- 병원 방문 기록의 병원 칸에 [병원 찾기] 버튼. "○○동물병원"으로 검색해 고르면 이름·주소·좌표·카카오맵 링크가 함께 저장됩니다 (기본으로 병원만 검색, 현재 위치가 가까운 곳 우선)
- 이력에서 그 기록을 열면 지도와 [T맵][카카오내비][네이버지도] 버튼이 뜹니다
- 예전에 병원 이름만 적어 둔 기록도 주소가 있으면 지오코딩해서 지도가 나옵니다
- 자주 가는 병원 칩을 누르면 좌표까지 같이 들어옵니다
API 연동 화면 (v0.3.1)
- 더보기 → 관리 → API 연동 (관리자 전용). 지도·알림·서버 키를 한 화면에서 관리합니다
- 저장된 키는 마스킹해서 보여주고,
.env에서 온 값인지 화면에서 넣은 값인지 구분해 표시합니다 - 웹 푸시(VAPID) 키 발급도 이 화면으로 옮겼습니다
고친 것
- 계정 추가 시 비밀번호를 확인합니다 (
v0.2.6)
업그레이드
Docker 이미지 빌드가 끝난 뒤:
updateDB 마이그레이션은 없습니다. 좌표 컬럼은 초기 스키마에 이미 있었습니다.
배포 후 할 일 — 지도 키 넣기
지도 기능은 카카오 JavaScript 키가 있어야 켜집니다. 키가 없으면 예전처럼 병원 이름을 직접 입력하는 화면만 나오고, 검색·지도·길찾기 UI는 나타나지 않습니다.
- 카카오 개발자 콘솔에서 앱을 만들고 JavaScript 키를 복사합니다
- 같은 콘솔의 플랫폼 → Web에 kibble 주소를 등록합니다 (도메인 제한)
- kibble에서 더보기 → 관리 → API 연동 → 카카오 지도 JavaScript 키에 붙여넣고 저장합니다
키는 서버 DB에 저장되고 .env나 코드에는 들어가지 않습니다.
Full Changelog: v0.2.5...v0.3.1
v0.2.5
고친 것
update가 새 compose를 /tmp에서 검사하면서 .env를 못 읽고 POSTGRES_PASSWORD/JWT_SECRET 경고를 냈습니다. 설치 경로의 .env를 쓰도록 고쳤습니다. 실제 비밀번호는 원래도 /opt/kibble/.env에서 읽고 있었습니다.
garage는 임시 파일로 compose를 검사하지 않아서 이 경고가 없었습니다.
업그레이드
Docker 이미지 빌드가 끝난 뒤:
updateupdate 스크립트는 다음 실행부터 새 로직을 씁니다. 이번 한 번은 경고가 남을 수 있고, 그다음 update부터는 안 나옵니다.
Full Changelog: v0.2.4...v0.2.5
v0.2.4
고친 것
빠른 기록(/q) 칩 높이를 28px에서 44px로 키워 탭하기 쉽게 했습니다. 행 간격도 조금 벌렸습니다.
업그레이드
Docker 이미지 빌드가 끝난 뒤:
updateFull Changelog: v0.2.3...v0.2.4
v0.2.3
고친 것
빠른 기록(/q) 칩을 가운데로 모으면 반쪽 폭을 넘는 칩이 앞이나 가운데에서 잘렸습니다.
- 왼쪽 칸은 왼쪽 정렬, 오른쪽 칸은 오른쪽 정렬
- 칸 경계에서 자르지 않아 가운데를 넘어도 칩이 보입니다
업그레이드
Docker 이미지 빌드가 끝난 뒤:
updateFull Changelog: v0.2.2...v0.2.3
v0.2.2
표시 이름
앱 이름을 Kibble로 통일했습니다(로그인, 브라우저 탭, PWA 홈 화면 추가, 푸시 알림). 패키지·저장소·캐시 키는 소문자 kibble입니다.
이미 홈 화면에 추가한 PWA는 설치 시점의 이름이 남을 수 있습니다. 이름을 바꾸려면 홈 화면에서 제거 후 다시 추가하십시오.
고친 것
빠른 기록 칩이 가운데에서 잘리던 문제
모바일 /q에서 2열 칩이 화면 중앙 경계에서 잘려 보였습니다. 라벨은 각 그룹 왼쪽에 두고, 그룹은 가운데로 모으며, 넘치면 칸 안에서만 가로 스크롤합니다.
업그레이드
update로컬에서 compose를 손댔다면:
update --forceFull Changelog: v0.2.1...v0.2.2
v0.2.1
v0.2.0 이하는 Docker/Proxmox 배포에서 API가 기동하지 않습니다. 이 릴리스로 올리십시오.
고친 것
API가 기동하지 않던 문제
compose의 api 커맨드가 migrate deploy && prisma db seed && node … 였습니다. prisma.config.ts의 seed: "tsx prisma/seed.ts"는 실행 시점 cwd 기준으로 풀리는데, 컨테이너 cwd가 /app이라 /app/prisma/seed.ts를 찾다 실패합니다(실제 위치는 /app/apps/api/prisma/seed.ts). && 체인이라 node index.js가 아예 실행되지 않았습니다.
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/app/prisma/seed.ts' imported from /app/
증상은 관리자 생성 화면 대신 로그인 화면이 뜨고 어떤 계정으로도 로그인되지 않음이었습니다. /api/*가 전부 실패하기 때문입니다.
기동 커맨드에서 시드 단계를 뺐습니다. 시스템 EventType은 API가 기동할 때 seedSystemEventTypes가 직접 시드하므로 원래 중복 단계였습니다.
로그인 화면이 원인을 가리던 문제
/api/auth/bootstrap/status 호출 실패를 전부 needsBootstrap: false로 흡수해서, "관리자가 이미 있다"와 "서버에 못 닿는다"가 같은 화면으로 보였습니다. 이제 구분해서 안내와 재시도 버튼을 띄웁니다. 첫 부팅에 마이그레이션이 도는 동안 접속해도 마찬가지입니다.
시드의 기본 관리자 계정 제거
시드 CLI가 ADMIN_PASSWORD 없이도 admin@example.com / changeme123 관리자를 만들었습니다. 비밀번호가 공개 저장소에 그대로 있고, 시드가 한 번이라도 돌면 user.count()가 1이 되어 로그인 화면의 최초 관리자 생성 분기가 영영 열리지 않습니다.
이제 ADMIN_PASSWORD를 명시한 경우에만 관리자를 만듭니다. Docker 배포에서는 위 오류로 시드가 실행된 적이 없지만, 로컬에서 npm run seed를 돌린 적이 있다면 확인하십시오 — docs/deploy.md §6.2.
업그레이드
update즉시 조치가 필요하면 컨테이너 안에서:
cd /opt/kibble
sed -i 's| && npx prisma db seed --config apps/api/prisma.config.ts||' docker-compose.prod.yml
docker compose -f docker-compose.prod.yml up -d문서
.env.example·docs/deploy.md—ADMIN_*환경변수 문서화 (기존에는 문서에 없는 조용한 기본값이었습니다)docs/deploy.md§6.1 · §6.2 — 기존 설치 대응 절차apps/api/prisma.config.ts— seed 경로가 cwd 기준이라는 주석
Full Changelog: v0.2.0...v0.2.1