main 9e85538535 web composer -> server attachment extraction -> codex gpt-6.1-sol node <<'NODE' const fs = require('node:fs'); const base = '/home/user/main/.t3/userdata/attachments/635403a2-f6d3-4f31-aa30-574a14ac9c79-'; const files = [ ['paragraphs-lf.rtf','b9057987-f61e-44fc-ae2e-d51a3b1e589b'], ['paragraphs-crlf.rtf','97b84750-c693-491d-9f66-21677e8fd6fe'], ['paragraphs-cr.rtf','aedd722b-0f8b-47f8-8996-dba9e1a174c1'], ['paragraphs-standard.rtf','7dbefaa3-717f-4a6a-8c87-709fe76dde0a'], ['symbols-hidden.rtf','11d3fdc7-32eb-42a8-8f72-e1c9a68f4af2'] ]; for (const [file,id] of files) { const contents = fs.readFileSync(base + id + '-rtf.rtf.txt','utf8'); const parts = contents.split(/\r\n|\n|\r/); const lines = contents.length === 0 ? 0 : parts.length - (/[\r\n]$/.test(contents) ? 1 : 0); console.log(JSON.stringify({file,contents,lines})); } NODE exit: 0 {"file":"paragraphs-lf.rtf","contents":"FirstSecondThird","lines":1} {"file":"paragraphs-crlf.rtf","contents":"FirstSecondThird","lines":1} {"file":"paragraphs-cr.rtf","contents":"FirstSecondThird","lines":1} {"file":"paragraphs-standard.rtf","contents":"First\nSecond\nThird","lines":3} {"file":"symbols-hidden.rtf","contents":"Visible\nα\tEnd\nLast","lines":3} pr b474297b68 web composer -> server attachment extraction -> codex gpt-6.1-sol node <<'JS' const fs = require('node:fs'); const base = '/home/user/t3code/.t3/userdata/attachments/18f99f44-aca0-45c5-8def-e94ed8866b59-'; const files = [ ['paragraphs-lf.rtf','544e66f8-01ee-4019-b899-8f91d391f252'], ['paragraphs-crlf.rtf','6f5e3d93-c2cf-4a7f-a6b3-9b69329ae9f1'], ['paragraphs-cr.rtf','58d17f44-1cc9-41a1-81fc-656e2497b0c6'], ['paragraphs-standard.rtf','813dbf0a-d3a1-40ff-b6f7-d9d62079cd54'], ['symbols-hidden.rtf','9bd79799-edab-4a72-a698-32b5a37fbadc'] ]; for (const [file,id] of files) { const contents = fs.readFileSync(base + id + '-rtf.rtf.txt','utf8'); const lines = contents.length === 0 ? 0 : contents.split(/\r\n|\r|\n/).length - (/[\r\n]$/.test(contents) ? 1 : 0); process.stdout.write(JSON.stringify({file,contents,lines}) + '\n'); } JS exit: 0 {"file":"paragraphs-lf.rtf","contents":"First\nSecond\nThird","lines":3} {"file":"paragraphs-crlf.rtf","contents":"First\nSecond\nThird","lines":3} {"file":"paragraphs-cr.rtf","contents":"First\nSecond\nThird","lines":3} {"file":"paragraphs-standard.rtf","contents":"First\nSecond\nThird","lines":3} {"file":"symbols-hidden.rtf","contents":"Visible\nα\tEnd\nLast","lines":3}