{{ managerTitle() }}

{{ managerDescription() }}

@switch (activeTab()) { @case ('extensions') {
@for ( item of [ { label: 'Settings pages', value: extensionCounts().settingsPages }, { label: 'App pages', value: extensionCounts().appPages }, { label: 'Side panels', value: extensionCounts().sidePanels }, { label: 'Channel sections', value: extensionCounts().channelSections }, { label: 'Composer actions', value: extensionCounts().composerActions }, { label: 'Profile actions', value: extensionCounts().profileActions }, { label: 'Toolbar actions', value: extensionCounts().toolbarActions }, { label: 'Embed renderers', value: extensionCounts().embeds } ]; track item.label ) {

{{ item.label }}

{{ item.value }}

}

Conflict diagnostics

@if (uiConflicts().length === 0) {

No duplicate route, action, embed, channel, panel, or settings contribution ids detected.

} @else {
@for (conflict of uiConflicts(); track conflict.kind + conflict.contributionId) {
{{ conflict.kind }} / {{ conflict.contributionId }} conflicts in {{ conflict.pluginIds.join(', ') }}
}
}
} @case ('requirements') {
@if (requirementComparisons().length === 0) {

No server plugin requirements for the current room.

} @else { @for (comparison of requirementComparisons(); track comparison.pluginId) {

{{ comparison.installed?.title ?? comparison.pluginId }}

{{ comparison.pluginId }}

{{ comparison.status }}
@if (comparison.requirement) {

Server status: {{ comparison.requirement.status }}

@if (comparison.requirement.versionRange) {

Version range: {{ comparison.requirement.versionRange }}

} @if (comparison.requirement.reason) {

{{ comparison.requirement.reason }}

} }
} }
} @case ('settings') {
@for (entry of entries(); track trackEntry($index, entry)) { }
@if (selectedPlugin(); as plugin) {

{{ plugin.manifest.title }} settings

@if (selectedSettingsPages().length > 0) {
@for (page of selectedSettingsPages(); track page.id) {

{{ page.contribution.label }}

}
} @if (selectedSettingsSchema()) {
{{ selectedSettingsSchema() | json }}
} @else {

This plugin does not declare a settings schema.

} }
} @case ('docs') {
@for (entry of entries(); track trackEntry($index, entry)) { }
@if (selectedPlugin(); as plugin) {

{{ plugin.manifest.title }}

{{ plugin.manifest.description }}

@for (doc of selectedDocs(); track doc.label) { {{ doc.label }} }
{{ plugin.manifest | json }}
}
} @case ('logs') {
@if (!selectedPlugin()) {

No plugins installed.

} @else {
@for (entry of entries(); track trackEntry($index, entry)) { }
@if (selectedLogs().length === 0) {

No logs for selected plugin.

} @else { @for (log of selectedLogs(); track log.timestamp) {
{{ log.level }} {{ log.timestamp | date: 'short' }}

{{ log.message }}

} }
}
} @default {
@if (entries().length === 0) {

{{ emptyTitle() }}

{{ emptyBody() }}

} @else { @for (entry of entries(); track trackEntry($index, entry)) {

{{ entry.manifest.title }}

{{ entry.state }} v{{ entry.manifest.version }}

{{ entry.manifest.description }}

{{ entry.manifest.id }}

@if (entry.error) {

{{ entry.error }}

}
} }
} }