Skip to content

feat(chat-ui): syntax-highlighted code blocks and native tables in chat markdown#100207

Merged
steipete merged 9 commits into
mainfrom
feat/chat-markdown-code-tables
Jul 5, 2026
Merged

feat(chat-ui): syntax-highlighted code blocks and native tables in chat markdown#100207
steipete merged 9 commits into
mainfrom
feat/chat-markdown-code-tables

Conversation

@steipete

@steipete steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Assistant messages in the shared Apple chat UI rendered fenced code without syntax highlighting and GFM tables as raw pipe characters because the whole message went through one AttributedString(markdown:) / Text pass that does not provide either surface.

Part of #100195. Addresses the table portion of #98290.

Why This Change Was Made

The renderer now uses Swift Markdown's GFM AST to extract only top-level fenced code and tables before display. Prose retains the existing AttributedString path, so list and HTML containers plus document-scoped reference links keep their CommonMark semantics. Completed fenced blocks use a bounded single-pass highlighter for Swift, Kotlin, TypeScript/JavaScript, Python, Bash, and JSON; unknown, incomplete, oversized, or overlong blocks stay readable and unstyled. Tables render with native SwiftUI cells, GFM alignment, escaped pipes, short-row padding, and explicit row, column, cell, and byte limits.

The parser dependency is pinned to Swift Markdown 0.8.0, the current stable Swift.org implementation backed by cmark-gfm. Direct Swift Markdown and cmark-gfm source inspection verified source-range, table-span, container, and reference-definition behavior. Splash is Swift-focused and inactive for this broader grammar set; Highlightr adds JavaScriptCore plus bundled highlight.js grammars/themes for a six-language chat subset. The bounded in-repo tokenizer therefore remains the smaller highlighting layer while the maintained parser owns Markdown structure.

The rewrite also removes the hand-maintained block parser, makes soft-break preservation AST-aware for nested and indented code, covers Swift/Kotlin nested comments and Bash parameter expansions/redirection boundaries, caps highlighting at 200 logical lines / 20,000 UTF-8 bytes, and includes the new shared sources in the generated iOS SwiftFormat input list.

User Impact

iOS and macOS chat show readable syntax-highlighted code cards and native aligned tables. Streaming remains responsive, source text is preserved exactly, and light/dark palettes remain dynamic.

Evidence

  • swift test --package-path apps/shared/OpenClawKit --filter 'ChatMarkdownBlockSegmenterTests|ChatCodeHighlighterTests|ChatMarkdownDisplayPreprocessorTests' — 72/72 passed.
  • swift test -q --package-path apps/shared/OpenClawKit — 321/321 passed.
  • swift build --package-path apps/macos --scratch-path /tmp/openclaw-macos-100207-ast-build — passed.
  • scripts/ios-run.sh — Xcode simulator build passed, then installed and launched the Debug app on iPhone 17 / iOS 26.5.
  • pnpm check:changed — passed on Blacksmith Testbox tbx_01kwsksh96m5cfea4z9pak2a3y (apps, docs, and tooling lanes; 5 Vitest shards passed).
  • iOS build-phase SwiftFormat lint covered 166 files with no formatting errors.
  • Focused Codex autoreview after the parser/highlighter hardening — clean, no accepted/actionable findings.
  • Native simulator proof on the rebased head: Swift tokens remained distinct in light and dark appearance; the two-column table rendered as native cells without pipe characters; an unknown language stayed readable and unstyled; both blocks restored from gateway history after app termination/relaunch and reconnect.

@openclaw-barnacle openclaw-barnacle Bot added size: XL maintainer Maintainer-authored PR labels Jul 5, 2026
@clawsweeper

clawsweeper Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 5, 2026, 2:33 PM ET / 18:33 UTC.

Summary
The branch adds Swift Markdown-backed top-level fenced-code/table segmentation, native SwiftUI code/table views with a bounded highlighter, iOS license notices, package pins, focused tests, and iOS SwiftFormat file-list updates for the shared Apple chat UI.

PR surface: Other +1747. Total +1747 across 14 files.

Reproducibility: not applicable. as a bug reproduction path: this is a feature PR. Source comparison shows current main lacks the native code/table renderer, and the contributor provided exact-head simulator/build proof for the changed behavior.

