<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claude-logbook/.github/workflows/ci.yml, branch main</title>
<subtitle>Browse your local Claude Code sessions and project memories - terminal table and self-contained HTML</subtitle>
<link rel='alternate' type='text/html' href='http://git.all.ar/pub/claude-logbook/'/>
<entry>
<title>Renombrar el proyecto a claude-logbook</title>
<updated>2026-08-17T18:14:11+00:00</updated>
<author>
<name>Elvis Claros Castro</name>
<email>elvis@claros.ar</email>
</author>
<published>2026-08-17T18:14:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.all.ar/pub/claude-logbook/commit/?id=ffe36e782b064a31b7a695ac1372f1329ac79153'/>
<id>ffe36e782b064a31b7a695ac1372f1329ac79153</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>Preparar el proyecto para publicarlo</title>
<updated>2026-08-16T22:57:17+00:00</updated>
<author>
<name>Elvis Claros Castro</name>
<email>elvis@claros.ar</email>
</author>
<published>2026-08-16T22:57:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.all.ar/pub/claude-logbook/commit/?id=bd3ca3a04fcd8d882d23deeb3f3a0d6f04b3f93f'/>
<id>bd3ca3a04fcd8d882d23deeb3f3a0d6f04b3f93f</id>
<content type='text'>
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 &lt;meta charset&gt;: 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 &amp; o &lt; 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;meta charset&gt;: 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 &amp; o &lt; 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
</pre>
</div>
</content>
</entry>
</feed>
