Skip to content

Releases

ThunderControl 0.9.11

ThunderControl 0.9.11 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 08 Nov 07:15

일반 텍스트 클립보드 공유

환경설정에서 새 텍스트 공유를 양쪽 Mac 모두 켜면 새로 복사한 일반 UTF8 텍스트를 기존 인증 암호화 연결로 전달합니다. 두 Mac 모두 0.9.11 이상이어야 합니다. 기존 이미지 공유는 0.9.10과도 호환됩니다.

  • 텍스트 공유는 기본 OFF이며 이미지 동의와 분리됩니다. 최대 1MiB, 공백/줄바꿈/한글/emoji/NUL을 보존합니다. 빈 내용과 잘못된 UTF8은 보내지 않습니다.
  • 하나의 pasteboard worker가 이미지와 텍스트 순서를 함께 관리합니다. 새 로컬 복사가 우선하며, 철회/잠금/세션 변경과 전송 직전 bytes 차단을 유지합니다.
  • 비공개/원격/일시적/자동 생성/자체 수신 표시 및 파일 URL/promise 항목의 텍스트는 읽지 않습니다. RTF/HTML과 파일 내용은 보내지 않습니다.
  • 수신 내용은 currentHostOnly와 자체 표시를 사용해 재전송을 방지합니다. 텍스트 내용은 상태나 진단 로그에 넣지 않습니다.

앱은 macOS Handoff나 Universal Clipboard 설정을 자동으로 변경하지 않습니다. currentHostOnly는 수신 항목의 재전파를 제한할 뿐 시스템 Universal Clipboard를 전역적으로 끄지는 않습니다. 파일 복사와 붙여넣기는 이 기능이 아니라 파일 탭을 사용하세요.

검사는 이름 분리 pasteboard와 암호화 localhost, 별도 로컬 UI 검사 앱을 사용했습니다. 시스템의 붙여넣기 안내창 제거 효과는 OS 설정과 실제 두 Mac에서 따로 확인해야 합니다.

ThunderControl 0.9.10

ThunderControl 0.9.10 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 08 Nov 04:44

폴더 전송과 완료 파일 재개

파일 탭에서 폴더 하나를 선택하거나 끌어놓아 보낼 수 있습니다. 받는 Mac에서 저장 위치와 이름을 한 번 승인합니다. 폴더를 보내려면 두 Mac 모두 0.9.10 이상이어야 합니다. 기존 단일 파일 전송은 0.9.9와도 호환됩니다.

  • 기존 인증 연결의 별도 암호화 파일 채널을 재사용합니다. 입력과 영상 채널로 파일 데이터를 보내지 않습니다.
  • 하위 폴더, 빈 폴더와 숨김 파일을 포함합니다. 파일 하나는 최대 64GiB입니다. 폴더 전체에는 이 64GiB 한도를 적용하지 않습니다. 목록은 최대 100000개 항목과 32MiB 메타데이터입니다.
  • 중단 후에는 바뀌지 않은 같은 원본 폴더를 다시 선택하고, 받는 쪽에서 같은 위치와 이름을 지정하면 검증된 완료 파일을 건너뜁니다. 파일 중간부터 재개하는 기능은 없습니다.
  • 받는 쪽의 .partial 폴더와 .partial.journal 기록을 사용합니다. 중단한 완료 파일은 디스크에 남습니다. 정상 완료 시 새 폴더를 게시하고 기록을 정리합니다. 기존 사용자 폴더와 합치거나 덮어쓰지 않습니다.
  • 파일별 SHA256, 남은 공간, 경로와 inode를 검사하고 받은 파일의 격리 속성을 유지합니다. 심볼릭 링크, 특수 파일과 권한/ACL/resource fork 복제는 지원하지 않습니다.

폴더 목록, 수신 저장 및 재개, 순차 전송 엔진은 AppKit이나 Relay 없이 검사할 수 있는 별도 Swift 모듈로 나뉩니다.

검증과 제한

