From ffe36e782b064a31b7a695ac1372f1329ac79153 Mon Sep 17 00:00:00 2001 From: Elvis Claros Castro Date: Mon, 17 Aug 2026 15:14:11 -0300 Subject: Renombrar el proyecto a claude-logbook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- claude_logbook/webpage.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 claude_logbook/webpage.py (limited to 'claude_logbook/webpage.py') diff --git a/claude_logbook/webpage.py b/claude_logbook/webpage.py new file mode 100644 index 0000000..c8550fe --- /dev/null +++ b/claude_logbook/webpage.py @@ -0,0 +1,74 @@ +"""Genera la página HTML autocontenida a partir de las sesiones. + +El resultado no necesita red ni servidor: los datos y las transcripciones van +embebidos adentro y se abre con doble clic. +""" + +import json +from importlib import resources + +MARKER = "__DATA__" + +TEMPLATE_NAME = "template.html" + + +class TemplateError(Exception): + """El template no tiene la forma que espera el generador.""" + + +def template_text(path=None): + if path: + with open(path, encoding="utf-8") as f: + return f.read() + return (resources.files(__package__) / TEMPLATE_NAME).read_text(encoding="utf-8") + + +def build_payload(sessions, memories=None): + """Estructura que viaja embebida en la página. + + Un objeto y no una lista porque la página muestra dos cosas distintas: + sesiones y memorias de proyecto. + """ + return {"s": list(sessions), "m": list(memories or ())} + + +def encode_payload(payload): + """Serializa el payload para meterlo en un