Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 10:03
· 192 commits to main since this release

[v1.0.0]

첫 정식 버전. 텔레그램 알림과 텔레그램에서의 PC 제어가 추가되었습니다. 설계 문서: docs/design/v1.0-notifications.md.

새 기능

  • 텔레그램 알림 — 서비스가 이벤트를 텔레그램 봇으로 보냅니다. 카테고리(SmartThings 원격 명령 / 예약 / 전원·서비스 / 보안 / 시스템) 21종을 개별로 켜고 끌 수 있고, 설정은 config.json telegram·notify에 저장되며 재시작 없이 반영됩니다. Bot API 아웃바운드만 사용해 포트 개방·웹훅이 필요 없습니다 (#55 #56 #60 #63)
  • 메시지 템플릿 — HTML parse mode, 카테고리 아이콘 + 제목 / 핵심 한 줄 / 필드 / PC 이름·시각 꼬리말 레이아웃. 한국어·영어, 간단/자세히 두 단계. 유예 알림에는 [바로 실행] [취소] 인라인 버튼 (#57)
  • 조용한 시간대 — 예: 22:00~07:00(자정 넘김 지원). 걸러진 알림은 해제 시각에 요약 한 통으로 전송, 보안 예외 옵션, /mute 2h 임시 뮤트. 유예 시작·강제 종료 알림은 항상 전송 (#59)
  • 보안 이벤트 집계 — 잘못된 시크릿 요청과 미허용 채팅 명령은 출처별 첫 건 즉시, 이후 5분 창으로 묶어 건수와 함께 한 번만 알림 (#58)
  • 전원·시스템 이벤트 — 서비스 시작(부팅·WoL 복귀, 외부 IP 포함), 절전 해제, 서비스 중지, 버전 변경 감지, 서비스 측 새 릴리스 확인(24시간마다). 릴리스 확인 로직을 internal/release로 분리해 앱과 서비스가 공유 (#60)
  • 텔레그램에서 PC 제어 — 롱 폴링 인바운드. 허용된 Chat ID만 처리하고 미허용 채팅은 보안 알림으로 보고, 서비스 시작 전에 쌓인 명령은 폐기. /status /menu /lock /screenoff /sleep /hibernate /restart /shutdown [분] /cancel /now /mute /unmute /help. 전원 명령은 [확인] 버튼 후 즉시 실행, 분을 붙이면 예약(출처 telegram). 기본 꺼짐 (#61)
  • 인라인 키보드와 메시지 편집 — 유예 알림 메시지는 어떤 경로로 끝나든(토스트·트레이·앱·WebUI·API·텔레그램·타이머·대체) 원문 아래 "✅ 취소됨 · 14:32 · 트레이" 같은 결과 줄로 편집되고 버튼이 제거됩니다. /menu의 확인 흐름은 메뉴 텍스트를 유지하고, 이미 처리된 버튼은 "⏹ 이미 처리됨"으로 정리 (#62)
  • Bot Token 보호 — Windows DPAPI 머신 범위로 암호화해 dpapi: 접두사로 저장. 평문 토큰은 다음 저장 때 자동 암호화. /api/config는 마스킹된 값(****1234)과 bot_token_set만 노출하며 -로 삭제 (#65 #63)
  • 알림 탭 (데스크톱 앱) — 텔레그램 연결(토큰·Chat ID·[Chat ID 찾기]·[테스트 발송]·봇 상태), 텔레그램에서 제어(허용 Chat ID, 경고), 받을 알림(카테고리 마스터+개별 체크, 모두 켬/끔), 조용한 시간대, 표시(상세 수준·PC 이름). 설정 탭과 같은 변경 감지 저장 (#64)
  • 서비스 API — POST /api/telegram/test, GET /api/telegram/me, GET|POST /api/telegram/chats; /api/schedule 출처에 telegram 추가 (#63 #61)
  • 오래된 텔레그램 명령 보호 — PC가 꺼져 있거나 절전 중일 때 보낸 명령이 복귀 후 도착하면(10분 초과) 실행하지 않고 "오래된 명령이라 실행하지 않았습니다"를 답장. 서비스 시작 전에 쌓인 명령은 그대로 폐기
  • 서명된 업데이트 매니페스트 — 릴리스마다 ed25519로 서명된 update.json(+.sig)을 함께 올리고, 앱은 내장 공개키로 서명을 검증한 뒤에만 매니페스트가 지정한 자산을 받아 SHA-256·크기를 대조하고 실행합니다. version은 릴리스 태그와 일치해야 하며(재생 방지), min_version으로 너무 오래된 설치본의 자동 업데이트를 막을 수 있습니다. 서명이 없거나 검증에 실패한 릴리스는 자동 설치 대신 릴리스 페이지 열기로 폴백. CI에 signmanifest sign/verify 단계 추가 (#66)

개선 (데스크톱 앱 UX)

  • 설정·알림 탭의 [저장]이 스크롤 밖 하단 바에 고정. 변경이 있으면 주황 점이 깜빡이는 "저장되지 않은 변경 사항" 표시와 탭 제목의 "•" 마커가 켜짐
  • 변경이 있는 탭에서 다른 탭으로 가거나 창을 닫을 때 [계속 편집] [저장 안 함] [저장] 확인
  • 기능 단위 켬/끔(텔레그램 알림·제어, 조용한 시간대, WebUI 접속, 로그인 자동 시작, 업데이트 확인)은 체크박스 대신 토글 스위치
  • 다크 테마에서 힌트 문구와 비활성 컨트롤이 읽히도록 회색 톤을 밝게 조정

변경

  • 설정 저장이 이제 라이브 설정 위에 덧씌워집니다. 구 버전 앱이나 WebUI가 telegram/notify를 보내지 않아도 값이 지워지지 않습니다
  • 서비스 로그의 예약 라인에 출처(origin)가 표기됩니다. state.json(마지막 실행 버전·알린 릴리스)이 exe 옆에 생성됩니다

업그레이드 안내

  • 기존 설치본에서는 앱의 [지금 업데이트]로 교체하거나, 서비스 중지 → exe 교체 → 서비스 시작으로 올리면 됩니다 (재설치 불필요). 기존 config.json은 그대로 호환되며 telegram/notify 키는 기본값으로 채워지고, 텔레그램은 설정 전까지 아무 것도 보내지 않습니다
  • 텔레그램을 쓰려면 알림 탭에서 봇 토큰과 Chat ID를 넣고 [테스트 발송]으로 확인한 뒤 "텔레그램 알림 사용"을 켜세요

Full Changelog: v0.3.4...v1.0.0