Address PR #1214 code review feedback

- Fix template-expanded URIs not rendering: construct synthetic Resource
  from readState.uri when the URI is absent from the resources list
- Fix non-image blob content rendering raw base64: show placeholder
  message; also handle audio blobs properly
- Hide mimeType display when multiple content items to avoid confusion
- Rename ResourceControls selectedTemplate → selectedTemplateUri for
  consistency with selectedUri and selectedResourceUri

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
cliffhall 2026-04-18 18:54:48 -04:00
commit 8c9aac6df1
2 changed files with 26 additions and 12 deletions

View file

@ -22,7 +22,7 @@ export interface ResourceControlsProps {
templates: ResourceTemplate[];
subscriptions: InspectorResourceSubscription[];
selectedUri?: string;
selectedTemplate?: string;
selectedTemplateUri?: string;
listChanged: boolean;
onRefreshList: () => void;
onSelectUri: (uri: string) => void;
@ -46,7 +46,7 @@ export function ResourceControls({
templates,
subscriptions,
selectedUri,
selectedTemplate,
selectedTemplateUri,
listChanged,
onRefreshList,
onSelectUri,
@ -137,9 +137,9 @@ export function ResourceControls({
<ResourceListItem
key={template.uriTemplate}
resource={template}
selected={template.uriTemplate === selectedTemplate}
selected={template.uriTemplate === selectedTemplateUri}
onClick={() => {
if (template.uriTemplate !== selectedTemplate)
if (template.uriTemplate !== selectedTemplateUri)
onSelectTemplate(template.uriTemplate);
}}
/>

View file

@ -30,7 +30,13 @@ function toContentBlock(
if (mimeType.startsWith("image/")) {
return { type: "image", data: item.blob, mimeType };
}
return { type: "text", text: item.blob };
if (mimeType.startsWith("audio/")) {
return { type: "audio", data: item.blob, mimeType };
}
return {
type: "text",
text: `[Binary content (${mimeType}) — preview not supported]`,
};
}
function formatLastUpdated(date: Date): string {
@ -113,7 +119,7 @@ export function ResourcePreviewPanel({
) : (
<Spacer />
)}
<MimeText>{mimeType}</MimeText>
{contents.length <= 1 && <MimeText>{mimeType}</MimeText>}
</MetaRow>
<FooterRow>
<AnnotationGroup>