독립 모듈 검사, 새 키와 세션 ID를 사용하는 실제 localhost 암호화 양방향 중단/재개, 기존 파일 전송, 16.2초 검증 중 heartbeat, 제품과 같은 view/coordinator를 쓰는 별도 로컬 검사 앱의 실제 폴더 드래그와 Open/Save UI를 확인했습니다. 100x63GB는 실제 희소 파일의 목록 및 공간 사전 검사이며 6.3TB의 실제 데이터를 전송한 검사는 아닙니다. 실제 두 Mac 사이 전송은 아직 확인하지 않았습니다.

원본에 .DS_Store 같은 항목이 추가되면 원본이 바뀐 것이므로 기존 작업 재개를 거부합니다. 폴더의 접근 메타데이터만 바뀌는 경우는 허용합니다. 받는 .partial 안에 목록에 없는 파일이 생기면 그 파일을 지우거나 함께 게시하지 않고 중단합니다. 아주 초기의 프로세스 강제 종료나 알 수 없는 잔여 항목은 수동 정리 또는 다른 저장 이름이 필요할 수 있습니다. 마지막 확인이 유실되면 상대 저장 상태를 먼저 확인하세요.

ThunderControl 0.9.9

ThunderControl 0.9.9 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 12:35

양방향 파일 전송 첫 버전

두 Mac에 0.9.9 이상을 설치하고 기존 연결을 인증하면 파일 탭에서 일반 파일 하나를 보낼 수 있습니다. 파일을 끌어놓거나 선택하고, 받는 Mac에서도 파일 탭을 열어 **수락하고 저장…**으로 위치를 선택하세요.

  • 방향과 관계없이 파일 하나씩, 최대 64GiB입니다. 폴더, 여러 파일, 이어받기와 Finder 복사/붙여넣기는 포함하지 않습니다.
  • 진행률, 거절과 취소를 제공합니다. 파일 내용의 SHA-256을 확인하고 실제 저장 확인을 받은 뒤 완료로 표시합니다.
  • 파일 데이터는 입력 및 영상과 다른 암호화 채널을 사용합니다. 기존 파일은 덮지 않고 받은 파일을 자동 실행하지 않습니다.
  • 받은 파일의 macOS 격리 보안을 유지하며, 파일 내용과 키는 로그에 남기지 않습니다.
  • 페어링, 권한, 이미지 공유와 물리 화면 설정을 초기화하지 않습니다. 0.9.8과의 입력 및 이미지 공유도 유지합니다.

전체 앱 자체 검사, 입력 TCP 회귀와 UI 배치 검사를 통과했습니다. 실제 localhost 양방향 전송과 수신 승인/저장 UI도 검사했습니다. 다른 키/세션, 재전송, 손상, 잘못된 오프셋/해시 등 16개 공격 검사도 차단했습니다. 일반 파일이 아닌 FIFO 선택이 멈추던 경계는 재현 후 즉시 거부하도록 수정했습니다.

실제 두 Mac 사이의 파일 송수신과 실제 드래그 제스처의 실사용 검증은 아직입니다. 파일 선택 버튼으로 보낸 로컬 UI 검사는 통과했습니다. 중간 실패는 부분 파일을 정리하지만 비정상 강제 종료와 전원 손실까지 자동 복구하지는 않습니다. 마지막 확인 전 연결이 끊기면 상대 파일을 확인한 뒤 다시 보내세요.

ThunderControl 0.9.8

ThunderControl 0.9.8 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 10:39

캡처와 이미지 복사 중 입력 연결 유지

0.9.8은 이미지 클립보드의 메타데이터 조회, 이미지 검증과 쓰기를 메인 스레드 밖의 직렬 작업 큐에서 처리합니다. 입력 처리와 클립보드 작업이 같은 메인 큐를 점유하던 경로를 분리했습니다.

수신 대기열 32개가 잠시 찼을 때는 즉시 연결을 끊지 않고, 처리 공간을 제한된 시간 동안 기다립니다. 한도는 그대로 32개이며 입력을 합치거나 순서를 바꾸지 않습니다. 대기 중 취소는 메인 큐의 재개에 의존하지 않습니다. 장시간 정체는 기존 오류로 안전 종료합니다.

