설정을 Git으로 관리하기
NoteDeck의 설정은 앱 데이터 폴더 안의 config/ 한 곳에 모여 있습니다. 이 폴더 하나가 "옮기는 단위"이며, Git으로 관리하는 것을 전제로 만들어져 있습니다. dotfiles와 같은 취급입니다.
config/ 바깥에 있는 것 (노트 캐시, AI의 대화, 창 위치, 동의와 키의 유무)은 옮기는 것이 아닙니다. 무엇이 어디에 있는지는 설정 파일에 있습니다.
공개하지 마세요
config/에는 어느 계정을 어느 칼럼에서 보고 있는지 (user@host), 외부 서비스의 URL, 실행되는 코드 (플러그인 / 위젯 / 스킬), AI와 플러그인에 허용한 조작이 들어 있습니다. API 키와 액세스 토큰은 들어 있지 않지만, 공개 저장소에 두기 위한 형태가 아닙니다. 비공개 저장소에 두세요.
전제
git pull과 외부 에디터 편집은 앱과 상주하는 AI를 종료한 뒤에. 앱은 설정 파일의 외부 변경을 지켜보지 않습니다. 연 채로 고치면 다음 조작에서 앱 쪽 사본이 덮어써서 변경이 사라집니다. 상주하는 AI (notemaid)가 돌고 있으면ai.json5를 되쓸 수 있으니 그것도 멈추세요.pull은 직접 치는 조작이므로 이 순서만 지키면 됩니다.- 다시 저장하면 주석은 사라집니다. 설정 파일은 JSON5라서 주석을 쓸 수 있지만, 앱이 다시 저장하면 주석은 남지 않습니다.
- 쓰기는 결정적입니다. 같은 내용이면 같은 바이트열이 되고, 실행만 하거나 읽기만 해서는 파일을 다시 쓰지 않습니다. "건드리지 않았는데 차이가 생기는" 일은 없습니다.
시작하기
cd ~/.local/share/com.notedeck.desktop/config # macOS / Windows의 위치는 「설정 파일」 참조
git init
git add .
git commit -m "NoteDeck 설정".gitignore는 NoteDeck이 (없으면) 둡니다. config/ 안은 설정뿐이므로 제외하는 것은 쓰는 도중의 임시 파일뿐입니다.
다른 PC에서 쓰기
- 새 PC에서 NoteDeck을 한 번 실행하고 종료합니다 (앱 데이터 폴더가 생깁니다).
config/안을 비우고 거기에 저장소를 clone합니다 (또는 clone한 폴더를config라는 이름으로 둡니다).- NoteDeck을 실행하고 같은 계정으로 로그인합니다.
칼럼은 user@host로 계정을 가리키므로 로그인한 시점에 그 PC의 계정에 다시 묶입니다. 아직 로그인하지 않은 계정의 칼럼은 "계정 미연결"로 남고, 로그인하면 연결됩니다. 파일에는 이 PC 고유의 값을 쓰지 않으므로, 두 대가 같은 저장소를 써도 차이가 오가지 않습니다.
외부 서비스 연결 (AI 제공자 등)은 정의만 옮겨집니다. API 키와 "AI에게 보이기 / 외부 앱에 보이기" 동의는 그 PC의 상태이므로, 쓰려고 할 때 설정 화면이 요구합니다.
dotfiles 매니저
- chezmoi처럼 파일을 복사해서 배치하는 도구는 그대로 쓸 수 있습니다.
- GNU stow처럼 파일 단위로 심볼릭 링크를 거는 도구도 쓸 수 있습니다. NoteDeck은 링크를 설정으로 읽고, 저장은 링크가 가리키는 곳에 씁니다 (링크를 실제 파일로 바꾸지 않습니다).
동기화 소프트웨어 (Dropbox 등)에 대해
config/를 동기화 폴더에 두고 심볼릭 링크로 되돌릴 수도 있지만, NoteDeck은 이 사용법을 보증하지 않습니다. Git과 달리 되쓰기가 앱을 연 동안에 도착하므로 다음 제한이 있습니다.
- 쓰는 PC는 한 번에 한 대. 두 대에서 동시에 NoteDeck을 열면 나중에 쓴 쪽이 이기고, 동기화 소프트웨어가 만든 "충돌 사본"은 같은 id의 파일이 둘이 되므로 NoteDeck은 뒤에 오는 쪽을 건너뛰고 토스트로 알립니다. 어느 쪽을 남길지 정하고 다른 쪽을 지우세요.
- 다른 PC에서 쓴 내용은 이쪽 NoteDeck을 다시 실행할 때까지 반영되지 않습니다. 연 동안에 도착한 변경은 다음 조작에서 덮어써질 수 있습니다.
data/(AI의 대화와 메모)는 동기화 폴더로 향하게 하지 마세요. 다른 사람의 글 본문 (팔로워 한정과 DM 포함), 아직 올리지 않은 초안, AI가 당신에 대해 기억한 것이 들어 있습니다. 예외로data/memos/만을 Obsidian vault로 동기화하는 사용법은 있을 수 있지만, 같은 주의가 적용됩니다.state/cache/notecli.db는 동기화하지 마세요. 이 PC의 상태와 캐시입니다.notecli.db는 SQLite라서 쓰는 도중을 동기화하면 깨집니다.
여러 PC에서 설정을 맞추고 싶다면 위의 Git 절차를 쓰세요.
오래된 버전에서 업데이트했을 때
이전에는 설정이 notedeck/라는 폴더에 있었습니다. 업데이트 후 첫 실행에서 NoteDeck이 config/ data/ state/ cache/로 나눕니다. 옮기기 전의 내용은 앱 데이터 폴더의 backups/pre-layout-<일시>/에 사본을 남깁니다 (얼마 뒤 지워집니다).
notedeck/ 자체를 심볼릭 링크로 두고 동기화하던 경우, NoteDeck은 내용을 끄집어내지 않습니다 (동기화 대상에서 사라져, 옛 버전을 그대로 쓰는 다른 PC의 설정까지 사라지기 때문). 실행 시 그 취지의 알림이 나오므로, 동기화 대상 안을 config와 data로 나눈 뒤 config/와 data/로 링크를 다시 걸고 재시작하세요.