diff --git a/build/api-docs-generator.js b/build/api-docs-generator.js
index 126c9ccbd1..73fec93b67 100644
--- a/build/api-docs-generator.js
+++ b/build/api-docs-generator.js
@@ -205,8 +205,34 @@ async function generateMarkdown(file, relativePath) {
const modifiedContent = modifyJs(content, fileName);
- // Generate markdown using jsdoc-to-markdown as a library
- const markdownContent = await jsdoc2md.render({ source: modifiedContent });
+ // Generate markdown using jsdoc-to-markdown as a library. jsdoc-api spawns
+ // a child `jsdoc` process per call; under our BATCH_SIZE parallelism the
+ // child occasionally produces truncated/empty stdout (manifesting as
+ // "Unexpected end of JSON input"/"Unterminated string in JSON"). Retry
+ // serially so a single transient failure doesn't abort the whole batch.
+ let markdownContent;
+ let lastErr;
+ for (let attempt = 0; attempt < 3; attempt++) {
+ try {
+ markdownContent = await jsdoc2md.render({ source: modifiedContent });
+ lastErr = undefined;
+ break;
+ } catch (err) {
+ lastErr = err;
+ const causeMsg = err && err.cause && err.cause.message
+ ? err.cause.message
+ : '';
+ const transient = /Unexpected end of JSON input|Unterminated string in JSON|Jsdoc failed/.test(
+ (err && err.message) || ''
+ ) || /JSON/.test(causeMsg);
+ if (!transient) break;
+ await new Promise(r => setTimeout(r, 200 * (attempt + 1)));
+ }
+ }
+ if (lastErr) {
+ lastErr.message = `[${file}] ${lastErr.message}`;
+ throw lastErr;
+ }
const newContent = normalizeLineEndings(
modifyMarkdown(markdownContent, path.join(relativePath, fileName))
);
diff --git a/docs/API-Reference/view/WorkspaceManager.md b/docs/API-Reference/view/WorkspaceManager.md
index bb0c11ed12..eff290c760 100644
--- a/docs/API-Reference/view/WorkspaceManager.md
+++ b/docs/API-Reference/view/WorkspaceManager.md
@@ -111,7 +111,7 @@ The panel's size & visibility are automatically saved & restored as a view-state
| $panel | jQueryObject | DOM content to use as the panel. Need not be in the document yet. Must have an id attribute, for use as a preferences key. |
| [minSize] | number | @deprecated No longer used. Pass `undefined`. |
| [title] | string | Display title shown in the bottom panel tab bar. |
-| [options] | Object | Optional settings: - {string} iconSvg Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg"). If omitted, a generic default icon is used. |
+| [options] | Object | Optional settings: - `iconSvg` (string): Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg"). If omitted, a generic default icon is used. |
diff --git a/src/nls/root/strings.js b/src/nls/root/strings.js
index 344bbc77ca..7729c46e1e 100644
--- a/src/nls/root/strings.js
+++ b/src/nls/root/strings.js
@@ -2188,6 +2188,7 @@ define({
"AI_CHAT_CLAUDE_LOGIN_TITLE": "Setup Claude Code",
"AI_CHAT_CLAUDE_LOGIN_MSG": "Claude Code is installed but needs to be configured.",
"AI_CHAT_CLAUDE_LOGIN_BTN": "Setup Claude Code",
+ "AI_CHAT_CLAUDE_LOGIN_RESTART_NOTE": "Restart {APP_NAME} after configuration completes.",
"AI_CHAT_ADD_PROVIDER_BTN": "Add Custom Provider",
"AI_CHAT_SETUP_NEED_HELP": "Need Help?",
"AI_CHAT_SETUP_LEARN_MORE": "Learn More",
diff --git a/src/view/WorkspaceManager.js b/src/view/WorkspaceManager.js
index acb33401f5..a17e5663ce 100644
--- a/src/view/WorkspaceManager.js
+++ b/src/view/WorkspaceManager.js
@@ -295,7 +295,7 @@ define(function (require, exports, module) {
* @param {number=} minSize @deprecated No longer used. Pass `undefined`.
* @param {string=} title Display title shown in the bottom panel tab bar.
* @param {Object=} options Optional settings:
- * - {string} iconSvg Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg").
+ * - `iconSvg` (string): Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg").
* If omitted, a generic default icon is used.
* @return {!Panel}
*/
diff --git a/tracking-repos.json b/tracking-repos.json
index 0a5f6dceee..8bdd318b73 100644
--- a/tracking-repos.json
+++ b/tracking-repos.json
@@ -1,5 +1,5 @@
{
"phoenixPro": {
- "commitID": "70c526ad1357d7913f637db242122a1ac27a9aa7"
+ "commitID": "1676588c58e69ad56b76b81b07f9021123d2c210"
}
}