공유 OFF, 세션 취소와 오래된 작업의 폐기는 유지합니다. 받은 이미지는 현재 Mac 전용으로 기록하고, 원격, 비공개, 임시, 자동 생성 및 자체 수신 표시가 있는 데이터는 재전송하지 않습니다. 입력의 기존 0.35초 유효 기간 검사도 유지하므로, 복구 후 오래된 입력을 뒤늦게 실행하지 않습니다.

0.9.7과 입력 및 이미지 통신은 호환됩니다. 양쪽 Mac에 0.9.8을 설치하면 양쪽 클립보드 작업이 입력 처리와 분리됩니다. 기존 이미지 공유 설정, 페어링, 권한 및 디스플레이 설정을 초기화하지 않습니다.

실제 Relay와 로컬 TCP를 사용하는 기록 전용 검사에서 수정 전 대기열 포화 종료를 재현했습니다. 수정 후 64개 입력의 순서, 연결 유지, 취소, 세대 변경, 장시간 정체와 유효 기간이 지난 입력 차단을 검사했습니다. 별도 이름의 실제 NSPasteboard에서도 작업 지연, OFF, 취소, 새 복사 우선 및 반복 안전 복구를 검사했습니다.

이 검사는 실기기 두 Mac에서 캡처 팝업이 사라졌거나 모든 끊김이 없어졌다는 검증은 아닙니다. 이미 진행 중인 NSPasteboard IPC는 취소할 수 없으며, 공개 API에는 원자적인 변경 카운트 검사와 쓰기 기능이 없습니다. 쓰기 직전 상태를 다시 확인하지만 시스템 전체 클립보드 잠금이나 Handoff 설정 변경은 하지 않습니다.

ThunderControl 0.9.7

ThunderControl 0.9.7 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 09:23

이미지 공유와 macOS 공통 클립보드 격리

0.9.6에서 이미지 공유가 macOS 공통 클립보드와 겹쳐 원격 데이터를 자동으로 요청할 수 있던 경로를 보완했습니다.

  • Handoff 원격 표시, 비공개, 임시, 자동 생성 및 ThunderControl 자체 수신 표시가 있는 클립보드는 이미지 데이터를 요청하지 않습니다.
  • 받은 이미지는 현재 Mac에서만 쓰도록 준비하고 자체 표시를 함께 기록해, Handoff 재공유와 반복 전송을 막습니다. 시스템 전체 Handoff 설정은 바꾸지 않습니다.
  • PNG가 제공되면 TIFF를 추가로 요청하지 않습니다. 실제 이미지 데이터 읽기도 메인 스레드 밖에서 수행하며 권한, 세션, 변경 카운트를 다시 확인합니다.
  • 전송 도중 도착한 원격 메타데이터는 새 로컬 복사로 오인하지 않습니다. 실제 로컬 텍스트, 이미지와 비공개 복사 내용의 보호 및 최종 쓰기 검사는 유지합니다.
  • 입력 포커스, held-input 정리와 안전 중단 조건을 해제하지 않습니다.

이미지 공유는 두 Mac 모두 0.9.7 이상이어야 활성화됩니다. 0.9.6과의 기본 입력 연결은 유지하되, 그 조합에서는 이미지 공유를 시작하지 않습니다. 문제를 겪었다면 양쪽 업데이트 전에는 이미지 공유를 꺼두세요.

별도 이름의 실제 NSPasteboard에서 원격 제공자 미호출과 정상 PNG/TIFF 수신, 메타데이터 경계, 비공개 우선, 취소 및 타임아웃을 검사했습니다. 첫 읽기 회귀는 수정 전8실패/후0, 메타데이터 경계는 수정 전6실패/후0으로 확인했습니다.

장애 시점 로그에는 macOS 원격 클립보드 요청과 직후 상대 기기의 연결 종료가 확인됐지만, 맥북의 팝업 소유자나 최종 안전 중단 사유를 직접 확인한 것은 아닙니다. 이 버전이 해당 팝업을 실기기에서 완전히 없앴다고 주장하지 않습니다.

