Ayuda de LightNote
Editor ligero de código y notas para Windows. La barra lateral lista las secciones y sigue lo que estás leyendo; los botones Inicio y Atrás en la parte superior de la ventana vuelven al principio, y el campo Buscar busca dentro del texto de esta ayuda (Enter avanza; F3 / Shift+F3 navegan). Pulsa F1 en cualquier momento para abrir esta ayuda justo en la sección de la pantalla actual.
Índice
Edición
- Visión general
- Espacio de trabajo y ventanas
- Editor de código
- Markdown y wikilinks
- Diagramas (Mermaid)
- Matemáticas y química (LaTeX)
- Calendario en la nota
- Numeración y referencia cruzada
- Citas y referencias
- Grafo de conexiones
- Tablas (Parquet, CSV, JSON, Excel)
- Área de análisis: tabla dinámica y varios gráficos
- PDF e imágenes
- Imágenes: marcar una captura
- Páginas HTML (.html)
- Imprimir
- Zip como carpeta (.zip)
- Bloques (.lnb)
- Tareas (Kanban / Gantt)
- Tabla personalizada (.lnd)
- Bases (consultas guardadas sobre las notas)
Herramientas
- Buscar en archivos y Pendientes
- Control de versiones (Git fácil)
- Instantáneas y copia de seguridad
- Revisar cambios (puntos de control)
- Comparar archivos (diff)
- Ejecutar código (F5)
- Terminal y CLIs de IA
- Asistente de IA en la selección (Ctrl+K / Ctrl+I)
- Sesiones de IA
- Chat con IA
- Probar APIs HTTP (.lnh)
- Bases de datos (.lnc)
- Conexión SSH (.lns)
- Seguridad: Frase de paso, PIN y Markdown seguro
- Notas diarias, captura rápida y bandeja
- Reencontrar notas antiguas
- Tus notas en el móvil
- Grabar audio (voz, reunión) con transcripción por IA
- Notas adhesivas
- Calendario
- Paleta de comandos
Automatización (IA / scripts)
Referencia
- Ajustes y temas
- Modo portátil: los datos junto al programa
- Atajos de teclado
- Licencia, ediciones y comunidad
Visión general
LightNote abre una carpeta como Espacio de trabajo y muestra el árbol de archivos a la izquierda, las pestañas de edición a la derecha y la barra de estado abajo. La franja pequeña en la parte superior de la barra lateral alterna entre las secciones Explorador (árbol), Buscar, Control de versiones (Git), Historial del archivo y Pendientes (TODO/FIXME y tareas de notas).
Además de código y notas, abre y edita muchos formatos en el lugar adecuado:
tablas (Parquet/CSV/JSON con DuckDB y Excel .xlsx), PDF, imágenes
(incluido GIF animado), .zip como carpeta, cuadernos de Bloques
(.lnb), tableros de Tareas (.lnt), tablas
personalizadas (.lnd), conexiones de base de datos
(.lnc) y conexiones SSH (.lns). Hay una terminal
integrada, búsqueda global (ripgrep), control de versiones Git simplificado,
integración con CLIs de IA, un servidor MCP y una línea de comandos
(lnote) para automatización.
¿Nuevo por aquí? El material de introducción (el espacio de trabajo de bienvenida) sigue disponible en cualquier momento en Ayuda → Reabrir el tour de bienvenida.
Espacio de trabajo y ventanas
La carpeta raíz y la ventana
La carpeta raíz abierta es tu Espacio de trabajo. Abrirla no crea nada; al cerrarla, LightNote solo escribe un pequeño archivo de sesión (pestañas abiertas y posición). El espacio de trabajo solo se convierte en un "proyecto" — con su propia configuración persistida — cuando habilitas el Control de versiones (Git) o el MCP en Herramientas → Ajustes del espacio de trabajo.
Los Ajustes generales se aplican a toda la aplicación; los Ajustes del espacio de trabajo solo a la carpeta abierta. La configuración y el estado viven en una base de datos central, no dispersos por la carpeta.
LightNote se ejecuta como instancia única: abrir una segunda carpeta
reutiliza el proceso (multiventana, menos memoria). Hay un icono en la bandeja
y un lanzador con un cuadro de búsqueda que lista los Espacios de trabajo
(fija tus favoritos arriba con el menú contextual) — consulta
Notas diarias y bandeja. Cada pestaña puede recibir una
etiqueta de color mediante el menú contextual de la barra de pestañas. Para
notas repetitivas, crea, en la raíz del espacio de trabajo, una carpeta Modelos (o Templates) con archivos
.md y usa Archivo → Nueva nota a partir de plantilla… Cuatro plantillas académicas ya vienen listas en la misma lista — Artículo académico, Ficha de lectura, Cuaderno de laboratorio y Protocolo de experimento: elegir una guarda el .md en esa carpeta, y desde ahí es suya para editarla.
Organizar y escribir plantillas. Las subcarpetas de Templates se convierten en categorías: Trabajo/Reunión.md aparece como Trabajo/Reunión, y ese es el nombre que una carpeta guarda al adoptar la plantilla. Los campos {{title}}, {{date}}, {{time}} y {{date:dd/MM/yyyy}} se rellenan al crear la nota — el título es el nombre de la nota, y renombrarla justo después de crearla, antes de escribir en ella, rehace el título — y nada se reemplaza dentro del código (entre acentos graves o en un bloque), para que una plantilla pueda enseñar su propia sintaxis. En una plantilla aparecen marcados como los campos para rellenar, con el mismo fondo —en el editor con formato, con el borde continuo de la sintaxis—, y en una nota normal no llevan color, porque ahí no hacen nada. El frontmatter de la plantilla pasa a la nota, salvo description:, que describe la plantilla, y citation-style:, que es de la carpeta. Las plantillas y los prompts (la carpeta Prompts/) son herramientas, no contenido: quedan fuera de la búsqueda por significado y del contexto del Chat con IA, y las etiquetas y los aliases: declarados en ellos no cuentan — la búsqueda de texto sigue encontrando ambos. Con una plantilla abierta, una franja en la parte superior del editor indica que lo es y ofrece Insertar campo, Ver sintaxis y la Vista previa — la nota tal como nace ahora. La Biblioteca de plantillas (en Herramientas, y la misma que abre Archivo → Nueva nota a partir de plantilla…) las lista todas con búsqueda por nombre y descripción, las agrupa por subcarpeta y muestra la vista previa; ahí también se crea una plantilla nueva — incluso a partir de la nota abierta, donde su título y la fecha de hoy se convierten en campos. La galería trae además un grupo Del sitio: plantillas que publicamos, en el idioma de la interfaz, buscadas solo cuando la abres. Importar es una copia: la plantilla se convierte en un archivo tuyo en Templates, y después nada une a los dos — una plantilla corregida en el sitio no persigue lo que ya importaste, y una plantilla tuya con el mismo nombre siempre gana. Sin conexión, la galería dice que no pudo buscarlas y sigue mostrando lo que ya está en esta máquina.
Campos para rellenar. Una plantilla puede dejar huecos: {{ask:Asunto de la reunión}} es un campo libre y {{choice:borrador|revisión|final}} es una lista. No se sustituyen al crear: la nota nace con ellos marcados en el texto, y eso es lo que hace que también valgan en la Nota de hoy, en lnote y en el MCP, donde no hay pantalla para preguntar nada. En una nota, el editor con formato muestra cada campo como una etiqueta de borde discontinuo alrededor de su texto (la pregunta, o la primera opción); al hacer clic se selecciona el campo entero, y la siguiente tecla lo sustituye. En un campo de elección el clic abre además la lista: elegir una opción cambia el campo por ella, y cerrar la lista sin elegir deja el campo seleccionado, listo para que escribas otra cosa. Al crear la nota, el cursor ya se posa en el primer campo; desde ahí Tab y Shift+Tab pasan de campo en campo —la barra de estado dice en cuál estás—, Alt+↓ abre la lista de una elección desde el teclado, y Esc (o salir de la línea del campo) devuelve al Tab su función de siempre. En la propia plantilla, Ver sintaxis viene activado: los campos aparecen como {{…}} con borde continuo y el clic pone el cursor dentro de ellos, para corregir la pregunta o las opciones; desactivado, la plantilla se ve como la nota que nacerá de ella. Los seis campos también están en el menú / y en Insertar → Campos de la plantilla, solo en los archivos de plantilla. En el editor de texto el campo aparece tal como está en el archivo, con las llaves en color, y el corrector no entra en él.
Crear archivos
Crear un archivo eligiendo el tipo. El menú Nuevo (☰ Archivo, el botón Nuevo de la barra de actividades o Crear nuevo en el menú contextual de una carpeta) ofrece Nueva nota (.md), Nuevo archivo de texto (.txt) y el submenú Nuevo archivo de código con los lenguajes más usados. En todos ellos el archivo se crea en el disco al instante con un nombre por omisión, y el árbol abre la edición del nombre: solo se preselecciona el nombre, así que escribir un título no borra la extensión. Para aceptar el nombre sugerido, basta con hacer clic en el editor y empezar a escribir. Para una extensión fuera del submenú, crea un archivo y renómbralo (F2): cambiar la extensión cambia la vista — renombrar .txt a .md vuelve a abrir la misma pestaña como nota, con la vista de lectura y el esquema, y al revés devuelve el editor de código. Las extensiones propias de LightNote (.lnc, .lne, .lnq, .lnh, .lns y los bundles) son la excepción: en ellas la extensión declara el formato del contenido, por lo que renombrar pide confirmación y se rechaza mientras la pestaña esté abierta.
Archivo nuevo que no llegaste a usar. Si cierras la pestaña de un archivo recién creado sin nombrarlo, sin guardarlo y sin escribir nada, va a la Papelera y la barra de estado ofrece Deshacer: así un Nuevo disparado sin querer no deja rastro en la carpeta. Cualquier señal de que el archivo es tuyo lo hace permanente: renombrarlo, guardarlo (Ctrl+S) o escribir algo en él.
El borrador es un editor de Markdown. La pestaña Borrador (que no es un archivo en disco) usa el mismo editor de texto de las notas: resaltado del marcado, corrector ortográfico, autocompletado de [[ y Ctrl+clic en wikilinks y etiquetas. Lo que no tiene sigue igual: no hay archivo, así que no hay guardado automático ni modos de vista; el contenido sobrevive al cerrar la aplicación y desaparece si cierras la pestaña.
Dónde se crea el archivo nuevo. Nuevo crea siempre en la carpeta marcada del Explorador, y siempre hay exactamente una marcada. En la parte superior del árbol está la fila de la carpeta raíz, con el nombre del espacio de trabajo: es un elemento como los demás — haz clic en ella para devolver el destino a la raíz. Seleccionar una carpeta mueve la marca a ella; seleccionar un archivo marca la carpeta que lo contiene. En el modo Lista, que no muestra carpetas, la marca queda en la fila raíz y esa fila muestra el destino efectivo. El menú contextual de la fila raíz ofrece Crear nuevo y Crear carpeta.
Archivos sueltos y favoritos
Para abrir un archivo suelto sin convertirlo en un espacio de trabajo, usa Abrir archivo suelto… (menú de la bandeja): la ventana independiente muestra el árbol de archivos, pero sin Git, MCP ni tema personalizado. Si se habilita en Ajustes → General → Funciones, LightNote se integra al menú del Explorador de Windows (por usuario, sin necesidad de administrador): además de la lista «Abrir con», el menú contextual gana «Abrir con LightNote» en cualquier archivo y «Abrir como espacio de trabajo de LightNote» en carpetas (en Windows 11, dentro de Mostrar más opciones). Los archivos se abren en esa ventana independiente; las carpetas, como espacio de trabajo.
Si seleccionas varios archivos a la vez en el Explorador de Windows — incluso de carpetas distintas — todos se abren en la misma ventana independiente, pestaña junto a pestaña (en vez de repartir una ventana por archivo). Las pestañas de esa ventana se recuerdan: al cerrarla y volver a abrirla, reaparecen los mismos archivos. Como aquí lo importante son las pestañas, el árbol de archivos empieza plegado: pulsa Ctrl+B (o el botón en la parte superior de la barra de actividad) para mostrarlo.
Volver a una sesión. La ventana de archivos sueltos se llama Archivos sueltos en todas partes, incluida la barra de título, donde las demás ventanas muestran el nombre del espacio de trabajo: así las distingues en Alt+Tab. En el menú de la bandeja, en Abrir, el elemento gana el sufijo (N pestañas) cuando hay pestañas guardadas; al pulsarlo vuelven todas. También es la primera fila del launcher, junto a los espacios de trabajo. Y al reabrir LightNote vuelve todo lo que estaba abierto cuando saliste: cada ventana en su carpeta, más la ventana suelta. Si prefieres abrir solo la última carpeta usada, cámbialo en Configuración → General → Interfaz → Al iniciar, abrir. Una ventana que cerraste antes de salir queda fuera: cerrar es la forma de decir "terminé con este espacio".
Favoritos: la barra lateral tiene una sección Favoritos con lo que hayas fijado (menú contextual del árbol o de una pestaña → Añadir a favoritos) y los archivos abiertos recientemente. Los fijados son por carpeta y se guardan como rutas relativas, así que sobreviven a mover el espacio de trabajo.
Abrir una pestaña en su propia ventana: en el menú contextual de la
pestaña, Abrir en ventana nueva reabre ese archivo en una ventana
independiente (útil para tener una nota junto al código). Los tipos que dependen del
espacio de trabajo (.lnc, .lne, .lns y los
bundles) no se pueden desacoplar.
El Explorador
Mover un archivo con la pestaña abierta. Arrastrar el archivo en el árbol a otra carpeta se lleva la pestaña consigo — sigue abierta, apuntando al lugar nuevo —, y lo mismo vale al cortar y pegar y al mover una carpeta entera, en cuyo caso las pestañas de los archivos de dentro la acompañan. Manteniendo Ctrl, el arrastre copia en vez de mover. Fuera de LightNote, el arrastre siempre COPIA: lleve un archivo del árbol — o arrastre la propia pestaña por la barra de pestañas — hasta una carpeta de Windows, un correo o una conversación de Teams, y el original sigue en su espacio de trabajo. Dentro del programa la pestaña sigue siendo solo una pestaña: arrastrarla a otro panel mueve la pestaña, y pasar con ella por encima del editor o del árbol no escribe ni mueve nada.
Selección múltiple. El árbol acepta Ctrl+clic (individual) y Shift+clic (intervalo) en los tres modos de vista. Con varios elementos seleccionados, el menú contextual actúa sobre toda la selección: Cortar y Copiar (interoperando con el Explorador de Windows), Eliminar (una sola confirmación para todos), Duplicar, Copiar hash, Comprimir en .zip (un solo archivo, cada elemento con su propio nombre en la raíz), Aplicar color, Favoritos, Git (add/restore) y Copiar rutas (una línea por elemento). Las acciones que solo tienen sentido para un elemento — renombrar en línea, Propiedades, Abrir como, Convertir — quedan deshabilitadas, con el motivo en la ayuda emergente. Hacer clic derecho dentro de la selección la conserva; hacer clic fuera selecciona solo el elemento pulsado. Seleccionar una carpeta y algo dentro de ella no repite la operación: el elemento interior se descarta.
Echar un vistazo sin abrir. Un clic simple en un archivo ya abre una pestaña de vista previa (reutilizada, en cursiva en la barra de pestañas). Al recorrer el árbol con las flechas, la tecla Espacio hace lo mismo y devuelve el foco al árbol, para seguir bajando por la lista.
Herramientas de archivo. El menú contextual del Explorador tiene el submenú Herramientas de archivo: Renombrar por lotes (filtro por extensión/comodín/regex + un pipeline de reglas con vista previa y detección de colisiones), Dividir archivo (por líneas, tamaño o separador regex), Unir archivos (manteniendo solo el 1.º encabezado CSV, opcional), Duplicar, Copiar hash (MD5/SHA-256) y Comprimir a .zip / Extraer aquí. Con varios elementos seleccionados, Renombrar por lotes y Unir archivos reciben exactamente los elementos elegidos (en lugar de recorrer la carpeta) — y Unir respeta el orden de la selección.
Navegación de la ventana suelta. Sobre el árbol hay atrás (Alt+←), adelante (Alt+→) y subir, más una ruta de carpetas pulsable — cada segmento lleva a ese nivel. Los botones laterales del ratón también retroceden y avanzan. Para escribir una ruta, haz clic en el espacio vacío de la franja o usa Ctrl+L; Esc cancela y vuelve a la ruta. Cambiar de pestaña también mueve la carpeta mostrada: como la ventana suelta reúne pestañas de carpetas distintas, hacer clic en una pestaña navega a su carpeta.
Menús y zoom
Menús. El botón ☰ (arriba en la barra de actividades) reúne los menús Archivo, Editar, Ver, Ventana, Herramientas, IA y Ayuda. Las acciones de IA tienen menú propio (también en el botón de la varita de la barra de actividades). En Herramientas, los grupos están en submenús: Ejecutar (F5/F6/F8, lint, enviar al terminal, macros), Capturar (nota de hoy, captura rápida, tarea rápida, grabar audio, notas adhesivas) y Espacio de trabajo (configuración, instantánea, exportar copia, mover carpeta) — este último también en el menú del engranaje. El menú Nuevo es el mismo en los tres lugares donde aparece: ☰ Archivo, el botón Nuevo y Crear nuevo en el menú contextual de una carpeta.
Zoom, en cualquier vista. El nivel de zoom vive en un solo lugar: el grupo − 100% + a la derecha de la barra de estado. El botón del medio abre la lista estándar — Ajustar al ancho y Ajustar a la ventana (solo donde el contenido tiene tamaño propio, como PDF e imágenes), los niveles 200%, 150%, 120%, 100%, 75% y 50%, y Personalizado… —, con una marca en el activo. Los atajos son los mismos en todas las vistas con zoom (código, notas, PDF, imágenes, HTML y hojas de cálculo): Ctrl++, Ctrl+−, Ctrl+0 para volver al 100% y Ctrl+rueda del ratón. En una vista sin zoom el grupo simplemente no aparece; bajo un ajuste, la etiqueta muestra Ancho o Ventana en lugar de un porcentaje. El zoom es de la pestaña, no del archivo: una pestaña que quedó inactiva y liberó su memoria — o que volvió al reabrir LightNote — regresa con el zoom en que estaba; abrir el archivo de nuevo, desde cero, empieza al 100%.
Editor de código
Abrir, resaltar y formatear
Los archivos de texto/código se abren en el editor (Scintilla) con resaltado de sintaxis. Hay comentar/descomentar (Ctrl+/), mover y duplicar línea, marcadores (Ctrl+F2), una lista de símbolos/funciones, autocompletado por palabras del documento, guías de sangría, ajuste de línea, zoom y detección de cambios del archivo en el disco. Con el control de versiones habilitado, el margen marca las líneas agregadas/modificadas desde la última versión.
También hay macros (graba/reproduce una secuencia de ediciones con Ctrl+Shift+R / F4, en Herramientas → Macros), formatear/embellecer (Shift+Alt+F), una tabla ASCII en la barra de herramientas de la pestaña (para insertar caracteres/dibujo de cajas) y un corrector ortográfico (Hunspell). pt-BR y en-US vienen integrados; los demás idiomas se descargan bajo demanda desde la tabla de Ajustes → Notas y escritura → Ortografía (una fila por idioma, con botón Descargar/Quitar). Para seguir un archivo de registro que se va escribiendo, usa el botón Monitorear (tail -f) en la barra de la propia pestaña. Los archivos muy grandes (por encima de ~1 MB) se abren en un editor ligero virtualizado que carga solo los fragmentos visibles; puedes forzarlo con Archivo → Abrir en el editor ligero…
Formatear y verificar (linters): Shift+Alt+F formatea el documento con el formateador externo del lenguaje (black, prettier, clang-format, gofmt, rustfmt…) cuando está instalado, recurriendo al formateador interno (JSON/XML) sin conexión; F7 ejecuta el linter del lenguaje (ruff, eslint, shellcheck, luacheck…) y marca los problemas con un subrayado en el editor y en el panel Problemas (panel inferior, navegable). Ambos tienen un catálogo con Agregar en Ajustes → Formato y → Linters, además de las opciones formatear al guardar / verificar al guardar. Ejecuta el archivo en el panel de salida con F6 (captura el código de salida y la duración, con detener/reiniciar) o solo un fragmento con F8.
Un .md abierto como código vuelve a ser nota con un clic. La barra del editor muestra Abrir como nota cuando el archivo abierto es una nota — es el inverso de Abrir como → Código del menú del árbol, y devuelve la pestaña a la vista de nota, con edición formateada, lectura, índice y propiedades. El botón solo aparece cuando el cambio es posible: una nota demasiado grande sigue en el editor de código.
Multicursor, historial y definición
Más funciones de edición: multicursor por ocurrencia (Ctrl+D, todas
con Alt+F3), duplicar línea (Ctrl+Shift+D), unir líneas
(Ctrl+Shift+J), expandir/reducir la selección por ámbito
(Ctrl+Shift+Espacio / Ctrl+Alt+Espacio), selección rectangular
(Alt+arrastrar), plegar/desplegar todo, fragmentos/snippets
(Ctrl+J, editables en Ajustes → Editor), Ir al símbolo en el
archivo (# en la paleta) y en el proyecto (Ctrl+T o
##), historial de navegación (Alt+←/→), una ruta de
navegación (breadcrumbs) en la parte superior del editor, reglas de
columna, coloreado de pares de paréntesis, cierre/envoltura automática de pares e
higiene al guardar (recortar espacios, salto final) — todo en Ajustes →
Editor.
Historial local y portapapeles: en cada guardado, LightNote conserva una versión del archivo (Archivo → Historial local…, restaurable), independiente de Git. Ctrl+Alt+V abre el historial del portapapeles para pegar un elemento copiado antes. Ctrl+Shift+T reabre la última pestaña cerrada; las pestañas se pueden fijar (menú contextual), lo que las protege de ser liberadas por inactividad.
Ir a la definición: F12 o Ctrl+clic sobre un identificador salta a donde está definido en el proyecto; Shift+F12 localiza sus usos.
Minimap y operaciones de texto
Minimapa. Una miniatura de todo el documento aparece en el borde derecho del editor: muestra la “forma” del código (los colores del resaltado de sintaxis a escala reducida) y marca la región visible. Haga clic o arrastre sobre ella para ir a cualquier punto del archivo. Actívelo en Ver → Minimapa o en Configuración → Editor. El botón Minimapa de la barra de la propia pestaña de código (junto a ASCII) lo activa y desactiva sin salir del editor. En el borde izquierdo de la miniatura hay una franja de marcas: en azul las líneas con marcador (el mismo punto del margen) y en ámbar las coincidencias de la búsqueda rápida, para ver de un vistazo cómo se reparten por todo el archivo, incluso fuera de la pantalla.
Operaciones de texto. En el menú Editar — y en el menú contextual del editor — están los submenús Líneas (mover, duplicar, eliminar, ordenar, unir, invertir, numerar) y Limpieza (recortar espacios, quitar líneas vacías/duplicadas, tabulaciones ↔ espacios). Con una selección, el menú contextual ofrece además Guardar la selección como archivo nuevo…: escribe el fragmento en un archivo junto al actual y lo abre en una pestaña (el original no se modifica).
Markdown y wikilinks
Modos de visualización
Las notas .md se abren con editor y lectura lado a lado
(configurable). El marcado se atenúa fuera del párrafo del cursor para que la página
parezca un documento terminado.
Atajos: Ctrl+B/Ctrl+I aplican negrita/cursiva y Ctrl+E alterna el modo de vista (edición → dividido → con formato → lectura).
Menú /: en el editor con formato, escribe / al principio de la línea (aunque haya sangría) o después de un espacio: la lista de inserción se abre en el cursor. Escribe para filtrar (/tabla, /destacado, /h1), elige con ↑/↓ e inserta con Enter; Esc o Espacio cierran la lista y lo que escribiste se queda como texto. La columna de la derecha muestra el marcado que escribe cada elemento, para que puedas escribirlo directamente la próxima vez. El menú no se abre dentro de un bloque de código, una fórmula o una celda de tabla.
Modo de lectura: el último modo de Ctrl+E es la misma pantalla de la edición con formato, pero de solo lectura, y por eso puede mostrar lo que el archivo no tiene: el índice del token [TOC]. La lista de la carpeta del token [files] y el cuerpo de las notas transcluidas con ![[nota]] aparecen también en la edición con formato. Nada de eso se escribe en el .md: el archivo conserva el token y el texto generado no acepta edición. En este modo un clic simple sigue enlaces, wikilinks y etiquetas (sin Ctrl), y los botones que editan quedan desactivados — incluidos deshacer, cortar y pegar, que antes actuaban sobre el editor de texto fuera de la pantalla. Copiar sigue valiendo, y copia lo que estás viendo. Ctrl+F busca en lo que está en pantalla; la línea de sustituir queda desactivada, con el motivo en el tooltip, porque una sustitución aquí no llegaría al archivo.
Cuentas con unidad, en la lectura. Una línea terminada en = recibe el resultado: 3,5 km / 2 s = aparece como 3,5 km / 2 s = 1,75 km/s. El archivo no cambia: es la misma idea del [TOC] y de la cita formateada. Hace análisis dimensional, y ahí está su razón de ser: 1 km + 1 s = se rechaza nombrando los dos, porque una calculadora que devolviera 2 ahí no sería peor: sería una que miente, y en un cuaderno de laboratorio el error sobreviviría hasta el artículo. Sumar la misma magnitud en unidades distintas funciona y convierte (2 h + 30 min =), y el resultado sale en la unidad que escribiste. Conoce los prefijos del SI, las constantes físicas (c, h, k_B, N_A, g…), la conversión explícita (3 km em m, también in, to y ->) y la incertidumbre: (2,00 ± 0,05) m / (1,0 ± 0,1) s = propaga el error y escribe solo las cifras que la medida permite. Código y fórmula quedan fuera: dentro de una valla ```, entre acentos graves o en un $…$, el = del final es sintaxis de otra cosa. Y una línea que no es cuenta (Total =) se queda como está, en silencio. Viene desactivada: actívala en Ajustes → Funciones → Académico → Calculadora con unidades.
Tarjetas de repaso espaciado. Una nota que recibe la etiqueta #flashcards se vuelve un mazo: dentro de ella, cada línea Pregunta::Respuesta es una tarjeta, ::: crea también la tarjeta inversa, un ? solo entre dos líneas hace la tarjeta de varias líneas y ==así== se vuelve un hueco. Sin la etiqueta, ninguna nota tiene tarjetas: es lo que impide que un std::vector de una nota de programación se vuelva una tarjeta que no escribiste. Herramientas → Tarjetas → Repasar tarjetas abre la sesión: la respuesta queda oculta hasta que la pides (es el recurso entero: ver las dos juntas es releer, y releer no fija), y las cuatro notas llevan escrito en ellas cuánto tiempo compra cada una. La programación es FSRS, el mismo algoritmo que usa Anki. La identidad de la tarjeta es la PREGUNTA: corregir la respuesta no toca la programación, y reescribir la pregunta jubila esa tarjeta y empieza otra, que es lo correcto, porque la pregunta es lo que estás aprendiendo. El historial queda en un archivo abierto junto a la nota (nota.md.cards.ndjson): se puede versionar con Git y leer en cualquier editor, y el precio es un archivo más en la carpeta. Exportar a Anki genera el archivo de texto que él importa: la programación no va junto, porque el importador de texto de Anki no la acepta; sigue en los .ndjson.
Bloques de código
El bloque de código sale coloreado. Una valla con el lenguaje declarado (```python) tiene el interior resaltado token a token, con los mismos colores del editor de código — incluido el tema de código elegido para esta ventana. Vale en la edición formateada, en el modo de lectura, en el archivo exportado y en las respuestas de Preguntar a las notas. Una valla sin lenguaje declarado sigue monocromática, y un lenguaje sin resaltado disponible también: el texto nunca deja de aparecer.
Plegar, fijar y exportar
Plegar secciones y fijar el título también valen en el modo formateado y en el de lectura. Ctrl+Shift+[ contrae la sección del cursor y Ctrl+Shift+] la expande; hacer clic en la flechita a la izquierda del título hace lo mismo, y Ver → Contraer/Expandir todos los encabezados actúa sobre la pantalla que esté delante. Al desplazarte, los títulos que salieron por arriba quedan fijos en una franja — haz clic en uno para saltar a su sección. Plegar es estado de pantalla: el .md no cambia y el texto plegado sigue en el archivo.
Exportar: el PDF y el HTML se generan a partir del mismo documento del modo de lectura: el archivo resultante es lo que acabas de leer, con el índice, la lista de la carpeta y las transclusiones incluidas. El HTML queda autocontenido (las imágenes locales se incrustan) y el PDF sale con texto vectorial, consultable. El HTML sale con marcado semántico —título con ancla, callout en <aside>, tabla con encabezado, nota al pie con regreso— y las fórmulas en MathML: texto de verdad, que se copia, se lee en voz alta y no se pixela al ampliar. El tema acompaña a cada formato: el HTML conserva los colores que ves en pantalla, incluido un tema oscuro (el archivo lleva su propio fondo); el PDF siempre sale en papel claro, porque está pensado para imprimir y enviar: si tu tema de contenido es oscuro se imprime con el tema claro predeterminado, y un tema claro que ya uses se conserva. Word, OpenDocument, LaTeX, Typst y EPUB los genera el propio LightNote, sin instalar nada. El .docx y el .odt salen con títulos, listas, tablas, notas al pie, imágenes y las fórmulas como ecuaciones editables: de Word en uno, de LibreOffice Math en el otro; el .tex trae el preámbulo completo y compila con pdfLaTeX, XeLaTeX y LuaLaTeX. Si la carpeta tiene bibliografía y la sección Académico está activada, el .tex sale con la cita viva: [@clave] pasa a \autocite, el token [bibliography] pasa a \printbibliography y un refs.bib con las obras citadas se guarda al lado; la aplicación te lo dice. Compila con biber. El .typ es la misma idea en Typst, que compila en segundos sin una distribución de LaTeX instalada: la fórmula viaja en LaTeX mediante el paquete mitex (descargado en la primera compilación) y la cita sale como @clave con #bibliography. El .epub es el libro electrónico: un capítulo por título de nivel 1, índice de navegación, imágenes como archivos del paquete y el mismo marcado semántico del HTML. El .ipynb es el notebook de Jupyter: la prosa pasa a ser celda de texto y la cerca del lenguaje del kernel pasa a ser celda de código —solo esa, porque una celda de código se envía al kernel, y un diagrama Mermaid convertido en celda se ejecutaría como Python la primera vez que alguien lo corriera—. El kernel sale de la clave kernel de las propiedades de la nota, o de la cerca más frecuente. La salida no se inventa: las celdas salen sin resultado, porque un resultado es de una ejecución —la misma regla que la importación de notebooks ya sigue al descartar las salidas guardadas—. Y está Markdown para…: la misma nota en el dialecto del destino: alerta > [!NOTE] en GitHub, !!! note en MkDocs, :::note en Docusaurus, ::: {.note} en Pandoc, la grafía de Obsidian o CommonMark estricto. El wikilink pasa a enlace relativo (fuera de Obsidian) y el comentario %%…%% no se publica, porque es privado. Con Typst instalado (winget install --id Typst.Typst), la propia exportación ofrece Compilar el PDF allí mismo; sin él, el botón pasa a ser Instalar Typst..., que abre la guía. Si el curso o el cliente entrega una plantilla de Word, indica su .docx en Configuración del espacio de trabajo → Citas y referencias → Plantilla de Word: el archivo exportado sale con los estilos, el papel, los márgenes y el encabezado de la plantilla. Una nota puede usar otra declarando reference-docx: plantilla.docx en sus propiedades. Los tres parten del Markdown de la lectura —citas ya formateadas, figuras numeradas— y lo que no pasa se informa al terminar la exportación. El diagrama Mermaid y la estructura química entran como imagen —dibujados en papel claro en el .docx, el .odt y el EPUB, con los colores de la pantalla en el HTML—; solo por lnote, que no tiene ventana para dibujarlos, salen como bloque de código. Y está Texto marcado para…: reStructuredText, AsciiDoc, Org mode, MediaWiki y texto plano, escritos también por el propio LightNote. Cada uno recibe su construcción nativa, y no una imitación: la caja pasa a ser .. note:: en Sphinx, [NOTE] en AsciiDoc y #+begin_note en Org; la fórmula pasa a ser .. math::, latexmath:[], LaTeX puro y <math>; la nota al pie pasa a ser footnote:[] y <ref>. El texto plano no lleva marcado alguno —la tabla sale alineada en columnas, para caber en un correo o en un mensaje de commit—. Lo que el destino no tiene se informa al final: MediaWiki no tiene caja de aviso en su núcleo (pasa a ser cita con el rótulo en negrita) y reStructuredText no tiene texto tachado. Para llevar un fragmento sin guardar un archivo, el menú contextual del editor tiene Copiar la selección como (o Copiar la nota como, sin selección): texto con formato para pegar en Word, Google Docs o un correo, Markdown de GitHub, LaTeX y Typst. LaTeX y Typst llevan solo el cuerpo — sin preámbulo ni título —, porque el destino es un documento que ya los tiene; el paquete que el fragmento necesita y la cita que depende de la bibliografía del destino se avisan en la barra de estado, y el comentario %%…%% también queda fuera. El RTF está en Más formatos (pandoc) y pasa por pandoc, un programa aparte (winget install --id JohnMacFarlane.Pandoc): sin él ese destino aparece deshabilitado, con el motivo, e Instalar pandoc... en el mismo submenú abre la guía y hace la instalación. Si ya tiene pandoc en otro lugar, indique el archivo con Ya lo tengo: localizar en el disco... en la guía o en Ajustes → Herramientas de código → Programas externos.
Exportar con opciones... es el primer elemento del menú de exportación — el de la pestaña y el de Archivo → Exportar nota son el mismo menú. Enumera todos los destinos, con una búsqueda que coincide con nombre, uso y extensión (wiki encuentra MediaWiki, sphinx encuentra reStructuredText), y muestra solo las opciones que valen para el destino elegido: Índice al inicio, cuando la nota aún no tiene [TOC]; Idioma del documento, que decide la separación silábica y las etiquetas que el documento genera solo; Citas vivas o resueltas en el texto, en LaTeX y Typst; la Plantilla de Word, con la casilla que la hace la predeterminada de la carpeta; las Fórmulas del HTML y del EPUB en MathML o como imagen, para lectores de libros electrónicos antiguos o HTML que se pega en un correo; el Papel del PDF, A4 o Carta; y Compilar el PDF con Typst justo después. La opción que vale pero no puede usarse queda deshabilitada con el motivo —citas vivas sin bibliografía en la carpeta—, y el destino que depende de un programa ausente ofrece instalarlo allí mismo. La última elección se recuerda por carpeta y el diálogo vuelve a abrirse como lo dejó; los elementos directos del menú siguen exportando con los valores de fábrica, para que una elección hecha semanas antes no cambie el archivo de un atajo. El [TOC] escrito en la nota vale en todos los destinos: se convierte en el índice de Word y LibreOffice (Word lo actualiza al abrir), \tableofcontents en LaTeX, #outline() en Typst y la lista de enlaces en HTML y Markdown. En el texto con formato de Copiar la selección como, la fórmula y el diagrama van como imagen, con la fuente LaTeX en el texto alternativo: ahí no se sabe dónde se pegará el texto, y solo la imagen aparece igual en Word, Google Docs y un correo — quien necesite la ecuación editable, que exporte el .docx o el .odt.
La carpeta entera también sale: Archivo → Exportar carpeta... (o el botón derecho en una carpeta del árbol) convierte sus notas en un sitio HTML — una página por nota, con un índice cuando ninguna nota ya se convirtió en index.html —, en un conjunto de .docx u .odt, o en un árbol de Markdown en el dialecto del destino. La estructura de subcarpetas se preserva, los enlaces y wikilinks entre las notas pasan a apuntar a los archivos que salieron (en Word y LibreOffice también, de un documento a otro) y las imágenes y adjuntos que viven dentro de la carpeta van con ellas, en el mismo lugar. Lo que está fuera de ella no se copia: queda como usted lo escribió, y el informe del final enumera cada caso, junto con los enlaces sin destino. La carpeta de destino tiene que estar vacía — o usted marca Reemplazar los archivos con el mismo nombre — y no puede contener la carpeta exportada. Sin ventana: lnote folder-export --path . --format html --out site, y la herramienta folder_export por MCP; allí la transclusión, el [files] y la numeración de figuras no se resuelven, porque quien las resuelve es la ventana.
Edición con formato
Edición con formato (WYSIWYG): el cuarto modo muestra la nota como
queda — el título con cuerpo de título, la lista con su viñeta, la tabla como
cuadrícula y la imagen dentro del texto — en lugar del marcado. El archivo sigue
siendo el mismo .md: quien lo escribe es LightNote, no Qt, y por eso
la negrita, la cursiva, los wikilinks, la transclusión y los avisos sobreviven a
la ida y vuelta. Entrar en el modo y salir sin editar no cambia ni un byte del
archivo. La barra ofrece solo lo que Markdown representa — título, negrita,
cursiva, tachado, código, listas (con casilla de tarea), cita, enlace, tabla y
línea horizontal; la alineación, la sangría y el tamaño de fuente quedan fuera
porque se perderían al guardar.
Dentro de una tabla, Tab pasa de celda y
crea la fila siguiente en la última.
Enter en el vacío al lado de la tabla —donde cae el cursor al hacer
clic a la derecha de una fila— añade una fila al final, con el cursor en la
primera celda.
Dentro de una celda, Enter corta la línea ahí mismo (va al archivo como
<br>, la única forma que acepta la tabla de Markdown) y
Ctrl+Enter crea la fila de abajo, con el cursor en la misma columna.
Al pasar el ratón por la tabla aparecen tiradores discretos: a la
izquierda de la fila, un par de flechas que la sube o la baja —y que también se
arrastra para llevarla a otra posición—; encima de la columna, el par que
la mueve a los lados; y un + en el borde de abajo y otro en el de la
derecha, que añaden fila y columna. La primera fila es el encabezado y no se
mueve. Todo esto está también en el menú contextual, en Tabla — que trae además
Quitar la tabla, la forma segura de quitarla entera.
En un recuadro (<details> o :::), la última
línea cierra el recuadro y no se borra: es lo que evita que el contenido de
abajo quede dentro de él. Para deshacerlo conservando el texto, usa Quitar el
recuadro en el menú contextual. Enter siempre crea línea. En un
elemento de lista vacío sale de la lista sin añadir línea —como en Word— y en un
párrafo vacío crea la línea en blanco. Una línea en blanco del archivo es la
separación normal entre párrafos y no aparece como línea vacía; a partir de la
segunda sí, y vuelve al archivo tal como la escribiste.
Arrastrar el borde derecho de una imagen la
redimensiona, y el ancho va al archivo como
. La barra tiene doce controles: negrita, cursiva y encabezado directos, y dos menús que reparten el resto por lo que hacen — Formatear actúa sobre lo ya escrito (marcas, listas, cita, alinear tabla y las operaciones de Texto) e Insertar crea algo nuevo (enlace, imagen, tabla, bloque, diagrama, fórmula, destacado). Formatear tabla y el menú Texto siguen siendo del editor de texto: aquí aparecen desactivados, con el motivo. Atenuar el marcado pasó al botón Vista, junto a la columna de lectura y la máquina de escribir, que valen en los cuatro modos. Y el menú Insertar ofrece aquí lo mismo que en el editor de texto — resaltado, superíndice, subíndice, wikilink, nota al pie, destacado (callout), bloque plegable, índice y lista de definición —, todo lo que este modo ya sabía mostrar y no sabía crear.
Lo que muestra el modo de lectura, la edición con formato también lo muestra. El emoji :fire: aparece como 🔥, ==resaltado== como una marca amarilla, ^2^ y ~2~ como superíndice y subíndice, #etiqueta como una píldora y una dirección web suelta como un enlace. El archivo conserva la forma escrita: abrir la nota no reescribe nada. Editar dentro de un fragmento representado conserva el marcado —escribir en medio de un resaltado sigue resaltando— y lo que se escribe justo después queda fuera. El comentario %%…%% sigue visible, atenuado: ocultarlo lo volvería invisible e ineditable.
Los callouts también se convierten en caja en la edición con formato. Una cita que empieza por > [!NOTE] —o [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION]— aparece con barra y título de color, igual que en el modo de lectura: el marcador deja paso a la etiqueta del tipo, o a tu propio título cuando escribes > [!TIP] Mi título. El archivo conserva el marcador escrito, y editar el título preserva el tipo del callout. Los nombres de caja de Obsidian y de MkDocs también se entienden: [!SUCCESS], [!ABSTRACT], [!FAILURE], [!QUESTION] y sus alias (tldr, missing, faq) caen en la caja más cercana, así que una nota que vino de allí ya aparece con color — y, al exportar, cada destino recibe el nombre que conoce.
Este es el modo predeterminado en una instalación nueva. Si ya usabas LightNote, se mantiene el modo que tenías; para cambiarlo, usa Configuración → Markdown → Vista predeterminada al abrir una nota. Al pulsar un título en el Índice el salto ocurre dentro del propio modo, sin sacarte de la edición con formato ni de la lectura.
Alinear la columna de una tabla. Con el cursor dentro de la tabla, el menú contextual ofrece Tabla → Alinear columna: A la izquierda, Centrado, A la derecha o Predeterminado. La alineación es de la columna entera — así la representa Markdown — y va al archivo en la línea separadora (:--, :-:, --:); Predeterminado vuelve a ---. La marca del menú indica cuál está vigente: en pantalla, una columna --- y una :-- se parecen.
El Índice muestra lo que está en pantalla. La lista de encabezados sale de la superficie que estás viendo: en la edición con formato, un título recién escrito aparece al instante, sin esperar a que el texto llegue al editor de texto; en el modo de lectura incluye también los títulos de las notas transcluidas con ![[nota]], que forman parte de lo que lees. Al hacer clic en un elemento se llega al encabezado correcto en ambos casos. Y en el modo dividido el desplazamiento pasó a ser de doble sentido: desplazar la lectura arrastra al editor de texto, como ya ocurría al revés.
El marcado se vuelve formato mientras escribes. Escribir
**prueba** aplica negrita y quita los asteriscos; lo mismo vale para
*cursiva*, ~~tachado~~, `código` y las
formas con guion bajo. Al principio de la línea, de # a
###### se convierten en títulos, - y
1. en listas (el número que escribes es donde empieza),
- [ ] en tarea con casilla, > en cita y
--- solo se convierte en línea horizontal al pulsar Enter. Los
marcadores que dibujan algo actúan ya en el espacio; solo el título espera la
primera letra, porque un título vacío no mostraría nada. Ctrl+Z deshace solo la conversión y devuelve el
marcado literal — la salida de quien sí quería los asteriscos. Pegar también convierte: un texto con marcado pegado entra formateado, sin los marcadores. Aquí la regla es más cautelosa que al escribir — solo actúa con marcado inequívoco — porque al pegar no ves el resultado formarse: así un fragmento de código, lleno de * y _, sigue siendo código. Dentro de un bloque
de código no se convierte nada, porque allí el marcado es el tema. Para
desactivarlo todo: Configuración → General → Convertir el marcado al
escribir. De Word, de Google Docs o de una página, lo que llega es el texto con su estructura: título, lista (incluida la de Word, que por debajo no es una lista), tabla, enlace, código en la línea y bloque de código con el lenguaje. La fuente, el tamaño y el color del origen se quedan fuera: Markdown no los representa, y conservarlos dejaría un fragmento en Arial azul que desaparece al guardar. La imagen que viene con el texto se convierte en adjunto de la nota cuando Word o el navegador la dejaron en la carpeta temporal, que se vacía sola; la que apunta a internet sigue apuntando allí, y su menú contextual ofrece Descargar la imagen al espacio de trabajo.
Imágenes, enlaces y wikilinks
Imagen y enlace. Hay tres caminos para poner una imagen:
Insertar → Imagen… en la barra, escribir  o
arrastrar el archivo dentro de la nota — arrastrar una imagen inserta la
imagen, arrastrar una nota .md inserta un [[wikilink]],
y cualquier otro archivo se convierte en un enlace con el nombre del
archivo como etiqueta — y, soltando varios a la vez, cada uno queda en su propia
línea. La ruta guardada es
relativa a la carpeta de la nota siempre que se pueda, para que la nota
siga funcionando tras mover el vault. La dirección de un enlace no aparece
en el texto (lo que se ve es la etiqueta), así que se muestra en la barra de
estado al pasar el ratón, y Ctrl+clic la abre: una dirección web va al
navegador, una ruta local abre en LightNote.
Editar un enlace ya hecho: pon el cursor en él y usa el botón
Enlace (o Editar enlace… en el menú contextual) — la ventana se abre
con el texto y la dirección rellenados. El menú contextual sobre
un enlace también trae Copiar dirección y Quitar el enlace, que lo
deshace conservando el texto. Sobre un [[wikilink]] trae Abrir la
nota y Copiar el destino; sobre una #etiqueta, Buscar
la etiqueta y Copiar la etiqueta. Sobre una imagen está Texto
alternativo… —que no se ve en el modo formateado, pero va al archivo y a la
búsqueda— y, tras arrastrar el tirador, Tamaño original, que devuelve la
imagen a su propio tamaño. Sobre una imagen con dirección web aparece
Descargar la imagen al espacio de trabajo: el archivo va a
Adjuntos/ junto a la nota y la nota apunta a él — si no, dependería
de que esa URL siguiera existiendo. Y está el camino más corto de todos: selecciona un texto y pega una
dirección — se convierte en [texto](dirección) en vez de
sustituir la selección. Vale en las dos superficies de edición. Mientras no se descarga, la imagen de la web aparece como una
tarjeta con la dirección y la ruta del menú — LightNote no va a la red
para representar una nota, y antes ahí quedaba el recuadro vacío de imagen rota,
sin decir qué hacer.
Y se puede deshacer el marcado. En el menú Formato, los
elementos Resaltado, Superíndice y Subíndice aparecen
marcados cuando el cursor está dentro de uno de ellos, y hacer clic ahí
quita el marcado en vez de aplicarlo otra vez. Desde el teclado está el
camino rápido: con el cursor al final de un fragmento con formato,
Ctrl+Shift+Retroceso devuelve el marcado literal menos un carácter —
negrita pasa a **negrita* como texto normal — y completar
el delimitador que falta lo forma de nuevo. Vale para negrita, cursiva, tachado,
código, resaltado, superíndice y subíndice. El Retroceso solo borra una
letra, ahí como en cualquier otro sitio.
Editar el diagrama sin salir de la nota. Un diagrama Mermaid o una
fórmula $$…$$ aparecen dibujados en el editor con formato; para
llegar a la fuente, pon el cursor encima y pulsa Ctrl+Enter — o usa
Editar este bloque… en el menú contextual. La barra de abajo muestra el texto,
la nota queda bloqueada mientras está abierta, y cerrarla (✕, Esc, Ctrl+Enter, un
clic en la nota) aplica: el camino de vuelta es Ctrl+Z. En el mismo menú,
Extraer a nota nueva… guarda el fragmento seleccionado en una nota junto a
esta y deja un [[wikilink]] en su lugar — el marcado va con él, así que
título, lista y tabla llegan enteros a la nota nueva. El campo muestra solo el contenido: las líneas ```mermaid y ``` (o los $$) pasaron a ser el selector de tipo en la cabecera de la barra, que además alterna entre diagrama, fórmula y bloque de código. El Enter mantiene la sangría de la línea, que en un lenguaje sangrado como Mermaid es el gesto de cada línea. Y el menú contextual del bloque trae Copiar el código Markdown y Copiar la imagen — el código se pega en cualquier editor de Markdown y vuelve a dibujarse; la imagen se pega en un correo o en un chat. Los dos valen también en el modo de solo lectura.
Pedir el cambio a la IA. Con la barra del bloque abierta, el botón IA del encabezado abre una línea donde escribes qué cambiar — «añade un camino de error que vuelve al inicio», «cambia la suma por una integral» — y Enter lo envía. Junto al campo, un botón muestra qué IA va a responder: su menú cambia de asistente solo para este bloque, sin tocar tu IA predeterminada, y trae Ver lo que se enviará. Vale la pena mirarlo, porque la IA recibe el bloque, el título y la sección de la nota y el texto de alrededor — eso es lo que permite pedir que el diagrama refleje lo que está escrito ahí. La respuesta entra en el campo y el dibujo se rehace al momento: Ctrl+Z devuelve lo que tenías escrito. LightNote comprueba la respuesta con su propio renderizador y, cuando no dibuja, pide una corrección diciéndole al modelo la línea y el comando rechazados — si insiste, escribe la respuesta igualmente y deja el motivo en la barra, para que arregles las dos líneas a mano. El botón solo aparece en diagrama, fórmula y estructura química.
Apuntar a una sección y etiquetar desde las propiedades.
[[Nota#Sección]] abre la nota en esa sección — el ancla nombra
el texto del encabezado — y ![[Nota#Sección]] incluye solo esa
parte (hasta el siguiente encabezado del mismo nivel o superior, con los
subtítulos). Un ancla que no coincide con ningún encabezado lo avisa en la barra
de estado, y la inclusión queda tal cual: traer la nota entera ahí sería entregar
otra cosa en silencio. Y las tags: del frontmatter ahora cuentan como
etiquetas de la nota, en las dos grafías (tags: [a, b] y la lista en
líneas) — llegan a las Bases, a la búsqueda por etiqueta y a lo que ve el
asistente, junto con las #etiquetas del cuerpo. Sin el nombre de la nota, el ancla apunta a ella misma: [[#Conclusión]] salta a esa sección sin abrir ninguna pestaña, y ![[#Conclusión]] trae la sección a donde estás. Y el ancla anida: [[Tesis#Método#Muestra]] es la Muestra que está dentro de Método, y no la primera con ese nombre en la nota. La tercera forma apunta a un bloque: una línea que termina en ^id (o un ^id solo justo debajo del bloque) es el destino de [[Nota#^id]]. LightNote no crea esos identificadores: te lleva a lo que escribiste. Y el ancla de un destino que no es una nota es la dirección dentro de él: [[articulo.pdf#page=3]] abre el PDF en esa página.
El panel Etiquetas. La franja de la barra lateral tiene una sección Etiquetas: el árbol de todas las #etiquetas de tus notas, anidado por / (#proyecto/alfa y #proyecto/beta pasan a ser ramas de proyecto), con el número de notas al lado — contadas por nota, no por aparición. Al seleccionar una etiqueta se listan debajo las notas que la tienen (el padre muestra también las de sus ramas); doble clic abre la nota. El panel lee el índice, así que ve las dos fuentes: las #etiquetas del cuerpo y las tags: del frontmatter. Ctrl+clic en una etiqueta dentro de una nota abre este panel con ella seleccionada — antes abría la búsqueda textual por #etiqueta, que no encuentra la nota que la declara en el frontmatter. Para la aparición literal en el texto, sigue usando la búsqueda global.
Wikilinks: escribe [[ para autocompletar con las notas del
espacio de trabajo; el enlace se cierra solo con ]]. Mantén Ctrl
y haz clic en un [[nota]] para abrir la nota correspondiente. El panel
Conexiones muestra los enlaces entre notas. La figura incrustada de Obsidian también aparece: ![[foto.png]] se dibuja como imagen, y ![[foto.png|300]] respeta el ancho. El archivo conserva lo que escribiste: la ruta de la imagen nunca se guarda en lugar del token. Y el adjunto que no es imagen se convierte en una tarjeta: ![[articulo.pdf#page=3]], ![[clase.ogg]] y ![[mapa.canvas]] aparecen como una caja con el nombre del archivo, en la que se puede hacer clic — y el PDF se abre en la página que usted indicó. El .canvas y el .base de Obsidian llevan una línea más, que dice que el archivo sigue en la carpeta y que LightNote no lo dibuja. Un destino que no existe se queda tal como usted lo escribió: una tarjeta ahí prometería un archivo perdido. En medio de una frase, la figura aparece igual y el adjunto queda solo como el nombre del archivo, que se abre con Ctrl+clic: una tarjeta ahí partiría el párrafo. La misma nota con otro nombre: escriba aliases: [Muestreo, Método de muestra] en las propiedades de la nota y [[Muestreo]] pasa a abrirla — el alias también entra en el autocompletado de [[. Un archivo con ese nombre siempre gana al alias. Los alias salen del índice de la carpeta, que la aplicación reconstruye en segundo plano al abrir el espacio de trabajo: un aliases: recién escrito se resuelve en el siguiente análisis, no en el mismo segundo.
Cajas, notas al pie y marcado enriquecido
Lectura enriquecida: los bloques de código entre vallas aparecen en
una caja con la etiqueta del lenguaje y un enlace copiar; se representan
~~tachado~~ y ==resaltado==; y los callouts al
estilo de GitHub (> [!NOTE], [!TIP],
[!WARNING], [!IMPORTANT], [!CAUTION]) se
convierten en cajas de color. Las etiquetas #hashtag se resaltan y, con
Ctrl+clic, abren la búsqueda de esa etiqueta; el bloque de frontmatter
YAML al principio (---) se resalta. En la barra de la pestaña hay un
botón para exportar la nota como PDF/HTML, una columna de
lectura centrada conmutable y los modos de visualización de la nota. El modo
Zen (F11) y el desplazamiento de máquina de escribir ayudan a escribir
sin distracciones.
Las notas al pie saltan en ambos sentidos. La referencia [^1] aparece como un número en superíndice, y Ctrl+clic sobre ella lleva a la definición; en la definición, el marcador [^1]: sigue visible —es el destino del salto, y necesitas verlo para saber qué nota estás editando— y Ctrl+clic sobre él vuelve a la referencia. A diferencia de muchos visores de Markdown, el editor no renumera las notas ni mueve las definiciones al final: el orden del archivo es tuyo. La grafía en línea de Obsidian y Pandoc — ^[el texto de la nota] — también se dibuja: escribes el texto en el punto donde llamas la nota y, en el modo de lectura, aparece numerado al final. El archivo conserva lo que escribiste y, al exportar, se convierte en una nota al pie de verdad en Word, LaTeX, Typst y EPUB.
La admonición de MkDocs (!!! note con el cuerpo sangrado con 4 espacios) se conserva tal como está escrita en la edición con formato: la sangría es lo que hace que el cuerpo pertenezca a la admonición, así que su texto no recibe formato enriquecido; a cambio, abrir la nota y guardarla no deshace la construcción.
Las cajas con cierre también aparecen como caja. :::tip … ::: (Docusaurus) y <details> … </details> reciben barra y título de color, en las dos grafías: la compacta y la que lleva líneas en blanco. El marcador de apertura deja paso a la etiqueta del tipo, al título que escribiste o al texto del <summary>; el de cierre sale de la pantalla y se queda en el archivo, porque el marcado que el propio programa escribe no debe quedar literal en la página. Lo que queda es la última línea de la caja: es lo que la delimita, es donde pones el cursor para seguir escribiendo dentro de ella, y no se borra — sin ella, el contenido de abajo quedaría dentro. Para deshacer la caja conservando el texto, usa Quitar el recuadro en el menú contextual. El : de la lista de definición sigue atenuado. El <summary> tiene que estar en la misma línea que el <details> para convertirse en el título: en una línea propia aparece tal cual, y la caja se queda con la etiqueta predeterminada.
HTML en línea y bloque de código. <kbd>, <mark>, <sub> y <sup> también se representan en la edición con formato: las etiquetas desaparecen y queda solo el contenido, igual que en el modo de lectura. El bloque de código cercado recibe una caja, con el nombre del lenguaje y un enlace copiar en la esquina — el mismo enlace en la edición con formato y en el modo de lectura, que es donde más se copia código. Lleva solo el interior de la cerca (sin los marcadores) y dice copiado por un instante; ambas etiquetas solo aparecen cuando caben sin escribir sobre el código.
Más en la lectura: el bloque de frontmatter YAML del principio no aparece en la nota renderizada: se edita en el panel Propiedades. Las etiquetas #hashtag se convierten en píldoras que se pueden pulsar y abren la búsqueda de esa etiqueta (lo mismo que Ctrl+clic en el editor). Los comentarios al estilo de Obsidian (%%esto no se ve%%, o un bloque entre líneas con %%) se quedan solo en el archivo. Además de los callouts de GitHub, también se representan las cajas de los dialectos de Docusaurus (:::tip Título … :::) y MkDocs (!!! note "Título" con el cuerpo indentado, y ??? note) — útil para leer repositorios de documentación.
Novedades en la lectura: además de ~~tachado~~ y
==resaltado==, funcionan superíndice ^x^, subíndice
~x~, emoji por atajo (:rocket:),
autoenlace de URLs, notas al pie [^1], bloques
plegables <details>, listas de definiciones, tareas
- [ ]/- [x] (⬜/✅) y el token [TOC]
(índice clicable en la lectura); también imágenes locales y HTML en línea
(<kbd>, <mark>…). El panel Índice
(barra de la pestaña) recorre los encabezados siguiendo el cursor, y el botón
Insertar (o el menú contextual → Formato/Insertar) aplica
cualquier marcado.
Encabezados, carpeta y texto
Encabezados fijos (sticky scroll): al desplazarte, los encabezados que contienen la línea superior quedan fijados en una franja en la parte alta del editor; hacer clic en uno salta a esa sección (actívalo en Configuración → Markdown). El menú contextual de una carpeta en el árbol crea/abre la Nota de la carpeta (index.md con frontmatter), útil como índice.
Nota de carpeta y lista de archivos: hacer doble clic en una carpeta abre su index.md, si existe. Dentro de cualquier nota, el token [files] (o [arquivos]) solo en una línea se sustituye en la edición con formato y en la lectura por la lista de los archivos de la carpeta de la nota, como enlaces clicables: generada al momento, sin escribir nada en el archivo (igual que [TOC]).
Operaciones de texto y de línea. Las operaciones del editor de código
también valen en la nota — mediante el submenú Texto del botón Formatear de la barra de la pestaña,
el menú contextual y los submenús Líneas y Limpieza del menú
Editar: mover la línea (o las líneas seleccionadas) arriba/abajo
(Ctrl+Shift+↑/↓), duplicar (Ctrl+Shift+D), eliminar
(Ctrl+Shift+L), ordenar (A→Z / Z→A), invertir el orden, unir
líneas, quitar líneas duplicadas o vacías, quitar espacios y
mayúsculas/minúsculas (e invertir). Numerar líneas… abre un diálogo con
inicio, paso, ceros a la izquierda y separador — con el
valor por omisión (". ") el resultado es una lista numerada Markdown
válida. Con una selección la operación actúa solo sobre ella (ampliada a líneas
completas); sin selección, sobre todo el documento — siempre un único paso de
deshacer. La barra de la pestaña trae además el botón IA: Preguntar / Editar con IA — el mismo Ctrl+K / Ctrl+I del código — y Preguntar a las notas, el chat que responde usando las notas del espacio de trabajo.
Encabezados plegables: haz clic en la flecha a la izquierda de un encabezado (o usa Ctrl+Shift+[ / Ctrl+Shift+]) para contraer y expandir la sección; en Ver están Contraer/Expandir todos los encabezados. El plegado es solo visual —nunca se escribe en el archivo— y LightNote lo recuerda entre sesiones. Saltar desde el Índice o desde la búsqueda al interior de una sección contraída la expande.
Clasificador: la carpeta como obra
Qué es: una carpeta cuyas notas son capítulos, en un orden que tú declaras. Sirve para un libro, una tesina, un curso, un manual, un runbook o un diario de trabajo: el mecanismo es el mismo. En el menú contextual de la carpeta, Convertir en clasificador abre una pantalla con las notas en el orden actual: arrastra para reordenar y confirma. El orden se guarda en la clave chapters: del index.md de la carpeta — un archivo de texto tuyo, que viaja con las notas y sigue valiendo en cualquier máquina. También se puede nombrar una subcarpeta en el orden: sus capítulos entran en la posición donde ella aparece, y ella declara su propio orden en su index.md — así un libro gana partes. La portada de una subcarpeta no se convierte en página del documento; sirve para declarar el orden de ese nivel y para navegar.
Navegar: con el orden declarado, la barra de la nota muestra Capítulo 3 de 12, con una flecha a cada lado (Alt+PgUp y Alt+PgDn); el botón del medio lista todos los capítulos. El panel Sumario pasa a mostrar dos niveles: los capítulos de la obra y, bajo el que está abierto, sus encabezados. En los extremos de la obra la flecha queda gris. En una carpeta sin orden declarado nada de esto aparece, y todo sigue como siempre.
La plantilla de las notas: el clasificador puede declarar de qué plantilla nacen las notas creadas dentro de él (la clave template:). Hay cinco plantillas listas — capítulo de libro, capítulo de tesina, clase, paso de procedimiento y entrada de diario — y elegir una la guarda como archivo en la carpeta Templates, donde queda editable. Una nota creada dentro del clasificador entra sola en el orden; un archivo dejado ahí desde fuera queda en Fuera del orden hasta que lo adoptes. Renombrar un capítulo corrige la clave y conserva su posición. Para partir de una obra lista, Estructurar a partir de una plantilla… (en el menú contextual de la carpeta) escribe las dos claves de una vez — el orden y la plantilla de los capítulos — conservando la portada que ya hayas escrito; y mientras haya un capítulo declarado que aún no existe, el Índice muestra un botón que los crea todos de una vez, cada uno ya a partir de la plantilla de la carpeta. Nada se sobrescribe: el capítulo que ya está ahí se queda como está.
Unir en un solo documento: al exportar la carpeta, la casilla Unir los capítulos en un solo documento produce un archivo con los capítulos en el orden declarado. Como el texto se une antes de renderizarse, las notas al pie, las figuras, las tablas y las citas pasan a numerarse en todo el documento — y una referencia cruzada de un capítulo a la figura de otro empieza a funcionar. Lo que no está en el orden declarado queda fuera, y el informe dice qué.
Propiedades, tema y zoom
Propiedades de la nota: el panel lateral Propiedades muestra el frontmatter YAML como campos tipados (texto, número, fecha, casilla), con la caja Tipo arriba. Definir el tipo y las propiedades es lo que permite reunir las notas en una Base.
Tema de la nota: el cuadro Tema del panel
Propiedades define la apariencia de esta nota — los colores y la fuente del
texto — sin tocar el tema del resto de la aplicación. La elección va al
frontmatter (la clave theme), así que viaja con el archivo:
la nota se ve igual en cualquier equipo. El botón contiguo graba los colores
dentro de la propia nota, para que se vea igual incluso para quien no tenga ese
tema. Sin la clave, la nota sigue el tema del espacio de trabajo. Si prefieres
que las notas que llegan de fuera no cambien tu aspecto, desactiva Respetar
el tema declarado en la nota en Configuración → Markdown.
Un tema que LightNote aún no conoce: la lista de temas es un único archivo descargado del sitio, así que una nota que cita un tema publicado después de tu última actualización simplemente no lo encuentra. Entonces la nota se abre con el tema del espacio de trabajo y el panel Propiedades lo avisa, con un atajo para ver los temas disponibles. LightNote busca la lista actualizada por su cuenta — una vez por sesión, en segundo plano y sin bloquear la nota. Si prefieres que nunca busque nada, desactiva Buscar catálogo de herramientas en línea en Configuración → Funciones.
Ctrl++ y Ctrl+− (o Ctrl+rueda del ratón) cambian el tamaño de la nota, y Ctrl+0 vuelve al 100% — útil para leer una nota larga sin tocar la fuente de todas. El editor y la lectura escalan juntos: en el modo dividido ambos lados quedan del mismo tamaño. Un <svg> escrito directamente en la nota también se dibuja en la lectura: puede pegar un gráfico generado por IA sin convertirlo en un archivo aparte.
Cuántas palabras, y dónde. La barra de estado cuenta las palabras de la nota y estima el tiempo de lectura; al lado, sección N es el recuento de la sección en la que está el cursor: la misma que el Sumario destaca, desde su título hasta el siguiente de nivel igual o mayor. Si declara una meta diaria en Ajustes → Notas y escritura, aparece también hoy N/M: lo que creció en las notas que abrió hoy. Borrar no descuenta —revisar el propio texto no puede ser un castigo—, una nota que no abrió no entra, y a medianoche la cuenta se pone a cero.
Diagramas (Mermaid)
Cómo funciona
Diagramas Mermaid. Una valla ```mermaid con un diagrama de flujo (flowchart/graph, en las cuatro direcciones), un diagrama de secuencia (sequenceDiagram) o un gráfico circular (pie) se dibuja como diagrama en el modo de lectura, en el archivo exportado y en las respuestas de Preguntar a las notas, que es de donde más vienen los diagramas. El dibujo sigue el tema de la nota (tinta, papel y acento), así que combina con el texto de alrededor en los dos temas. En la edición formateada —el modo predeterminado— el diagrama también aparece dibujado, con la barra del bloque encima (copiar, editar, eliminar). Editar abre una barra abajo con el código fuente: la nota queda bloqueada mientras está abierta y el dibujo se rehace mientras escribes; cerrar aplica (no hay guardar ni cancelar), Ctrl+Z deshace todo el cambio en un paso y vaciar el campo elimina el bloque. En el modo dividido, hacer clic en el diagrama lleva el cursor hasta la valla en el texto plano. En el editor de texto todo sigue siendo texto: pulsa Ctrl+E para ver el diagrama. Dentro de un elemento de lista, el diagrama —y también la estructura SMILES, la fórmula en bloque, [files] y ![[nota]]— queda como texto en la edición con formato y aparece dibujado en el modo de lectura: ahí el marcador del elemento no tendría cómo volver al archivo.
Los subgrafos (subgraph … end, incluso anidados) se dibujan como cajas con título, y las aristas cruzan el borde partiendo del nodo real; el id de un subgrafo también puede ser extremo de una arista (sub --> X). Se respetan los colores declarados por el autor: classDef, class, :::clase y style (relleno, borde, grosor, trazo discontinuo y color del texto). Para empezar, usa Insertar → Diagrama (Mermaid) en la barra de la nota: entra con un esqueleto listo del tipo que elijas. El menú ofrece los seis más usados directamente; Todos los diagramas… abre un selector con los 33, agrupados por su finalidad, con búsqueda (por nombre o por lo que el diagrama muestra) y la vista previa dibujada de cada uno — son 33 dibujos, y ver el dibujo decide más rápido que leer el nombre. El frontmatter del diagrama — el bloque entre --- antes de la primera línea — también se lee: el title se convierte en el título dibujado sobre el dibujo (un title en el cuerpo gana) y las claves de config que LightNote conoce llegan al diagrama (gitGraph.mainBranchName, gantt.displayMode y las de packet: bitsPerRow, bitOrder: descending — que refleja la fila — y showBits: false); lo que no conoce se ignora, sin rechazar la nota.
Secuencia, entidades, clases y estados
En el diagrama de secuencia valen participant/actor (con as), las formas de flecha (->>, -->>, -x, -)), la activación (+/- y activate/deactivate), las notas (Note left of/right of/over), los bloques loop/alt/else/opt/par y autonumber. Lo que todavía no se dibuja — otros tipos de diagrama — sigue apareciendo como bloque de código; direction dentro de un subgrafo y linkStyle se ignoran. La sintaxis de nodo de Mermaid v11 (A@{ shape: rounded, label: "texto" }) se lee, y el catálogo de formas de v11 se dibuja: doc, lin-doc, docs, tag-rect, win-pane, hourglass, bolt, flag, das… — cada una es el símbolo que dice su nombre, y ninguna se convierte en rectángulo, porque un rectángulo en lugar de un documento sería otro diagrama. Un nombre que Mermaid no tiene hace que el diagrama vuelva a ser bloque de código, con la línea señalada. El id de arista (A e1@--> B) y e1@{ animate: true } se aceptan y se ignoran: la animación no se dibuja. El participante tipado (participant DB@{ "type": "database" }) dibuja el símbolo UML sobre la calle — boundary, control, entity, database, queue y collections —, y el "alias" declarado ahí vale como el as.
El erDiagram también se dibuja: cada entidad se convierte en una caja con sus atributos y la cardinalidad aparece en los dos extremos de la relación (||--o{, }o--||, |o, |{); -- es relación identificadora y .. no identificadora. El alias p[Persona] nombra la caja sin cambiar el id que citan las relaciones. El subgraph … end también vale aquí: las entidades de dentro reciben una caja con título, los subgrafos anidan y el id de la caja puede ser extremo de una relación (CLIENTE ||--o{ Ventas : hace), uniéndose a la frontera en vez de a una entidad con ese nombre.
El classDiagram igual: caja de tres compartimentos (nombre, atributos y métodos, separados por el paréntesis del método), <<interface>> en línea propia, namespace como caja y las seis relaciones (<|--, *--, o--, -->, ..>, ..|>). Atención a la dirección: en A <|-- B el triángulo está en A — quien hereda es B. La cardinalidad entre comillas aparece en los dos extremos ("1" --> "*"). Los genéricos Lista~T~ aparecen como Lista<T>, también en los miembros. La interfaz piruleta (bar ()-- foo) dibuja el círculo encima de la caja del lado en que está el () — y solo ahí —, con la relación tocando el círculo; los namespace también anidan, y tras el } interno una clase vuelve al namespace de fuera.
El stateDiagram-v2 dibuja la máquina de estados: [*] es el inicio (disco lleno) y el fin (disco con anillo), state X { … } se convierte en caja, <<fork>>/<<join>> en barra y <<choice>> en rombo. El -- dentro de un estado compuesto separa las regiones concurrentes, marcadas con una línea discontinua.
Línea de tiempo, recorrido, cuadrantes y Gantt
La timeline también se dibuja: cada período se convierte en una columna de la línea de tiempo, con sus eventos apilados debajo, y section agrupa las eras en franjas de color. Valen las dos grafías para varios eventos — dos puntos en la misma línea (2004 : Facebook : Google) y continuación en la línea siguiente (: otro evento) —, y aquí cualquier línea que no sea title, section o direction es texto libre. direction TD (línea de tiempo vertical) todavía no se dibuja y mantiene el bloque de código.
El journey (recorrido del usuario) también se dibuja: cada tarea se convierte en una caja sobre el eje del recorrido, y la puntuación de 1 a 5 desplaza su cara hacia arriba o hacia abajo — es el perfil que forman lo que el diagrama existe para mostrar. section agrupa las fases y los actores se vuelven marcadores de color en la tarea, con la leyenda a la izquierda. Aquí la gramática es estricta (Tarea: puntuación: Actor, Actor), a diferencia de la del timeline: sin el par nombre/puntuación no hay dónde poner la cara, así que una línea malformada — o una puntuación fuera de 1 a 5 — rechaza el diagrama, señalando la línea.
Y el quadrantChart dibuja el plano de los cuatro cuadrantes: x-axis e y-axis nombran los extremos de cada eje (el lado derecho del --> es opcional), quadrant-1 a quadrant-4 etiquetan las regiones y cada punto entra como Nombre: [x, y], con x e y de 0 a 1. Atención a la numeración: es la del plano cartesiano, no la de la lectura — quadrant-1 es el de arriba a la derecha, y desde ahí se avanza en sentido antihorario; y = 1 queda arriba. El color y el radio de un punto pueden venir directos (P: [0.5, 0.5] radius: 10, color: #109060) o por clase (P:::clase más classDef), y el estilo directo gana a la clase. Una coordenada fuera de 0 a 1 rechaza el diagrama señalando la línea en vez de recortarse — es la posición en el plano, y recortarla pondría el punto en un cuadrante que no escribiste.
El gantt dibuja el cronograma: dateFormat indica el formato de las fechas que escribes (por omisión YYYY-MM-DD) y axisFormat el de las etiquetas del eje (%d/%m); section agrupa las tareas en franjas. Cada tarea es Texto : marcas, id, inicio, fin — las marcas done, active, crit y milestone van primero y se pueden combinar, el inicio es una fecha o after otroId, y el fin es una fecha, una duración (5d, 2w, 3h, 45m) o until otroId. Con un solo campo, la tarea empieza donde terminó la anterior. El after puede citar una tarea declarada más abajo en la nota; en cambio, un id que no existe en ninguna parte — o una dependencia circular — rechaza el diagrama señalando la línea, en vez de poner la barra en el día de hoy. El excludes weekends (o excludes monday, o una fecha) empuja el fin de cada tarea por los días excluidos, y por eso cambia la longitud de las barras; includes 2026-03-07 gana al fin de semana, para decir que ese sábado sí se trabaja. El hito (milestone) aparece como un rombo, y todayMarker off quita la línea del día de hoy. El displayMode compact apila varias tareas en la misma fila, y aquí una tarea solo comparte la fila cuando nada de lo que ocupa toca lo que ya está allí — la etiqueta incluida. El marcador vert (Apertura : vert, v1, 20:15, 0m) dibuja el instante como una línea vertical que cruza todo el gráfico, sin ocupar ninguna fila, y su etiqueta sale bajo el eje. El dateFormat X (o x) lee la fecha como tiempo Unix en segundos (o milisegundos), y en el eje el %s/%Q la escribe de vuelta. Un tickInterval que Mermaid no conoce (1decade) se ignora en silencio, como allí, y el eje vuelve al automático.
Mapa mental, requisitos, Git y C4
En el mindmap la jerarquía viene de la indentación: el nivel de un elemento es la columna en la que empieza su texto, sin llaves ni flechas (el tabulador vale hasta la siguiente parada de 4, como en un editor). El primer elemento es la raíz — un segundo elemento en su columna sería una segunda raíz, y entonces el diagrama se rechaza señalando la línea. Cada elemento puede declarar su forma: [cuadrado], (redondeado), ((círculo)), {{hexágono}}, ))explosión(( y )nube(; sin delimitador sale redondeado. El ::icon(...) y el :::clase se reconocen y se ignoran (no empaquetamos la fuente de iconos, y la clase se refiere a un CSS externo que aquí no existe). El dibujo es de dos lados — la raíz en el centro, las ramas repartidas a izquierda y derecha —, cada rama con un color propio que heredan sus descendientes, y el grosor de la rama baja con la profundidad. Es un árbol, no una simulación de fuerzas como en mermaid: en un mapa mental la jerarquía es el contenido, así que debe leerse en la posición — y, como el dibujo se rehace al cambiar de tema, un trazado que convergiera desde posiciones aleatorias reorganizaría el mapa entero cada vez.
El treeView (treeView-beta) dibuja el árbol de carpetas de un proyecto, y acepta las dos grafías: la sangría (lo que se escribe) y los propios caracteres del comando tree (├──, │, └──), que es lo que permite pegar la salida del terminal directamente en la nota — allí la sangría no sirve, porque │ y un espacio ocupan la misma columna y solo el primero dice que la rama sigue. La barra final marca la carpeta (src/), un nombre con espacios va entre comillas, el ## texto cuelga un comentario al final de la línea y el :::highlight resalta el nombre. El icon(...) se reconoce y se ignora, como el ::icon() del mapa mental: los paquetes de iconos vienen de Iconify por JavaScript, y ni el propio Mermaid los dibuja por defecto.
El ishikawa (ishikawa-beta) dibuja la espina de pescado de un análisis de causas: el primer elemento es el EFECTO (la cabeza, a la derecha), el nivel siguiente son las categorías (las espinas) y los dos de dentro son las causas y las subcausas. Son tres niveles, y un cuarto rechaza el diagrama señalando la línea — no existe en Mermaid. Las espinas alternan arriba y abajo del eje, que es lo que permite que dos categorías vecinas quepan sin que el texto de una caiga sobre el de la otra, y el orden en que escribes las causas se lee de arriba abajo en ambos lados.
El venn (venn-beta) dibuja conjuntos que se cruzan: set A["Deseable"] declara uno, union A,B["Se puede construir"] nombra la región común (la unión se llama por los conjuntos que cruza) y text A1["React"], justo debajo de uno de ellos, pone un elemento dentro de esa región. Son hasta tres conjuntos, y el cuarto rechaza el diagrama señalando la línea: con cuatro círculos no hay disposición que produzca todas las regiones, y dibujar uno "casi correcto" ocultaría una que declaraste. El :número tras la etiqueta (set A["Alpha"]:20) escala el círculo — el área sigue al número — y no las intersecciones: un Venn con intersección proporcional es otro diagrama (Euler), que exige optimización numérica. El style A fill:#ff6b6b pinta un conjunto, y con coma (style A,B color:#333) vale para la unión de esos conjuntos.
El cynefin (cynefin-beta) dibuja el marco de Snowden para clasificar decisiones: los cinco dominios tienen nombre fijo — complex, complicated, chaotic, clear y confusion — y posición fija (los cuatro cuadrantes, con la confusión en el medio); lo que eliges es lo que va dentro de cada uno. Cada elemento va entre comillas, uno por línea, y complex --> complicated : "Patrón identificado" dibuja la transición entre dos dominios. Un nombre fuera de los cinco rechaza el diagrama señalando la línea y diciendo cuáles existen. La frontera entre clear y chaotic sale ondulada: en el modelo es un precipicio, y la forma lo dice — aquí la onda es siempre la misma, para que la nota no cambie de dibujo en cada apertura.
El swimlane (swimlane-beta) dibuja un proceso en franjas, una por responsable: la sintaxis es la del diagrama de flujo (las mismas formas, flechas, etiquetas y classDef), y cada subgraph deja de ser una caja para convertirse en un carril. Todo nodo debe estar dentro de uno — un nodo suelto rechaza el diagrama, porque no habría cómo decir de quién es la tarea — y un carril dentro de otro también rechaza. Con LR los carriles son filas y el flujo va a la derecha; con TB son columnas y el flujo baja. La posición a lo largo del flujo sale del camino más largo hasta cada tarea, y la franja es la del dueño: una tarea nunca sale de su carril, aunque eso hiciera el dibujo más compacto.
El agentflow (agentflow-beta) dibuja un flujo con agentes de IA, y es otro vocabulario para el diagrama de flujo: las flechas son las mismas, flow id["Nombre"] … end hace el papel de subgraph (y anida), global … end guarda lo que todos los agentes consultan y connector id["Nombre"] declara un sistema externo. Lo que cambia de verdad es la forma, que dice el papel de cada paso: @{ shape: input }, task, tool (llamada a herramienta), decision, refdoc (documento de referencia) y action (acción final). Conecta el documento con -.-, sin flecha: se consulta, no es un paso del flujo. Las claves que describen al agente por escrito (instruction, params, returns, connectorRef, protocol, endpoint) se leen y se ignoran en el dibujo. Estos nombres de forma solo valen aquí: en un flowchart rechazan, porque allí Mermaid tampoco los tiene.
El usecase (usecase-beta) dibuja el diagrama de casos de uso de UML: lo que se declara con actor se convierte en el muñeco, y todo lo demás es un caso de uso, dibujado como elipse — esa es la distinción que el tipo existe para mostrar. El caso de uso puede venir como Id("Etiqueta"), Id[Etiqueta], solo Id o solo el texto entre comillas; el systemBoundary "Nombre" … end es la frontera del sistema y note for X "texto" cuelga una nota. Las relaciones son las de UML: --> asocia, --|> es generalización (el triángulo hueco queda en el general) y A ..> : include B — con el destino después de los dos puntos — dibuja el « include » punteado, y vale igual para extend. Lo que describe al actor sin cambiar el dibujo (type, business, icon) se lee y se ignora, y el <<Estereotipo>> entra en la etiqueta. El nodo json aún no se dibuja y mantiene el bloque de código: es un bloque de varias líneas con el árbol del dato dentro, y ahí el JSON sigue legible como texto.
El wardley (wardley-beta) dibuja un mapa de Wardley: un plano cuyo eje vertical es la visibilidad para el usuario (arriba está lo que él ve) y cuyo eje horizontal es la evolución, de Genesis a Commodity. Atención al orden del par: component Té [0.63, 0.81] es [visibilidad, evolución] — el primer número es el eje vertical, y leído al revés el mapa se sigue dibujando y pasa a decir otra estrategia. El anchor es el usuario arriba, A -> B une la cadena (el nombre puede llevar espacios, con o sin comillas), A +> B es flujo (más grueso; +<> en ambos sentidos y +'texto'> con etiqueta) y evolve Hervidor 0.62 dibuja la flecha punteada hasta donde la pieza debe llegar. También valen evolution (cambia las etapas del eje), size, (build)/(buy)/(outsource)/(market), (inertia) (la barra de resistencia), label [dx, dy], pipeline X { … }, note, accelerator/deaccelerator y las annotation numeradas con la leyenda de annotations.
El eventmodeling dibuja un event modeling: una línea de tiempo en tres carriles — la pantalla arriba, el comando (y el modelo de lectura) en medio, el evento abajo. Cada línea es tf 02 cmd AñadirArtículo: el número es el instante (la columna) y la palabra del medio es el tipo, que elige el carril — ui, cmd/command, pcr/processor, rmo/readmodel, view y evt/event (las formas largas valen igual). El carril no se declara: es el método. El rf (resetframe) abre una rebanada nueva, con un divisor punteado — es donde la historia vuelve a empezar. El esquema del cuadro va entre llaves ({ descripcion: string }) o por referencia ([[Datos]]) a un bloque data Datos { … }, que puede venir después; y ->> 02 ->> 03 une el cuadro a los instantes que lo alimentan, citando el número.
El railroad (railroad-ebnf-beta, -abnf-beta, -peg-beta o railroad-beta) dibuja una gramática como vías de tren: cada regla es un camino que se sigue con el dedo, y lo que se puede escribir es lo que se puede recorrer. La regla es nombre = expresión ; (o nombre <- … ; en PEG) y puede ocupar varias líneas: se cierra en el ;. El texto entre comillas es terminal (cápsula) y el nombre suelto es otra regla (rectángulo); | (o /) es elección, ? opcional, + uno o más, * cero o más, y ( ), [ ] y { } agrupan, hacen opcional y repiten. El ABNF pone la repetición antes (1*( ALPHA / "-" ), *DIGIT), el PEG acepta los predicados !x y &x — que van en la etiqueta, porque no consumen entrada — y railroad-beta acepta la grafía de funciones (sequence(choice(terminal("+"), …))). Los cuatro caen en el mismo dibujo: el desvío por arriba es lo opcional y el bucle por abajo, con la flecha hacia atrás, es la repetición.
El requirementDiagram dibuja requisitos y elementos como cajas de compartimentos: el tipo declarado (requirement, functionalRequirement, performanceRequirement, interfaceRequirement, physicalRequirement, designConstraint) aparece entre comillas angulares encima del nombre, y los campos id, text, risk y verifymethod se convierten en filas — en un element, type y docref. Las relaciones (satisfies, traces, derives, verifies, refines, copies, contains) se escriben a - satisfies -> b o en la forma espejada b <- satisfies - a, y en esta el primer nombre es el destino. Solo contains es línea continua, con el símbolo del lado de quien contiene; las demás son discontinuas con la flecha en el destino. Un nombre con espacio va entre comillas.
El gitGraph dibuja el historial de un repositorio: cada commit avanza en el tiempo, branch nombre abre un carril nuevo y pasa a trabajar en él (como git switch -c), checkout vuelve a otro y merge une los dos. Los atributos llevan dos puntos: commit id: "texto" tag: "v1" type: HIGHLIGHT (también REVERSE), y branch nombre order: 2 cambia el orden de los carriles; cherry-pick id: "…" exige el id de un commit que exista. La forma dice el tipo — disco lleno en el commit común, cuadrado en el destacado, círculo con X en el revertido, anillo doble en el merge y círculo cortado en el cherry-pick —, porque en un tema donde dos tonos de la paleta se parecen solo la forma los separa. LR: (predeterminado), TB: y BT: giran el eje del tiempo. Un checkout/merge de una rama que no existe rechaza el diagrama señalando la línea, en lugar de crear un carril que no pediste.
La familia C4 (C4Context, C4Container, C4Component, C4Dynamic y C4Deployment) también se dibuja, y en ella todo es macro: no hay ninguna flecha en la sintaxis. Cada elemento se convierte en una caja con el tipo entre comillas angulares, el nombre en negrita y la descripción debajo: Person(alias, "Nombre", "Descripción"), System, Container, Component y las variantes Db, Queue y _Ext. En Container y Component el tercer argumento es la TECNOLOGÍA (Container(app, "App", "C++/Qt", "lo que hace")); en los demás ya es la descripción. Las fronteras (Boundary, Enterprise_Boundary, System_Boundary, Container_Boundary y el Node de C4Deployment) abren llave y se convierten en una caja con título, anidadas incluso. El enlace es Rel(a, b, "etiqueta", "tecnología"); BiRel pone flecha en los dos extremos y Rel_Back apunta hacia atrás. El C4Dynamic numera las relaciones en el orden en que aparecen. Las pistas de posición (Rel_U, Rel_D, Rel_L, Rel_R) y los Update…Style se aceptan y se ignoran: la disposición sale del mismo layout que los demás diagramas y el color sale del tema de la nota. Una relación que cita un alias no declarado rechaza el diagrama señalando la línea, en lugar de inventar una caja que no escribiste.
Tablero, gráficos y paquete
En el kanban la indentación es la sintaxis, con dos niveles: el de fuera es el carril y el de dentro es la tarjeta (id[Etiqueta], o solo el texto). El @{ ticket: LN-9, assigned: 'ana', priority: 'High' } tras la tarjeta no entra en su texto: el ticket y el responsable van a un pie propio, y la prioridad (Very High, High, Low, Very Low) se convierte en el color de la franja del borde izquierdo, en una escala de cálido a frío. Todos los carriles terminan en la misma línea, y un carril sin tarjetas sigue apareciendo: es lo que muestra la columna vacía. Este es un tablero dibujado, para explicar un flujo dentro de una nota; el tablero en el que se trabaja, con tarjetas que se arrastran, es el panel Tareas de la propia aplicación.
El xychart (xychart-beta) dibuja barras y líneas sobre dos ejes: x-axis "Título" [ene, feb, mar] da las categorías —un nombre con espacio o coma va entre comillas—, y-axis "Título" 0 --> 100 fija la escala y cada bar [10, 40, 90] o line [20, 30, 80] añade una serie, con un valor por categoría, en el orden en que fueron declaradas. Una serie con más o menos valores rechaza el diagrama señalando la línea: las barras se deslizarían a otras categorías y el gráfico pasaría a afirmar otra cosa. Sin y-axis, la escala sale de los datos y empieza en cero cuando estos no bajan de ahí —empezar en el menor valor exagera la diferencia entre las barras, y nadie eligió eso—; con el rango declarado, un valor fuera de él se rechaza en vez de desbordar el plano. El x-axis también acepta un rango continuo (0 --> 100), y sin él las categorías son los índices. Dos series de barras aparecen una al lado de la otra, y no superpuestas como en mermaid: superpuestas, la de atrás desaparece. El xychart-beta horizontal todavía no se dibuja y mantiene el bloque de código, porque dibujarlo en vertical entregaría el gráfico transpuesto. Una serie puede tener nombre (bar "Abiertos" [10, 40], line "Cerrados" [20, 30]): los nombres forman una leyenda sobre el plano, con la misma forma de la serie — barra llena, línea con punto —, porque solo el color no las separa. Y en una serie de línea el valor puede llevar etiqueta ([540 "PaLM", 65]), dibujada encima del punto; en las barras la etiqueta se ignora, como en Mermaid.
El radar (radar-beta) dibuja el perfil de una o más curvas sobre ejes que salen del centro: axis a["Etiqueta"], b, c declara los ejes —la línea puede repetirse— y curve x["Nombre"]{80, 60, 90} da un valor por eje, en el orden en que fueron declarados; la forma con nombre ({a: 80, c: 90, b: 60}) también vale. Atención al sentido: el primer eje apunta hacia arriba y el giro es horario. max y min fijan la escala —sin max sale del mayor valor leído— y un valor fuera de ella rechaza el diagrama señalando la línea, en vez de recortarse; ticks cambia el número de anillos, graticule circle los vuelve redondos y showLegend false quita la leyenda. Una curva con más o menos valores que ejes también se rechaza: no sería un dibujo incompleto, sino otro dibujo.
El packet (packet-beta) dibuja el mapa de bits de un paquete: cada campo es 0-15: "Etiqueta", y el rango es cerrado en ambos extremos —0-15 son dieciséis bits—. Un solo bit se escribe 4: "Etiqueta", y la forma relativa +16: "Etiqueta" toma los dieciséis siguientes, para no tener que recontar todo al insertar un campo en medio. Los campos deben ser contiguos: un hueco o un solapamiento rechaza el diagrama señalando la línea, porque cualquiera de los dos desplazaría en silencio todo lo que viene después. La fila tiene 32 bits, y un campo que cruza el salto aparece en las dos, con la etiqueta en la parte más ancha; los números sobre la cuadrícula marcan dónde empieza cada campo, más el último bit de cada fila.
Cuadrícula, áreas, arquitectura, flujo y ZenUML
El block (block-beta) dibuja una cuadrícula de cajas, y en ella la posición es el orden en que las escribiste: columns 3 fija cuántas columnas tiene la cuadrícula —sin él, todo queda en una sola fila—, cada caja acepta las mismas formas del diagrama de flujo (a["Etiqueta"], b(("círculo")), c{"rombo"}), a:2 hace que la caja ocupe dos columnas y space (o space:2) deja un hueco. El block:id … end anida una cuadrícula dentro de otra, con su propio columns, y se convierte en una caja alrededor. Las flechas son las del diagrama de flujo (a --> b, con etiqueta en a -- "texto" --> b), pero aquí solo citan bloques ya declarados: una flecha a un nombre que no existe rechaza el diagrama señalando la línea, en vez de inventar una caja en una celda que no escribiste. El hueco entre columnas crece hasta que quepa la etiqueta de la flecha, para que no toque la caja vecina. La flecha de bloque (a<["Ida"]>(right)) es una caja con forma de flecha: las direcciones van entre paréntesis (right, left, up, down, o x para las dos horizontales e y para las dos verticales) y se combinan ((x, down)); una dirección inventada rechaza el diagrama señalando la línea, en vez de convertirse en una flecha cualquiera.
El treemap (treemap-beta) dibuja un mapa de áreas: cada rectángulo tiene un área proporcional a su valor, y la indentación anida, con profundidad libre. La hoja declara el valor ("Nombre": 12) y la sección no declara nada —su valor es la suma de los hijos, y un total propio permitiría un rectángulo que miente sobre sus propias partes, así que eso rechaza el diagrama señalando la línea—. Un nombre con espacio o dos puntos va entre comillas; classDef y :::clase dan color. La disposición es la squarified, que mantiene los rectángulos cerca del cuadrado: cortar siempre en el mismo eje produciría tiras que no se comparan a ojo, y comparar áreas es lo único que hace este tipo. La etiqueta y el valor solo aparecen cuando caben enteros dentro del rectángulo: cortados por el borde no informarían nada.
El architecture (architecture-beta) dibuja servicios y los enlaces entre ellos: service api(server)[API] declara un componente, group nube(cloud)[Nube] abre una frontera, el sufijo in nube mete el servicio dentro de ella (los grupos se anidan) y junction j crea una esquina para doblar un enlace. El lado del enlace es lo que decide la posición: a:R -- L:b toca la derecha de a con la izquierda de b, es decir, pone b a la derecha de a; valen L, R, T y B, y la punta aparece del lado del < o del > (-->, <-->, o -- sin punta). El sufijo {group} en un extremo manda la línea a la frontera del grupo, en lugar de la caja de dentro. Los iconos son los cinco que Mermaid trae incorporados —cloud, database, disk, internet y server—, y cualquier otro nombre rechaza el diagrama señalando la línea y diciendo cuáles existen. Los demás (logos:aws-lambda y parecidos) vienen de Iconify y solo aparecen donde quien publica la página registra el paquete por JavaScript, cosa que ni GitHub hace: aceptarlos aquí daría un dibujo que no se repite en ningún otro sitio. El align row a b c (o align column) pone los miembros citados en la misma fila — o en la misma columna —, y un nombre que no existe rechaza el diagrama señalando la línea, en vez de dejar la disposición como estaba sin decir por qué.
El sankey (sankey-beta) dibuja un diagrama de flujo en el que el grosor de la cinta es el valor: el cuerpo no tiene ninguna flecha — es un CSV de tres columnas (origen,destino,valor), un enlace por línea, y repetir un nombre en los dos extremos es lo que encadena el flujo. Una etiqueta con coma va entre comillas, y una comilla dentro de ella se escribe duplicada ("Costo ""fijo"""); el mismo par origen/destino repetido se suma. La barra de un nodo tiene la altura del mayor entre lo que entra y lo que sale, para que las cintas de salida de un nodo que distribuye más de lo que recibe no se desborden. Las columnas salen del camino más largo hasta cada nodo, y lo que no tiene salida va a la última columna. Un valor menor o igual a cero, un enlace de un nodo a sí mismo y un ciclo rechazan el diagrama señalando la línea — en un ciclo no existe camino más largo, y cortar un enlace para poder dibujar mostraría un flujo que no escribiste. Aquí no hay title: el cuerpo es CSV puro, y aceptarlo dibujaría bien en LightNote y daría error de sintaxis en Mermaid.
El zenuml es otra sintaxis para el mismo dibujo — un diagrama de secuencia — escrita como código en vez de flechas. La llamada síncrona nombra solo el destino (Tienda.registrar(item)) y el remitente es el bloque que la envuelve: dentro de Tienda.registrar() { Stock.reservar() }, quien llama a Stock es la Tienda. En el nivel exterior quien llama es el iniciador — @Starter(Ana) lo nombra, y sin él entra un User con monigote, que solo aparece si alguna llamada lo necesita. El mensaje asíncrono es A->B: texto (punta abierta, nadie espera) y A->B.metodo() es la llamada síncrona con el remitente escrito a mano. {} anida, return x vuelve a quien hizo la llamada que lo envuelve (un if en medio no cambia eso), x = A.m() es la otra grafía de la misma respuesta, new A(args) crea y // comentario se vuelve una nota encima del mensaje siguiente. Los bloques son if/else if/else, while/for/forEach/loop, opt, par y try/catch/finally — y } else { continúa el mismo marco, con un divisor, en vez de abrir otro. @Actor dibuja el monigote; los demás anotadores (@Database, @Boundary…) se vuelven estereotipo en la etiqueta («Database» Stock), porque sus iconos no se dibujan aquí — el nombre sigue apareciendo, que es lo que importa. Un nombre con espacio va entre comillas. Atención a dónde va a parar este bloque: en Mermaid el zenuml es un diagrama externo que la página debe registrar por JavaScript — GitHub no lo hace, así que la misma nota que dibuja aquí allí aparece como bloque de código.
Y cuando LightNote no puede leer un diagrama, dice por qué y en qué línea, justo debajo del bloque — un tipo que aún no dibujamos no genera aviso, porque ahí no hay nada mal en lo que escribiste.
Matemáticas y química (LaTeX)
Fórmulas (LaTeX)
Matemáticas (LaTeX). $E = mc^2$ en medio de la frase y $$…$$ en bloque se convierten en fórmula dibujada en el modo de lectura, en el archivo exportado y en las respuestas de Preguntar a las notas. El dibujo sigue el tema de la nota. En la edición con formato la fórmula en bloque también se dibuja, con la barra del bloque encima (editar, copiar, eliminar); y la fórmula dentro de la frase también, asentada en la línea del texto. Para editarla, haz doble clic en ella o pulsa Ctrl+Enter: se abre en la misma barra. Y Retroceso justo después la devuelve como $…$, para editarla en el sitio. En el editor de texto todo sigue siendo texto: usa Ctrl+E para ver la fórmula. Para empezar, usa Insertar → Fórmula (LaTeX) en la barra de la nota. La fórmula se dibuja con la fuente matemática del sistema —en Windows, Cambria Math—, y no con la fuente del cuerpo de la nota: de ahí salen la cursiva matemática, los símbolos que una fuente de texto no tiene y los paréntesis y raíces que crecen con el contenido. Sin ninguna fuente matemática instalada, LightNote vuelve a la fuente de la nota y dibuja esos signos por su cuenta.
El subconjunto cubre letras griegas, operadores y relaciones, el exponente ^ y el índice _, \frac, \sqrt (con índice), \left…\right con delimitadores que crecen, \sum/\prod/\int con límites, funciones romanas (\sin, \log…), \text/\mathrm/\mathbf/\mathbb los alfabetos \mathcal/\mathfrak/\mathsf/\mathtt/\boldsymbol, \binom, \overset/\underset, \bmod/\pmod, la familia \big…\Bigg los espacios \,/\quad/\hspace, los entornos cases, matrix/pmatrix/bmatrix/vmatrix, aligned, gathered y array (con | y \hline), \overbrace/\underbrace, \begin{CD} y \begin{tikzcd} (diagrama conmutativo), \xrightarrow, \boxed/\cancel, \not, \substack, \|/\middle, \smash, \textcolor/\color (el matiz es suyo; la claridad se ajusta al tema de la nota), \colorbox/\fcolorbox (el fondo sale en el color que escribió, y el texto se ajusta a él), \tag (la etiqueta de la ecuación, pegada al final; en un align, una por línea, alineadas en una columna), \phantom, \displaystyle y las formas infijas \over/\atop/\choose. La cobertura va más allá de esta lista: también entran las variantes de comparación (\leqslant), la lógica (\land, \vDash), los operadores de estadística (\argmax), las flechas dobles que se estiran (\xRightarrow) y los corchetes dobles (\llbracket). También valen los conmutadores de fuente del TeX antiguo —{\rm d}x, {\bf A}, {\cal L}— y la notación de Dirac (\braket{\phi|\psi}). Las macros definidas en la propia fórmula (\newcommand, \def) valen hasta el final de ella, los símbolos Unicode escritos directamente (x ∈ ℝ) valen como sus comandos, \text{…} acepta matemáticas entre $…$, y una fórmula suelta puede tener varias líneas con \\. \label{eq:nombre} dentro de un bloque $$ numera la ecuación en el modo de lectura, con el mismo contador que {#eq:nombre}, y \eqref{eq:nombre} en el texto se convierte en el número entre paréntesis. La grafía de LaTeX también vale: \(…\) en la frase y \[…\] en bloque se dibujan igual — es la forma que suele emitir ChatGPT. Lo que no sepa dibujar sigue apareciendo como el texto que escribiste.
Diagrama conmutativo con flecha diagonal (\begin{tikzcd}). \begin{CD} solo dibuja flechas horizontales y verticales; el triángulo conmutativo — el diagrama más común que existe — necesita la diagonal. Cada objeto es una celda (& las separa, \\ cambia de fila) y la flecha se escribe dentro de la celda: A \arrow[r, "f"] \arrow[rd, "g"'] & B. La dirección es una secuencia de r/l/u/d (rd es la diagonal, rr son dos columnas), y \ar y los atajos (\rar, \dar, \drar) son la misma flecha. La etiqueta entre comillas queda encima de una flecha que va a la derecha; ' (o swap) la pone al otro lado, que es lo que dice si el nombre cae dentro o fuera de la figura. También valen hook (inclusión), two heads (sobreyección), dashed, Rightarrow y equal. La curvatura (bend left) y las opciones que este subconjunto no dibuja se rechazan diciendo el nombre: dibujar dos flechas curvas como rectas las pondría una sobre otra, afirmando que hay una sola.
Un $ de prosa no se convierte en fórmula: en cuesta $5 y $10 el precio sigue siendo precio, porque la apertura no puede ir seguida de un espacio ni el cierre precedido de uno ni seguido de una letra (es lo que impide que PATH=$dir1:$dir2 se convierta en fórmula) — y $x$ entre comillas invertidas sigue siendo código. Cuando la fórmula no sale, LightNote dice por qué: una línea debajo del bloque $$, y una sola vez por mensaje distinto cuando la fórmula está dentro del texto, nombrando el comando o el delimitador que no pudo leer. Si la fórmula se pegó con la grafía \(…\) y prefiere $…$, el elemento Formatear → Normalizar fórmulas a $ reescribe la selección (o toda la nota) — en el editor de texto, que es donde los caracteres de la nota están en pantalla.
Química: mhchem y SMILES
Química. La notación de mhchem también se dibuja: \ce{2 H2 + O2 -> 2 H2O} coloca los subíndices por sí solo, -> y <=> se convierten en flechas (con rótulo en ->[\Delta]), Na+ y SO4^2- se convierten en carga, (aq) y (l) salen rectos y pegados, ^{227}_{90}Th alinea el isótopo, y v/^ marcan precipitado y gas liberado. \pu{123 kJ//mol} escribe la magnitud con su unidad: la barra doble se convierte en fracción. El equilibrio desplazado (<=>> y <<=>) dibuja la flecha larga en el sentido que la reacción favorece, los enlaces escritos por extenso (\bond{~}, \bond{~-}, \bond{...}) superponen los trazos como en los libros, y la notación de Kröger–Vink (O''_{i,x}, Li^x_{Li}) pone la carga efectiva en el superíndice. La variable sale en cursiva y el elemento, recto: en NO_x la x es variable, en Fe^{II} el II es el estado de oxidación.
Estructuras en LaTeX (\chemfig). \ce escribe la fórmula; \chemfig{...} dibuja el esqueleto dentro de la propia fórmula — \chemfig{H_3C-[:30]CH_2-[:-30]OH} es el etanol y \chemfig{*6(-=-=-=)} el benceno. El ángulo es tuyo: [:30] es absoluto, [::45] es relativo al enlace anterior y [3] cuenta octavos de vuelta. Los enlaces son -, = y ~, y las cuñas de la estereoquímica son >, <, >:, <:, >| y <| — la punta estrecha queda en el estereocentro. Los paréntesis cuelgan una rama y *6(...) cierra un anillo regular (**6(...) dibuja el círculo aromático); desde un vértice del anillo, un enlace sin ángulo escrito apunta hacia fuera. El símbolo del elemento sale recto y el trazo se detiene antes de la letra. Los nodos de partida y llegada de chemfig ([,,1,2]) se rechazan diciendo el motivo: eligen a qué parte de la etiqueta se une el enlace, e ignorarlos dibujaría otra estructura. El anillo fusionado va dentro del cuerpo del primero, justo después del enlace que ambos comparten, y el interior escribe un enlace menos: ese lado ya está dibujado. El naftaleno es \chemfig{*6(-=-*6(-=-=-)=-=)}.
Estructura química (SMILES). Un bloque ```smiles con una línea en SMILES (CC(=O)Oc1ccccc1C(=O)O) se dibuja como esqueleto en el modo de lectura, en la edición con formato, en el archivo exportado y en las respuestas de Preguntar a las notas. Es el complemento de \ce: aquel escribe la fórmula, este dibuja la molécula. Vale la convención del esqueleto: el carbono no se escribe (es el vértice), el heteroátomo sale con el símbolo en el acento del tema y el anillo aromático (c1ccccc1) recibe el círculo discontinuo por dentro. La estereoquímica se dibuja: [C@H] y [C@@H] se convierten en cuña —llena cuando el enlace viene hacia delante, rayada cuando va hacia atrás, con la punta estrecha en el estereocentro—, y F/C=C/F y F/C=C\F salen trans y cis tal como se escribieron. Lo que no tiene representación en el papel (las formas nombradas no tetraédricas, como @SP1) se acepta, y la leyenda dentro de la imagen avisa de que fue declarado y no dibujado. Un bloque dibuja una estructura: un espacio en medio de la línea se rechaza, porque en SMILES termina la estructura. Cuando no se puede leer, LightNote dice qué está mal (el paréntesis, el número de anillo, el elemento) y el bloque de código queda tal como lo escribiste. Para empezar, usa Insertar → Estructura (SMILES) en la barra de la nota.
Calendario en la nota
Un bloque ```calendar dibuja un calendario dentro de la nota, en el modo de lectura, en la edición con formato y en la impresión. Es una tabla de verdad, no una imagen: se puede seleccionar, copiar (pegada en Word o Excel conserva las celdas) y encontrar un evento con Ctrl+F. La primera línea dice qué calendario: un mes (2026-09) muestra el mes; una fecha (2026-09-24) muestra la semana que la contiene, con los días en las columnas y las horas en las filas; y week muestra una semana sin fechas: el horario de clases, la rutina, los turnos. Cada línea siguiente es un evento o una opción, y las que empiezan por %% son comentarios. Para empezar, usa Insertar → Calendario en la barra de la nota (mensual, semanal o semanal sin fechas, ya rellenos con ejemplos) o escribe /calendar.
Mes. El evento empieza por el número del día: 15: Defensa de tesis marca un día, 22-26: Congreso marca un intervalo, y 24: sin texto solo resalta el día. El texto del intervalo aparece en su primer día y, cuando cruza a la semana siguiente, también al comienzo de la fila siguiente.
```calendar
2026-10
15: Defensa de tesis
22-26: Congreso
```
Semana. El evento empieza por el nombre del día —mon, tue,thu o mon-fri— seguido de la hora: mon 09:00-10:30: Reunión. La hora se escribe 09:00, 9h30 o solo 9; sin ella, el evento va a la fila de arriba, la de todo el día (fri: Entrega). Como el día va por el nombre, copiar el bloque a la semana siguiente cambia solo la primera línea. days: mon-fri elige las columnas, en el orden de la lista; hours: 8-18 fija el rango (sin ella, de 8 a 18, ampliado para que quepan los eventos; con ella, el evento fuera del rango se rechaza); y step: 30 da los minutos de cada fila. Un evento largo escribe el texto, con la hora, solo en su primera fila y colorea las siguientes.
```calendar
2026-10-14
days: mon-fri
mon,wed 09:00-10:30: Reunión de equipo
tue 14-16: Estudio
tue 16-17: Repaso
fri: Entrega del proyecto
```
En las tres formas, title: cambia el título de la barra (en la semana sin fechas, la barra solo aparece con él), week: monday empieza la semana el lunes (el valor por defecto es el del idioma de la nota; con days:, manda el orden de la lista) y today: no quita la marca de hoy; en la semana sin fechas, la marca es el día de la semana. Los eventos que se tocan reciben colores distintos, para que no parezcan uno solo. El idioma de los meses y los días es el de la nota (la clave lang del frontmatter), y el fin de semana sigue la costumbre de ese idioma. El día de hoy se marca solo en pantalla: en papel y en PDF no, porque quien lo lee lo hace otro día. Para cambiar el calendario, pulsa Ctrl+Enter sobre él y edita la fuente en la barra — escribir en una celda no cambia nada, porque la tabla se genera a partir de la fuente. Con la barra abierta, la tabla se rehace mientras escribes; cerrar la barra aplica el cambio, y Ctrl+Z deshace el cambio entero de una vez. Al exportar (Word, OpenDocument, HTML, LaTeX, Markdown de GitHub), el calendario se convierte en una tabla normal con el título. Cuando la fuente no se puede leer como calendario, LightNote indica la línea y el fragmento, y el bloque de código queda como lo escribiste. Dentro de una cita o de una lista, el calendario aparece en el modo de lectura y queda como código en la edición con formato.
Numeración y referencia cruzada
Ponga una etiqueta en la figura y ganará un pie numerado en el modo de
lectura: {#fig:ciclo} se vuelve la
imagen seguida de Figura 1 — Ciclo del agua. La tabla lleva su etiqueta
en una línea que empieza con dos puntos, justo debajo:
: Muestras recogidas {#tbl:muestras}. Y la ecuación en bloque
recibe el número en el margen derecho cuando el $$ de cierre trae
{#eq:masa}. Esta función viene desactivada: actívela en Ajustes → Funciones → Académico → Numeración y referencia cruzada. LightNote es un editor sencillo que además da cuenta de una tesis, y quien no escribe trabajos académicos no debe pagarlo con menús y opciones que no usa.-numeracao
Después basta apuntar: @fig:ciclo se vuelve Figura
1, [@fig:ciclo] se vuelve (Figura 1) y
-@fig:ciclo se vuelve solo el número. Es la misma gramática de la
cita, a propósito. Insertar una figura en el medio renumera todo solo: la
cuenta es del documento, en el orden en que se lee.
Numerar es opcional, por la etiqueta: una imagen sin
{#fig:…} sigue exactamente como hoy. Y una etiqueta que no
existe queda como usted la escribió, igual que la cita: es la pista de que
hay una referencia rota.
Secciones numeradas (ABNT NBR 6024): declare
section-numbers: true (o numeracao-secoes: true) en
las propiedades de la nota y los títulos ganan el indicativo — 1,
1.1, 1.1.1 —, alineado a la izquierda, separado por un espacio y
sin punto final. Un título con {#sec:metodo} puede señalarse con
@sec:metodo; sin numeración, la referencia se vuelve el
título de la sección.
Solos en una línea, [lista de figuras] y
[lista de tablas] arman las listas que pide la norma, como el
[TOC] hace con el sumario. Todo esto es del modo de lectura
(y del PDF/HTML exportados): en el editor el archivo sigue con lo que usted
escribió, que es lo que permite renumerar sin tocar la nota.
Citas y referencias
Escriba la cita dentro del texto con [@clave]: la clave es la que
la obra tiene en su bibliografía. Al escribir @, LightNote sugiere
las obras que conoce, mostrando autor, año y título; en la nota entra solo la
clave. También valen [@clave, p. 45] (con la página),
[-@clave] (cuando el nombre del autor ya está en la frase) y
[@a; @b] (varias obras a la vez). Esta función viene desactivada: actívela en Ajustes → Funciones → Académico → Citas y bibliografía. LightNote es un editor sencillo que además da cuenta de una tesis, y quien no escribe trabajos académicos no debe pagarlo con menús y opciones que no usa.-citacoes
En el modo de lectura la cita se convierte en texto formateado —
(Silva, 2020, p. 45) — y el token [bibliography] solo en una
línea se convierte en la lista de las obras citadas, en el orden que pide
la norma. En el editor la clave sigue a la vista, porque es lo que usted
edita.
La bibliografía es un archivo de su espacio de trabajo: cualquier
.bib, .ris o .csl.json de la carpeta
cuenta. Eso es lo que hace que viaje junto con las notas por Git o en un
pendrive y siga funcionando en otro equipo. Abrir uno de esos archivos muestra
la lista de obras con la clave de cada una, lista para copiar.
Para traer obras: Herramientas → Bibliografía → Añadir obra por DOI acepta un DOI o un identificador de arXiv y busca el resto solo; y Importar de Zotero lee la biblioteca del Zotero 7 abierto en este equipo (antes marque Preferencias → Avanzado → Permitir que otras aplicaciones de este equipo se comuniquen con Zotero).
La norma es de la carpeta, y la nota puede discrepar. Elija la
predeterminada en Herramientas → Ajustes del espacio de trabajo →
Citas (ABNT, APA 7 o Vancouver); una nota con otro destino declara
citation-style: apa en sus propiedades. Una clave que no existe en
la bibliografía queda como usted la escribió, para que vea cuál
corregir.
Grafo de conexiones
Herramientas › Grafo de conexiones (Ctrl+Alt+G) muestra todas
las notas del espacio de trabajo como un grafo interactivo: cada nodo es una nota
.md, cada línea un wikilink. Los nodos se acomodan solos (física
animada) y se pueden arrastrar; al pasar el cursor se resaltan los vecinos y
se atenúa el resto; al hacer clic se abre la nota. Desplázate para hacer zoom
(los nombres aparecen al acercarte) y arrastra el fondo para desplazar la vista.
En la barra de la pestaña: filtro por nombre (atenúa las notas que no coinciden), un interruptor para las notas huérfanas (sin ningún enlace — mostradas en gris), controles de fuerza (repulsión, distancia y gravedad), ajustar el grafo a la ventana y volver a escanear las notas. Cuantas más conexiones tiene una nota, más grande es su nodo; cada carpeta de primer nivel recibe su propio color.
Notas parecidas. La minibarra Conexiones, dentro de la propia nota, lista los enlaces de entrada, los de salida y las menciones por nombre. Al final está la sección Notas parecidas: notas que hablan de temas cercanos aunque no haya enlace ni palabra en común. Se calcula cuando lo pides (haz clic en Calcular), no en cada cambio de nota, porque recorrer el índice cuesta lectura de disco. Cada línea muestra el nombre, cuánto se parece y el fragmento que motivó la sugerencia: sin esa evidencia no habría forma de juzgarla. No gasta ninguna llamada de IA: usa el índice de significado que ya existe, así que la sección solo aparece con el refuerzo semántico (embeddings) activado en Configuración → General → Funciones.
Tablas (Parquet, CSV, JSON, Excel)
Abrir y consultar
Los archivos .parquet se abren como tabla; .csv,
.tsv y .json se abren como texto, y el menú contextual del
árbol ofrece Abrir como tabla. La lectura es paginada (bajo demanda) mediante
DuckDB, con ordenación (haz clic en el encabezado) y filtrado
empujados al motor. El botón Estructura muestra columnas, tipos, número de
filas y, para Parquet, los row-groups y la compresión. La vista es de solo lectura.
La barra de SQL libre en la parte superior de la tabla acepta cualquier
consulta DuckDB — la vista t representa el archivo abierto. Desde el
menú contextual de una carpeta en el árbol, Abrir carpeta como tabla
lee todos los archivos del mismo formato como una sola tabla; desde el menú de la
tabla puedes exportar la vista actual (CSV/Parquet/JSON), y desde el menú del
árbol, convertir un archivo tabular a otro formato. El SQL libre también está
disponible en el comando query de la línea de
comandos y en el MCP.
Las hojas de cálculo de Excel (.xlsx) se abren como una tabla
de solo lectura con un selector de hojas — un lector ligero, sin necesidad de
instalar Excel.
Hojas de cálculo de Excel
Fiel al archivo. La hoja se muestra con el formato del propio
archivo: números, moneda, porcentajes y fechas siguen el formato definido en
Excel — un valor guardado como 3750.5 con formato de moneda aparece como
3.750,50 €, y un porcentaje sale como 15% en lugar de
0,15. También vienen del archivo la fuente (nombre, tamaño, negrita,
cursiva, subrayado), el color del texto, el color de relleno, los bordes de
cada celda, la alineación, el ajuste de línea, la sangría, el texto girado y el ancho
de las columnas. Los números van a la derecha y el texto a la izquierda, como en
Excel.
Cuando la hoja trae colores propios, la cuadrícula se dibuja sobre fondo blanco: los colores de Excel se eligieron para papel blanco y serían ilegibles sobre el tema oscuro. Un archivo sin formato alguno sigue usando el tema de LightNote. La hoja se abre en el orden en que fue escrita — al pulsar una cabecera se ordena, como en las demás tablas.
Diseño original y zoom. Cuando la hoja usa celdas combinadas, altura de fila propia u oculta la cuadrícula, la pestaña se abre en modo Diseño original (botón de la barra), que reproduce esa geometría como en Excel. El modo rige solo la geometría — color, fuente, bordes y formato numérico valen en ambos — y, mientras está activo, ordenar y filtrar no están disponibles, porque reordenar dejaría la banda combinada en la fila equivocada; desactive el botón para volver a ordenar. Una hoja sin nada de eso se abre en el modo normal. El zoom es el mismo de todas las vistas y está en la barra de estado (vea Espacio de trabajo y ventanas); Ctrl+rueda del ratón también funciona sobre la cuadrícula. Una hoja con formato de Tabla de Excel también aparece coloreada: su estilo está integrado en Excel y no viaja en el archivo, así que la cabecera y las bandas se reconstruyen a partir del tema.
Copiar, filtrar y graficar
Copiar como. En el menú contextual de cualquier tabla de LightNote (Parquet/CSV/JSON, Excel, resultados SQL, Tareas, Bases), la opción Copiar como lleva la selección al portapapeles ya formateada. Tabla con formato (Teams, Outlook…) se pega como una tabla de verdad, con bordes y encabezado, en los programas que entienden texto enriquecido — Teams, Outlook, Word, Excel (donde no hay texto enriquecido, recurre automáticamente a TSV). Los demás se pegan como texto: tabla Markdown (lista para una nota), CSV (con comillas según la RFC 4180), TSV (separado por tabulaciones), HTML (el marcado <table>), JSON, JSONL (un registro por línea), YAML y el submenú Código, que genera un literal listo para pegar en un archivo fuente: Python (lista de diccionarios) o JavaScript / TypeScript (array de objetos). En JSON, YAML y código, las celdas que son números salen sin comillas — pero se conserva el texto original, así que IDs como 007 siguen siendo texto. Ctrl+C sigue copiando en TSV, como antes.
Todas las tablas se comportan igual: Ctrl+F enfoca el filtro rápido ("contiene en cualquier columna"), un contador muestra cuántas filas quedaron y hay Exportar a CSV — también en las hojas .xlsx, en las Tareas y en las Bases. El menú contextual de la cuadrícula sigue ofreciendo Copiar como.
Gráfico del resultado. La barra lateral de la tabla tiene un botón Gráfico (barras, línea o dispersión): la agregación se ejecuta en DuckDB (no sube ninguna fila cruda) y un botón Añadir a la nota del día guarda el gráfico como imagen. El panel Estructura incluye además un perfil por columna: un mini-histograma de las columnas numéricas y los valores más comunes de las demás.
Varios gráficos y tabla dinámica. Para cruzar dos campos y agregar un tercero —y para guardar más de un gráfico por tabla—, mira Área de análisis.
Área de análisis: tabla dinámica y varios gráficos
El gráfico y la estadística
La pestaña de una tabla tiene dos modos, en los botones Datos y Análisis de la barra. Datos es la tabla de siempre; Análisis es un tablero donde conviven cuantos gráficos y tablas dinámicas quieras sobre la misma fuente: cada uno en una tarjeta, con título editable, un botón de engranaje que muestra los selectores y un menú ⋮ (mover, duplicar, quitar).
Estadística de verdad. Además de barras, línea y dispersión, el gráfico hace diagrama de caja: una caja por categoría con los cuartiles, la mediana en trazo grueso y los bigotes en la valla de Tukey (1,5 × IQR), y no en el mínimo y el máximo. Sobre la media de una columna, el selector Error añade el bigote de dispersión: ± desviación típica (que describe los datos), ± error estándar o ± IC 95% (que describen la precisión de la propia media). Los tres solo aparecen con la media elegida, porque "suma ± desviación" no quiere decir nada. La casilla Eje Y log pone la escala logarítmica, para datos que abarcan órdenes de magnitud; si hay valor cero o negativo se ignora con aviso, porque ahí el logaritmo no existe y descartar el punto en silencio haría que el gráfico mintiera. En la dispersión, Tendencia dibuja la recta de regresión con el R², ajustada en la base sobre todas las filas, y no sobre los puntos muestreados que se ven en pantalla. Bajo el dibujo queda una línea de estadística descriptiva de la columna elegida (n, media, desviación, IC 95%, mínimo, cuartiles, mediana y máximo), que es una consulta propia: derivarla de las barras daría la media de las medias, que solo coincide con la media real cuando todos los grupos tienen el mismo tamaño.
Tabla dinámica y totales
Tabla dinámica. Elige los campos que van en Filas y en Columnas (puedes anidar más de uno en cada eje; arrastrar reordena los niveles), el campo en Valor y cómo reducirlo: Suma, Recuento, Recuento de distintos, Promedio, Mínimo o Máximo. Sin campo en Valor se cuentan las filas. También está en la mini-barra lateral de la tabla, junto al Gráfico, para una consulta rápida sin salir de los datos.
La agregación se ejecuta en la base de datos y vuelve ya reducida: no sube ninguna fila cruda, así que un Parquet de decenas de millones de filas sigue siendo viable. Como la consulta es SQL estándar, la tabla dinámica funciona en todas las bases del cliente SQL (SQLite, DuckDB, PostgreSQL, MySQL, SQL Server y Oracle), y no solo en DuckDB como el gráfico.
Totales. Las casillas Totales de fila y Totales de columna añaden la fila y la columna de cierre. En el Promedio el total es ponderado, no el promedio de promedios, que estaría mal cuando los grupos tienen tamaños distintos. El Recuento de distintos no se puede totalizar (la unión de conjuntos distintos no se deduce de la suma de las partes), así que ahí las casillas quedan deshabilitadas, con el motivo en la ayuda emergente, en vez de mostrar un número equivocado.
Dónde se guarda, CSV y agrupar
Dónde se guarda el análisis. En un JSON junto al archivo de datos (ventas.parquet → ventas.parquet.analise.json): un formato abierto que va a Git junto con el dato y viaja con él a un colega. El botón Archivo del análisis abre ese JSON en una pestaña, y vaciar el análisis borra el archivo. Una carpeta entera abierta como tabla no tiene ruta propia, así que ese análisis no se guarda: el botón lo dice. Cada tarjeta tiene además Añadir a la nota del día: el gráfico va como imagen y la tabla dinámica como tabla Markdown, que en la nota sigue siendo texto para copiar y editar.
En un CSV, un solo gesto y una salida cuando el separador engaña. Abrir como tabla abre con DuckDB, con SQL libre, gráfico, tabla dinámica y área de análisis. A veces el separador no se reconoce (suele ocurrir con filas de distinto número de columnas) y la tabla llega con una sola columna, con la línea entera dentro. Cuando pasa, aparece una franja sobre la tabla que dice cuántas columnas parece tener el archivo y ofrece la lectura tolerante: lee línea a línea sin exigir columnas iguales —es la misma lectura que usan la búsqueda y la IA— y filtra y ordena, pero no tiene SQL libre, gráfico ni tabla dinámica. Para un texto aún sin guardar, o con un delimitador elegido a mano, usa Ver → Ver como archivo delimitado….
Agrupar por patrón. En una columna de fechas o de códigos los valores distintos son casi tantos como las filas, y agrupar por ellos no dice nada. La máscara de patrón cambia cada letra por A y cada cifra por N, dejando el resto: 2027/10/10 pasa a NNNN/NN/NN. Así millones de filas se reducen a dos o tres formas, y lo que se escapa de ellas es justo el dato sucio (la fecha que llegó como 10-10-2027, el código sin el prefijo). En el gráfico es la casilla Patrón junto al eje X; en la tabla dinámica, clic derecho sobre la pastilla de un campo (es por campo, para cruzar la forma de un código con una dimensión normal); y en el panel Estructura los patrones más comunes aparecen bajo los valores más comunes de cada columna. El cálculo se ejecuta en la base de datos. En SQLite y en el ODBC genérico la opción queda deshabilitada con el motivo: falta la función de texto que usa la máscara.
PDF e imágenes
Los archivos .pdf se abren en un visor nativo (Qt6::Pdf, sin dependencias pesadas), renderizado en la CPU y sin WebEngine. Las imágenes se abren en la vista de imagen; los GIF animados se reproducen en la vista animada.
La barra de la pestaña ofrece seis paneles laterales, uno cada vez: Índice (el sumario guardado en el propio archivo; cuando el PDF no lo trae, el botón queda desactivado y lo explica), Miniaturas (las páginas de un vistazo, renderizadas al desplazarte), Buscar, Enlaces, Propiedades (título, autor, fechas, tamaño de página y del archivo) y Resaltados (los fragmentos que resaltaste, en orden de lectura).
Buscar (Ctrl+F) recorre todo el documento: las coincidencias se resaltan en las páginas y se listan con el texto que las rodea, y F3 / Shift+F3 pasan de una a otra. El barrido es progresivo, así que la lista crece mientras se recorre el documento.
El campo de página acepta el número o la etiqueta impresa: en un documento cuyo prefacio está numerado en romanos, escribir 1 lleva a la página impresa "1", no a la primera hoja. El botón de modo de página alterna entre desplazamiento continuo y una página a la vez.
Un PDF protegido con contraseña pide la contraseña al abrirlo (hasta tres intentos); cancelar simplemente no abre la pestaña. Dentro de la misma ejecución de LightNote no se vuelve a pedir: la aplicación reabre la pestaña por su cuenta cuando la libera por inactividad, y sería ella misma creando la molestia. Si marca "Recordar la contraseña de este archivo" en el propio aviso, también vale en las próximas ejecuciones: queda protegida por Windows (solo para usted, solo en este equipo), nunca va al Git ni a la nube y no se incluye en la exportación de configuración. Para borrarlas todas: Configuración → Funciones → Contraseñas de PDF. Un PDF protegido no se reabre solo al iniciar la aplicación: en vez de encadenar avisos de contraseña antes de mostrar la ventana, espera a que usted lo abra.
Desde el menú de acciones de la barra: copiar el texto de la página, exportar el texto de todo el documento, copiar o guardar la página como imagen y enviar la página a la nota del día. El panel Enlaces existe porque el componente PDF de Qt sigue por sí solo los enlaces internos, pero ignora los externos: es ahí donde se abre una dirección web, con confirmación.
Resaltar. El botón Resaltar activa el marcador: arrastra sobre el texto de la página y el fragmento queda resaltado; la flecha de al lado elige el color. El resaltado se ancla al texto, no a un rectángulo: por eso sigue al zoom y al modo de página sin salirse de sitio, y por eso no funciona en un PDF escaneado, que no tiene capa de texto (la aplicación lo dice en vez de no hacer nada). En el panel Resaltados, hacer clic salta a la página y el menú contextual anota, copia el fragmento o lo borra. En el menú de acciones de la barra, Copiar los resaltados y Guardar los resaltados como nota… escriben la ficha de lectura en Markdown: cada fragmento en una cita y, por página, un enlace que abre el PDF ahí (articulo.pdf#page=12). El precio: los resaltados se guardan en un archivo junto al PDF (articulo.pdf.highlights.json, texto legible y versionable con Git) y no dentro de él: por eso aparecen en LightNote y no en otro lector de PDF. Si el archivo se sustituye por otra versión, el resaltado que perdió su sitio se marca como tal en lugar de pintarse sobre la frase equivocada.
Limitación: fuera del marcador no hay selección de texto con el ratón, porque el componente PDF de Qt no la ofrece. Para llevarte el contenido, usa "copiar el texto de esta página", la exportación del documento o el propio resaltado.
Imágenes: marcar una captura
Las herramientas
Una imagen se abre en una pestaña con barra propia: además de girar, reflejar y ampliar, trae las herramientas de marcado — el camino de hacer una captura, señalar lo que importa y llevárselo a la documentación. Y no hace falta tener una captura para empezar: Nuevo → Nueva imagen en blanco crea una hoja blanca .png en la carpeta marcada y la abre ya con el Lápiz en la mano: Mover, que es lo predeterminado al abrir una imagen, no tendría aquí nada que arrastrar.
La herramienta inicial es Mover: arrastrar sigue moviendo la imagen, como siempre. Seleccionar elige una parte — arrastre para crearla, arrastre desde dentro para desplazarla y use los tiradores de las esquinas y los bordes para redimensionar; Esc deselecciona y Supr borra el contenido de la región. En el modo Mover, Shift+arrastrar también selecciona. En cualquier herramienta, el botón central del ratón mueve la imagen.
El Cuentagotas toma un color de la propia imagen: el botón izquierdo lo lleva al color del borde y el derecho al de relleno. Lee de la imagen ya marcada, así que también sirve para repetir el color de una marca recién hecha.
Las demás dibujan: Rectángulo, Elipse, Flecha, Línea, Resaltado (translúcido, como un marcador), Lápiz (trazo libre), Pincel, Paso numerado (que se numera solo — 1, 2, 3...), Texto, Difuminar y Foco (oscurece todo excepto la región elegida). Al dibujar, Shift fija cuadrados/círculos y ángulos de 45°.
Colores, grosor y difuminar
Son dos colores, en dos botones: el del borde (que también es el del trazo y el de la etiqueta) y el de relleno, que puede ser ninguno. Sin relleno, el rectángulo y la elipse salen solo de contorno, y el paso numerado y el texto usan el color del borde como fondo, con la etiqueta en blanco o negro — el que contraste. Si elige un relleno, este pasa a ser el interior de la forma y el fondo de la etiqueta, y el borde pasa a ser el color del texto.
El Pincel pinta con el relleno, en una marca del tamaño del grosor — redonda o cuadrada, con el botón junto al grosor. Un solo clic ya deja la marca. Con el relleno blanco es la goma de borrar: tapa lo que haya debajo.
El grosor vale para el trazo, para el tamaño de la etiqueta y para el tamaño del bloque del difuminado; se atenúa en las herramientas que lo ignoran. El color y el grosor se recuerdan entre sesiones. Ctrl+Z y Ctrl+Y deshacen y rehacen las marcas, y Limpiar marcas las borra todas de una vez (también reversible).
Difuminar es para ocultar (un token, un correo, una ruta). Mientras la pestaña está abierta el marcado es reversible, pero al guardar o copiar los píxeles de esa región se destruyen de verdad: el archivo que sale no guarda el original en ninguna parte.
Recortar, pegar, girar y capturar
Tres operaciones tienen nombres parecidos y hacen cosas distintas. Cortar (Ctrl+X) copia la selección al portapapeles y borra la región, pintándola con el color de relleno (blanco cuando no hay) — y la selección se queda donde está, de modo que Pegar justo después devuelve la pieza exactamente al lugar de donde salió, flotando: así se mueve un trozo de la imagen. Supr es cortar sin copiar. En cambio Mantener solo la selección, en el menú Imagen, hace lo contrario: se queda con la región y tira el resto, cambiando el tamaño de la imagen.
El resto de la familia: Copiar lleva la imagen marcada o solo la selección; Pegar trae la imagen del portapapeles como un pegado flotante — muévalo y redimensiónelo con los mismos tiradores y haga clic fuera (o pulse Enter) para guardarlo, Esc lo descarta; y Ctrl+A (o Ctrl+T) selecciona toda la imagen. También están Guardar (escribe las marcas en el propio archivo), Guardar como... y Enviar a la nota del día, que guarda el PNG en Anexos/ e inserta el ![]() en la nota. Mientras haya marcas sin guardar la pestaña conserva el asterisco, y cerrarla pregunta si quiere guardar.
El botón Imagen reúne lo que actúa sobre la figura entera: girar, reflejar, redimensionar por porcentaje, reducir a 1600 / 1200 / 800 px de ancho (una captura nace demasiado grande para la documentación), recortar bordes de color uniforme, añadir margen, sombra paralela y grabar las marcas en la imagen — esto último convierte las marcas en píxeles al momento, que es lo que permite difuminar sobre una marca. Redimensionar lleva las marcas y el grosor del trazo consigo.
Para capturar la pantalla sin salir de LightNote: Capturar pantalla... en el menú de la bandeja (o Ctrl+Alt+P) congela el escritorio, arrastra para elegir el área (Esc cancela) y el recorte se abre en una pestaña nueva, listo para marcar.
Limitaciones: una marca ya dibujada no se mueve ni se edita — deshágala con Ctrl+Z y vuelva a hacerla; los GIF y WebP animados se abren en la vista de animación, que no tiene marcado; y un .svg se rasteriza al leerlo, así que guardar pide un destino en PNG.
Páginas HTML (.html)
Un .html abierto en el árbol se convierte en una pestaña de vista previa con un motor de maquetación de verdad: flexbox, bloques flotantes, posicionamiento, media queries, degradados, variables CSS y selectores CSS3. Es lo que hace que un informe moderno —de esos que genera una IA, con tarjetas de indicadores, tabla y gráfico— se vea como en el navegador en lugar de quedar en un muro de texto.
El texto es seleccionable: arrastre para seleccionar, haga doble clic para tomar una palabra, Ctrl+A selecciona toda la página y Ctrl+C copia (el menú contextual ofrece Copiar y Seleccionar todo).
La barra superior trae el Índice (los títulos de la página; haga clic para saltar) y Buscar (Ctrl+F — resalta todas las coincidencias, F3 y Shift+F3 se mueven entre ellas, Esc cierra). El zoom salió de la barra de la pestaña: está en un solo lugar, la barra de estado, como en todas las vistas (vea Espacio de trabajo y ventanas).
Exportar PDF pagina la página en A4 con el texto vectorial — el PDF sigue siendo buscable y el texto, seleccionable. La pestaña también sigue el archivo en el disco: si regenera el informe, se actualiza solo sin perder la posición de lectura. Y una página que no eligió sus propios colores sigue el tema de la aplicación; la que definió los suyos se muestra tal como fue diseñada.
Los enlaces funcionan: un enlace a otro archivo de la misma carpeta abre ahí mismo, #ancla desplaza hasta la sección y una dirección web abre en su navegador.
Lo que no hace es JavaScript ni red — no se descarga nada. Cuando la página depende de eso (un script, <canvas>, <iframe> o un recurso remoto), aparece una franja con Abrir en el navegador. Consejo para informes: pida a la IA un HTML sin JavaScript y sin CDN, con el gráfico en SVG incrustado — así se abre completo aquí dentro.
Aun así, algunas cosas responden al clic, sin ejecutar ningún script: una caja <details> se abre y se cierra desde su encabezado (y la barra suma Expandir todo cuando la página tiene alguna), un conjunto de pestañas cambia el panel visible, y hacer clic en el encabezado de una tabla ordena las filas — volver a hacer clic en la misma columna invierte el orden, y una columna de números se ordena por valor, no como texto. Cuando el par pestaña→panel no es inequívoco, no se cambia nada: la página queda tal como vino.
Dos ajustes ocurren solos, porque el motor no los tiene: display:grid y gap se convierten en el flexbox equivalente, y el <svg> incrustado se dibuja. box-shadow se ignora. Para volver al visor antiguo, desmarque Visor de HTML con maquetación completa en Configuración → General → Funciones.
Imprimir
Archivo → Imprimir… (Ctrl+P) abre una vista previa paginada: la hoja aparece tal como va a salir, con los márgenes, el salto de página y la numeración. El botón de imprimir está dentro de ella, junto al zoom, la navegación entre páginas y la configuración de papel. Se imprimen la nota, el código, la página HTML, la imagen y el PDF abierto; en las demás pantallas el elemento queda atenuado diciendo por qué. El mismo botón está en la barra de la propia pantalla: en la nota, junto al de exportar; y en el código, en el PDF, en la imagen y en la página HTML, en la barra de cada uno.
Lo que llega al papel es lo mismo que muestra el modo de lectura: transclusión resuelta, numeración de figuras en su sitio y el comentario privado (%%…%%) fuera. Con un tema de contenido oscuro la hoja sale en papel blanco — una página negra gastaría tinta y desentonaría con cualquier documento entregado a alguien. Los márgenes son de 20 mm a los lados y 15 mm arriba y abajo, y el pie de página lleva Página X de Y. En la vista previa, el botón Márgenes alterna entre los márgenes del documento y el mínimo que alcanza la impresora; en un PDF y en una imagen empieza en el mínimo, porque ahí el archivo ya trae su propio margen. A su lado, Tema cambia los colores de lo impreso: el valor por omisión es automático (es el que convierte un tema oscuro en papel blanco), y la lista ofrece los temas claros del catálogo y los suyos — quien lee en Dracula Dark puede imprimir en Dracula Light, el mismo lenguaje de color hecho para papel. Los oscuros quedan fuera porque en papel pintarían la hoja entera. El tema que ya está en uso aparece marcado (en uso) en la lista: elegirlo no cambia la hoja.
En el código, la sintaxis sale coloreada sobre papel blanco, con los números de línea en el margen, y la línea larga se ajusta en vez de cortarse: en el papel no hay desplazamiento horizontal para alcanzar lo que pasa del margen. La imagen sale con las marcas que dibujaste, y una imagen pequeña no se amplía — sale a su tamaño, centrada en la hoja. Un GIF imprime el fotograma que está a la vista.
Imprimir un PDF desde LightNote rasteriza las páginas, y tus resaltados van con ellas; para la mejor calidad tipográfica, imprime el PDF desde el lector del sistema, donde el texto sigue siendo vectorial. La exportación a PDF (Archivo → Exportar nota) es otra cosa y sigue como siempre: quien quiera el número de página o los márgenes de documento también en el archivo marca las dos casillas en Exportar con opciones…, que salen desactivadas para no cambiar el PDF de quien ya exporta. En un documento muy largo se omite la vista previa, porque mantiene todas las páginas en memoria a la vez; la aplicación va directo al diálogo de impresión, que no tiene ese límite.
Zip como carpeta (.zip)
Un .zip se abre en su propia pestaña: el árbol de miembros a la
izquierda (nombre, tamaño, fecha) y el contenido del miembro seleccionado a la
derecha — texto/código, Markdown (renderizado), imagen o PDF — abierto en
memoria, sin extraer nada al disco. El texto y el Markdown se pueden editar:
Ctrl+S reescribe el miembro dentro del propio .zip.
La misma pestaña abre .7z, .rar, .tar (incluidos .tar.gz, .tar.bz2 y .tar.xz), .cab e .iso: en esos casos solo lectura, es decir se puede navegar, ver y extraer miembros, pero no editar. Solo el .zip es escribible, porque es el único formato que sabemos reescribir con seguridad (el .rar es propietario y ni las bibliotecas libres lo comprimen).
Las imágenes y los PDF son de solo lectura; los miembros muy grandes (y los
.parquet) solo ofrecen Extraer a…. No se admite crear, renombrar
ni eliminar miembros.
Los miembros protegidos con contraseña se leen con normalidad: al abrir uno, LightNote pide la contraseña (hasta tres intentos) y, si marca "Recordar la contraseña de este archivo", no vuelve a preguntar: en la misma ejecución por omisión, y también en las siguientes si marca la casilla (protegida por Windows, solo para usted en este equipo; bórrelas todas en Configuración → Funciones). Observe una diferencia del formato frente al PDF: en el .zip el cifrado es por miembro y el índice queda en texto claro, así que la lista de archivos se ve entera incluso sin la contraseña: solo el contenido está protegido. Un .zip con miembros cifrados no se reabre solo al iniciar la aplicación.
Bloques (.lnb)
Un paquete de Bloques es una carpeta cuyo nombre termina en
.lnb, tratada como un único elemento en el árbol (doble clic para
abrirla). Cada bloque es un archivo real en el disco; el orden vive en un
blocks.json en la raíz del paquete. Funciona como un cuaderno: celdas
apiladas de código o texto. Un notebook de Jupyter entra por aquí: haga clic derecho en un .ipynb del árbol y elija Importar como Bloques (.lnb). Cada celda se vuelve un archivo real —versionable y leído por la búsqueda— y el .ipynb sigue donde estaba, porque importar no es convertir. Las salidas guardadas en el notebook no vienen: ejecutar la celda aquí genera el resultado de verdad, con su instante y su comando.
Cada celda tiene un nombre, un botón de tipo (define el intérprete/lexer) y botones para copiar, insertar, eliminar y ejecutar. Ejecutar hasta aquí ejecuta en secuencia todas las celdas de código hasta la actual; la salida (stdout+stderr) aparece en un panel justo debajo de la celda. Crea uno desde el árbol (Nuevo) o con Archivo → Nuevo.
Ctrl+Enter ejecuta la celda con el foco — el mismo gesto del editor SQL.
El resultado queda guardado (como en un cuaderno de laboratorio): al
terminar, cada ejecución se convierte en un archivo .md dentro de
saida/<celda>/, en el propio paquete — con el instante, el código
de salida, la duración, el comando y la salida en sí. Al ser Markdown, se lee en
cualquier editor, se versiona en Git junto al cuaderno y lo recupera
Chat con IA. Al reabrir el paquete vuelve la
franja Última ejecución encima del panel: haz clic en ella para ver el
resultado sin volver a ejecutar.
Historial: el botón Historial junto a esa franja lista las
ejecuciones anteriores de esa celda (instante y código de salida) — útil para
comparar lo que devolvió la misma celda a lo largo del tiempo. Guardamos las
10 más recientes por celda; para cambiarlo, edita la clave
historyLimit en el blocks.json del paquete (0
desactiva el guardado). La salida muy grande se recorta (el archivo indica
truncated: true). Renombrar la celda o cambiar su tipo se lleva el
historial consigo; eliminar la celda envía su historial a la Papelera.
Celda SQL contra una base de datos real: apunta el cuaderno a una
conexión .lnc desde la franja superior
(Elegir conexión…) y las celdas de tipo sql pasan a ejecutarse en la
base de datos, no por un intérprete. El resultado de un SELECT se
convierte en una tabla en el archivo de salida (Markdown real, que cualquier
visor muestra formateado); INSERT/UPDATE y similares
informan cuántas filas cambiaron, y un error de la base detiene el script y registra
la instrucción que falló. Traemos hasta 100 filas por consulta (el archivo
avisa cuando hay más) — el resultado es una anotación, no una copia de la tabla.
La conexión vive en blocks.json como ruta relativa, así que el
cuaderno sigue funcionando al mover o sincronizar la carpeta. Si prefieres un cuaderno
autocontenido, guarda el propio .lnc dentro del paquete: cuenta como
configuración, no se convierte en celda. Es la misma conexión de la pestaña
Base de Datos — conectar en un lugar vale en el otro, y la
contraseña sigue las reglas de la Frase de paso. Sin conexión
apuntada, la celda sql sigue ejecutándose por el intérprete configurado, como
antes.
Tareas (Kanban / Gantt)
Un paquete de Tareas (.lnt) abre un tablero de tareas con vistas
Kanban (columnas de estado, arrastra las tarjetas), Gantt
(planificación basada en el esfuerzo) y calendario. Cada tarea puede tener un
título, una columna (estado), un esfuerzo en horas y una nota .md
asociada. Las tareas también son accesibles por la IA, mediante
MCP y CLI (crear, mover, actualizar,
leer/escribir la nota).
La nota de la tarea es una nota como cualquier otra. El panel integrado trae la misma pantalla de las notas .md: Ctrl+E alterna editor de texto, lectura y edición formateada, y valen el tema de la nota, el índice y las propiedades. Sigue guardándose sola — incluso lo que acabas de escribir en el modo formateado, al cambiar de tarea o cerrar la pestaña. Abrir la nota en su propia pestaña también sigue tu preferencia de vista, en vez de forzar el editor de texto.
Campos por tarea: además del estado y el esfuerzo, cada tarea tiene una prioridad (colorea el borde de la tarjeta y ordena la Tabla), una fecha de vencimiento (chip rojo cuando está atrasada), varias etiquetas, una lista de comprobación de subtareas (insignia de progreso en la tarjeta) y recurrencia (completar una tarea recurrente genera la siguiente aparición). Edítalos desde el menú contextual (Tabla/Kanban) y en el panel Propiedades.
Captura y listas: la Tarea rápida de la bandeja entiende lenguaje natural (p. ej. Pay bill tomorrow 5pm #home !high; las palabras de fecha, hora y prioridad se reconocen en inglés y en portugués). El botón Plantillas guarda/aplica plantillas de tarea; Listas por vencimiento filtra Hoy/Próximos 7 días/Atrasadas; Vistas guardadas guarda filtro+orden; y la bandeja/Launcher muestran recordatorios de las tareas que vencen hoy o están atrasadas.
Tablero Kanban: puedes agrupar las columnas por estado, prioridad o etiqueta, crear carriles (swimlanes), definir límites de WIP por columna (el encabezado se pone rojo al excederse) y ordenar las tarjetas. Navegación con teclado al estilo Linear: ←/→ mueven el foco, Ctrl+←/→ mueven la tarjeta, N crea, Espacio completa/reabre y Supr elimina. También está la vista Calendario (por fecha de vencimiento).
Nota incrustada: al seleccionar una tarea se muestra su nota
.md junto a las vistas (se guarda automáticamente al cambiar de tarea);
el botón Nota activa/desactiva el editor y Abrir nota en una pestaña
la abre en su propia pestaña. Archivar una tarea la oculta de todas las
vistas; el conmutador Mostrar archivados revela las archivadas (atenuadas).
En Configuración de Tareas puedes definir Archivar tareas completadas tras N días: al abrir el tablero, las tareas que llevan más tiempo que eso en la última columna se archivan automáticamente (0 = desactivado).
La nota se abre incrustada de forma predeterminada (doble clic en la tarea) y se guarda sola mientras escribes: las Tareas nunca preguntan "¿guardar?" al cerrar. Dentro de la nota funcionan las acciones de IA (Ctrl+K / Ctrl+I).
Barra de la pestaña. Las acciones que dependen de la tarea seleccionada (Eliminar, Dependencias, Historial (Git)) y Exportar CSV están en el botón ⋮. El botón Vistas reúne las listas por vencimiento, las vistas guardadas y mostrar archivadas — todas actúan sobre la Tabla. Ctrl+F enfoca el filtro rápido y el contador de la derecha muestra cuántas tareas dejó el filtro.
Tabla personalizada (.lnd)
Una Tabla personalizada (.lnd, en Archivo → Nuevo) es
tu mini base de datos: defines las columnas en tiempo de ejecución — texto,
número, fecha, lista fija con colores, ruta, etiquetas y
contraseña — y llenas las filas como una hoja de cálculo, con ordenación y
filtrado. Un campo ruta agrupa las filas en un árbol (p. ej.
Casa/Oficina).
Las celdas de contraseña se cifran individualmente con la Frase de paso y se revelan bajo demanda. Igual que las Tareas, el paquete se persiste como texto compatible con Git (NDJSON) — se puede versionar y fusionar entre máquinas.
En las columnas de texto, abrir una celda muestra un editor multilínea
flotante: Enter inserta un salto de línea y Ctrl+Enter confirma; la
cuadrícula muestra el texto en una sola línea (con …) y el contenido
completo en la información sobre herramientas. Para cambiar el tipo de una
columna, usa el menú del encabezado: convertir texto → contraseña cifra
los valores con la Frase de paso; convertir contraseña → texto pide
confirmación y el PIN/Frase de paso y escribe el contenido como texto sin formato
(irreversible). Las demás conversiones conservan los valores.
Bases (consultas guardadas sobre las notas)
Una Base (.lnq, en Archivo → Nuevo → Nueva Base) es una
consulta guardada sobre tus notas: filtra por tipo y por
propiedades y ve el resultado como tabla o tablero. La Base
no guarda ningún dato: las filas son tus notas .md y la fuente
de verdad de cada celda es el frontmatter de la nota. Borrar un
.lnq no pierde ninguna nota.
Editar la celda escribe en la nota. En la tabla, cambiar una propiedad reescribe solo esa línea del frontmatter del archivo. En el tablero, arrastrar una tarjeta de una columna a otra escribe el nuevo valor de la propiedad de agrupación (por ejemplo, pasar de leyendo a leído).
Cada nota declara sus propiedades en el frontmatter (type,
status, autor…). Usa el panel lateral Propiedades de
la nota para editarlas como campos tipados (texto, número, fecha, casilla) en
lugar de YAML en crudo — ver Notas en Markdown.
El .lnq es NDJSON (un registro por línea), pensado para
Git: dos máquinas pueden editar la misma Base en paralelo —una añade una
columna, la otra ajusta un filtro— y la fusión conserva ambos cambios sin
conflicto.
Esquema declarado (opcional). De forma predeterminada LightNote
infiere los campos de cada tipo a partir de lo que las notas ya usan: no hace falta
declarar nada. Cuando quiera fijar el esquema, abra Herramientas → Tipos de nota...
(o el botón de engranaje de la mini-barra Propiedades de la nota): declare los
campos de cada tipo, su tipo de dato (texto, número, fecha, casilla,
lista de opciones) y una plantilla predeterminada. Con el esquema, un campo
de lista de opciones se convierte en un desplegable con los valores permitidos, los
campos declarados aparecen en los selectores de columna y filtro de la Base aunque
ninguna nota los use todavía, y el botón Aplicar plantilla del tipo trae el
esqueleto de la nota. El esquema vive en .lightnote/types.ndjson: NDJSON
combinable, versionado en Git junto con las notas; borrarlo no altera ninguna nota, solo
vuelve a la inferencia.
Fechas relativas en el filtro. En el valor de una condición valen términos como today, yesterday, tomorrow, 7 days ago y in 2 weeks (también 3 months ago, in 1 week). Con ellos, vencimiento = today y vencimiento < today (atrasadas) siguen valiendo mañana — antes solo se podía escribir la fecha del día a mano, y la consulta guardada envejecía en 24 h. El valor es siempre un punto en el tiempo, y el rango sale de componerlo con el operador: modificado > 7 days ago es "lo que toqué esta semana". Una nota sin fecha legible en ese campo no entra en ninguna comparación de fecha, ni en la negativa. Una fecha ISO escrita a mano (2026-09-01) sigue valiendo como texto.
El índice corre en segundo plano. La Base y Herramientas → Consultar notas (SQL) recorren las notas antes de mostrar el resultado — un stat por archivo y la lectura de los que cambiaron desde la última vez. Eso ahora ocurre fuera de la ventana: la Base abre enseguida diciendo Indexando las notas… en su barra y se llena cuando termina; el botón Reindexar queda deshabilitado mientras tanto, porque un segundo recorrido de la misma carpeta no aportaría nada.
Buscar en archivos y Pendientes
Buscar en archivos y documentos
Usa Ctrl+Shift+F para la búsqueda global en la pestaña Buscar de la barra lateral, impulsada por ripgrep: admite regex, distinción de mayúsculas, palabra completa y reemplazo masivo. Dentro del archivo actual, Ctrl+F busca y Ctrl+H reemplaza.
La búsqueda también alcanza los documentos. Además de las notas
.md, lee el texto de PDF, hojas de cálculo (.xlsx/.ods),
documentos de Word (.docx), texto de LibreOffice (.odt),
presentaciones (.pptx) y libros (.epub). Lo mismo vale para
el Chat con IA y para la búsqueda por significado. Un resultado dentro de un PDF
abre el archivo en la página del fragmento. El texto extraído queda en una caché
fuera del espacio de trabajo, se actualiza solo cuando el archivo cambia y se
borra cuando el archivo deja de existir. La primera vez cuesta: abrir un espacio con muchos PDF lanza una extracción que tarda minutos, y hasta que termina los documentos todavía no están en la búsqueda. La pestaña Buscar lo dice mientras ocurre —preparando los documentos (12 de 80)— y avisa cuándo repetir la búsqueda. De la segunda vez en adelante solo se rehace lo que cambió.
También entran .rtf, .xps/.oxps, presentaciones de LibreOffice (.odp), subtítulos de vídeo (.srt/.vtt), tablas en texto (.csv/.tsv), páginas guardadas (.html/.mhtml), correo archivado (.eml), cuadernos Jupyter (.ipynb), bibliografías (.bib/.ris) y los archivos de texto plano (.txt). Los lenguajes de marcado de texto tienen lector propio: reStructuredText (.rst), AsciiDoc (.adoc), Org (.org) y Typst (.typ). La sección se convierte en título, la lista y la tabla en las nuestras, la fórmula se dibuja y el preámbulo queda fuera: sin eso, #set page(...) y :stem: latexmath se convertirían en fragmentos indexados, y el nombre de la sección no viajaría con su texto. Un resultado en un subtítulo abre el instante en que se dijo la frase. Un PDF escaneado no desaparece en silencio. Un documento con páginas y sin texto (una foto de cada página, sin OCR) entra en el índice con una línea que lo dice, y la pestaña Buscar avisa cuántos son: sin esa frase buscarías algo que está en el libro, no lo encontrarías y concluirías que la búsqueda está rota. Y puedes hacerlo legible: con Tesseract instalado (LightNote ofrece instalarlo en un clic), el menú ⋯ del PDF trae Reconocer el texto (OCR)…. Se ejecuta una vez, por documento y puede tardar varios minutos: después el texto queda en el índice como el de cualquier otro PDF. El aviso de la pestaña Buscar lleva al primer documento en esa situación. La caché guarda el texto en claro. Está en tu carpeta de usuario, fuera del espacio de trabajo: quien tenga acceso a ella lee el contenido de tus documentos ahí, aunque el original esté en un disco cifrado. Un archivo .lne (la nota cifrada) nunca entra en la caché: existe precisamente para no quedar legible en el disco.
El LaTeX entra por un lector propio. Un archivo
.tex no se lee como texto plano: el preámbulo queda fuera,
\section se vuelve título, \cite se vuelve
[@key] y la fórmula pasa entera — la dibuja el mismo motor que dibuja las
matemáticas de tus notas. Un acierto abre el archivo en la línea de la que
vino. En el menú contextual del archivo — o en la barra de la pestaña, con él abierto
— está Importar como nota (.md): la nota nace al lado, el .tex
sigue donde estaba e importar dos veces no sobrescribe. El camino inverso es
Exportar como LaTeX (.tex)..., en la barra de la nota.
Vista previa del documento y código fuente
Abrir un documento muestra una vista previa de texto. Un .docx,
.odt, .epub o .pptx se abre solo para
lectura, con el texto extraído y las imágenes del documento: sin los
estilos de Word, la colocación de las figuras, tablas complejas ni control de
cambios. La pestaña sigue siendo el documento: el
nombre, la carpeta y la sesión apuntan a él, no a la caché. La hoja de cálculo
.xlsx sigue abriéndose en la vista de tabla, que muestra mucho más.
Convertir el documento en nota. Desde Archivo → Importar documento como nota... (varios a la vez), el menú contextual del árbol o el botón Importar como nota (.md) de la propia vista previa, un .docx, .odt, .epub, .rtf, .pptx, .html, .eml, PDF o LaTeX se vuelve una nota editable junto al archivo. Vienen el texto con títulos, listas, enlaces y tablas, las notas al pie, las ecuaciones de Word como fórmulas LaTeX y las imágenes, guardadas en la carpeta Adjuntos junto a la nota. El título, el autor y la fecha del documento entran como propiedades, con source indicando de qué archivo vino la nota. El original sigue donde estaba —importar no es convertir— e importar de nuevo crea nombre 02.md en lugar de sobrescribir lo que usted editó. No aparece para el notebook Jupyter (que se vuelve Bloques), para .csv (que se abre como tabla), para la bibliografía .bib/.ris (que las citas leen directamente) ni para código fuente. La estructura sale de los estilos del documento: el título de Word se reconoce también con el nombre del estilo traducido, el estilo de carácter da la negrita, la cursiva y el código, los párrafos de cita y de código se convierten en nuestros bloques y el índice automático se convierte en un [TOC] que la nota mantiene al día; del .rtf vienen listas, tablas y enlaces, y del HTML —incluido el que guardan Word y Google Docs— y del EPUB vienen títulos, listas anidadas y tablas.
Ver qué usa la carpeta de otro editor. En Herramientas → Comprobar la compatibilidad de la carpeta..., LightNote lee las notas de la carpeta abierta y separa lo que encontró en tres grupos: lo que dibuja (wikilink, transclusión, destacado, etiqueta, resaltado, fórmula, nota al pie, tarea, marcador de bloque), lo que se queda en el archivo sin dibujarse (la consulta de complemento dataview, tasks o query, el lienzo .canvas, la base .base y la transclusión de bloque) y lo que se puede convertir a la forma de aquí. Convertir es decisión tuya, nunca efecto de guardar: marca las construcciones, mira la vista previa lado a lado y confirma — cada archivo modificado recibe un punto en el Historial del archivo antes de guardarse, y lo que está abierto con cambios sin guardar queda fuera. Hoy son dos conversiones, y ninguna cuesta nada del lado de Obsidian, que lee las dos formas: el enlace obsidian:// de esta carpeta pasa a ser [[nota]] — el de otra bóveda no se convierte, porque cambiaría el destino — y la nota al pie en línea ^[texto] pasa a ser [^n], con la definición al final.
Traer un acervo completo de Notion. Exporte en Notion con Export → HTML (o Markdown & CSV) e Include subpages, ponga el .zip descargado — o la carpeta — dentro del espacio de trabajo, cree la carpeta de destino y ejecute lnote vault-import --path <export> --out <destino> (o la herramienta vault_import, desde el asistente de IA). No hace falta descomprimir, ni siquiera el export del espacio entero, que trae otro .zip dentro. Cada página se convierte en una nota: las propiedades de la página pasan a ser propiedades de la nota, el resaltado de color de Notion se convierte en la caja de aquí (en HTML el color decide el tipo; el Markdown no guarda el color, y la caja llega como nota), la tarea llega con su casilla marcada o no, la ecuación se convierte en fórmula LaTeX, el bloque desplegable se convierte en una caja <details> (y el título desplegable en título), el índice de la página en [TOC], y los enlaces entre páginas se reescriben hacia las notas nuevas — dos páginas con el mismo título conviven, porque la segunda pasa a ser nombre 02.md y los enlaces siguen apuntando a la correcta. Las bases de datos se copian como .csv en Anexos, y un #tema escrito en Notion sigue siendo texto: allí no era una etiqueta, y aquí tampoco se convierte en una. No se sobrescribe nada, y se graba junto una nota de informe que dice cuántas notas y adjuntos entraron y enumera los enlaces que no encontraron destino — esos quedan tal como estaban escritos.
El gesto está en el menú. Archivo → Importar de otra aplicación... abre el asistente: elija la carpeta o el .zip que exportó (un .enex de Evernote también sirve) y la aplicación de origen se reconoce por la forma de los nombres de archivo — si no, elíjala en la lista de al lado. La carpeta se lee entera, con las subpáginas. El destino ya viene con una carpeta nueva dentro del espacio de trabajo, con el nombre de la aplicación, para que el acervo no se mezcle con sus notas. Leer y escribir ocurren fuera de la ventana, y al final la pantalla dice cuántas notas y adjuntos entraron y cuántos enlaces se reescribieron.
Cinco aplicaciones. De Notion, la carpeta o el .zip exportado en HTML o en Markdown; de Evernote, el .enex; de Joplin, el .jex (o la carpeta MD + Front Matter); de Logseq, la carpeta del grafo — la que tiene logseq/config.edn dentro; y de Roam Research, el .json del export. En todas, el cuaderno y el namespace se convierten en carpeta, el diario va a la carpeta de notas diarias con el nombre aaaa-MM-dd, la tarea se convierte en - [ ], el resaltado en ==así== y la referencia a un bloque en el texto de ese bloque entre comillas con el enlace a su página: ninguna sintaxis de otra aplicación entra en su espacio. Lo que no tiene equivalente aquí, como la consulta de Logseq o la tabla de Roam, queda como código en la línea, y el informe dice cuántas veces.
El código fuente también puede entrar en la búsqueda por significado. En Espacio de trabajo → Configuración de esta carpeta está Incluir el código fuente en la búsqueda por significado: los archivos de código se indexan junto a las notas, un fragmento por función o clase, que es lo que hace que preguntas como “¿dónde trato el timeout?” encuentren la función entera y no un trozo cortado en medio de un if. Respeta el .gitignore. Viene apagado, y por carpeta: las notas cambian despacio, el código cambia todo el día, y un repositorio de trabajo genera decenas de miles de fragmentos, cada uno una llamada que cobra tu proveedor de embeddings.
Resaltado, marcas y Pendientes
El resaltado y las marcas son cosas distintas. La búsqueda rápida (Ctrl+F) solo resalta las coincidencias en ámbar: es temporal y desaparece al cerrar la barra o vaciar el campo. En cambio, Marcar todo de Editar → Búsqueda avanzada… es una decisión tuya: pinta las coincidencias en rojo y añade el marcador (el punto azul del margen) en las líneas correspondientes, que permanecen hasta que uses Limpiar marcas. Ambos son independientes: cerrar la búsqueda rápida no borra lo que marcaste, y limpiar las marcas no borra el resaltado de la búsqueda. Los dos aparecen en la franja del minimapa, cada uno con su color. Limpiar marcas borra solo los puntos que creó Marcar todo: un marcador que usted haya puesto a mano (Ctrl+F2) en una línea que coincidía con la búsqueda sigue donde estaba.
La sección Pendientes de la barra lateral reúne en un solo lugar los
marcadores TODO/FIXME del código y las tareas
(- [ ]) de las notas Markdown del espacio de trabajo — haz clic para
saltar directamente a la línea.
Control de versiones (Git fácil)
Clonar un repositorio
Para trabajar en un repositorio que ya existe, usa Archivo → Clonar repositorio Git...; el elemento también está en la pantalla de inicio y en el panel de control de versiones de una carpeta que todavía no tiene repositorio. Pega la dirección HTTPS o SSH que muestra la página del repositorio; la URL de la propia página sirve, y un git clone ... copiado entero también. Elige la carpeta base y el nombre de la carpeta: el asistente muestra dónde se creará y avisa cuando ya hay algo ahí. En Opciones avanzadas están la rama, el clon superficial (solo el último commit) y los submódulos.
Cuando el servidor pide iniciar sesión, LightNote pregunta en una ventana: usuario y token, la frase de contraseña de la clave SSH, o la confirmación de la clave de un servidor que este equipo nunca vio; en ese caso la ventana muestra la huella digital y el enlace a la lista que publica el servicio, y lo predeterminado es no confiar. La respuesta va directo a Git y LightNote no la guarda; quien la guarda es el administrador de credenciales de Git, cuando está instalado (Git for Windows trae el Git Credential Manager). Confiar en la clave la escribe en ~/.ssh/known_hosts, como haría el propio ssh.
Si la clonación falla, la pantalla dice qué pasó y ofrece la salida: intentar por HTTPS cuando se rechazó la clave SSH, usar los certificados de Windows cuando el proxy de la empresa inspecciona HTTPS, descargar solo el último commit cuando la conexión se cae a mitad, o usar rutas largas cuando Windows no deja crear el archivo. Los Detalles técnicos traen el mensaje de Git, y lo que no se reconoce puede ir a la IA. Al terminar, el asistente abre la carpeta clonada en esta ventana o en una nueva.
Versionar la carpeta abierta
El control de versiones es opcional por espacio de trabajo. Habilítalo en Herramientas → Ajustes del espacio de trabajo: LightNote crea el repositorio Git (si aún no existe) y muestra la barra lateral de control de versiones (Ctrl+Shift+G).
En modo automático, LightNote guarda versiones (commits) por sí mismo en los momentos elegidos en los Ajustes generales (al guardar, al cerrar una pestaña o al cerrar la ventana). En modo manual, escribes el mensaje y guardas la versión en el panel. El indicador de la barra de estado muestra el estado (sin cambios, X modificados…) y, al hacer clic, abre los ajustes del espacio de trabajo. Puedes ver el diff de cada archivo y restaurar (descartar) los cambios sin guardar.
La automatización tiene 3 niveles por carpeta (en Ajustes del espacio de trabajo): Manual (nada automático), Commit automático (guarda versiones por sí mismo, pero no sincroniza) y Todo automático (hace commit y sincroniza — push tras el commit + pull periódico; requiere credenciales de Git sin preguntar). El panel muestra una línea de estado con ↑ por enviar / ↓ por recibir respecto al remoto, y el botón principal cambia de commit a Sincronizar cuando hay versiones por enviar — así queda claro que, después de guardar, aún falta sincronizar.
El panel Git y el menú Git del árbol ofrecen Agregar (git add) y Restaurar (git restore) por archivo, y un único Ver qué cambió, que abre la pantalla de comparación.
La pantalla de comparación muestra las dos versiones en paralelo, alineadas: los pasajes iguales quedan siempre uno frente al otro y cada lado muestra el número de línea de su archivo. Una línea cambiada aparece en ámbar, con la parte modificada resaltada dentro de ella. El botón Modo unificado cambia al formato de parche, Invertir los lados cambia la base de la comparación y F8 / Shift+F8 saltan de un cambio a otro.
Historial y franja de cambios
El botón Historial de la barra del editor de código y de la nota abre la lista de versiones del archivo abierto (la misma sección de la barra lateral). Reúne los commits y los guardados locales que LightNote registra en cada Ctrl+S, así que también funciona en una carpeta que no es un repositorio. Cada fila trae el asunto, el autor, cuándo fue y cuántas líneas entraron y salieron; el punto distingue un commit tuyo, un guardado del propio LightNote y un commit venido de una sesión de IA. Si hay cambios sin confirmar, son la primera fila. Hacer clic en una versión muestra qué cambió en ella; abrir la versión completa, comparar con la actual y comparar dos versiones marcadas están en el clic derecho.
Con el control de versiones activo, una franja de color en el margen marca las líneas cambiadas desde el último commit — en el editor de código y en la nota, y sigue lo que escribes: desaparece cuando deshaces hasta el original, sin esperar a guardar. Para desactivarla usa Ver → Franja de cambios; desactivada no solo se oculta: no se calcula nada. Hacer clic en la franja muestra cómo estaba el fragmento, con Revertir este fragmento (Ctrl+Z lo deshace), Copiar original y Ver en el diff, que abre la comparación completa ya situada en esa línea. Una advertencia sobre el historial local: se guarda por ruta, así que renombrar el archivo pierde sus guardados locales — los commits de Git, no.
Instantáneas y copia de seguridad
En el menú ⋯ del panel de control de versiones (o en Herramientas):
- Crear instantánea: marca el estado actual con una etiqueta de fecha/hora para que puedas volver a él más adelante.
- Restaurar instantánea: elige una instantánea y qué hacer — traer los archivos de vuelta conservando el historial (recomendado), retroceder el historial hasta ese punto, o abrirla como una copia aparte.
- Exportar copia (.zip): comprime todo el espacio de trabajo en un archivo autónomo (con el marcador de proyecto incrustado) para enviarlo o guardarlo en otro lugar.
- Mover carpeta del espacio de trabajo…: mueve la raíz en el disco y ajusta las rutas de la sesión y del registro.
Revisar cambios (puntos de control)
Herramientas → Revisar cambios… muestra, en una sola pestaña, el diff agregado de todo lo que cambió en el espacio de trabajo desde una base: la lista de archivos agregados/modificados/eliminados a la izquierda y el diff del archivo seleccionado a la derecha. Se diseñó para revisar lo que cambió una sesión de CLI de IA antes de aceptar el trabajo.
La base puede ser la última versión (HEAD) o un punto de control: crea uno antes de empezar una tarea (botón en la propia pestaña) y compara contra él después. Los puntos de control no crean commits y nunca tocan tu historial. Requiere el control de versiones habilitado para la carpeta.
Comentarios por lotes. Al revisar una sesión de IA, el botón Comentar (también en el menú contextual de la lista de archivos) anota un comentario sobre el archivo seleccionado — anclado al fragmento que marques. Los comentarios se acumulan en una lista y solo llegan al terminal de la CLI cuando pulsas Enviar a la sesión, todos en un único mensaje. Es deliberado: enviarlos de uno en uno hace que el agente arregle un problema y rompa otro, porque cada ronda no ve las demás críticas. Tras la revisión, los comentarios siguen en la lista para que compruebes si se atendieron; marca los resueltos y lo que quede entra en el siguiente envío. Si el agente reescribe la región comentada, el comentario se atenúa en vez de desaparecer. El envío se confirma en la barra de estado, y una sesión hibernada se reanuda automáticamente para recibir el lote.
Comparar archivos (diff)
Herramientas → Comparar dos archivos… abre ambos lado a lado (dos editores) y marca las diferencias línea por línea. La comparación es de solo lectura.
Los botones ◀ / ▶ (o F8 / Shift+F8) saltan al cambio anterior/siguiente. Desde el panel Git también puedes comparar un archivo en paralelo con la versión guardada (HEAD vs. disco).
Ejecutar código (F5)
Herramientas → Ejecutar archivo (F5) guarda el archivo actual y lo
ejecuta en la terminal, según el intérprete registrado para la extensión. Los valores
predeterminados cubren .py, .sh, .bat,
.cmd y .sql; puedes editar/agregar intérpretes en
Ajustes → Ejecución.
El comando es una plantilla con {file} (archivo),
{folder} (carpeta) y {name} (nombre) — por ejemplo, para
Python: python {file}. También puedes enviar solo la selección/línea
actual a la terminal con Ctrl+Shift+Enter. En los
Bloques, cada celda se ejecuta con el mismo mecanismo.
El botón Ejecutar tiene una flecha para elegir y recordar el terminal de destino cuando hay más de un terminal abierto.
Errores en los que se puede hacer clic. En el panel de salida (F6), las referencias a archivo:línea se convierten en enlaces: Ctrl+clic o doble clic abre el archivo en ese punto exacto. Funciona con trazas de Python, pilas de Node, errores de compilador (gcc/clang/MSVC) y salida de linters. Solo se convierte en enlace lo que existe realmente en el disco; el resto sigue siendo texto.
Recorrer los errores. En el panel de salida, F8 salta al siguiente error y Shift+F8 al anterior (también hay botones en la barra del panel). El salto es circular: desplaza la salida hasta la referencia, la resalta y abre el archivo en el punto exacto.
Terminal y CLIs de IA
Punto de estado por comando. Junto a cada comando ejecutado aparece un punto: azul si tuvo éxito, rojo si falló (el tooltip muestra la hora, la duración y el código de salida). LightNote lo activa automáticamente en PowerShell y Git Bash, sin cambiar tu configuración — actívalo o desactívalo en Configuración → Terminal → Integración de shell. Otros shells (cmd, WSL) o comandos personalizados no muestran el punto.
Abre una terminal integrada (emulador VT completo, vía ConPTY) con Ctrl+'
(en la distribución de teclado de EE. UU., también Ctrl+`).
Se convierte en una pestaña y se puede mover entre las áreas de la ventana. Los
shells disponibles y las CLIs de IA detectadas en el PATH (p. ej.
claude) son configurables en Ajustes → Terminal y Ajustes →
Asistentes de IA. En el menú Nueva terminal, elegir una CLI de IA abre esa
CLI como la terminal — la TUI/los colores aparecen normalmente, y salir de
ella cierra la pestaña.
Programar un envío. En el menú contextual de la terminal (clic derecho), Programar envío… permite enviar un Enter (o un texto) más tarde — útil para reanudar una CLI de IA cuando se reinicia el límite de uso, sin estar pendiente. Elige el disparador: a una hora, después de unos minutos, cada intervalo (recurrente) o cuando la terminal quede inactiva. El equipo se mantiene despierto hasta el disparo. La programación dura mientras la pestaña de la terminal siga abierta.
Puedes tener varias programaciones a la vez. Cuando hay alguna, el elemento del menú muestra Envíos programados (N)… y abre un gestor: una tabla con la terminal, lo que se enviará, cuándo, y una cuenta regresiva en vivo hasta el próximo disparo, con botones Nuevo, Editar y Quitar. Mientras haya programaciones, un indicador de reloj con la cuenta aparece en la barra de estado (haz clic en él para abrir el gestor) y un pequeño reloj marca la pestaña de la terminal que está armada.
Aviso de fin de turno de la IA. Cuando una terminal de CLI de IA queda en silencio —señal de que el agente terminó su turno— LightNote te avisa: aparece un toast (haz clic para enfocar esa terminal) y la pestaña parpadea unas veces y mantiene un resalte hasta que la abras. Si la ventana está en segundo plano, su botón también parpadea en la barra de tareas. El aviso solo vale para terminales de CLI de IA y solo cuando la pestaña no tiene el foco. Actívalo/desactívalo y ajusta el tiempo de silencio en Ajustes → Terminal → Aviso de fin de turno de la IA.
Los terminales vuelven con la ventana. Al cerrar y reabrir el espacio de trabajo, los terminales de shell normal (Símbolo del sistema, PowerShell, Bash) se reabren — y en la carpeta en la que estabas, no en la que el terminal se abrió. El contenido de la pantalla no vuelve, pero el historial de comandos es del propio shell y sigue ahí: la flecha ↑ funciona con normalidad. Las sesiones de asistente de IA quedan fuera y se siguen ofreciendo aparte, porque un terminal nuevo no es la misma conversación. Tampoco vuelven las variables de entorno ni los entornos activados a mano en esa sesión (un venv, por ejemplo): el terminal se reabre en la carpeta correcta, pero es un shell nuevo.
Asistente de IA en la selección (Ctrl+K / Ctrl+I)
Preguntar y editar con IA
IA predeterminada. En la parte superior de Configuración → Asistentes de IA, la IA predeterminada elige el asistente usado por Ctrl+K/Ctrl+I, por el chat Chat con IA (que puede cambiar por sesión) y por las tareas automáticas (reescribir la pregunta, resumir, resumen de audio, generar contexto). Lista tanto las CLIs como los proveedores de API. La transcripción de audio y los embeddings tienen su propio proveedor, y LightNote sugiere un modelo según el proveedor elegido.
Pulsa Ctrl+K (Preguntar a la IA) o Ctrl+I (Editar con IA) en el editor — con o sin selección — para abrir un popup flotante estilo chat en línea: el campo de prompt viene rellenado con la selección debajo de una línea en blanco; escribe la instrucción encima y envía con Ctrl+Enter. En el popup eliges la IA (la predeterminada viene preseleccionada) y el modo de resultado: reemplazar la selección mediante un diff (Original × Sugerencia, con Aceptar / Copiar / Rechazar) o solo mostrar la respuesta como texto.
LightNote ejecuta la CLI de IA en modo "una pasada" (sin abrir una terminal). Las CLIs y la IA predeterminada viven en Ajustes → Asistentes de IA.
Conectar un modelo
Modelos por API. Además de las CLIs locales, puede registrar modelos de LLM mediante una API compatible con OpenAI (OpenAI, Groq, DeepSeek, OpenRouter, Gemini, Anthropic, instancias locales como Ollama/LM Studio…) en Configuración → Asistentes de IA. Elija un proveedor del catálogo (con la URL lista), pegue la clave (guardada codificada solo en esta máquina), use Buscar modelos… y Probar. Los modelos registrados aparecen en el mismo selector de Ctrl+K, junto a las CLIs.
Conectar en un paso. El camino normal no es rellenar la tabla: en Configuración → Asistentes de IA, haz clic en Conectar una IA…, elige el proveedor (la lista señala cuáles tienen plan gratuito y cuáles se ejecutan en tu ordenador, sin clave), sigue los tres pasos, abre la página de claves con el botón y pega la clave. LightNote rellena la dirección y el modelo por su cuenta y prueba la conexión antes de guardar: una clave equivocada aparece ahí, no a mitad de una conversación. La lista de arriba muestra lo que ya está conectado y, en lo que falte algo, qué falta («falta pegar la clave», «falta elegir el modelo»); un doble clic reabre el asistente en ese proveedor.
Ajustes finos. Dirección, modelo, permiso de MCP, comandos de las CLI, transcripción de audio y embeddings siguen disponibles en Avanzado, al final de la página, y dentro del propio asistente, en Opciones avanzadas, puedes cambiar la URL base y el modelo antes de conectar. No se ha quitado nada: solo se ha apartado del camino de quien empieza. En los embeddings hay además el campo opcional Dimensiones: algunos modelos aceptan devolver un vector más pequeño (512 en vez de 1536), lo que reduce la caché a la mitad con poca pérdida. Déjalo en (predeterminado del modelo) si no lo sabes: no todos los proveedores aceptan el parámetro. Cambiar el valor invalida la caché: vectores de dimensiones distintas no se comparan, así que se descarta y se reconstruye en la búsqueda siguiente, lo que cuesta nuevas llamadas.
No toda falla es igual. LightNote separa las clases porque piden gestos opuestos. La sobrecarga del proveedor y el límite de ritmo pasan solas: la aplicación repite la llamada por su cuenta, respetando el tiempo que el proveedor pida, y solo ves el error si ni así funciona. El saldo o el límite de gasto no pasa con ninguna repetición — el mensaje lo dice, para que no sigas intentando. Una conversación demasiado larga pide una sesión nueva, no otro modelo. Y la falla del modelo — retirado, fuera de tu cuenta, fuera de tu plan, o aceptó la llamada y no respondió — es la única que cambiar de modelo resuelve. Cuando el tiempo pedido es demasiado largo para esperar, el mensaje dice cuántos segundos pidió, en vez de dejar la ventana parada.
Cambiar el modelo solo. Marca Cambiar de modelo automáticamente cuando el actual falle y LightNote prueba, en el orden que se muestra ahí mismo, los modelos recomendados para ese proveedor. Viene desmarcado a propósito: cada intento es una llamada cobrada en tu cuenta. La alternativa nunca cuesta más que el modelo que elegiste — la lista se publica del más caro al más barato y la aplicación solo baja por ella; un modelo personalizado, que no está en la lista, cae directo al más barato. Solo la falla definitiva queda guardada en el proveedor; cuando falló la red, el cambio vale solo para esa llamada y tu elección sigue vigente. El cambio nunca es silencioso: una notificación dice qué modelo respondió y si el cambio quedó guardado.
Y el aviso que llega antes de la falla. El cambio automático solo actúa después de que la llamada falló — pero el catálogo de modelos, que LightNote consulta por su cuenta, suele saber del retiro antes de eso. Cuando el modelo que el propio LightNote configuró para un proveedor sale del catálogo, un aviso lo dice, y en Configuración → Asistentes de IA aparece un botón para pasar al sustituto — que, por la misma regla, nunca es más caro. El aviso vale solo para el modelo que la aplicación eligió y que tú nunca tocaste: un modelo que escribiste es elección tuya, y LightNote no se mete en ella.
Cuando nada responde. LightNote dice qué pasó y ofrece cambiar el modelo, usar otro asistente o desactivar ese proveedor hasta que lo resuelvas. Un proveedor desactivado (columna Activo de la tabla, en Avanzado) desaparece de las listas sin perder la clave ni el resto de la configuración. En la lista de asistentes cada uno dice si es local o en la nube — elegir uno en la nube hace que el texto enviado salga de tu máquina.
Sin clave: LLM local
¿Todavía sin ninguna IA? Al usar Ctrl+K sin ningún asistente conectado, LightNote lo explica y ofrece conectar uno en el momento — y en cuanto lo conectas, la acción que pediste continúa, sin repetir el atajo.
LLM local (sin clave). Los proveedores locales — Ollama, LM Studio, llama.cpp — no necesitan clave de API: elige uno en Añadir (el selector indica si el servidor está en ejecución) y usa Buscar modelos… para elegir entre los modelos que hayas descargado. Si Ollama no está instalado, LightNote se ofrece a instalarlo. Ya viene registrado en la primera ejecución: solo falta elegir el modelo. Como un modelo local puede tardar mucho más en responder (sobre todo en la primera generación, al cargar el modelo), LightNote espera mucho más por él que por un servicio en la nube. Ningún texto tuyo sale de la máquina.
Aceptar, prompts y dónde viven las acciones
Aceptar por bloque. Cuando el resultado llega como diff, no tienes que aceptarlo todo: cada bloque cambiado tiene una casilla para incluirlo o no, y el texto final se reconstruye solo con los bloques que conservas. El prompt también lleva contexto automático del archivo (ruta, lenguaje y las líneas alrededor de la selección), para que la IA responda con más precisión sin que pegues nada.
Biblioteca de prompts. IA → Biblioteca de prompts… guarda prompts reutilizables como archivos .md en una carpeta Prompts/ de tu espacio de trabajo: formato abierto, versionable en Git y parte de tu segundo cerebro. El selector trae búsqueda, vista previa y un botón para crear un prompt nuevo. Al elegir uno, los campos {selection}, {file}, {folder}, {name} y {language} se rellenan con el contexto del editor actual (tus propias variables se conservan), y el texto se inyecta en el campo de Ctrl+K o se envía a la terminal de IA activa, sin enviarlo.
No solo en el editor de código. Las acciones de IA (Ctrl+K / Ctrl+I y el menú contextual) también funcionan en el editor de Markdown, en la nota incrustada de las Tareas y en el editor de consultas SQL de la base de datos: en cada uno el popup se abre sobre el cursor y aplica el resultado en el sitio.
Todas las acciones de IA están en el menú IA (en el botón ☰ y en el botón de la varita de la barra de actividades): Preguntar a la IA (Ctrl+K), Editar con IA (Ctrl+I), Sesiones de IA, Chat con IA, Biblioteca de prompts, Generar el archivo de contexto del proyecto, Activar la IA en esta carpeta y Configurar los asistentes de IA.
La ventana permanece abierta mientras escribes. No se cierra cuando haces clic en el editor: puedes releer el código o seleccionar otro fragmento sin perder la instrucción ya escrita. La cierran Esc, la ✕ de la propia ventana y las acciones de resultado (Aceptar/Rechazar). Al cambiar de pestaña se repliega guardando lo escrito: vuelve al mismo archivo, pulsa Ctrl+K y la instrucción reaparece donde la dejaste.
Sesiones de IA
Sesiones y copia aislada
IA → Sesiones de IA… abre un cockpit que lista, con una tarjeta por sesión, cada terminal de CLI de IA abierto en cualquier ventana de LightNote — con un punto de color del estado, el nombre de la CLI, la ventana y distintivos para lo que necesita atención (envíos programados, copia aislada). El doble clic enfoca el terminal; el menú ⋯ de la tarjeta (o el botón derecho) ofrece Revisar los cambios de esa sesión (abre la pantalla de revisión con la base en el checkpoint creado cuando empezó la sesión — véase Revisar cambios) y Programar un envío. Es la forma de seguir varias sesiones de "vibe coding" a la vez sin perderte entre ventanas.
Al abrir una CLI de IA como terminal dentro de un repositorio Git, LightNote guarda automáticamente un checkpoint (con la etiqueta "Sesión …"), para que luego puedas ver y revertir exactamente lo que esa sesión cambió. La función se puede desactivar en Configuración → General → Funciones.
Copia aislada (worktree): en carpetas con Git, LightNote puede ejecutar el asistente de IA en una copia aislada de la carpeta (una rama propia), sin alterar los archivos que editas a mano. La primera vez pregunta; después es automático (se activa/desactiva por carpeta en Configuración del Espacio de Trabajo → Integraciones). Un distintivo copia aislada marca la sesión (la rama y la ruta están en la ayuda emergente), y los elementos Fusionar… (trae los cambios a tu carpeta — si tienes cambios pendientes, pregunta antes) y Descartar… (desecha la copia y la rama) cierran el ciclo.
Inactiva, contexto e hibernar
Aviso de sesión inactiva. Cuando una CLI de IA queda inactiva (terminó o te está esperando), LightNote muestra una notificación; al hacer clic se abre la revisión de los cambios de esa sesión. Así puedes iniciar la tarea y alejarte. Se puede desactivar en Configuración → Terminal.
Archivo de contexto del proyecto. Al abrir una CLI de IA en una carpeta sin un archivo de contexto (CLAUDE.md o AGENTS.md), LightNote ofrece generar uno — y puedes hacerlo en cualquier momento desde Herramientas → Generar archivo de contexto del proyecto…. Un buen archivo de contexto describe la estructura y las convenciones del proyecto y ayuda a la IA a cometer menos errores, sin que reexpliques todo en cada sesión. Si hay un proveedor de IA configurado, él genera el contenido; si no, obtienes un esqueleto para completar.
Hibernar sesiones inactivas. Una CLI de IA parada sigue ocupando memoria (la conversación y el cliente del modelo). En Configuración → Terminal puedes definir un tiempo de silencio tras el cual LightNote termina el proceso y lo reanuda solo cuando vuelves a esa pestaña — el historial del terminal sigue en pantalla. Viene activado, con 30 minutos — tres sesiones paradas de Claude Code ocupaban más de 1 GB en la medición — y solo vale para sesiones en copia aislada cuyas CLI saben reanudar la conversación de la carpeta (hoy Claude Code y Antigravity), porque de otro modo la reanudación traería la conversación de otra sesión. Una sesión con un envío programado nunca hiberna. Y lo que vuelve es la conversación, no la pantalla de la herramienta: un texto escrito y aún no enviado se pierde.
Actividad y búsqueda por significado
Pestaña Actividad. La tabla muestra lo que se está ejecutando ahora; la pestaña Actividad guarda el historial: cada vez que un agente terminó su turno, empezó en una copia aislada o hibernó, con la fecha y un fragmento de la última respuesta. Los elementos no leídos aparecen en negrita y el recuento también sale en el menú de la bandeja — así quien se alejó del ordenador ve lo que se perdió, ya que las notificaciones son pasajeras. Abrir la pestaña marca todo como leído; un doble clic lleva de vuelta a la sesión. El cierre de la sesión también se registra — incluso cuando la CLI sale por su cuenta —, así una sesión que murió mientras no estabas deja rastro en vez de desaparecer. Si la sesión del evento ya no está abierta, el doble clic lo dice en lugar de no hacer nada.
Buscar por significado. Cuando la búsqueda no encuentra ninguna coincidencia literal, junto al resultado aparece la opción Buscar por significado: en vez de coincidir palabras, LightNote busca las notas que hablan del mismo tema —útil cuando recuerdas la idea pero no el término que escribiste—. También hay un conmutador ~ junto a los demás para ir directo. En este modo desaparecen regex, palabra completa, mayúsculas, el filtro de archivos y Sustituir: ninguno se aplica a una búsqueda por semejanza. La función necesita el refuerzo semántico (embeddings) en Configuración → General → Funciones; sin él, el botón te lleva a la pantalla para activarlo. La primera vez en cada carpeta, LightNote dice cuántos fragmentos indexará y pide confirmación: esa indexación la cobra tu proveedor y ocurre una sola vez; después, cada búsqueda solo cuesta la consulta.
Chat con IA
Cómo funciona
IA → Chat con IA… abre un chat que responde usando tus propias notas como contexto. En vez de enviar todo a la nube, LightNote recupera localmente los fragmentos más relevantes de tu vault (mediante ripgrep, sin embeddings ni servicio externo), arma la pregunta con esos fragmentos y la envía a un proveedor de IA por API que hayas registrado. La respuesta llega con las notas de origen como citas en las que se puede hacer clic — haz clic para abrir la nota. Ideal para "conversar con tu segundo cerebro" y reencontrar lo que ya anotaste. El historial de la conversación queda solo en memoria (no se guarda); la función se puede desactivar en Configuración → General → Funciones.
La ventana. Los selectores están en una única barra superior: la IA, la carpeta de notas y —cuando hay un editor de texto activo— el contexto; a la derecha quedan los dos permisos (Herramientas y Permitir cambios) y el botón +, que inicia una conversación nueva. Antes de la primera pregunta, la pantalla dice sobre qué responderá la ventana y ofrece atajos de un clic, como Resumir esta carpeta. En el campo de pregunta, Enter envía y Shift+Enter hace un salto de línea; mientras llega la respuesta, el botón de envío se convierte en Detener.
Herramientas y permisos
Dejar que la IA use herramientas. La casilla Permitir cambios cambia el funcionamiento: en vez de responder solo con los fragmentos que recuperó la búsqueda por términos, el modelo puede buscar por su cuenta — leer un archivo, buscar notas, listar tareas — y recién entonces responder. Al activarla, LightNote comprueba en el momento si el modelo elegido sabe llamar herramientas: muchos proveedores aceptan la petición y simplemente las ignoran, lo que sin esa comprobación daría una respuesta inventada con aire de consultada. El veredicto se recuerda siete días por cada par proveedor+modelo. Requiere un proveedor por API (una CLI local no puede recibir herramientas). Al final aparece la lista de lo que se usó realmente, para que juzgues la respuesta en vez de confiar en ella. Si el veredicto es negativo — el proveedor pudo haber estado caído en ese momento —, aparece un botón Comprobar de nuevo junto al mensaje, que repite la prueba ignorando lo guardado.
Dejar que la IA modifique tus cosas. La segunda casilla, Permitir cambios, es un paso aparte y viene desactivada. Con ella, la IA también puede crear notas y tareas, cambiar propiedades y anotar en la nota del día — pero nada ocurre sin tu confirmación: el cambio aparece en la conversación en palabras claras («crear la tarea Comprar pan»), con Permitir y Rechazar. Rechazar no termina la conversación; se le avisa al modelo y sigue explicando o proponiendo otra cosa. Leer nunca pide confirmación — solo modificar. Quedan fuera, a propósito, sobrescribir archivos cualesquiera y acceder a la red: mientras la IA solo lee, un texto malintencionado que llegue en una nota sincronizada desde fuera no puede convertirse en un cambio en tu disco. Cuando el cambio es una anotación en la nota del día, la petición también indica en qué carpeta va a caer: es la única escritura cuyo archivo de destino no está en lo que pidió la IA.
Sobre qué responde
Notas o el archivo abierto. El combo Contexto:, en la parte superior de la ventana, elige de qué trata la conversación: Notas del vault (lo predeterminado, descrito abajo) o Editor actual — que responde sobre el archivo abierto en el editor en lugar del vault, usando la selección y las líneas de alrededor (o el archivo completo, con la casilla Archivo completo). Así la misma ventana sirve para hablar de sus notas y del código que está editando, en varios turnos. El ámbito Editor actual solo aparece cuando hay un editor de texto activo. Y en el asistente rápido (Ctrl+K), el resultado trae un botón Continuar en el chat → que reabre esta ventana ya en el ámbito Editor actual, con la pregunta y la respuesta de esa ronda — para profundizar sin empezar de cero.
¿Qué notas? La ventana es única y responde sobre una carpeta a la vez — el combo Notas de:, junto al selector de IA en la barra superior, muestra y elige cuál. Se abre ya apuntando a la carpeta de la ventana desde la que abrió el chat y lista las carpetas abiertas ahora, seguidas de las recientes; Elegir carpeta… apunta a cualquier otra. Cambiar de carpeta vale para las preguntas siguientes — incluso para preguntar a las notas de un proyecto mientras trabaja en otro. Elegida a mano, la carpeta sigue valiendo hasta que la cambie de nuevo (reabrir la ventana no devuelve el alcance). Mientras una pregunta está en curso — incluso detenida esperando tu confirmación —, los selectores de IA, de contexto y de carpeta quedan bloqueados: la respuesta que viene pertenece al modelo y a la carpeta de cuando preguntaste.
Cómo preguntar. La recuperación es por asunto, no por instrucción: LightNote toma las palabras de tu pregunta y busca las notas que las contienen. Menciona un tema que aparezca en las notas ("¿qué anoté sobre Postgres?") en vez de una petición genérica ("haz un resumen") — esta última no tiene ninguna palabra de contenido que buscar, así que no se recupera nada y el chat avisa de que la respuesta no usó tus notas. Solo se leen notas .md/.markdown; en una carpeta sin ninguna, el chat lo indica y no gasta una llamada de IA.
Mejor búsqueda, resumen y reescritura. La recuperación usa un índice local con ranking BM25 que ignora los acentos ("configuração" encuentra "configuracao") y también funciona en idiomas sin espacios entre palabras (japonés, chino, coreano) — ripgrep es el respaldo mientras se construye el índice. El botón Resumir esta carpeta —y la opción Resumir con IA… del menú contextual de cualquier carpeta del explorador— lee las notas por lotes y devuelve un documento. Y en Configuración → General → Funciones, la opción Reescribir la pregunta con IA amplía tu pregunta en palabras clave antes de buscar (cuesta una llamada de API por pregunta).
Clave y conversaciones
Basta con una clave. En la primera ejecución, LightNote ya deja OpenAI, Google Gemini y Anthropic (Claude) registrados en Ajustes → Asistentes de IA: solo falta pegar tu clave de API en el proveedor que uses. Si ningún proveedor tiene clave, la ventana muestra un botón Configurar ahora que abre esa pantalla directamente.
Las conversaciones se guardan. El botón de reloj en la parte superior abre la lista de conversaciones anteriores de esa carpeta: haga clic en una para volver a ella. Nueva conversación archiva la actual en lugar de borrarla, y el botón derecho en la lista elimina una conversación definitivamente (con confirmación). Las conversaciones se guardan por carpeta: cambiar la carpeta de notas cambia la lista.
Qué hacer con la respuesta
Qué hacer con una respuesta. Bajo cada respuesta hay Copiar (pone el texto en Markdown en el portapapeles, con el formato intacto) y Capturar en la nota (envía la respuesta a la nota del día, junto con enlaces a las notas citadas). En el menú Acciones de la conversación están Copiar conversación, Guardar conversación como nota… (guarda un .md en la carpeta consultada), Rehacer última respuesta y Editar última pregunta.
Adjuntar un archivo. Cuando la búsqueda no encuentra lo que tenía en mente, use el botón + para adjuntar un archivo: siempre entra en la pregunta, fuera de la competencia de la búsqueda. Sirve nota, código, texto y PDF (el texto del PDF se extrae); un binario se rechaza de inmediato en lugar de convertirse en ruido en el contexto. El adjunto aparece como una píldora (haga clic para quitarlo) y desaparece al empezar una conversación nueva. En los proveedores compatibles, la respuesta también va apareciendo poco a poco, mientras el modelo escribe.
Memoria del asistente. En el menú Acciones de la conversación (el botón ☰ de arriba), Memoria del asistente… abre —creándola la primera vez— la nota Memoria.md en la raíz de la carpeta seleccionada. Todo lo que haya en ella entra en cada pregunta hecha sobre esa carpeta, antes de los fragmentos encontrados: tus preferencias, las decisiones que ya tomaste, lo que descartaste y por qué. Es un .md normal: edítalo cuando quieras, versiónalo con Git, bórralo para apagar la memoria. Con las herramientas de escritura activadas, el asistente también puede proponer guardar un dato ahí, y como toda escritura espera tu autorización.
Resumir una carpeta. Sirve para todo el espacio de trabajo o para cualquier subcarpeta: haz clic derecho sobre ella en el explorador y elige Resumir con IA…. Antes de gastar nada, LightNote te dice cuántas notas se leerán y cuántas llamadas de IA hará —cada una cobrada por tu proveedor— y te deja elegir la forma: Panorama, texto corrido, o Consolidar conocimiento, con secciones fijas (decisiones, pendientes, ideas, contradicciones y preguntas abiertas; la sección sin contenido se omite en vez de rellenarse con invención). Si la carpeta tiene más notas de las que caben en el tope de coste, la respuesta dice cuántas quedaron fuera. Al final, Guardar como nota escribe el resumen dentro de la carpeta resumida, con la fecha y el número de notas en el encabezado, y nunca sobrescribe uno anterior.
Probar APIs HTTP (.lnh)
Herramientas → Nueva prueba de API (.lnh)… abre un cliente HTTP guardado en
un archivo .lnh. Un archivo representa un endpoint (método, URL,
cabeceras y cuerpo) y mantiene varias pruebas en la lista de la izquierda —
cada prueba con sus valores para las variables {nombre} usadas en la
URL, las cabeceras y el cuerpo, más el resultado de la última ejecución (estado,
tiempo, fecha, cabeceras y cuerpo de la respuesta). También muestra el comando
curl equivalente. La misma operación puntual está disponible vía
CLI (http) y MCP (http_request).
Ctrl+Enter envía la petición.
Importar y exportar OpenAPI. El botón de flechas en la parte
superior de la lista de pruebas abre Importar OpenAPI… y Exportar OpenAPI….
La importación lee una especificación en YAML o JSON en las tres generaciones en
uso — Swagger 2.0, OpenAPI 3.0 y 3.1 — y arma la prueba sola: los
{parámetros} de la ruta ya usan la misma sintaxis que las variables
{nombre} del .lnh, los ejemplos declarados pasan a ser los
valores de la prueba, el esquema de seguridad se convierte en la cabecera
Authorization y cada servidor declarado se convierte en una prueba propia
(homologación y producción lado a lado). Como un .lnh guarda un
endpoint, una especificación con varias operaciones pregunta cuál importar — o guarda
todas a la vez, un archivo .lnh por operación.
La exportación hace el camino inverso y genera una especificación OpenAPI 3.0.3 a
partir del archivo: servidores, parámetros y cuerpo salen de la plantilla, y las
respuestas de ejemplo salen de las ejecuciones registradas. Es un esqueleto, no un
contrato completo — el .lnh describe llamadas, así que tipos, descripciones y
esquemas no se reconstruyen. Sus pruebas viajan en el campo
x-lightnote-tests, y por eso vuelven intactas al reimportar el archivo.
Importar un comando curl. En el mismo botón, Importar comando
curl… abre un cuadro para pegar — de ahí viene el comando, no del disco, y el campo
ya viene relleno cuando hay un curl en el portapapeles. Entiende los tres
dialectos en los que circula el mismo comando: el de Copiar como cURL de
Chrome/Firefox (comillas simples), el de Copy as cURL (cmd) en Windows (con
^) y el ejemplo de documentación cortado con \. El método sale
del -X — o se deduce: POST cuando hay cuerpo, GET cuando no.
La importación es literal: ningún valor se convierte solo en una variable
{nombre}, porque adivinar qué token es un secreto fallaría. Algunos casos
avisan en vez de mentir — un cuerpo que viene de un archivo (-d @archivo) no
se puede leer, y el envío multipart (-F) no se reproduce fielmente, así que
los campos van al cuerpo como texto para que los ajuste.
Bases de datos (.lnc)
La conexión
Una conexión es un archivo .lnc (LightNote Connection) dentro del
propio espacio de trabajo — versionable en Git y portable entre máquinas. Crea una
con Nuevo → Nueva conexión (o abre un .lnc existente): esto abre
la vista de Base de datos, con la barra de estado de la conexión (Conectar /
Desconectar / Reconectar / Editar), el árbol de Esquema (esquemas → tablas →
columnas, cargado bajo demanda) y pestañas internas .sql. Los archivos
.sql abiertos y los recientes se guardan dentro del
.lnc, de modo que la vista se reabre en su estado anterior. Si no había
nada abierto, comienza con una consulta vacía (sin título) donde puedes
escribir SQL de inmediato; al guardar (Ctrl+S) LightNote pide solo un
nombre y escribe el archivo dentro de la carpeta del proyecto (sin
diálogo de "guardar en cualquier lugar"). El botón + Pestaña abre una nueva
consulta vacía, te permite abrir un archivo (el selector se abre en la carpeta
del proyecto) o elegir un .sql reciente / cualquiera de la carpeta
del proyecto.
Un .sql abierto directamente desde el árbol es solo código
(resaltado SQL, sin conexión).
Controladores: SQLite y DuckDB (archivo) nativos; PostgreSQL,
MySQL/MariaDB, SQL Server y genérico vía ODBC; Oracle nativo
(sin ODBC). SQL Server usa el controlador msodbcsql de Microsoft (instálalo en
la máquina) y ofrece autenticación de Windows o usuario/contraseña, además de
las opciones de cifrado del canal (Encrypt / confiar en el certificado). Para
Oracle, define la carpeta del Oracle Instant Client en Ajustes generales →
Base de datos — se carga en tiempo de ejecución, sin nada que instalar. La
conexión Oracle tiene cuatro modos: Service Name (host/puerto/service),
SID (host/puerto/SID), Nombre TNS (alias del tnsnames.ora
de la carpeta del cliente) y Descriptor TNS completo (pegado en un campo de
texto).
Contraseña: marca Guardar contraseña para cifrarla dentro del
propio .lnc (cripto portable, se abre en otra máquina); sin marcar,
la contraseña no se guarda y se pide en cada conexión. El cifrado usa una
Frase de paso por espacio de trabajo, definida en Ayuda → Configurar Frase
de paso; consérvala bien — sin ella la contraseña no se puede abrir en ningún
otro sitio. La Frase de paso se guarda en caché solo en la máquina local (nunca va a
Git).
Marca Conectar al abrir para que la conexión se abra automáticamente al
abrir el .lnc. La conexión automática es silenciosa: si hay que
escribir la contraseña (modo preguntar, o cifrada sin la Frase de paso en caché en la
máquina), el archivo se abre desconectado, sin interrumpir.
Ejecutar y ver el resultado
Ejecutar: Ctrl+Enter ejecuta la instrucción bajo el cursor y Alt+X ejecuta el script entero; los resultados aparecen paginados, cada uno en una pestaña Resultado con una barra de acciones abajo: Obtener el siguiente bloque, Congelar el resultado, Recuento total, cambiar el Límite de filas, Actualizar (vuelve a ejecutar), Ver/Copiar SQL, Exportar... y Generar SQL de la fila seleccionada.
Congelar el resultado: lee el resultado completo de la base de datos de una sola vez y lo guarda en una tabla local (en disco, si no cabe en memoria). A partir de ahí la cuadrícula se desplaza sin consultar la base, el recuento de filas pasa a ser exacto (sin necesidad de Recuento total), hacer clic en un encabezado ordena (otro clic invierte; un tercer clic vuelve al orden en que la base entregó las filas) y la exportación también sale de la copia local. Ordenar por el encabezado vale hasta 100 mil filas; por encima de eso se rechaza, con el motivo en el tooltip del encabezado, porque cada página tendría que reordenar la copia completa y recorrer la cuadrícula volvería a tardar minutos. Un resultado que ya llegó completo en la primera página se ordena sin necesidad de congelar: las filas ya están en memoria. Lo que no se ordena es la primera parte de un resultado todavía paginado: el encabezado afirmaría un orden que solo vale para lo que está en pantalla. El gráfico y la tabla dinámica pasan a cubrir el resultado completo, incluso en bases donde el gráfico no existía. Si la congelación se detiene antes del final (pulsaste Detener o se alcanzó el tope), las filas siguen locales pero el gráfico y la tabla dinámica siguen en el servidor: sumar sobre parte del resultado daría un número equivocado, y ordenar la cuadrícula ordena solo las filas traídas, no el resultado completo. Actualizar descongela y vuelve a ejecutar la consulta. Independientemente de congelar, las páginas que ya pasaron por la cuadrícula quedan guardadas localmente: volver atrás a una de ellas no consulta la base de datos otra vez. Solo se ejecuta una congelación a la vez: con dos resultados abiertos, pulsar Congelar el resultado en el otro se rechaza con el motivo, en lugar de interrumpir el que está en curso; para detenerlo, use Detener en su propia pestaña.
Cuadrícula de resultados: un NULL se muestra en cursiva atenuada,
distinto de un texto vacío, y los números se alinean a la derecha; al seleccionar varias
celdas, el pie muestra el recuento de la selección y, cuando son numéricas, su suma
y su promedio. El botón Panel de valor de la barra inferior (o Ver valor en el
panel del menú contextual) abre un panel lateral con el valor completo de la
celda seleccionada, sin recortar, con un botón Formatear que embellece JSON/XML solo
en la visualización. En el menú contextual de una celda, Filtrar por este valor /
Excluir este valor reejecutan la consulta con un WHERE por la celda, e
Ir al registro referenciado sigue la clave foránea de la columna y consulta la tabla
padre por el valor de la celda.
Gráfico y tabla dinámica: dónde se hace el cálculo. El pie de la cuadrícula trae un selector entre Datos locales y Tabla completa (en el servidor), y el botón muestra cuál está vigente. Cuando el resultado cupo entero en la primera página, lo predeterminado es local: LightNote agrega sobre el resultado que ya está en pantalla, sin volver a la base de datos en cada ajuste de eje, de agregado o de intervalo — y, como el motor local es DuckDB, el gráfico pasa a existir también en Oracle, SQL Server, PostgreSQL y MySQL, donde su SQL no se ejecuta en el servidor. Cuando el resultado llegó truncado, la opción local queda no disponible con el motivo: agregar sobre una muestra daría un número equivocado, y avisar del corte no protegería a nadie, porque lo que se lee en un gráfico es la altura de la barra. La opción del servidor agrega sobre la consulta completa, con una consulta por cada ajuste. Las columnas numéricas que la base entrega como texto — el caso del NUMBER de Oracle — se reconocen como números; los identificadores con cero a la izquierda, como 01310, siguen siendo texto.
Plan de ejecución: el botón Plan de ejecución de la barra de herramientas
muestra el EXPLAIN de la instrucción bajo el cursor (SQLite, DuckDB, PostgreSQL
y MySQL); en las bases de datos que no exponen el plan en una sola instrucción (SQL Server,
Oracle) el botón queda deshabilitado, con el motivo en su información.
El esquema
Propiedades del objeto: haga doble clic en una tabla del árbol de
esquema (o pulse F4, o elija Propiedades en el menú contextual) para abrir
una pestaña con la estructura del objeto, en cuatro subpestañas: Columnas (n.º,
nombre, tipo, si admite nulos, valor predeterminado y un icono de clave en las columnas
de la clave primaria), Claves (primarias, foráneas, únicas y checks; al
hacer doble clic en una clave foránea se abre la tabla referenciada), Índices y
DDL — el CREATE TABLE del objeto, listo para copiar, guardar
como .sql o abrir en una pestaña editable. Cuando la base de datos no
proporciona el DDL ya hecho (PostgreSQL y SQL Server no tienen ese comando), LightNote lo
reconstruye a partir de los metadatos — lo mismo ocurre cuando el comando de DDL
se deniega por falta de permiso — y lo indica claramente en la pestaña. Si ni siquiera el
catálogo de columnas se puede leer (sin permiso o catálogo no disponible), no hay de qué
reconstruir: la pestaña lo avisa en vez de quedarse vacía en silencio. El
menú contextual de la tabla también ofrece Copiar DDL sin abrir la pestaña.
Árbol de esquema: el árbol de Esquema separa Tablas de Vistas (cada una con su icono) y marca con un icono de clave las columnas de la clave primaria. La caja de filtro solo criba entre los objetos ya cargados (la carga bajo demanda no se fuerza solo para filtrar).
Explorar el esquema: Haz clic derecho en
una tabla para Insertar SELECT en el editor, Ver datos, Contar
filas, Copiar nombre cualificado o abrir el submenú Generar SQL →
INSERT/UPDATE/MERGE: una pantalla lista las columnas de la tabla para que
marques Incluir y Clave, muestra una vista previa en vivo e inserta el
comando en el editor (MERGE sale en ANSI; si el controlador no lo admite, aparece un
aviso). En la propia cuadrícula de resultados, el botón Generar SQL de la
barra inferior construye un INSERT/UPDATE/DELETE prerellenado con los valores
de la fila seleccionada (disponible cuando la consulta es un
SELECT de una sola tabla). Los nombres de tablas y columnas que
exploras en el árbol también empiezan a aparecer en el autocompletado
(Ctrl+Espacio) de los editores .sql de la conexión, sin consultas
adicionales a la base de datos.
Exportar, variables y transacciones
Exportar resultados: haz clic derecho en la cuadrícula de resultados y elige
Exportar resultado... para escribir CSV (delimitador, carácter de
comilla, entrecomillar siempre, fila de encabezado, texto NULL), JSON Lines o
SQL (instrucciones INSERT con un nombre de tabla), con un límite
de filas opcional. La exportación recorre la consulta completa en modo
streaming (re-obtención paginada), no solo lo visible en pantalla.
Variables de script: usa @set nombre = valor en una línea del
script para definir una variable — el prefijo @ la mantiene alejada de
la base de datos (no choca con el SET real de Postgres/DuckDB/SQL
Server). Las referencias como :nombre se sustituyen antes de ejecutar
(fuera de cadenas y comentarios; el cast ::tipo y los binds como
:1 quedan intactos); un :nombre sin valor abre un prompt
antes de ejecutar. El botón Variables de la barra de herramientas abre la
pantalla con las variables definidas (editar/agregar/quitar).
Historial de consultas: el botón Historial abre una ventana con las
últimas instrucciones ejecutadas con éxito en esta conexión, en columnas SQL /
Cuándo / Duración / Filas. Selecciona una para Volver a ejecutar,
Insertar en el editor o Copiar (doble clic inserta), o usa Borrar
historial. Se guarda solo en la máquina local (no va ni a Git ni al
.lnc).
Transacciones: el botón Autocommit (activado por defecto) y los botones Commit/Rollback viven en la barra de herramientas. Con el autocommit desactivado, los cambios quedan pendientes hasta que confirmes (Commit) o descartes (Rollback); desconectar con una transacción abierta pregunta qué hacer.
Conexión SSH (.lns)
Una conexión SSH es un archivo .lns en el espacio de trabajo —
versionable y portable, como el .lnc. Crea una con Nuevo → Nueva
conexión SSH: la pestaña abre una terminal SSH integrada (a través del
ssh.exe de Windows) y una mini-barra de archivos remotos
(SFTP).
El navegador de archivos muestra una carpeta a la vez (estilo
MobaXterm/WinSCP): la primera fila siempre es .. para subir un nivel, y
el doble clic en una carpeta entra en ella. La barra de ruta de arriba te
permite escribir una ruta remota y pulsar Enter para ir allí. El botón
Sincronizar con la terminal hace que la carpeta mostrada siga el directorio
actual de la sesión SSH (donde sea que hayas hecho cd en la terminal).
El menú contextual ofrece Abrir en el editor (descarga el archivo, lo abre en
una pestaña y lo vuelve a subir al guardar), Descargar, Subir,
Nueva carpeta, Renombrar, Eliminar y Permisos (chmod).
También puedes arrastrar archivos desde el Explorador al panel para subirlos a
la carpeta actual.
La contraseña se puede cifrar dentro del .lns con la
Frase de paso del espacio de trabajo o pedirse en cada
conexión. Las claves SSH del agente/perfil de Windows funcionan con normalidad,
ya que la conexión usa el cliente OpenSSH del sistema.
La opción Conectar al abrir (en el diálogo de conexión) inicia la sesión
SSH automáticamente al abrir el .lns. Si la contraseña no está guardada,
la propia terminal la pide al conectar.
Seguridad: Frase de paso, PIN y Markdown seguro
La Frase de paso se define por espacio de trabajo en Ayuda → Configurar
Frase de paso… y es la clave de todo lo que LightNote cifra: contraseñas de
conexión (.lnc/.lns), celdas de contraseña de la
Tabla personalizada y archivos .lne. El
cifrado es fuerte y portable (Argon2id + XChaCha20-Poly1305): un archivo
cifrado se abre en otra máquina una vez que vuelves a introducir allí la misma Frase
de paso. Consérvala bien: sin ella, los datos cifrados no se pueden recuperar.
La Frase de paso se guarda en caché solo en la máquina local (nunca va a Git).
Para cambiar la Frase de paso, abre la misma pantalla y edita el campo de
la Frase de paso (viene rellenado con la actual). Al confirmar, LightNote vuelve a
cifrar automáticamente todos los datos seguros del espacio de trabajo —
contraseñas en .lnc/.lns, el contenido de los archivos
.lne y las celdas de contraseña de las Tablas personalizadas
(.lnd) — de la Frase de paso antigua a la nueva. El descifrado es
todo o nada: si un solo elemento no se puede descifrar, no se cambia nada y
LightNote te dice cuál. Durante la escritura, cada archivo se copia a una
copia de seguridad antes de reescribirse; si uno falla al escribir, LightNote
pregunta si deshacer todo (restaurar las copias) o omitir ese archivo y
continuar (conserva la Frase antigua, con un aviso al final). (Las contraseñas en
modo "preguntar" no tienen nada que volver a cifrar.)
El PIN (4–8 dígitos) es un bloqueo local opcional: protege acciones sensibles de la UI (revelar contraseñas, abrir notas seguras) sin escribir la Frase de paso cada vez. No cifra nada y se aplica solo a esta máquina.
El archivo Markdown seguro (.lne, en Nuevo → Archivo
Markdown seguro) es una nota cifrada en el disco: al abrirla, LightNote pide el
PIN (si está definido) y la Frase de paso, descifra solo en memoria y vuelve a
cifrar al guardar (Ctrl+S). Por seguridad, nunca se reabre por sí mismo cuando se restaura la sesión. Fuera de eso, es una nota como las demás: tiene asistente de IA (Ctrl+K/Ctrl+I y el botón IA de la barra), Ctrl+clic en wikilinks y etiquetas, abre enlaces y muestra la dirección en la barra de estado. Conviene recordar lo que implica la IA: el fragmento enviado sale de la máquina si el asistente elegido es un servicio en la nube; con un modelo local (Ollama, LM Studio) no sale. Y las notas seguras siguen fuera de Preguntar a las notas: ese lee los .md del espacio, y en el disco un .lne es texto cifrado.
Notas diarias, captura rápida y bandeja
La nota de hoy es un .md por día en la carpeta Notas
diarias — una sola carpeta, válida para todo LightNote, definida en
Ajustes → Notas y escritura. Desde
el menú de la bandeja: Nota de hoy abre la nota del día; Captura
rápida… (Ctrl+Alt+N, un atajo global de Windows — o clic central en
el icono de la bandeja) abre una ventana pequeña donde escribes y pulsas
Ctrl+Enter: el texto se convierte en una viñeta con marca de tiempo en la nota
de hoy, escrita directamente en el disco, sin abrir una ventana del editor.
El menú de la bandeja también lista las ventanas abiertas y los espacios de trabajo recientes, y lleva los interruptores de energía: Mantener el equipo activo y Mantener la pantalla encendida (útiles para tareas largas; LightNote ya mantiene la energía por sí mismo mientras ejecuta IA de una pasada, celdas de Bloques o scripts SQL). El lanzador (ventana de inicio) tiene búsqueda, doble clic para abrir y un menú contextual para fijar arriba, abrir en el Explorador o quitar de la lista.
Las acciones que valen para todo LightNote — y no solo para la ventana en la que estás — viven en el menú General (☰ General, o el botón con el icono de la app en la barra de actividades), que tiene exactamente la misma forma que el menú de la bandeja: en la raíz Nota de hoy, Captura rápida y Calendario; luego los submenús Capturar (tarea rápida, grabar audio, reencontrar notas antiguas, notas adhesivas), Abrir (launcher, abrir espacio de trabajo, abrir archivo suelto, archivos sueltos) y Energía; al final, Configuración general. La regla es simple: lo que está en el menú de la bandeja está en el menú General — y solo ahí. Al pasar el ratón por un elemento aparece el aviso “función general: vale para todo LightNote, en cualquier ventana”.
Adónde va la captura. Las notas diarias y las tareas rápidas tienen un destino único y previsible: la carpeta definida en Ajustes → Notas y escritura y el tablero definido en Ajustes → General, válidos en cualquier ventana. En la primera captura, si no hay nada definido, LightNote pregunta dónde guardarla y registra la elección — en vez de mandarte a buscar la configuración. Un proyecto que necesite su propio diario (un cliente con confidencialidad, un registro que deba vivir en el repositorio) puede reclamar las capturas hechas en esa ventana en Configuración del espacio de trabajo → Capturas; la bandeja y los atajos globales siguen escribiendo en el destino general. El aviso de confirmación siempre dice adónde fue el texto.
El menú de la bandeja es corto a propósito: en la raíz quedan las ventanas abiertas y las tres acciones diarias — Nota de hoy, Captura rápida y Calendario. El resto vive en los mismos submenús del menú General: Capturar, Abrir (que en la bandeja trae además la lista de espacios recientes), IA (sesiones de IA y preguntar a las notas — en la ventana eso es el menú IA completo) y Energía. Al final, configuración y salir.
Reencontrar notas antiguas
Lo que más hace fracasar a un «segundo cerebro» no es la falta de una función, sino la nota que nunca se vuelve a leer. Desde el menú de la bandeja (sección Capturar), LightNote trae de vuelta notas antiguas: Nota aleatoria abre una nota .md al azar del espacio de trabajo (evitando las que aparecieron en las últimas dos semanas), y En este día lista las notas cuyo aniversario de creación es hoy (mismo día y mes, en años anteriores). Ambas acciones están también en el menú General → Capturar de la ventana.
La fecha de creación viene del campo created/date del frontmatter, si existe; si no, de la fecha del archivo. La función nunca escribe en tus notas: solo las abre. Se puede desactivar en Configuración → Recursos («Reencontrar notas antiguas»).
Tus notas en el móvil
Tu espacio de trabajo es Markdown puro en una carpeta — formatos abiertos, sin base de datos propietaria ni nube obligatoria. Por eso cualquier app de móvil lee y edita tus notas, sin que LightNote necesite una aplicación propia para el teléfono: basta con sincronizar la carpeta con un servicio de archivos y abrirla en un editor de Markdown en el móvil.
Paso a paso: sincroniza la carpeta del espacio de trabajo con OneDrive,
Google Drive, Dropbox o Syncthing y, en el móvil, abre esa carpeta en un
editor de Markdown (por ejemplo Obsidian Mobile, iA Writer,
GitJournal o Markor). Como todo es .md en texto, ambos
lados ven y escriben las mismas notas.
Recomendaciones: en el móvil, edita solo archivos .md —
los tipos propios de LightNote (.lne seguro, .lnc,
.lnt, .lnb, .lnd…) no se abren fuera de la
aplicación, y el .lne en particular está cifrado. Si ambos lados
editan sin conexión y hay conflicto, resuélvelo mediante la carpeta
Inbox: deja ahí la captura (texto, audio o foto) y deja que LightNote la
integre en la nota del día, en vez de sobrescribir. La ubicación es deliberada —
la sincronización es por archivos/Git, no por plugins: tú eres dueño de
tus datos y eliges el transporte. Para escribir directamente en la nota de hoy,
edita el archivo Notas diarias/aaaa-mm-dd.md — el nombre de la
carpeta cambia según el idioma.
Grabar audio (voz, reunión) con transcripción por IA
Desde el menú de la bandeja, Grabar audio… abre una ventana flotante y arrastrable (arrástrala por la barra de título) para grabar del micrófono, del audio del sistema (lo que suena en el equipo) o de ambos a la vez — la fuente elegida se recuerda para la próxima vez. Usa ● Grabar, ‖ Pausar y ■ Detener; el archivo va a la carpeta Grabaciones del espacio de trabajo, comprimido a .m4a al detener.
Dos maneras de transcribir. En Configuración → Asistentes de IA → Transcripción de audio, el selector Cómo transcribir elige entre el modelo de transcripción dedicado (estilo Whisper: OpenAI whisper-1, Groq whisper-large-v3 — gratis — o un Whisper local) y el modelo general con audio en el chat — el audio va dentro de la conversación de un modelo multimodal, que es como transcribe Google Gemini (gemini-2.0-flash, buen plan gratuito). Cambiar el proveedor preselecciona el modo correcto y sugiere el modelo; los audios largos se trocean automáticamente en cualquier modo. El modelo sugerido se puede cambiar a mano — LightNote respeta el id que escribas, incluso para un proveedor que aún no reconozca.
Al empezar a grabar, la ventana se colapsa sola en una píldora compacta (un punto rojo parpadeante, un cronómetro, Pausar/Detener) — fácil de arrastrar a una esquina y casi ocultar durante una reunión larga; el botón de minimizar/expandir en el título alterna manualmente, y detener la grabación la expande de nuevo. Ctrl+Alt+R (atajo global) es la nota de voz rápida: pulsa para empezar a grabar del micrófono al instante, pulsa de nuevo para detener, sin abrir la ventana con el ratón.
Si hay un proveedor de IA por API configurado (en Configuración → Asistentes de IA → Transcripción de audio), aparecen los botones Transcribir y Transcribir + Resumir al detener (deshabilitados mientras el audio aún se está comprimiendo); el combo Al detener dispara la transcripción sola en cuanto termina la grabación. LightNote envía el audio para su transcripción (modelo estilo Whisper) y guarda una nota .md junto al audio con el texto y, opcionalmente, un resumen. Activa/desactiva la función en Configuración → General → Funciones.
La misma ventana es un minirreproductor: debajo de los controles, una lista de grabaciones de la carpeta muestra cada archivo con botones T (abrir la transcripción) y R (abrir el resumen) cuando ya existen, además de un ▶ para reproducir allí mismo (barra de progreso con avance); el menú ⋮ de cada fila reproduce, (re)transcribe o abre la nota. Regenerar una transcripción no sobrescribe la anterior: crea una nueva versión al lado (nota.md, nota (2).md…), conservando el historial. La fuente de captura es un botón de menú (Micrófono / Audio del sistema / Ambos), con Ambos por defecto. El enlace Abrir carpeta de grabaciones abre la carpeta en la ventana principal.
Notas adhesivas
Las notas adhesivas son pequeñas cajas de texto sin formato y de colores que flotan sobre el escritorio, al estilo de la app Notas rápidas de Windows. Desde el menú de la bandeja: Nueva nota adhesiva (Ctrl+Alt+S, un atajo global) crea una caja; Mostrar notas adhesivas (Ctrl+Alt+H) las muestra u oculta todas a la vez. Cada nota tiene un + para crear otra y un menú ☰ para cambiar el color, Enviar a la nota de hoy (escribe el texto como una viñeta en la nota de hoy y descarta la caja) o Eliminar. Arrastra el encabezado para mover y la esquina para redimensionar. Las notas se guardan automáticamente y reaparecen al volver a abrir LightNote.
Lista de verificación. El botón de lista del encabezado (junto al
+) convierte la línea del cursor — o las líneas seleccionadas — en
elementos con casilla, y lo deshace con un segundo clic. También puedes escribir
[ ] y un espacio al comienzo de la línea ([x] crea el
elemento ya marcado). Haz clic en la casilla, o usa Ctrl+Shift+Enter, para
marcar y desmarcar: el elemento completado queda tachado. Enter crea el
siguiente elemento; Enter en un elemento vacío, o Retroceso al
comienzo de él, vuelve al texto normal. Quitar elementos completados, en el
menú de la nota, borra los marcados de una vez (Ctrl+Z lo deshace). Los
elementos se guardan como tareas de Markdown (- [ ] elemento), así
que Enviar a la nota del día lleva cada uno como tarea.
Calendario
General → Calendario… abre una única ventana con un calendario que
marca los días que tienen tareas de todos los tableros .lnt
registrados. Al lado, la lista Del día (tareas del día seleccionado) y la
lista Pendientes; el botón Nota del día abre la nota diaria de esa
fecha. Al hacer clic en una tarea se abre el tablero correspondiente.
En la cuadrícula, cada día con tareas recibe puntos de color con el color del estado del Kanban (hasta tres), el día de hoy se marca con un anillo y el día seleccionado con un círculo relleno; Hoy vuelve al mes actual y el nombre del mes abre un menú para saltar de mes o de año. Las Pendientes se agrupan por situación — Atrasadas, Hoy, Próximos 7 días, Después y Sin fecha —, con el vencimiento en un distintivo relativo («ayer», «hoy», «hace 3 días»). Un doble clic en un día abre la tarea rápida ya con esa fecha.
Las tareas escritas en las notas entran aquí. Una casilla - [ ] en una nota es una tarea como cualquier otra, y ahora aparece en Pendientes junto a las tarjetas de los tableros, en los mismos grupos. Si la línea dice cuándo (mañana, viernes, 12/08), cae en el grupo y el día correctos. Un doble clic abre la nota en la línea de la casilla: la nota sigue siendo donde se edita la tarea. El barrido corre en segundo plano: la ventana abre al instante con los tableros y las tareas de las notas llegan enseguida. En la cuadrícula, el número del día sale subrayado cuando ese día ya tiene nota diaria, y la lista del día muestra además En este día: tus notas de años anteriores hechas en esa fecha.
Paleta de comandos
Ctrl+Shift+P abre la paleta de comandos (cada acción con su atajo, filtrable al escribir). Ctrl+R abre el selector rápido de archivos y Ctrl+Shift+K abre el selector de tareas.
Servidor MCP (agentes de IA)
LightNote incluye un servidor MCP (Model Context Protocol) sin interfaz que
convierte tu espacio de trabajo en una herramienta para agentes de IA (Claude
Desktop, Claude Code, Cursor, y cualquier cliente que hable MCP). El agente puede
leer y escribir archivos, buscar, consultar datos tabulares y bases de datos,
trabajar con las tareas, usar Git y lanzar solicitudes HTTP — todo confinado a la
carpeta (directory jail: las rutas con .. o fuera de la raíz
se rechazan). El transporte es JSON-RPC 2.0 sobre stdin/stdout; cada sesión
levanta un proceso lnote.exe ligero, aparte de la ventana del
editor.
Atajo de un clic: en IA → Activar la IA en esta carpeta, LightNote habilita el MCP y escribe el .mcp.json de una vez (el clic es el consentimiento). Si la IA ya está activa en la carpeta, el elemento pasa a Configurar la IA de esta carpeta… y abre los Ajustes del espacio de trabajo.
Seguridad en dos capas: (1) el servidor solo arranca si has dado el consentimiento para esa carpeta; (2) toda herramienta está atada a la raíz del espacio. Además, cada herramienta se anuncia con anotaciones (solo lectura, destructiva, idempotente, "toca el mundo externo") para que el cliente de IA evalúe el riesgo antes de llamarla.
Configuración paso a paso
- Habilita el MCP en la carpeta. En Herramientas → Ajustes del espacio
de trabajo, marca Habilitar MCP para este espacio de trabajo. Sin este
consentimiento el servidor se niega a arrancar (es la traba principal). Como
alternativa, desde la línea de comandos:
lnote --mcp-enable "C:\Ruta\al\espacio-de-trabajo"(y--mcp-disablepara desactivarlo). - Localiza la ruta de
lnote.exe. Está en la misma carpeta quelightnote.exe(la carpeta de instalación de la aplicación). Es el ejecutable de consola "slim", sin interfaz — es lo que ejecuta el agente. - Registra el servidor en tu cliente de IA, apuntando el comando a
lnote.exey pasando--mcpseguido de la carpeta del espacio. En el formato que usan Claude Desktop / Cursor y similares:
{
"mcpServers": {
"lightnote": {
"command": "C:\\Ruta\\a\\lnote.exe",
"args": ["--mcp", "C:\\Ruta\\al\\espacio-de-trabajo"]
}
}
}
Consejos de configuración:
- Las barras invertidas en JSON deben duplicarse
(
C:\\Users\\...\\lnote.exe), como en el ejemplo. - Para exponer varios espacios de trabajo, añade una entrada por carpeta,
con nombres distintos (
"lightnote-proyectoA","lightnote-proyectoB"), cada una apuntando a su raíz. - Tras guardar la configuración, reinicia el cliente de IA para que
levante el servidor. Al conectar, el agente debería listar las herramientas
lightnote_*; pídele "lista los archivos del espacio" para confirmar que funciona. - Para Claude Code (CLI), el mismo servidor se registra con
claude mcp add lightnote -- "C:\Ruta\a\lnote.exe" --mcp "C:\Ruta\al\espacio-de-trabajo".
Contraseña de base de datos (opcional). La herramienta db_query
abre una conexión .lnc. Si la contraseña está cifrada con la
Frase-Segura, pásala mediante la variable de entorno LNOTE_PASSPHRASE en
el bloque del servidor (nunca en argumentos de línea de comandos) — las conexiones
cuya contraseña está en modo "preguntar" no pueden usarse de forma
desatendida.
Las consultas de IA son opcionales por conexión. Activar el MCP en la carpeta no expone las conexiones: cada .lnc solo responde a db_query cuando la opción «Permitir consultas de IA (MCP)» está marcada en el diálogo de la conexión. El acceso es de solo lectura (SELECT).
Exportar desde la base de datos con el agente. Ademas de consultar, el agente puede materializar un SELECT en un archivo con db_export (Parquet, CSV, JSON o .xlsx) — util para resultados demasiado grandes para caber en la respuesta. Rigen las mismas tres precauciones, en este orden: la consulta debe ser de solo lectura, la conexion necesita la opcion «Permitir consultas por IA (MCP)» (comprobada antes de descifrar la contraseña) y el destino debe quedar dentro del espacio de trabajo. Las exportaciones grandes usan la carpeta temporal del sistema como area de apoyo, aproximadamente del tamaño del resultado — deje espacio libre en disco.
Herramientas disponibles
El agente ve las herramientas bajo el prefijo del cliente (p. ej.
lightnote_read_file). Por categoría:
- Archivos:
read_file(con rango de líneas opcional),write_file,edit_file(reemplaza un fragmento exacto, sin reescribir el archivo entero),append_file,list_files,move_file,make_dirydelete_file(va a la Papelera de reciclaje, no borra del todo). - Búsqueda y navegación:
search_files(ripgrep, con filtro de subcarpeta/glob y límite),list_symbols(esquema de las funciones/clases de un archivo) yopen_in_editor(abre/enfoca un archivo en la ventana de LightNote, si está abierta). - Datos y SQL:
query(SQL DuckDB sobre Parquet/CSV/JSON, salida tsv/json/markdown),describe_table(esquema + estadísticas, sin volcar filas),export_query(materializa un SELECT en un archivo víaCOPY),sqlite_query(SQL en un.sqlite/.db),db_list_connections(lista los.lncdel espacio) ydb_query(SQL de solo lectura en una conexión.lnc). Para llevar el resultado a un archivo en vez de la respuesta,db_export(Parquet/CSV/JSON/.xlsx). - Además:
search_notes(recupera los fragmentos más relevantes de las notas para una pregunta — el mismo motor de Preguntar a tus notas),list_links(los enlaces de salida de una nota, resueltos o rotos),audit_vault_links(enlaces rotos y notas huérfanas de todo el depósito),list_note_templatesy el parámetrotemplatedecreate_note,list_due_tasks(tareas que vencen hoy o atrasadas en todos los proyectos),xlsx_read(lee una hoja.xlsxcomo TSV),data_diff(compara dos archivos tabulares) y el catálogo de la base de datosdb_list_objects/db_describe(tablas/vistas y las columnas, claves y DDL de una tabla — mismos requisitos quedb_query). Ynote_export(exporta una nota adocx,odt,epub, LaTeX, Typst, HTML, reStructuredText, AsciiDoc, Org, MediaWiki, Notebook u otro dialecto de Markdown — sin ninguna ventana, y también conlnote note-export). Ynote_import(el camino inverso: undocx,odt,epub,rtf, HTML otexse convierte en nota junto al original, con títulos, listas, tablas, énfasis, enlaces, fórmulas e imágenes — también conlnote note-import). Yfolder_export(la carpeta entera se convierte en un sitio HTML, un conjunto de documentos o Markdown, con los enlaces reescritos — también conlnote folder-export). - Comprimidos:
zip_list(lista los miembros de un.zip/.isx) yzip_read(lee un miembro como texto) — sin extraer el archivo al disco. - Tareas:
list_task_projects(lista los proyectos de tarea.lntdel espacio),list_tasks,list_task_statuses(columnas del tablero),create_task,update_task,update_task_status(mover de columna),delete_taskytask_note(leer/escribir la nota.mdde la tarea). Un espacio puede tener varios proyectos.lnt: elige cuál con el parámetroproject(elnameque devuelvelist_task_projects; opcional si solo hay uno). Losid/status_idson identificadores de la sesión — no leas los archivos internos del.lntpara obtenerlos; usa las herramientas de tarea. - Notas (PKM):
create_note(crea una nota.md),append_daily_note(agrega una captura a la nota del día),remember(guarda un dato duradero sobre ti en la nota de memoria),list_backlinks(notas que apuntan a una nota),list_note_tagsysearch_by_tag(las#etiquetasdel vault y las notas que las usan) yadd_task(crea una tarea con vencimiento/etiquetas, aceptando lenguaje natural en el título). - Git:
git_status,git_log,git_diffygit_restore. - Web y avisos:
http_request(lanza una solicitud HTTP y devuelve estado/cabeceras/cuerpo) ynotify(muestra un aviso en la bandeja de la ventana abierta — útil para que el agente señale que terminó). - Proxy de IA:
list_ai_modelsyask_ai(abajo).
El servidor también expone los archivos del espacio como recursos MCP
(resources/list y resources/read), para clientes que
prefieren "adjuntar" archivos en vez de llamar a read_file.
Tu Biblioteca de prompts (la carpeta Prompts/ del espacio) se expone como prompts MCP (prompts/list y prompts/get). En Claude Code cada prompt se convierte en un comando de barra — /mcp__lightnote__<nombre> — listo para usar dentro de la CLI de IA.
Red de seguridad de las escrituras. Antes de sobrescribir (write_file/edit_file) o eliminar (delete_file) un archivo, el servidor guarda la versión anterior en el Historial local — la misma red de seguridad del editor —, para que puedas deshacer un cambio hecho por un agente incluso fuera de un repositorio Git.
Cada herramienta declara si es de lectura o escritura: además de las
annotations MCP (readOnlyHint/destructiveHint), la
descripción empieza con un distintivo [read-only], [writes]
o [destructive] — útil para armar listas de permisos con seguridad.
Proxy de IA (delegar a otro modelo)
Los proveedores de API que registraste con la columna MCP
marcada quedan disponibles para el agente mediante dos herramientas:
list_ai_models (lista los modelos permitidos, con id, nombre y modelo) y
ask_ai ({model, prompt}). Así el agente principal puede
delegar una subtarea a un modelo más barato o especializado. La llamada la
intermedia el LightNote abierto (el lnote.exe del MCP reenvía la
petición a la ventana de la aplicación por el puente interno): la clave de API
nunca sale de tu máquina y nunca llega al agente. Si LightNote no está abierto,
la herramienta devuelve un error pidiendo que lo abras.
Línea de comandos (lnote)
Las mismas operaciones del MCP viven en un ejecutable de consola, lnote,
para scripts y automatización (también accesible como
lightnote cli <comando>). Cada acción está confinada a la carpeta
raíz, definida con --root (predeterminado: la carpeta actual).
Ejemplos:
lnote list --recursive
lnote read --path src/main.cpp --start-line 1 --end-line 40
lnote write --path note.md --content "Hola"
echo contenido | lnote write --path note.md --content -
lnote search --query TODO --regex
lnote query --sql "SELECT * FROM read_parquet('data.parquet') LIMIT 10"
lnote describe --path data.parquet
lnote search-notes --query "dónde escribí sobre el presupuesto"
lnote audit-links
lnote xlsx-read --path hoja.xlsx --sheet 0
lnote data-diff --a antes.parquet --b despues.parquet --mode changed --keys id
lnote db-describe --connection datos.lnc --table clientes
lnote db-export --connection dados.lnc --sql "SELECT * FROM clientes" --out clientes.parquet
lnote due-tasks
lnote export --sql "SELECT * FROM read_csv_auto('e.csv') WHERE state='NY'" --out ny.parquet
lnote zip-list --path export.isx
lnote zip-read --path export.isx --entry job/definicion.xml
lnote task-projects
lnote tasks --project Backlog
lnote create-task --project Backlog --title "Revisar el texto" --effort 2
lnote move-task --project Backlog --task-id 5 --status-id 2
lnote git-status
lnote http --url https://api.example.com --method GET
lnote notify --message "Procesamiento finalizado"
Opciones globales: --root <carpeta>, --json
(salida estructurada {ok,data,error}), --help (o
lnote <comando> --help) y --version. Los comandos
desconocidos reciben una sugerencia ("¿quisiste decir…?").
Actualizar datos antiguos por lotes: lnote upgrade <carpeta>
moderniza de una vez los archivos escritos por versiones anteriores de LightNote: hoy,
las extensiones heredadas .lnsh y .lnsm, que pasaron a ser
.lns y .lne. La aplicación ya lo hace sola al abrir cada
archivo; el comando es para quien tiene decenas y no quiere abrirlos uno a uno. Usa
--dry-run para ver qué cambiaría sin tocar nada. Es una comodidad, no una
obligación: tus archivos antiguos se siguen abriendo sin él.
Ajustes y temas
Dónde están las opciones
En Herramientas → Ajustes generales ajustas, por secciones: opciones Generales (idioma, guardado automático, liberar pestañas inactivas, paleta de color de pestañas, título de ventana, notas diarias, corrección ortográfica), el Tema de la aplicación, la fuente y los colores del Editor, el estilo de Markdown, la Ejecución (intérpretes), la Terminal (shells), los Asistentes de IA (CLIs y la IA predeterminada), el Control de versiones y la Base de datos (paginación, Oracle Instant Client).
Hay un campo de búsqueda en la parte superior de la lista de secciones que filtra por las opciones de cada página; y la sección Funciones reúne los interruptores de las funciones opcionales — grafo de conexiones, notas adhesivas, sesiones de IA, Chat con IA, grabación de audio, reencontrar notas antiguas, mantener el equipo despierto e integración con el menú del Explorador de Windows. Desactivar una función la quita de la interfaz, la bandeja y los atajos, y deja de consumir recursos — pero conserva los datos ya creados; el cambio surte efecto al reiniciar.
Temas
El tema de la aplicación cambia la apariencia del programa (menús, pestañas, paneles, barra de estado). Hay varios temas listos — claros (Claro, Solarized Light, Catppuccin Latte, Gruvbox Light, One Light, Rosé Pine Dawn, Everforest Light, Tokyo Night Day) y oscuros (Oscuro, Tokyo Night, Dracula, Ayu Mirage, Nord, Gruvbox Dark, Everforest Dark, Kanagawa Wave) — además del modo Personalizado con un color de acento. Los temas nuevos llegan por el catálogo en línea, sin necesidad de actualizar la aplicación.
Los colores del Editor de código y de Markdown se eligen aparte, en sus propias secciones, e independientes del tema de la aplicación. Cada una trae un combo Tema: con esquemas de color listos (Padrão, Dracula, One, Nord, Gruvbox y Tokyo Night, en variantes clara y oscura), una vista previa en vivo y el botón Guardar como… para guardar tus propios colores como un preset reutilizable.
Tema por ventana. Cada carpeta (espacio de trabajo) puede tener su propio tema, así que puedes mantener dos ventanas abiertas con apariencias distintas al mismo tiempo. En Configuración del Espacio de Trabajo → Apariencia de esta carpeta hay combos para el tema de esta ventana (la apariencia del programa), el tema de código y el tema de Markdown, cada uno con la opción Seguir tema general/Mantener predeterminado para no sustituirlo. Sustituir los temas de código y de Markdown es útil para combinar los colores del editor con un tema oscuro solo en esa carpeta, sin tocar la Configuración general. Estas elecciones quedan solo en tu equipo (no se envían a Git).
Herramientas, título y diseño
Guía de instalación. Cuando eliges una herramienta del catálogo
(asistente de IA, intérprete, formateador, linter o controlador de base de datos) que
aún no está en el equipo — o intentas ejecutar/formatear/verificar un archivo cuyo
intérprete falta — LightNote abre una guía de instalación. Cuando existe un
comando seguro (mediante winget), la guía muestra el comando exacto y lo
ejecuta en una consola integrada, con un clic; si la herramienta depende de otra
(por ejemplo, una CLI que necesita Node.js), ofrece instalar primero el requisito
previo. Sin un instalador automático, la guía abre la página oficial de descarga con un
paso a paso. Al terminar, verifica la instalación y deja la herramienta lista
para usar, sin reiniciar el programa.
Formato y Linters tienen sus propias secciones (formateador/linter
externo por lenguaje, con Agregar desde un catálogo). Para llevar tus
preferencias a otra máquina, el grupo Migración de configuración (sección General)
tiene Exportar/Importar ajustes (un archivo .lnconf): van
las opciones generales y los temas de contenido, pero no las claves de API ni
las rutas locales (vuelve a ingresarlas en el destino).
El título de la ventana es una plantilla libre: el nombre de la app siempre
va al final y compones el resto con las variables {workspace} (carpeta
raíz del espacio de trabajo), {file} (nombre del archivo abierto) y
{path} (ruta completa). Las decoraciones alrededor de una variable vacía
(p. ej. los corchetes en [ {workspace} ]) desaparecen solas; deja el
campo en blanco para el valor predeterminado [ {workspace} ] {file} — .
Diseño de la ventana. En Ver → Diseño de la ventana (o en Ajustes generales → General → Diseño de la ventana) eliges entre tres preajustes — Moderno (el predeterminado), Clásico y Confortable — o ajustas cada opción por separado: mostrar la barra de menús en la parte superior (con ella activada el botón ☰ desaparece, porque ambos abren los mismos menús), mostrar etiquetas junto a los iconos, poner la barra de herramientas y la barra lateral a la izquierda o a la derecha, y el tamaño de los iconos. Elegir un preajuste solo rellena las opciones: cambiar cualquiera de ellas después no deshace nada, la lista solo pasa a mostrar «(personalizado)». El cambio se aplica al instante, en todas las ventanas abiertas.
Modo portátil: los datos junto al programa
En la versión .zip, LightNote guarda configuración, sesiones, historial local e índices en una carpeta de Windows (%LOCALAPPDATA%), fuera de la carpeta del programa. El modo portátil trae todo eso junto al ejecutable, y así la carpeta entera puede vivir en una memoria USB, un disco externo o una carpeta sincronizada.
Para activarlo: extrae el .zip donde vaya a quedar la copia, abre Configuración → General → Modo portátil y pulsa Hacer portátil esta copia…. La ventana muestra de dónde y adónde van los datos, cuánto ocupan y qué cambia; al confirmar, LightNote copia (nunca mueve) y te pide cerrar y abrir el programa. La copia antigua sigue donde estaba, intacta: si algo sale mal, no se ha perdido nada.
Después la carpeta del programa gana dos carpetas nuevas: profile, con lo que es tuyo (configuración, sesiones, historial, diccionarios descargados), y profile-cache, solo con índices que el programa reconstruye por su cuenta. Puedes borrar profile-cache en cualquier momento para recuperar espacio.
Para actualizar de versión: descarga el .zip nuevo, extráelo en una carpeta nueva y copia dentro la carpeta profile de la versión antigua. Eso es todo. No hace falta copiar profile-cache (se rehace sola); copiarla también funciona, solo que es innecesario. No lo hagas al revés: un perfil escrito por una versión más nueva hace que el programa abra en modo solo lectura, para no estropear lo que aún no sabe leer.
Para desactivarlo: vuelve a Configuración → General → Modo portátil y pulsa Desactivar el modo portátil…. No se borra nada: las dos carpetas solo se renombran (a profile.desativado y profile-cache.desativado), y LightNote vuelve a usar la carpeta de Windows en el siguiente arranque. Tú decides después si las borras, las restauras o copias de ahí lo que quieras.
Lo que NO acompaña a la carpeta al cambiar de ordenador. Tres secretos los protege Windows por usuario y máquina, así que no se descifran en otro PC: las claves de IA, las contraseñas de archivos que pediste recordar y la Frase de paso guardada. Basta con introducirlas de nuevo allí: no se pierde nada, y tus archivos seguros siguen abriéndose con normalidad con la Frase de paso que escribes. Además: las pestañas y carpetas abiertas guardan la ruta completa, así que cambian de lugar si cambia la letra de la unidad; la integración con el Explorador se desactiva al activar el modo (escribe en el Windows de la máquina, lo contrario de lo que promete el modo portátil) y puedes volver a activarla en Configuración; y el .mcp.json escrito en tus repositorios apunta a la ruta completa de lnote.exe, así que hay que rehacerlo en la máquina nueva.
Llevar las claves de IA contigo (opcional). En Configuración → General → Modo portátil está Proteger las claves con una frase…. Activado, las claves de IA y las contraseñas de archivo recordadas dejan de depender de Windows y viajan con la carpeta. Piénsalo dos veces: hoy, perder el pendrive no cuesta nada — los secretos no se abren fuera de tu máquina; con la frase, quien obtenga la carpeta puede intentar adivinarla con calma. Usa una frase larga. La Frase de paso del espacio de trabajo no entra en ese llavero, a propósito: abre tus notas seguras, y una sola frase no debe desbloquearlo todo. Marca Recordar en esta máquina para que no te lo pregunten en tu equipo; en otro, la pregunta vuelve.
chaveiro-do-perfilEl modo portátil es para la versión .zip. Una copia instalada por el instalador y la edición de Microsoft Store no se pueden convertir —su carpeta es de solo lectura o la administra el desinstalador— y la ventana lo dice en vez de dejar el botón sin efecto. Desde la línea de comandos, con LightNote cerrado: lnote portable --status, lnote portable --on (acepta --dry-run) y lnote portable --off.
Atajos de teclado
- F1 — esta ayuda (en la sección de la pantalla actual)
- Ctrl+N / Ctrl+O — nuevo archivo / abrir archivo
- Ctrl+S / Ctrl+W — guardar / cerrar pestaña
- Ctrl+Alt+Shift+S — guardar todo (cada pestaña modificada)
- Ctrl+F / Ctrl+H — buscar / reemplazar en el archivo
- Ctrl+Shift+F — búsqueda global (ripgrep)
- Ctrl+Shift+G — panel de control de versiones (Git)
- Ctrl+Shift+E / Ctrl+Shift+M — panel Explorador / panel de Pendientes
- Ctrl+B — mostrar/ocultar la barra lateral
- Ctrl+' — terminal (en la distribución EE. UU., también Ctrl+`)
- Ctrl+/ — comentar/descomentar; Ctrl+Shift+D — duplicar línea
- F5 — ejecutar archivo; Ctrl+Shift+Enter — enviar selección a la terminal
- Ctrl+K / Ctrl+I — preguntar a la IA / editar con IA
- Ctrl+B / Ctrl+I / Ctrl+E — en la nota Markdown: negrita / cursiva / alternar el modo de vista
- Ctrl+Shift+X / Ctrl+Shift+C / Ctrl+Shift+H — en la nota: tachado / código en línea / resaltado
- Ctrl+1…Ctrl+6 — en la nota: nivel del encabezado (repetir el mismo nivel vuelve a párrafo)
- Ctrl+Shift+V — en la nota: pegar sin formato
- Ctrl+Enter — «ejecutar aquí»: instrucción SQL, celda de Bloques, petición de API, fuente del diagrama/fórmula en la nota
- Ctrl+Shift+R / F4 — macro: grabar / reproducir
- Ctrl+R — ir al archivo; Ctrl+Shift+P — paleta de comandos
- Ctrl+Shift+K — ir a la tarea; Ctrl+Shift+T — reabrir pestaña cerrada
- Ctrl+Alt+G — grafo de conexiones
- Ctrl+Alt+N — captura rápida (global, incluso fuera de LightNote)
- Ctrl+Alt+D / Ctrl+Alt+T — nota de hoy / tarea rápida
- Ctrl+Alt+R — grabar/detener audio (global, nota de voz rápida)
- F11 — Modo zen (la pestaña ocupa toda la ventana)
- Ctrl++ / Ctrl+- / Ctrl+0 — zoom
La misma tecla puede hacer cosas distintas según la pantalla enfocada: gana la vista con el foco y, fuera de ella, vale el atajo de la ventana. Con una pestaña de Base de datos enfocada, F4 abre las propiedades del objeto en vez de reproducir la macro; en el Diff y en el panel de salida, F8/Shift+F8 saltan de cambio en cambio; y en la ventana Archivos sueltos, Alt+←/Alt+→ retroceden y avanzan entre carpetas. La lista completa y filtrable está en Ayuda → Atajos de teclado.
Licencia, ediciones y comunidad
LightNote se distribuye en ediciones con las mismas funciones, que difieren solo en la licencia y la entrega:
- LightNote (gratuita, desde el sitio web): para uso personal, no comercial.
- LightNote Core (Microsoft Store): adquirida como una contribución al proyecto; otorga una licencia de uso comercial y recibe actualizaciones automáticas a través de la Store.
- LightNote Business (futuro): licenciamiento por volumen/empresa, reservado para disponibilidad futura.
La edición de tu copia — y por tanto qué cláusulas aplican — se muestra en Ayuda → Acerca de. Los términos completos están en Ayuda → Acerca de → Términos de licencia….
Participa y contribuye:
- Sugerencias y preguntas: GitHub Discussions —
github.com/nglczr/LightNote-Community/discussions - ¿Encontraste un error? Repórtalo en GitHub Issues —
github.com/nglczr/LightNote-Community/issues - Apoya el desarrollo en Ko-fi —
ko-fi.com/lightnote(o consigue LightNote Core en la Store) - Contacto:
contato@lightnote.com.br· Sitio web:lightnote.com.br