-
Notifications
You must be signed in to change notification settings - Fork 0
Features
Sangyong Bae edited this page Aug 20, 2026
·
12 revisions
2026-08-20 기준 · 테스트 전부 green(상세 docs/STATUS.md) · ★ 2-PC 실증 완료(Windows↔macOS — IP 수동 등록·메시지·파일 왕복) · 상세: docs/MILESTONES.md
- LAN 자동 발견 — IPv6/IPv4 멀티캐스트 + 브로드캐스트 동시(S1~S3), 폴백 사다리
- 주소 후보 목록 — v4 우선 순차 연결·성공 경로 승격(주소 계열 비대칭 R-21 해소)
- 수동 주소 연결 —
⌘/Ctrl+K항상 위 모달 · 포트 생략 = 기본 포트(10.0.0.5→:47200) -
세션 기본 포트 47200 — 설정으로 변경(즉시 적용) · 상태바에 실제 수신 포트 상시 표시 ·
--port <N>인자 - 연결 수립 전부 워커 스레드 — 죽은 상대를 클릭해도 UI 무정지
- 상태 점 — 초록(대화 중)/파랑(연결 시도 중)/빨강(끊김·연결 실패)/회색(발견만). FIN 없는 죽음도 ~22초 내 감지(TCP keepalive · 실측)
- 자동 재연결 — 끊긴 상대를 백오프(5초→5분)로 재시도, 상한 후 중단 · 수동 클릭이 항상 우선 · 자동 성립은 창을 열지 않는다
- 비발견 상대 목록 유지 — 다른 서브넷의 수동 등록 상대도 목록에 남고 기억한 주소로 재연결
- 표시 이름 기본값 = 정제된 호스트명(실명 추정 제거 · 판별 불가 시
beep-{지문}) — 실명 평문 방송(R-19) 해소 · 변경 시 즉시 재공지
- Noise_XX E2E 암호화 세션 · TOFU 핀(첫 접촉 고정 → 이후 Known)
- 신원·핀 영속 — 재시작해도 같은 신원·같은 신뢰(R-17 해소) · 핀 파일은 암호화(인간관계 목록 보호) · 손상 시 fail-closed 잠김
- 신원 키 백업·복원(설정 ▸ 프로필 — 복원은 핫 로딩)
- 카카오톡식 말풍선(좌우·꼬리·분 단위 시각·날짜 알약) · 멀티라인 입력(Shift+Enter) · 클립보드·우클릭 메뉴 · 그룹 발신자 라벨
- 읽지 않은 메시지 배지 — 목록에 개수 + 마지막 확인 시각 · 주 창 제목 "새 메시지 N" · 인바운드가 창을 열지 않는다(여는 것은 사용자)
- 메시지별 전달/읽음 표시 — 내 메시지 옆 점 마크(전달=점1·읽음=점2 · 색맹 안전 이중 부호화) · 전달·읽음은 완전 독립 축 · 읽음은 창 열면 자동 · 둘 다 수신자 설정으로 제어(기본 On) + 검증 상대에게만(프라이버시 게이트)
-
대화창 명령(
/로 시작 = 전송 안 됨) —/help·/fingerprint(내·상대 키 지문 출력) ·/verify(직접 대조 완료) ·/unverify(대조 취소) ·/trust(신뢰 상태) ·/close -
지문 기반 검증(08-18 확정) —
/fingerprint로 키 지문을 확인하고 전화·대면 등 다른 채널로 대조 →/verify로 직접 대조 완료(파란 실 배지). 상대 프로필 카드의 대조 완료(초록)/인증 취소(붉은 벽돌) 버튼도 같은 동작
- 공유 그룹 채팅 — 구성원 전원이 같은 방을 본다(발신자 아바타·이름 라벨이 붙은 한 스레드)
- 소유자 모델 — 그룹의 진실은 소유자가 서명한 명부(roster) · 버전 단조 증가로 구버전 재생 차단
- 그룹 대화 기록 영속(08-19) — 1:1과 같은 암호화 세그먼트 · 재시작 복원 · 발신자 라벨 보존 · 옛 신원에 잠긴 세그먼트는 부팅 시 보관 이동 후 자가 복구
- 초대 가시화·자가 수락(08-19) — 소유자 화면에 "초대 대기" 표기 · 초대받은 방은 재시작 후에도 목록에 남아 클릭 = 수락/거절
- 초대 수락제 — 명부에 올라도 내가 수락해야 내 화면에 방이 생긴다(무단 편입 금지)
- 미연결 구성원에게 자동 연결 후 이어 전달 · 재접속 시 재동기(보관 주체 = 송신자 · 상한 설정)
- 구성원도 초대 요청 가능(명부 반영은 소유자) · 로컬 "방송 그룹"(동보)과는 다른 계약이라 UI에서 구분
⚠️ 그룹 파일은 현재 구성원 수만큼 업로드한다(개선 설계는 ADR-0013 §5-9)
- 드래그앤드롭 송신 · 승인 4방식(자동/기간/수동/거부) · 진행률 · 다중 파일 큐 · 대역폭 제어(쌍방 협상)
- 발신 스트리밍 + 지연 해시(08-18) — 10GB급도 메모리에 올리지 않고 전송(UI 무정지) · 해시는 전송하며 증분 계산해 완료 시 검증(승인 창은 즉시)
- 송수신 용량 상한 설정(발신 무제한 기본 · 수신 512MiB 기본) + 송신 전 상대 상한 확인 — 읽기 전에 초과를 차단(CapAdvert/Request)
- 전송 재개(이어받기) — 끊긴 부분 수신물을 봉인 보존(72h/1GiB) · 재연결 시 능동 재-Offer → N%부터 이어받기(프리픽스 해시 대조 · 불일치 = 처음부터 fail-closed) · 수신 2택(이어받기/처음부터)
- 인챗 전송 제어(08-19 · 별도 창 제거) — 풍선 안 ⏸▶✕(송·수신 양방향 상태 동치) · 배치 합산 배너 + 전체취소(와이어 전파 — 양쪽 대칭) · 정지 방치 = 자동 전체취소(카운트다운 표시 · 기본 2분 · 설정)
- 요청 단위 승인·거절(08-20) — 다중 파일 = 승인 1회(파일 수·이름 목록·총합 표시) · 거절 1회 = 배치 전체 Declined(쌍방) · 용량 초과·폴더 = "제외됨" 표시(양쪽 목록)
- 요청당 최대 파일 수(1~5 · 기본 5 · 설정) — 초과 드롭 = 전송 시도 없이 안내 모달
- Win↔mac 교차 대용량 실기 완료(T-macxfer ①~⑥)
- 전송 완료 = 수신측 격리 성공의 종단 확인(ack) — "전달됨 · 확인 대기 → 완료"
- 수신 무해화: 위험 등급 판정 →
.beepq봉인 → 격리함(승인 = 실체화 · 다운로드 폴더) - OS 격리 표식 — macOS quarantine xattr + Windows MotW(Zone.Identifier) 실물
- 수신 이미지 미리보기 — 격리함 썸네일 + 대화 스레드 인라인. 승인 전에도 무엇인지 보이되, 픽셀은 격리 프로세스가 만든다(본체는 이미지 파서를 링크하지 않는다) · 폰 사진(12MP급)까지 지원
- 자격 미달 경고 모달 — 상호 대화 전 파일 전송이 막히면 "왜 + 뭘 하면 되는지"를 모달로(스팸 방어 규칙의 가시화)
- 커스텀 컨트롤 19종 + 경고 모달(전 플랫폼 동일 렌더) — 최신: IconDropdown(툴바 이미지 드롭다운 · 목록 정렬 선택), Carousel, Switch
- 목록 정렬 4모드(기본=최근 대화 · 이름 · 최근 접속 · 온라인 우선) + 목록 고정(★ 핀 — 상대·그룹) · 최근 접속/대화 속성 관리(암호화 영속)
- 한글 입력(IME) 기준값 설정 카테고리(macOS 실측 기본값 · 토글 2종 포함) · 설정 백업/복원/초기화(고급)
- 텍스트 편집 기본기 일습 — 전체선택·복사/잘라내기/붙여넣기(모든 입력창)·더블/트리플 클릭·Shift+이동 선택·가로 스크롤·영역 밖 드래그 자동 진행
- 설정 화면(VS Code식 — 트리·검색·즉시 적용) + 설정 영속(ADR-0011 — 재시작 유지)
- 테마 다크/라이트 + 주요 색 사용자 지정 · i18n 4개 언어(en/ko/zh/ja) — 전면 적용(상태바·우클릭 메뉴·모달·다이얼로그·명령·상대 시각·창 타이틀 등 · 08-17~18 남은 한글 고정 일소)
-
트레이/메뉴바 상주 — 아이콘 = 내 아바타 합성 · 툴팁/우클릭 = 표시 이름·열기·종료 ·
ui.close_to_tray(X = 트레이로 숨김 · 기본 off) · Windows 구현 완료 · mac/Linux 진행 - 서버 설정 영역(기본 Unmanaged) — 서버 주소·포트·타입 3종(Relay=홀펀칭 / Content=릴레이+파일 / Registered=Content+가입) 저장만 · ★ 서버 네트워킹은 미구현(방향 설계만 · ADR-0013)
- 기본 아바타 — 12간지 내장 자산에서 고르기(원형 클립을 자산에 구워 넣음) · 상대에게도 전달(와이어) · 툴바 프로필 버튼 = 내 얼굴
- 캐럿 깜빡임 — 530ms(Windows 기본값 규약) · OS 포커스 창에서만 · 타이핑 중에는 항상 밝음
- 프로필 — 편집 화면(이미지·이름·이메일·전화·소개글 + 항목별 공개 토글 · 기본 전부 비공개) · 세션 경유 교환(연결된 상대에게만 자동 프리페치 · 브로드캐스트 미포함) · 내 키 지문 표시(상대 카드의 지문과 같은 값 — 대조 기준) · 우클릭 프로필 보기 카드 · 아바타 실사진(imgdec 격리 디코드 — 파서는 본체 미링크)
-
소개글(Bio) — 프로필의 멀티라인 입력(최대 3줄 표시 + 초과분 내부 스크롤 · 대화 입력창과 같은 스크롤바(상하+좌우·드래그·자동 숨김) · 붙여넣기·재시작에도 개행 보존) · 목록/카드 표기: 큰 줄 = 표시 이름(프로필 이름 우선 · 없으면
beep-…), 작은 줄 = 소개글(줄바꿈 접어 한 줄 · 길면 말줄임 …) - 목록에서 삭제(우클릭 ▸ 목록에서 삭제) — 핀·프로필 캐시를 통째로 지운다. ★차단이 아니라 다시 만나면 새로 뜬다(되돌릴 수 있어 안전한 기본)
- 상태 로깅 + 로그 보기(옵션 · 기본 off) — 상태바 메시지를 일자별 파일로(진단용) · 설정에서 열기
- 설정 검증 원복 규약 — 범위 밖 입력 = 즉시 경고 + 직전값 원복(전 컨트롤 공통) · 창 끝 드롭다운 잘림 방지
-
데이터 폴백 종점 durable — 임시 폴더 폐지(
~/.nexa-beep) — OS 청소로 신원이 조용히 바뀌던 함정 제거
- v0.1.6 공개 — 5타깃 × 2채널 · 자산 14종 · SHA256SUMS · Homebrew 탭 · winget/choco 매니페스트(게시 대기)
- 더블클릭 실행(macOS 번들·Windows 탐색기 감지 → 창 모드)
- 격리 디코더(
nbeep-imgdec)가 전 채널에 동봉된다 — 없으면 사진 자리에 이니셜 아바타로 조용히 폴백
| 항목 | 상태 |
|---|---|
| 암호화 대화 기록 저장(ADR-0005) | ✅ 코어 구현(M2-5b — 1:1 텍스트·완료 전송 줄 sealed 영속·재시작 복원) · 잔여 = 시간 만료·블라인드 인덱스 검색 |
| 평문 3면 봉인(격리물·PII 사이드카·프로필 img 캐시) | ✅ 완료(08-17 — 공용 sealed 봉투 ChaCha20-Poly1305·도메인 분리·fail-closed · 디스크 평문 0) |
| 메시지 등급·알림·수신확인(ADR-0010) | ✅ Accepted(08-17) — N-1 등급·N-2 수신확인/읽음 구현 · 외부 릴레이·웹훅은 v2 설계만 |
| 알림(3-OS) | ✅ 정식(mac UNUserNotificationCenter·Win·Linux · 클릭 = 해당 대화) |
| 트레이/메뉴바 상주 | ✅ Windows · mac/Linux 진행 |
| SAS(안전 번호) 대조 화면 | ✅ → 지문 비교로 전환(08-18): 60자리 SAS는 카드에서 숨기고 키 지문 대조(/fingerprint)+/verify 직접 검증 |
| 전송 재개·진행 동기(청크 윈도) | 설계 등록(ADR-0015 후보) — 방향 결정 대기 |
| imgdec 권한 강등(잡오브젝트/seccomp) | 코어·포장 동봉·수신 미리보기·디코드 워커화 완료 — 권한 강등만 잔여 |
| 검사(AV) 어댑터 · AMSI | 포트(platform_scanner()) 준비 — 어댑터 예정 |
| 그룹 파일 콘텐츠 키 봉투(N배 업로드 해소) | 설계 완료(ADR-0013 §5-9) — 확정 대기 |
| 서버 모드(릴레이·컨텐츠·관리) + UDP 홀펀칭 | 방향 설계 완료(ADR-0013 §12) — v1 이후(별도 저장소) |
| 프로필 창 스크롤 구조(고정 헤더+스크롤 중간+고정 버튼) | 설계 등록(M3-24) — 클립 API 부재로 재설계 필요 · 현재는 고정 창 |
| 파일 선택 = 시스템 기본 다이얼로그 | 설계 등록(ADR-0014) — 확정 대기 |
| 폴더 전송 | 제외(요청 시 재등록) · 수락 후 취소 ✅ |
| L1 링크 상태 구독 · S4 유니캐스트 발견 | 예정 |
| 코드 서명·공증(macOS 공증 · Windows 인증서) | 비용 결정 대기 — 현재는 미서명 |