• v0.7.0 73e5b359d8

    v0.7.0 Stable

    altair823 released this 2026-05-19 23:41:25 +00:00 | 454 commits to main since this release

    변경사항 (since v0.5.0)

    • #140 feat(p10-1A-2): Rust AST chunker — tree-sitter-rust 코드 색인 활성화
    • #139 feat(p10-1a-1): code ingest framework — wire schema + parse-code crate + filter flags
    • #138 chore: bump version 0.5 → 0.6
    • #137 feat(fb-39b): embedding upgrade — multilingual-e5-large default
    • #136 feat(fb-39): eval foundation — precision_at_k_chunk metric
    • #135 docs(claude): cargo clean routinely between merges
    • #134 feat(fb-42): bulk multi-query — kebab search --bulk + mcp__kebab__bulk_search
    • #133 chore(handoff): sync release roadmap with shipped state
    • #132 feat(fb-40): fact-grounded answer — rag-v2 prompt template
    • #131 feat(fb-38): score semantics — score_kind on search_hit.v1 + RRF formula docs
      Rust 코드 색인 활성화.rs 파일이 이제 kebab ingest / kebab search / kebab ask 의 1급 매체. 머지 commit 으로부터 kebab 자기 자신을 dogfooding 가능.

    사용자-가시 surface 변경

    • kebab ingest: .rs 파일이 Markdown / PDF / Image 옆에 추가됨. tree-sitter Rust AST chunker (code-rust-ast-v1) 가 함수 / 메서드 / struct / trait / impl block / macro 단위로 chunk. parser_version = "code-rust-v1", chunker_version = "code-rust-ast-v1".
    • kebab search --json: code chunk hit 의 citation 은 신규 kind = "code" variant (path, line_start, line_end, symbol, lang). SearchHit top-level 에 code_lang + repo 필드 채워짐 (1A-1 에서 schema 만 추가됐던 두 필드를 실제 backfill). --code-lang / --repo / --media code filter (1A-1) 가 1A-2 머지 시점부터 실효.
    • kebab schema --json: stats.code_lang_breakdown 실제 카운트 채워짐. stats.media_breakdown"code" 카테고리 등장.
    • wire schema: 모두 additive minor — 기존 consumer 무영향. Citation::Code variant 는 1A-1 wire 에 이미 존재했음.
    • [ingest.code] config 절 (1A-1 도입): default 그대로 동작. extra_skip_globs 로 사용자 추가 skip 패턴 지정 가능.
    • MediaType::Code(String) 추가 — 1A 는 "rust" 만 활성화. 다른 코드 확장자는 후속 phase.

    알려진 동작 (HOTFIXES 2026-05-19)

    • AST_CHUNK_MAX_LINES = 200kebab-chunk/src/code_rust_ast_v1.rs 모듈 상수. Chunker trait 이 per-medium config 미노출 → 현재 IngestCodeCfg::default().ast_chunk_max_lines 와 동일하므로 user-visible 차이 없음. 적합한 해결은 per-medium chunker registry (P+).
    • .rs 파일은 SourceType::Note 로 분류 (kebab-core SourceType::Code variant 미존재). --media code / --code-lang rust filter 는 정상 동작 — MediaType::Code("rust") 로 별도 분류됨. 적합한 해결은 SourceType::Code additive 추가 (후속).

    검증 절차

    docs/SMOKE.md 의 P10-1A-2 절 — 격리된 TempDir 워크스페이스에 .rs 파일 1개 두고 kebab ingest --json / kebab search --code-lang rust --json / kebab schema --json | jq .stats.code_lang_breakdown 로 wiring 확인.

    사전 알림

    crates/kebab-eval/tests/runner.rs::runner_lexical_is_deterministic_per_query_payload 가 full-suite 첫 실행에서 간헐적으로 실패 (elapsed_ms: 0 vs 1) 후 isolated 재실행 시 통과 — pre-existing timing flake, 1A-2 변경과 무관 (해당 파일 본 PR 에서 미수정). 후속 정리 권장.

    Downloads
  • v0.6.0 72798bd3ff

    v0.6.0 Stable

    altair823 released this 2026-05-10 15:03:45 +00:00 | 498 commits to main since this release

    v0.6.0 = RAG quality batch. fb-38 + fb-40 + fb-42 + fb-39 + fb-39b 5건 묶음.

    신규 surface

    • --bulk (fb-42) — stdin ndjson 으로 N query 한 번에 (cap 100). 응답 = stdout per-query ndjson + stderr summary. agent loop 효율.
    • 응답 hit 의 score_kind 필드 (fb-38) — "rrf" (hybrid) / "bm25" (lexical) / "cosine" (vector). top-level score 의 의미 declarative. agent confidence 오해 방지.

    kebab ask

    • 기본 prompt template rag-v2 (fb-40) — V1 의 4 규칙 + 3 신규: fact 인용 시 verbatim span / 학습 지식 동원 금지 / 근거 모호 시 "확실하지 않다" 명시. user TOML prompt_template_version = "rag-v1" 명시 시 legacy 동작.

    kebab eval run

    • precision_at_k_chunk metric (fb-39) — P@5, P@10. binary relevance via expected_chunk_ids. 분모 = k 고정. lever 적용 (chunk policy / RRF / cross-encoder / embedding) precision 비교용 측정 도구.
    • kebab eval compare 가 P@k delta surface — markdown table + JSON deltas.

    MCP

    • mcp__kebab__bulk_search 신규 tool (tools/list 7 → 8). N query JSON envelope bulk_search_response.v1 (results + summary).
    • mcp__kebab__search 응답 안 score_kind 필드 (fb-38) — agent guidance.
    • mcp__kebab__ask 응답 strict (fb-40 rag-v2) — 학습 지식 거부 / "확실하지 않다" 출현.

    Embedding

    • 기본 모델 multilingual-e5-large (1024 dim, fb-39b) — 이전 multilingual-e5-small (384 dim) 대비 한국어 retrieval precision 강화. fastembed 자동 다운로드 (~1.3 GB 첫 실행). user TOML model = "multilingual-e5-small" 명시 시 backwards-compat.

    Cascade

    • embedding_version 변경 — 모든 chunk 재-embed (fb-23 incremental ingest 자동). 옛 LanceDB table (chunk_embeddings_multilingual-e5-small_384) orphan. 정리: kebab reset --vector-only && kebab ingest.
    • prompt_template_version 변경 — 기존 eval_runs frozen, rag-v2 비교는 신규 run.

    호환성

    • wire 모든 추가 additive minor — 기존 consumer 무영향.
    • score_kind / bulk_search_* schemas additive (bulk_search_item.v1 + bulk_search_response.v1 신규).
    • 기존 user config TOML pinning 그대로 honored — opt-out path.

    도그푸딩 가이드

    # embedding 업그레이드 (신규 모델 ONNX 다운로드 + 전체 re-embed)
    kebab reset --vector-only && kebab ingest
    
    # bulk multi-query
    printf '{"query":"a"}\n{"query":"b"}\n' | kebab search --bulk --json
    
    # precision 측정 (golden 의 expected_chunk_ids 채워서)
    kebab eval run
    
    # rag-v2 행태 확인
    kebab ask "..." --json | jq .answer  # "확실하지 않다" 출현 가능
    

    의존성

    • 신규 dep 없음.
    • fastembed 4.9.1 의 MultilingualE5Large enum variant 활용 (이미 시드).
    Downloads
  • v0.5.0 cf3acfc136

    v0.5.0 Stable

    altair823 released this 2026-05-10 08:10:06 +00:00 | 548 commits to main since this release

    변경사항 (since v0.3.3)

    • #130 chore: bump version 0.4 → 0.5
    • #129 feat(fb-37): trace + stats — search debug + KB health surface
    • #128 chore: sync Cargo.lock for kebab-mcp time dep (fb-36)
    • #127 feat(fb-36): search filter args (--media / --ingested-after / --doc-id + 4 existing)
    • #126 feat(fb-35): verbatim fetch (chunk / doc / span)
    • #125 feat(fb-34): output budget controls
    • #124 feat(fb-33): streaming ask (ndjson delta)
    • #123 chore: bump version 0.3.3 → 0.4.0
    • #122 feat(fb-32): per-hit + per-citation freshness indicators
    • #121 docs(skill): MCP-first guidance + CLI as fallback
      v0.5.0 은 도그푸딩 피드백 일괄 batch — search/ingest 의 agent 친화 surface 6가지를 한 번에 추가. wire schema 변경은 모두 additive minor (기존 consumer 무영향, schema bump 없음).

    신규 surface

    • --max-tokens N / --snippet-chars N / --cursor (fb-34) — 응답 크기 budget + pagination. 결과는 search_response.v1 envelope (기존 bare search_hit.v1[] 대체, 기존 호환 유지).
    • --media md|pdf|image|audio|other / --ingested-after RFC3339 / --doc-id ID (fb-36) + 기존 4종 노출 (--tag, --lang, --path-glob, --trust-min).
    • --trace (fb-37) — pre-fusion lex/vec list + RRF union + per-stage timing 을 응답의 optional trace 필드로 emit. 캐시 우회 (debug intent — fresh run 보장).
    • search hit 의 stale + indexed_at 필드 (fb-32) — config.search.stale_threshold_days 기준 stale 판정.

    kebab ask

    • --stream (fb-33) — token-by-token answer 를 answer_event.v1 ndjson 으로 stderr emit. 최종 answer 는 기존 answer.v1 로 stdout.

    kebab fetch (신규 명령, fb-35)

    • kebab fetch chunk <chunk_id> [--context N] — chunk verbatim + context.
    • kebab fetch doc <doc_id> — doc 전체 verbatim.
    • kebab fetch span <doc_id> --line-start N --line-end M — 라인 범위 verbatim.
    • 응답 schema fetch_result.v1. PDF/audio span 은 error.v1.code = span_not_supported.

    kebab schema

    • stats 객체 4 신규 필드 (fb-37): media_breakdown (5키 패딩), lang_breakdown (NULL 키는 "null"), index_bytes (sqlite + lancedb 디스크 합), stale_doc_count.
    • 위 search surface 거울: 7 신규 filter 입력 (fb-36), 3 budget 입력 (fb-34), trace: bool 입력 (fb-37).

    TUI Search pane

    • t 키 (fb-37) — TracePopup 모달, lex/vec/rrf 후보 + per-stage timing scroll.

    호환성

    • wire 모든 변경 additive minor — 기존 search_response.v1 / schema.v1 consumer 무영향. *.v2 cascade 없음.
    • pre-1.0 minor convention — 0.x.y 의 minor bump 는 surface 추가 누적, breaking change 없음.
    • SearchOpts / SearchResponse / SearchFilters / IndexStats 도메인 type 의 신��� 필드는 #[serde(default)] 로 옛 JSON deserialize 보존.

    도그푸딩 가이드

    # Trace 디버그
    kebab search "rust async" --trace --json | jq .trace
    
    # KB 건강 점검
    kebab schema --json | jq .stats
    
    # Filter 조합
    kebab search "API" --media md --ingested-after 2026-01-01 --json
    
    # Verbatim fetch
    kebab fetch chunk c-abc123 --context 1
    
    # Streaming ask
    kebab ask "how does X work?" --stream
    

    의존성 추가

    time workspace dep 가 kebab-mcp 로 확장 (fb-36 RFC3339 파싱).

    Downloads
  • v0.4.0 877ad18f34

    v0.4.0 Stable

    altair823 released this 2026-05-09 03:42:43 +00:00 | 620 commits to main since this release

    변경사항 (since v0.3.2)

    • #123 chore: bump version 0.3.3 → 0.4.0
    • #122 feat(fb-32): per-hit + per-citation freshness indicators
    • #121 docs(skill): MCP-first guidance + CLI as fallback
    • #120 fix(progress): one draw per file — drop set_message in TTY AssetStarted
    • #119 fix(progress): eliminate duplicate TTY frame per asset
    • #118 fix(config): use XDG-standard paths on macOS (prevent DataOnly reset deleting config)
    • #116 fix(progress): eliminate duplicate bar frame per asset in TTY mode
    • #115 docs(tasks): mark fb-30 + fb-31 merged in INDEX.md
    • #114 chore: bump version 0.3.2 → 0.3.3
    • #113 feat(fb-26,fb-28): ingest log consistency + --readonly/--quiet flags + schema sync
    Downloads
  • v0.3.3 6d4a648349

    v0.3.3 Stable

    altair823 released this 2026-05-07 14:46:40 +00:00 | 641 commits to main since this release

    주요 변경사항

    • macOS XDG 경로 수정: macOS에서 config/data/cache 경로가 모두 ~/Library/Application Support/로 충돌하던 버그 수정. 이제 표준 XDG 경로(~/.config/kebab/, ~/.local/share/kebab/, ~/.cache/kebab/) 사용. kebab reset --data-only가 config 파일을 삭제하지 않음.
    • 기존 config 자동 마이그레이션: ~/Library/Application Support/kebab/config.toml 존재 시 새 XDG 경로로 자동 복사.
    • progress bar 중복 줄 수정: TTY 모드에서 파일당 2줄씩 scrollback에 출력되던 버그 수정. AssetStarted에서 set_position()만 호출해 draw를 1회로 제한.
    • Claude Code skill MCP-first 가이드: integrations/claude-code/kebab/SKILL.md 가 MCP tool catalog (6 tools) 를 primary surface로 명시. recipe들이 mcp__kebab__* 호출로 정렬되고 CLI는 fallback section 으로 분리.
    Downloads
  • v0.3.2 6dcc5ce412

    v0.3.2 Stable

    altair823 released this 2026-05-07 10:01:33 +00:00 | 666 commits to main since this release

    변경사항 (since v0.3.0)

    • #112 chore: bump version 0.3.1 → 0.3.2
    • #111 feat(fb-31): single-file / stdin ingest — agent on-demand 저장
    • #110 docs(fb-31): single-file / stdin ingest spec + implementation plan
    • #109 chore: bump version 0.3.0 → 0.3.1 (fb-30 release)
    • #108 feat(fb-30): MCP server (stdio) — agent integration MVP
    • #107 docs(fb-30): MCP server (stdio) spec + implementation plan
    • #106 docs: defer fb-29 HTTP daemon + fb-30 stdio-only
    Downloads
  • v0.3.1 138f31d661

    v0.3.1 Stable

    altair823 released this 2026-05-07 08:08:17 +00:00 | 688 commits to main since this release

    변경사항 (since v0.2.1)

    • #109 chore: bump version 0.3.0 → 0.3.1 (fb-30 release)
    • #108 feat(fb-30): MCP server (stdio) — agent integration MVP
    • #107 docs(fb-30): MCP server (stdio) spec + implementation plan
    • #106 docs: defer fb-29 HTTP daemon + fb-30 stdio-only
    • #105 chore: bump version 0.2.1 → 0.3.0 (fb-27 release)
    • #104 feat(fb-27): introspection (kebab schema) + structured error wire
    • #103 feat(integrations): ship Claude Code skill for kebab
      agent integration MVP — fb-30 (MCP server stdio) 머지 후 patch cut. 신규: kebab mcp subcommand + new crate kebab-mcp (rmcp 1.6 SDK) + 4 read-only tool (search/ask/schema/doctor). schema.v1.capabilities.mcp_server true. backwards-compat 완전 (모든 기존 명령 동작 무영향). Claude Code / Cursor / OpenAI Agents 등 MCP-aware host 가 native 사용 — ~/.claude/mcp.json{"command":"kebab","args":["mcp"]} 등록.
    Downloads
  • v0.3.0 50ad7f1f28

    v0.3.0 Stable

    altair823 released this 2026-05-07 04:49:48 +00:00 | 713 commits to main since this release

    변경사항 (since v0.1.0)

    • #105 chore: bump version 0.2.1 → 0.3.0 (fb-27 release)
    • #104 feat(fb-27): introspection (kebab schema) + structured error wire
    • #103 feat(integrations): ship Claude Code skill for kebab
    • #102 chore: bump workspace version 0.2.0 → 0.2.1 (p9-fb-25 release)
    • #101 fix(kebab-config): p9-fb-25 — workspace.include 제거 + 지원 형식 가시성
    • #100 chore(CLAUDE.md): release / binary version bump 규약 추가
    • #99 chore: bump workspace version 0.1.0 → 0.2.0
      agent foundation MVP — fb-27 (introspection + structured error wire) 머지 후 minor cut. 신규: kebab schema CLI + schema.v1 / error.v1 wire. exit code 0/1/2/3 unchanged. 후속 fb-26/28/29/30/31 누적 시 0.3.x patch / 0.4.0 minor 로 cut.
    Downloads
  • v0.2.1 5398fb057c

    altair823 released this 2026-05-05 12:52:30 +00:00 | 739 commits to main since this release

    kebab v0.2.1

    p9-fb-25 도그푸딩 follow-up release. config 단순화 + 지원 형식 가시성.

    변경사항 (since v0.1.0)

    Config

    • workspace.include 필드 제거. denylist-only 모델 정착. 옛 config 의 include = [...] 는 silently 무시 + 첫 load 시 단발 deprecation warning.
    • 지원 형식 (Markdown / 이미지 / PDF) 은 extractor 가 자동 결정 — config 에 명시 불가. 사용자가 헷갈릴 일 없음.

    Ingest 가시성

    • IngestItem.warnings 가 Skipped 시 사유 채움:
      • "unsupported media type: .docx" (확장자 있음)
      • "unsupported media type: <no-ext>" (확장자 없음, sentinel)
      • "kb:// URI not yet supported" (kb:// URI)
    • IngestReport.skipped_by_extension: BTreeMap<String, u32> 신규. 확장자별 skip 카운트. wire schema additive (ingest_report.v1 호환 유지).
    • CLI summary + TUI status_line 에 breakdown: "5 skipped: 3 docx, 1 txt, 1 epub" 형식. desc 정렬 (count) + ties by key alphabetic.
    • kebab init 헤더 주석 + README 에 지원 형식 (md / png .jpg .jpeg / pdf) 명시.

    호환성

    • caller breaking 없음. 모든 surface 변경 backward-compat.
    • 옛 config (include = [...]) 는 silently 동작. 다음 release 까지 deprecation 유지.

    진행

    • 730 워크스페이스 테스트 무수정 통과.
    • 신규 ~6 테스트 (legacy include 무시 / WorkspaceCfg destructure / skip_reason 통합 / init_template 헤더 / status_line breakdown × 2 / render_skipped_breakdown unit).

    참조

    • HOTFIXES 2026-05-05 — p9-fb-25 — live deviation source of truth.
    • 도그푸딩 피드백 + spec / plan: tasks/p9/p9-fb-25-config-include-removal.md.

    다음

    • 새 extractor (txt / docx / epub) 도입은 별 spec.
    • kebab doctor 가 unsupported 파일 카운트 분석은 후속 task.
    Downloads
  • v0.1.0 2319206522

    altair823 released this 2026-05-05 02:26:29 +00:00 | 758 commits to main since this release

    kebab v0.1.0

    첫 공식 릴리즈. Single-user local-first knowledge base + RAG, 모든 inference local (Ollama + fastembed + whisper.cpp).

    주요 surface

    CLI

    • kebab init — XDG 기본 경로에 ~/.config/kebab/config.toml 생성.
    • kebab ingest [<path>] [--force-reingest] — workspace 색인. 두 번째 ingest 부터 변하지 않은 doc 자동 skip (blake3 + parser/chunker/embedding version cascade). --force-reingest 로 우회.
    • kebab search "<query>" [--mode lexical|vector|hybrid] — FTS5 / Lance / hybrid retrieval.
    • kebab ask "<query>" [--show-citations] [--session <id>] — RAG 답변 + 근거 인용. --session <id> 로 multi-turn.
    • kebab list docs / kebab inspect doc|chunk <id> — corpus inspection.
    • kebab doctor — 설정 / 모델 / DB health check.
    • kebab reset [--all|--data-only|--vector-only|--config-only] [--yes] — XDG 데이터 wipe.
    • kebab eval run / compare — golden query 회귀 측정.

    TUI (kebab tui)

    • 4 pane (Library / Search / Ask / Inspect) + vim-style mode (Normal / Insert).
    • Library: 컬럼 헤더 (TITLE / TAGS / UPDATED / CHUNKS) + display-width 정렬 (Hangul / CJK 안전).
    • Search: 200 ms debounce + background worker + stale 결과 자동 폐기 (generation counter).
    • Ask: multi-turn transcript, markdown 렌더, follow-tail auto-scroll.
    • 입력 cursor: ← / → / Home / End / Delete 로 mid-string 편집 (모든 input pane).
    • Page scroll: PgUp / PgDn (Ask 트랜스크립트 + Inspect, 10 줄 step).
    • Status bar (항상 노출): kebab v<version> │ <pane> │ <docs> docs │ <state> — streaming / searching / indexing / idle cascade. ingest progress 흡수.
    • Cheatsheet popup: F1 토글, 모든 pane 의 키바인딩 + global toggle 표.

    저장 / 격리

    • SQLite V001~V006 migration. V006 = incremental ingest (last_chunker_version / last_embedding_version per-doc).
    • LanceDB vector store, fastembed embedder.
    • Wire schema v1 (ingest_report / search_hit / answer / doctor / ingest_progress).

    Phase 진행

    P0 ~ P5 직렬 + P6 ~ P9 P5 이후 병렬. 본 릴리즈는 P9 (UI) 의 도그푸딩 사이클 1회 완성 + post-merge follow-up (p9-fb-21 ~ p9-fb-24) 포함.

    도그푸딩 follow-up 하이라이트

    • p9-fb-22 — TUI 입력 cursor mid-string 편집 + Ask follow-tail auto-scroll. Gitea #94, #95.
    • p9-fb-23 — Incremental ingest (변하지 않은 doc skip).
    • p9-fb-24 — TUI status/key bar + Library 컬럼 헤더 + Ask/Inspect PgUp/PgDn.

    다음

    • P9-5 Tauri desktop 진행 중.
    • 후속 도그푸딩 사이클.

    참조

    • README.md — quick start + 명령 표.
    • HANDOFF.md — phase 진행도 + 다음 task 후보.
    • docs/ARCHITECTURE.md — 내부 구조 + 의존 그래프.
    • docs/superpowers/specs/2026-04-27-kebab-final-form-design.md — frozen design contract.
    • tasks/HOTFIXES.md — post-merge deviation 로그.
    Downloads