Repository navigation
Releases: catgarret/HangulSync
Releases · catgarret/HangulSync
Release list
HangulSync v1.0.12
자동 탐색 안내 개선
- 자동 탐색을 누른 뒤 나타나던 설명창을 제거했습니다.
- 한쪽 Mac에서 버튼을 한 번 누르면 즉시 Mac을 찾고 있습니다 상태로 바뀝니다.
- 설정 화면 안에 상대 Mac에서는 아무것도 누르지 말고 HangulSync만 실행해 두세요라고 표시합니다.
- 페어링이 완료되면 버튼이 자동으로 원래 상태로 돌아옵니다.
- 2분 안에 찾지 못해도 버튼이 자동으로 복구되어 다시 시도할 수 있습니다.
- 한 번 승인한 Mac의 Tailscale 주소를 안전한 신뢰 목록과 함께 기억해,
Tailscale의 온라인 표시가 늦더라도 다음 실행에서 바로 재연결을 시도합니다. - Bonjour나 Tailscale 직접 연결이 있으면 공용 릴레이 전송을 생략해
지연과 릴레이 사용량을 줄였습니다. - 공용 릴레이가 요청을 거절하면 아무 반응 없이 멈추지 않고
원인을 확인할 수 있는 오류를 표시합니다.
Full Changelog: v1.0.11...v1.0.12
HangulSync v1.0.11
페어링 완료 상태 수정
- 한쪽 승인만 저장될 수 있던 문제를 수정했습니다.
- 초대 코드 페어링은 양쪽 Mac의 승인이 모두 확인된 뒤에만 완료됩니다.
- 완료되면 양쪽에 페어링 완료 메시지가 표시되고 다음 실행부터 자동으로 재연결합니다.
- 기존 버전에서 한쪽에만 남은 신뢰 기록도 새 페어링 과정에서 복구합니다.
- 암호화 릴레이로 연결된 Mac도 연결 대수와 기기 목록에 표시합니다.
연결 안정성
- 캐시를 사용하지 않는 ntfy에서 순간적으로 메시지가 유실되는 문제를 줄였습니다.
- 동일한 암호문을 짧은 간격으로 재전송하고 sequence 검사로 중복 적용을 차단합니다.
연결 화면
- 설정 화면에서 추가 선택창을 제거했습니다.
- 위쪽에 초대 코드 만들기와 초대 코드 입력을 나란히 배치했습니다.
- 아래쪽에 자동으로 찾기를 전체 폭의 주요 버튼으로 배치했습니다.
- 버튼 폭을 고정 계산해 언어별 문구가 레이아웃을 밀지 않도록 했습니다.
Full Changelog: v1.0.10...v1.0.11
HangulSync v1.0.10
연결 안내 정리
- 앱의 연결창에 한쪽 Mac에서만 누르면 된다는 안내를 명시했습니다.
- Bonjour와 Tailscale은 앱이 자동으로 찾고, 자동 탐색이 실패할 때만 초대 코드를 사용하도록 설명을 정리했습니다.
- 두 Mac에서 동시에 페어링 버튼을 누를 필요가 없습니다.
- 초대 코드는 어느 한쪽에서 생성하고 반대쪽에서 입력하면 됩니다.
README 업데이트
- 최초 연결 방법을 한국어, 영어, 일본어, 중국어 간체·번체, 태국어, 러시아어, 이탈리아어에 동일하게 반영했습니다.
- 기존 설정창 레이아웃에는 요소를 추가하지 않고 안내 문구만 교체해 버튼과 카드 간격을 유지했습니다.
Full Changelog: v1.0.9...v1.0.10
HangulSync v1.0.9
자동 페어링 수정
- 페어링 버튼을 누른 뒤 Tailscale 연결이 새로 준비될 때 페어링 요청 표시가 누락되던 문제를 수정했습니다.
- 이제 한쪽 Mac에서만 새 Mac 페어링을 눌러도 새 연결에 요청이 전달됩니다.
- 상대 Mac은 요청에 응답하며 양쪽에 동일한 확인 코드와 승인창을 표시합니다.
전체 연결 검증
- 두 개의 독립 장기키를 가진 가상 Mac으로 실제 ntfy 전체 연결 테스트를 추가했습니다.
- 일회용 초대 생성, 공개키 교환, Curve25519 키 합의, 암호화 릴레이 송수신까지 한 번에 검증합니다.
- 전체 테스트에서
END_TO_END_PASS를 확인한 뒤 배포했습니다.
Full Changelog: v1.0.8...v1.0.9
HangulSync v1.0.8
페어링이 되지 않던 문제 수정
- ntfy의 최대 토픽 길이 64자를 초과해 서버가 페어링 메시지를 거절하던 문제를 수정했습니다.
- 일회용 초대 코드의 암호화 응답이 양쪽 Mac 사이에서 실제로 왕복하는지 검증했습니다.
- 같은 길이 문제로 작동하지 않던 페어링 이후 암호화 인터넷 릴레이도 함께 수정했습니다.
- 토픽 길이 제한이 다시 깨지지 않도록 자동 테스트를 추가했습니다.
연결 화면 정리
- 사용자가 Bonjour, Tailscale 같은 연결 방식을 고르지 않도록 화면 문구를 단순화했습니다.
- 앱은 먼저 사용 가능한 경로로 자동 탐색하고, 찾지 못할 때만 초대 코드를 사용하도록 안내합니다.
- 초대 코드 표시·입력 영역을 고정 폭으로 정렬해 한쪽으로 늘어나던 레이아웃을 수정했습니다.
Full Changelog: v1.0.7...v1.0.8
HangulSync v1.0.7
페어링 입력 사용성 수정
- 초대 코드 옆에 복사 버튼을 추가했습니다.
- 초대 코드 입력창 옆에 붙여넣기 버튼을 추가했습니다.
- 입력창에서
⌘V와 우클릭 붙여넣기를 사용할 수 있습니다. - 입력창이 열리면 바로 키보드 입력을 받을 수 있도록 포커스를 자동으로 이동합니다.
Tailscale 자동 연결 수정
- 자동 연결 / Tailscale을 누르면 Tailscale 상태를 즉시 다시 조회합니다.
- 이전 연결이 대기 상태에 멈췄다면 취소하고 새로 연결합니다.
- Tailscale이 일시적으로 오프라인으로 표시한 macOS 기기도 페어링 중에는 직접 연결을 시도합니다.
Full Changelog: v1.0.6...v1.0.7
HangulSync v1.0.6
다른 네트워크에서도 페어링
- 서로 다른 네트워크의 Mac도 일회용 초대 코드로 처음 페어링할 수 있습니다.
- 한쪽에서 초대 코드를 만들면 자동으로 클립보드에 복사됩니다.
- 다른 Mac에서 2분 안에 붙여 넣으면 양쪽에 동일한 6자리 확인 코드가 표시됩니다.
- 같은 네트워크에서는 기존 Bonjour 자동 탐색을 그대로 사용할 수 있습니다.
보안과 사용성
- 초대 채널은 256-bit 임의 비밀값에서 HKDF로 토픽 키와 암호화 키를 분리합니다.
- ntfy에는 ChaChaPoly로 암호화된 내용만 전송하며 캐시와 Firebase 전달을 비활성화합니다.
- 초대 채널은 120초 후 폐기되고 timestamp와 nonce로 재전송을 차단합니다.
- 승인 시 이 기기를 계속 신뢰를 켜면 이후 재연결에서는 코드를 다시 묻지 않습니다.
- 이 옵션을 끄면 HangulSync를 종료할 때까지만 기기를 신뢰합니다.
안내 문서
- 원격 페어링, 2분 유효시간, 계속 신뢰 옵션을 8개 언어 README에 반영했습니다.
Full Changelog: v1.0.5...v1.0.6
HangulSync v1.0.5
페어링 인식 수정
- 양쪽 Mac에서 동시에 페어링 버튼을 눌러야 하던 문제를 수정했습니다.
- 이제 한쪽 Mac에서 새 Mac 페어링을 누르면 상대 Mac이 요청에 응답합니다.
- 양쪽에 동일한 6자리 코드와 승인창이 표시됩니다.
- 연결되지 않은 상태의 안내 문구가 페어링 버튼을 바로 안내하도록 변경됐습니다.
Keychain 안내
- 첫 페어링 때 나타날 수 있는 macOS 로그인 Keychain 접근창의 처리 방법을 README에 추가했습니다.
- 암호는 HangulSync가 아니라 macOS Keychain 시스템창에만 입력해야 함을 명시했습니다.
- 한국어, 영어, 일본어, 중국어 간체·번체, 태국어, 러시아어, 이탈리아어 문서를 모두 업데이트했습니다.
Full Changelog: v1.0.4...v1.0.5
HangulSync v1.0.4
설정 화면 레이아웃 수정
- 페어링 버튼이 카드 전체 폭으로 늘어나던 문제를 수정했습니다.
- 새 Mac 페어링과 모든 페어링 초기화를 별도 액션 카드의 한 행으로 정리했습니다.
- 초기화 버튼을 보조 동작으로 표시해 주요 페어링 버튼과 시각적으로 구분했습니다.
- 업데이트 링크를 푸터에서 분리해 버전, GitHub, dongri.me 링크가 밀리거나 잘리지 않게 했습니다.
- 상태 카드, 옵션 카드, 페어링 카드, 푸터 사이의 간격을 다시 맞췄습니다.
Full Changelog: v1.0.3...v1.0.4
HangulSync v1.0.3
암호화 인터넷 릴레이 복원
- 직접 연결이 없을 때 ntfy를 통한 인터넷 동기화를 다시 제공합니다.
- ntfy에는 CryptoKit ChaChaPoly로 암호화된 payload만 전송합니다.
- ntfy 토픽 키와 메시지 암호화 키를 HKDF-SHA256으로 따로 파생합니다.
- 게시 요청에
X-Cache: no,X-Firebase: no를 적용합니다. - timestamp, 세션 ID, sequence를 검증해 오래된 메시지와 재전송 메시지를 거부합니다.
보안 페어링
- 기기별 Curve25519 장기 개인키를 macOS Keychain에 저장합니다.
- 설정의 새 Mac 페어링 버튼을 누른 뒤 60초 동안만 새 기기를 승인할 수 있습니다.
- 양쪽 Mac에 동일한 6자리 확인 코드를 표시합니다.
- 확인 코드가 같고 사용자가 양쪽에서 승인한 기기만 릴레이 키를 만들 수 있습니다.
- 연결된 기기를 개별 삭제하거나 모든 페어링을 초기화할 수 있습니다.
업데이트 후 필요한 작업
- 두 Mac 모두 HangulSync v1.0.3으로 업데이트합니다.
- 두 Mac의 설정에서 새 Mac 페어링을 누릅니다.
- 양쪽 확인 코드가 같은지 확인합니다.
- 양쪽에서 연결을 승인합니다.
v1.0.2 이전의 UUID 승인 기록과 기존 ntfy 릴레이 키는 신뢰 정보로 가져오지 않습니다.
안전한 키를 새로 만들기 위해 업데이트 후 최초 한 번은 다시 페어링해야 합니다.
Full Changelog: v1.0.2...v1.0.3