fix(plugins): rename updates plugin id

This commit is contained in:
Federico Jaramillo Martinez
2026-06-03 22:53:37 +02:00
parent 76302a4e5f
commit be02c3516f
7 changed files with 78 additions and 38 deletions
-9
View File
@@ -1,9 +0,0 @@
{
"name": "@pi-web/status-plugin",
"private": true,
"piWeb": {
"plugins": [
{ "id": "pi-web", "module": "pi-web-plugin.js" }
]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"name": "@pi-web/updates-plugin",
"private": true,
"piWeb": {
"plugins": [
{ "id": "updates", "module": "pi-web-plugin.js" }
]
}
}
@@ -19,7 +19,7 @@ function isLocalOrUnknownInstallation(installation: PiWebInstallationInfo | unde
return installation === undefined || installation.kind === "local" || installation.kind === "unknown";
}
function shouldShowStatusPanel(state: AppState): boolean {
function shouldShowUpdatesPanel(state: AppState): boolean {
const status = statusFor(state);
if (messageCount(state) > 0) return true;
if (status === undefined) return false;
@@ -50,7 +50,7 @@ function renderComponent(html: HtmlTemplateTag, component: PiWebComponentStatus)
? "restart needed"
: "current";
return html`
<div class="pi-web-version-row">
<div class="updates-version-row">
<strong>${component.label}</strong>
<span>${status}</span>
<small>running ${formatVersion(component.runtimeVersion)} · installed ${formatVersion(component.installedVersion)}</small>
@@ -61,7 +61,7 @@ function renderComponent(html: HtmlTemplateTag, component: PiWebComponentStatus)
function renderCommand(html: HtmlTemplateTag, label: string, command: string): TemplateResult {
return html`
<div class="pi-web-command">
<div class="updates-command">
<span>${label}</span>
<code>${command}</code>
<button @click=${() => { void navigator.clipboard.writeText(command); }}>Copy</button>
@@ -87,7 +87,7 @@ function renderCommands(html: HtmlTemplateTag, status: PiWebStatusResponse): Tem
`;
}
function renderStatusPanel(html: HtmlTemplateTag, state: AppState): TemplateResult {
function renderUpdatesPanel(html: HtmlTemplateTag, state: AppState): TemplateResult {
const status = statusFor(state);
if (status === undefined) {
return html`
@@ -99,29 +99,29 @@ function renderStatusPanel(html: HtmlTemplateTag, state: AppState): TemplateResu
const messages = status.messages;
return html`
<style>
.viewer.pi-web-status { flex: 1 1 auto; min-height: 0; box-sizing: border-box; display: flex; flex-direction: column; gap: 14px; padding: 12px; overflow-y: auto; overflow-x: hidden; }
.viewer.pi-web-status section { flex: 0 0 auto; min-width: 0; display: grid; gap: 8px; }
.pi-web-message { display: grid; gap: 5px; border: 1px solid var(--pi-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
.pi-web-message.warning { border-color: var(--pi-warning-border); background: var(--pi-warning-surface); }
.pi-web-message.error { border-color: var(--pi-danger); }
.pi-web-message-title { display: flex; gap: 8px; align-items: baseline; }
.pi-web-message-title span { color: var(--pi-muted); font-size: 12px; text-transform: uppercase; }
.pi-web-version-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px; border-bottom: 1px solid var(--pi-border-muted); padding: 6px 0; }
.pi-web-version-row small { grid-column: 1 / -1; color: var(--pi-muted); }
.pi-web-command { min-width: 0; display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.pi-web-command code { overflow: auto; border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); padding: 5px 7px; white-space: nowrap; }
.pi-web-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; }
.viewer.updates-status { flex: 1 1 auto; min-height: 0; box-sizing: border-box; display: flex; flex-direction: column; gap: 14px; padding: 12px; overflow-y: auto; overflow-x: hidden; }
.viewer.updates-status section { flex: 0 0 auto; min-width: 0; display: grid; gap: 8px; }
.updates-message { display: grid; gap: 5px; border: 1px solid var(--pi-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
.updates-message.warning { border-color: var(--pi-warning-border); background: var(--pi-warning-surface); }
.updates-message.error { border-color: var(--pi-danger); }
.updates-message-title { display: flex; gap: 8px; align-items: baseline; }
.updates-message-title span { color: var(--pi-muted); font-size: 12px; text-transform: uppercase; }
.updates-version-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px; border-bottom: 1px solid var(--pi-border-muted); padding: 6px 0; }
.updates-version-row small { grid-column: 1 / -1; color: var(--pi-muted); }
.updates-command { min-width: 0; display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.updates-command code { overflow: auto; border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); padding: 5px 7px; white-space: nowrap; }
.updates-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; }
@media (max-width: 520px) {
.pi-web-command { grid-template-columns: minmax(0, 1fr) auto; }
.pi-web-command > span { grid-column: 1 / -1; }
.updates-command { grid-template-columns: minmax(0, 1fr) auto; }
.updates-command > span { grid-column: 1 / -1; }
}
</style>
<section class="toolbar"><strong>Updates</strong><span class="stale">beta</span>${messages.length > 0 ? html`<span class="stale">${String(messages.length)}</span>` : null}</section>
<section class="viewer pi-web-status">
<section class="viewer updates-status">
<section>
${messages.length === 0 ? html`<p class="muted">No PI WEB update or restart messages.</p>` : messages.map((message) => html`
<article class=${`pi-web-message ${message.severity}`}>
<div class="pi-web-message-title"><strong>${message.title}</strong><span>${message.severity}</span></div>
<article class=${`updates-message ${message.severity}`}>
<div class="updates-message-title"><strong>${message.title}</strong><span>${message.severity}</span></div>
<p>${message.body}</p>
${message.command === undefined ? null : html`<code>${message.command}</code>`}
</article>
@@ -136,7 +136,7 @@ function renderStatusPanel(html: HtmlTemplateTag, state: AppState): TemplateResu
${renderCommands(html, status)}
<section class="pi-web-meta">
<section class="updates-meta">
<span>Generated ${status.generatedAt}</span>
${status.release.latestVersion === undefined ? null : html`<span>Latest npm release ${status.release.latestVersion}</span>`}
${status.release.skipped === true ? html`<span>Remote version check skipped.</span>` : null}
@@ -148,12 +148,12 @@ function renderStatusPanel(html: HtmlTemplateTag, state: AppState): TemplateResu
const plugin: PiWebPlugin = {
apiVersion: 1,
name: "PI WEB Updates",
name: "Updates",
activate: ({ html, svg }) => ({
contributions: {
workspacePanels: [
{
id: "workspace.status",
id: "workspace.updates",
title: "Updates",
icon: svg`
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
@@ -164,12 +164,12 @@ const plugin: PiWebPlugin = {
</svg>
`,
order: 100,
visible: (context) => shouldShowStatusPanel(context.state),
visible: (context) => shouldShowUpdatesPanel(context.state),
badge: (context) => {
const count = messageCount(context.state);
return html`beta${count > 0 ? html` · ${String(count)}` : null}`;
},
render: (context) => renderStatusPanel(html, context.state),
render: (context) => renderUpdatesPanel(html, context.state),
},
],
},