• Will Chen's avatar
    Fix HTML attribute and content escaping for dyad-tags (#2266) · 23b45a9b
    Will Chen 提交于
    When serializing dyad-tags, special characters (& < > ") are escaped.
    When deserializing/parsing, these need to be unescaped to get the
    original values. This fixes issues where escaped characters like &lt;
    would appear literally in the UI or processed values.
    
    Changes:
    - Add shared/xmlEscape.ts with escape/unescape utilities
    - Update DyadMarkdownParser.tsx to unescape attributes and content
    - Update dyad_tag_parser.ts to unescape all parsed values
    - Consolidate duplicate escape functions to use shared utilities
    - Add comprehensive tests for the escape/unescape roundtrip
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Fixes incorrect literal XML entities by unescaping dyad-tag attributes
    and inner content during parse, and centralizes escape helpers.
    > 
    > - **Shared utils**: Add `shared/xmlEscape.ts` with
    `escapeXmlAttr|Content` and `unescapeXmlAttr|Content`; remove duplicate
    implementations and re-export in local agent tools
    > - **Parsing/rendering**: Update `DyadMarkdownParser` and
    `dyad_tag_parser` to unescape attributes/content for all relevant tags
    (write/rename/delete/search-replace/execute-sql/chat-summary/command)
    > - **Problem reports**: Generate `<dyad-problem-report>` using
    `escapeXmlAttr` for attributes and `escapeXmlContent` for messages
    > - **Local agent**: Use shared escaping in `xml_tool_translator` and
    related tooling
    > - **Tests/E2E**: Add comprehensive `xmlEscape` unit tests; update grep
    snapshots to expect raw JSX/HTML characters
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    0e1be9ad5d5cf0300cc1cf5bd361b1fd44f61ad7. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Fixes XML escaping for dyad-tags by unescaping attributes and content
    during parsing so original values render and process correctly. Prevents
    literal entities like &lt; showing in the UI and tools.
    
    - **Bug Fixes**
    - Unescape tag attributes and inner content in DyadMarkdownParser and
    dyad_tag_parser.
    - Correct attribute and content escaping in dyad-problem-report
    generation.
      - Add roundtrip tests for attribute and content escape/unescape.
    - Update local agent grep E2E snapshots to expect raw JSX/HTML
    characters.
    
    - **Refactors**
    - Introduce shared/xmlEscape with escape/unescape helpers for attributes
    and content.
    - Remove duplicate implementations and update IPC/local agent callers to
    use shared utilities.
    
    <sup>Written for commit 0e1be9ad5d5cf0300cc1cf5bd361b1fd44f61ad7.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarClaude <noreply@anthropic.com>
    Co-authored-by: 's avatargithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    23b45a9b
名称
最后提交
最后更新
.claude 正在载入提交数据...
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
makers 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CLA.md 正在载入提交数据...
CLAUDE.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
lint-staged.config.js 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...