Novedades
Notas de versión de acs2md, 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 acp2md.
Lo último
La conversión de espacios se ejecuta en paralelo
space convert ahora convierte 4 páginas a la vez por defecto. La conversión está limitada por la red, así que solapar unas cuantas páginas oculta la mayor parte de la latencia por página. Con --concurrency 1 se restaura la conversión estrictamente secuencial.
La salida es idéntica con cualquier valor: las páginas se recogen en el orden de entrada, sin importar qué worker termine primero, así que la estructura de directorios, --rewrite-links y los totales del resumen no cambian. Consulta Rendimiento.
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 adivinarlo. Esto es lo que hace seguro subir --concurrency: es el servidor quien marca el ritmo, en vez de que el cliente lo descubra fallando.
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 acs2md 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
✅ Sync complete!
✅ Converted: 835
⏱️ Took: 2m 14sLa cifra cubre el comando completo, incluidas las llamadas a la API y las descargas de imágenes. Los comandos de página imprimen el tiempo en stderr, nunca en stdout, para que las redirecciones y los pipelines sigan limpios.
Un segundo Ctrl+C fuerza la salida
La primera interrupción cancela de forma limpia y deja que se replieguen las páginas ya en vuelo, lo cual no es instantáneo cuando se están convirtiendo varias a la vez. Antes, cualquier Ctrl+C adicional se descartaba y una ejecución que parecía atascada no se podía detener.
Correcciones
--debugno 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-fileindique otra cosa.- Un
log.level,log.formatolog.fileinválido bloqueaba todos los comandos, incluidos los comandosconfigque 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.
acs2md --log-file x.log doctortomaba--log-filecomo nombre de comando, así quedoctor— el comando que se ejecuta para diagnosticar problemas de licencia — se negaba a arrancar en una máquina sin licencia. space get --syncpodía borrar archivos fuera del directorio de salida.- Dos guardados concurrentes podían corromper el estado de sincronización, porque cada guardado escribía a través del mismo nombre temporal fijo.
- Un
http.client.proxyinvá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:
acs2md config get image.max_size_bytes # 10485760 significa que el valor antiguo está fijado
acs2md config set image.max_size_bytes 2097152acp2md lee su propia configuración, así que ejecuta el mismo par allí si lo usas.
Acción: --resolve-users y --link-mentions ahora vienen activados
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:
| Antes | Ahora |
|---|---|
Title, AuthorID, CreatedAt, ID, LastOwnerID, OwnerID, ParentID, ParentType, Position, SpaceID, Status, SubType, VersionAuthorID, VersionCreatedAt, VersionMessage, VersionMinorEdit, VersionNumber | title, 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 space convert las labels no forman parte del listado masivo de páginas, así que --include-labels (por defecto true) controla una petición adicional por página; ponlo a false para evitar ese coste.
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
- Convertir espacios — la referencia completa de opciones
- Bóvedas de Obsidian — la ruta de exportación a bóveda
- Configuración — reintentos, proxy y credenciales