dsh-codebase-chat 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,27 +1,20 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/shinzarou-eng/dsh-codebase-chat/main/docs/assets/logo.png" width="110" height="110" alt="dsh-codebase-chat logo">
3
- </p>
4
-
5
- <h1 align="center">dsh-codebase-chat</h1>
6
-
7
- <p align="center">
8
- <strong>Local-first codebase intelligence — chat, audit, refactor, and report on any repository.</strong><br>
9
- DeepSeek Harness plugin &nbsp;·&nbsp; standalone MCP server &nbsp;·&nbsp; CLI
2
+ <a href="https://shinzarou-eng.github.io/dsh-codebase-chat">
3
+ <img src="https://raw.githubusercontent.com/shinzarou-eng/dsh-codebase-chat/main/docs/assets/social-preview.png" alt="dsh-codebase-chat — Your codebase, fully understood" width="100%">
4
+ </a>
10
5
  </p>
11
6
 
12
7
  <p align="center">
13
- <a href="https://www.npmjs.com/package/dsh-codebase-chat"><img src="https://img.shields.io/npm/v/dsh-codebase-chat?logo=npm&label=plugin&color=7cc7ff" alt="npm plugin"></a>
14
- <a href="https://www.npmjs.com/package/dsh-codebase-chat-mcp"><img src="https://img.shields.io/npm/v/dsh-codebase-chat-mcp?logo=npm&label=mcp&color=b08cff" alt="npm mcp"></a>
15
- <a href="https://github.com/shinzarou-eng/dsh-codebase-chat/blob/main/LICENSE"><img src="https://img.shields.io/github/license/shinzarou-eng/dsh-codebase-chat?color=97a3b0" alt="license"></a>
16
- <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-5fed83?logo=nodedotjs" alt="node >= 20"></a>
17
- <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-39c5cf" alt="MCP compatible"></a>
18
- <a href="https://github.com/shinzarou-eng/dsh-codebase-chat/stargazers"><img src="https://img.shields.io/github/stars/shinzarou-eng/dsh-codebase-chat?style=social" alt="stars"></a>
8
+ <a href="https://www.npmjs.com/package/dsh-codebase-chat"><img src="https://img.shields.io/npm/v/dsh-codebase-chat?logo=npm&label=plugin&color=6ec2ff" alt="npm plugin"></a>
9
+ <a href="https://www.npmjs.com/package/dsh-codebase-chat-mcp"><img src="https://img.shields.io/npm/v/dsh-codebase-chat-mcp?logo=npm&label=mcp&color=a78bfa" alt="npm mcp"></a>
10
+ <a href="https://github.com/shinzarou-eng/dsh-codebase-chat/blob/main/LICENSE"><img src="https://img.shields.io/github/license/shinzarou-eng/dsh-codebase-chat?color=93a1b5" alt="license"></a>
11
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-4ade80?logo=nodedotjs" alt="node >= 20"></a>
12
+ <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-22d3ee" alt="MCP compatible"></a>
19
13
  </p>
20
14
 
21
15
  <p align="center">
22
16
  <a href="https://shinzarou-eng.github.io/dsh-codebase-chat"><strong>Website</strong></a> ·
23
- <a href="#quick-start">Quick start</a> ·
24
- <a href="#tool-suite">Tools</a> ·
17
+ <a href="mcp/README.md">MCP docs</a> ·
25
18
  <a href="ROADMAP.md">Roadmap</a> ·
26
19
  <a href="CHANGELOG.md">Changelog</a> ·
27
20
  <a href="CONTRIBUTING.md">Contributing</a>
@@ -29,75 +22,136 @@
29
22
 
30
23
  <br>
31
24
 
