zerochat 9.1.0__tar.gz → 9.2.0__tar.gz

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.

Potentially problematic release.


This version of zerochat might be problematic. Click here for more details.

@@ -0,0 +1,125 @@
1
+ Metadata-Version: 2.4
2
+ Name: zerochat
3
+ Version: 9.2.0
4
+ Summary: Private local web client for AI models, tools and MCP services
5
+ Author: Alberto Alday
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://albalday.github.io/zerochat/
8
+ Project-URL: Repository, https://github.com/albalday/zerochat
9
+ Project-URL: Issues, https://github.com/albalday/zerochat/issues
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Web Environment
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Dynamic: license-file
22
+
23
+ # ZeroChat
24
+
25
+ [English](#english) · [Español](#español)
26
+
27
+ ---
28
+
29
+ <a name="english"></a>
30
+ ## English
31
+
32
+ ZeroChat is a personal, private web client for chatting with AI models, consulting documents and running tools. This documentation covers the **9.x** series. Free and open source under the MIT licence.
33
+
34
+ The interface runs entirely in the browser as static files: history and settings remain in local browser storage without automatic cloud synchronization.
35
+
36
+ ### Key features
37
+
38
+ - **AI Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Supports reasoning, vision and function calling.
39
+ - **WebLLM:** In-browser WebGPU inference with downloadable models (requires compatible hardware).
40
+ - **Documents & RAG:** Local document attachments and collections with client-side text extraction and Orama lexical search (no external embeddings required).
41
+ - **Agentic Tools:** JavaScript sandbox, web search, page fetching, interactive charts and read-only subagents. The optional local backend adds filesystem access, shell commands, diagnostics and MCP services.
42
+ - **Diagnostics:** Conversation branches, JSON and Markdown export, PDF print, context metrics and request inspector.
43
+
44
+ ### Quick start
45
+
46
+ 1. **Web (client-only):** Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configure a connection profile, and start chatting.
47
+ 2. **With local computer tools (Python backend):**
48
+
49
+ ```bash
50
+ # Via PyPI (Linux, macOS, Windows)
51
+ pip install zerochat
52
+ zerochat
53
+
54
+ # Or download and run directly
55
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
56
+ python3 zerochat.py
57
+ ```
58
+
59
+ ### Documentation & Help
60
+
61
+ Comprehensive guides covering configuration, supported environments (Linux, Windows, macOS, Android/Termux), MCP services, and security:
62
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
63
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
64
+
65
+ ### Development
66
+
67
+ ZeroChat is developed on the `dev` branch:
68
+
69
+ ```bash
70
+ git checkout dev
71
+ npm install
72
+ npm test
73
+ ```
74
+
75
+ For development rules, architecture and test suites, see [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) and [`tests/README.md`](./tests/README.md).
76
+
77
+ ---
78
+
79
+ <a name="español"></a>
80
+ ## Español
81
+
82
+ ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y ejecutar herramientas. Esta documentación corresponde a la serie **9.x**. Proyecto de libre uso bajo licencia MIT.
83
+
84
+ La interfaz se ejecuta íntegramente en el navegador como archivos estáticos: el historial y la configuración se conservan en el almacenamiento local del navegador, sin sincronización automática en la nube.
85
+
86
+ ### Características principales
87
+
88
+ - **Perfiles de IA:** OpenAI y APIs compatibles, Ollama, OpenRouter, Claude y Gemini. Soporta razonamiento, visión y llamadas a herramientas (*tool calling*).
89
+ - **WebLLM:** Inferencia local en el navegador mediante WebGPU tras descargar el modelo (requiere hardware compatible).
90
+ - **Documentos y RAG:** Adjuntos y colecciones locales con extracción de texto en el cliente y búsqueda léxica mediante Orama (sin requerir *embeddings* externos).
91
+ - **Herramientas agénticas:** Entorno aislado de JavaScript, búsqueda y lectura web, gráficos interactivos y subagentes de solo lectura. El backend local opcional añade acceso al sistema de archivos, ejecución de comandos, diagnósticos y servicios MCP.
92
+ - **Diagnóstico e historial:** Ramas de conversación, exportación a JSON y Markdown, impresión en PDF, métricas de contexto e inspección de peticiones.
93
+
94
+ ### Inicio rápido
95
+
96
+ 1. **Web directa (solo cliente):** Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configura un perfil de conexión y comienza.
97
+ 2. **Con herramientas del equipo (backend Python):**
98
+
99
+ ```bash
100
+ # Mediante PyPI (Linux, macOS, Windows)
101
+ pip install zerochat
102
+ zerochat
103
+
104
+ # O descarga directa del script
105
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
106
+ python3 zerochat.py
107
+ ```
108
+
109
+ ### Documentación y ayuda
110
+
111
+ Guías completas de configuración, soporte de entornos (Linux, Windows, macOS, Android/Termux), servicios MCP y seguridad:
112
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
113
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
114
+
115
+ ### Desarrollo
116
+
117
+ El desarrollo se realiza en la rama `dev`:
118
+
119
+ ```bash
120
+ git checkout dev
121
+ npm install
122
+ npm test
123
+ ```
124
+
125
+ Las normas de desarrollo, arquitectura y suite de pruebas se describen en [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) y [`tests/README.md`](./tests/README.md).
@@ -0,0 +1,103 @@
1
+ # ZeroChat
2
+
3
+ [English](#english) · [Español](#español)
4
+
5
+ ---
6
+
7
+ <a name="english"></a>
8
+ ## English
9
+
10
+ ZeroChat is a personal, private web client for chatting with AI models, consulting documents and running tools. This documentation covers the **9.x** series. Free and open source under the MIT licence.
11
+
12
+ The interface runs entirely in the browser as static files: history and settings remain in local browser storage without automatic cloud synchronization.
13
+
14
+ ### Key features
15
+
16
+ - **AI Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Supports reasoning, vision and function calling.
17
+ - **WebLLM:** In-browser WebGPU inference with downloadable models (requires compatible hardware).
18
+ - **Documents & RAG:** Local document attachments and collections with client-side text extraction and Orama lexical search (no external embeddings required).
19
+ - **Agentic Tools:** JavaScript sandbox, web search, page fetching, interactive charts and read-only subagents. The optional local backend adds filesystem access, shell commands, diagnostics and MCP services.
20
+ - **Diagnostics:** Conversation branches, JSON and Markdown export, PDF print, context metrics and request inspector.
21
+
22
+ ### Quick start
23
+
24
+ 1. **Web (client-only):** Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configure a connection profile, and start chatting.
25
+ 2. **With local computer tools (Python backend):**
26
+
27
+ ```bash
28
+ # Via PyPI (Linux, macOS, Windows)
29
+ pip install zerochat
30
+ zerochat
31
+
32
+ # Or download and run directly
33
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
34
+ python3 zerochat.py
35
+ ```
36
+
37
+ ### Documentation & Help
38
+
39
+ Comprehensive guides covering configuration, supported environments (Linux, Windows, macOS, Android/Termux), MCP services, and security:
40
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
41
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
42
+
43
+ ### Development
44
+
45
+ ZeroChat is developed on the `dev` branch:
46
+
47
+ ```bash
48
+ git checkout dev
49
+ npm install
50
+ npm test
51
+ ```
52
+
53
+ For development rules, architecture and test suites, see [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) and [`tests/README.md`](./tests/README.md).
54
+
55
+ ---
56
+
57
+ <a name="español"></a>
58
+ ## Español
59
+
60
+ ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y ejecutar herramientas. Esta documentación corresponde a la serie **9.x**. Proyecto de libre uso bajo licencia MIT.
61
+
62
+ La interfaz se ejecuta íntegramente en el navegador como archivos estáticos: el historial y la configuración se conservan en el almacenamiento local del navegador, sin sincronización automática en la nube.
63
+
64
+ ### Características principales
65
+
66
+ - **Perfiles de IA:** OpenAI y APIs compatibles, Ollama, OpenRouter, Claude y Gemini. Soporta razonamiento, visión y llamadas a herramientas (*tool calling*).
67
+ - **WebLLM:** Inferencia local en el navegador mediante WebGPU tras descargar el modelo (requiere hardware compatible).
68
+ - **Documentos y RAG:** Adjuntos y colecciones locales con extracción de texto en el cliente y búsqueda léxica mediante Orama (sin requerir *embeddings* externos).
69
+ - **Herramientas agénticas:** Entorno aislado de JavaScript, búsqueda y lectura web, gráficos interactivos y subagentes de solo lectura. El backend local opcional añade acceso al sistema de archivos, ejecución de comandos, diagnósticos y servicios MCP.
70
+ - **Diagnóstico e historial:** Ramas de conversación, exportación a JSON y Markdown, impresión en PDF, métricas de contexto e inspección de peticiones.
71
+
72
+ ### Inicio rápido
73
+
74
+ 1. **Web directa (solo cliente):** Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configura un perfil de conexión y comienza.
75
+ 2. **Con herramientas del equipo (backend Python):**
76
+
77
+ ```bash
78
+ # Mediante PyPI (Linux, macOS, Windows)
79
+ pip install zerochat
80
+ zerochat
81
+
82
+ # O descarga directa del script
83
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
84
+ python3 zerochat.py
85
+ ```
86
+
87
+ ### Documentación y ayuda
88
+
89
+ Guías completas de configuración, soporte de entornos (Linux, Windows, macOS, Android/Termux), servicios MCP y seguridad:
90
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
91
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
92
+
93
+ ### Desarrollo
94
+
95
+ El desarrollo se realiza en la rama `dev`:
96
+
97
+ ```bash
98
+ git checkout dev
99
+ npm install
100
+ npm test
101
+ ```
102
+
103
+ Las normas de desarrollo, arquitectura y suite de pruebas se describen en [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) y [`tests/README.md`](./tests/README.md).
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "zerochat"
7
- version = "9.1.0"
7
+ version = "9.2.0"
8
8
  description = "Private local web client for AI models, tools and MCP services"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,125 @@
1
+ Metadata-Version: 2.4
2
+ Name: zerochat
3
+ Version: 9.2.0
4
+ Summary: Private local web client for AI models, tools and MCP services
5
+ Author: Alberto Alday
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://albalday.github.io/zerochat/
8
+ Project-URL: Repository, https://github.com/albalday/zerochat
9
+ Project-URL: Issues, https://github.com/albalday/zerochat/issues
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Web Environment
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Dynamic: license-file
22
+
23
+ # ZeroChat
24
+
25
+ [English](#english) · [Español](#español)
26
+
27
+ ---
28
+
29
+ <a name="english"></a>
30
+ ## English
31
+
32
+ ZeroChat is a personal, private web client for chatting with AI models, consulting documents and running tools. This documentation covers the **9.x** series. Free and open source under the MIT licence.
33
+
34
+ The interface runs entirely in the browser as static files: history and settings remain in local browser storage without automatic cloud synchronization.
35
+
36
+ ### Key features
37
+
38
+ - **AI Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Supports reasoning, vision and function calling.
39
+ - **WebLLM:** In-browser WebGPU inference with downloadable models (requires compatible hardware).
40
+ - **Documents & RAG:** Local document attachments and collections with client-side text extraction and Orama lexical search (no external embeddings required).
41
+ - **Agentic Tools:** JavaScript sandbox, web search, page fetching, interactive charts and read-only subagents. The optional local backend adds filesystem access, shell commands, diagnostics and MCP services.
42
+ - **Diagnostics:** Conversation branches, JSON and Markdown export, PDF print, context metrics and request inspector.
43
+
44
+ ### Quick start
45
+
46
+ 1. **Web (client-only):** Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configure a connection profile, and start chatting.
47
+ 2. **With local computer tools (Python backend):**
48
+
49
+ ```bash
50
+ # Via PyPI (Linux, macOS, Windows)
51
+ pip install zerochat
52
+ zerochat
53
+
54
+ # Or download and run directly
55
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
56
+ python3 zerochat.py
57
+ ```
58
+
59
+ ### Documentation & Help
60
+
61
+ Comprehensive guides covering configuration, supported environments (Linux, Windows, macOS, Android/Termux), MCP services, and security:
62
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
63
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
64
+
65
+ ### Development
66
+
67
+ ZeroChat is developed on the `dev` branch:
68
+
69
+ ```bash
70
+ git checkout dev
71
+ npm install
72
+ npm test
73
+ ```
74
+
75
+ For development rules, architecture and test suites, see [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) and [`tests/README.md`](./tests/README.md).
76
+
77
+ ---
78
+
79
+ <a name="español"></a>
80
+ ## Español
81
+
82
+ ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y ejecutar herramientas. Esta documentación corresponde a la serie **9.x**. Proyecto de libre uso bajo licencia MIT.
83
+
84
+ La interfaz se ejecuta íntegramente en el navegador como archivos estáticos: el historial y la configuración se conservan en el almacenamiento local del navegador, sin sincronización automática en la nube.
85
+
86
+ ### Características principales
87
+
88
+ - **Perfiles de IA:** OpenAI y APIs compatibles, Ollama, OpenRouter, Claude y Gemini. Soporta razonamiento, visión y llamadas a herramientas (*tool calling*).
89
+ - **WebLLM:** Inferencia local en el navegador mediante WebGPU tras descargar el modelo (requiere hardware compatible).
90
+ - **Documentos y RAG:** Adjuntos y colecciones locales con extracción de texto en el cliente y búsqueda léxica mediante Orama (sin requerir *embeddings* externos).
91
+ - **Herramientas agénticas:** Entorno aislado de JavaScript, búsqueda y lectura web, gráficos interactivos y subagentes de solo lectura. El backend local opcional añade acceso al sistema de archivos, ejecución de comandos, diagnósticos y servicios MCP.
92
+ - **Diagnóstico e historial:** Ramas de conversación, exportación a JSON y Markdown, impresión en PDF, métricas de contexto e inspección de peticiones.
93
+
94
+ ### Inicio rápido
95
+
96
+ 1. **Web directa (solo cliente):** Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), configura un perfil de conexión y comienza.
97
+ 2. **Con herramientas del equipo (backend Python):**
98
+
99
+ ```bash
100
+ # Mediante PyPI (Linux, macOS, Windows)
101
+ pip install zerochat
102
+ zerochat
103
+
104
+ # O descarga directa del script
105
+ curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
106
+ python3 zerochat.py
107
+ ```
108
+
109
+ ### Documentación y ayuda
110
+
111
+ Guías completas de configuración, soporte de entornos (Linux, Windows, macOS, Android/Termux), servicios MCP y seguridad:
112
+ - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
113
+ - [ZeroChat 9.x Help — English](https://albalday.github.io/zerochat/help/en/index.html)
114
+
115
+ ### Desarrollo
116
+
117
+ El desarrollo se realiza en la rama `dev`:
118
+
119
+ ```bash
120
+ git checkout dev
121
+ npm install
122
+ npm test
123
+ ```
124
+
125
+ Las normas de desarrollo, arquitectura y suite de pruebas se describen en [`AGENTS.md`](./AGENTS.md), [`js/README.md`](./js/README.md), [`py/README.md`](./py/README.md) y [`tests/README.md`](./tests/README.md).
@@ -43,7 +43,7 @@ import webbrowser
43
43
  from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
44
44
  from pathlib import Path
45
45
 
46
- SOURCE_BACKEND_VERSION = "9.1.0"
46
+ SOURCE_BACKEND_VERSION = "9.2.0"
47
47
 
48
48
  def _read_source_version(filename: str) -> str | None:
49
49
  """Lee la versión de un archivo del repositorio cuando se ejecuta desde fuentes."""
@@ -1133,6 +1133,12 @@ def _atomic_write_text(target: Path, text: str):
1133
1133
  temp_path.replace(target)
1134
1134
 
1135
1135
 
1136
+ IGNORED_WORKSPACE_DIRS = {
1137
+ ".git", ".venv", "venv", "node_modules", "__pycache__",
1138
+ ".pytest_cache", ".cache", ".gemini", "dist", "build"
1139
+ }
1140
+
1141
+
1136
1142
  def list_directory(path: str = ".", recursive: bool = False) -> str:
1137
1143
  """List files and directories in a local directory with safe bounded recursive traversal."""
1138
1144
  try:
@@ -1158,21 +1164,28 @@ def list_directory(path: str = ".", recursive: bool = False) -> str:
1158
1164
  try:
1159
1165
  stat = entry.stat(follow_symlinks=False)
1160
1166
  is_dir = entry.is_dir(follow_symlinks=False)
1167
+ try:
1168
+ resolved_path = str(Path(entry.path).resolve())
1169
+ except (OSError, RuntimeError):
1170
+ resolved_path = str(Path(entry.path).absolute())
1161
1171
  entry_data = {
1162
1172
  "name": entry.name,
1163
- "path": str(Path(entry.path).resolve()),
1173
+ "path": resolved_path,
1164
1174
  "type": "directory" if is_dir else "file",
1165
1175
  "size_bytes": None if is_dir else stat.st_size,
1166
1176
  "is_symlink": entry.is_symlink()
1167
1177
  }
1168
1178
  if recursive:
1169
- entry_data["relative_path"] = str(Path(entry.path).resolve().relative_to(target))
1179
+ try:
1180
+ entry_data["relative_path"] = str(Path(entry.path).relative_to(target))
1181
+ except ValueError:
1182
+ entry_data["relative_path"] = entry.name
1170
1183
  entries.append(entry_data)
1171
1184
  if recursive and is_dir and not entry.is_symlink():
1172
1185
  _scan(Path(entry.path), current_depth + 1)
1173
- except (PermissionError, FileNotFoundError):
1186
+ except (PermissionError, FileNotFoundError, OSError):
1174
1187
  continue
1175
- except (PermissionError, FileNotFoundError):
1188
+ except (PermissionError, FileNotFoundError, OSError):
1176
1189
  pass
1177
1190
 
1178
1191
  _scan(target, 1)
@@ -1203,7 +1216,8 @@ def read_file(path: str, start_line: int = 1, end_line: int = None, max_lines: i
1203
1216
 
1204
1217
  if end_line is not None:
1205
1218
  safe_end_line = max(safe_start_line, int(end_line))
1206
- target_line_count = safe_end_line - safe_start_line + 1
1219
+ target_line_count = min(safe_end_line - safe_start_line + 1, 2000)
1220
+ safe_end_line = safe_start_line + target_line_count - 1
1207
1221
  else:
1208
1222
  safe_end_line = None
1209
1223
  target_line_count = max(1, min(int(max_lines), 2000))
@@ -1239,6 +1253,7 @@ def read_file(path: str, start_line: int = 1, end_line: int = None, max_lines: i
1239
1253
  selected_lines.append(encoded.decode("utf-8", errors="ignore"))
1240
1254
  truncated_bytes = True
1241
1255
  reached_end_bound = True
1256
+ break
1242
1257
  else:
1243
1258
  selected_lines.append(line)
1244
1259
  current_bytes += line_bytes
@@ -1340,14 +1355,18 @@ def search_files(query: str, path: str = ".", file_pattern: str = None, max_resu
1340
1355
  except re.error:
1341
1356
  regex = re.compile(re.escape(query), re.MULTILINE)
1342
1357
 
1343
- ignored_dirs = {".git", ".venv", "node_modules", "__pycache__", ".pytest_cache", ".cache"}
1358
+ try:
1359
+ safe_max_results = max(1, min(int(max_results), 500))
1360
+ except (TypeError, ValueError):
1361
+ safe_max_results = 100
1362
+
1344
1363
  matches = []
1345
1364
  files_searched = 0
1346
1365
  max_file_size = 2 * 1024 * 1024
1347
1366
  truncated = False
1348
1367
 
1349
1368
  for root, dirs, files in os.walk(target):
1350
- dirs[:] = [d for d in dirs if d not in ignored_dirs and not d.startswith(".")]
1369
+ dirs[:] = [d for d in dirs if d not in IGNORED_WORKSPACE_DIRS and not d.startswith(".")]
1351
1370
 
1352
1371
  for fname in sorted(files):
1353
1372
  if file_pattern and not fnmatch.fnmatch(fname, file_pattern):
@@ -1355,6 +1374,12 @@ def search_files(query: str, path: str = ".", file_pattern: str = None, max_resu
1355
1374
 
1356
1375
  fpath = Path(root) / fname
1357
1376
  try:
1377
+ if fpath.is_symlink():
1378
+ try:
1379
+ if not fpath.resolve().is_relative_to(target):
1380
+ continue
1381
+ except (OSError, ValueError):
1382
+ continue
1358
1383
  stat = fpath.stat()
1359
1384
  if stat.st_size > max_file_size:
1360
1385
  continue
@@ -1376,7 +1401,7 @@ def search_files(query: str, path: str = ".", file_pattern: str = None, max_resu
1376
1401
  "line_number": line_idx,
1377
1402
  "content": line.rstrip("\r\n")[:300]
1378
1403
  })
1379
- if len(matches) >= max_results:
1404
+ if len(matches) >= safe_max_results:
1380
1405
  truncated = True
1381
1406
  break
1382
1407
  except (PermissionError, OSError):
@@ -1474,12 +1499,20 @@ def get_diagnostics(path: str | None = None) -> str:
1474
1499
  files_checked = 1
1475
1500
  diagnostics.extend(check_single_file(target))
1476
1501
  else:
1477
- ignore_dirs = {".git", "node_modules", ".venv", "venv", "dist", "build", "__pycache__", ".gemini", ".cache"}
1478
1502
  max_scan = 200
1479
1503
  for root, dirs, files in os.walk(target):
1480
- dirs[:] = [d for d in dirs if d not in ignore_dirs and not d.startswith(".")]
1504
+ dirs[:] = [d for d in dirs if d not in IGNORED_WORKSPACE_DIRS and not d.startswith(".")]
1481
1505
  for fname in sorted(files):
1482
1506
  fp = Path(root) / fname
1507
+ try:
1508
+ if fp.is_symlink():
1509
+ try:
1510
+ if not fp.resolve().is_relative_to(target):
1511
+ continue
1512
+ except (OSError, ValueError):
1513
+ continue
1514
+ except OSError:
1515
+ continue
1483
1516
  if fp.suffix.lower() in (".py", ".js", ".mjs", ".cjs", ".json"):
1484
1517
  files_checked += 1
1485
1518
  diagnostics.extend(check_single_file(fp))
@@ -1813,7 +1846,8 @@ LOCAL_TOOLS_DEFINITIONS = [
1813
1846
  "properties": {
1814
1847
  "query": {"type": "string", "maxLength": 4096, "description": "Plain text string or regular expression to search for"},
1815
1848
  "path": {"type": "string", "maxLength": MAX_PATH_LENGTH, "description": "Base search directory (defaults to '.')", "default": "."},
1816
- "file_pattern": {"type": "string", "maxLength": 256, "description": "Optional glob filter (e.g. *.js, *.py)"}
1849
+ "file_pattern": {"type": "string", "maxLength": 256, "description": "Optional glob filter (e.g. *.js, *.py)"},
1850
+ "max_results": {"type": "integer", "description": "Maximum number of matching lines to return (default 100, max 500)", "default": 100}
1817
1851
  },
1818
1852
  "required": ["query"]
1819
1853
  }
zerochat-9.1.0/PKG-INFO DELETED
@@ -1,118 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: zerochat
3
- Version: 9.1.0
4
- Summary: Private local web client for AI models, tools and MCP services
5
- Author: Alberto Alday
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://albalday.github.io/zerochat/
8
- Project-URL: Repository, https://github.com/albalday/zerochat
9
- Project-URL: Issues, https://github.com/albalday/zerochat/issues
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Environment :: Web Environment
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3 :: Only
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Requires-Python: >=3.10
19
- Description-Content-Type: text/markdown
20
- License-File: LICENSE
21
- Dynamic: license-file
22
-
23
- # ZeroChat
24
-
25
- ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y utilizar herramientas. Esta documentación corresponde a la serie **9.x**. Es un proyecto personal, de libre uso con licencia MIT si a alguien le sirve; su objetivo actual es servir de frontend único para un LLM local (Swift-Qwen3.8) con una API compatible con OpenAI.
26
-
27
- La interfaz se sirve como archivos estáticos: `zerochat.html` necesita sus módulos `js/` y `css/`. El historial y la configuración se guardan en el navegador; no se sincronizan automáticamente entre dispositivos. Los proveedores remotos reciben el contenido incluido en las peticiones, y las herramientas web pueden utilizar servicios intermediarios. Almacenamiento local no significa privacidad absoluta.
28
-
29
- *English:* ZeroChat is a web client for personal use: chatting with AI models, consulting documents and using tools. This documentation covers the **9.x** series. It is a personal project, free to use under the MIT licence if it helps anyone; its current goal is to serve as the single frontend for a local LLM (Swift-Qwen3.8) through an OpenAI-compatible API.
30
-
31
- The interface is served as static files: `zerochat.html` needs its `js/` and `css/` modules. History and settings are stored in the browser, without automatic cross-device sync. Remote providers receive content included in requests, and web tools may use intermediary services. Local storage does not mean absolute privacy.
32
-
33
- ## Características principales / Main features
34
-
35
- - **Perfiles:** OpenAI y APIs de chat compatibles, Ollama, OpenRouter, Claude y Gemini. La visión, las herramientas y el razonamiento dependen del modelo y del adaptador.
36
- - **WebLLM:** inferencia en el navegador con WebGPU, tras descargar un modelo. Necesita hardware compatible y memoria suficiente.
37
- - **Documentos:** adjuntos y colecciones RAG con extracción local y búsqueda léxica mediante Orama; sin embeddings. Los fragmentos recuperados se envían al modelo elegido. La extracción de PDF tiene límites y no incluye OCR general.
38
- - **Herramientas:** JavaScript aislado, búsqueda y lectura web, gráficos, preguntas al usuario y subagentes de solo lectura. El backend opcional añade archivos, comandos, diagnósticos, automatización de navegador y servicios MCP.
39
- - **Historial y diagnóstico:** ramas de conversación, exportación JSON y Markdown, impresión a PDF, métricas de contexto y revisión de peticiones antes del envío.
40
-
41
- *English:*
42
-
43
- - **Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Vision, tools and reasoning depend on the model and adapter.
44
- - **WebLLM:** browser inference through WebGPU after downloading a model. Requires compatible hardware and enough memory.
45
- - **Documents:** attachments and RAG collections with local extraction and Orama lexical search, without embeddings. Retrieved passages are sent to the selected model. PDF extraction has limitations and no general OCR.
46
- - **Tools:** isolated JavaScript, web search and retrieval, charts, questions to the user and read-only subagents. The optional backend adds files, commands, diagnostics, browser automation and MCP services.
47
- - **History and diagnostics:** conversation branches, JSON and Markdown export, printing to PDF, context metrics and request inspection before sending.
48
-
49
- ## Inicio rápido / Quick start
50
-
51
- Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), crea un perfil, introduce la URL y la clave si corresponde, consulta los modelos con **Query** y guarda. El perfil **Espejo** permite probar la interfaz sin inferencia. Para WebLLM, prepara un modelo del catálogo.
52
-
53
- *English:* Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), create a profile, enter the URL and key where required, query models with **Query**, and save. **Mirror** lets you try the interface without inference. For WebLLM, prepare a catalogue model.
54
-
55
- Para añadir herramientas del equipo, instala y ejecuta el backend con Python. / To add computer tools, install and run the Python backend:
56
-
57
- ```bash
58
- # Linux, macOS, Android (Termux)
59
- pip install zerochat
60
- zerochat
61
- ```
62
-
63
- ```powershell
64
- # Windows (PowerShell o CMD / PowerShell or CMD)
65
- py -m pip install zerochat
66
- py -m zerochat
67
- ```
68
-
69
- También puedes descargar el script y ejecutarlo. / You can also download and run the script:
70
-
71
- ```bash
72
- # Linux, macOS, Android (Termux)
73
- curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
74
- python3 zerochat.py
75
- ```
76
-
77
- ```powershell
78
- # Windows (PowerShell o CMD / PowerShell or CMD)
79
- curl.exe -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
80
- py zerochat.py
81
- ```
82
-
83
- > **Entornos probados / Tested environments:** Linux (x86_64, ARM), Windows 10/11 (PowerShell, `py -m zerochat`), Android (Termux con `python`; Playwright no se puede usar actualmente en Termux / Playwright cannot currently be used on Termux).
84
- > **Navegadores / Browsers:** ZeroChat **no es compatible con Safari / does not work on Safari**. En macOS debería funcionar con Firefox o Chromium, pero no se ha probado / On macOS it should work with Firefox or Chromium, but it has not been tested.
85
-
86
- Fuera del repositorio de desarrollo, ambos modos abren la interfaz de GitHub Pages. Crean `~/zerochat/` para configuración y servicios, con `.venv/` para dependencias MCP Python. Mantén el proceso abierto y usa su enlace de arranque para autenticar la conexión local. Revisa **Ajustes → MCP** y **Permisos** antes de habilitar herramientas: los comandos actúan con los permisos del proceso local y detenerlos no deshace cambios.
87
-
88
- Borrar `~/zerochat/` elimina ese estado y los MCP gestionados, no el ejecutable, los archivos modificados fuera de esa carpeta ni los datos del navegador. Exporta las conversaciones y perfiles que quieras conservar; sus copias no incluyen las colecciones RAG ni los modelos descargados. El cifrado predeterminado de perfiles utiliza una clave integrada conocida: trata las copias como archivos sensibles.
89
-
90
- *English:* Outside the development repository, both modes open the GitHub Pages interface. They create `~/zerochat/` for configuration and services, with `.venv/` for Python MCP dependencies. Keep the process running and use its startup link to authenticate the local connection. Review **Settings → MCP** and **Permissions** before enabling tools: commands run with the local process permissions, and stopping them does not undo changes.
91
-
92
- Deleting `~/zerochat/` removes that state and managed MCP services, not the executable, files changed elsewhere or browser data. Export conversations and profiles you want to keep; these backups do not include RAG collections or downloaded models. Default profile encryption uses a known built-in key: treat backups as sensitive files.
93
-
94
- ## Documentación y ayuda / Documentation and help
95
-
96
- - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
97
- - [ZeroChat 9.x help — English](https://albalday.github.io/zerochat/help/en/index.html)
98
-
99
- Las guías explican configuración, uso y límites.
100
-
101
- *English:* The guides explain setup, usage and limits.
102
-
103
- ## Desarrollo / Development
104
-
105
- Trabaja en `dev`. Para instalar dependencias y ejecutar las pruebas del proyecto: / Work on `dev`. To install dependencies and run the project tests:
106
-
107
- ```bash
108
- npm install
109
- npm test
110
- ```
111
-
112
- Dentro del repositorio, `python3 zerochat.py` sirve la interfaz local de desarrollo. Si modificas `py/`, reconstruye `zerochat.py` con `npm run build:backend`. La web carga directamente sus módulos, sin un bundle de aplicación.
113
-
114
- *English:* Inside the repository, `python3 zerochat.py` serves the local development interface. After changing `py/`, rebuild `zerochat.py` with `npm run build:backend`. The web app loads its modules directly, without an application bundle.
115
-
116
- Las normas y validaciones se describen en [`AGENTS.md`](./AGENTS.md) y [`tests/README.md`](./tests/README.md).
117
-
118
- *English:* See those files for the applicable development rules and validation.
zerochat-9.1.0/README.md DELETED
@@ -1,96 +0,0 @@
1
- # ZeroChat
2
-
3
- ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y utilizar herramientas. Esta documentación corresponde a la serie **9.x**. Es un proyecto personal, de libre uso con licencia MIT si a alguien le sirve; su objetivo actual es servir de frontend único para un LLM local (Swift-Qwen3.8) con una API compatible con OpenAI.
4
-
5
- La interfaz se sirve como archivos estáticos: `zerochat.html` necesita sus módulos `js/` y `css/`. El historial y la configuración se guardan en el navegador; no se sincronizan automáticamente entre dispositivos. Los proveedores remotos reciben el contenido incluido en las peticiones, y las herramientas web pueden utilizar servicios intermediarios. Almacenamiento local no significa privacidad absoluta.
6
-
7
- *English:* ZeroChat is a web client for personal use: chatting with AI models, consulting documents and using tools. This documentation covers the **9.x** series. It is a personal project, free to use under the MIT licence if it helps anyone; its current goal is to serve as the single frontend for a local LLM (Swift-Qwen3.8) through an OpenAI-compatible API.
8
-
9
- The interface is served as static files: `zerochat.html` needs its `js/` and `css/` modules. History and settings are stored in the browser, without automatic cross-device sync. Remote providers receive content included in requests, and web tools may use intermediary services. Local storage does not mean absolute privacy.
10
-
11
- ## Características principales / Main features
12
-
13
- - **Perfiles:** OpenAI y APIs de chat compatibles, Ollama, OpenRouter, Claude y Gemini. La visión, las herramientas y el razonamiento dependen del modelo y del adaptador.
14
- - **WebLLM:** inferencia en el navegador con WebGPU, tras descargar un modelo. Necesita hardware compatible y memoria suficiente.
15
- - **Documentos:** adjuntos y colecciones RAG con extracción local y búsqueda léxica mediante Orama; sin embeddings. Los fragmentos recuperados se envían al modelo elegido. La extracción de PDF tiene límites y no incluye OCR general.
16
- - **Herramientas:** JavaScript aislado, búsqueda y lectura web, gráficos, preguntas al usuario y subagentes de solo lectura. El backend opcional añade archivos, comandos, diagnósticos, automatización de navegador y servicios MCP.
17
- - **Historial y diagnóstico:** ramas de conversación, exportación JSON y Markdown, impresión a PDF, métricas de contexto y revisión de peticiones antes del envío.
18
-
19
- *English:*
20
-
21
- - **Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Vision, tools and reasoning depend on the model and adapter.
22
- - **WebLLM:** browser inference through WebGPU after downloading a model. Requires compatible hardware and enough memory.
23
- - **Documents:** attachments and RAG collections with local extraction and Orama lexical search, without embeddings. Retrieved passages are sent to the selected model. PDF extraction has limitations and no general OCR.
24
- - **Tools:** isolated JavaScript, web search and retrieval, charts, questions to the user and read-only subagents. The optional backend adds files, commands, diagnostics, browser automation and MCP services.
25
- - **History and diagnostics:** conversation branches, JSON and Markdown export, printing to PDF, context metrics and request inspection before sending.
26
-
27
- ## Inicio rápido / Quick start
28
-
29
- Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), crea un perfil, introduce la URL y la clave si corresponde, consulta los modelos con **Query** y guarda. El perfil **Espejo** permite probar la interfaz sin inferencia. Para WebLLM, prepara un modelo del catálogo.
30
-
31
- *English:* Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), create a profile, enter the URL and key where required, query models with **Query**, and save. **Mirror** lets you try the interface without inference. For WebLLM, prepare a catalogue model.
32
-
33
- Para añadir herramientas del equipo, instala y ejecuta el backend con Python. / To add computer tools, install and run the Python backend:
34
-
35
- ```bash
36
- # Linux, macOS, Android (Termux)
37
- pip install zerochat
38
- zerochat
39
- ```
40
-
41
- ```powershell
42
- # Windows (PowerShell o CMD / PowerShell or CMD)
43
- py -m pip install zerochat
44
- py -m zerochat
45
- ```
46
-
47
- También puedes descargar el script y ejecutarlo. / You can also download and run the script:
48
-
49
- ```bash
50
- # Linux, macOS, Android (Termux)
51
- curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
52
- python3 zerochat.py
53
- ```
54
-
55
- ```powershell
56
- # Windows (PowerShell o CMD / PowerShell or CMD)
57
- curl.exe -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
58
- py zerochat.py
59
- ```
60
-
61
- > **Entornos probados / Tested environments:** Linux (x86_64, ARM), Windows 10/11 (PowerShell, `py -m zerochat`), Android (Termux con `python`; Playwright no se puede usar actualmente en Termux / Playwright cannot currently be used on Termux).
62
- > **Navegadores / Browsers:** ZeroChat **no es compatible con Safari / does not work on Safari**. En macOS debería funcionar con Firefox o Chromium, pero no se ha probado / On macOS it should work with Firefox or Chromium, but it has not been tested.
63
-
64
- Fuera del repositorio de desarrollo, ambos modos abren la interfaz de GitHub Pages. Crean `~/zerochat/` para configuración y servicios, con `.venv/` para dependencias MCP Python. Mantén el proceso abierto y usa su enlace de arranque para autenticar la conexión local. Revisa **Ajustes → MCP** y **Permisos** antes de habilitar herramientas: los comandos actúan con los permisos del proceso local y detenerlos no deshace cambios.
65
-
66
- Borrar `~/zerochat/` elimina ese estado y los MCP gestionados, no el ejecutable, los archivos modificados fuera de esa carpeta ni los datos del navegador. Exporta las conversaciones y perfiles que quieras conservar; sus copias no incluyen las colecciones RAG ni los modelos descargados. El cifrado predeterminado de perfiles utiliza una clave integrada conocida: trata las copias como archivos sensibles.
67
-
68
- *English:* Outside the development repository, both modes open the GitHub Pages interface. They create `~/zerochat/` for configuration and services, with `.venv/` for Python MCP dependencies. Keep the process running and use its startup link to authenticate the local connection. Review **Settings → MCP** and **Permissions** before enabling tools: commands run with the local process permissions, and stopping them does not undo changes.
69
-
70
- Deleting `~/zerochat/` removes that state and managed MCP services, not the executable, files changed elsewhere or browser data. Export conversations and profiles you want to keep; these backups do not include RAG collections or downloaded models. Default profile encryption uses a known built-in key: treat backups as sensitive files.
71
-
72
- ## Documentación y ayuda / Documentation and help
73
-
74
- - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
75
- - [ZeroChat 9.x help — English](https://albalday.github.io/zerochat/help/en/index.html)
76
-
77
- Las guías explican configuración, uso y límites.
78
-
79
- *English:* The guides explain setup, usage and limits.
80
-
81
- ## Desarrollo / Development
82
-
83
- Trabaja en `dev`. Para instalar dependencias y ejecutar las pruebas del proyecto: / Work on `dev`. To install dependencies and run the project tests:
84
-
85
- ```bash
86
- npm install
87
- npm test
88
- ```
89
-
90
- Dentro del repositorio, `python3 zerochat.py` sirve la interfaz local de desarrollo. Si modificas `py/`, reconstruye `zerochat.py` con `npm run build:backend`. La web carga directamente sus módulos, sin un bundle de aplicación.
91
-
92
- *English:* Inside the repository, `python3 zerochat.py` serves the local development interface. After changing `py/`, rebuild `zerochat.py` with `npm run build:backend`. The web app loads its modules directly, without an application bundle.
93
-
94
- Las normas y validaciones se describen en [`AGENTS.md`](./AGENTS.md) y [`tests/README.md`](./tests/README.md).
95
-
96
- *English:* See those files for the applicable development rules and validation.
@@ -1,118 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: zerochat
3
- Version: 9.1.0
4
- Summary: Private local web client for AI models, tools and MCP services
5
- Author: Alberto Alday
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://albalday.github.io/zerochat/
8
- Project-URL: Repository, https://github.com/albalday/zerochat
9
- Project-URL: Issues, https://github.com/albalday/zerochat/issues
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Environment :: Web Environment
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3 :: Only
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Requires-Python: >=3.10
19
- Description-Content-Type: text/markdown
20
- License-File: LICENSE
21
- Dynamic: license-file
22
-
23
- # ZeroChat
24
-
25
- ZeroChat es un cliente web de uso personal para conversar con modelos de IA, consultar documentos y utilizar herramientas. Esta documentación corresponde a la serie **9.x**. Es un proyecto personal, de libre uso con licencia MIT si a alguien le sirve; su objetivo actual es servir de frontend único para un LLM local (Swift-Qwen3.8) con una API compatible con OpenAI.
26
-
27
- La interfaz se sirve como archivos estáticos: `zerochat.html` necesita sus módulos `js/` y `css/`. El historial y la configuración se guardan en el navegador; no se sincronizan automáticamente entre dispositivos. Los proveedores remotos reciben el contenido incluido en las peticiones, y las herramientas web pueden utilizar servicios intermediarios. Almacenamiento local no significa privacidad absoluta.
28
-
29
- *English:* ZeroChat is a web client for personal use: chatting with AI models, consulting documents and using tools. This documentation covers the **9.x** series. It is a personal project, free to use under the MIT licence if it helps anyone; its current goal is to serve as the single frontend for a local LLM (Swift-Qwen3.8) through an OpenAI-compatible API.
30
-
31
- The interface is served as static files: `zerochat.html` needs its `js/` and `css/` modules. History and settings are stored in the browser, without automatic cross-device sync. Remote providers receive content included in requests, and web tools may use intermediary services. Local storage does not mean absolute privacy.
32
-
33
- ## Características principales / Main features
34
-
35
- - **Perfiles:** OpenAI y APIs de chat compatibles, Ollama, OpenRouter, Claude y Gemini. La visión, las herramientas y el razonamiento dependen del modelo y del adaptador.
36
- - **WebLLM:** inferencia en el navegador con WebGPU, tras descargar un modelo. Necesita hardware compatible y memoria suficiente.
37
- - **Documentos:** adjuntos y colecciones RAG con extracción local y búsqueda léxica mediante Orama; sin embeddings. Los fragmentos recuperados se envían al modelo elegido. La extracción de PDF tiene límites y no incluye OCR general.
38
- - **Herramientas:** JavaScript aislado, búsqueda y lectura web, gráficos, preguntas al usuario y subagentes de solo lectura. El backend opcional añade archivos, comandos, diagnósticos, automatización de navegador y servicios MCP.
39
- - **Historial y diagnóstico:** ramas de conversación, exportación JSON y Markdown, impresión a PDF, métricas de contexto y revisión de peticiones antes del envío.
40
-
41
- *English:*
42
-
43
- - **Profiles:** OpenAI and compatible chat APIs, Ollama, OpenRouter, Claude and Gemini. Vision, tools and reasoning depend on the model and adapter.
44
- - **WebLLM:** browser inference through WebGPU after downloading a model. Requires compatible hardware and enough memory.
45
- - **Documents:** attachments and RAG collections with local extraction and Orama lexical search, without embeddings. Retrieved passages are sent to the selected model. PDF extraction has limitations and no general OCR.
46
- - **Tools:** isolated JavaScript, web search and retrieval, charts, questions to the user and read-only subagents. The optional backend adds files, commands, diagnostics, browser automation and MCP services.
47
- - **History and diagnostics:** conversation branches, JSON and Markdown export, printing to PDF, context metrics and request inspection before sending.
48
-
49
- ## Inicio rápido / Quick start
50
-
51
- Abre [ZeroChat en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), crea un perfil, introduce la URL y la clave si corresponde, consulta los modelos con **Query** y guarda. El perfil **Espejo** permite probar la interfaz sin inferencia. Para WebLLM, prepara un modelo del catálogo.
52
-
53
- *English:* Open [ZeroChat on GitHub Pages](https://albalday.github.io/zerochat/zerochat.html), create a profile, enter the URL and key where required, query models with **Query**, and save. **Mirror** lets you try the interface without inference. For WebLLM, prepare a catalogue model.
54
-
55
- Para añadir herramientas del equipo, instala y ejecuta el backend con Python. / To add computer tools, install and run the Python backend:
56
-
57
- ```bash
58
- # Linux, macOS, Android (Termux)
59
- pip install zerochat
60
- zerochat
61
- ```
62
-
63
- ```powershell
64
- # Windows (PowerShell o CMD / PowerShell or CMD)
65
- py -m pip install zerochat
66
- py -m zerochat
67
- ```
68
-
69
- También puedes descargar el script y ejecutarlo. / You can also download and run the script:
70
-
71
- ```bash
72
- # Linux, macOS, Android (Termux)
73
- curl -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
74
- python3 zerochat.py
75
- ```
76
-
77
- ```powershell
78
- # Windows (PowerShell o CMD / PowerShell or CMD)
79
- curl.exe -fsSL https://albalday.github.io/zerochat/zerochat.py -o zerochat.py
80
- py zerochat.py
81
- ```
82
-
83
- > **Entornos probados / Tested environments:** Linux (x86_64, ARM), Windows 10/11 (PowerShell, `py -m zerochat`), Android (Termux con `python`; Playwright no se puede usar actualmente en Termux / Playwright cannot currently be used on Termux).
84
- > **Navegadores / Browsers:** ZeroChat **no es compatible con Safari / does not work on Safari**. En macOS debería funcionar con Firefox o Chromium, pero no se ha probado / On macOS it should work with Firefox or Chromium, but it has not been tested.
85
-
86
- Fuera del repositorio de desarrollo, ambos modos abren la interfaz de GitHub Pages. Crean `~/zerochat/` para configuración y servicios, con `.venv/` para dependencias MCP Python. Mantén el proceso abierto y usa su enlace de arranque para autenticar la conexión local. Revisa **Ajustes → MCP** y **Permisos** antes de habilitar herramientas: los comandos actúan con los permisos del proceso local y detenerlos no deshace cambios.
87
-
88
- Borrar `~/zerochat/` elimina ese estado y los MCP gestionados, no el ejecutable, los archivos modificados fuera de esa carpeta ni los datos del navegador. Exporta las conversaciones y perfiles que quieras conservar; sus copias no incluyen las colecciones RAG ni los modelos descargados. El cifrado predeterminado de perfiles utiliza una clave integrada conocida: trata las copias como archivos sensibles.
89
-
90
- *English:* Outside the development repository, both modes open the GitHub Pages interface. They create `~/zerochat/` for configuration and services, with `.venv/` for Python MCP dependencies. Keep the process running and use its startup link to authenticate the local connection. Review **Settings → MCP** and **Permissions** before enabling tools: commands run with the local process permissions, and stopping them does not undo changes.
91
-
92
- Deleting `~/zerochat/` removes that state and managed MCP services, not the executable, files changed elsewhere or browser data. Export conversations and profiles you want to keep; these backups do not include RAG collections or downloaded models. Default profile encryption uses a known built-in key: treat backups as sensitive files.
93
-
94
- ## Documentación y ayuda / Documentation and help
95
-
96
- - [Ayuda de ZeroChat 9.x — Español](https://albalday.github.io/zerochat/help/index.html)
97
- - [ZeroChat 9.x help — English](https://albalday.github.io/zerochat/help/en/index.html)
98
-
99
- Las guías explican configuración, uso y límites.
100
-
101
- *English:* The guides explain setup, usage and limits.
102
-
103
- ## Desarrollo / Development
104
-
105
- Trabaja en `dev`. Para instalar dependencias y ejecutar las pruebas del proyecto: / Work on `dev`. To install dependencies and run the project tests:
106
-
107
- ```bash
108
- npm install
109
- npm test
110
- ```
111
-
112
- Dentro del repositorio, `python3 zerochat.py` sirve la interfaz local de desarrollo. Si modificas `py/`, reconstruye `zerochat.py` con `npm run build:backend`. La web carga directamente sus módulos, sin un bundle de aplicación.
113
-
114
- *English:* Inside the repository, `python3 zerochat.py` serves the local development interface. After changing `py/`, rebuild `zerochat.py` with `npm run build:backend`. The web app loads its modules directly, without an application bundle.
115
-
116
- Las normas y validaciones se describen en [`AGENTS.md`](./AGENTS.md) y [`tests/README.md`](./tests/README.md).
117
-
118
- *English:* See those files for the applicable development rules and validation.
File without changes
File without changes