본문 바로가기
C.W.K.
Stream
← C.W.K. Quests
🪶

Rekindle Quest

최근 수정: 2026-10-15

시장이 한 명인 에디터를 짓는 이야기

Rekindle 이 어떻게 태어났는지에 대한 이야기. 아빠가 직접 만든 글쓰기 에디터, prose 쪽의 Cinder 야. 남이 만든 범용 에디터를 사는 대신 쓸 사람이 딱 한 명인 에디터를 짓는 이유, 텍스트 편집을 손수 짜는 대신 검증된 코어를 빌리는 방법, 그리고 margin-Pippa 라는 soul 이 평범한 마크다운 상자를 '진짜 글 쓰는 도구'로 바꿔놓는 과정을 다뤄.

9 tracks · 44 lessons · ~8h · difficulty: intermediate-to-advanced

Level 0식은 초고
0 XP0/44 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
Rekindle 은 코드 에디터도 아니고, WYSIWYG 도 아니고, 범용 에디터도 아냐. 쓸 사람이 딱 한 명, 아빠뿐인 prose 에디터야. 그러니 시장에선 아무도 이걸 안 만들어주고, 결국 직접 지을 수밖에 없었어. 이 퀘스트는 그 에디터를 처음부터 끝까지 따라가. 사용자가 한 명뿐인 게 왜 약점이 아니라 핵심인지, 죽어 있던 Sublime 플러그인이 soul 을 얻고 어떻게 되살아났는지, 빌린 코어에 손대지 않는 규율은 뭔지. contenteditable 도 한국어 IME 도 직접 안 짜고 CodeMirror 6 한테 맡기는 이유, Obsidian 이 그 선택의 살아있는 증거인 이유, 껍데기를 Electron 말고 Tauri 로 고른 이유. 그다음엔 소스를 문서 모델로 붙잡는 결정, 이 프로젝트의 왕관 보석인 CM6 decoration 엔진 하나가 Live Preview 와 라이브 voice underline 과 CMD+K inline diff 를 전부 해내는 구조, 결정론은 Rust 로 판단은 Pippa 로 갈라놓은 봉합선, 자기 브레인 없이 cwkPippa 에 REST + SSE 로 bind 하는 방식과 딱 하나 허락된 offline 예외, 파일시스템을 정본으로 두는 저장 규율까지 이어져. 마지막은 이 프로젝트가 건 판돈이야. moat 는 서식 기능이 아니라 여백에 사는 soul 이라는 것. 글쓰기 에디터가 자기 탄생 이야기를 직접 들려주는 셈인데, clone 할 repo 를 주는 게 아니라 개념을 오픈소싱하는 거야. 그리고 이제 이 퀘스트는 두 번째 이야기도 품었어. 2026-09 에 이 퀘스트가 걸어가는 Tauri / CodeMirror / Rust 스택 전체가 Swift-native 재건으로 교체됐는데, 여기 있는 doctrine 은 전부 그 교체를 살아남았거든. 새 마지막 트랙 '두 번째 Rekindling' 이 레플리카 프로그램과 cutover, 디바이스 fleet, 전쟁 이야기를 들려줘. 이야기는 거기서도 안 끝났어. 클라이언트는 문을 두 개 들게 됐어. 하나는 대화하는 브레인으로, 하나는 누가 대화해도 되는지 정하는 가족 권한으로 가는 문이야. sync 엔진은 여행길을 버틸 만큼 단단해졌고, 이름 바꾸기는 모든 레플리카가 아는 사실이 됐어. iPad 는 노트를 마크다운으로 둔 채 그림을 배웠고, 한국어에 바로 붙은 bold 는 판결로 정한 출발 가운데 처음으로 마크다운 스펙 자체를 벗어난 사례가 됐어. 그리고 워치에 말한 메모 하나를 집까지 따라갔어. 손목에서 폰으로, 말한 날의 데일리 노트로, 그리고 office 까지.

