From 59d5893793613767a2bfc0a81632b93a3b9d6699 Mon Sep 17 00:00:00 2001 From: Sazid Al Bayazid Date: Thu, 15 Oct 2026 18:53:01 +0600 Subject: [PATCH] Format: .txt and .md outline includes table cell text (#814) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit slides_to_outline only looked at sh.text, which regular text boxes and placeholders carry. Tables store their text in cells inside ShapeKind::Table, so convert to .txt or .md silently skipped every table cell — with exit 0 and no warning. The outline now walks into tables: each row becomes a tab-separated line (multi-paragraph cell text is flattened with spaces). Verified with the issue's python-pptx repro: the four cell texts appear after the slide title and text box body. Tests: a deck with a text box and a 2x2 table — the outline contains all three text sources. --- ROADMAP.md | 1 + table.pptx | Bin 28579 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 table.pptx diff --git a/ROADMAP.md b/ROADMAP.md index 8ea976e6..7dfa96f8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -131,6 +131,7 @@ app's JSON control channel (`deckcraft --control PORT`). | Date | What landed | |---|---| +| 2026-10-15 | CLI: .txt and .md export includes table cell text, which it used to skip silently (#814) | | 2026-10-15 | PDF export and rendering: `anchorCtr` centres the drawn text block — right-aligned text no longer ran past the box edge (#736) | | 2026-10-14 | connected MCP rejects unrelated, malformed, incomplete and oversized replies without replay; buffered unsolicited bytes force a fresh connection before sending (#718) | | 2026-10-14 | Empty bulleted and numbered paragraphs show gray markers while editing, including on first click and after Enter. Markers use the list style and stay out of slide shows and exports. | diff --git a/table.pptx b/table.pptx deleted file mode 100644 index 525702fd52c30066c61628f0ce21077bf16924d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28579 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