Skip to content

fix(partners): do not treat empty markdown rows as table separators - #682

Merged
pancacake merged 1 commit into
HKUDS:devfrom
santhreal:fix/telegram-empty-row-not-separator
Jul 24, 2026
Merged

fix(partners): do not treat empty markdown rows as table separators#682
pancacake merged 1 commit into
HKUDS:devfrom
santhreal:fix/telegram-empty-row-not-separator

Conversation

@santhreal

Copy link
Copy Markdown
Contributor

Telegram table rendering treated a fully empty row as a separator because all([]) is True in Python, which dropped the row and broke alignment.

Require at least one cell before classifying a row as a separator.

all([]) is True in Python, so a blank table row was treated as a separator.
@pancacake
pancacake merged commit 968921b into HKUDS:dev Jul 24, 2026
9 of 11 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
…KUDS#682)

all([]) is True in Python, so a blank table row was treated as a separator.
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