Skip to content

feat: 저장·복구 원자 트랜잭션화 - #95

Open
eun-yeon wants to merge 12 commits into
feature/panel-picker-interactionfrom
feature/atomic-store-pipeline
Open

feat: 저장·복구 원자 트랜잭션화#95
eun-yeon wants to merge 12 commits into
feature/panel-picker-interactionfrom
feature/atomic-store-pipeline

Conversation

@eun-yeon

Copy link
Copy Markdown
Member

개요

저장·복구 파이프라인을 원자 트랜잭션 구조로 바꾸고, Windows 자동 업데이트에 minisign 서명 검증과 macOS 유니버설 바이너리 빌드 추가

변경 내용

  • 저장 데이터 보존 문제와 OBS 보안 문제 수정
  • 저장·복구 파이프라인을 원자 트랜잭션 구조로 개편
  • Windows 자동 업데이트에 minisign 서명 검증 도입
  • macOS 헬퍼를 유니버설 바이너리로 빌드하고 번들 검증 스크립트 추가
  • Dock 헬퍼 재시작 재결합과 정상 종료 시퀀스 정비
  • 웹 폰트 입력과 모션 에디터를 전면 시트로 개편
  • 드롭다운 메뉴 배치를 실측 기반으로 재작업
  • 글래스 백드롭에 밝기·채도 클램프 도입

GameBarOverlay 프로젝트 21개 파일 전체 삭제 포함됨
fix: 저장 데이터 보존과 OBS 보안 문제 수정 커밋 안에 들어있어서 제목만으로는 안 보임


스택 4/15 · base feature/panel-picker-interaction
순서대로 merge commit으로 머지 필요, squash나 rebase로 머지하면 위 PR들이 깨짐

eun-yeon added 12 commits July 15, 2026 00:16
손상된 store 복구와 백업, 단일 writer 저장 순서, 구버전 프리셋 및 로컬 자산 복원을 보강했습니다.

OBS 브릿지 인증·allowlist·Host/Origin·미디어 경계를 강화하고 미사용 Game Bar 프로토타입을 제거했습니다.

사운드 API 호환성, KPS 플러그인 구분자, 속성 패널 상태 및 라이선스 고지를 함께 정리했습니다.
ListPopup의 textAlign 옵션과 가운데 정렬 전용 행 분기를 제거해
모든 리스트형 팝업이 좌측 정렬과 동일한 행 레이아웃을 쓰도록 정리
아이콘 스왑·눈 토글·패널 토글·스위치가 프로그램적 상태 변경에도
전환 연출을 재생하던 문제 수정. usePressGatedSwap 훅이 인터랙티브
조상과 행 press 스코프의 클릭 시각을 기록해 클릭 유래 변경만
애니메이션하고, 외부 변경은 data-dmn-instant를 한 프레임 부여해
즉시 전환. 설정 행처럼 컨트롤 밖을 눌러 토글하는 표면은
data-dmn-press-scope로 옵트인
translate 정렬이 WKWebView 합성 지연으로 첫 프레임에 잘못된 위치로
비치던 문제 수정. 메뉴를 숨긴 채 렌더해 크기를 실측한 뒤
left/right/top/bottom 레이아웃 좌표로 확정 배치해 보이는 첫
프레임이 곧 최종 위치가 되도록 변경. 뷰포트 8px 클램프와 위로
펼침을 유지하고, 열린 동안 내용 크기가 변하면 ResizeObserver로
재배치. disabled 전환 시 메뉴 닫기, 미사용 center 정렬 옵션 제거
blur만 쓰던 글래스 표면을 backdrop-glass 유틸리티로 통합하고,
밝은 배경 투과를 억제하는 brightness/saturate 클램프와
루미노시티 캡(2차 안전망)을 추가. 어두운 기본 배경에서는
기존과 거의 동일하게 보이고, 조절값은 tokens.css 노브로 노출
- 크롬 사이 영역을 통째로 덮는 fullSurface 모달과 공용 시트
  레이아웃(FullSurfaceModalLayout) 도입, 폰트 피커 로딩 폴백도 재질 공유
- 입력 CSS에서 @font-face 블록만 추출해 초안 패밀리로 로드하는
  스페시멘 미리보기, 굵기별 로드 성패 표시
- CSS 파싱을 렉서 기반 선언 단위로 통일 — 문자열 값 오인, escape로 인한
  블록 경계 우회, 조건부 규칙 안 폰트 승격을 차단하고 회귀 테스트 추가
- 검증·로드 상태를 스크린리더에 전달하는 상태 영역 추가
- CodeMirror 에디터 크롬을 토큰 기반으로 정리, 여러 줄 placeholder의
  줄 높이 부풀림 수정
- 커브 캔버스가 카드 전체를 채우도록 뷰박스를 종횡비 기반으로 재계산,
  핸들·히트 영역 화면 크기는 캔버스 실측 기준으로 유지
- 격자를 line 요소 162개에서 path 2개로 줄이고, 그리드·커브·핸들 색을
  라인/액센트 토큰으로 통일 (보조 격자용 --ui-line-faint 추가)
- 파라미터(이름·프리셋·베지어·스케일·시간)를 하단 데크 한 줄로 재배치,
  미리보기 무대를 풀하이트로 확장
- 포인터 핸들러 매 렌더 재등록 제거로 드래그 렉 개선
store 저장을 디스크 커밋 성공 후에만 메모리에 공개하도록 바꾸고,
고아 자산은 즉시 삭제 대신 trash 30일 격리로 옮긴 뒤 만료 시 정리한다.
손상 복구는 필드 단위에서 항목 단위로 정밀화하고 keys와 keyPositions의
병렬 배열은 요소 제거 없이 제자리 대체로 보존한다.

사운드 삭제와 편집 WAV 저장을 stage-커밋-trash 순서의 트랜잭션으로
재작성하고 프리셋 저장도 원자 교체로 전환했다. 프리셋 로드는 레이아웃과
설정을 단일 store 리비전으로 커밋한다.

active_keys 소유권을 키보드 매니저로 이관해 모드 전환 레이스를 없애고,
키보드 데몬은 부모 프로세스 사망을 감지해 자체 종료한다. OBS 토큰은
디스크 저장이 확인될 때만 서버를 시작한다.
업데이트 자산의 .sig 서명을 검증한 뒤 설치하고 실패 시 중단한다.
프로덕션 공개키는 릴리스 시점에 삽입하며, 비어 있는 동안은 경고를
남기고 검증을 생략한다. 업데이트 적용 직전에 store를 flush한다.
DockHelper를 arm64와 x86_64 각각 macOS 11.0 타깃으로 빌드해 lipo로
합치고, 번들 구성(바이너리 존재, 최소 버전, 유니버설 슬라이스, 고지
문서 동봉)을 검사하는 스크립트를 추가했다. THIRD_PARTY_NOTICES를
번들 리소스에 포함하고 apple_cursor 고지를 추가했다.
구 헬퍼 인스턴스를 종료한 뒤 대체하고, 메인 앱 재시작 시 죽은 pid의
번들 ID로 재결합한다. 번들이 아닌 개발 실행 메인에는 reopen 이벤트를
직접 전송하고, 종료 시 유예 대기 후 강제 종료한다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant