33< head >
44 < meta charset ="UTF-8 " />
55 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
6- < title > cc-tail — Watch Claude Code JSONL events in real-time</ title >
6+ < title > ccf — Watch Claude Code JSONL events in real-time</ title >
77 < link rel ="preconnect " href ="https://fonts.googleapis.com " />
88 < link rel ="stylesheet " href ="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap " />
99 < link rel ="stylesheet " href ="https://cdn.jsdelivr.net/npm/rippleui@1.12.1/dist/css/styles.css " />
1616 < div class ="header-inner ">
1717 < a href ="# " class ="brand ">
1818 < span class ="brand-icon "> ◎</ span >
19- < span class ="brand-name "> cc-tail </ span >
19+ < span class ="brand-name "> ccf </ span >
2020 < span class ="brand-version " id ="pkgVersion "> v1.0.0</ span >
2121 </ a >
2222 < nav class ="header-nav ">
2323 < a href ="#install "> Install</ a >
2424 < a href ="#events "> Events</ a >
2525 < a href ="#api "> API</ a >
26- < a href ="https://github.com/AnEntrypoint/cc-tail " target ="_blank " rel ="noopener "> GitHub</ a >
26+ < a href ="https://github.com/AnEntrypoint/ccf " target ="_blank " rel ="noopener "> GitHub</ a >
2727 < button class ="btn btn-ghost btn-sm theme-toggle " id ="themeToggle " aria-label ="Toggle theme ">
2828 < span class ="theme-icon "> ☀</ span >
2929 </ button >
3838 < div class ="hero-badge "> Zero dependencies · ESM + CJS · Node ≥ 18</ div >
3939 < h1 class ="hero-title "> Watch Claude Code output< br /> < span class ="hero-accent "> as it happens.</ span > </ h1 >
4040 < p class ="hero-subtitle ">
41- cc-tail tails < code > ~/.claude/projects/</ code > JSONL files and emits structured events —
41+ ccf tails < code > ~/.claude/projects/</ code > JSONL files and emits structured events —
4242 streaming starts, tool calls, results — as a standard Node.js EventEmitter.
4343 </ p >
4444 < div class ="hero-actions ">
4545 < div class ="install-box ">
46- < code class ="install-cmd " id ="installCmd "> npm install @lanmower/cc-tail </ code >
46+ < code class ="install-cmd " id ="installCmd "> npm install @lanmower/ccf </ code >
4747 < button class ="copy-btn " id ="copyInstall " aria-label ="Copy install command "> ⎘</ button >
4848 </ div >
4949 </ div >
@@ -58,7 +58,7 @@ <h1 class="hero-title">Watch Claude Code output<br /><span class="hero-accent">a
5858 < span class ="dot red "> </ span > < span class ="dot yellow "> </ span > < span class ="dot green "> </ span >
5959 < span class ="card-title "> ESM / TypeScript</ span >
6060 </ div >
61- < pre class ="code-block "> < code > < span class ="kw "> import</ span > < span class ="br "> {</ span > watch < span class ="br "> }</ span > < span class ="kw "> from</ span > < span class ="str "> '@lanmower/cc-tail '</ span > < span class ="pu "> ;</ span >
61+ < pre class ="code-block "> < code > < span class ="kw "> import</ span > < span class ="br "> {</ span > watch < span class ="br "> }</ span > < span class ="kw "> from</ span > < span class ="str "> '@lanmower/ccf '</ span > < span class ="pu "> ;</ span >
6262
6363< span class ="kw "> const</ span > watcher < span class ="pu "> =</ span > watch< span class ="pu "> ()</ span >
6464 < span class ="pu "> .</ span > on< span class ="pu "> (</ span > < span class ="str "> 'conversation_created'</ span > < span class ="pu "> ,</ span > < span class ="pu "> ({</ span > conversation < span class ="pu "> })</ span > < span class ="pu "> =></ span > < span class ="br "> {</ span >
@@ -80,7 +80,7 @@ <h1 class="hero-title">Watch Claude Code output<br /><span class="hero-accent">a
8080 < span class ="dot red "> </ span > < span class ="dot yellow "> </ span > < span class ="dot green "> </ span >
8181 < span class ="card-title "> CommonJS</ span >
8282 </ div >
83- < pre class ="code-block "> < code > < span class ="kw "> const</ span > < span class ="br "> {</ span > watch< span class ="pu "> ,</ span > JsonlWatcher < span class ="br "> }</ span > < span class ="pu "> =</ span > require< span class ="pu "> (</ span > < span class ="str "> '@lanmower/cc-tail '</ span > < span class ="pu "> )</ span > < span class ="pu "> ;</ span >
83+ < pre class ="code-block "> < code > < span class ="kw "> const</ span > < span class ="br "> {</ span > watch< span class ="pu "> ,</ span > JsonlWatcher < span class ="br "> }</ span > < span class ="pu "> =</ span > require< span class ="pu "> (</ span > < span class ="str "> '@lanmower/ccf '</ span > < span class ="pu "> )</ span > < span class ="pu "> ;</ span >
8484
8585< span class ="co "> // Use default ~/.claude/projects dir</ span >
8686< span class ="kw "> const</ span > watcher < span class ="pu "> =</ span > watch< span class ="pu "> ()</ span > < span class ="pu "> ;</ span >
@@ -115,15 +115,15 @@ <h2 class="section-title">API</h2>
115115 < section class ="section section-alt demo-section " id ="demo ">
116116 < div class ="container ">
117117 < h2 class ="section-title "> Live Event Stream</ h2 >
118- < p class ="section-sub "> This is what cc-tail emits when Claude Code runs.</ p >
118+ < p class ="section-sub "> This is what ccf emits when Claude Code runs.</ p >
119119 < div id ="demoRoot "> </ div >
120120 </ div >
121121 </ section >
122122 </ main >
123123
124124 < footer class ="site-footer ">
125125 < div class ="container ">
126- < p > MIT License · < a href ="https://github.com/AnEntrypoint/cc-tail "> AnEntrypoint/cc-tail </ a > · Built with < a href ="https://webjsx.org "> WebJSX</ a > + < a href ="https://ripple-ui.com "> RippleUI</ a > </ p >
126+ < p > MIT License · < a href ="https://github.com/AnEntrypoint/ccf "> AnEntrypoint/ccf </ a > · Built with < a href ="https://webjsx.org "> WebJSX</ a > + < a href ="https://ripple-ui.com "> RippleUI</ a > </ p >
127127 </ div >
128128 </ footer >
129129
0 commit comments