Skip to content

Dev#16

Merged
humanbydefinition merged 13 commits into
mainfrom
dev
Jun 9, 2026
Merged

Dev#16
humanbydefinition merged 13 commits into
mainfrom
dev

Conversation

@humanbydefinition

Copy link
Copy Markdown
Owner

No description provided.

@humanbydefinition humanbydefinition merged commit 24a9ff0 into main Jun 9, 2026
1 check passed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request replaces the webm-writer dependency with mediabunny to support both WebM and MP4 video exports, rewriting the video exporter and recorder to utilize native WebCodecs. It also updates the overlay UI with advanced video settings, refactors the examples gallery to load from a dynamic manifest, and modularizes several TypeDoc plugins. Feedback on the changes highlights a potential TypeError in the examples gallery if an entry's title is missing, and points out duplicate error progress reporting between VideoRecorder and VideoExporter.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread examples/index.html
Comment on lines +154 to +159
.map((entry) => {
const name = escapeHtml(entry.name);
const title = escapeHtml(entry.title);
const description = escapeHtml(entry.description);
return `<a href="${escapeHtml(getExampleHref(entry.path))}" class="entry-badge" data-entry="${escapeHtml(entry.name.toLowerCase())}" data-entry-name="${name}" data-entry-title="${escapeHtml(entry.title.toLowerCase())}" data-entry-description="${description}" aria-expanded="false" title="${title}">${name}</a>`;
})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

If entry.title is undefined (for example, if an entry in the manifest is missing a title field), calling entry.title.toLowerCase() will throw a TypeError and crash the rendering of the examples gallery. We should safely handle potentially missing titles by defaulting to an empty string before calling toLowerCase().

Suggested change
.map((entry) => {
const name = escapeHtml(entry.name);
const title = escapeHtml(entry.title);
const description = escapeHtml(entry.description);
return `<a href="${escapeHtml(getExampleHref(entry.path))}" class="entry-badge" data-entry="${escapeHtml(entry.name.toLowerCase())}" data-entry-name="${name}" data-entry-title="${escapeHtml(entry.title.toLowerCase())}" data-entry-description="${description}" aria-expanded="false" title="${title}">${name}</a>`;
})
.map((entry) => {
const name = escapeHtml(entry.name);
const titleText = entry.title || '';
const title = escapeHtml(titleText);
const description = escapeHtml(entry.description);
return `<a href="${escapeHtml(getExampleHref(entry.path))}" class="entry-badge" data-entry="${escapeHtml(entry.name.toLowerCase())}" data-entry-name="${name}" data-entry-title="${escapeHtml(titleText.toLowerCase())}" data-entry-description="${description}" aria-expanded="false" title="${title}">${name}</a>`;
})

Comment on lines +77 to +81
} catch (error) {
const exportError = this._normalizeError(error);
onProgress?.({ state: 'error', message: exportError.message });
throw exportError;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This catch block calls onProgress with the error state. However, VideoExporter.ts also catches any error thrown by $record and calls onProgress with the error state. This results in duplicate error progress events being emitted. We should simplify this catch block to only normalize and rethrow the error, leaving the high-level progress reporting to VideoExporter.ts.

		} catch (error) {
			throw this._normalizeError(error);
		}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant