Skip to content

fix(partners): keep empty cells when converting Slack markdown tables#679

Merged
pancacake merged 2 commits into
HKUDS:devfrom
santhreal:fix/slack-keep-empty-table-cells
Jul 24, 2026
Merged

fix(partners): keep empty cells when converting Slack markdown tables#679
pancacake merged 2 commits into
HKUDS:devfrom
santhreal:fix/slack-keep-empty-table-cells

Conversation

@santhreal

Copy link
Copy Markdown
Contributor

Blank cells in markdown tables were dropped when rendering for Slack, so a Score column with an empty value disappeared from the message.

Repro: convert a table row like | Alice | | ok | and the Score label is missing.

Keep empty cells in the labeled-row conversion and pad short rows to the header width.

santhreal and others added 2 commits July 23, 2026 22:22
Blank cells were dropped by a truthiness filter, so columns disappeared from the Slack rendering.
…able-cells

# Conflicts:
#	deeptutor/partners/helpers.py
@pancacake
pancacake merged commit 68de93f into HKUDS:dev Jul 24, 2026
5 of 6 checks passed
pancacake added a commit that referenced this pull request Jul 24, 2026
#679/#682/#683 each fixed markdown-table cell handling in one channel, but
Slack (convert_markdown_table_to_labeled_rows) and Telegram (_render_table_box)
still split rows with str.strip("|"), which collapses leading/trailing empty
cells and shifts every column — only Feishu (#683) had the correct split.

Extract split_markdown_table_row as the single primitive and route Slack,
Telegram, and Feishu through it: fixes the same class of bug in all three and
removes three near-duplicate row splitters. Slack's separator-row detection now
reuses is_markdown_table_separator_row instead of an ad-hoc regex.

Also fixes the #679 helpers-import ordering and formats the #679/#683 test
files that squash-merge did not run through ruff format.
pancacake added a commit that referenced this pull request Jul 24, 2026
Same-day maintenance follow-up to v1.5.3, focused on how chat feels.

- Chat responsiveness: the post-answer "generating" stall is gone (DONE
  carries the persisted message ids so the frontend reconciles in place
  instead of refetching the session), turn events flush in one
  transaction (#678), the streaming autoscroll stops forcing per-frame
  layouts, and Enter during streaming no longer fires an interleaved
  message (#674).
- Partners: markdown-table row splitting unified across channels — empty
  cells survive Slack (#679) and Feishu (#683) tables, and empty rows are
  no longer misread as header separators (#682).
- LLM-output parsing: <think> reasoning tags stripped before parsing
  (#675), adjacent JSON values no longer break Deep Research extraction
  (#680), and the parser returns the longest decodable value instead of
  the first prefix (#692).
- Assorted: streaming quiz cards stay scoped to their own turn (#677),
  the create-KB form survives the background indexing poll (#691), and
  Math Animator reads ms as milliseconds, not minutes (#681).
- Typing: SQLite session store add_message accepts str parents to match
  SessionStoreProtocol (PocketBase record ids).

Release notes: assets/releases/ver1-5-4.md
vaskoyudha added a commit to vaskoyudha/deeptutor-for-programmer-fork that referenced this pull request Jul 25, 2026
…HKUDS#679)

Blank cells were dropped by a truthiness filter, so columns disappeared from the Slack rendering.

Co-authored-by: Bingxi Zhao (Frank) <13051345080@163.com>
vaskoyudha added a commit to vaskoyudha/deeptutor-for-programmer-fork that referenced this pull request Jul 25, 2026
HKUDS#679/HKUDS#682/HKUDS#683 each fixed markdown-table cell handling in one channel, but
Slack (convert_markdown_table_to_labeled_rows) and Telegram (_render_table_box)
still split rows with str.strip("|"), which collapses leading/trailing empty
cells and shifts every column — only Feishu (HKUDS#683) had the correct split.

Extract split_markdown_table_row as the single primitive and route Slack,
Telegram, and Feishu through it: fixes the same class of bug in all three and
removes three near-duplicate row splitters. Slack's separator-row detection now
reuses is_markdown_table_separator_row instead of an ad-hoc regex.

Also fixes the HKUDS#679 helpers-import ordering and formats the HKUDS#679/HKUDS#683 test
files that squash-merge did not run through ruff format.
vaskoyudha added a commit to vaskoyudha/deeptutor-for-programmer-fork that referenced this pull request Jul 25, 2026
Same-day maintenance follow-up to v1.5.3, focused on how chat feels.

- Chat responsiveness: the post-answer "generating" stall is gone (DONE
  carries the persisted message ids so the frontend reconciles in place
  instead of refetching the session), turn events flush in one
  transaction (HKUDS#678), the streaming autoscroll stops forcing per-frame
  layouts, and Enter during streaming no longer fires an interleaved
  message (HKUDS#674).
- Partners: markdown-table row splitting unified across channels — empty
  cells survive Slack (HKUDS#679) and Feishu (HKUDS#683) tables, and empty rows are
  no longer misread as header separators (HKUDS#682).
- LLM-output parsing: <think> reasoning tags stripped before parsing
  (HKUDS#675), adjacent JSON values no longer break Deep Research extraction
  (HKUDS#680), and the parser returns the longest decodable value instead of
  the first prefix (HKUDS#692).
- Assorted: streaming quiz cards stay scoped to their own turn (HKUDS#677),
  the create-KB form survives the background indexing poll (HKUDS#691), and
  Math Animator reads ms as milliseconds, not minutes (HKUDS#681).
- Typing: SQLite session store add_message accepts str parents to match
  SessionStoreProtocol (PocketBase record ids).

Release notes: assets/releases/ver1-5-4.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants