aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Translate identifiers, comments and docstrings to EnglishHEADmainElvis Claros Castro5 hours12-431/+431
| | | | The CLI output and help stay in Spanish, as documented in the README.
* Dejar solo el comando claude-logbookElvis Claros Castro2026-08-174-9/+1
| | | | | | | | | | | | Se va el alias claude-sesiones del entry point y las menciones en los dos READMEs. Un solo nombre, sin ambigüedad. Versión a 1.1.0. Sacar un comando es romper interfaz y por semver estricto sería un mayor, pero el alias solo existió en 1.0.0, publicada hace una hora: un 2.0.0 diría más de lo que pasó. Si preferís la lectura estricta, se cambia antes de publicar. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Instalar desde PyPI en el READMEElvis Claros Castro2026-08-172-6/+16
| | | | | | | | | | | claude-logbook 1.0.0 ya está publicado, así que la instalación recomendada pasa a ser `pipx install claude-logbook`. La instalación desde git queda como alternativa, para cuando alguien quiera lo que todavía no salió en release. De paso queda dicho que claude-sesiones sigue andando como alias, que hasta ahora solo estaba en el pyproject. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Publicar en PyPI desde el release, sin tokensElvis Claros Castro2026-08-171-0/+60
| | | | | | | | | | | | | | | | | Trusted publishing: PyPI confía en este workflow por OIDC y no hay ningún secreto guardado en el repo. El único permiso que pide el job es id-token: write; el resto del workflow corre sin permisos. Antes de que sirva hay que dar de alta el pending publisher en pypi.org con los cuatro datos que espera (owner, repo, publish.yml, environment pypi). Incluye dos guardas antes de subir nada: - que el tag del release coincida con __version__, porque una versión subida a PyPI no se puede reemplazar, solo yankear; - twine check sobre el sdist y el wheel. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Unificar la atribución y terminar el renombreElvis Claros Castro2026-08-173-4/+4
| | | | | | | | | | | | | | | | | | La titularidad estaba escrita de tres formas distintas: el apéndice de la licencia decía "2026 dev.all.ar", el NOTICE "2025 Elvis Claros Castro" y el pyproject solo el nombre. Queda una sola: Copyright 2026 Elvis Claros Castro. Dos cosas que el renombre se había salteado, las dos por no tener extensión o por ser una ruta: - NOTICE seguía diciendo claude-sesiones en la primera línea. - .gitignore excluía "*.html" con una excepción para claude_sesiones/template.html, que después del renombre ya no apuntaba a nada. El template no se perdió porque los archivos versionados no los afecta .gitignore, pero cualquier `git add` futuro lo habría dejado afuera en silencio. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* add year and companyElvis Claros Castro2026-08-171-1/+1
|
* Renombrar el proyecto a claude-logbookElvis Claros Castro2026-08-1717-117/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | El nombre en español no se encontraba, y la zona de "claude + sessions" ya está poblada por cosas distintas con las que se confundía: gapmiss/claude-sessions plugin de Obsidian kyupid/claude-sessions monitor de sesiones en curso (PyPI) claude-session-manager wrapper que preserva contexto (PyPI) LearnedGeek/claude-recall búsqueda con SQLite FTS5 (PyPI) "logbook" cubre las dos mitades — las conversaciones y las memorias — sin caer en "session manager", y encaja con lo que el proyecto produce: una bitácora que se abre en cualquier lado. claude_sesiones/ → claude_logbook/ y todas las referencias ~/.cache/claude-sesiones → ~/.cache/claude-logbook el resumen de PyPI pasa a inglés, como el README principal El comando viejo sigue funcionando: pyproject declara claude-sesiones como segundo entry point del mismo main, para no rehacer la memoria muscular. La interfaz sigue en español; solo cambia cómo se llama e instala el paquete. De paso, memory.py faltaba en la tabla de módulos de los dos READMEs. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Explorar también las memorias de los proyectosElvis Claros Castro2026-08-1712-65/+1651
| | | | | | | | | | | | | | | | | | | | | | | | | | Claude Code deja, además de las sesiones, un directorio memory/ por proyecto: un .md por recuerdo con frontmatter, y un MEMORY.md que hace de índice. Lo que no figura en ese índice sigue en disco pero deja de cargarse en contexto, así que la diferencia entre ambos es justamente lo que vale la pena mirar. -m cambia de sesiones a memorias y reusa los mismos verbos: claude-sesiones -m tabla de memorias claude-sesiones -m docker busca en nombre, descripción y cuerpo claude-sesiones -m -s 3 lee la nº 3 (o -s <nombre>) claude-sesiones -m --check audita índices, enlaces y orígenes claude-sesiones -m -D 3 la borra y la saca de MEMORY.md claude-sesiones -m --type feedback filtra por tipo declarado --check es la parte con criterio propio: reporta memorias que no están en MEMORY.md, entradas del índice que apuntan a archivos que ya no existen, enlaces [[...]] rotos y sesiones de origen que ya no están. El registro de una memoria usa claves cortas como el de sesiones, por el mismo motivo: viaja embebido en el HTML, que ahora tiene su propia pestaña de memorias. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Preparar el proyecto para publicarloElvis Claros Castro2026-08-1621-869/+2675
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | El script suelto pasa a ser un paquete instalable, con tests y documentación. El comportamiento del CLI no cambia: mismos flags, misma salida. Estructura - claude_sesiones/{sessions,terminal,webpage,cli}.py separa parseo, presentación, generación del HTML y argumentos. El template pasa a ser data del paquete. - pyproject.toml con el entry point claude-sesiones, sin dependencias. - build.sh se disuelve en `claude-sesiones --html [ARCHIVO]`: el HTML se arma en proceso, sin subprocess ni data.json intermedio. `--open` lo abre en el navegador. Arreglos - El template no tenía doctype ni <meta charset>: abierto como file:// quedaba en quirks mode y con la codificación del sistema, así que los acentos salían rotos. Tampoco tenía viewport, con lo que en el celular se veía a escala de escritorio. - `delete_sessions()` se llamaba con un argumento de menos (lo encontró el test de borrado). - El orden de la tabla comparaba timestamps como strings; ahora compara los datetimes ya parseados. - `mark()` buscaba el texto crudo dentro del HTML ya escapado, así que resaltar algo con & o < nunca encontraba nada. `esc()` no escapaba la comilla simple. - El caché no tenía versión: al cambiar el esquema del registro se leían registros de la forma anterior. Ahora se invalida solo. El temporal lleva el pid, para que dos corridas simultáneas no se pisen. - `pick()` cortaba el proceso con sys.exit desde adentro; ahora levanta SessionError y el código de salida lo decide la CLI. Mejoras - Respeta CLAUDE_CONFIG_DIR. - La página tiene botón de tema claro/oscuro que recuerda la elección, deep links (#uuid abre esa conversación), atajos de teclado, trampa de foco en el lector y aviso si el JS está apagado. Las tres copias de la paleta quedaron en dos, una por tema. - 92 tests con unittest, sin dependencias, contra árboles de .jsonl falsos: nunca tocan ~/.claude. CI en GitHub Actions, Python 3.9 a 3.13. - README en inglés y español, con el esquema del JSON y una advertencia sobre lo que hay adentro de sesiones.html. - Apache-2.0. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED
* Estado inicial: el explorador como script únicoElvis Claros Castro2026-08-164-0/+1793
Punto de partida antes de preparar el repo para publicarlo: el CLI en un solo archivo, el template y el build.sh que los pega. Los datos generados (data.json, sesiones.html) quedan fuera desde el primer commit: son transcripciones completas de conversaciones privadas. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED