Skip to content

업데이트 ​

앱은 실행할 때마다 한 번씩 새 snowpea core가 있는지 확인하고, 두 곳에서 알려 줍니다. 화면 위의 띠와 설정 → About입니다.

알림 띠 ​

새 릴리스가 있으면 창 맨 위에 띠가 나타납니다.

Update available 0.1.7 → 0.2.0

  • Update — 업그레이드를 시작합니다.
  • Details — 설정 → About을 엽니다.
  • Dismiss — 그 버전에 한해서만 띠를 숨깁니다. 다음 릴리스에는 다시 나타납니다.

설정 → About ​

이 카드에는 core 버전, 양쪽이 합의한 프로토콜 버전, 답을 가져온 업데이트 채널 (pypi 또는 git), 그리고 마지막으로 확인한 시각이 있습니다.

  • Check now — 네트워크에 직접 물어봅니다. 실행할 때의 확인은 그렇지 않습니다. core가 답을 24시간 동안 캐시하므로, 오전에 앱을 열 번 켜도 조회는 한 번입니다.
  • Update to X — 업그레이드를 시작합니다.
  • Release notes — 채널에 릴리스 페이지가 있으면 엽니다.

설치보다 오래 살아남은 데몬 ​

앱은 실행할 때마다 데몬을 새로 띄우지 않고 이미 돌고 있는 것을 그대로 씁니다. 그 데몬이 진행 중인 세션, 예약 작업, 게이트웨이 연결을 들고 있기 때문입니다. 문제는 이미 교체한 코드를 계속 실행하는 데몬입니다. core를 다시 설치해도 데몬은 재시작되지 않고, 앱을 다시 켜도 마찬가지입니다.

그래서 연결할 때마다 앱은 데몬에게 무엇을 실행 중인지 묻고 설치된 것과 비교합니다. 버전과, core 파일이 데몬이 시작된 시각보다 새로운지를 봅니다. 뒤쪽이 같은 버전을 다시 설치한 경우를 잡아냅니다. 다르고 진행 중인 턴이 없으면 데몬은 묻지 않고 교체됩니다. 턴이 진행 중이면 그대로 두고 대신 띠를 띄웁니다.

Core is out of date — restart when idle

Restart를 누르면 교체합니다. 기다린다고 잃는 것은 없습니다. 진행 중인 턴은 기존 데몬에서 끝나고, 다음 연결에서 같은 확인을 다시 합니다.

Update가 실제로 하는 일 ​

core는 업그레이드를 분리된(detached) 프로세스로 실행하고 곧바로 답합니다. 따라서 버튼이 끝났다고 해서 업그레이드가 끝난 것은 아닙니다. 그 뒤로 단계 표시가 따라옵니다. started 다음에 done 또는 failed가 오며, core가 쓴 메시지와 로그 파일 경로가 함께 표시됩니다.

업그레이드가 끝나도 데몬은 여전히 예전 코드를 실행하고 있습니다. 실행 중인 프로세스가 자기 자신을 갈아 끼울 수는 없기 때문입니다. 재시작하기 전까지 이 카드에 보이는 버전은 예전 것이며, 그래서 끝난 업그레이드는 대신 해 주는 대신 Restart core를 제안합니다. 재시작하면 잠시 연결이 끊기지만 앱이 알아서 다시 붙습니다.

스스로 업데이트할 수 없을 때 ​

일부 설치는 core가 건드릴 수 있는 것이 아닙니다. 시스템 패키지이거나 Homebrew, pipx가 관리하는 경우입니다. 그럴 때는 아무것도 실행되지 않고, 대신 직접 실행할 명령과 그 이유가 카드에 표시됩니다.

다운그레이드는 앱이 아니라 core가 거부하며, 그 이유도 같은 방식으로 표시됩니다.

MIT licensed. The manual is generated from the product repositories — see the banner on each page.