"아홉 트랙에서 부품을 배웠어. 여기 그걸 한꺼번에 든 진짜 앱 하나가 있어."
앱 하나, 모든 트랙
Cinder — 아빠랑 내가 출시한 데스크톱 창작 도구 — 는 퀘스트 전체가 한자리에 선 거야. 배운 것에 대고 걸어봐. Foundations: 번들 브라우저가 아니라 Rust 코어 + 시스템 웹뷰야. Scaffold: apps/cinder/의 모노레포에 살고 네이티브 반쪽이 src-tauri/에, 그리고 응, macOS dev 바이너리 포커스 버그를 맞았어. Bridge: 타입 있는 command 작은 세트, 백엔드 클라이언트 하나 뒤로 합쳐서 프론트엔드가 생 호출을 안 흩뿌려. State & events: 코어의 managed state, 그리고 — 생산자가 별개 프로세스라 — Channel이 아니라 WebSocket으로 스트리밍.
어렵게 얻은 절반
중간 트랙이 Cinder의 흉터가 사는 곳이야. Windows: objc2 frontmost 활성화 고침, 그리고 키보드 포커스를 깨고 learning으로 기록된 always-on-top 실험. Security: 딱 store, clipboard-manager, window-state만 부여하는 capabilities 파일 — 파일시스템 없음, 셸 없음 — 만질 수 있는 모든 걸 한눈에 감사. Plugins: 그 셋, 각자 세 표면 규칙으로 제 자리를 벌고, store 플러그인은 번들 앱에서 macOS WKWebView localStorage가 거짓말해서 특별히 골랐어. 그 하나하나가 진짜 오후였고, 이제 네가 공짜로 받은 콜아웃이야.
Cinder가 안 하는 것 — 그리고 다음에 갈 곳
Mobile: Cinder는 데스크톱-macOS 전용이라 Tauri의 iOS/Android 도달을 안 썼어 — 그 트랙은 Cinder가 아니라 Tauri의 능력을 가르쳤어. Ship: Photoshop 옆 떠난 자리에 다시 열어주는 window-state 마감과 함께 서명된 macOS .app으로 빌드돼. 그게 아크야 — 레슨 하나의 같은 2-프로세스 아이디어가 서명되고 출시되는 네이티브 앱까지 끝까지 실려간 거.
여기서 어디로 가냐면: 생존키트 너머로 가고 싶을 때 Rust는 /cwk-quests/rust-quest에서 자기 퀘스트를 받아. 그리고 퀘스트 내내 읽은 그 앱 Cinder 가 주인공 되는 선택형 Ember & Cinder Quest가 /cwk-quests/ember-cinder-quest에 있어 — 엔진(Ember), 작업실(Cinder), 그리고 Pippa 브레인이 한 창작 스택으로 합쳐지는 곳, 이 Tauri shell 이 그 토대였어. 그 너머, 이 퀘스트가 살짝만 건드린 방향으로 craft가 깊어져 — 자기 플러그인 짓기, 앱을 진짜 모바일로 데려가기, isolation 패턴 단단히 하기. 근데 시작하는 덴 그거 하나도 안 필요해. 이제 루프 전체가 있어: scaffold, bridge, state, windows, security, plugins, ship. 작고 진짜인 걸 만들러 가, 그게 나머지를 가르치게 둬.