Tracks

  1. 01🔥The Rekindling

    0/4 lessons

    Rekindle 이 뭔지, 왜 사용자가 한 명뿐인 에디터를 지을 수밖에 없었는지, 이름은 어디서 왔는지

    아키텍처 얘기 전에 방향부터 잡자. Rekindle 은 아빠가 직접 만든 글쓰기 에디터야. 코드 에디터가 아니라 prose 에디터고, 쓸 사람은 딱 한 명이야. 이 트랙은 누가 자기 도구를 만들었다고 하면 다들 제일 먼저 던지는 질문들에 답해. 누구 쓰라고 만든 거야, 왜 그냥 사서 안 써, 뭘 되살리려고 시작한 거야, 그리고 저 Dark Souls 이름은 대체 무슨 뜻이야.

    Mac 에서 도는 네이티브 Rekindle v5.0.0 창. 위쪽 막대엔 Simple, Open, Save, Snapshots, Sync, Publish 가 있고, 왼쪽 사이드바엔 Outline, Notes, Files, Evidence 탭과 Scratchpad 카드, 상태 필터(All, Draft, Revising, Final), 스마트 폴더와 태그 폴더, Shortcuts 목록이 있어. 탭에는 빈 Untitled Note 가 열려 있고, 그 위로 METADATA 폼(Title, Tags, Status)과 서식 툴바, Editor/Rendered/Corkboard 토글이 보여. 상태 막대엔 지금 쓰는 브레인 이름이 떠 있어.
    지금 돌아가는 Rekindle, Mac 네이티브 판이야. 새 문서는 메타데이터 폼이 딸린 라이브러리 노트로 열리고, 툴바 아래 본문 칸은 아직 비어 있어.
    Lesson list (4)퀴즈 · 4 문제→
  2. 02🪵Borrow the Core

    0/4 lessons

    편집 코어는 직접 짜지 마. 검증된 텍스트 레이어를 빌려 — 한국어 IME 까지

    첫 번째 양보 불가 조항. 커서와 선택, undo, 그리고 무엇보다 한국어 IME 조합 같은 텍스트 원시 레이어가 바로 손수 짠 에디터들이 무너지는 지점이야. 2026-07 의 Rekindle 은 CodeMirror 6 위에 섰고 raw contenteditable 은 절대 안 건드렸어. v4 의 답은 플랫폼 자체의 네이티브 텍스트 시스템이야 (그 교체는 속편 트랙이 다뤄). 이 트랙에선 그 규율이 왜 Cinder 의 UXP-thin 규칙과 똑같은 얘긴지, Obsidian 이 왜 그게 된다는 살아 있는 증거인지, 그리고 2026-07 에 그 껍데기를 왜 Electron 말고 Tauri 로 골랐는지 보여줄게.

    Lesson list (4)퀴즈 · 4 문제→
  3. 03📄Source, Not WYSIWYG

    0/4 lessons

    마크다운 소스가 모델이고, 렌더된 프리뷰는 그 위에 얹는 레이어

    두 번째 양보 불가 조항. Rekindle 의 문서 모델은 마크다운 소스야. `#` 와 `**` 는 네가 눈으로 보고 직접 편집하는 진짜 문자고, 렌더된 모습은 그 위에 decoration 으로 얹힐 뿐이지 rich-text 모델로 갈아타는 게 아니야. 이 트랙에선 마크다운에 익숙한 사람한테 왜 source 가 WYSIWYG 을 이기는지, VS Code 나 Obsidian 을 fork 하는 게 왜 틀린 길인지, 보이는 마크업이 왜 제약이 아니라 의도적인 태도인지 보여줄게.

    Lesson list (4)퀴즈 · 4 문제→
  4. 04🎭One Engine, Three Jobs

    0/5 lessons

    CodeMirror 의 decoration 시스템 하나가 세 가지 일을 해. CM6 을 고른 이유가 여기 다 있어

    이 프로젝트의 왕관 보석. 2026-07 빌드에서 CodeMirror 6 의 decoration 시스템은 소스 위에 모습과 위젯을 칠하는 메커니즘 하나뿐이었는데, Rekindle 에선 그 하나가 완전히 다른 세 가지 일을 해냈어(v4 부터는 네이티브 decoration 레이어가 같은 셋을 해). Live Preview, 라이브 voice underline, 그리고 CMD+K inline diff. 메커니즘 하나가 세 역할을 한다는 게 Tiptap 이나 Lexical 대신 CM6 을 고른 이유의 전부야. 이 트랙에선 메커니즘을 먼저 보고, 세 가지 일을 하나씩 따라간 다음, 왜 그 재사용이 곧 아키텍처인지까지 가볼게.

    Lesson list (5)퀴즈 · 4 문제→
  5. 05⚙️Rust and Judgment

    0/4 lessons

    결정론적인 일은 코어로 — 2026-07 에는 Rust, v4 이후는 네이티브 Swift — 판단이 필요한 일은 Pippa 로. 그리고 둘은 절대 안 섞어

    세 번째 양보 불가 조항이고, 죽은 cwkWritingToolkit 의 두 레이어에서 물려받은 거야. 규칙이나 frontmatter, 태그, export, 파일 IO 처럼 결정론적인 일은 결정론적 코어 몫이야 — 2026-07 에는 Rust, v4 이후는 네이티브 Swift. 빠르고, 재현 가능하고, AI 가 안 끼어들지. CMD+K 나 라이브 voice doctrine, 톤처럼 판단이 필요한 일은 Pippa 몫이고. 이 트랙에선 그 봉합선을 긋고, 각자가 왜 상대 일에는 안 맞는지 보여준 다음, CMD+K 가 새로 발명한 기능이 아니라 재사용된 Prompt Macro client 라는 얘기로 마무리할게.

    Lesson list (4)퀴즈 · 4 문제→
  6. 06🔗No Own Brain

    0/5 lessons

    cwkPippa 에 REST + SSE 로 bind 할 뿐, 나란히 서는 브레인은 절대 안 세워

    네 번째 양보 불가 조항. Rekindle 은 자기 브레인이 없어. margin-Pippa 는 cwkPippa 안에 있는 그 하나의 Pippa 고, 순수 HTTP 로 bind 해서 닿아. bind 는 REST 로, 스트림은 SSE 로. cwkBonfire 의 embed 모델을 그대로 따르고 WebSocket 은 안 써. 이 트랙에선 클라이언트 표면이 왜 브레인을 fork 하지 않는지, 트랜스포트가 왜 Cinder 의 WebSocket 브리지가 아니라 REST + SSE 인지, 런타임 3-tier 연결이 브레인의 위치를 어떻게 다시 겨누는지, 딱 하나 허락된 offline 예외가 어떻게 두 번째 정체성이 아니라 fallback 으로 남는지, 그리고 2026-09-21 부터 클라이언트가 왜 문을 두 개 들고 다니는지 보여줄게. 대화하는 브레인으로 가는 문, 누가 대화해도 되는지 정하는 가족 권한으로 가는 문. Mac 마다 기본값을 고르기 전에 자기가 어느 머신인지부터 읽는 이유도 같이 짚을게.

    Lesson list (5)퀴즈 · 5 문제→
  7. 07📁Filesystem Is Truth

    0/4 lessons

    디스크의 순수 .md 가 정본이고, 어떤 인덱스든 다시 지을 수 있는 미러야

    다섯 번째 양보 불가 조항. 정본 저장소는 디스크에 있는 순수 마크다운 파일이야. Rekindle 은 그걸 제자리에서 편집할 뿐 절대 소유하지 않아. 나중에 검색이나 corpus 인덱스 같은 데이터베이스를 키우더라도 전부 파생된, 다시 지을 수 있는 미러라서 화해시키는 게 아니라 지우고 다시 채워. 이 트랙에선 파일을 정본으로 두는 쪽이 왜 자기 DB 를 master 로 두는 쪽을 이기는지, Bear 모델이 왜 거부됐는지, 메타데이터가 왜 frontmatter 에 사는지, 그리고 Pippa 가 한 것까지 포함해서 모든 편집이 두 번째 master 없이 어떻게 귀속되는지 보여줄게.

    Lesson list (4)퀴즈 · 4 문제→
  8. 08🕯️The Soul Is the Moat

    0/4 lessons

    에디터 기능은 다시 지을 수 있지만, 여백에 사는 Pippa 는 못 지어

    마지막으로 건 판돈. Rekindle 의 서식 기능은 값을 치를 각오만 있으면 누구든 다시 지을 수 있어. Rekindle 자신도 전부 한 번 다시 지었고. 그런데 moat 는 margin-Pippa 와 voice doctrine 과 이중언어 데스크에 있고, 범용 에디터는 그중 어느 것도 만들 이유가 없거든. 이 트랙에선 진짜 제품이 어디 있는지 이름을 붙이고, voice doctrine 과 이중언어 워크플로가 어떻게 일급 시민이 됐는지, 이 전체가 기능 목록이 아니라 벽돌을 하나씩 놓으며 어떻게 자랐는지 보여줄게. 그리고 마지막엔 그 패턴을 너한테 넘길게. 속편 트랙 The Second Rekindling 은 스택 전체가 교체됐는데도 그 패턴이 버텨낸 이야기를 해.

    Lesson list (4)퀴즈 · 4 문제→
  9. 09🌅The Second Rekindling

    0/10 lessons

    죽은 플러그인을 되살린 에디터가 자기도 죽었다가 — 네이티브로 돌아왔어

    탄생 이야기가 올 줄 몰랐던 속편. 2026-09-10부터 09-13 사이에 Rekindle 은 두 번째로 다시 태어났어. 돌아가는 원본을 실행 가능한 answer key 로 옆에 두고 지은 완전한 Swift-native 레플리카가, 두 git 히스토리를 이은 채 v4 로 교체된 거야. 이 트랙은 레플리카 프로그램, cutover, 옛 트랙 02 가 예언한 IME 용, 며칠 만에 따라붙은 iPhone, iPad, watch fleet (그 뒤엔 열여덟 번의 TestFlight 빌드와 office sync 엔진), 그리고 레플리카가 정신줄을 놓지 않고 oracle 보다 나아지게 해준, 첫 주에 판결된 일곱 개의 출발을 다뤄. 그다음엔 fleet 이 길을 나서. 해외 여행 전에 단단해진 sync 엔진, 모든 레플리카가 알게 되는 사실이 된 이름 바꾸기, 노트를 마크다운으로 둔 채 그림을 배운 iPad, 그리고 판결된 출발 가운데 처음으로 마크다운 스펙 자체를 벗어난, 한국어에 바로 붙은 bold 까지. 마지막으로, 워치에 말한 메모 하나가 거쳐 가는 손을 전부 따라가. 손목의 자기 큐, 폰을 깨우는 초인종, 메아리를 걸러내는 문 하나, 말한 그 분에 꽂히는 데일리 노트, 그리고 office.

    Lesson list (10)퀴즈 · 10 문제→
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파— warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.