Skip to Content

Novedades

Notas de versión de acp2md, de más reciente a más antigua. El comportamiento de conversión proviene del motor ADF compartido de Climakers, así que la mayoría de los cambios de salida se aplican también a acs2md.


Lo último

Se respeta Retry-After

Cuando Confluence responde a una petición limitada con 429 o 503 e indica un retardo, el cliente espera ahora exactamente ese tiempo en lugar de recurrir a una planificación adivinada localmente. El servidor sabe cuánto dura su ventana; el cliente no.

Un retardo superior a 60 segundos se muestra en vez de esperarse, así que un comando nunca parece colgado, y la espera es interrumpible.

Los valores por defecto del backoff cambiaron, y actualizar no llega a una instalación existente. Subieron de 10ms/100ms a 500ms/30s, pero un archivo de configuración materializa todos los valores por defecto al crearse y la configuración gana a los valores por defecto. Una instalación antigua conserva un presupuesto total de 70 ms repartido en tres intentos, incapaz de sobrevivir a una ventana real de limitación. Ejecuta acp2md doctor para comprobarlo y consulta Reintentos y límite de peticiones.

Las imágenes se pueden escribir como archivos sidecar

--image-sidecars guarda cada imagen en attachments/<page-id>/ junto al Markdown y la enlaza de forma relativa, en lugar de incrustar una URI de datos en base64. La exportación sigue siendo autónoma en ambos casos: lo que cambia es la longitud de línea.

En una página real: 1.440.451 B y una línea de 244.311 caracteres en base64, frente a 12.100 B y 379 caracteres con sidecars. En un espacio completo además se deduplica: una imagen reutilizada en diez páginas se guarda una sola vez.

--obsidian lo activa, porque el base64 era lo último de ese preajuste que no se renderizaba en Obsidian.

Salida para Obsidian

Un preajuste completo — callouts, anclajes de encabezado que Obsidian resuelve y archivos sidecar de imagen — además de --wikilinks, --inline-tags, --panel-style y --media-dimensions. Consulta Bóvedas de Obsidian.

Cada comando informa de cuánto ha tardado

⏱️ Converted in 559ms

La cifra cubre el comando completo, incluidas las llamadas a la API y las descargas de imágenes. Se imprime en stderr, nunca en stdout, para que acp2md page convert by-id 123 > page.md y los pipelines sigan limpios.

Un segundo Ctrl+C fuerza la salida

La primera interrupción cancela de forma limpia y deja que se repliegue el trabajo en vuelo. Antes, cualquier Ctrl+C adicional se descartaba y una ejecución que parecía atascada no se podía detener.

Correcciones

  • --debug no producía salida alguna. Fijaba el nivel de log pero dejaba el destino en su valor por defecto, que lo descarta todo. Ahora escribe en stderr salvo que --log-file indique otra cosa.
  • Un log.level, log.format o log.file inválido bloqueaba todos los comandos, incluidos los comandos config que lo reparan. Ahora recurren a unos ajustes de log que funcionan durante esa ejecución e indican qué clave cambiar.
  • Una opción global colocada antes de un comando exento hacía que este exigiera licencia o validara la configuración. acp2md --log-file x.log doctor tomaba --log-file como nombre de comando, así que doctor — el comando que se ejecuta para diagnosticar problemas de licencia — se negaba a arrancar en una máquina sin licencia.
  • Un http.client.proxy inválido ahora es un error, no un aviso seguido de continuar. Enviar el tráfico directo en silencio cuando se pidió enrutarlo es, en una red corporativa, motivo para detenerse.

v1.0.5

Esta versión cambió la salida Markdown por defecto en las páginas que contienen paneles y para quien use --include-metadata. Las dos acciones de abajo no hacen nada si nunca escribiste el ajuste correspondiente.

Acción: revisa image.max_size_bytes

El valor por defecto bajó a 2 MB, pero una configuración escrita antes de esta versión casi con seguridad fija el antiguo 10485760, lo bastante permisivo como para incrustar un fondo de página y producir un archivo que ningún editor maquetará. La configuración gana a los valores por defecto, así que sigue imponiéndose:

acp2md config get image.max_size_bytes # 10485760 significa que el valor antiguo está fijado acp2md config set image.max_size_bytes 2097152

acs2md lee su propia configuración, así que ejecuta el mismo par allí si lo usas.

El front matter lleva nombres visibles y las menciones enlazan a los perfiles de las personas. Cuando una exportación se publica fuera de la organización, --resolve-users=false conserva los IDs de cuenta opacos.

Los paneles se renderizan como alerts de GitHub

> [!NOTE], > [!TIP], > [!WARNING] y > [!CAUTION] sustituyen a la cita con emoji anterior. Los alerts se renderizan tanto en GitHub como en Obsidian. Los tipos de panel sin equivalente conservan la forma con emoji. --panel-style=emoji restaura la salida antigua.

El front matter es YAML válido

--include-metadata emite ahora YAML determinista y correctamente entrecomillado, que Obsidian lee como Properties y que Jekyll, Hugo y Pandoc interpretan:

AntesAhora
Title, AuthorID, CreatedAt, ID, LastOwnerID, OwnerID, ParentID, ParentType, Position, SpaceID, Status, SubType, VersionAuthorID, VersionCreatedAt, VersionMessage, VersionMinorEdit, VersionNumbertitle, tags, author, created, updated, source, space, status, version, id, parent_id, owner_id

Las fechas son YYYY-MM-DD, tags procede de las labels de Confluence de la página, source es la URL de navegador y los campos vacíos se omiten. Los campos eliminados eran contabilidad interna de Confluence que ningún consumidor de Markdown usaba.

Las labels se recuperan automáticamente

Con el front matter activado, tags se rellena sin pasar --include-labels. En page convert esto viaja con la petición de página existente, sin coste adicional.

Los enlaces de encabezado se resuelven en el renderizador para el que exportas

La tabla de contenidos emitía anclajes de tipo slug al estilo de GitHub sin importar el destino. --panel-style=obsidian (y por tanto --obsidian) emite ahora anclajes que Obsidian resuelve.


Consulta también

Last updated on