mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-07 19:48:31 +08:00
* fix(diffs): share SSR preloads and repair language-pack hydration Render viewer and file documents from a single @pierre/diffs SSR preload per file (mode=both previously ran the full diff+highlight pipeline twice; 651ms -> 303ms on an 8-file patch), apply the file-mode font bump as a document-level override, and keep hydration payloads variant-faithful. Fix the language-pack runtime downgrading pack-only languages to plain text at hydration by defining a per-target build flag and forwarding it to payload normalization. Also: case-insensitive language hints, identical before/after short-circuit with details.changed, patch input failures classified as tool input errors, canonical config values now win over deprecated aliases, hash-pinned viewer runtime served immutable, truthful browser-vs-render errors, timing-safe artifact token compare, unref idle browser timer. * docs(changelog): link diffs rendering entry to PR * test(diffs): narrow manifest validation results before value access * test(tooling): allowlist diffs viewer-client define suppression
217 lines
6.0 KiB
JSON
217 lines
6.0 KiB
JSON
{
|
|
"id": "diffs",
|
|
"activation": {
|
|
"onStartup": true
|
|
},
|
|
"name": "Diffs",
|
|
"description": "OpenClaw read-only diff viewer plugin and file renderer for agents.",
|
|
"contracts": {
|
|
"tools": ["diffs"]
|
|
},
|
|
"toolMetadata": {
|
|
"diffs": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"skills": ["./skills"],
|
|
"uiHints": {
|
|
"viewerBaseUrl": {
|
|
"label": "Viewer Base URL",
|
|
"help": "Persistent gateway base URL used for returned viewer links when a tool call does not pass baseUrl."
|
|
},
|
|
"defaults.fontFamily": {
|
|
"label": "Default Font",
|
|
"help": "Preferred font family name for diff content and headers."
|
|
},
|
|
"defaults.fontSize": {
|
|
"label": "Default Font Size",
|
|
"help": "Base diff font size in pixels."
|
|
},
|
|
"defaults.lineSpacing": {
|
|
"label": "Default Line Spacing",
|
|
"help": "Line-height multiplier applied to diff rows."
|
|
},
|
|
"defaults.layout": {
|
|
"label": "Default Layout",
|
|
"help": "Initial diff layout shown in the viewer."
|
|
},
|
|
"defaults.showLineNumbers": {
|
|
"label": "Show Line Numbers",
|
|
"help": "Show line numbers by default."
|
|
},
|
|
"defaults.diffIndicators": {
|
|
"label": "Diff Indicator Style",
|
|
"help": "Choose added/removed indicators style."
|
|
},
|
|
"defaults.wordWrap": {
|
|
"label": "Default Word Wrap",
|
|
"help": "Wrap long lines by default."
|
|
},
|
|
"defaults.background": {
|
|
"label": "Default Background Highlights",
|
|
"help": "Show added/removed background highlights by default."
|
|
},
|
|
"defaults.theme": {
|
|
"label": "Default Theme",
|
|
"help": "Initial viewer theme."
|
|
},
|
|
"defaults.fileFormat": {
|
|
"label": "Default File Format",
|
|
"help": "Rendered file format for file mode (PNG or PDF)."
|
|
},
|
|
"defaults.fileQuality": {
|
|
"label": "Default File Quality",
|
|
"help": "Quality preset for PNG/PDF rendering."
|
|
},
|
|
"defaults.fileScale": {
|
|
"label": "Default File Scale",
|
|
"help": "Device scale factor used while rendering file artifacts."
|
|
},
|
|
"defaults.fileMaxWidth": {
|
|
"label": "Default File Max Width",
|
|
"help": "Maximum file render width in CSS pixels."
|
|
},
|
|
"defaults.mode": {
|
|
"label": "Default Output Mode",
|
|
"help": "Tool default when mode is omitted. Use view for canvas/gateway viewer, file for PNG/PDF, or both."
|
|
},
|
|
"defaults.ttlSeconds": {
|
|
"label": "Default Artifact TTL",
|
|
"help": "Default lifetime in seconds for diff viewer and file artifacts. Maximum: 21600."
|
|
},
|
|
"security.allowRemoteViewer": {
|
|
"label": "Allow Remote Viewer",
|
|
"help": "Allow non-loopback access to diff viewer URLs when the token path is known."
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"viewerBaseUrl": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://",
|
|
"not": {
|
|
"pattern": "[?#]"
|
|
}
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"fontFamily": {
|
|
"type": "string",
|
|
"default": "Fira Code"
|
|
},
|
|
"fontSize": {
|
|
"type": "number",
|
|
"minimum": 10,
|
|
"maximum": 24,
|
|
"default": 15
|
|
},
|
|
"lineSpacing": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 3,
|
|
"default": 1.6
|
|
},
|
|
"layout": {
|
|
"type": "string",
|
|
"enum": ["unified", "split"],
|
|
"default": "unified"
|
|
},
|
|
"showLineNumbers": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"diffIndicators": {
|
|
"type": "string",
|
|
"enum": ["bars", "classic", "none"],
|
|
"default": "bars"
|
|
},
|
|
"wordWrap": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"background": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"theme": {
|
|
"type": "string",
|
|
"enum": ["light", "dark"],
|
|
"default": "dark"
|
|
},
|
|
"fileFormat": {
|
|
"type": "string",
|
|
"enum": ["png", "pdf"]
|
|
},
|
|
"format": {
|
|
"type": "string",
|
|
"description": "Deprecated alias for fileFormat.",
|
|
"enum": ["png", "pdf"]
|
|
},
|
|
"fileQuality": {
|
|
"type": "string",
|
|
"enum": ["standard", "hq", "print"]
|
|
},
|
|
"fileScale": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 4
|
|
},
|
|
"fileMaxWidth": {
|
|
"type": "number",
|
|
"minimum": 640,
|
|
"maximum": 2400
|
|
},
|
|
"imageFormat": {
|
|
"type": "string",
|
|
"description": "Deprecated alias for fileFormat.",
|
|
"enum": ["png", "pdf"]
|
|
},
|
|
"imageQuality": {
|
|
"type": "string",
|
|
"description": "Deprecated alias for fileQuality.",
|
|
"enum": ["standard", "hq", "print"]
|
|
},
|
|
"imageScale": {
|
|
"type": "number",
|
|
"description": "Deprecated alias for fileScale.",
|
|
"minimum": 1,
|
|
"maximum": 4
|
|
},
|
|
"imageMaxWidth": {
|
|
"type": "number",
|
|
"description": "Deprecated alias for fileMaxWidth.",
|
|
"minimum": 640,
|
|
"maximum": 2400
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["view", "image", "file", "both"],
|
|
"default": "both"
|
|
},
|
|
"ttlSeconds": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 21600,
|
|
"default": 1800
|
|
}
|
|
}
|
|
},
|
|
"security": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"allowRemoteViewer": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|