Skip to content

v3.47.2

@MrCoder MrCoder tagged this 01 Apr 11:36
* docs: add emoji support design spec (closes discussion on #78)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add edge cases and recoloring notes to emoji spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: clarify comma-separated resolution in emoji spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add uniform resolution across all contexts to emoji spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add emoji support implementation plan (11 tasks)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji resolution engine with CSS-first fallback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji service abstraction with fetch and caching

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add [emoji] tokens and rule to ANTLR grammar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: extract emoji from parse tree into participant data

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: render emoji inline with participant name in HTML renderer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: render emoji shortcode on participants in SVG renderer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji resolution to Comment class via resolveBracketContent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: wire builtin emoji map to renderers for Unicode resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji font fallback stack for SVG rendering

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: resolve [shortcode] emoji in message labels and fragment conditions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add Icon Registry service design spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: extract participant name correctly when emoji is present in from/to

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add en-space between emoji and participant name in SVG

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji-eval skill for rendering quality scoring

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: improve SVG emoji spacing with wider em-space

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: resolve emoji in SVG return message labels

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: account for emoji width in SVG participant box sizing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: prepend emoji unicode glyphs to comment text so they render visibly

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: account for emoji width in participant layout calculations

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add tech/architecture emoji shortcodes (database, server, api, etc.)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add known grammar limitations to emoji spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: resolve emoji in divider labels for both HTML and SVG renderers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add 10 emoji parity test cases to compare-cases.js

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: resolve emoji in diagram titles for both HTML and SVG renderers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add 3 more emoji parity cases (simple-async, self-call, title)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: strip emoji prefix from async message To() and ReturnTo() lookups

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: strip emoji prefix from async message target in HTML renderer component

The Interaction-async.tsx component was calling to()?.getFormattedText()
which returned "[lock]B" instead of "B" when emoji was present on the
target participant. This caused Coordinates.getPosition() to fail with
"Participant [lock]B not found" and arrows to render in the wrong
direction.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add 10 more emoji parity test cases from e2e patterns

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use regular space between emoji tspan and name in SVG participant

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: auto-detect local dev for Icon Registry service URL

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: vertically center emoji with text in SVG participant headers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji support to sync method names (A.[rocket]method())

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji-method-name and emoji-condition-label compare cases

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji in condition/catch labels + compare cases, fix spec

Emoji in fragment conditions (if, else if, while, catch) works via
rendering-layer resolution. Added 3 compare cases with 96-99% parity.
Corrected spec — this was listed as a known limitation but actually works.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji-opt-critical, emoji-nested-mixed, emoji-all-features compare cases

All score 90%+ parity. Tests emoji in opt/critical fragments, nested
if/try with emoji conditions and method names, and a kitchen-sink case
combining all emoji features.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji-chained-calls, emoji-assign-return, emoji-multi-async compare cases

Chained calls 95%, assign+return 89%, multi-async 69% (glyph-level diff).
Total 34 emoji compare cases.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add emoji-named-params, emoji-self-sync, emoji-fragments-return compare cases

All score 93%+. Named params with emoji 94%, self-sync with emoji 94%,
fragments with emoji return values 97%. Total 37 emoji compare cases.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: detect emoji-based participant icons in compare-case analyzer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: SVG parity for emoji in return labels, fragment conditions, and catch sections

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add self-correcting dia-scoring design spec and implementation plan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: render emoji-only participants as separate elements for SVG parity — 66.5% → 77.3% pixel match

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: center stereotype at participant center for emoji-only participants (54.7% → 72.8%)

* fix(svg): render emoji as separate text element in icon+emoji participants (77.2% → 77.6%)

* fix(svg): stereotype-width-aware participant centering + return height + emoji icon detection

* fix: icon+emoji participant label 4px left offset; fix analyzer icon measurement for icon+emoji participants

* fix: correct SVG group outline margin from 6px to 8px to match HTML renderer (emoji-group-case 77.3%→78.4%)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(svg): correct else-section vertical offset in alt fragments with emoji conditions

* fix(svg): expand fragment condition height from 20px to 36px for emoji conditions

* Revert "fix(svg): expand fragment condition height from 20px to 36px for emoji conditions"

This reverts commit a1bc00429abebca03febecc79543cf2c60a19a82.

* fix: improve SVG group outline parity — stroke-width 1.5px, CSS classes for correct colors, title bar covers stroke edges, bottom edge clipped by viewBox

* fix(ts): cast TitleContext to any for runtime prototype-patched content() method

* fix: align SVG group outline with HTML CSS outline — 86.4%→91.4% pixel match

* fix: critical fragment 2px header border + group outline 3px stroke matching HTML

* revert: undo critical fragment line and group stroke-width — both regressions

* feat: switch group border from CSS outline-dashed to SVG rect overlay for renderer parity

* Revert "feat: switch group border from CSS outline-dashed to SVG rect overlay for renderer parity"

This reverts commit abcc123aa06356c3e8bc86ea57f267d50bfe5725.

* feat(scoring): add critical fragment header color calibration to collect-data

* fix: returnOffset subpixel correction + group height K=13 (emoji-async-return 87.4%→97.0%, emoji-simple-async 89.5%→97.5%)

- buildStatementGeometry: returnOffset now uses height===0 sentinel for sync-block returns; the else branch (sync+height>0 or non-sync) uses 15.5, ensuring root-level --> arrows land at the correct subpixel Y
- buildParticipantGeometry: group height constant K=13 (was 14) reduces group bottom overshoot by 1px, improving group-related cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: emoji-async-return 87.4%→97% — return offset 16/15 → 16.5/15.5 for coord.height=0/other

* fix: floor return lineY to match HTML CSS pixel-snapping, emoji-simple-async 97.5%→99.4%

* fix: remove incorrect [emoji] syntax from catch() conditions in compare cases

* fix: extend returnOffset=16.5 to fragment-internal returns (emoji-fragments-return 91.6%→96.8%)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: use lineY-3 for return label Y to fix 0.5px offset on assignment returns (emoji-assign-return 98.04%→99.45%)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: resolve emoji shortcodes before measuring divider label width (emoji-divider-case 97.41%→99.12%)

* fix: align SVG group outline top by 0.5px (emoji-group-case 91.24%→91.25%)

* fix: match fill-only participant icon stroke in svg renderer

* test: add emoji visual coverage and agent skills

* fix: normalize residual scopes to frame space

* chore: change dev server port from 8080 to 4000

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: use relative URLs in interaction tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add SVG group outline overlay in HTML renderer for parity with SVG

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: update visual snapshots for group outline changes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: improve group outline parity by measuring actual participant DOM positions

Use ref-based DOM measurement to compute the group overlay position from
actual rendered participant boxes, instead of deriving from positioning
engine coordinates. This achieves 88.7% native pixel match (96% pos-only)
for repro-group-container, with remaining diff being antialiasing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add ‹ › nav buttons and keyboard arrow navigation to compare-case page

* fix: correct RTL D4 sender offset for nested occurrences (nested-fragment 98.3%→99.7%)

* fix: remove spurious 0.5px X shift from HTML group container (emoji-group-case 83.2%→94.3%)

* fix: group label font, title position, outline margin and analyzer calibration (group-minimal 88.1%→89.6%)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: sync group stroke-width to 1 and adjust title/outline positions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: correct maxReturnBottom padding for zero-height returns (return 93.4%→99.6%)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: suppress no-misleading-character-class lint error for ZWJ in EMOJI_PATTERN

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: update HTML snapshots for group outline stroke-width 1.5→1 change

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: incorporate upstream changes from main rebase

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: update Playwright snapshots for Linux CI

  Generated Linux-specific snapshots for chromium-linux platform.

  🤖 Generated with [Claude Code](https://claude.ai/code)

  Co-Authored-By: Claude <noreply@anthropic.com>

* ci: trigger CI run with Linux snapshots

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: revert parser/index.js and renderToSvg.spec.ts to match main (fixes 9 unit test failures)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Assets 2
Loading