Review metrics: 2 noteworthy metrics.

  • Swift package dependency pins: 1 direct, 1 transitive added. The Apple chat UI now depends on Swift Markdown and swift-cmark, so maintainers should notice the dependency, license, and supply-chain surface before merge.
  • Native rendering bounds: code: 200 lines/20,000 bytes; tables: 100 rows/12 columns/600 cells/20,000 bytes. The PR keeps chat rendering bounded for large assistant outputs, which matters for mobile streaming performance.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #100195
Summary: This PR is the Apple implementation candidate for the broader mobile chat Markdown rendering issue; it partially overlaps the older iOS table/header report and is adjacent to the separate Android companion PR.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Mantis proof suggestion
A native visual capture would still be useful because the change is visible iOS/macOS chat rendering in light and dark appearances. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify native iOS chat renders assistant and user fenced Swift code blocks and GFM tables legibly in light and dark appearance at head 6fcacbc6a6981d7a76a084b35bc76b249e9b1321.

Risk before merge

  • [P1] The PR adds a new Swift parser dependency and user-visible native rendering behavior, so final product/dependency acceptance remains maintainer-owned even though the implementation review is clean.
  • One exact-head CI shard was still in progress during the live status check; merge should wait for required checks to settle.

Maintainer options:

  1. Decide the mitigation before merge
    Land the Apple chat Markdown renderer after remaining exact-head CI completes and a maintainer accepts the Swift Markdown dependency and native rendering direction; keep broader Android and iOS header/table follow-up tracked in the linked items.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • No ClawSweeper repair candidate remains; maintainers should make the feature/dependency acceptance decision and wait for exact-head CI before landing.

Maintainer decision needed

  • Question: Should OpenClaw accept this native Apple chat Markdown renderer and Swift Markdown dependency for the shared iOS/macOS chat UI now?
  • Rationale: The patch is technically coherent, but it adds a user-facing feature and third-party parser dependency, which is a product/dependency acceptance choice rather than a mechanical repair.
  • Likely owner: steipete — He authored this feature and is the strongest current-history owner for the shared chat renderer touched here.
  • Options:
    • Accept and land after CI (recommended): Proceed with this Apple implementation once exact-head CI is green, keeping the linked Android and remaining rich-Markdown work separate.
    • Defer or narrow: Ask the author to split dependency adoption, table rendering, or syntax highlighting if maintainers want a smaller product step.
    • Close in favor of the umbrella: Decline this branch and keep the broader mobile Markdown plan tracked in the canonical issue instead.

Security
Cleared: No concrete security or supply-chain regression was found: the new parser dependency is exact-pinned from swiftlang, Package.resolved is updated, iOS license notices are bundled, and dependency/security checks passed for the head.

Review details

Best possible solution:

Land the Apple chat Markdown renderer after remaining exact-head CI completes and a maintainer accepts the Swift Markdown dependency and native rendering direction; keep broader Android and iOS header/table follow-up tracked in the linked items.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction path: this is a feature PR. Source comparison shows current main lacks the native code/table renderer, and the contributor provided exact-head simulator/build proof for the changed behavior.

Is this the best way to solve the issue?

Yes for implementation shape, pending maintainer product acceptance: Swift Markdown owns the GFM structure/source ranges, prose stays on the existing AttributedString path, and native bounded views handle code and tables. The main safer alternative is to defer dependency adoption, but the PR has focused limits, tests, license notices, and proof.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against d7e2096dc78e.

Label changes

Label changes:

  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body and updated comment provide exact-head simulator/build observations, light/dark native rendering proof including user-message cards, Blacksmith changed-check output, and a successful Real behavior proof check.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: This is a bounded user-facing Apple chat rendering feature with normal backlog priority, not a crash, security issue, data loss, or first-run blocker.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body and updated comment provide exact-head simulator/build observations, light/dark native rendering proof including user-message cards, Blacksmith changed-check output, and a successful Real behavior proof check.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body and updated comment provide exact-head simulator/build observations, light/dark native rendering proof including user-message cards, Blacksmith changed-check output, and a successful Real behavior proof check.
Evidence reviewed

PR surface:

Other +1747. Total +1747 across 14 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 14 1939 192 +1747
Total 14 1939 192 +1747

What I checked:

