Skip to content

Didacta 0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 05:34
· 93 commits to main since this release
  • Didacta abre por las asignaturas. Abría por la biblioteca, que contesta
    «¿qué tengo de esto?» -- una pregunta que se hace a ratos. Al abrir se viene
    a preparar una clase, y eso empieza en la asignatura que se da mañana.

  • Las asignaturas y los cursos académicos se pueden ocultar, uno a uno.
    Ocultar no es quitar: siguen en el repositorio, siguen compilando y siguen en
    la biblioteca; lo que cambia es la lista, que después de unos años son veinte
    asignaturas de las que se dan tres. Arriba se elige qué se mira: las que doy,
    las ocultas --para deshacerlo-- o todas.

  • Y se pliegan: el título de una asignatura es un botón, y plegada enseña
    cuántos cursos lleva dentro sin ocupar la pantalla con ellos.

  • Marcar ya no reordena. Lo marcado subía al principio y era peor: la lista
    dejaba de estar donde se aprendió que estaba, y marcar una asignatura movía
    otras cuatro de sitio. La estrella dice «esta me importa»; para no ver lo que
    no se da está ocultarla. De paso, «el primer curso» vuelve a querer decir «el
    último que se dio», que es de lo que se fía la pantalla para marcarlo.

  • Lo que se está mirando se queda puesto, y viaja de un ordenador a otro
    con el resto de preferencias. Quien se pone a ordenar la lista se queda un
    rato en «las ocultas»; volver de un curso y encontrarse otra vez «las que
    doy» convertía esa tarde en un baile de clics.

  • Exportar deja de estar escondido detrás de unos puntos suspensivos. El
    botón está en la fila del curso, al lado de la estrella: entrar, darle y
    decir en qué carpeta.

  • Y se puede exportar un documento suelto, desde su fila del listado del
    curso, para cuando lo que hay que subir al aula virtual es solo el Tema 3.
    Aparece si tiene algo compilado, que es cuando hay algo que copiar.

  • El visor de PDF guarda una copia de lo que se está mirando, con el
    nombre que le pone el motor. Antes había que abrirlo en el visor del sistema
    y guardarlo desde allí.

  • Exportar no pide permiso de escritura: copia lo compilado y no toca el
    repositorio, así que también se lleva material quien solo lo tenga para leer.

  • Un botón para contar un problema, abajo a la derecha, al lado del de
    actualizar. Abre las incidencias de Didacta en GitHub con la versión y el
    sistema ya escritos: un informe sin eso necesita un viaje de ida y vuelta
    antes de poder mirarse, y quien lo escribe no tiene por qué saber cuál es su
    versión. Está ahí y no en Ajustes porque el momento en que se encuentra un
    fallo es el momento en que se está usando la aplicación.

  • Guardar decía que había guardado y la pantalla seguía igual. Cambiar el
    título de un grado --o de un tema, o de un documento-- escribía el fichero y
    no se veía: lo que Didacta escribe son ficheros YAML y lo que lee son los
    índices que el motor saca de ellos, y nadie los regeneraba. Ahora recargar
    el catálogo pone el índice al día primero, así que lo que se guarda se ve. El
    cambio estaba en el disco todo el tiempo; lo que faltaba era enseñarlo.

  • Un grado se puede declarar y dejar de declarar en cada repositorio, desde
    la misma pantalla de grados, con una casilla por repositorio. Quitarlo del
    último no pierde nada: sus asignaturas salen enteras, sin agrupar, y la
    pantalla las enseña como «nombradas y sin declarar».

  • Las quince salidas dejan de estar escritas en el programa. Cambiar el
    margen de los apuntes o meter un paquete propio era editar el LaTeX de
    Didacta. Ahora un repositorio puede declarar sus plantillas: una salida
    con su clase de documento, sus opciones, sus ejes y su propio preámbulo,
    que se lee al final del de Didacta y por tanto puede redefinir lo que
    Didacta acaba de definir.

  • Cada bloque dice con qué se compila lo suyo, y cada documento y cada
    lección pueden quedarse con menos sin tocar el bloque. Una lista vacía
    siempre quiere decir «lo que toque» y nunca «nada»: no hay forma de dejarse
    material sin salidas sin haberlo pedido.

  • Una plantilla se puede apagar sin borrarla. Deja de compilarse y se
    queda declarada, con su cabecera, para el curso que vuelva a hacer falta.

  • Nada de esto cambia lo que ya compilaba. Un repositorio que no declara
    ninguna plantilla sigue sacando las quince salidas de siempre, y una
    plantilla que se llame como una de ellas la sustituye solo cuando compila
    Didacta: pdflatex master.tex a mano, en un editor y con SyncTeX, sigue
    dando lo mismo que daba.

  • Y se declaran en un repositorio y las usan todos, como los bloques: la
    teoría y los problemas están repartidos en dos, y el bloque de uno puede
    compilarse con la plantilla que declara el otro.

  • Todo eso se toca desde Ajustes → Plantillas: ver las que hay, apagar las
    que no se sacan, renombrarlas, duplicarlas y escribir su cabecera de LaTeX
    a mano
    . Editar una de las que trae Didacta la escribe en el repositorio que
    elijas, y lo dice antes de hacerlo: a partir de ahí manda la tuya.

  • Una plantilla puede guardarse en el programa en vez de en un repositorio,
    para lo que es tuyo y no de la asignatura, o para cuando el material es de
    otra persona. Lo que se guarda ahí no lo protege nadie --ni git, ni la
    sincronización-- así que Ajustes lo dice y trae los dos botones que hacen
    falta: copiar las plantillas a una carpeta y traerlas de una.

  • Cada bloque elige con qué se compila lo suyo, y cada tema y cada lección
    pueden apartarse desde su propia pantalla. Lo que viene marcado al compilar
    ya no sale de una tabla escondida en el motor: sale de lo que hayas
    configurado.

  • Teoría y problemas ya no están escritos en el código. Eran los dos
    bloques que había y no se podían ni renombrar ni añadir. Ahora los declara
    cada repositorio, con un nombre por idioma, así que quien parta su
    asignatura en teoría, problemas y prácticas de ordenador ve tres en la
    biblioteca, en el filtro y al clasificar una lección. Se gestionan desde
    Ajustes → Bloques: crear, renombrar y decir en qué repositorios se declara
    cada uno.

  • Renombrar un bloque es cambiar una línea: no mueve ningún fichero y no
    rompe ninguna referencia
    , porque lo que guarda cada lección es el id y lo
    que se lee es el nombre. Es lo mismo que ya pasaba con los temas.

  • Quitar un bloque pregunta antes qué pasa con sus lecciones, y no se
    puede saltar: o se mueven a otro --un solo commit por repositorio, aunque
    sean noventa ficheros-- o se quedan sin bloque declarado, y entonces salen
    en Entre repositorios para arreglarlas cuando toque. Lo que no puede pasar
    es que noventa lecciones queden clasificadas en ninguna parte sin que nadie
    lo haya decidido.

  • Entre repositorios tiene una comprobación más: las lecciones sin bloque.
    Una lección que nombra un bloque que ningún repositorio abierto declara se
    sigue viendo entera --el bloque sale por su id-- pero casi siempre significa
    que falta abrir un repositorio, o que alguien quitó el bloque. Las dos
    salidas están ahí. Y si dos repositorios le dan nombres distintos al mismo
    bloque, se iguala desde donde ya se igualaban los de una asignatura.

  • Dentro de un curso hay un filtro de bloque, discreto, encima de la lista
    de documentos, para quedarse con la teoría o con las prácticas. Solo aparece
    cuando el curso tiene de más de uno.

  • Nada de esto cambia lo que ya tenías. Un repositorio que no declara
    ningún bloque sigue teniendo teoría y problemas, con su nombre y en su
    orden, porque Didacta los conoce sin que nadie los escriba.

  • El selector de idioma de arriba ofrecía los diez que Didacta sabe
    imprimir
    , no los que hay en tu material. Elegir uno al que ningún
    repositorio traduce dejaba la pantalla entera enseñando el texto de reserva,
    y desde ahí no había nada que hacer. Ahora ofrece los que hay, y lo mismo el
    menú Idioma y el selector de la biblioteca.

  • Se pueden editar los idiomas de cada repositorio, en Ajustes → Idiomas.
    Era lo único que quedaba que había que hacer abriendo el didacta.yaml a
    mano. El idioma de referencia sigue a la lista si se queda fuera, y quitar
    uno no borra ningún fichero: dejan de pedirse.

  • Y quitar uno que una asignatura usa ya no rompe la asignatura. Se lo
    podía quitar al repositorio y el course.yaml quedaba diciendo algo
    imposible, así que esa asignatura desaparecía de la biblioteca y el motivo
    quedaba en una lista de errores. Ahora Didacta se niega y dice cuáles lo
    usan.

  • La ficha de una asignatura solo ofrece los idiomas que su repositorio
    mantiene.
    Se podía marcar cualquiera de los diez y guardar, y el fallo no
    se veía al guardar sino al volver a indexar. Con la asignatura repartida
    entre dos repositorios, cada uno recibe lo suyo en lugar de la lista entera.

  • Y puedes elegir con qué idiomas trabajas tú, también en Ajustes. Un
    repositorio del departamento que mantiene cinco y una persona que da clase
    en dos no tienen por qué estorbarse. Viaja con el resto de tus preferencias,
    no toca ningún fichero, y un idioma apagado sigue saliendo donde algo ya lo
    declara: si no, guardar se lo llevaría por delante.

  • Cambiar didacta.yaml o taxonomy.yaml no actualizaba nada hasta
    reiniciar.
    Didacta miraba si el índice se había quedado viejo recorriendo
    el material, y esos dos ficheros no están dentro — así que añadir un idioma
    a mano no se veía.

  • Beautify de verdad, no solo sangría. Ahora también junta cada párrafo
    y lo vuelve a cortar a 80 columnas
    . Era lo que faltaba: lo que devuelve un
    traductor es el párrafo entero en una sola línea de cuatrocientos
    caracteres, y eso no se lee ni se revisa --cambiar una palabra sale en el
    historial como la línea completa, así que el diff deja de decir qué cambió--.
    Junta antes de cortar, así que un párrafo que ya venía mal cortado queda
    bien y no peor.

  • No corta por dentro de una fórmula ni de unas llaves: partir
    \textit{negación} compila igual pero deja la orden a un lado y su
    argumento al otro. Si en toda la línea no hay ningún sitio bueno, la línea
    se queda larga. Y una orden sola --\vspace{-2mm}, \dpause-- se queda
    sola: quien la puso aparte la puso aparte porque hace algo aparte.

  • El contenido de un \begin{frame} ahora sí se sangra. Una unidad tiene
    varias diapositivas, así que sí hay con qué contrastar.

  • La casilla se llama «Beautify», y pulsar la palabra ordena el fichero
    en ese momento
    sin tocar el ajuste. La casilla sigue diciendo si se hace
    solo al guardar.

  • Una traducción metía HTML en el .tex. l'operació se guardaba como
    l'operació, y eso no compila: en LaTeX & separa columnas de tabla,
    así que fuera de una da error y dentro parte la fila en dos. La traducción
    se pide en formato HTML --es la única forma de que los proveedores respeten
    las marcas que protegen el LaTeX-- y lo que volvía venía escapado. En
    valenciano y en catalán eso es una palabra de cada cinco.

  • Y perdía los espacios de alrededor de las fórmulas.
    identificaremos $\mathbb Z$ con volvía como identificarem$\mathbb Z$ amb:
    el espacio que iba delante aparecía detrás, y la palabra quedaba pegada a la
    fórmula. Lo mismo con su \textit{negación}, que volvía como
    la seva\textit{ negació}, con el espacio metido dentro de las llaves. Pasa
    porque la traducción viaja en HTML, y ahí el espacio de alrededor de una
    marca no es texto sino formato: los proveedores lo mueven. Ahora ese espacio
    no se le cree al traductor, se copia del original --es una propiedad de la
    pieza, no del sitio, así que vale aunque cambie el orden de las palabras--.
    El espacio entre palabras sigue siendo suyo.

  • El editor lleva números de línea. En el fichero entero, no en los campos
    de un problema. El número va en la primera fila de cada línea: una línea
    larga ocupa cuatro renglones en pantalla y sigue siendo una línea.

  • Al guardar, el .tex queda ordenado. Cada entorno abre y cierra donde
    se ve, y lo de dentro va sangrado. Usa latexindent --la herramienta de
    CTAN-- cuando está instalada y funciona; si no, un indentador propio que
    hace menos y no necesita instalar nada. En una traducción recién hecha es
    donde más se nota: un traductor devuelve cada párrafo en una sola línea, y
    esa primera versión es la que se queda en el repositorio.

  • Y pone cada \begin y cada \end en su línea, que es lo que la sangría
    sola no podía arreglar: lo que volvía de traducir era
    \begin{definition} [Del seno] Las longitudes..., con el entorno, su título
    y el texto pegados. Ahí no hay principio de línea que sangrar, y las barras
    de color del margen --que marcan dónde empieza y acaba cada entorno, por
    línea-- no podían dibujarse.

  • Sangrar no cambia una letra: solo el espacio del principio de cada
    línea, y nunca dentro de un verbatim o un lstlisting, donde el espacio
    en blanco es el contenido.

  • Y hay un botón «Sangrar» en la barra de formato para ordenarlo ahora,
    sin esperar a guardar. Hace falta porque casi todo el material se escribió
    antes que esto: al guardar se ordena solo, pero nadie va a abrir y guardar
    dos mil unidades para verlas bien puestas. Deja el cambio sin guardar,
    a la vista y con «Descartar» al lado, para poder mirarlo antes de escribirlo.

  • Y se puede apagar, por idioma. En la barra del editor hay una casilla
    que deja el fichero exactamente como esté. Hace falta poco, pero hace falta:
    un entorno de código propio que el indentador no conoce, un .tex que
    genera otra herramienta y se regenera entero, un \begin sin cerrar de
    material migrado que compila igual pero descuadra el contador. Se guarda en
    el unit.yaml, así que vale también para quien abra el fichero en otro
    ordenador.

  • Una traducción ya no rompe el fichero. \item Donats volvía como
    \itemDonats --el espacio que cierra el nombre de una orden se lo comía el
    traductor al recortar los extremos del texto-- y eso no compila. Y el .tex
    traducido salía como un muro, con los entornos pegados al contenido y sin
    una sola línea suelta, porque los saltos de dentro de un párrafo vuelven
    convertidos en espacios.

  • Ahora lo que está pegado a la sintaxis viaja con ella: el salto que hay
    antes de un \end{itemize}, la sangría de una línea, el espacio que cierra
    un \item. El fichero traducido conserva la forma del original. Lo que
    sigue siendo del traductor es el espacio de dentro de una frase, que es
    suyo: al traducir «el conjunto $A$ es abierto» las palabras cambian de
    sitio y los espacios con ellas.

  • La pantalla de Traducción tiene dos selectores, con la misma forma y uno
    al lado del otro: el idioma, y la clase de trabajo --«Desactualizadas», «Sin
    traducir», «Sin revisar»-- con su cuenta dentro. Los tres salen siempre, con
    un cero los que no tienen nada: un selector que se esconde cuando solo queda
    una clase de trabajo deja de decir cuál estás mirando.

  • El estado de una lección se actualizaba a medias. Al aprobar una
    traducción cambiaba el punto de la pestaña del idioma pero no el botón de
    estado, que seguía diciendo «borrador»: el editor guarda la lección de
    cuando se abrió, y esa no se entera de nada. Quien entra a despachar
    traducciones no quiere borradores en medio, y quien entra a revisar no
    quiere ver lo que no existe. Así además traducir algo se nota: la unidad
    desaparece de una pestaña y aparece en la otra.

  • Y ya se puede aprobar una traducción. Dentro de la lección, junto al
    idioma que estás editando, el estado es un botón: borrador → revisada, con
    un clic. Antes no había forma de decirlo desde la aplicación, así que el
    borrador se quedaba en la lista para siempre y la lista dejaba de significar
    nada. «No existe» y «desactualizada» no se pueden poner a mano: los calcula
    el motor, y declararlos garantizaría que se queden obsoletos.

  • La lista de traducción está partida en tres, porque son tres trabajos
    distintos: «Desactualizadas» --su original cambió y dicen algo que ya no es
    cierto--, «Sin traducir» y «Traducidas, sin revisar». Antes iban mezcladas,
    y traducir algo no lo quitaba de la lista: pasaba de una categoría a otra
    unas filas más abajo, y desde fuera parecía no haber servido de nada. Cada
    grupo tiene su «Marcar todas», y las cuentas de la cabecera encienden y
    apagan cada uno.

  • Al terminar de traducir, el resumen lleva un enlace por fichero que lo
    abre en su idioma para revisarlo y aprobarlo. Antes había que apuntar el
    nombre e irse a buscarlo a la biblioteca, que es el paso que convierte «lo
    reviso ahora» en «lo reviso otro día».

  • Traducir al valenciano ya funciona. Fallaba con un volcado de JSON que
    decía «Invalid Value» y nada más: va es un código de Didacta y ningún
    traductor automático lo conoce. Se pide como catalán, que es lo mismo que
    hace la parte de LaTeX. Sale catalán central --«Qüestió» donde el valenciano
    dice «Questió»--, así que el diálogo lo avisa antes de traducir: es un
    borrador que hay que ajustar al revisar.

  • Traducir ya no ofrece traducir del castellano al castellano. Cogía el
    idioma de la barra de arriba, que es el que estás mirando; ahora abre un
    diálogo con los idiomas que le faltan a lo que has marcado, con cuántas
    lecciones le faltan a cada uno, y marcas los que quieras.

  • Se pueden traducir muchas de golpe. Casillas delante de cada lección en
    la pantalla de Traducción, «todas» y «ninguna», y un botón que las manda
    todas al mismo diálogo. Una que falle no para las demás: se dice cuál fue.

  • Dentro de una lección, una pestaña de idioma vacía ofrece traducirla ahí
    mismo. Es donde se descubre que falta: entras a ver cómo quedó en valenciano
    y la página está en blanco.

  • Y dentro de un tema, una pestaña «Traducir» con las lecciones a las que
    les falta algún idioma de esa asignatura, marcadas de entrada. Solo aparece
    cuando falta algo. Antes había que apuntar cuáles eran, irse a la lista de
    traducciones y buscarlas entre doscientas.

  • Guardar ya no te pide un mensaje de commit. De salida, guardar deja el
    cambio confirmado y enviado a GitHub sin preguntar nada: escribes, se guarda,
    está donde tiene que estar. Las dos cosas se apagan por separado en Ajustes →
    Al guardar, porque confirmar y enviar son decisiones distintas.

  • Con los commits automáticos apagados, lo que guardas se queda escrito y sin
    confirmar, y aparece un botón en la barra de arriba --delante de traer y
    enviar-- que los confirma todos juntos con el mensaje que le pongas, y te
    enseña qué ficheros van dentro antes de firmarlo. Con los automáticos puestos
    ese botón no sale: no habría nada que hacer con él.

  • El código de GitHub sale a la vez que el enlace. Antes se abría el
    navegador primero y el código después, así que llegabas a github.com sin
    saber que te iban a pedir algo y tenías que volver a buscarlo.

  • La pantalla de bienvenida lleva dibujos que enseñan de qué se habla: una
    lección dentro de varios cursos, un fichero del que salen las diapositivas y
    los apuntes, y un historial con nombres.

  • Y explica mejor qué hacen los dos programas que hacen falta para compilar,
    que antes iban en la misma frase: LaTeX compone las páginas y lo instalas
    tú; el motor de Didacta decide qué páginas componer y se descarga ahí.

  • Se puede traducir una unidad con la máquina. En la pantalla de
    Traducción, cada fila pendiente lleva un botón: elige proveedor, traduce y
    deja el resultado escrito como borrador, así que sigue apareciendo en la
    lista de lo que hay que revisar. Es una traducción que no ha leído nadie.

  • Las fórmulas no se traducen. Las matemáticas, los entornos y sobre todo
    las claves de \label, \ref y \cite viajan protegidas y vuelven donde
    estaban: traducir una clave rompe todas las referencias del tema y no se ve
    hasta que alguien compila la víspera. Si un párrafo vuelve con la sintaxis
    cambiada, ese párrafo se queda sin traducir y se dice cuál.

  • Hay memoria de traducción. Lo que se traduce se guarda en el repositorio,
    se versiona y se comparte: la decisión de cómo se dice algo en valenciano es
    del equipo, no de la máquina. Un párrafo ya traducido no se vuelve a pagar ni
    a decidir, y el mismo texto con otra fórmula dentro también lo reutiliza.

  • Se dice lo que costó: cuántos párrafos había, cuántos salieron de la memoria
    y cuántos caracteres se mandaron. En el material de teoría, no enviar las
    matemáticas ahorra cerca de un tercio de lo que se facturaría.

  • Ya se pueden poner las claves de traducción automática. En Ajustes, una
    sección para Google Cloud Translation y otra para Azure AI Translator, con un
    botón de probar: una credencial mal puesta no se nota hasta que mandas
    cincuenta unidades a traducir y vuelven todas con un 401.

  • Las claves se guardan en el llavero del sistema, en tu máquina. No entran
    en ningún repositorio, ni en git, ni en lo que exportes: son configuración
    tuya, no contenido. Lo que sí es contenido --a qué idiomas se traduce cada
    asignatura-- sigue en el repositorio y se comparte.

  • Una vez guardada, la clave no se vuelve a enseñar: se dice que hay una y se
    ven sus últimos cuatro caracteres, lo justo para reconocer cuál pusiste. Para
    cambiarla, se escribe otra.

  • Una asignatura se edita entera desde un sitio. El lápiz de la lista de
    asignaturas abría un diálogo que solo cambiaba el nombre, y los idiomas
    estaban en Ajustes, en una lista de todas las asignaturas: había que salir de
    donde trabajas para cambiar algo de la que tienes delante. Ahora el nombre,
    los idiomas y la titulación se editan en la misma ficha.

  • Las asignaturas se agrupan por titulación. Cada una dice a qué grado
    pertenece, y la lista se puede filtrar por grado. Los grados se gestionan
    desde la propia página de asignaturas --declarar uno nuevo, cambiarle el
    nombre en cada idioma--, porque un grado es una clasificación del material,
    como un tema, no una preferencia.

  • Un grado lo declara un repositorio y las asignaturas de cualquier otro lo
    nombran: con que uno lo declare, todos lo ven agrupado. Un grado que no
    declara nadie no rompe nada
    : sus asignaturas se ven enteras, sin agrupar,
    igual que antes de que los grados existieran. Y se dice cuáles son, porque
    casi siempre significa que falta abrir un repositorio.

  • Si dos repositorios llaman distinto al mismo grado --o ponen la misma
    asignatura en grados distintos--, sale en «Entre repos» y se iguala desde
    allí, con el mismo gesto que el resto de los metadatos.

  • Lo que se comprueba entre repositorios tiene su propio sitio. Estaba en
    Ajustes, que es donde se pone lo que no tiene sitio; es trabajo pendiente
    sobre el material, como las traducciones, y en Ajustes no se entra a mirar si
    algo va mal. Ahora es un apartado del carril, y solo aparece con más de un
    repositorio abierto
    : con uno no hay nada que cruzar.

  • Además de los metadatos que no coinciden, ese apartado enseña ahora los
    documentos que llaman a unidades de otro repositorio. Eso compila en tu
    máquina --que tiene los dos-- y no compila en la de quien solo tenga uno, y
    hasta ahora solo se veía entrando en el curso concreto.

  • Didacta puede hablar con un modelo de lenguaje. Un servidor MCP que se
    enciende en Ajustes: mientras está encendido, un LLM conectado puede leer tus
    asignaturas, buscar en la biblioteca, escribir una traducción y comprobar que
    lo escrito compila. Sirve para lo que se hace a mano y no tiene gracia:
    traducir cincuenta unidades, corregir la misma errata en las cuarenta que la
    repiten.

  • Se ve todo lo que hace. Con el servidor encendido aparece un icono nuevo
    en la barra lateral, con dos cosas: qué llamadas va recibiendo --cuál, sobre
    qué, cuánto tardó, y marcadas las que escriben-- y la lista de lo que sabe
    hacer, que sale del propio servidor.

  • No publica nada. No hay ninguna herramienta que haga commit, ni que traiga
    ni que envíe, y eso no es un olvido: lo que un modelo escriba queda en disco y
    lo envías tú, viendo el diff como cualquier otro cambio.

  • Escribir hay que pedirlo, repositorio por repositorio. De salida el
    servidor solo lee, que ya es casi todo el valor y no puede estropear nada. Y
    escucha solo en esta máquina.

  • El idioma se elige arriba, y manda sobre lo que se lee. Estaba escondido
    en la biblioteca: desde la lista de asignaturas no había forma de tocarlo, y
    los títulos salían siempre en el idioma propio de cada asignatura aunque
    estuvieras preparando la versión en valenciano. Ahora está en la barra
    superior, delante de traer y enviar, y cambia el título de la asignatura, el
    del tema y el de cada documento. Las asignaturas se reordenan por el título
    que estás leyendo, no por el castellano.

  • Los títulos se editan en todos los idiomas a la vez. Un lápiz junto a la
    asignatura, al tema y al documento abre el mismo diálogo que ya tenían los
    apartados. Lo que dejes en blanco se marca como pendiente en el fichero, no
    se escribe vacío: un título vacío es un título, y saldría en el PDF.

  • Compilar usa el idioma en el que estás. Un curso son cuarenta salidas y
    media hora, y la víspera de la clase en valenciano no quieres los tres
    idiomas. Mantén pulsado el botón para elegir entre el idioma actual --dice
    cuál es-- y todos los de la asignatura.

  • El visor de PDF enseña los idiomas que hay. Una fila de idiomas encima de
    la de versiones, y entra por el que estás usando. Antes solo podía enseñar
    uno: la versión en valenciano existía en el disco y no había forma de llegar
    a ella.

  • En una asignatura repartida entre repositorios se miraban los PDF de uno
    solo, así que la mitad de los documentos salían sin icono aunque estuvieran
    compilados.

  • La casilla de recompilar al exportar compila los idiomas que vas a exportar.
    Antes compilaba el propio de cada documento y el reparto salía incompleto.

  • Didacta imprime sus rótulos en diez idiomas. A castellano, valenciano e
    inglés se suman catalán, gallego, euskera, francés, alemán, italiano y
    portugués: «Teorema», «Demostración», «Curso», «Error frecuente» y las
    treinta y dos palabras restantes que el PDF lleva sin que nadie las escriba.
    Los siete nuevos son ficheros base, con la terminología matemática al uso y
    sin revisar por nadie que dé clase en esos idiomas: sirven para compilar
    desde el primer día, y antes de repartir material conviene que los lea quien
    lo hable. Son treinta y seis palabras cada uno y se cambian en un sitio.

  • Cada asignatura elige sus idiomas. En Ajustes, un desplegable por
    asignatura marca a cuáles se traduce. Lo que no esté marcado no se pide y no
    cuenta como pendiente, así que la lista de traducciones que faltan vuelve a
    ser una lista de trabajo en vez de todo lo imaginable. Quitar un idioma no
    borra nada: los ficheros se quedan donde estaban y volver a marcarlo los
    recupera. En una asignatura repartida entre repositorios se escribe en
    todos, para que no acabe diciendo dos cosas distintas.

  • Un apartado con título en un idioma que no fuera castellano, valenciano o
    inglés tumbaba la compilación
    , con un error que hablaba de una secuencia
    no definida que no aparecía en ningún fichero del curso.

  • Los temas se crean desde el curso, y los documentos desde su tema. El
    botón de abajo creaba un documento y luego había que decir a qué tema
    pertenecía, que es el paso que se olvida. Ahora crea un tema, y cada tema
    lleva dentro su propio botón para añadirle documentos, que nacen ya en él.
    Queda un botón aparte para lo que no es de ningún tema --la FAQ, la
    notación--, que también existe.

  • Al crear un tema o un documento con varios repositorios abiertos se
    pregunta en cuál; con uno solo no se pregunta nada.

  • Las asignaturas y los cursos se pueden marcar para tenerlos arriba. Una
    estrella en cada uno; lo marcado se salta el orden y sale primero. Las dos
    marcas son independientes: marcar Análisis Matemático I no dice cuál de sus
    seis cursos estás dando, que es justo lo que quieres a mano. Te siguen de un
    ordenador a otro.

  • El resto sigue como estaba: las asignaturas por título de la A a la Z, y los
    cursos de cada una del más reciente al más antiguo.

  • Álgebra ya no sale después de Zoología. Los títulos se ordenaban por el
    valor de sus letras, y en esa cuenta una á va detrás de la z, así que
    todo lo que empezaba por vocal acentuada caía al final de la lista.

  • Un curso académico se puede empezar en blanco. Antes había que copiarlo
    de otro a la fuerza, lo cual no vale ni para la primera asignatura --que no
    tiene de dónde-- ni para un año que se compone desde cero. Copiar del
    anterior sigue siendo lo que se ofrece primero, porque es lo corriente.

  • Los cursos de una asignatura pasan a verse en filas, cada uno con su menú en
    el borde derecho, en la misma vertical que el de la asignatura: el mismo
    gesto, siempre en el mismo sitio.

  • Un tema se puede copiar de un curso a otro. En la lista de cursos de una
    asignatura, el menú de un curso lleva a «Copiar a otro curso…»: se elige a
    cuál y se marcan los documentos que se quieren. Lo que se copia es la
    composición --qué unidades lleva y en qué orden--; las unidades no se
    duplican, así que corregir una errata sigue siendo corregirla una vez. Los
    temas se llevan su declaración consigo, y lo que ya esté allí no se pisa.

  • Se pueden añadir varios repositorios de una vez, marcándolos en la
    lista. Y antes de clonar se mira qué hay en la carpeta de destino: si ya
    está clonado se dice y se ofrece abrir el que hay --volver a clonar encima
    se llevaría por delante lo que tenga sin enviar, que puede ser el trabajo de
    otra persona de la misma máquina--; si hay otra cosa, no se toca nada.

  • Los repositorios se encienden y se apagan desde arriba. Los nombres de
    la barra superior ahora son botones: pulsa uno y su material desaparece de
    la biblioteca y de las asignaturas; púlsalo otra vez y vuelve. Apagarlo no
    lo cierra --sigue trayendo y guardando--, y enseña exactamente lo mismo que
    vería quien no lo tuviera, así que sirve para comprobar qué ve un compañero.
    La elección te sigue de un ordenador a otro.

  • Una asignatura repartida entre dos repositorios se ve entera. Antes la
    pantalla del curso enseñaba los documentos de uno solo y había que cambiar
    de repositorio para ver los demás, como si fueran dos sitios distintos.
    Ahora salen todos juntos, y al mover uno se guarda en el repositorio del que
    sale.

  • Un curso se ve por temas. Lo que se da junto sale junto: el Tema 1, con
    su teoría, su práctica, su análisis bibliográfico y su marco histórico en
    una misma tarjeta, aunque esos ficheros estén en repositorios distintos. Los
    temas se pliegan, y lo que no pertenece a ninguno sigue donde estaba.

  • El tema lo declara un repositorio y lo nombran los documentos, que pueden
    estar en otro. Quien no tenga el repositorio donde se declaró ve todo su
    material igual que antes: lo que no ve es la agrupación. Nunca desaparece
    nada por no tener un repositorio.

  • Un documento puede pertenecer a varios temas, y sale en todos.

  • Los temas se declaran por curso académico, así que dos años del mismo tema
    son dos temas: lo que se dio en cada uno no se mezcla.

  • Tus preferencias te siguen de un ordenador a otro. Qué temas tienes
    plegados se guarda en el repositorio que elijas, en un fichero con tu nombre
    de GitHub: podéis compartir repositorio sin pisaros las vuestras. Se elige
    en Ajustes, y sin elegir ninguno todo sigue funcionando en esta máquina.

  • Los análisis bibliográficos ya compilan. Un tema puede citar sus fuentes
    —«la demostración está en el Teorema 1.1.1 de Abbott»— y la cita sale en el
    PDF con su autor y su año. Las obras se listan solas al final del documento,
    y solo si se ha citado alguna. Las fuentes se escriben una vez para todo el
    repositorio, en shared/bibliography.bib.

  • Didacta avisa antes de compilar de toda obra citada que no esté en esa
    lista, con el nombre de la lección donde está la cita. Antes eso aparecía
    compilando, como un error que no decía qué faltaba.

  • Las diapositivas de un tema largo ya no fallan la primera vez. La barra
    de progreso del pie se desbordaba mientras LaTeX aún no sabía cuántas
    diapositivas había, y el tema no salía. Compilarlo dos veces lo arreglaba,
    lo cual no es un arreglo.

  • Con dos repositorios abiertos, los dos se miran. Al segundo no se le
    veían los cambios hechos desde fuera —ni un fichero editado en otro
    programa, ni un git pull— hasta reiniciar. Y un repositorio recién añadido
    al que todavía no se le había generado el índice se quedaba enseñando el
    error para siempre, incluso después de generarlo: ahora lo coge en cuanto
    aparece.

  • Didacta es software libre. El código está publicado bajo la GPL-3.0, y
    con él la documentación: qué es cada pantalla, cómo se escribe una unidad y
    cómo se publica una versión, con capturas. Está en
    https://franjfal.github.io/didacta/, que es también de donde se descarga.

  • Actualizarse ya no depende de tener acceso a nada. Antes las versiones
    vivían en un repositorio privado y la aplicación comprobaba, después de
    entrar en GitHub, si tu cuenta llegaba a él. Esa comprobación ya no existe:
    buscar una versión nueva no manda ninguna credencial. Entrar en GitHub sigue
    haciendo falta, pero por lo que siempre fue de verdad, que es que tu material
    vive en tus repositorios.

  • La primera vez, Didacta se presenta y se configura sola. Explica qué es
    en tres pantallas y después deja hecho lo que hace falta para trabajar:
    entrar en GitHub, abrir el primer repositorio --de GitHub, de una carpeta ya
    clonada, o preparando uno vacío-- y descargar el motor, que hasta ahora había
    que clonar a mano desde un terminal. Se puede saltar entera, y no vuelve.

  • Y un recorrido guiado por la ventana, que señala el carril, la barra de
    arriba y la cola de traducción diciendo para qué es cada cosa. Se sale con
    ++esc++ o pulsando fuera, y desde Ajustes se vuelven a ver las dos cosas.

  • Lo que se añade a la composición sale en el PDF. Un apartado o un
    subapartado nuevo se guardaba, se veía en la pantalla de composición y el PDF
    seguía sin él: la composición vive en year.yaml y lo que compila LaTeX es el
    .tex de al lado, y nadie los ponía de acuerdo. Ahora compilar lo hace, y
    didacta check avisa cuando el .tex se ha quedado atrás. El fichero se
    respeta: sólo se reescribe la lista de unidades y apartados, lo desactivado
    sigue desactivado, y si alguien había escrito LaTeX ahí en medio no se toca y
    se dice.

  • Un icono de información en cada lección y en cada tema. Contesta las dos
    preguntas que se hacen con algo delante y que no son de su contenido: dónde
    más se da esto, y qué versiones tengo guardadas. Lo primero estaba enterrado
    en el panel de la derecha de una lección --que se puede tener cerrado, y que
    no existe en un tema-- y lo segundo estaba en la pantalla de Asignaturas, a
    dos pantallas de donde te lo preguntas. Desde ahí se salta a cada sitio, se
    ven y se crean versiones congeladas, se da una lección en otro tema y se
    parte en dos lo que esté vinculado en varios sitios. Las versiones congeladas
    son de una asignatura y no de un fichero, así que una lección que se da en
    cuatro sale con los cuatro juegos y el nombre de cada asignatura delante.

  • Los botones de vinculación de una lección ya no se salen del panel. Con
    la lección dada en dos sitios eran dos, no cabían en los trescientos y pico
    píxeles del panel, y el que decía «Gestionar vinculación» quedaba fuera de la
    pantalla. Ahora viven en el icono de información, que es donde se buscan.

  • El visor de PDF es un visor de verdad. Trae un lateral con el índice del
    documento --los apartados, para saltar a uno-- y las miniaturas de las
    páginas; el número de página se escribe en lugar de llegar a la 84 a base de
    flechas; y están el zoom y los tres ajustes de siempre: al ancho, al alto y
    página entera. A la derecha, una barra de desplazamiento que se arrastra y va
    diciendo por qué página pasa. Con dos idiomas abiertos lado a lado, todo eso
    mueve los dos a la vez, que es lo que permite compararlos.

  • Los teoremas y las definiciones vuelven a ir en una caja. Con su marco de
    color, su fondo teñido y el nombre --«Definición 1.2 (Espacio normado)»-- en
    una etiqueta montada sobre el borde de arriba, que es como se veían antes de
    la migración. En los apuntes la caja va suave, porque una página lleva ocho
    seguidas y se lee durante una hora; proyectada va con más contraste y una
    sombra corta, para que se lea desde el fondo del aula. La caja se parte entre
    páginas: un teorema largo ya no se sale del papel.

  • Las notas del profesor, los objetivos y los recuadros sin etiqueta van
    igual
    , cada uno con su color. Una página donde el teorema lleva marco y la
    nota didáctica lleva una raya se lee como dos documentos pegados.

  • Las presentaciones tienen portada. Una banda de color de canto a canto
    con el título de la asignatura en blanco, el logotipo y los datos del curso
    abajo: es la diapositiva que está proyectada mientras la gente entra y se
    sienta. Las páginas de apartado dicen además de qué apartado se trata, y el
    pie remata con las franjas escalonadas de siempre.

  • La portada de los apuntes ya no lleva el encabezado puesto --repetía el
    título dos centímetros por encima del título-- ni el número de página. Y la
    institución se compone debajo de la ficha del curso, no a su derecha.

  • Los apartados de un documento salen en el idioma que se compila. El
    valenciano de un tema venía con el contenido traducido y los encabezados en
    castellano: media traducción, que en clase es peor que ninguna porque no se
    ve hasta que está proyectada. Los títulos estaban escritos en los dos
    idiomas desde el principio; lo que pasaba es que el documento se quedaba con
    uno. Ahora los lleva todos y elige al compilar, así que el mismo documento da
    el castellano con encabezados castellanos y el valenciano con valencianos, y
    no hay dos ficheros que mantener de acuerdo.

  • Traer, enviar y confirmar abren el terminal, el mismo que se abre al
    compilar. Un envío con setecientos ficheros esperando tarda un rato largo, y
    hasta ahora eso era un botón apagado y nada más: desde fuera no se distingue
    de una aplicación colgada, así que se pulsa otra vez. Ahora se ve lo que está
    haciendo --qué repositorio va, cuántos objetos lleva contados, cuánto lleva
    subido-- y la ventana se quita sola cuando termina bien. Si algo falla se
    queda, que es cuando hay que leerla.

  • Lo que falta por confirmar se cuenta aparte de lo que falta por enviar.
    La insignia de enviar sumaba las dos cosas y decía «697 sin enviar» sobre un
    repositorio que no tenía ni un commit pendiente: lo que había eran 697
    ficheros que no estaban todavía dentro de ningún commit. Ahora cada botón
    lleva su número, y dicen cosas distintas porque son cosas distintas.

  • Y confirmar está siempre que haya algo que confirmar, también con los
    commits automáticos puestos. Se daba por hecho que con ellos no quedaba
    nunca nada suelto, y no es verdad: lo que se escribe fuera de Didacta --otro
    editor, una carpeta de lecciones copiada, material traído de otro sitio--
    llega al disco sin pasar por aquí, y ahí se quedaba, sin botón que lo
    arreglara.

  • El diálogo de confirmar deja elegir qué entra. Lo pendiente puede ser un
    fichero o pueden ser setecientos, y meter setecientos en un commit que dice
    una sola cosa es tirar su historial antes de tenerlo. Salen agrupados por
    repositorio, con un filtro por ruta --escribe «taylor» y quedan los de
    Taylor-- y la casilla del repositorio marca y desmarca lo que se ve. Así una
    tarde de trabajo sale en cinco commits que se pueden leer, en vez de uno que
    no.

  • Compilar funciona en Windows. No había funcionado nunca: la aplicación
    lanzaba el motor como en macOS y en Linux, y Windows no sabe ejecutar un
    script de Python sin decirle con qué. Ahora busca el intérprete --el
    lanzador py, o python-- también donde lo deja el instalador de
    python.org cuando no se marca la casilla del PATH. Y si lo único que hay es
    el python.exe que trae Windows, que no es un Python sino un acceso directo
    a la Microsoft Store, lo dice en lugar de abrir la tienda.

  • «Abrir en el visor» y «Enseñar en la carpeta» funcionan en Windows y en
    Linux.
    Sólo estaban hechos para macOS, y en los otros dos el botón estaba
    pero daba un error.