diff options
| -rw-r--r-- | .github/workflows/ci.yml | 4 | ||||
| -rw-r--r-- | README.es.md | 77 | ||||
| -rw-r--r-- | README.md | 77 | ||||
| -rw-r--r-- | claude_logbook/__init__.py (renamed from claude_sesiones/__init__.py) | 0 | ||||
| -rw-r--r-- | claude_logbook/__main__.py (renamed from claude_sesiones/__main__.py) | 0 | ||||
| -rw-r--r-- | claude_logbook/cli.py (renamed from claude_sesiones/cli.py) | 44 | ||||
| -rw-r--r-- | claude_logbook/memory.py (renamed from claude_sesiones/memory.py) | 0 | ||||
| -rw-r--r-- | claude_logbook/sessions.py (renamed from claude_sesiones/sessions.py) | 2 | ||||
| -rw-r--r-- | claude_logbook/template.html (renamed from claude_sesiones/template.html) | 2 | ||||
| -rw-r--r-- | claude_logbook/terminal.py (renamed from claude_sesiones/terminal.py) | 2 | ||||
| -rw-r--r-- | claude_logbook/webpage.py (renamed from claude_sesiones/webpage.py) | 0 | ||||
| -rw-r--r-- | pyproject.toml | 21 | ||||
| -rw-r--r-- | tests/test_cli.py | 2 | ||||
| -rw-r--r-- | tests/test_memory.py | 2 | ||||
| -rw-r--r-- | tests/test_sessions.py | 2 | ||||
| -rw-r--r-- | tests/test_terminal.py | 2 | ||||
| -rw-r--r-- | tests/test_webpage.py | 2 |
17 files changed, 122 insertions, 117 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cbd02c6..6151b64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,5 +32,5 @@ jobs: - name: Se instala y el comando arranca run: | pip install . - claude-sesiones --version - claude-sesiones --help + claude-logbook --version + claude-logbook --help diff --git a/README.es.md b/README.es.md index be117a0..5f22539 100644 --- a/README.es.md +++ b/README.es.md @@ -1,4 +1,4 @@ -# claude-sesiones +# claude-logbook Explorá todas las conversaciones de [Claude Code](https://claude.com/claude-code) que tenés guardadas en la máquina: como tabla en la terminal, o como una página @@ -32,38 +32,38 @@ ya excluye `sesiones.html` y `data.json`, pero el archivo lo cuidás vos. Necesita Python 3.9 o más nuevo. Nada más. ```bash -pipx install git+https://github.com/ElvisClaros/claude-sesiones +pipx install git+https://github.com/ElvisClaros/claude-logbook ``` O con pip, o directamente desde un clon: ```bash -pip install git+https://github.com/ElvisClaros/claude-sesiones +pip install git+https://github.com/ElvisClaros/claude-logbook -git clone https://github.com/ElvisClaros/claude-sesiones && cd claude-sesiones -python3 -m claude_sesiones # sin instalar nada +git clone https://github.com/ElvisClaros/claude-logbook && cd claude-logbook +python3 -m claude_logbook # sin instalar nada ``` ## Uso ```bash -claude-sesiones # tabla de todas las sesiones -claude-sesiones docker # filtra por título, ruta o rama -claude-sesiones -s 3 # lee el chat nº 3 de la tabla -claude-sesiones -s 5d10f1ee # lo mismo, por prefijo de UUID -claude-sesiones -g "port already" # busca dentro de las conversaciones -claude-sesiones -r 3 # imprime el comando para reanudarla -eval "$(claude-sesiones -r 3)" # …o la reanuda directamente -claude-sesiones --html --open # genera sesiones.html y lo abre -claude-sesiones -m # las memorias de tus proyectos +claude-logbook # tabla de todas las sesiones +claude-logbook docker # filtra por título, ruta o rama +claude-logbook -s 3 # lee el chat nº 3 de la tabla +claude-logbook -s 5d10f1ee # lo mismo, por prefijo de UUID +claude-logbook -g "port already" # busca dentro de las conversaciones +claude-logbook -r 3 # imprime el comando para reanudarla +eval "$(claude-logbook -r 3)" # …o la reanuda directamente +claude-logbook --html --open # genera sesiones.html y lo abre +claude-logbook -m # las memorias de tus proyectos ``` El número es la posición de la fila **en la tabla que estás viendo**, así que si filtraste hay que repetir el filtro para leer esa fila: ```bash -claude-sesiones docker # muestra 3 resultados -claude-sesiones docker -s 2 # lee el 2º de esos tres +claude-logbook docker # muestra 3 resultados +claude-logbook docker -s 2 # lee el 2º de esos tres ``` ### Opciones @@ -93,10 +93,10 @@ claude-sesiones docker -s 2 # lee el 2º de esos tres Es irreversible y pregunta antes, salvo que pases `-y`: ```bash -claude-sesiones --delete-empty --dry-run # qué borraría -claude-sesiones --delete-empty # borra las vacías -claude-sesiones -D 101 -D e0a4300e # borra sesiones puntuales -claude-sesiones -p /tmp --delete-empty # solo las vacías de ese proyecto +claude-logbook --delete-empty --dry-run # qué borraría +claude-logbook --delete-empty # borra las vacías +claude-logbook -D 101 -D e0a4300e # borra sesiones puntuales +claude-logbook -p /tmp --delete-empty # solo las vacías de ese proyecto ``` Avisa si alguno de los archivos se escribió en los últimos cinco minutos: es muy @@ -116,12 +116,12 @@ aunque el archivo siga ahí, así que la diferencia entre ambos conviene mirarla `-m` cambia el sustantivo y reusa los mismos verbos que ya conocés: ```bash -claude-sesiones -m # tabla de memorias -claude-sesiones -m docker # busca en nombre, descripción y cuerpo -claude-sesiones -m --type user # solo las de un tipo -claude-sesiones -m -s 3 # lee la memoria nº 3 -claude-sesiones -m -s deadlock # lo mismo, por nombre -claude-sesiones -m -p /home/u/proj # las de un proyecto +claude-logbook -m # tabla de memorias +claude-logbook -m docker # busca en nombre, descripción y cuerpo +claude-logbook -m --type user # solo las de un tipo +claude-logbook -m -s 3 # lee la memoria nº 3 +claude-logbook -m -s deadlock # lo mismo, por nombre +claude-logbook -m -p /home/u/proj # las de un proyecto ``` Los tipos los define Claude al escribirlas: **project** es trabajo en curso, @@ -131,7 +131,7 @@ Los tipos los define Claude al escribirlas: **project** es trabajo en curso, ### Auditar ```bash -claude-sesiones -m --check +claude-logbook -m --check ``` Sale con código 1 si encuentra algo, y reporta: @@ -151,13 +151,13 @@ de borrar el archivo, saca su línea de `MEMORY.md` para no dejar el índice apuntando a la nada. ```bash -claude-sesiones -m -D 3 --dry-run # qué borraría -claude-sesiones -m -D deploy-docker # borra esa memoria +claude-logbook -m -D 3 --dry-run # qué borraría +claude-logbook -m -D deploy-docker # borra esa memoria ``` ## La página HTML -`claude-sesiones --html` genera un único archivo con los datos adentro. Sin +`claude-logbook --html` genera un único archivo con los datos adentro. Sin servidor, sin red, sin paso de build: lo copiás a otra máquina y sigue andando. - Búsqueda por título, ruta, rama o UUID, y opcionalmente dentro de las @@ -184,7 +184,7 @@ Claude Code guarda una conversación por archivo, en formato JSON Lines: (Si moviste ese directorio, respeta `CLAUDE_CONFIG_DIR`.) -Cada línea es un evento. `claude-sesiones` los recorre y se queda con la +Cada línea es un evento. `claude-logbook` los recorre y se queda con la conversación: tus mensajes, las respuestas de Claude, y una línea por herramienta usada, del estilo `Bash: git status`. A propósito **descarta lo que devolvieron las herramientas**: son el 95 % de los bytes en disco y casi nada @@ -206,7 +206,7 @@ Algunos detalles que conviene saber: del mismo proyecto y queda marcada. - **Sidechains** (transcripciones de subagentes) se saltean. - **Caché.** Lo parseado se guarda en - `$XDG_CACHE_HOME/claude-sesiones/cache.json`, indexado por tamaño y mtime. Es + `$XDG_CACHE_HOME/claude-logbook/cache.json`, indexado por tamaño y mtime. Es solo una optimización: si falta, quedó viejo o está roto, se re-parsea todo. `--no-cache` lo saltea por completo. @@ -262,7 +262,7 @@ Cada memoria de `m`: ## Desarrollo ```bash -git clone https://github.com/ElvisClaros/claude-sesiones && cd claude-sesiones +git clone https://github.com/ElvisClaros/claude-logbook && cd claude-logbook python3 -m unittest discover -s tests -t . ``` @@ -271,11 +271,12 @@ tocan `~/.claude`. No hay nada que instalar: ni runner de tests ni dependencias. | Módulo | De qué se ocupa | | --- | --- | -| `claude_sesiones/sessions.py` | Parsear los `.jsonl`, el caché, los filtros. | -| `claude_sesiones/terminal.py` | Colores ANSI, la tabla, imprimir un chat. | -| `claude_sesiones/webpage.py` | Meter los datos adentro del template. | -| `claude_sesiones/cli.py` | Los argumentos y los comandos. | -| `claude_sesiones/template.html` | La página: marcado, estilos y el código del navegador. | +| `claude_logbook/sessions.py` | Parsear los `.jsonl`, el caché, los filtros. | +| `claude_logbook/memory.py` | Leer los `memory/*.md` y auditarlos. | +| `claude_logbook/terminal.py` | Colores ANSI, la tabla, imprimir un chat. | +| `claude_logbook/webpage.py` | Meter los datos adentro del template. | +| `claude_logbook/cli.py` | Los argumentos y los comandos. | +| `claude_logbook/template.html` | La página: marcado, estilos y el código del navegador. | ## Licencia @@ -1,4 +1,4 @@ -# claude-sesiones +# claude-logbook Browse every [Claude Code](https://claude.com/claude-code) conversation stored on your machine — as a table in your terminal, or as a single self-contained HTML @@ -36,38 +36,38 @@ the file itself is yours to look after. Requires Python 3.9 or newer. Nothing else. ```bash -pipx install git+https://github.com/ElvisClaros/claude-sesiones +pipx install git+https://github.com/ElvisClaros/claude-logbook ``` Or with pip, or straight from a clone: ```bash -pip install git+https://github.com/ElvisClaros/claude-sesiones +pip install git+https://github.com/ElvisClaros/claude-logbook -git clone https://github.com/ElvisClaros/claude-sesiones && cd claude-sesiones -python3 -m claude_sesiones # no install needed +git clone https://github.com/ElvisClaros/claude-logbook && cd claude-logbook +python3 -m claude_logbook # no install needed ``` ## Usage ```bash -claude-sesiones # table of every session -claude-sesiones docker # filter by title, path or branch -claude-sesiones -s 3 # read conversation #3 from the table -claude-sesiones -s 5d10f1ee # same, by UUID prefix -claude-sesiones -g "port already" # search inside the conversations -claude-sesiones -r 3 # print the command that resumes it -eval "$(claude-sesiones -r 3)" # …or resume it right away -claude-sesiones --html --open # build sesiones.html and open it -claude-sesiones -m # your projects' memories +claude-logbook # table of every session +claude-logbook docker # filter by title, path or branch +claude-logbook -s 3 # read conversation #3 from the table +claude-logbook -s 5d10f1ee # same, by UUID prefix +claude-logbook -g "port already" # search inside the conversations +claude-logbook -r 3 # print the command that resumes it +eval "$(claude-logbook -r 3)" # …or resume it right away +claude-logbook --html --open # build sesiones.html and open it +claude-logbook -m # your projects' memories ``` The number is the row's position **in the table you are looking at**, so if you filtered, repeat the filter to read that row: ```bash -claude-sesiones docker # shows 3 results -claude-sesiones docker -s 2 # reads the 2nd of those three +claude-logbook docker # shows 3 results +claude-logbook docker -s 2 # reads the 2nd of those three ``` ### Options @@ -97,10 +97,10 @@ claude-sesiones docker -s 2 # reads the 2nd of those three Irreversible, and it asks first unless you pass `-y`: ```bash -claude-sesiones --delete-empty --dry-run # what it would delete -claude-sesiones --delete-empty # delete the empty ones -claude-sesiones -D 101 -D e0a4300e # delete specific sessions -claude-sesiones -p /tmp --delete-empty # only the empty ones of that project +claude-logbook --delete-empty --dry-run # what it would delete +claude-logbook --delete-empty # delete the empty ones +claude-logbook -D 101 -D e0a4300e # delete specific sessions +claude-logbook -p /tmp --delete-empty # only the empty ones of that project ``` It warns you about any file written in the last five minutes: that is very @@ -119,12 +119,12 @@ though the file is still there, so the gap between the two is worth watching. `-m` swaps the noun and reuses the verbs you already know: ```bash -claude-sesiones -m # table of memories -claude-sesiones -m docker # search name, description and body -claude-sesiones -m --type user # only one kind -claude-sesiones -m -s 3 # read memory #3 -claude-sesiones -m -s deadlock # same, by name -claude-sesiones -m -p /home/u/proj # only one project's +claude-logbook -m # table of memories +claude-logbook -m docker # search name, description and body +claude-logbook -m --type user # only one kind +claude-logbook -m -s 3 # read memory #3 +claude-logbook -m -s deadlock # same, by name +claude-logbook -m -p /home/u/proj # only one project's ``` Claude picks the kind when it writes them: **project** is work in progress, @@ -134,7 +134,7 @@ and **reference** points at external resources. ### Auditing ```bash -claude-sesiones -m --check +claude-logbook -m --check ``` Exits 1 if it finds anything, and reports: @@ -154,13 +154,13 @@ removing the file it drops its line from `MEMORY.md`, so the index is not left pointing at nothing. ```bash -claude-sesiones -m -D 3 --dry-run # what it would delete -claude-sesiones -m -D deploy-docker # delete that memory +claude-logbook -m -D 3 --dry-run # what it would delete +claude-logbook -m -D deploy-docker # delete that memory ``` ## The HTML page -`claude-sesiones --html` produces one file with the data embedded inside it. No +`claude-logbook --html` produces one file with the data embedded inside it. No server, no network, no build step — copy it to another machine and it still works. @@ -189,7 +189,7 @@ Claude Code writes one JSON Lines file per conversation: (`CLAUDE_CONFIG_DIR` is honoured if you moved that directory.) -Every line is an event. `claude-sesiones` walks them and keeps the conversation +Every line is an event. `claude-logbook` walks them and keeps the conversation itself — your messages, Claude's replies, and a one-line summary per tool call such as `Bash: git status`. It deliberately **drops tool results**, which are about 95% of the bytes on disk and almost none of the meaning. @@ -210,7 +210,7 @@ A few details worth knowing: so the path is borrowed from another session of the same project and flagged. - **Sidechains** (subagent transcripts) are skipped. - **Cache.** Parsed sessions are cached in - `$XDG_CACHE_HOME/claude-sesiones/cache.json`, keyed by size and mtime. It is + `$XDG_CACHE_HOME/claude-logbook/cache.json`, keyed by size and mtime. It is only an optimisation: if it is missing, stale or corrupt, everything is re-parsed. `--no-cache` skips it entirely. @@ -265,7 +265,7 @@ Each memory in `m`: ## Development ```bash -git clone https://github.com/ElvisClaros/claude-sesiones && cd claude-sesiones +git clone https://github.com/ElvisClaros/claude-logbook && cd claude-logbook python3 -m unittest discover -s tests -t . ``` @@ -274,11 +274,12 @@ The tests build fake `.jsonl` trees in a temporary directory and never touch | Module | Responsibility | | --- | --- | -| `claude_sesiones/sessions.py` | Parsing the `.jsonl` files, the cache, filters. | -| `claude_sesiones/terminal.py` | ANSI colours, the table, printing a conversation. | -| `claude_sesiones/webpage.py` | Embedding the data into the template. | -| `claude_sesiones/cli.py` | Argument parsing and the commands. | -| `claude_sesiones/template.html` | The page: markup, styles and the browser-side code. | +| `claude_logbook/sessions.py` | Parsing the `.jsonl` files, the cache, filters. | +| `claude_logbook/memory.py` | Reading the `memory/*.md` files and auditing them. | +| `claude_logbook/terminal.py` | ANSI colours, the table, printing a conversation. | +| `claude_logbook/webpage.py` | Embedding the data into the template. | +| `claude_logbook/cli.py` | Argument parsing and the commands. | +| `claude_logbook/template.html` | The page: markup, styles and the browser-side code. | ## License diff --git a/claude_sesiones/__init__.py b/claude_logbook/__init__.py index fa839b1..fa839b1 100644 --- a/claude_sesiones/__init__.py +++ b/claude_logbook/__init__.py diff --git a/claude_sesiones/__main__.py b/claude_logbook/__main__.py index dbdd066..dbdd066 100644 --- a/claude_sesiones/__main__.py +++ b/claude_logbook/__main__.py diff --git a/claude_sesiones/cli.py b/claude_logbook/cli.py index 4dc5ab2..6a465dd 100644 --- a/claude_sesiones/cli.py +++ b/claude_logbook/cli.py @@ -27,41 +27,41 @@ RECENT_SECONDS = 300 EPILOG = """\ ejemplos: - claude-sesiones tabla de todas las sesiones - claude-sesiones docker filtra por título, ruta o rama - claude-sesiones -s 3 lee el chat nº 3 de la tabla - claude-sesiones -s 5d10f1ee lo mismo, por prefijo de UUID - claude-sesiones -g "port already" busca dentro de las conversaciones - claude-sesiones -r 3 comando para reanudar la nº 3 - eval "$(claude-sesiones -r 3)" reanudarla directamente - claude-sesiones --html --open genera sesiones.html y lo abre + claude-logbook tabla de todas las sesiones + claude-logbook docker filtra por título, ruta o rama + claude-logbook -s 3 lee el chat nº 3 de la tabla + claude-logbook -s 5d10f1ee lo mismo, por prefijo de UUID + claude-logbook -g "port already" busca dentro de las conversaciones + claude-logbook -r 3 comando para reanudar la nº 3 + eval "$(claude-logbook -r 3)" reanudarla directamente + claude-logbook --html --open genera sesiones.html y lo abre el nº es la posición en la tabla que estás viendo, así que si filtraste hay que repetir el filtro para leer esa fila: - claude-sesiones docker muestra 3 resultados - claude-sesiones docker -s 2 lee el 2º de esos tres + claude-logbook docker muestra 3 resultados + claude-logbook docker -s 2 lee el 2º de esos tres borrado (irreversible; pregunta antes, salvo con -y): - claude-sesiones --delete-empty --dry-run qué borraría - claude-sesiones --delete-empty borra las vacías - claude-sesiones -D 101 -D e0a4300e borra sesiones puntuales - claude-sesiones -p /tmp --delete-empty solo las vacías de ese proyecto + claude-logbook --delete-empty --dry-run qué borraría + claude-logbook --delete-empty borra las vacías + claude-logbook -D 101 -D e0a4300e borra sesiones puntuales + claude-logbook -p /tmp --delete-empty solo las vacías de ese proyecto memoria de los proyectos (-m cambia de sesiones a memorias y reusa los mismos verbos: filtro, -s para leer, -D para borrar): - claude-sesiones -m tabla de memorias - claude-sesiones -m docker busca en nombre, descripción y cuerpo - claude-sesiones -m -s 3 lee la memoria nº 3 - claude-sesiones -m -s deadlock lo mismo, por 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-logbook -m tabla de memorias + claude-logbook -m docker busca en nombre, descripción y cuerpo + claude-logbook -m -s 3 lee la memoria nº 3 + claude-logbook -m -s deadlock lo mismo, por nombre + claude-logbook -m --check audita índices, enlaces y orígenes + claude-logbook -m -D 3 la borra y la saca de MEMORY.md """ def build_parser(): ap = argparse.ArgumentParser( - prog="claude-sesiones", + prog="claude-logbook", description="Explorador de sesiones de Claude Code para la terminal.", formatter_class=argparse.RawDescriptionHelpFormatter, epilog=textwrap.dedent(EPILOG), @@ -116,7 +116,7 @@ def build_parser(): ap.add_argument("--no-cache", action="store_true", help="ignora el caché y re-parsea todo") ap.add_argument("--version", action="version", - version=f"claude-sesiones {__version__}") + version=f"claude-logbook {__version__}") return ap diff --git a/claude_sesiones/memory.py b/claude_logbook/memory.py index ccb2e65..ccb2e65 100644 --- a/claude_sesiones/memory.py +++ b/claude_logbook/memory.py diff --git a/claude_sesiones/sessions.py b/claude_logbook/sessions.py index 0a00f8e..1ff48c0 100644 --- a/claude_sesiones/sessions.py +++ b/claude_logbook/sessions.py @@ -55,7 +55,7 @@ def default_root(): def default_cache_path(): base = os.environ.get("XDG_CACHE_HOME") or os.path.expanduser("~/.cache") - return os.path.join(base, "claude-sesiones", "cache.json") + return os.path.join(base, "claude-logbook", "cache.json") def session_path(s, root=None): diff --git a/claude_sesiones/template.html b/claude_logbook/template.html index e56cc30..7c8ba76 100644 --- a/claude_sesiones/template.html +++ b/claude_logbook/template.html @@ -1380,7 +1380,7 @@ document.querySelectorAll('.tab').forEach(t => // Sin memorias la pestaña no tiene nada que mostrar. if (!MEM.length) document.querySelector('.tab[data-mode="m"]').hidden = true; -$('#snap').textContent = `Instantánea leída el ${pad(NOW.getDate())} ${MES[NOW.getMonth()]} ${NOW.getFullYear()} a las ${fmtTime(NOW.toISOString())}. Las fechas relativas son respecto de ese momento; volvé a correr claude-sesiones --html para actualizarla.`; +$('#snap').textContent = `Instantánea leída el ${pad(NOW.getDate())} ${MES[NOW.getMonth()]} ${NOW.getFullYear()} a las ${fmtTime(NOW.toISOString())}. Las fechas relativas son respecto de ese momento; volvé a correr claude-logbook --html para actualizarla.`; [qEl, projEl, deepEl, emptyEl, typeEl, unlistedEl].forEach( el => el.addEventListener(el === qEl ? 'input' : 'change', render)); diff --git a/claude_sesiones/terminal.py b/claude_logbook/terminal.py index 9a16bec..1b56770 100644 --- a/claude_sesiones/terminal.py +++ b/claude_logbook/terminal.py @@ -334,7 +334,7 @@ def print_memory(m, st, out, path=None, width=None): print(f"\n{st.faint}enlaces: {', '.join(m['ln'])}{st.reset}", file=out) if m["src"]: print(f"{st.faint}la creó la sesión {m['src'][:8]} " - f"(claude-sesiones -s {m['src'][:8]}){st.reset}", file=out) + f"(claude-logbook -s {m['src'][:8]}){st.reset}", file=out) def print_audit(report, st, out): diff --git a/claude_sesiones/webpage.py b/claude_logbook/webpage.py index c8550fe..c8550fe 100644 --- a/claude_sesiones/webpage.py +++ b/claude_logbook/webpage.py diff --git a/pyproject.toml b/pyproject.toml index 26d7513..ff7fd2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,14 +3,15 @@ requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [project] -name = "claude-sesiones" -description = "Explorador de las sesiones de Claude Code: tabla en la terminal y página HTML autocontenida." +name = "claude-logbook" +description = "Browse your Claude Code sessions and project memories: a terminal table and a self-contained HTML page." readme = "README.md" requires-python = ">=3.9" license = "Apache-2.0" license-files = ["LICENSE", "NOTICE"] authors = [{ name = "Elvis Claros Castro" }] -keywords = ["claude", "claude-code", "cli", "jsonl", "sessions", "transcripts"] +keywords = ["claude", "claude-code", "cli", "jsonl", "sessions", "transcripts", + "memory", "logbook"] dynamic = ["version"] dependencies = [] @@ -25,17 +26,19 @@ classifiers = [ ] [project.urls] -Homepage = "https://github.com/ElvisClaros/claude-sesiones" -Issues = "https://github.com/ElvisClaros/claude-sesiones/issues" +Homepage = "https://github.com/ElvisClaros/claude-logbook" +Issues = "https://github.com/ElvisClaros/claude-logbook/issues" [project.scripts] -claude-sesiones = "claude_sesiones.cli:main" +claude-logbook = "claude_logbook.cli:main" +# El nombre viejo sigue andando, para no rehacer la memoria muscular. +claude-sesiones = "claude_logbook.cli:main" [tool.setuptools] -packages = ["claude_sesiones"] +packages = ["claude_logbook"] [tool.setuptools.dynamic] -version = { attr = "claude_sesiones.__version__" } +version = { attr = "claude_logbook.__version__" } [tool.setuptools.package-data] -claude_sesiones = ["template.html"] +claude_logbook = ["template.html"] diff --git a/tests/test_cli.py b/tests/test_cli.py index 94aeac1..94d472d 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -7,7 +7,7 @@ import unittest import unittest.mock from contextlib import redirect_stderr, redirect_stdout -from claude_sesiones import cli +from claude_logbook import cli from .fixtures import ( memory_tree, simple_tree, ts, user, write_memory, write_session, diff --git a/tests/test_memory.py b/tests/test_memory.py index 4076718..6491c9b 100644 --- a/tests/test_memory.py +++ b/tests/test_memory.py @@ -2,7 +2,7 @@ import os import tempfile import unittest -from claude_sesiones import memory, sessions +from claude_logbook import memory, sessions from .fixtures import ( memory_tree, simple_tree, write_index, write_memory, diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 9522639..4c3d3a7 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -4,7 +4,7 @@ import tempfile import unittest import unittest.mock -from claude_sesiones import sessions as S +from claude_logbook import sessions as S from .fixtures import ai_title, assistant, simple_tree, ts, user, write_session diff --git a/tests/test_terminal.py b/tests/test_terminal.py index 9f57935..6a91e8d 100644 --- a/tests/test_terminal.py +++ b/tests/test_terminal.py @@ -2,7 +2,7 @@ import io import unittest from datetime import datetime, timedelta, timezone -from claude_sesiones import terminal as T +from claude_logbook import terminal as T NOW = datetime(2025, 8, 14, 12, 0, tzinfo=timezone.utc) diff --git a/tests/test_webpage.py b/tests/test_webpage.py index b768073..97abb91 100644 --- a/tests/test_webpage.py +++ b/tests/test_webpage.py @@ -4,7 +4,7 @@ import re import tempfile import unittest -from claude_sesiones import webpage +from claude_logbook import webpage PAYLOAD_RE = re.compile( r'<script id="payload" type="application/json">(.*?)</script>', re.S) |