Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: ci

on:
pull_request:
push:
branches: [main]

permissions:
contents: read

jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

# 타입·린트·테스트에는 electron 바이너리도 husky 훅도 필요 없다.
# 타입 선언은 electron 패키지에 들어 있어 postinstall 없이도 받는다
- name: 의존성 설치
run: npm ci --ignore-scripts

- name: 타입 검사
run: npm run typecheck

- name: 린트
run: npm run lint

- name: 테스트
run: npm test
11 changes: 8 additions & 3 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ Everything happens on your local file system. The only network request is the up
## Features

- **📜 Read conversations** — Your input renders as terminal prompts, responses as typeset markdown (tables, syntax highlighting). Tool calls, thinking blocks, and system messages stay collapsed so the flow of the conversation is never interrupted.
- **🔍 Browse sessions** — Sessions grouped by project, with titles, last activity, and message counts. Search everything with `⌘F`.
- **🔍 Browse sessions** — Sessions grouped by project, with titles, last activity, and message counts. Narrow the list with `⌘F` by title, first message, or folder name.
- **🔦 Search message contents** — The search field up top (`⌘K`) searches what was actually said, across every project. One half-remembered word finds the session and the message, and picking a result jumps straight to it.
- **⏩ Resume in terminal** — Runs `claude --resume` in the session's original working directory.
- **🔱 Open as fork** — Branches off with `--fork-session`, preserving the original.
- **🖥 Terminal of your choice** — Defaults to the OS terminal; pick iTerm2 or any detected terminal in Settings.
Expand Down Expand Up @@ -77,21 +78,25 @@ npm run build:linux # Linux (AppImage, deb)

## Usage

> `⌘` means `Ctrl` on Windows and Linux. The app shows whichever applies to your platform.

| Action | How |
|------|------|
| Read a session | Expand a project in the sidebar → click a session |
| Expand details | Click a tool call (`▸ Bash …`) or a `Thinking` row |
| Resume / Fork | **Resume in terminal** / **Open as fork** buttons in the header |
| Search | `⌘F` — matches session titles and first prompts |
| Narrow the list | `⌘F` — matches session titles, first prompts, and folder names |
| Search contents | `⌘K` — search field up top; `↑↓` to move, `↵` to open |
| Settings | `⌘,` or the ⚙ button — language, terminal, text size, updates |
| Delete | **Delete** button → confirm → moved to Trash |

## How your data is handled

- Reads: `~/.claude/projects/<project>/<sessionId>.jsonl`
- Viewing is strictly read-only. Original files are never modified.
- The only write operation is deletion you explicitly request — and even that moves files to the Trash.
- The only write to your original files is deletion you explicitly request — and even that moves files to the Trash.
- Settings are stored in the standard app data path (`userData/settings.json`).
- The content-search index lives at `userData/search-index.jsonl`. It holds only your prompts and the assistant's replies — never tool input or output — and never leaves your machine. Delete it and it rebuilds on the next launch.

## Known limitations

Expand Down
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ Claude Code가 로컬에 남긴 대화의 항적을 따라 — 읽고, 이어가
## 주요 기능

- **📜 대화 열람** — 사용자 입력은 터미널 프롬프트 형태로, 응답은 마크다운(표·코드 하이라이트 포함)으로 조판해 표시합니다. 도구 호출·사고 과정·시스템 메시지는 접힌 상태로 정리되어 대화의 흐름을 방해하지 않습니다.
- **🔍 세션 탐색** — 프로젝트별로 정리된 세션 목록과 `⌘F` 검색. 세션 제목·마지막 활동·메시지 수를 한눈에 봅니다.
- **🔍 세션 탐색** — 프로젝트별로 정리된 세션 목록과 `⌘F` 필터. 세션 제목·첫 메시지·폴더 이름으로 목록을 좁힙니다.
- **🔦 대화 내용 검색** — 상단 검색창(`⌘K`)에서 모든 프로젝트의 대화 본문을 찾습니다. 기억나는 단어 하나로 어느 세션의 어느 메시지였는지 짚어내고, 선택하면 그 메시지로 바로 이동합니다.
- **⏩ 터미널에서 이어가기** — 세션의 원래 작업 디렉토리에서 `claude --resume`을 실행해 대화를 이어갑니다.
- **🔱 Fork로 열기** — `--fork-session`으로 원본을 보존한 채 새 세션으로 분기합니다.
- **🖥 터미널 선택** — 기본값은 OS 기본 터미널. 설정에서 iTerm2 등 감지된 터미널을 선택할 수 있습니다.
Expand Down Expand Up @@ -76,21 +77,25 @@ npm run build:linux # Linux (AppImage, deb)

## 사용법

> 단축키의 `⌘` 는 Windows·Linux에서 `Ctrl` 입니다. 앱 화면에도 플랫폼에 맞는 표기가 나옵니다.

| 동작 | 방법 |
|------|------|
| 세션 열람 | 사이드바에서 프로젝트 펼침 → 세션 클릭 |
| 상세 펼치기 | 본문의 도구 호출(`▸ Bash …`)·`사고 과정` 줄 클릭 |
| 이어가기 / Fork | 상단 **터미널에서 이어가기** / **Fork로 열기** 버튼 |
| 검색 | `⌘F` — 세션 제목·첫 메시지 대상 |
| 세션 목록 좁히기 | `⌘F` — 세션 제목·첫 메시지·폴더 이름 대상 |
| 대화 내용 검색 | `⌘K` — 상단 검색창. 모든 세션의 대화 본문 대상, `↑↓` 이동 · `↵` 열기 |
| 설정 | `⌘,` 또는 사이드바 ⚙ — 언어·터미널·글자 크기·업데이트 |
| 삭제 | **삭제** 버튼 → 확인 후 휴지통 이동 |

## 데이터 처리 방식

- 읽기 대상: `~/.claude/projects/<프로젝트>/<sessionId>.jsonl`
- 대화 열람은 전 과정이 읽기 전용입니다. 원본 파일을 수정하지 않습니다.
- 유일한 쓰기 동작은 사용자가 명시적으로 요청한 삭제이며, 이 또한 파일을 휴지통으로 옮기는 방식으로 동작합니다.
- 원본 파일에 가하는 유일한 쓰기 동작은 사용자가 명시적으로 요청한 삭제이며, 이 또한 파일을 휴지통으로 옮기는 방식으로 동작합니다.
- 설정은 OS 표준 앱 데이터 경로(`userData/settings.json`)에 저장됩니다.
- 대화 내용 검색용 색인은 `userData/search-index.jsonl`에 저장됩니다. 사용자 발화와 응답 텍스트만 담고 도구 입출력은 담지 않으며, 기기 밖으로 나가지 않습니다. 파일을 지우면 다음 실행 때 다시 만들어집니다.

## 알려진 제한

Expand Down
Loading
Loading