Skip to content

Releases: eigger/kibble

v0.7.0

Choose a tag to compare

@eigger eigger released this 03 Sep 14:42
d8df005

"작성자" 정보가 화면에 안 뜨던 진짜 원인을 찾아 고쳤고, 이제 편집자 이름도 함께 보입니다. 첨부 사진 관련 버그 두 개도 고쳤습니다.

고친 것

"{이름} 작성" 줄이 처음부터 뜬 적이 없었습니다

바로 지난 버전(v0.6.0)에서 추가했던 이 표시가 코드의 사소한 실수로 한 번도 렌더되지 않고 있었습니다. "수정 시간은 나오는데 작성자는 없다"는 리포트가 정확히 이 버그를 짚어냈습니다.

첨부 사진 상세 그리드가 이상하게 벌어져 보이던 문제

기록을 열어 사진을 여러 장 봤을 때, 사진이 작게 찌그러진 채 넓은 빈 공간과 함께 떠 있던 버그입니다. 안 쓰이던 옛날 CSS 코드가 몰래 충돌을 일으키고 있었습니다.

새 기능

"수정한 사람" 이름 추가

기록을 열면 하단에 다음처럼 표시됩니다:

보람 작성 · 별이 · 9월 3일 10:02 수정

여러 사람이 함께 기록하는 가구에서, 누가 마지막으로 이 기록을 고쳤는지도 이제 보입니다. 만든 사람과 고친 사람이 같으면 이름을 반복해서 보여주지 않습니다.

이력 목록에서 사진을 바로 볼 수 있습니다

  • 기존엔 사진 1장만 미리보기로 보였는데, 이제 최대 4장까지 보여줍니다
  • 사진을 누르면 바로 확대 보기가 열립니다 (기존엔 사진을 눌러도 기록 상세만 열렸습니다)
  • 행의 나머지 부분을 누르면 예전처럼 기록 상세가 열립니다

업그레이드

update

DB 마이그레이션이 있습니다 (Event.updatedById 컬럼 추가). update가 자동으로 적용합니다.

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@eigger eigger released this 03 Sep 14:03
a43bef7

투약 시간 버튼이 안 보이던 버그를 고쳤고, 기록 상세에 작성자·최종 수정 표기가 추가됐습니다.

고친 것

투약 시간 버튼이 흰 배경에 흰 글자였던 문제

케어 화면에서 처방을 추가한 뒤, "오전 8:00" 같은 투약 시간 버튼의 텍스트가 안 보이던 버그입니다. 배경색과 글자색이 우연히 같은 흰색이었던 게 원인입니다. "수정" 버튼은 멀쩡했던 이유도 함께 확인했습니다.

새 기능

기록 상세에 작성자·최종 수정 표기

기록을 열면 하단에 다음처럼 한 줄이 붙습니다:

보람 작성 · 9월 3일 10:02 수정

  • 여러 사람이 함께 기록하는 가구에서 "누가 언제 이걸 적었는지" 바로 보입니다
  • 자동 입력(API 연동)으로 생긴 기록처럼 작성자를 알 수 없는 경우는 그 줄이 조용히 빠집니다
  • 기록한 직후에는 "수정" 표시가 붙지 않습니다 — 실제로 나중에 고쳤을 때만 보입니다

업그레이드

update

DB 마이그레이션은 없습니다.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@eigger eigger released this 03 Sep 08:59
7bb0c19

사진 확대가 되고, 카카오 길찾기가 폰에서 제대로 열립니다. 이력 화면도 손봤습니다.

고친 것

카카오 길찾기가 경로를 못 잡던 문제

