Skip to content

Releases: catgarret/HangulSync

HangulSync v1.0.12

Choose a tag to compare

@github-actions github-actions released this 27 Jul 05:58

자동 탐색 안내 개선

  • 자동 탐색을 누른 뒤 나타나던 설명창을 제거했습니다.
  • 한쪽 Mac에서 버튼을 한 번 누르면 즉시 Mac을 찾고 있습니다 상태로 바뀝니다.
  • 설정 화면 안에 상대 Mac에서는 아무것도 누르지 말고 HangulSync만 실행해 두세요라고 표시합니다.
  • 페어링이 완료되면 버튼이 자동으로 원래 상태로 돌아옵니다.
  • 2분 안에 찾지 못해도 버튼이 자동으로 복구되어 다시 시도할 수 있습니다.
  • 한 번 승인한 Mac의 Tailscale 주소를 안전한 신뢰 목록과 함께 기억해,
    Tailscale의 온라인 표시가 늦더라도 다음 실행에서 바로 재연결을 시도합니다.
  • Bonjour나 Tailscale 직접 연결이 있으면 공용 릴레이 전송을 생략해
    지연과 릴레이 사용량을 줄였습니다.
  • 공용 릴레이가 요청을 거절하면 아무 반응 없이 멈추지 않고
    원인을 확인할 수 있는 오류를 표시합니다.

Full Changelog: v1.0.11...v1.0.12

HangulSync v1.0.11

Choose a tag to compare

@github-actions github-actions released this 27 Jul 01:18

페어링 완료 상태 수정

  • 한쪽 승인만 저장될 수 있던 문제를 수정했습니다.
  • 초대 코드 페어링은 양쪽 Mac의 승인이 모두 확인된 뒤에만 완료됩니다.
  • 완료되면 양쪽에 페어링 완료 메시지가 표시되고 다음 실행부터 자동으로 재연결합니다.
  • 기존 버전에서 한쪽에만 남은 신뢰 기록도 새 페어링 과정에서 복구합니다.
  • 암호화 릴레이로 연결된 Mac도 연결 대수와 기기 목록에 표시합니다.

연결 안정성

  • 캐시를 사용하지 않는 ntfy에서 순간적으로 메시지가 유실되는 문제를 줄였습니다.
  • 동일한 암호문을 짧은 간격으로 재전송하고 sequence 검사로 중복 적용을 차단합니다.

연결 화면

  • 설정 화면에서 추가 선택창을 제거했습니다.
  • 위쪽에 초대 코드 만들기와 초대 코드 입력을 나란히 배치했습니다.
  • 아래쪽에 자동으로 찾기를 전체 폭의 주요 버튼으로 배치했습니다.
  • 버튼 폭을 고정 계산해 언어별 문구가 레이아웃을 밀지 않도록 했습니다.

Full Changelog: v1.0.10...v1.0.11

HangulSync v1.0.10

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:56

연결 안내 정리

  • 앱의 연결창에 한쪽 Mac에서만 누르면 된다는 안내를 명시했습니다.
  • Bonjour와 Tailscale은 앱이 자동으로 찾고, 자동 탐색이 실패할 때만 초대 코드를 사용하도록 설명을 정리했습니다.
  • 두 Mac에서 동시에 페어링 버튼을 누를 필요가 없습니다.
  • 초대 코드는 어느 한쪽에서 생성하고 반대쪽에서 입력하면 됩니다.

README 업데이트

  • 최초 연결 방법을 한국어, 영어, 일본어, 중국어 간체·번체, 태국어, 러시아어, 이탈리아어에 동일하게 반영했습니다.
  • 기존 설정창 레이아웃에는 요소를 추가하지 않고 안내 문구만 교체해 버튼과 카드 간격을 유지했습니다.

Full Changelog: v1.0.9...v1.0.10

HangulSync v1.0.9

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:52

자동 페어링 수정

  • 페어링 버튼을 누른 뒤 Tailscale 연결이 새로 준비될 때 페어링 요청 표시가 누락되던 문제를 수정했습니다.
  • 이제 한쪽 Mac에서만 새 Mac 페어링을 눌러도 새 연결에 요청이 전달됩니다.
  • 상대 Mac은 요청에 응답하며 양쪽에 동일한 확인 코드와 승인창을 표시합니다.

전체 연결 검증

  • 두 개의 독립 장기키를 가진 가상 Mac으로 실제 ntfy 전체 연결 테스트를 추가했습니다.
  • 일회용 초대 생성, 공개키 교환, Curve25519 키 합의, 암호화 릴레이 송수신까지 한 번에 검증합니다.
  • 전체 테스트에서 END_TO_END_PASS를 확인한 뒤 배포했습니다.

Full Changelog: v1.0.8...v1.0.9

HangulSync v1.0.8

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:47

페어링이 되지 않던 문제 수정

  • ntfy의 최대 토픽 길이 64자를 초과해 서버가 페어링 메시지를 거절하던 문제를 수정했습니다.
  • 일회용 초대 코드의 암호화 응답이 양쪽 Mac 사이에서 실제로 왕복하는지 검증했습니다.
  • 같은 길이 문제로 작동하지 않던 페어링 이후 암호화 인터넷 릴레이도 함께 수정했습니다.
  • 토픽 길이 제한이 다시 깨지지 않도록 자동 테스트를 추가했습니다.