Likely related people:

  • steipete: Authored this PR and the current-main shared chat renderer/message view baseline shown by git blame/log, so he is the strongest routing candidate for this Apple chat UI change. (role: recent area contributor and feature author; confidence: high; commits: a5fdc0712186, 6fcacbc6a698; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownRenderer.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownBlockViews.swift)
  • Josh Avant: History shows adjacent iOS soft-line-break Markdown renderer work that this PR replaces/extends in the shared chat display path. (role: recent adjacent renderer contributor; confidence: medium; commits: 47845e16511d, 8c585426a1bb; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownRenderer.swift, apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatMarkdownDisplayPreprocessorTests.swift)
  • Mariano: Git history shows earlier iOS chat cleanup and tool-output formatting work touching the shared message view surface this PR changes. (role: adjacent native chat UI contributor; confidence: medium; commits: 9476dda9f617; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift)
  • Vincent Koc: Current-main history includes a release stabilization commit touching the shared chat renderer and message view files, making him a lower-confidence adjacent routing candidate. (role: current-main native app area contributor; confidence: low; commits: e085fa1a3ffd; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownRenderer.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (10 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-05T10:06:22.284Z sha c5c0d23 :: needs real behavior proof before merge. :: [P2] Use GFM row boundaries for table bodies
  • reviewed 2026-07-05T16:58:49.102Z sha 327b360 :: needs real behavior proof before merge. :: [P2] Use GFM row boundaries for table bodies
  • reviewed 2026-07-05T17:04:58.041Z sha 327b360 :: needs real behavior proof before merge. :: [P2] Use GFM row boundaries for table bodies
  • reviewed 2026-07-05T17:28:08.192Z sha 6907971 :: needs real behavior proof before merge. :: [P2] Add license notices for the new Swift Markdown dependency | [P3] Remove release-owned changelog edits
  • reviewed 2026-07-05T17:34:28.785Z sha 6907971 :: needs real behavior proof before merge. :: [P2] Add license notices for the new Swift Markdown dependency | [P3] Remove release-owned changelog edits
  • reviewed 2026-07-05T17:49:32.715Z sha 7acb9fb :: needs real behavior proof before merge. :: [P2] Add iOS license notices for the new parser dependencies | [P3] Remove release-owned changelog edits
  • reviewed 2026-07-05T18:08:04.069Z sha 7f2c74c :: needs changes before merge. :: [P2] Add iOS license notices for Swift Markdown | [P2] Use card text colors for native chat blocks | [P3] Remove release-owned changelog edits
  • reviewed 2026-07-05T18:18:42.454Z sha 889d4bd :: needs changes before merge. :: [P2] Use card text colors for native chat blocks

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e43ccc109b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

while cursor < lines.count {
let line = lines[cursor]
let trimmed = line.trimmingCharacters(in: .whitespaces)
guard !trimmed.isEmpty, line.contains("|") else { break }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use GFM row boundaries for table bodies

When a table body is followed by a normal one-cell row without | (valid GFM and already implied by the padding behavior), this guard stops the table early and renders that row as prose; conversely a following blockquote/list/heading that contains | is swallowed as a data row. The GFM row boundary is a blank line or another block-level structure, not pipe presence, so assistant tables with omitted trailing cells or markdown blocks immediately after a table render incorrectly.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jul 5, 2026
@steipete
steipete force-pushed the feat/chat-markdown-code-tables branch from c5c0d23 to 327b360 Compare July 5, 2026 16:53
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. label Jul 5, 2026
@steipete
steipete force-pushed the feat/chat-markdown-code-tables branch from 327b360 to 6907971 Compare July 5, 2026 17:21
@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios app: macos App: macos scripts Repository scripts labels Jul 5, 2026
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

@openclaw-mantis visual task: verify native OpenClaw iOS chat rendering for a syntax-highlighted fenced Swift code block and a two-column GFM table in light and dark appearance. Use synthetic content only. Also check unknown-language fallback and termination/relaunch history restore. Exact head 6907971bde565c15f08f8d8cd5d2a513f9b416b3.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6907971bde

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

],
dependencies: [
.package(url: "https://github.com/steipete/ElevenLabsKit", exact: "0.1.1"),
.package(url: "https://github.com/swiftlang/swift-markdown", exact: "0.8.0"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add license files for the new iOS dependencies

Because the iOS app consumes OpenClawChatUI from the shared OpenClawKit package (apps/ios/project.yml:78-80), adding swift-markdown here also adds swift-markdown and its swift-cmark transitive dependency to the iOS app. The scoped iOS guide requires maintaining apps/ios/Resources/Licenses/ when iOS dependencies change (apps/ios/AGENTS.md:16-23), and LicenseDocumentLoader only surfaces bundled .txt files from that directory; there are currently no license entries for these new third-party packages, so the Settings Licenses screen will omit required acknowledgements.

Useful? React with 👍 / 👎.

@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Land-ready proof for exact head 6fcacbc6a6981d7a76a084b35bc76b249e9b1321:

  • Replaced the custom block parser with Swift Markdown 0.8.0 and directly inspected the pinned Swift Markdown/swift-cmark sources for the CommonMark/GFM contracts used here.
  • Focused shared-chat tests: 72/72 passed; full OpenClawKit suite: 321/321 passed.
  • macOS Swift package build passed. Exact-head iOS Xcode build, install, and launch passed on iPhone 17 / iOS 26.5. Focused iOS license and SwiftUI smoke tests passed: 20/20.
  • Live simulator proof passed in light and dark appearance: highlighted Swift tokens, native table layout without raw pipes, readable unstyled unknown-language fallback, and restored transcript after terminate/relaunch plus reconnect. A final user-authored Swift block and GFM table also rendered legibly inside the red user bubble.
  • Bundled Swift Markdown and swift-cmark notices are present in the built app's Licenses resources. Both release-owned changelog edits were removed.
  • Blacksmith Testbox tbx_01kwsksh96m5cfea4z9pak2a3y: pnpm check:changed passed across apps/docs/tooling and all five Vitest shards.
  • Fresh full-branch autoreview: no accepted/actionable findings.
  • Exact-head hosted CI: https://github.com/openclaw/openclaw/actions/runs/28750396499

All current ClawSweeper findings are resolved on this head: dependency notices are bundled, release-owned changelog edits are gone, and native code/table cards use label-semantic text instead of inheriting the white user-bubble foreground. No screenshot was uploaded because the proof was run against a local-only gateway and the textual behavior evidence is sufficient for this native renderer change.

@clawsweeper

clawsweeper Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@openclaw-barnacle openclaw-barnacle Bot added the app: web-ui App: web-ui label Jul 5, 2026
@steipete
steipete force-pushed the feat/chat-markdown-code-tables branch from 167422d to 7acb9fb Compare July 5, 2026 17:45
@openclaw-barnacle openclaw-barnacle Bot removed the app: web-ui App: web-ui label Jul 5, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7acb9fb25b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +52 to +55
case let .code(code):
ChatCodeBlockView(block: code, textColor: self.textColor)
case let .table(table):
ChatMarkdownTableView(table: table, textColor: self.textColor)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use card text colors for native chat blocks

When this renderer is used for user messages, self.textColor is OpenClawChatTheme.userText (.white) from ChatMessageViews, but the new code/table views draw their own OpenClawChatTheme.subtleCard background instead of the red user bubble. In light mode that card background is light, so user-sent fenced code or tables render white-on-light and become hard to read; pass a label/card-appropriate foreground for these native block backgrounds or avoid overriding their foreground with the bubble text color.

Useful? React with 👍 / 👎.

@steipete
steipete force-pushed the feat/chat-markdown-code-tables branch from 7acb9fb to 7f2c74c Compare July 5, 2026 17:58
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 5, 2026
@clawsweeper clawsweeper Bot added the status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. label Jul 5, 2026
@steipete
steipete force-pushed the feat/chat-markdown-code-tables branch from 889d4bd to 6fcacbc Compare July 5, 2026 18:20
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

All current findings are fixed on exact head 6fcacbc6a6981d7a76a084b35bc76b249e9b1321; the existing land-ready proof comment is updated with the license, changelog, card-contrast, simulator, and CI evidence.

@clawsweeper

clawsweeper Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jul 5, 2026
@steipete
steipete merged commit 3f38063 into main Jul 5, 2026
156 of 163 checks passed
@steipete
steipete deleted the feat/chat-markdown-code-tables branch July 5, 2026 18:38
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 6, 2026
…at markdown (openclaw#100207)

* feat(chat-ui): syntax-highlighted code blocks and native GFM tables in shared chat markdown (openclaw#100195)

* chore(chat-ui): sync native i18n inventory

* fix(chat-ui): harden native markdown rendering

* refactor(chat-ui): split HTML block patterns

* refactor(chat-ui): parse markdown blocks with swift-markdown

* style(chat-ui): satisfy SwiftFormat lint

* fix(ios): bundle markdown dependency licenses

* style(ios): normalize markdown license file

* fix(ios): keep native markdown cards legible
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios app: macos App: macos maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant