Tree
- Tree:
5c5e9e02fc2329b75b5bc9007823a984993db797- Date:
- Message:
- Editar entradas existentes (post/página/álbum) + fixes de UI - screens/post.py: NewPostScreen acepta existing_file, precarga campos y cuerpo real, escribe sobre el mismo archivo en vez de crear uno nuevo (oculta el campo slug, no aplica al editar) - screens/edit_album.py: título/descripción/tags/cuerpo de un álbum existente (las fotos se siguen agregando por "Agregar fotos") - screens/select_existing.py: picker genérico reutilizado por ambos - menu.py: dos opciones nuevas ("Editar un post..." / "...álbum") - content.py: parse_frontmatter() (tomllib) para leer el TOML existente al editar Bugs encontrados al probar edición real: - La fecha se pisaba con la de hoy en cualquier edición (dt=None por default, nunca se pasaba la fecha original) — agregado _toml_date() que además tolera fechas guardadas como string entre comillas (pasó con un post tocado antes por Sveltia CMS; Zola lo acepta igual, tomllib lo lee como str en vez de date) - El preview de Markdown en EditorScreen no scrolleaba con la rueda del mouse: el widget Markdown no es scrolleable por si solo (extiende Widget, no ScrollableContainer). Envuelto en un VerticalScroll, y agregado sync proporcional real vía self.watch(text_area, "scroll_y", ...) — el "eco" de scroll_y no tiene el mismo problema de timing que tuvo el de slug porque acá se usa watch() en vez de comparar valores manualmente - Sacado el "— Ctrl+S para guardar, Esc para cancelar" del título del editor (ya está en el Footer de abajo, quedaba duplicado)
| .gitignore | commits | blame |
| README.md | commits | blame |
| flake.lock | commits | blame |
| flake.nix | commits | blame |
| nezzontli_ctl/ | |
| pyproject.toml | commits | blame |
README.md
# nezzontli-ctl TUI (Textual) para crear/editar contenido de [nezzontli.xyz](https://nezzontli.xyz) sin depender de un CMS externo — ninguno soporta git-lfs, que es como se versionan las fotos de los álbumes. Esta herramienta usa git real (el mismo `git lfs install` de siempre), así que no tiene ese problema. Es un proyecto separado del repo del sitio: opera *sobre* `~/projects/website` (u otra ruta, ver `NEZZONTLI_REPO_PATH` abajo), no vive adentro de él. ## Desarrollo ```bash nix develop # crea/activa .venv y hace pip install -e . automáticamente ctl # o: python3 -m nezzontli_ctl ``` `NEZZONTLI_REPO_PATH` (variable de entorno, opcional) apunta al clone del sitio sobre el que trabaja. Default: `~/projects/website`. También se puede fijar de forma persistente en `~/.config/nezzontli-ctl/config.json` (`repo_path`) o cambiarla desde la pantalla de Configuración. ## Instalación (una vez validada) ```bash cd nezzontli-ctl pipx install -e . ctl # ya disponible en cualquier terminal, sin activar nada ``` ## Estado Validada de punta a punta contra un clone local descartable (no el repo real): las 4 pantallas (post, page, album, add-photos), edición con preview de Markdown en vivo, commit+push real, y confirmado que las fotos quedan como punteros git-lfs reales (no blobs crudos). Pantalla de configuración (animal de cowsay, ruta del repo) también probada. Todavía no reemplaza a `website/scripts/ctl.py` en el uso diario — eso queda a decisión de Ale, una vez que la pruebe él mismo contra el repo real.