연결 화면 정리

  • 사용자가 Bonjour, Tailscale 같은 연결 방식을 고르지 않도록 화면 문구를 단순화했습니다.
  • 앱은 먼저 사용 가능한 경로로 자동 탐색하고, 찾지 못할 때만 초대 코드를 사용하도록 안내합니다.
  • 초대 코드 표시·입력 영역을 고정 폭으로 정렬해 한쪽으로 늘어나던 레이아웃을 수정했습니다.

Full Changelog: v1.0.7...v1.0.8

HangulSync v1.0.7

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:36

페어링 입력 사용성 수정

  • 초대 코드 옆에 복사 버튼을 추가했습니다.
  • 초대 코드 입력창 옆에 붙여넣기 버튼을 추가했습니다.
  • 입력창에서 ⌘V와 우클릭 붙여넣기를 사용할 수 있습니다.
  • 입력창이 열리면 바로 키보드 입력을 받을 수 있도록 포커스를 자동으로 이동합니다.

Tailscale 자동 연결 수정

  • 자동 연결 / Tailscale을 누르면 Tailscale 상태를 즉시 다시 조회합니다.
  • 이전 연결이 대기 상태에 멈췄다면 취소하고 새로 연결합니다.
  • Tailscale이 일시적으로 오프라인으로 표시한 macOS 기기도 페어링 중에는 직접 연결을 시도합니다.

Full Changelog: v1.0.6...v1.0.7

HangulSync v1.0.6

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:25

다른 네트워크에서도 페어링

  • 서로 다른 네트워크의 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

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:09

페어링 인식 수정

  • 양쪽 Mac에서 동시에 페어링 버튼을 눌러야 하던 문제를 수정했습니다.
  • 이제 한쪽 Mac에서 새 Mac 페어링을 누르면 상대 Mac이 요청에 응답합니다.
  • 양쪽에 동일한 6자리 코드와 승인창이 표시됩니다.
  • 연결되지 않은 상태의 안내 문구가 페어링 버튼을 바로 안내하도록 변경됐습니다.

Keychain 안내

  • 첫 페어링 때 나타날 수 있는 macOS 로그인 Keychain 접근창의 처리 방법을 README에 추가했습니다.
  • 암호는 HangulSync가 아니라 macOS Keychain 시스템창에만 입력해야 함을 명시했습니다.
  • 한국어, 영어, 일본어, 중국어 간체·번체, 태국어, 러시아어, 이탈리아어 문서를 모두 업데이트했습니다.

Full Changelog: v1.0.4...v1.0.5

HangulSync v1.0.4

Choose a tag to compare

@github-actions github-actions released this 26 Jul 23:59

설정 화면 레이아웃 수정

  • 페어링 버튼이 카드 전체 폭으로 늘어나던 문제를 수정했습니다.
  • 새 Mac 페어링과 모든 페어링 초기화를 별도 액션 카드의 한 행으로 정리했습니다.
  • 초기화 버튼을 보조 동작으로 표시해 주요 페어링 버튼과 시각적으로 구분했습니다.
  • 업데이트 링크를 푸터에서 분리해 버전, GitHub, dongri.me 링크가 밀리거나 잘리지 않게 했습니다.
  • 상태 카드, 옵션 카드, 페어링 카드, 푸터 사이의 간격을 다시 맞췄습니다.

Full Changelog: v1.0.3...v1.0.4

HangulSync v1.0.3

Choose a tag to compare

@github-actions github-actions released this 26 Jul 23:54

암호화 인터넷 릴레이 복원

  • 직접 연결이 없을 때 ntfy를 통한 인터넷 동기화를 다시 제공합니다.
  • ntfy에는 CryptoKit ChaChaPoly로 암호화된 payload만 전송합니다.
  • ntfy 토픽 키와 메시지 암호화 키를 HKDF-SHA256으로 따로 파생합니다.
  • 게시 요청에 X-Cache: no, X-Firebase: no를 적용합니다.
  • timestamp, 세션 ID, sequence를 검증해 오래된 메시지와 재전송 메시지를 거부합니다.

보안 페어링

  • 기기별 Curve25519 장기 개인키를 macOS Keychain에 저장합니다.
  • 설정의 새 Mac 페어링 버튼을 누른 뒤 60초 동안만 새 기기를 승인할 수 있습니다.
  • 양쪽 Mac에 동일한 6자리 확인 코드를 표시합니다.
  • 확인 코드가 같고 사용자가 양쪽에서 승인한 기기만 릴레이 키를 만들 수 있습니다.
  • 연결된 기기를 개별 삭제하거나 모든 페어링을 초기화할 수 있습니다.

업데이트 후 필요한 작업

  1. 두 Mac 모두 HangulSync v1.0.3으로 업데이트합니다.
  2. 두 Mac의 설정에서 새 Mac 페어링을 누릅니다.
  3. 양쪽 확인 코드가 같은지 확인합니다.
  4. 양쪽에서 연결을 승인합니다.

v1.0.2 이전의 UUID 승인 기록과 기존 ntfy 릴레이 키는 신뢰 정보로 가져오지 않습니다.
안전한 키를 새로 만들기 위해 업데이트 후 최초 한 번은 다시 페어링해야 합니다.

Full Changelog: v1.0.2...v1.0.3