ThunderControl 0.9.6

ThunderControl 0.9.6 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 08:52

Control 방향키와 이미지 클립보드

  • Control+좌우 등의 방향키를 HID로 전달할 때 빠지던 Function 분류 플래그를 보존합니다. 추적하지 않은 Control, Command 등의 수정키를 임의로 생성하지 않습니다.
  • 연결된 두 Mac 사이에 새로 복사한 이미지를 양방향으로 공유할 수 있습니다. 두 Mac 모두 0.9.6 이상으로 업데이트하고 설정의 ‘연결된 Mac과 복사한 이미지 공유’를 켜세요. 기본값은 꺼짐입니다.
  • PNG와 TIFF 이미지를 PNG로 공유합니다. 전송 PNG는 최대 8 MiB입니다. 텍스트와 파일은 공유하지 않으며, 켜기 전에 이미 클립보드에 있던 내용도 보내지 않습니다.
  • 기존 인증 및 암호화 연결에서 32 KiB 조각 하나씩 확인받아 전송합니다. 동의 취소, 잠금, 연결 종료, 새 복사 내용과 오래된 응답을 확인하며 이미지 내용은 진단 로그에 남기지 않습니다.

최종 서명본의 전체 자체 검사, 기록 전용 TCP 검사, 이미지 프로토콜 암호화 검사와 별도 이름의 실제 NSPasteboard에서 양방향 PNG, TIFF 픽셀 보존, 반복 방지, 취소 및 타임아웃 검사를 통과했습니다. 방향키 플래그는 수정 전 실패와 수정 후 통과를 확인했습니다.

실제 두 Mac 사이 이미지 복사와 원격 Space 이동은 두 기기에 업데이트한 뒤 확인해야 합니다. 이전 버전과 입력 연결은 유지되지만 이미지 공유는 협상되지 않습니다. 기존 물리 모니터 보존 수정은 유지됩니다. macOS 권한이나 페어링을 초기화하지 않습니다.

Apple 공증과 스테이플 검증을 완료한 arm64 앱입니다.

ThunderControl 0.9.5

ThunderControl 0.9.5 Pre-release
Pre-release

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 07:33

물리 모니터 복제 설정 보존

가상 확장 화면을 종료할 때 macOS가 기존 물리 모니터의 복제를 해제하는 상황을 처리합니다.

  • 가상 화면을 제거하기 직전에 사용자의 최신 복제 관계를 기록합니다. 연결을 시작했을 때의 옛 배치를 다시 적용하지 않습니다.
  • 가상 화면이 완전히 사라진 뒤, 기존 복제 관계가 끊긴 경우에만 그 관계를 복구합니다.
  • 물리 모니터, 주 화면, 해상도, 위치가 달라지면 이전 설정을 강제로 덮어쓰지 않습니다.
  • 실제 설정을 다시 읽어 확인하며, API 성공만으로 완료 처리하지 않습니다. 종료 재시도에서도 검증을 건너뛰지 않습니다.

검증한 맥미니 구성은 28E850 → MSI MD271UL 복제, 두 MSI 모두 2560×1440, 60Hz입니다. 실제 두 Mac 연결로 가상 화면을 생성한 뒤 정상 종료했고, 모든 물리 화면의 주 화면, 복제 관계, 위치, 해상도 및 주사율이 전후 동일했습니다. 전체 자체 테스트, 기록 전용 TCP 검사, 헬퍼 테스트와 설정을 변경하지 않는 API 대역 검사도 통과했습니다.

헬퍼가 이미 비정상 종료되어 최신 설정을 기록할 수 없는 상황까지 복구를 보장하는 변경은 아닙니다. 페어링과 macOS 권한 초기화는 하지 않습니다. MacBook 설치와 업데이트 이후의 실제 재연결 상태는 별도로 확인해야 합니다.

Apple 공증 및 스테이플 검증을 완료한 arm64 앱입니다.

0.9.4 Explain blocked boundaries and resume input sharing

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 04:19

ThunderControl 0.9.4

입력 전환 준비 상태를 정확히 표시

