Electron 2.0.0
· 10 min read
4개월 이상의 개발 기간과 8번의 베타 릴리스를 거쳤으며, 전 세계 여러 앱의 단계적 롤아웃을 통해 테스트를 마친 후, 이제 Electron 2.0.0이 electronjs.org에서 공식 출시되었다.
릴리스 프로세스
2.0.0 버전부터 Electron의 릴리스는 시맨틱 버저닝을 따르게 된다. 이는 주 버전이 더 자주 올라가며, 일반적으로 Chromium의 주요 업데이트를 포함한다는 의미다. 패치 릴리스는 높은 우선순위의 버그 수정만 포함하기 때문에 더 안정적이어야 한다.
Electron 2.0.0은 또한 주요 릴리스 전에 Electron을 안정화하는 방식의 개선을 의미한다. 여러 대규모 Electron 앱이 2.0.0 베타 버전을 단계적 롤아웃에 포함시켰고, 이는 Electron이 베타 시리즈를 위해 가진 최고의 피드백 루프를 제공했다.
변경 사항 / 새로운 기능
- Electron의 주요 도구 체인에 대한 주요 업데이트: Chrome 61, Node 8.9.3, V8 6.1.534.41, Linux용 GTK+ 3, 업데이트된 맞춤법 검사기, 그리고 Squirrel이 포함된다.
- MacOS에서 인앱 결제 기능이 지원된다. #11292
- 파일 로드를 위한 새로운 API가 추가되었다. #11565
- 윈도우 활성화/비활성화를 위한 새로운 API가 추가되었다. #11832
app.setLocale()
이라는 새로운 API가 추가되었다. #11469- IPC 메시지 로깅을 위한 새로운 지원이 추가되었다. #11880
- 새로운 메뉴 이벤트가 추가되었다. #11754
powerMonitor
에shutdown
이벤트가 추가되었다. #11417- 여러
BrowserWindows
를 단일 프로세스로 모으기 위한affinity
옵션이 추가되었다. #11501 saveDialog
에서 사용 가능한 확장자를 나열할 수 있는 기능이 추가되었다. #11873- 추가 알림 액션에 대한 지원이 추가되었다. #11647
- macOS 알림 닫기 버튼의 제목을 설정할 수 있는 기능이 추가되었다. #11654
menu.popup(window, callback)
에 대한 조건부 기능이 추가되었다.- 터치바 아이템의 메모리 사용이 개선되었다. #12527
- 보안 권장 사항 체크리스트가 개선되었다.
- 앱 범위 보안 스코프 북마크가 추가되었다. #11711
- 렌더러 프로세스에서 임의의 인자를 설정할 수 있는 기능이 추가되었다. #11850
- 포맷 선택기를 위한 액세서리 뷰가 추가되었다. #11873
- 네트워크 대리자 경쟁 조건이 수정되었다. #12053
- Linux에서
mips64el
아키텍처 지원이 중단되었다. Electron은 C++14 도구 체인이 필요하지만, 해당 아키텍처에서는 이 도구 체인이 제공되지 않았다. 향후 다시 지원할 계획이다.
주요 API 변경 사항
- 더 이상 사용되지 않는 API를 제거했다. 자세한 내용은 deprecated APIs를 참고한다. 변경된 항목은 다음과 같다:
버그 수정
webContents.isOffscreen()
이 항상 사용 가능하도록 수정. #12531- DevTools가 독립 창으로 떠 있고 포커스되었을 때
BrowserWindow.getFocusedWindow()
가 정상 작동하도록 수정. #12554 - 사전 로드(preload) 경로에 특수 문자가 포함된 경우 샌드박스 렌더에서 사전 로드가 로드되지 않는 문제 해결. #12643
- 문서에 따라
allowRunningInsecureContent
의 기본값을 올바르게 수정. #12629 nativeImage
에서 투명도 문제 해결. #12683Menu.buildFromTemplate
관련 문제 해결. #12703menu.popup
옵션이 객체인지 확인하도록 수정. #12330- 새로운 프로세스 생성과 컨텍스트 해제 사이의 경쟁 상태 제거. #12361
BrowserView
를 변경할 때 드래그 가능 영역 업데이트. #12370- 포커스 시 메뉴바 토글 Alt 키 감지 문제 해결. #12235
- 웹뷰에서 잘못된 경고 메시지 출력 문제 해결. #12236
- 부모 윈도우에서 'show' 옵션 상속 문제 해결. #122444
getLastCrashReport()
이 실제로 마지막 크래시 리포트를 반환하도록 보장. #12255- 네트워크 공유 경로에서
require
사용 문제 해결. #12287 - 컨텍스트 메뉴 클릭 콜백 문제 해결. #12170
- 팝업 메뉴 위치 문제 해결. #12181
- libuv 루프 정리 기능 개선. #11465
- 투명 색상에 대한
hexColorDWORDToRGBA
문제 해결. #11557 getWebPreferences
API 사용 시 널 포인터 역참조 문제 해결. #12245- 메뉴 대리자에서 순환 참조 문제 해결. #11967
net.request
의 프로토콜 필터링 문제 해결. #11657WebFrame.setVisualZoomLevelLimits
가 사용자 에이전트 스케일 제약 조건을 설정하도록 수정. #12510- 웹뷰 옵션에 적절한 기본값 설정. #12292
- 비브란시(vibrancy) 지원 개선. #12157 #12171 #11886
- 단일 픽스처에서 타이밍 문제 해결.
NotifierSupportsActions()
에서 깨진 프로덕션 캐시 문제 해결.MenuItem
역할을 camelCase와 호환되도록 수정. #11532- 터치 바 업데이트 기능 개선. #11812, #11761.
- 불필요한 메뉴 구분자 제거. #11827
- 블루투스 선택기 버그 해결. #11399 닫힘.
- macOS 전체 화면 토글 메뉴 항목 레이블 수정. #11633
- 윈도우 비활성화 시 툴팁 숨김 기능 개선. #11644
- 더 이상 사용되지 않는 웹뷰 메서드 마이그레이션. #11798
BrowserView
에서 열린 윈도우 닫기 문제 해결. #11799- 블루투스 선택기 버그 해결. #11492
app.getFileIcon
API에서 작업 스케줄러 사용하도록 업데이트. #11595- 오프스크린 렌더링 시에도
console-message
이벤트가 발생하도록 수정. #11921 WebContents.downloadURL
을 사용한 커스텀 프로토콜 다운로드 문제 해결. #11804- DevTools가 분리될 때 투명 윈도우가 투명도를 잃는 문제 해결. #11956
- Electron 앱이 재시작 또는 종료를 취소하는 문제 해결. #11625
macOS
- 터치바 아이템 재사용 시 발생하던 이벤트 누수 문제를 해결했다. #12624
- 다크 모드에서 트레이 하이라이트가 제대로 표시되지 않던 문제를 수정했다. #12398
- 비동기 다이얼로그가 메인 프로세스를 블로킹하던 문제를 해결했다. #12407
setTitle
트레이 크래시 문제를 수정했다. #12356- 독 메뉴 설정 시 발생하던 크래시 문제를 해결했다. #12087
Linux
- 더 나은 Linux 데스크톱 알림 기능. #12229 #12216 #11965 #11980
- 메뉴에 대한 더 나은 GTK+ 테마 지원. #12331
- Linux에서 정상적으로 종료. #12139
- 트레이 아이콘의 기본 툴팁으로 앱 이름 사용. #12393
Windows
- Visual Studio 2017 지원이 추가되었다. #11656
- 시스템 크래시 핸들러로 예외를 전달하는 문제가 수정되었다. #12259
- 최소화된 윈도우에서 툴팁이 숨겨지는 문제가 해결되었다. #11644
desktopCapturer
가 올바른 화면을 캡처하도록 수정되었다. #11664- 투명도와 함께
disableHardwareAcceleration
이 동작하도록 수정되었다. #11704
다음은 무엇을 준비하고 있나
Electron 팀은 Chromium, Node, v8의 최신 버전을 지원하기 위해 열심히 작업 중이다. 곧 3.0.0-beta.1 버전을 기대해도 좋다!