commit - 50855c87a04309240229d68af9ce3ce5bab7faf2
commit + cb763040fa838bc539204b648b8769dfd2ba972b
blob - 66e57bc2c10ac49bd82035c108a8988c79bc7773
blob + 9d387d5fbfcfcc3d3126074e55cf23ff42c83352
--- README.md
+++ README.md
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)
+## Instalación (comando `ctl` global, sin `nix develop` a mano)
```bash
-cd nezzontli-ctl
-pipx install -e .
-ctl # ya disponible en cualquier terminal, sin activar nada
+ln -s ~/projects/nezzontli-ctl/bin/ctl ~/.local/bin/ctl
+ctl # ya disponible en cualquier terminal
```
+`bin/ctl` es un wrapper (`nix develop . --command ctl` parado en el
+directorio del repo) — no un `pipx install`. La app necesita
+`libstdc++.so.6` (lo pide numpy, dependencia de matplotlib para el
+renderizado de LaTeX del preview), y en NixOS esa lib solo está en el
+`LD_LIBRARY_PATH` que arma el `shellHook` del flake; un `pipx install`
+plano no lo lleva y crashearía al primer `$...$` en el preview. El wrapper
+sortea eso reusando siempre el flake real.
+
## 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. Editar entradas/álbumes
-existentes también probado.
+Menú de dos niveles: **Crear nuevo…** (post / página en un proyecto /
+álbum) y **Editar existente…** (post / página extra de un proyecto /
+álbum / agregar fotos a un álbum), más Configuración. Cada flujo de
+edición tiene botón "Eliminar" (confirmación simple, borra del disco y
+pushea). Validado contra un clone local descartable (bare repo como
+origin) para los tres borrados: se confirma qué se borra del disco, el
+commit y el push al origin.
-El preview del editor, además de Markdown, renderiza fórmulas LaTeX (subset
-mathtext de matplotlib) como imagen y muestra las imágenes referenciadas
-—locales del repo (`![]()`, shortcodes `photo()`/`gallery()` de Zola) o
-remotas por URL (shortcode `image()`)— usando el protocolo de gráficos de
-la terminal (requiere Kitty, iTerm2 o soporte Sixel; si no, cae a texto).
+El preview del editor, además de Markdown, renderiza fórmulas en bloque
+(`$$...$$`) como imagen (subset mathtext de matplotlib, fondo transparente)
+y aproxima el LaTeX inline (`$...$`) a texto Unicode en el lugar (no rompe
+el párrafo). Muestra imágenes referenciadas —locales del repo (`![]()`,
+shortcodes `photo()`/`gallery()` de Zola) o remotas por URL (shortcode
+`image()`)— usando el protocolo de gráficos de la terminal (Kitty, Sixel o
+half-cell según detección; si no hay terminal real, cae a texto). El
+scroll del editor y el preview están sincronizados por línea de origen.
-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.
+Probado contra el repo real de nezzontli.xyz en uso diario. Queda a
+decisión de Ale cuándo retirar `website/scripts/ctl.py` (el script viejo,
+todavía intacto) y si integrar esta herramienta a su config de NixOS.
blob - /dev/null
blob + b27c7cf41402fd46883b5289b4c35bdf021e6d97 (mode 755)
--- /dev/null
+++ bin/ctl
+#!/usr/bin/env bash
+# Wrapper para correr `ctl` desde cualquier lado sin activar `nix develop`
+# a mano cada vez. Por qué existe: la app necesita libstdc++.so.6 (lo pide
+# numpy, dependencia de matplotlib para el renderizado de LaTeX del
+# preview) — en NixOS esa lib solo está en el LD_LIBRARY_PATH que arma el
+# shellHook del flake, así que no alcanza con activar el venv a mano desde
+# afuera de "nix develop".
+#
+# Instalación (una vez):
+# ln -s ~/projects/nezzontli-ctl/bin/ctl ~/.local/bin/ctl
+#
+# Después, "ctl" desde cualquier lado hace `nix develop` (crea/activa el
+# venv si hace falta, arregla LD_LIBRARY_PATH) y corre la app adentro.
+
+set -euo pipefail
+
+script_path="${BASH_SOURCE[0]}"
+if command -v readlink >/dev/null 2>&1; then
+ script_path="$(readlink -f "$script_path")"
+fi
+repo_dir="$(cd "$(dirname "$script_path")/.." && pwd)"
+
+# El shellHook del flake crea/usa ./.venv relativo al directorio ACTUAL,
+# no al del flake — hay que pararse ahí antes de entrar, si no
+# "pip install -e ." intenta instalar desde donde se invocó "ctl".
+cd "$repo_dir"
+exec nix develop . --command ctl "$@"