Context: Estaba corriendo ft reports export reconciliation --workspace <id> --from 2026-06-01 --to 2026-07-01 para bajar la conciliación de un workspace a un archivo CSV y analizarla con herramientas normales de CSV.
Wish / friction: El archivo generado no es CSV válido. En vez de escribir cada fila con un salto de línea real, todo el contenido queda como un único string entre comillas dobles, con los saltos de línea escapados como los dos caracteres \ + n (backslash-n literal), no como bytes 0x0A. Lo confirmé con od -c sobre los primeros bytes del archivo:
" s a l e _ r e f e r e n c e , ... m a t c h _ s t a t u s \ n F T - Q H T J - 0 0 0 1 8 ...
Esto rompe cualquier consumo estándar del CSV (Excel, pandas, csv.DictReader, Google Sheets, etc.) — hay que hacer un unescape manual (strip('"') + replace('\\n', '\n')) antes de poder parsearlo. El comando ft sales list --csv (y otras listas con --csv) sí generan CSV con saltos de línea reales, así que el bug parece específico de reports export reconciliation (y posiblemente de los otros reports export).
Why it matters: El comando se llama export ... > archivo.csv específicamente para consumir el output con otras herramientas fuera del CLI (contabilidad, análisis financiero). Si el CSV no es válido, el usuario tiene que descubrir el bug primero y luego escribir un parche manual cada vez, lo cual anula el propósito de tener un export a CSV.
Reported via the freeticket-cli skill.
Context: Estaba corriendo
ft reports export reconciliation --workspace <id> --from 2026-06-01 --to 2026-07-01para bajar la conciliación de un workspace a un archivo CSV y analizarla con herramientas normales de CSV.Wish / friction: El archivo generado no es CSV válido. En vez de escribir cada fila con un salto de línea real, todo el contenido queda como un único string entre comillas dobles, con los saltos de línea escapados como los dos caracteres
\+n(backslash-n literal), no como bytes0x0A. Lo confirmé conod -csobre los primeros bytes del archivo:Esto rompe cualquier consumo estándar del CSV (Excel, pandas,
csv.DictReader, Google Sheets, etc.) — hay que hacer un unescape manual (strip('"')+replace('\\n', '\n')) antes de poder parsearlo. El comandoft sales list --csv(y otras listas con--csv) sí generan CSV con saltos de línea reales, así que el bug parece específico dereports export reconciliation(y posiblemente de los otrosreports export).Why it matters: El comando se llama
export ... > archivo.csvespecíficamente para consumir el output con otras herramientas fuera del CLI (contabilidad, análisis financiero). Si el CSV no es válido, el usuario tiene que descubrir el bug primero y luego escribir un parche manual cada vez, lo cual anula el propósito de tener un export a CSV.Reported via the freeticket-cli skill.