25
+ ## Get started
26
+
27
+ ```bash
28
+ npx dsh-codebase-chat-mcp setup
29
+ ```
30
+
31
+ The wizard detects **Claude, Cursor, Windsurf, VS Code, Zed, Gemini CLI, Kiro, Cline and Roo Code**, asks how you want answers (host model, API key, or offline local model), writes the MCP config, done.
32
+ No JSON to edit — and **no API key**: in `promptOnly` mode your host model does the thinking,
33
+ or go **fully offline** with the embedded local model (`localLlm`) — no key, no host, no cloud.
34
+
35
+ Other paths — DeepSeek Harness plugin · CLI · from source · manual config: **[Reference](#reference)**.
36
+
32
37
  <p align="center">
33
- <img src="docs/assets/demo.gif" alt="dsh-codebase-chat CLI demo" width="820"><br>
34
- <em>Real terminal output — <a href="docs/assets/demo-mcp.gif">MCP session</a> · <a href="docs/assets/demo-fr.gif">French mode</a></em>
38
+ <img src="docs/assets/demo-conv.gif" alt="dsh-codebase-chat real MCP session on a 422-file codebase" width="840"><br>
39
+ <em>Real MCP session on a real 422-file codebase — <code>codebase_health</code> finds 324 circular deps, <code>codebase_chat</code> answers with <code>[source: file:line]</code> receipts · <a href="docs/assets/demo-power.gif">PR review (--diff + --watch)</a> · <a href="docs/assets/demo.gif">CLI tour</a> · <a href="docs/assets/demo-mcp.gif">MCP stdio</a> · <a href="docs/assets/demo-fr.gif">French mode</a></em>
35
40
  </p>
36
41
 
37
- ---
42
+ ## What a real session looks like
38
43
 
39
- ## In plain words
44
+ Run on this repository — the exact text the tools return:
40
45
 
41
- > **New here?** Point it at a folder of code on your computer. Ask questions in plain
42
- > language *"How does login work?"*, *"Is there a hardcoded password?"*, *"What should
43
- > I fix first?"* — in French or English. Every answer cites the exact file and line it
44
- > came from, so you can verify it in seconds. Nothing is uploaded anywhere.
46
+ ```console
47
+ $ npx dsh-codebase-chat --project . --health
45
48
 
46
- | Term | Meaning |
47
- | --- | --- |
48
- | **MCP server** | A plug format that lets AI assistants (Claude, Cursor…) use extra tools. Install once, your IDE can "see" your code. |
49
- | **Index** | Like the index at the back of a book — a map of every function and file, so answers are instant. |
50
- | **Prompt-only mode** | The tool prepares the context; your existing AI writes the answer. No extra API key, no extra cost. |
51
- | **Deterministic analysis** | Checks computed directly from your code — same input, same result, every time. No guessing. |
49
+ == STATIC ANALYSIS dsh-codebase-chat ==
50
+ Health score: 52/100 (D) · 33 files analyzed · 65 local imports
52
51
 
53
- <details>
54
- <summary><strong>🇫🇷 En termes simples</strong></summary>
52
+ ● Circular dependencies (0)
53
+ none
55
54
 
56
- <br>
55
+ ● Unused files (candidates) (1)
56
+ lib/client.js
57
57
 
58
- Pointez-le vers un dossier de code sur votre ordinateur. Posez des questions en langage
59
- clair*« Comment fonctionne la connexion ? », « Y a-t-il un mot de passe codé en dur ? »,
60
- « Que devrais-je réparer en premier ? »* en français ou en anglais. Chaque réponse cite
61
- exactement le fichier et la ligne d'où elle vient, donc vous pouvez vérifier en quelques
62
- secondes. Rien n'est envoyé sur internet.
58
+ Unused exports (candidates) (45)
59
+ lib/cache.js:21cachePath
60
+ lib/index.js:2952normalizeLabels
61
+ lib/index.js:2952 getProjectName
62
+
63
63
 
64
- </details>
64
+ ● Duplicate code blocks (2)
65
+ 12 lines × 2 files — lib/index.js, src/project.ts
66
+ 6 lines × 2 files — src/indexer.ts, src/retriever.ts
65
67
 
66
- ---
68
+ ● Complexity hotspots (13)
69
+ lib/index.js — score 418
70
+ src/analysis.ts — score 81
71
+ lib/client.js — score 55
72
+
73
+ ```
67
74
 
68
- ## Why dsh-codebase-chat?
75
+ ```console
76
+ $ npx dsh-codebase-chat --project . --search "health score computation"
69
77
 
70
- Most codebase assistants are slow, paywalled, or require uploading your source to the cloud.
71
- **dsh-codebase-chat** runs entirely on your machine: it indexes your repository, retrieves the
72
- chunks that matter, and assembles a **sourced prompt** — every answer comes back with
73
- `[source: file:line]` citations, confidence scores, and severity labels.
78
+ --- src/analysis.ts :: formatHealthReportMd (FUNCTION) [source: src/analysis.ts:285-353] ---
79
+ --- src/analysis.ts :: analyzeProject (FUNCTION) [source: src/analysis.ts:149-232] ---
80
+ --- src/analysis.ts :: HealthReport (TYPE) [source: src/analysis.ts:15-26] ---
74
81
 
75
- - **Local-first** indexing, retrieval, and prompt building never leave your machine.
76
- - **Bilingual** — every prompt, report, and UI string in French and English.
77
- - **Everywhere** — DeepSeek Harness plugin, standalone MCP server (Cursor, Claude, Windsurf…), and a plain CLI.
78
- - **Decision-grade output** — not just answers: CTO briefs, audits, TASKS.md plans, board reports.
82
+ $ npx dsh-codebase-chat --project . --ask "how is the index cached?"
79
83
 
80
- ---
84
+ > dsh-codebase-chat · prompt-only mode (no API key)
85
+ > Chunks: 81 · Tokens: 59,934 → handed to the host model
86
+ > Cite every technical claim with [source: relative/path:line].
87
+ ```
88
+
89
+ `codebase_health` runs fully offline — deterministic, no LLM, same input → same score.
90
+ Every answer from `codebase_chat` arrives with `[source: file:line]` receipts you can verify in seconds.
91
+
92
+ ## Why it wins
93
+
94
+ | | Paste into a chat | Hosted assistant | **dsh-codebase-chat** |
95
+ | --- | :-: | :-: | :-: |
96
+ | Sees your **whole** repo, not one file | ❌ | ✅ | ✅ |
97
+ | `[source: file:line]` citations | ❌ | ~ | ✅ |
98
+ | Code stays on your machine | ❌ | ❌ | ✅ |
99
+ | Inside Claude / Cursor / Windsurf | ❌ | ~ | ✅ |
100
+ | Deterministic health score, no LLM | ❌ | ❌ | ✅ |
101
+ | Answers fully offline (embedded LLM) | ❌ | ❌ | ✅ |
102
+ | Free — no API key, no account | ~ | ❌ | ✅ |
103
+
104
+ ## How it works
105
+
106
+ <p align="center">
107
+ <img src="docs/assets/how-it-works.png" alt="Pipeline: source → AST index → retrieval → briefing → host model → cited answer, all local-first" width="100%">
108
+ </p>
109
+
110
+ `/codebase-apply` writes safely — **dry-run** · **`.dsh-backups/`** before overwrite · **protected paths** · never outside the project.
111
+
112
+ ## The 13 tools
113
+
114
+ | Understand | Decide | Act | Explore |
115
+ | --- | --- | --- | --- |
116
+ | `codebase_chat` | `codebase_intelligence` | `codebase_refactor` | `codebase_player` |
117
+ | `codebase_search` | `codebase_audit` | `codebase_tasks` | `codebase_crea` |
118
+ | `codebase_explain` | `codebase_report` | | |
119
+ | `codebase_health` | `codebase_ceo` | | |
120
+ | `codebase_impact` | | | |
81
121
 
82
- ## Quick start
122
+ Same engine, three surfaces: **MCP tools** in your IDE, **slash commands** in DeepSeek Harness, **CLI flags** anywhere. Every tool takes `lang` (`fr`/`en`), `embed`, `promptOnly`, `localLlm`, `maxTokens`.
83
123
 
84
- ### Option A — DeepSeek Harness plugin
124
+ ## Reference
125
+
126
+ <details>
127
+ <summary><strong>Install — all paths</strong></summary>
128
+ <br>
129
+
130
+ **DeepSeek Harness plugin**
85
131
 
86
132
  ```bash
87
133
  dsh plugin --profile web add dsh-codebase-chat
88
- # without a global dsh install:
89
- npx -p @deepseek-ai/dsh dsh plugin --profile web add dsh-codebase-chat
90
134
  ```
91
135
 
92
- Then restart `dsh web`, open `http://127.0.0.1:3080` and click the **Codebase Pro** button in the sidebar.
136
+ Then restart `dsh web` `http://127.0.0.1:3080` **Codebase Pro** button.
93
137
 
94
- ### Option B — MCP server (Cursor, Claude, Windsurf…)
138
+ **CLI**
95
139
 
96
140
  ```bash
97
- npx dsh-codebase-chat-mcp setup # detects Claude/Cursor/Windsurf/VS Code and writes the config
141
+ npx dsh-codebase-chat --project C:\my-app --ask "how is auth handled?"
142
+ npx dsh-codebase-chat --project C:\my-app --health # offline, no LLM
143
+ npx dsh-codebase-chat --project C:\my-app --health --diff main # only what changed
144
+ npx dsh-codebase-chat --project C:\my-app --watch # index stays hot while you code
98
145
  ```
99
146
 
100
- Or configure manually:
147
+ **From source**
148
+
149
+ ```bash
150
+ git clone https://github.com/shinzarou-eng/dsh-codebase-chat.git
151
+ cd dsh-codebase-chat && pnpm install && pnpm build
152
+ ```
153
+
154
+ **Manual MCP config**
101
155
 
102
156
  ```json
103
157
  {
@@ -110,58 +164,13 @@ Or configure manually:
110
164
  }
111
165
  ```
112
166
 
113
- > **No API key needed.** Without `DEEPSEEK_API_KEY` / `OPENAI_API_KEY`, the server runs in
114
- > `promptOnly` mode and hands the assembled context to your host model. See
115
- > [`mcp/README.md`](mcp/README.md) for direct-LLM configuration.
116
-
117
- ### Option C — CLI
118
-
119
- ```bash
120
- npx dsh-codebase-chat --project C:\my-app --ask "how is auth handled?"
121
- npx dsh-codebase-chat --project C:\my-app --search "rate limiting"
122
- npx dsh-codebase-chat --project C:\my-app --file src/auth.ts
123
- npx dsh-codebase-chat --project C:\my-app --stats
124
- npx dsh-codebase-chat --project C:\my-app --health # deterministic static analysis, no LLM
125
- ```
126
-
127
- `--health` runs entirely offline: circular dependencies, unused files/exports, duplicated
128
- blocks, complexity hotspots, and a health score — handy as a quick quality gate.
129
-
130
- The first run builds a cached index under `CODEBASE_CACHE_DIR`; subsequent runs are incremental.
131
-
132
- ### From source
133
-
134
- ```bash
135
- git clone https://github.com/shinzarou-eng/dsh-codebase-chat.git
136
- cd dsh-codebase-chat
137
- pnpm install && pnpm build
138
- ```
167
+ Without `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` the server runs `promptOnly`. Set either key for direct-LLM calls — see [`mcp/README.md`](mcp/README.md).
139
168
 
140
- ---
141
-
142
- ## Tool suite
143
-
144
- Every capability is exposed as a DSH tool, a slash command, and an MCP tool.
169
+ </details>
145
170
 
146
- | Tool | What it does |
147
- | --- | --- |
148
- | `codebase_chat` | Q&amp;A on your project with cited sources |
149
- | `codebase_search` | Find symbols, terms, and usages across the repo |
150
- | `codebase_explain` | Explain a file or symbol — fallback symbol search included |
151
- | `codebase_refactor` | Propose a concrete refactor with Before/After diff |
152
- | `codebase_intelligence` | Full CTO brief: architecture, debt, security, roadmap |
153
- | `codebase_audit` | Tech-debt and non-conformity scan with severity |
154
- | `codebase_report` | Strategic board report — SWOT, risks, opportunities |
155
- | `codebase_ceo` | One-page executive brief |
156
- | `codebase_tasks` | Generate a sprinted `TASKS.md` action plan |
157
- | `codebase_player` | UX / playthrough brief from a user's point of view |
158
- | `codebase_crea` | Creative and marketing angles extracted from the code |
159
- | `codebase_health` | **Deterministic** static analysis — circular deps, dead code, duplication, complexity, health score. No LLM needed |
160
-
161
- Common parameters: `projectPath`, `lang` (`fr`/`en`), `embed` (local semantic embeddings),
162
- `promptOnly` (MCP), `style` (reports).
163
-
164
- ### Slash commands (DeepSeek Harness)
171
+ <details>
172
+ <summary><strong>Slash commands (DeepSeek Harness)</strong></summary>
173
+ <br>
165
174
 
166
175
  ```powershell
167
176
  dsh --profile headless '/codebase "how is auth handled?" --project C:\my-app'
@@ -176,38 +185,11 @@ dsh --profile headless '/codebase-build --project C:\my-app'
176
185
  dsh --profile headless '/codebase-git --project C:\my-app'
177
186
  ```
178
187
 
179
- ---
180
-
181
- ## How it works
182
-
183
- ```mermaid
184
- graph LR
185
- A[Query] --> B[Index]
186
- B --> C[Retrieve]
187
- C --> D[Prompt]
188
- D --> E[LLM]
189
- E --> F[Cited answer]
190
- ```
191
-
192
- 1. **Index** — real AST extraction (Babel for JS/TS, tree-sitter WASM for Python, Go, Rust, Java, C# and PHP, regex fallback elsewhere) builds a symbol-level index, cached on disk and refreshed incrementally (mtime/size based — no full re-reads).
193
- 2. **Retrieve** — lexical scoring plus optional local multilingual embeddings (`Xenova/paraphrase-multilingual-MiniLM-L12-v2`) select the most relevant chunks inside a token budget.
194
- 3. **Prompt** — a language-aware prompt is assembled with module graphs, metrics, debt signals, and file excerpts.
195
- 4. **Answer** — the model responds with `[source: file:line]` citations, `[Confidence: X%]`, and `[Severity: …]` labels.
196
-
197
- ### Safe apply pipeline
198
-
199
- `/codebase-apply` and `/codebase-apply-tasks` support dry-run, create `.dsh-backups/` copies
200
- before overwriting, enforce protected paths, and never write outside the selected project.
201
-
202
- ---
203
-
204
- ## Configuration
205
-
206
- ### `.codebase-chat.json` — per-project settings
188
+ </details>
207
189
 
208
- Drop this file at the project root to tune indexing, prompts and safety. Every key
209
- is optional; explicit CLI flags and tool arguments always take precedence, and a
210
- missing or malformed file falls back to built-in defaults.
190
+ <details>
191
+ <summary><strong><code>.codebase-chat.json</code> per-project settings</strong></summary>
192
+ <br>
211
193
 
212
194
  ```json
213
195
  {
@@ -222,28 +204,50 @@ missing or malformed file falls back to built-in defaults.
222
204
 
223
205
  | Key | Effect |
224
206
  | --- | --- |
225
- | `lang` | Default prompt language (`en` or `fr`) for the CLI, MCP tools and slash commands |
226
- | `maxTokens` | Default context budget when the caller passes none |
227
- | `ignoreDirs` | Extra directory names skipped by indexing, `codebase_health` and the file tree |
228
- | `ignoreFiles` | Extra file names skipped the same way |
229
- | `ignoreGlobs` | Globs on project-relative paths `**` spans directories, `*` one segment, `?` one char |
230
- | `protectedPaths` | Extra paths the apply pipeline can never patch (adds to `DSH_PROTECTED_PATHS` and built-ins) |
207
+ | `lang` | Default prompt language (`en`/`fr`) CLI, MCP tools, slash commands |
208
+ | `maxTokens` | Context budget when the caller passes none |
209
+ | `ignoreDirs` / `ignoreFiles` | Extra names skipped by indexing, `codebase_health`, file tree |
210
+ | `ignoreGlobs` | Globs on project-relative paths `**` spans dirs, `*` one segment |
211
+ | `protectedPaths` | Paths the apply pipeline can never patch |
212
+
213
+ </details>
231
214
 
232
- ### Environment variables
215
+ <details>
216
+ <summary><strong>Environment variables</strong></summary>
217
+ <br>
233
218
 
234
219
  | Variable | Default | Purpose |
235
220
  | --- | --- | --- |
236
221
  | `CODEBASE_CACHE_DIR` | OS cache dir | Where the index cache lives |
237
- | `DSH_PROJECT_ALIASES` | — | Extra `name=path` project aliases (`;`-separated) |
238
- | `DSH_DAKO_PROJECT` | — | Override the built-in `dako` alias target |
222
+ | `DSH_PROJECT_ALIASES` | — | Extra `name=path` aliases (`;`-separated) |
223
+ | `DSH_DAKO_PROJECT` | — | Override the built-in `dako` alias |
239
224
  | `DSH_PROTECTED_PATHS` | built-in list | Extra paths that can never be patched |
240
- | `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` | — | MCP direct-LLM mode only |
225
+ | `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` | — | Direct-LLM mode only |
241
226
  | `DEEPSEEK_BASE_URL` / `OPENAI_BASE_URL` | `https://api.deepseek.com/v1` | Custom endpoint |
242
227
  | `CODEBASE_MODEL` | `deepseek-chat` | Model for direct-LLM mode |
228
+ | `CODEBASE_LOCAL_LLM` | — | `1` enables the embedded local model (offline answers); `hf:owner/repo:QUANT` or a `.gguf` path picks another model |
243
229
 
244
- ---
230
+ </details>
231
+
232
+ <details>
233
+ <summary><strong>Plain words — 🇫🇷 inside</strong></summary>
234
+ <br>
235
+
236
+ Point it at a folder of code. Ask questions like a human — *"How does login work?"*, *"What should I fix first?"* — in French or English. Every answer cites the exact file and line it came from. **Nothing is uploaded anywhere.**
237
+
238
+ *Pointez-le vers un dossier de code. Posez vos questions en langage clair. Chaque réponse cite le fichier et la ligne exacts. **Rien n'est envoyé sur internet.***
239
+
240
+ | Term | Meaning |
241
+ | --- | --- |
242
+ | **MCP server** | A plug format that lets AI assistants use extra tools. Install once — your IDE can "see" your code. |
243
+ | **Prompt-only** | The tool prepares the context; your existing AI writes the answer. No extra key, no extra cost. |
244
+ | **Deterministic** | Computed directly from your code — same input, same result, every time. |
245
+
246
+ </details>
245
247
 
246
- ## Project layout
248
+ <details>
249
+ <summary><strong>Project layout & dev</strong></summary>
250
+ <br>
247
251
 
248
252
  ```
249
253
  ├── lib/ DeepSeek Harness plugin (index.js) + Codebase Pro UI (client.js)
@@ -254,75 +258,60 @@ missing or malformed file falls back to built-in defaults.
254
258
  └── dist/ Build output (tsup)
255
259
  ```
256
260
 
257
- ### Development
258
-
259
261
  ```bash
260
- pnpm install # install workspace deps
261
- pnpm build # tsup → dist/
262
- pnpm test # vitest run
263
- pnpm typecheck # tsc --noEmit
262
+ pnpm install && pnpm build && pnpm test && pnpm typecheck
264
263
  ```
265
264
 
266
- ---
267
-
268
- ## FAQ
269
-
270
- <details>
271
- <summary><strong>Does it send my code to the cloud?</strong></summary>
272
- <br>
273
- No. Indexing, retrieval, and prompt building run on your machine. In MCP prompt-only mode, nothing leaves your machine at all — the host model reads the assembled context directly.
274
265
  </details>
275
266
 
276
267
  <details>
277
- <summary><strong>Do I need an API key?</strong></summary>
268
+ <summary><strong>FAQ</strong></summary>
278
269
  <br>
279
- Not for the MCP server — without a key it returns the built prompt to the host model. A <code>DEEPSEEK_API_KEY</code> or <code>OPENAI_API_KEY</code> is only needed for direct LLM calls. Inside DeepSeek Harness, the plugin uses your configured model.
280
- </details>
281
270
 
282
- <details>
283
- <summary><strong>Which languages are supported?</strong></summary>
284
- <br>
285
- French and English out of the box via the <code>lang</code> parameter on every tool and command. The prompt builders are designed to be extended.
286
- </details>
271
+ **Does it send my code to the cloud?**
272
+ Indexing, retrieval, and prompt building all run on your machine. In prompt-only mode the server makes no network calls itself — the assembled context is read by your host model (cloud or local, your choice). For zero-network answers end to end, enable the embedded local model (`localLlm`).
287
273
 
288
- <details>
289
- <summary><strong>Is applying patches safe?</strong></summary>
290
- <br>
291
- Yes. Apply workflows support dry-run, create backups before overwriting, enforce protected paths, and keep all writes inside the selected project.
292
- </details>
274
+ **Do I need an API key?**
275
+ No three ways to get answers: the host model (`promptOnly`, best quality), a DeepSeek/OpenAI key, or the embedded local model (`localLlm`, fully offline). The local model is small — great for quick lookups, prefer a hosted model for full reports. Inside DeepSeek Harness, the plugin uses your configured model.
293
276
 
294
- <details>
295
- <summary><strong>Troubleshooting: EADDRINUSE on port 3080</strong></summary>
296
- <br>
277
+ **Which languages are supported?**
278
+ French and English via `lang` on every tool. Source-side, AST covers JS/TS, Python, Go, Rust, Java, C#, PHP — the rest is indexed line by line.
297
279
 
280
+ **Is applying patches safe?**
281
+ Yes. Dry-run, backups before overwrite, protected paths, writes stay inside the project.
282
+
283
+ **EADDRINUSE on port 3080?**
298
284
  ```powershell
299
285
  Get-NetTCPConnection -LocalPort 3080 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
300
286
  ```
287
+ Then restart `dsh --profile web`.
301
288
 
302
- Then restart <code>dsh --profile web</code>.
303
289
  </details>
304
290
 
305
- ---
291
+ <details>
292
+ <summary><strong>Roadmap</strong></summary>
293
+ <br>
306
294
 
307
- ## Roadmap
295
+ | | |
296
+ | --- | --- |
297
+ | **Shipped** | tree-sitter AST (7 languages), deterministic health score, MCP setup wizard, `.codebase-chat.json`, `--diff` scoping, `--watch` mode, embedded local LLM |
298
+ | **Next** | GitHub Issues export from TASKS.md, prompt language packs (ES/DE/PT) |
299
+ | **Planned** | VS Code extension, HTTP/SSE transport, PR review mode, report export |
300
+ | **Exploring** | multi-repo workspaces, shared team index cache, CI bot |
308
301
 
309
- Highlights see [ROADMAP.md](ROADMAP.md) for the full plan:
302
+ <sub>Full detail: <a href="ROADMAP.md">ROADMAP.md</a></sub>
310
303
 
311
- - **Next**: tree-sitter parsing (Python, Go, Rust, Java), watch mode, GitHub Issues export
312
- - **Planned**: VS Code extension, HTTP/SSE transport, PR review mode, report export (HTML/PDF)
313
- - **Exploring**: multi-repo workspaces, shared team index cache, CI bot
304
+ </details>
314
305
 
315
306
  ---
316
307
 
317
- ## Contributing
318
-
319
- Contributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md). Run `pnpm typecheck && pnpm test` before opening a PR.
320
-
321
- ## Support
322
-
323
- - [Open an issue](https://github.com/shinzarou-eng/dsh-codebase-chat/issues)
324
- - [SUPPORT.md](SUPPORT.md)
325
-
326
- ## License
327
-
328
- [MIT](LICENSE) — Built and maintained by [shinzarou-eng](https://github.com/shinzarou-eng).
308
+ <p align="center">
309
+ <strong>If this project helps you — <a href="https://github.com/shinzarou-eng/dsh-codebase-chat">star it on GitHub</a> ⭐</strong>
310
+ <br><br>
311
+ <a href="https://shinzarou-eng.github.io/dsh-codebase-chat">Website</a> ·
312
+ <a href="https://github.com/shinzarou-eng/dsh-codebase-chat/issues">Issues</a> ·
313
+ <a href="SUPPORT.md">Support</a> ·
314
+ <a href="SECURITY.md">Security</a>
315
+ <br><br>
316
+ <sub><a href="LICENSE">MIT License</a> — built and maintained by <a href="https://github.com/shinzarou-eng">shinzarou-eng</a></sub>
317
+ </p>