화면 배치가 맞닿아 있어도 수신 Mac의 입력 공유가 꺼져 있으면 마우스는 넘어가지 않습니다. 이전에는 영상과 파란 경계가 보이는 상태에서 이 차단 이유를 확인하기 어려웠습니다.

  • 연결 중 입력 공유가 꺼져 있으면 이유와 입력 공유 재개 버튼을 표시합니다. 저장된 OFF를 자동으로 바꾸지 않고, 버튼을 명시적으로 눌렀을 때만 현재 인증된 연결에서 재개합니다. 영상 OFF 설정과 권한 및 안전 중단은 그대로 존중합니다.
  • 배치 미리보기와 실제 경계 판정이 같은 캡처 시점의 송신 화면 크기를 사용합니다. 전환 준비가 안 됐을 때는 경계를 중립 색상으로 표시합니다.
  • 경계 도달, 허용 또는 차단 판정, begin/ready/commit, 수신 진입과 첫 입력 적용을 연결 로그에서 구분합니다. 실제 화면 ID와 좌표, 배치 revision을 기록하며 키 입력 내용은 기록하지 않습니다.

가상 화면을 세 번째로 표시하더라도 실제 화면 ID로 라우팅하는 오른쪽 경계 회귀 테스트를 추가했습니다. 입력 프로토콜과 페어링은 변경하지 않았습니다. 맥북과 맥미니 모두 0.9.4로 업데이트하면 양쪽 단계 로그와 안내를 확인할 수 있습니다.

시스템 설정을 닫으면 사라진 빨간 테두리는 ThunderControl 결함으로 확정되지 않았으며, 관련 표시나 시스템 설정을 강제로 변경하는 코드는 넣지 않았습니다.

0.9.3 Preserve current display settings on connection

Choose a tag to compare

@2JIHAN 2JIHAN released this 07 Nov 03:34

ThunderControl 0.9.3

화면 연결 시 모니터 설정 보존

가상 확장 화면을 추가할 때 기존 모니터의 해상도나 주사율이 달라져 화면 연결이 실패하고 반복 재시도되던 문제를 수정했습니다.

생성 전 모드 객체를 재사용하지 않고 현재 모드 목록에서 같은 해상도와 주사율을 찾아 복구합니다. 현재 주 화면과 미러 관계를 확인한 시작 구간에서만 모드를 복구하며, 복구 후 해상도와 전체 배치를 엄격하게 검증합니다. 연결 실패 시 예전 화면 배치를 강제 재적용하던 정리 코드도 제거했습니다. 연결 후 사용자가 바꾼 화면 설정을 주기적으로 되돌리는 기능은 추가하지 않았습니다.

입력 프로토콜, 페어링, 권한, 제스처와 진단 저장 정책은 바뀌지 않았습니다. 맥북과 맥미니에 같은 버전을 설치할 수 있습니다.

Apple Silicon macOS용 앱입니다.

0.9.2 Keep gestures working after cursor activity

Choose a tag to compare

@2JIHAN 2JIHAN released this 05 Nov 05:37

Keep gestures working after cursor activity

Fixes a receiver-side state where passive mouse movement or scrolling could leave Mission Control and pinch gestures blocked while ordinary pointer input continued.

  • Cursor visibility is restored without revoking confirmed gesture ownership for mouse movement and scrolling.
  • Pending foreground activation still cancels on local activity. Keys, buttons, and drags retain their existing safety paths.
  • Gesture token, exact macOS-build compatibility, permission, display-map, and final-epoch checks are unchanged.

Compatibility

Update the receiving Mac mini to 0.9.2. A sending MacBook on 0.9.1 remains compatible with this receiver-side fix and pinch forwarding. No wire protocol changes are included.

Local-only capped diagnostic logging and manual folder export from 0.9.1 are unchanged. This release does not alter video policy, pairing data, or permissions. Source orphan filtering and opaque-gesture cancellation are unchanged.

Verified with signed memory-only gesture regressions and encrypted record-only TCP integration. Actual two-Mac gesture recognition still needs physical confirmation.