map.kakao.com/link/to/… 웹 링크를 쓰고 있어서 폰에서 앱으로 넘어가지 않고 웹 지도만 떴습니다. 네이버·티맵은 앱 스킴(nmap://, tmap://)인데 카카오만 https였던 게 원인입니다. 이제 kakaomap://route로 열립니다.

버튼 이름도 실제로 열리는 앱에 맞춰 "카카오맵" 으로 바꿨습니다.

이력 행의 수정·삭제 버튼 위치

행 전체 기준으로 가운데 정렬돼 있어서, 메모가 길거나 이름이 두 줄이면 버튼이 아래로 내려갔습니다. 이제 항상 태그와 같은 줄에 있습니다.

이력 목록에서 병원 주소 제거

목록에는 병원 이름까지만 나옵니다. 주소는 기록을 열면 그대로 보입니다.

새 기능

사진 확대

기록의 사진을 열었을 때:

  • — 두 손가락으로 벌려서 확대, 끌어서 이동, 두 번 톡 쳐서 원래대로
  • PC — 마우스 휠로 확대·축소, 끌어서 이동, 더블클릭으로 원래대로
  • 확대 중에는 "원래 크기" 버튼이 뜹니다

영상은 기존 재생 컨트롤 그대로입니다.

그 외

  • fast-uri 보안 권고 대응 (의존성 갱신)

업그레이드

update

DB 마이그레이션은 없습니다.

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@eigger eigger released this 02 Sep 13:43

관리자용 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 이미지 빌드가 끝난 뒤:

update

DB 마이그레이션은 없습니다.

⚠️ 기존 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

Choose a tag to compare

@eigger eigger released this 02 Sep 12:38
68ad5e8

카카오 지도 연동이 들어갔습니다. 병원 방문을 기록할 때 상호로 검색해서 고르면 좌표까지 남고, 나중에 이력에서 지도로 보고 길찾기를 바로 띄울 수 있습니다.

v0.2.6이 릴리스되지 않았던 터라 이번 배포에 함께 들어갑니다.

새 기능

병원 상호 검색 → 지도 → 내비 (v0.3.0)

  • 병원 방문 기록의 병원 칸에 [병원 찾기] 버튼. "○○동물병원"으로 검색해 고르면 이름·주소·좌표·카카오맵 링크가 함께 저장됩니다 (기본으로 병원만 검색, 현재 위치가 가까운 곳 우선)
  • 이력에서 그 기록을 열면 지도[T맵][카카오내비][네이버지도] 버튼이 뜹니다
  • 예전에 병원 이름만 적어 둔 기록도 주소가 있으면 지오코딩해서 지도가 나옵니다
  • 자주 가는 병원 칩을 누르면 좌표까지 같이 들어옵니다

API 연동 화면 (v0.3.1)

  • 더보기 → 관리 → API 연동 (관리자 전용). 지도·알림·서버 키를 한 화면에서 관리합니다
  • 저장된 키는 마스킹해서 보여주고, .env에서 온 값인지 화면에서 넣은 값인지 구분해 표시합니다
  • 웹 푸시(VAPID) 키 발급도 이 화면으로 옮겼습니다

고친 것

  • 계정 추가 시 비밀번호를 확인합니다 (v0.2.6)

업그레이드

Docker 이미지 빌드가 끝난 뒤:

update

DB 마이그레이션은 없습니다. 좌표 컬럼은 초기 스키마에 이미 있었습니다.

배포 후 할 일 — 지도 키 넣기

지도 기능은 카카오 JavaScript 키가 있어야 켜집니다. 키가 없으면 예전처럼 병원 이름을 직접 입력하는 화면만 나오고, 검색·지도·길찾기 UI는 나타나지 않습니다.

  1. 카카오 개발자 콘솔에서 앱을 만들고 JavaScript 키를 복사합니다
  2. 같은 콘솔의 플랫폼 → Web에 kibble 주소를 등록합니다 (도메인 제한)
  3. kibble에서 더보기 → 관리 → API 연동 → 카카오 지도 JavaScript 키에 붙여넣고 저장합니다

키는 서버 DB에 저장되고 .env나 코드에는 들어가지 않습니다.

Full Changelog: v0.2.5...v0.3.1

v0.2.5

Choose a tag to compare

@eigger eigger released this 02 Sep 04:36
9032d75

고친 것

update가 새 compose를 /tmp에서 검사하면서 .env를 못 읽고 POSTGRES_PASSWORD/JWT_SECRET 경고를 냈습니다. 설치 경로의 .env를 쓰도록 고쳤습니다. 실제 비밀번호는 원래도 /opt/kibble/.env에서 읽고 있었습니다.

garage는 임시 파일로 compose를 검사하지 않아서 이 경고가 없었습니다.

업그레이드

Docker 이미지 빌드가 끝난 뒤:

update

update 스크립트는 다음 실행부터 새 로직을 씁니다. 이번 한 번은 경고가 남을 수 있고, 그다음 update부터는 안 나옵니다.

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@eigger eigger released this 02 Sep 04:28
ead582a

고친 것

빠른 기록(/q) 칩 높이를 28px에서 44px로 키워 탭하기 쉽게 했습니다. 행 간격도 조금 벌렸습니다.

업그레이드

Docker 이미지 빌드가 끝난 뒤:

update

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@eigger eigger released this 02 Sep 03:49
12c82ac

고친 것

빠른 기록(/q) 칩을 가운데로 모으면 반쪽 폭을 넘는 칩이 앞이나 가운데에서 잘렸습니다.

  • 왼쪽 칸은 왼쪽 정렬, 오른쪽 칸은 오른쪽 정렬
  • 칸 경계에서 자르지 않아 가운데를 넘어도 칩이 보입니다

업그레이드

Docker 이미지 빌드가 끝난 뒤:

update

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@eigger eigger released this 02 Sep 03:21
fb93b92

표시 이름

앱 이름을 Kibble로 통일했습니다(로그인, 브라우저 탭, PWA 홈 화면 추가, 푸시 알림). 패키지·저장소·캐시 키는 소문자 kibble입니다.

이미 홈 화면에 추가한 PWA는 설치 시점의 이름이 남을 수 있습니다. 이름을 바꾸려면 홈 화면에서 제거 후 다시 추가하십시오.

고친 것

빠른 기록 칩이 가운데에서 잘리던 문제

모바일 /q에서 2열 칩이 화면 중앙 경계에서 잘려 보였습니다. 라벨은 각 그룹 왼쪽에 두고, 그룹은 가운데로 모으며, 넘치면 칸 안에서만 가로 스크롤합니다.

업그레이드

update

로컬에서 compose를 손댔다면:

update --force

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@eigger eigger released this 02 Sep 00:11
32e7ca3

v0.2.0 이하는 Docker/Proxmox 배포에서 API가 기동하지 않습니다. 이 릴리스로 올리십시오.

고친 것

API가 기동하지 않던 문제

compose의 api 커맨드가 migrate deploy && prisma db seed && node … 였습니다. prisma.config.tsseed: "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.mdADMIN_* 환경변수 문서화 (기존에는 문서에 없는 조용한 기본값이었습니다)
  • docs/deploy.md §6.1 · §6.2 — 기존 설치 대응 절차
  • apps/api/prisma.config.ts — seed 경로가 cwd 기준이라는 주석

Full Changelog: v0.2.0...v0.2.1