Compare commits

...

4 Commits

Author SHA1 Message Date
Simon 78ee72eea4 chore(version): bump version to 0.0.23 2026-01-14 15:46:10 +08:00
Simon 3b71c535b1 fix: clean up debug code 2026-01-14 15:23:02 +08:00
Simon 6615f7b300 Merge pull request #110 from alibaba/fix/panel-text-uncompleted
feat: add HTML escaping to Panel
2026-01-14 15:17:43 +08:00
Simon 38caae5e23 feat: add HTML escaping to Panel 2026-01-14 15:15:51 +08:00
10 changed files with 37 additions and 28 deletions
+12 -12
View File
@@ -1,12 +1,12 @@
{
"name": "root",
"version": "0.0.22",
"version": "0.0.23",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "root",
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT",
"workspaces": [
"packages/page-controller",
@@ -8147,15 +8147,15 @@
},
"packages/cdn": {
"name": "@page-agent/cdn",
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT",
"dependencies": {
"page-agent": "0.0.22"
"page-agent": "0.0.23"
}
},
"packages/llms": {
"name": "@page-agent/llms",
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT",
"dependencies": {
"chalk": "^5.6.2",
@@ -8163,19 +8163,19 @@
}
},
"packages/page-agent": {
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT",
"dependencies": {
"@page-agent/llms": "0.0.22",
"@page-agent/page-controller": "0.0.22",
"@page-agent/ui": "0.0.22",
"@page-agent/llms": "0.0.23",
"@page-agent/page-controller": "0.0.23",
"@page-agent/ui": "0.0.23",
"chalk": "^5.6.2",
"zod": "^4.3.5"
}
},
"packages/page-controller": {
"name": "@page-agent/page-controller",
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT",
"dependencies": {
"ai-motion": "^0.4.8"
@@ -8183,12 +8183,12 @@
},
"packages/ui": {
"name": "@page-agent/ui",
"version": "0.0.22",
"version": "0.0.23",
"license": "MIT"
},
"packages/website": {
"name": "@page-agent/website",
"version": "0.0.22",
"version": "0.0.23",
"dependencies": {
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-separator": "^1.1.8",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "root",
"private": true,
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"workspaces": [
"packages/page-controller",
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@page-agent/cdn",
"private": false,
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"files": [
"dist/"
@@ -18,6 +18,6 @@
"build": "vite build && vite build --mode demo"
},
"dependencies": {
"page-agent": "0.0.22"
"page-agent": "0.0.23"
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@page-agent/llms",
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"main": "./dist/lib/page-agent-llms.js",
"module": "./dist/lib/page-agent-llms.js",
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "page-agent",
"private": false,
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"main": "./dist/esm/page-agent.js",
"module": "./dist/esm/page-agent.js",
@@ -46,8 +46,8 @@
"dependencies": {
"chalk": "^5.6.2",
"zod": "^4.3.5",
"@page-agent/llms": "0.0.22",
"@page-agent/page-controller": "0.0.22",
"@page-agent/ui": "0.0.22"
"@page-agent/llms": "0.0.23",
"@page-agent/page-controller": "0.0.23",
"@page-agent/ui": "0.0.23"
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@page-agent/page-controller",
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"main": "./dist/lib/page-controller.js",
"module": "./dist/lib/page-controller.js",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@page-agent/ui",
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"main": "./dist/lib/page-agent-ui.js",
"module": "./dist/lib/page-agent-ui.js",
+2 -5
View File
@@ -1,6 +1,6 @@
import { type Step, UIState } from './UIState'
import { I18n, type SupportedLanguage } from './i18n'
import { truncate } from './utils'
import { escapeHtml, truncate } from './utils'
import styles from './Panel.module.css'
@@ -590,10 +590,7 @@ export class Panel {
#updateHistory(): void {
const steps = this.#state.getAllSteps()
this.#historySection.innerHTML = steps.map((step) => this.#createHistoryItem(step)).join('')
// Scroll to bottom to show latest records
this.#scrollToBottom()
}
@@ -660,7 +657,7 @@ export class Panel {
<div class="${styles.historyItem} ${typeClass}">
<div class="${styles.historyContent}">
<span class="${styles.statusIcon}">${statusIcon}</span>
<span>${step.displayText}</span>
<span>${escapeHtml(step.displayText)}</span>
</div>
<div class="${styles.historyMeta}">
${stepLabel}
+12
View File
@@ -4,3 +4,15 @@ export function truncate(text: string, maxLength: number): string {
}
return text
}
/**
* Escape HTML special characters to prevent XSS and rendering issues
*/
export function escapeHtml(text: string): string {
return text
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;')
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@page-agent/website",
"private": true,
"version": "0.0.22",
"version": "0.0.23",
"type": "module",
"scripts": {
"dev": "vite",