Skip to content

Introduce elevation, shape tokens, and notebook panel enhancements - #96

Merged
TorreyBetts merged 7 commits into
mainfrom
feature/flat-appearance
Aug 1, 2026
Merged

Introduce elevation, shape tokens, and notebook panel enhancements#96
TorreyBetts merged 7 commits into
mainfrom
feature/flat-appearance

Conversation

@TorreyBetts

Copy link
Copy Markdown
Contributor

This pull request introduces major improvements to the Verso extension authoring documentation and package metadata, focusing on the addition of a comprehensive guide and reference for panels (INotebookPanel), updates to the theme token documentation, and minor corrections to package properties. The most important changes are grouped below:

Panel Feature Documentation and Reference:

  • Added a new authoring guide, panels.md, detailing how to contribute panels to the notebook UI, including the representation contract, icon usage, interaction handling, and CSS class vocabulary.
  • Updated extension-interfaces.md to document the new INotebookPanel and IPanelInteractionHandler interfaces, including their members, lifecycle, and usage patterns.
  • Linked the new panels authoring guide from the main extensions documentation index for discoverability.

Theme and Layout Documentation:

  • Expanded the list of theme tokens in layouts.md to include new background, foreground, accent, shape, and elevation variables, and explained their usage for consistent theming across hosts. [1] [2]

Package Metadata Improvements:

  • Corrected the package project URL and added a package icon (verso-mark.png) to Directory.Build.props, including documentation on icon requirements and packaging. [1] [2]

Other Documentation Enhancements:

  • Clarified the use of the Description property for extensions and toolbar actions, emphasizing its role in tooltips and accessibility. [1] [2]

These changes provide a clearer, more complete reference for extension authors, especially regarding the new panel capability and theming support.

Add a ThemeElevation type and wire an elevation scale through ITheme, ThemeProvider, and the theme DTOs (Elevation is optional for backward compatibility). Introduce shape (ShapeSmall/Medium/Large/Full) and shape/elevation tokens, plus new color tokens AccentForeground, BgSunken and FgSubtle; update ThemeSpacing (toolbar height, shape sizes, cell/button radii). Emit the new --verso-elevation-* and --verso-shape-* CSS variables and update LayoutThemeBundle to include shape/elevation tokens. Revamp app.css to consume the new variables (use accent foreground, shape radii, elevation shadows, overlay/dropdown variables) and add styles for panel toggles. Add panel toggle UI and parameters to the notebook toolbar component. Update docs and tests to reflect the new tokens and behavior.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Introduce first-class support for notebook-side panels. Adds new abstraction interfaces (INotebookPanel, IPanelInteractionHandler, IPanelContext) and the PanelInteractionContext model so extensions can declare panel content (ordered RenderResult representations) and receive panel actions. Wire host-side rendering and interaction: new Blazor component ExtensionPanelHost, toolbar integration to show panel toggles, panel icon mapping (PanelIcons), host panel list (HostPanels), and panel display-name handling. Add JS interop (panel-interact-interop.js), host DTO/handler (PanelDto, PanelHandler) and protocol updates, plus tests and docs (docs/extensions/panels.md and updates to extension-interfaces.md and index.md). These changes enable extensions to contribute panels alongside the notebook body and handle user interactions, including a RequestRefresh mechanism to re-render panels when state changes.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Introduce notebook comparison UI and plumbing: add a ComparePanel component and NotebookComparison model to drive baseline selection and a change list, plus a ViewPanel/Compare workflow to keep the notebook visible while walking changes. Propagate diff state into the cell rendering (NotebookCellContext, DefaultCellList, CustomLayoutHtml, Cell.razor) so cells show colored stripes and badges for Added/Removed/Modified/Moved, and wire navigation from the panel to reveal cells. Enhance the full diff overlay (NotebookDiffView) with an empty state, stepper nav between changes, anchors for entries, and improved disclosure chevrons. Add accessibility/tooltips (aria-label, data-verso-tip, data-verso-tip-desc) across many buttons and dialogs and include a tooltip.js asset and CSS tweaks. Update extension and panel abstractions/docs to clarify Description usage for icon-only controls and add new icon names (layout, compare); update user guides to reference the View panel and Compare panel. Add/adjust unit tests for the new panels and diff behavior.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Add editorsSized helper to check that all Monaco editor host elements in a cell have their inline height set, and update scrollToSelected to wait until a cell is both placed (not in the hidden pool) and sized before calling scrollIntoView. Preserve a retry cap (~3s) and fall back to scrolling if the cell is placed but never measured. This prevents scrolling to an element while its editor later grows and ends up positioned out of view.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Redesign the Extensions panel into a single package list with install state on each row and context chips (install scope and package sources). Improve row UI (tile, publisher, description, download counts, capability chips, state badges) and behaviour for unavailable/removed packages. Add MarketplaceRow helpers, sorting/filtering, tint/initial utilities, and pluralization for capability names. Surface package capabilities in InstalledExtensionDto and add MarketplaceSources to INotebookService. Update version selection API and install/uninstall flows to record removals for the session and refresh results. Large CSS refactor to support the new layout and styles. Tests adjusted to cover the updated UI and service changes.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Add support for showing package icons in the extensions marketplace UI and ship a small package icon with the product. Changes include:

- UI: render an <img> overlay inside the lettered tile when an icon is available and prefer a local data: URI for installed packages over the feed's icon URL.
- Styling: position and style the tile and absolute icon (.verso-marketplace-tile-icon) so the icon covers the tile but the letter remains underneath as a fallback.
- Models/DTOs: propagate an IconDataUri property through service DTOs and host DTOs so the server can supply an inlined icon for installed packages.
- Server/Services: NuGetMarketplaceService now extracts and caches package icons from packages, copies icons to the managed install dir, and exposes TryReadPackageIconDataUri to return a data: URI (with media-type sniffing and size limits). Package resolver extracts icon from package archives into the cache and exposes a cached-path lookup.
- Safety/resilience: icon handling is best-effort and never fails installs; content-type is detected from bytes (png/jpg/gif), and size limits prevent inlining huge images.
- Packaging: include a small verso-mark.png as the package icon and add it to Directory.Build.props so it is packed with the nuget.
- Tests: add unit tests validating icon extraction, media-type sniffing, size limits, version selection, and UI behavior for installed/search results.

These changes enable offline/sideloaded icon display, avoid network fetches for installed packages, and provide graceful fallback when icons are missing or invalid.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Summary

Summary
Generated on: 08/01/2026 - 14:16:52
Coverage date: 08/01/2026 - 14:13:15 - 08/01/2026 - 14:16:43
Parser: MultiReport (30x Cobertura)
Assemblies: 17
Classes: 644
Files: 466
Line coverage: 66.1% (20815 of 31473)
Covered lines: 20815
Uncovered lines: 10658
Coverable lines: 31473
Total lines: 70349
Branch coverage: 58.4% (10035 of 17176)
Covered branches: 10035
Total branches: 17176
Method coverage: Feature is only available for sponsors

Coverage

Verso - 79.1%
Name Line Branch
Verso 79.1% 69.1%
Verso.Contexts.CellRenderContext 68.7%
Verso.Contexts.ExecutionContext 94.1% 50%
Verso.Contexts.MagicCommandContext 83.3% 50%
Verso.Contexts.NotebookMetadataContext 100% 50%
Verso.Contexts.PanelContext 31.2% 50%
Verso.Contexts.SimpleFormatterContext 0% 0%
Verso.Contexts.VariablePreviewService 68% 61.5%
Verso.Contexts.VariableStore 100% 100%
Verso.Contexts.VersoContext 94.5% 50%
Verso.Diffing.CellAligner 95.7% 92.5%
Verso.Diffing.NotebookDiffEngine 97.3% 86.1%
Verso.Display.DisplayFormatterContext 15.3% 50%
Verso.Display.DisplayHandler 13.5% 0%
Verso.Execution.BackgroundFaultMonitor 93.8% 100%
Verso.Execution.BackgroundFaultSink 100% 93.7%
Verso.Execution.ExecutionPipeline 95.1% 84%
Verso.Execution.ExecutionResult 100%
Verso.Execution.OutputBudget 86.6% 80%
Verso.Export.ExportOptions 100%
Verso.Export.NotebookHtmlExporter 53.8% 57.9%
Verso.Export.NotebookMarkdownExporter 69.9% 77.7%
Verso.Export.ThemeCssGenerator 100% 86.9%
Verso.Extensions.CellDisplayPropertyProvider 84.3% 47.6%
Verso.Extensions.CellTypes.HtmlCellType 68.7%
Verso.Extensions.CellTypes.MarkdownCellType 100%
Verso.Extensions.CellTypes.MermaidCellType 68.7%
Verso.Extensions.CellTypes.ParametersCellType 100%
Verso.Extensions.CellVisibilityPropertyProvider 80.2% 48.1%
Verso.Extensions.ExtensionDirectoryResolver 81.8% 90%
Verso.Extensions.ExtensionHost 96.9% 90.5%
Verso.Extensions.ExtensionLoadContext 66.6% 64.2%
Verso.Extensions.ExtensionLoadException 69.2% 50%
Verso.Extensions.ExtensionTrustStore 91.2% 80.7%
Verso.Extensions.ExtensionValidationError 100%
Verso.Extensions.Formatters.CollectionFormatter 100% 100%
Verso.Extensions.Formatters.ExceptionFormatter 100% 83.3%
Verso.Extensions.Formatters.HtmlFormatter 100%
Verso.Extensions.Formatters.ImageFormatter 92.3% 83.3%
Verso.Extensions.Formatters.ObjectFormatter 100% 100%
Verso.Extensions.Formatters.ObjectTreeRenderer 92.1% 80.7%
Verso.Extensions.Formatters.PrimitiveFormatter 100% 50%
Verso.Extensions.Formatters.SvgFormatter 100% 100%
Verso.Extensions.Kernels.HtmlKernel 82.2% 76.9%
Verso.Extensions.Kernels.MermaidKernel 84.5% 74.3%
Verso.Extensions.Layouts.ContentFallbackRenderer 7.1%
Verso.Extensions.Layouts.DashboardLayout 83.9% 65.4%
Verso.Extensions.Layouts.NotebookLayout 74.8% 38.3%
Verso.Extensions.Layouts.NotebookLayoutStyles 100% 100%
Verso.Extensions.Layouts.PresentationLayout 100% 100%
Verso.Extensions.Marketplace.ExtensionPackageRef 100% 100%
Verso.Extensions.Marketplace.LocalInstallResult 100%
Verso.Extensions.Marketplace.MarketplaceInstallResult 100%
Verso.Extensions.Marketplace.MarketplaceLoader 65.1% 64.6%
Verso.Extensions.Marketplace.MarketplaceSearchItem 0%
Verso.Extensions.Marketplace.NuGetMarketplaceService 57.8% 68.2%
Verso.Extensions.Renderers.HtmlCellRenderer 23% 0%
Verso.Extensions.Renderers.MarkdownRenderer 95% 100%
Verso.Extensions.Renderers.MermaidCellRenderer 23% 0%
Verso.Extensions.Renderers.ParametersCellRenderer 90.9% 69.4%
Verso.Extensions.Themes.VersoDarkTheme 99%
Verso.Extensions.Themes.VersoHighContrastTheme 99.2%
Verso.Extensions.Themes.VersoLightTheme 100%
Verso.Extensions.ToolbarActions.ClearCellOutputAction 85% 66.6%
Verso.Extensions.ToolbarActions.ClearOutputsAction 82.3%
Verso.Extensions.ToolbarActions.ExportHtmlAction 73.6% 30%
Verso.Extensions.ToolbarActions.ExportMarkdownAction 80.7% 50%
Verso.Extensions.ToolbarActions.ExportVersoAction 97.8% 80%
Verso.Extensions.ToolbarActions.RestartKernelAction 77.7%
Verso.Extensions.ToolbarActions.RunAllAction 83.3% 100%
Verso.Extensions.ToolbarActions.RunCellAction 88.8% 100%
Verso.Extensions.ToolbarActions.SwitchLayoutAction 34.6% 0%
Verso.Extensions.ToolbarActions.SwitchThemeAction 92.3% 83.3%
Verso.Extensions.Utilities.CellViewStateReader 72.5% 29.3%
Verso.Extensions.Utilities.CellVisibilityResolver 91.8% 87.5%
Verso.Extensions.Utilities.LegacyMetadataMigrator 100% 100%
Verso.Extensions.Utilities.VariableSubstitution 100% 94.4%
Verso.Kernels.CSharpKernel 72% 56.3%
Verso.Kernels.CSharpKernelOptions 100%
Verso.Kernels.NuGetPackageResolver 11.3% 8.2%
Verso.Kernels.NuGetResolveResult 0%
Verso.Kernels.NuGetRuntimeResolver 14.7% 7.5%
Verso.Kernels.NuGetSourceRegistry 0% 0%
Verso.Kernels.RoslynWorkspaceManager 81.2% 73%
Verso.Kernels.ScriptGlobals 100% 50%
Verso.Kernels.ScriptStateManager 77.4% 66.6%
Verso.LayoutManager 82.9% 67%
Verso.MagicCommands.AboutMagicCommand 86.2% 37.5%
Verso.MagicCommands.ExtensionMagicCommand 10.3% 12.5%
Verso.MagicCommands.ImportMagicCommand 88.3% 86.8%
Verso.MagicCommands.MagicCommandParser 90.4% 88.8%
Verso.MagicCommands.NuGetMagicCommand 38.8% 6.2%
Verso.MagicCommands.RestartMagicCommand 100% 100%
Verso.MagicCommands.TimeMagicCommand 92.3% 100%
Verso.NotebookOperations 73.4% 50%
Verso.Parameters.ParameterValueParser 100% 100%
Verso.Scaffold 93.2% 77.2%
Verso.Serializers.DibSerializer 96.1% 96.9%
Verso.Serializers.JupyterPolyglotPostProcessor 97.5% 94.8%
Verso.Serializers.JupyterSerializer 89.6% 72.2%
Verso.Serializers.LanguageDirectiveMap 86.1% 79.1%
Verso.Serializers.MarkdownSerializer 100% 92.8%
Verso.Serializers.Migrations.NotebookMigrationPipeline 100% 100%
Verso.Serializers.Migrations.V1_0ToV1_1Migration 100%
Verso.Serializers.VersoSerializer 94.6% 81.7%
Verso.SettingsManager 100% 82.5%
Verso.Stubs.StubExtensionHostContext 75% 62.5%
Verso.Stubs.StubNotebookOperations 0%
Verso.Stubs.StubThemeContext 100% 100%
Verso.ThemeEngine 95.9% 79.5%
Verso.Abstractions - 81.9%
Name Line Branch
Verso.Abstractions 81.9% 40.3%
Verso.Abstractions.CellContainerInfo 100%
Verso.Abstractions.CellDiffEntry 100%
Verso.Abstractions.CellInteractionContext 100%
Verso.Abstractions.CellModel 100%
Verso.Abstractions.CellOutput 40.9% 21.8%
Verso.Abstractions.Completion 100%
Verso.Abstractions.Diagnostic 100%
Verso.Abstractions.DisplayContext 81.8% 50%
Verso.Abstractions.DisplayExtensions 0% 0%
Verso.Abstractions.ExtensionConsentInfo 100%
Verso.Abstractions.ExtensionInfo 100%
Verso.Abstractions.FontDescriptor 100%
Verso.Abstractions.HoverInfo 100%
Verso.Abstractions.ICellRenderer 50%
Verso.Abstractions.ICellType 100%
Verso.Abstractions.IExecutionContext 0%
Verso.Abstractions.IExtensionHostContext 50%
Verso.Abstractions.ILayoutEngine 80%
Verso.Abstractions.INotebookMetadata 0%
Verso.Abstractions.INotebookOperations 100%
Verso.Abstractions.INotebookPanel 100%
Verso.Abstractions.INotebookSerializer 100%
Verso.Abstractions.ITheme 0%
Verso.Abstractions.IToolbarAction 0%
Verso.Abstractions.IVersoContext 60%
Verso.Abstractions.LayoutCapabilityException 0%
Verso.Abstractions.LayoutDefaults 100%
Verso.Abstractions.LayoutHostCapabilities 100%
Verso.Abstractions.LayoutInteractionContext 100%
Verso.Abstractions.LayoutReference 26.6% 0%
Verso.Abstractions.LayoutRendererIsolationExtensions 100% 100%
Verso.Abstractions.LayoutRendererMountContext 100%
Verso.Abstractions.LayoutRendererPackage 100%
Verso.Abstractions.LayoutRendererUnmountContext 100%
Verso.Abstractions.LayoutStaticAsset 100%
Verso.Abstractions.LayoutStaticAssetLoadHints 100%
Verso.Abstractions.MetadataChange 100%
Verso.Abstractions.NotebookDiffResult 100%
Verso.Abstractions.NotebookDiffSummary 100%
Verso.Abstractions.NotebookFormatVersion 100% 100%
Verso.Abstractions.NotebookMigrationLog 100%
Verso.Abstractions.NotebookModel 100% 100%
Verso.Abstractions.NotebookParameterDefinition 100%
Verso.Abstractions.PanelInteractionContext 88.8%
Verso.Abstractions.ParameterDefinition 100%
Verso.Abstractions.PropertyField 100%
Verso.Abstractions.PropertyFieldOption 100%
Verso.Abstractions.PropertySection 100%
Verso.Abstractions.RenderResult 100%
Verso.Abstractions.SettingConstraints 100%
Verso.Abstractions.SettingDefinition 100%
Verso.Abstractions.SyntaxColorMap 100% 100%
Verso.Abstractions.ThemeColorTokens 100%
Verso.Abstractions.ThemeElevation 100%
Verso.Abstractions.ThemeSpacing 100%
Verso.Abstractions.ThemeTypography 100%
Verso.Abstractions.UnavailableExtensionInfo 0%
Verso.Abstractions.VariableDescriptor 100%
Verso.Abstractions.VariableExplorerEntry 0%
Verso.Ado - 84.1%
Name Line Branch
Verso.Ado 84.1% 80.5%
Verso.Ado.CellType.SqlCellRenderer 76% 100%
Verso.Ado.CellType.SqlCellType 100%
Verso.Ado.Formatters.ResultSetFormatter 97.1% 85.7%
Verso.Ado.Helpers.ArgumentParser 100% 100%
Verso.Ado.Helpers.ConnectionResolver 69.2% 71.4%
Verso.Ado.Helpers.DbTypeMapper 100%
Verso.Ado.Helpers.ParameterReference 100%
Verso.Ado.Helpers.PlaceholderResolver 98.3% 91.6%
Verso.Ado.Helpers.ProviderDiscovery 50.3% 38.3%
Verso.Ado.Helpers.ProviderMessageListener 86.8% 86.9%
Verso.Ado.Helpers.SqlClrTypeMapper 97.9% 77.5%
Verso.Ado.Helpers.SqlDialectExtensions 100% 100%
Verso.Ado.Helpers.SqlDialectResolver 100% 100%
Verso.Ado.Helpers.SqlLocalScopeAnalyzer 81.3% 80.8%
Verso.Ado.Helpers.SqlParameterScanner 100% 95.7%
Verso.Ado.Helpers.SqlStatementSplitter 95% 95.1%
Verso.Ado.Import.JupyterSqlImportHook 97.3% 90%
Verso.Ado.Kernel.ColumnInfo 100%
Verso.Ado.Kernel.ForeignKeyInfo 100%
Verso.Ado.Kernel.SchemaCache 70.2% 56.8%
Verso.Ado.Kernel.SchemaCacheEntry 100%
Verso.Ado.Kernel.SqlKernel 91.4% 87.6%
Verso.Ado.Kernel.TableInfo 100%
Verso.Ado.MagicCommands.SqlConnectMagicCommand 77% 69.1%
Verso.Ado.MagicCommands.SqlDisconnectMagicCommand 95.6% 100%
Verso.Ado.MagicCommands.SqlScaffoldMagicCommand 30.2% 22.5%
Verso.Ado.MagicCommands.SqlSchemaMagicCommand 91.5% 84.3%
Verso.Ado.Models.SqlColumnMetadata 100%
Verso.Ado.Models.SqlConnectionInfo 83.3%
Verso.Ado.Models.SqlDirectives 100% 100%
Verso.Ado.Models.SqlResultSet 100%
Verso.Ado.Scaffold.EfCorePrerequisiteChecker 100% 100%
Verso.Ado.Scaffold.EfCoreScaffolder 94% 87%
Verso.Ado.Scaffold.MagicCommandExecutionContext 0%
Verso.Ado.Scaffold.NamingConventions 96.7% 94.2%
Verso.Ado.Scaffold.ScaffoldResult 100%
Verso.Ado.SqlAdoExtension 0%
Verso.Ado.ToolbarActions.ExportCsvAction 84.9% 94.1%
Verso.Ado.ToolbarActions.ExportJsonAction 88% 93.7%
Verso.Blazor - 26.4%
Name Line Branch
Verso.Blazor 26.4% 21.5%
Program 0% 0%
Verso.Blazor.Components.App 0% 0%
Verso.Blazor.Components.DiffSourcePickerDialog 33.3% 16.6%
Verso.Blazor.Components.Layout.MainLayout 0%
Verso.Blazor.Components.NotebookInputDialog 66.6% 60%
Verso.Blazor.Components.Pages.NotebookPage 32.2% 35.6%
Verso.Blazor.Services.BlazorCellRenderContext 0% 0%
Verso.Blazor.Services.BlazorLayoutRenderContext 21% 37.5%
Verso.Blazor.Services.BlazorToolbarActionContext 0% 0%
Verso.Blazor.Services.GitCliHelper 86.6% 58.3%
Verso.Blazor.Services.LayoutAssetCache 9.5% 0%
Verso.Blazor.Services.LayoutAssetProvider 85% 71.4%
Verso.Blazor.Services.NotebookService 0% 0%
Verso.Blazor.Services.NotebookServiceOptions 60% 25%
Verso.Blazor.Services.ServerInputRequest 100%
Verso.Blazor.Services.ServerNotebookService 25.3% 17.4%
Verso.Blazor.Shared - 62%
Name Line Branch
Verso.Blazor.Shared 62% 54.3%
Verso.Blazor.Shared.Components.CustomLayoutFrame 0% 0%
Verso.Blazor.Shared.Components.Editor.MonacoDiffEditor 95% 100%
Verso.Blazor.Shared.Components.Editor.MonacoEditor 64.7% 62.5%
Verso.Blazor.Shared.Components.Notebook.Cell 49.7% 49.8%
Verso.Blazor.Shared.Components.Notebook.CellPropertiesPanel 64.4% 80%
Verso.Blazor.Shared.Components.Notebook.ComparePanel 89.5% 73%
Verso.Blazor.Shared.Components.Notebook.CustomLayoutHtml 67.5% 41.6%
Verso.Blazor.Shared.Components.Notebook.DefaultCellList 84.6% 80.7%
Verso.Blazor.Shared.Components.Notebook.DiffErrorDialog 50% 25%
Verso.Blazor.Shared.Components.Notebook.ExtensionConsentDialog 90.9% 82.1%
Verso.Blazor.Shared.Components.Notebook.ExtensionPanel 63.2% 68.5%
Verso.Blazor.Shared.Components.Notebook.ExtensionPanelHost 84.8% 72.9%
Verso.Blazor.Shared.Components.Notebook.LayoutRenderer 47% 22.2%
Verso.Blazor.Shared.Components.Notebook.MetadataPanel 60% 44.4%
Verso.Blazor.Shared.Components.Notebook.NotebookCellContext 100% 100%
Verso.Blazor.Shared.Components.Notebook.NotebookDiffView 93.8% 77.6%
Verso.Blazor.Shared.Components.Notebook.OutputView 68.2% 48.2%
Verso.Blazor.Shared.Components.Notebook.PropertyFieldComponent 46.7% 41.5%
Verso.Blazor.Shared.Components.Notebook.PropertySectionComponent 100% 100%
Verso.Blazor.Shared.Components.Notebook.SettingsPanel 57.7% 46.1%
Verso.Blazor.Shared.Components.Notebook.Toolbar 76.7% 71.2%
Verso.Blazor.Shared.Components.Notebook.VariableExplorer 62.2% 83.3%
Verso.Blazor.Shared.Components.Notebook.ViewPanel 92.8% 89.2%
Verso.Blazor.Shared.Components.Notebook.WidgetFrame 70% 50%
Verso.Blazor.Shared.Components.ThemeProvider 97.6% 85.5%
Verso.Blazor.Shared.Models.CellOutputUpdatedEventArgs 0%
Verso.Blazor.Shared.Models.CellTypeInfo 100%
Verso.Blazor.Shared.Models.CompletionItemDto 0%
Verso.Blazor.Shared.Models.CompletionsResultDto 0%
Verso.Blazor.Shared.Models.DiffSourceInfo 83.3%
Verso.Blazor.Shared.Models.ExecutionResultDto 60%
Verso.Blazor.Shared.Models.ExtensionSettingsGroup 100%
Verso.Blazor.Shared.Models.HeadingDetector 44.8% 34%
Verso.Blazor.Shared.Models.HostPanels 100% 100%
Verso.Blazor.Shared.Models.HoverRangeDto 0%
Verso.Blazor.Shared.Models.HoverResultDto 0%
Verso.Blazor.Shared.Models.InstalledExtensionDto 77.7% 0%
Verso.Blazor.Shared.Models.KernelHealthChangedEventArgs 100%
Verso.Blazor.Shared.Models.KernelLanguageInfo 100%
Verso.Blazor.Shared.Models.LayoutFrameMessageEventArgs 0%
Verso.Blazor.Shared.Models.LayoutInfo 70%
Verso.Blazor.Shared.Models.LayoutRendererPackageDto 0%
Verso.Blazor.Shared.Models.LayoutStaticAssetDescriptor 0%
Verso.Blazor.Shared.Models.LayoutThemeBundle 100%
Verso.Blazor.Shared.Models.LayoutThemeBundleBuilder 100% 100%
Verso.Blazor.Shared.Models.LayoutUpdatedEventArgs 100%
Verso.Blazor.Shared.Models.NotebookComparison 100% 100%
Verso.Blazor.Shared.Models.NotebookPanelInfo 100% 100%
Verso.Blazor.Shared.Models.PackageInstallResultDto 40%
Verso.Blazor.Shared.Models.PackageSearchResultDto 88.8%
Verso.Blazor.Shared.Models.PanelDisplayNames 100% 100%
Verso.Blazor.Shared.Models.PanelIcons 100% 100%
Verso.Blazor.Shared.Models.PanelUpdatedEventArgs 100%
Verso.Blazor.Shared.Models.PropertySectionResult 100%
Verso.Blazor.Shared.Models.ThemeData 100%
Verso.Blazor.Shared.Models.ThemeInfo 100%
Verso.Blazor.Shared.Models.ToolbarActionInfo 90%
Verso.Blazor.Shared.Models.VariableEntryDto 100%
Verso.Blazor.Shared.Models.VariableInspectResultDto 60%
Verso.Blazor.Shared.Services.INotebookService 14.2%
Verso.Cli - 39.1%
Name Line Branch
Verso.Cli 39.1% 41%
Program 0%
System.Text.RegularExpressions.Generated.HtmlTagRegex_0 100%
Verso.Cli.Commands.ConvertCommand 54.4% 100%
Verso.Cli.Commands.ExportCommand 0% 0%
Verso.Cli.Commands.InfoCommand 8.8% 0%
Verso.Cli.Commands.ReplCommand 18.4% 0%
Verso.Cli.Commands.RunCommand 58.1%
Verso.Cli.Commands.ServeCommand 54.6%
Verso.Cli.Execution.CellOutcome 88.4% 88.4%
Verso.Cli.Execution.CliToolbarActionContext 0% 0%
Verso.Cli.Execution.HeadlessRunner 81.6% 73.8%
Verso.Cli.Execution.JsonCellOutput 100%
Verso.Cli.Execution.JsonMimeOutput 100%
Verso.Cli.Execution.JsonOutputDocument 100%
Verso.Cli.Execution.JsonOutputWriter 88.8% 80.7%
Verso.Cli.Execution.JsonSummary 100%
Verso.Cli.Execution.OutputRenderer 83.9% 84.1%
Verso.Cli.Execution.RunOptions 90.9%
Verso.Cli.Execution.RunResult 100%
Verso.Cli.Execution.ToolbarActionResolver 46.5% 38.8%
Verso.Cli.Hosting.BlazorHostBuilder 0% 0%
Verso.Cli.Hosting.ServeOptions 0%
Verso.Cli.Parameters.ParameterResolutionResult 100%
Verso.Cli.Parameters.ParameterResolver 92.7% 87.2%
Verso.Cli.Parameters.ParameterTypeParser 50%
Verso.Cli.Repl.Meta.Commands.ClearMeta 14.2%
Verso.Cli.Repl.Meta.Commands.ConvertMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.ExitMeta 20% 0%
Verso.Cli.Repl.Meta.Commands.ExportMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.HelpMeta 4.5% 0%
Verso.Cli.Repl.Meta.Commands.HistoryMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.KernelMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.LayoutMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.ListMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.LoadMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.MdMeta 0%
Verso.Cli.Repl.Meta.Commands.RecallMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.RerunMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.ResetMeta 0%
Verso.Cli.Repl.Meta.Commands.SaveMeta 60.9% 88.8%
Verso.Cli.Repl.Meta.Commands.SetMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.ThemeMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.VarsMeta 0% 0%
Verso.Cli.Repl.Meta.Commands.ViewMeta 0% 0%
Verso.Cli.Repl.Meta.IMetaCommand 100%
Verso.Cli.Repl.Meta.MetaCommandRegistry 100% 83.3%
Verso.Cli.Repl.Meta.MetaContext 75% 50%
Verso.Cli.Repl.Prompt.HistoryStore 83.3% 75%
Verso.Cli.Repl.Prompt.KernelPromptCallbacks 11.2% 17.9%
Verso.Cli.Repl.Prompt.MinimalHighlighter 57.4% 52.9%
Verso.Cli.Repl.Prompt.PlainPromptDriver 87.5% 92.3%
Verso.Cli.Repl.Prompt.PrettyPromptDriver 0% 0%
Verso.Cli.Repl.Prompt.ReplInput 100%
Verso.Cli.Repl.Prompt.TerminalCapabilities 18.1% 14.2%
Verso.Cli.Repl.Rendering.MimeDispatcher 77.1% 71.6%
Verso.Cli.Repl.Rendering.Renderers.CsvTableRenderer 86% 63.6%
Verso.Cli.Repl.Rendering.Renderers.HtmlStripRenderer 100% 50%
Verso.Cli.Repl.Rendering.Renderers.ImagePlaceholderRenderer 50% 19.2%
Verso.Cli.Repl.Rendering.Renderers.JsonRenderer 0% 0%
Verso.Cli.Repl.Rendering.Renderers.MarkdownRenderer 91.6% 77.7%
Verso.Cli.Repl.Rendering.Renderers.PlainTextRenderer 100% 50%
Verso.Cli.Repl.Rendering.TerminalRenderer 64.1% 45.3%
Verso.Cli.Repl.Rendering.TruncationPolicy 100% 83.3%
Verso.Cli.Repl.ReplLoop 0% 0%
Verso.Cli.Repl.ReplOptions 0%
Verso.Cli.Repl.ReplSession 69.2% 70%
Verso.Cli.Repl.Settings.ReplSettings 100%
Verso.Cli.Repl.Settings.ReplSettingsLoader 71% 75%
Verso.Cli.Repl.Signals.SignalHandler 48.3% 25%
Verso.Cli.Utilities.BrowserLauncher 0% 0%
Verso.Cli.Utilities.PythonAutoInstallOption 57.1% 0%
Verso.Cli.Utilities.PythonInterpreterOption 50% 0%
Verso.Cli.Utilities.SerializerNotFoundException 100%
Verso.Cli.Utilities.SerializerResolver 94.7% 87.5%
Verso.FSharp - 82.8%
Name Line Branch
Verso.FSharp 82.8% 70.4%
Verso.FSharp.Formatters.FSharpDataFormatter 83.1% 68.7%
Verso.FSharp.FSharpExtension 100%
Verso.FSharp.Helpers.DiagnosticMapper 95.6% 78.5%
Verso.FSharp.Helpers.FSharpValueFormatter 23.2% 33.3%
Verso.FSharp.Helpers.GlyphMapper 95.6% 97.7%
Verso.FSharp.Import.JupyterFSharpPostProcessor 91.1% 75%
Verso.FSharp.Kernel.FSharpCheckerManager 97.8% 66.6%
Verso.FSharp.Kernel.FSharpKernel 81.8% 69.4%
Verso.FSharp.Kernel.FSharpKernelOptions 100%
Verso.FSharp.Kernel.FSharpProjectContext 100% 100%
Verso.FSharp.Kernel.FsiSessionManager 89.5% 67.7%
Verso.FSharp.Kernel.VariableBridge 80.5% 76.1%
Verso.FSharp.NuGet.FSharpNuGetResolveResult 100%
Verso.FSharp.NuGet.NuGetFallbackResolver 75.3% 62.3%
Verso.FSharp.NuGet.NuGetProcessResult 100%
Verso.FSharp.NuGet.NuGetReferenceProcessor 82.4% 81.2%
Verso.FSharp.NuGet.ScriptDirectiveProcessor 89.3% 79.1%
Verso.Host - 55.2%
Name Line Branch
Verso.Host 55.2% 40.7%
Program 0% 0%
Verso.Host.Dto.CellAddParams 100%
Verso.Host.Dto.CellChangeLanguageParams 0%
Verso.Host.Dto.CellChangeTypeParams 100%
Verso.Host.Dto.CellDto 100%
Verso.Host.Dto.CellGetParams 100%
Verso.Host.Dto.CellInsertParams 100%
Verso.Host.Dto.CellInteractParams 100%
Verso.Host.Dto.CellInteractResult 100%
Verso.Host.Dto.CellMoveParams 100%
Verso.Host.Dto.CellOutputDto 100%
Verso.Host.Dto.CellRemoveParams 100%
Verso.Host.Dto.CellTypeDto 0%
Verso.Host.Dto.CellTypesResult 0%
Verso.Host.Dto.CellUpdateSourceParams 100%
Verso.Host.Dto.CompletionDto 0%
Verso.Host.Dto.CompletionsParams 0%
Verso.Host.Dto.CompletionsResult 0%
Verso.Host.Dto.DiagnosticDto 0%
Verso.Host.Dto.DiagnosticsParams 0%
Verso.Host.Dto.DiagnosticsResult 0%
Verso.Host.Dto.ExecutionResultDto 100%
Verso.Host.Dto.ExecutionRunParams 100%
Verso.Host.Dto.ExecutionStateNotification 100%
Verso.Host.Dto.ExtensionInfoDto 100%
Verso.Host.Dto.ExtensionInstallLocalParams 0%
Verso.Host.Dto.ExtensionInstallParams 0%
Verso.Host.Dto.ExtensionInstallResult 0%
Verso.Host.Dto.ExtensionListResult 100%
Verso.Host.Dto.ExtensionSearchParams 0%
Verso.Host.Dto.ExtensionSearchResult 0%
Verso.Host.Dto.ExtensionSettingsDto 0%
Verso.Host.Dto.ExtensionToggleParams 100%
Verso.Host.Dto.ExtensionUninstallParams 0%
Verso.Host.Dto.ExtensionVersionsParams 0%
Verso.Host.Dto.ExtensionVersionsResult 0%
Verso.Host.Dto.FontDto 100%
Verso.Host.Dto.HoverParams 0%
Verso.Host.Dto.HoverResult 0%
Verso.Host.Dto.InstalledExtensionItemDto 100%
Verso.Host.Dto.KernelRestartParams 0%
Verso.Host.Dto.LanguageDto 100%
Verso.Host.Dto.LanguagesResult 100%
Verso.Host.Dto.LayoutAllocateFrameInstanceParams 100%
Verso.Host.Dto.LayoutAllocateFrameInstanceResult 100%
Verso.Host.Dto.LayoutDto 100%
Verso.Host.Dto.LayoutGetCellContainerParams 0%
Verso.Host.Dto.LayoutGetCellContainerResult 0%
Verso.Host.Dto.LayoutGetRendererPackageParams 100%
Verso.Host.Dto.LayoutGetRendererPackageResult 100%
Verso.Host.Dto.LayoutGetStaticAssetsParams 100%
Verso.Host.Dto.LayoutGetStaticAssetsResult 100%
Verso.Host.Dto.LayoutInteractParams 100%
Verso.Host.Dto.LayoutRendererMountedParams 100%
Verso.Host.Dto.LayoutRendererMountedResult 100%
Verso.Host.Dto.LayoutRendererUnmountedParams 100%
Verso.Host.Dto.LayoutRenderParams 0%
Verso.Host.Dto.LayoutRenderResult 0%
Verso.Host.Dto.LayoutsResult 100%
Verso.Host.Dto.LayoutStaticAssetDto 100%
Verso.Host.Dto.LayoutStaticAssetLoadHintsDto 100%
Verso.Host.Dto.LayoutSwitchParams 0%
Verso.Host.Dto.LayoutUpdateCellParams 100%
Verso.Host.Dto.LogExtensionParams 100%
Verso.Host.Dto.NotebookCloseParams 100%
Verso.Host.Dto.NotebookDiffParams 100%
Verso.Host.Dto.NotebookOpenParams 100%
Verso.Host.Dto.NotebookOpenResult 100%
Verso.Host.Dto.NotebookSaveResult 100%
Verso.Host.Dto.NotebookSetDefaultKernelParams 0%
Verso.Host.Dto.NotebookSetFilePathParams 0%
Verso.Host.Dto.PackageSearchItemDto 0%
Verso.Host.Dto.PanelInfoDto 100%
Verso.Host.Dto.PanelInteractParams 100%
Verso.Host.Dto.PanelListParams 100%
Verso.Host.Dto.PanelListResult 100%
Verso.Host.Dto.PanelRenderParams 100%
Verso.Host.Dto.PanelRenderResult 100%
Verso.Host.Dto.PanelRepresentationDto 100%
Verso.Host.Dto.ParameterAddParams 0%
Verso.Host.Dto.ParameterDefDto 0%
Verso.Host.Dto.ParameterListResult 0%
Verso.Host.Dto.ParameterRemoveParams 0%
Verso.Host.Dto.ParameterUpdateParams 0%
Verso.Host.Dto.PropertiesGetSectionsParams 100%
Verso.Host.Dto.PropertiesGetSectionsResult 100%
Verso.Host.Dto.PropertiesGetSupportedResult 100%
Verso.Host.Dto.PropertiesUpdatePropertyParams 100%
Verso.Host.Dto.PropertyFieldDto 100%
Verso.Host.Dto.PropertyFieldOptionDto 100%
Verso.Host.Dto.PropertySectionDto 100%
Verso.Host.Dto.PropertySectionResultDto 100%
Verso.Host.Dto.RangeDto 0%
Verso.Host.Dto.SettingConstraintsDto 0%
Verso.Host.Dto.SettingDefinitionDto 0%
Verso.Host.Dto.SettingsGetDefinitionsResult 0%
Verso.Host.Dto.SettingsGetParams 0%
Verso.Host.Dto.SettingsGetResult 0%
Verso.Host.Dto.SettingsResetParams 0%
Verso.Host.Dto.SettingsUpdateParams 0%
Verso.Host.Dto.ThemeElevationDto 100%
Verso.Host.Dto.ThemeListItemDto 0%
Verso.Host.Dto.ThemeResult 100%
Verso.Host.Dto.ThemeSpacingDto 100%
Verso.Host.Dto.ThemesResult 0%
Verso.Host.Dto.ThemeTypographyDto 100%
Verso.Host.Dto.ToolbarActionDto 0%
Verso.Host.Dto.ToolbarActionsResult 0%
Verso.Host.Dto.ToolbarExecuteParams 0%
Verso.Host.Dto.ToolbarGetEnabledStatesParams 0%
Verso.Host.Dto.ToolbarGetEnabledStatesResult 0%
Verso.Host.Dto.VariableEntryDto 100%
Verso.Host.Dto.VariableInspectParams 0%
Verso.Host.Dto.VariableInspectResult 0%
Verso.Host.Dto.VariableListResult 100%
Verso.Host.Handlers.CellHandler 71.8% 46.5%
Verso.Host.Handlers.DiffHandler 100% 80%
Verso.Host.Handlers.ExecutionHandler 41.2% 23.6%
Verso.Host.Handlers.ExtensionHandler 28.3% 9.5%
Verso.Host.Handlers.InteractionHandler 95.8% 70%
Verso.Host.Handlers.KernelHandler 0% 0%
Verso.Host.Handlers.LayoutHandler 71.6% 51.1%
Verso.Host.Handlers.LogHandler 90.9% 90%
Verso.Host.Handlers.NotebookHandler 56.9% 55.3%
Verso.Host.Handlers.OutputHandler 100%
Verso.Host.Handlers.PanelHandler 100% 70.8%
Verso.Host.Handlers.ParameterHandler 0% 0%
Verso.Host.Handlers.PropertiesHandler 76.9% 62.5%
Verso.Host.Handlers.SettingsHandler 21.3% 14.5%
Verso.Host.Handlers.ThemeHandler 83.4% 12.5%
Verso.Host.Handlers.ToolbarHandler 0% 0%
Verso.Host.Handlers.VariableHandler 33.3% 15%
Verso.Host.HostSession 41.1% 41.6%
Verso.Host.Layouts.IframeFrameChannel 100%
Verso.Host.Layouts.LayoutFrameChannel 100% 100%
Verso.Host.Layouts.LayoutSessionFrameTracker 100% 91.6%
Verso.Host.NotebookSession 72.9% 46.1%
Verso.Host.Protocol.JsonRpcMessage 98% 91.6%
Verso.Http - 80.2%
Name Line Branch
Verso.Http 80.2% 67.1%
Verso.Http.CellType.HttpCellRenderer 35.7%
Verso.Http.CellType.HttpCellType 100%
Verso.Http.Formatting.HttpResponseFormatter 90.9% 76.9%
Verso.Http.Kernel.HttpKernel 67.9% 56%
Verso.Http.MagicCommands.HttpSetBaseMagicCommand 100% 100%
Verso.Http.MagicCommands.HttpSetHeaderMagicCommand 88.5% 83.3%
Verso.Http.MagicCommands.HttpSetTimeoutMagicCommand 100% 100%
Verso.Http.Models.HttpRequestBlock 100%
Verso.Http.Models.HttpResponseData 100%
Verso.Http.Models.ParsedVariable 100%
Verso.Http.Parsing.HttpRequestParser 98.2% 98.4%
Verso.Http.Parsing.HttpResponseReference 85.1% 83.3%
Verso.Http.Parsing.HttpVariableResolver 64.5% 35.2%
Verso.JavaScript - 52.4%
Name Line Branch
Verso.JavaScript 52.4% 48%
Verso.JavaScript.Kernel.IJavaScriptRunner 0%
Verso.JavaScript.Kernel.JavaScriptDisplayOutput 0%
Verso.JavaScript.Kernel.JavaScriptEngineManager 53.7% 50%
Verso.JavaScript.Kernel.JavaScriptKernel 82.4% 74.2%
Verso.JavaScript.Kernel.JavaScriptKernelOptions 100%
Verso.JavaScript.Kernel.JavaScriptRunResult 100%
Verso.JavaScript.Kernel.JintConsoleShim 100% 66.6%
Verso.JavaScript.Kernel.JintRunner 84.8% 79%
Verso.JavaScript.Kernel.NodeDetectionResult 100%
Verso.JavaScript.Kernel.NodeProcessRunner 0% 0%
Verso.JavaScript.Kernel.TranspileResult 0% 0%
Verso.JavaScript.Kernel.TypeScriptKernel 21.1% 12.8%
Verso.JavaScript.Kernel.VariableBridge 84.4% 81.8%
Verso.JavaScript.MagicCommands.NpmMagicCommand 56.3% 22.2%
Verso.JavaScript.MagicCommands.NpmManager 7.2% 12.5%
Verso.JavaScript.MagicCommands.NpmPackage 100% 50%
Verso.JavaScript.MagicCommands.NpmReport 95.9% 81.9%
Verso.PowerShell - 63.8%
Name Line Branch
Verso.PowerShell 63.8% 51.5%
System.Text.RegularExpressions.Generated.AnsiEscapeSequenceRegex_0 100%
Verso.PowerShell.Helpers.CompletionResultTypeMapper 27.7% 13.3%
Verso.PowerShell.Kernel.Host.PowerShellHostInputRequest 100%
Verso.PowerShell.Kernel.Host.PowerShellHostOutput 100%
Verso.PowerShell.Kernel.Host.VersoPowerShellHost 61.9%
Verso.PowerShell.Kernel.Host.VersoPowerShellHostUserInterface 35.9% 22.8%
Verso.PowerShell.Kernel.Host.VersoPowerShellRawUserInterface 21.8%
Verso.PowerShell.Kernel.InvokeResult 100%
Verso.PowerShell.Kernel.PowerShellKernel 87.6% 72.7%
Verso.PowerShell.Kernel.PowerShellKernelOptions 100%
Verso.PowerShell.Kernel.RunspaceManager 65.6% 53.4%
Verso.PowerShell.Kernel.VariableBridge 82.8% 83.3%
Verso.PowerShell.PowerShellExtension 100%
Verso.Python - 76.6%
Name Line Branch
Verso.Python 76.6% 68.7%
Verso.Python.Helpers.JediTypeMapper 100% 100%
Verso.Python.Helpers.PythonPositionHelpers 100% 100%
Verso.Python.Host.HostBootstrap 100% 100%
Verso.Python.Host.HostHandshake 100% 70%
Verso.Python.Host.HostIntelliSense 100% 100%
Verso.Python.Host.HostPackages 100% 100%
Verso.Python.Host.HostProcessLauncher 66.6% 50%
Verso.Python.Host.HostProcessStartInfo 100%
Verso.Python.Host.HostProtocol 96.5% 95.8%
Verso.Python.Host.HostScriptExtractor 80.8% 65%
Verso.Python.Host.HostVariables 75.2% 49%
Verso.Python.Host.ManagedHostProcessHandle 87.5% 75%
Verso.Python.Host.NdjsonFramer 86.2% 73%
Verso.Python.Host.PythonHostAuthenticationException 100%
Verso.Python.Host.PythonHostConnection 86.3% 83.3%
Verso.Python.Host.PythonHostException 50%
Verso.Python.Host.PythonHostProcess 81.8% 66.6%
Verso.Python.Host.PythonHostProtocolException 100%
Verso.Python.Host.PythonHostSession 85.7% 77.2%
Verso.Python.Host.PythonHostTimeoutException 0%
Verso.Python.Host.RequestCorrelator 92% 78.5%
Verso.Python.Host.StreamLineAssembler 90.4% 92.8%
Verso.Python.Host.VariableConverters 43.9% 69.2%
Verso.Python.Host.VariableShapes 80.5% 58.8%
Verso.Python.Host.WindowsHostProcessHandle 0% 0%
Verso.Python.Host.WireTag 73.9% 83.3%
Verso.Python.Interpreter.InterpreterInfo 66.6% 20%
Verso.Python.Interpreter.InterpreterLocator 62.1% 62.7%
Verso.Python.Interpreter.InterpreterQuery 100%
Verso.Python.Interpreter.InterpreterResolution 72.2% 37.5%
Verso.Python.Interpreter.InterpreterValidation 100%
Verso.Python.Interpreter.InterpreterValidator 91.4% 78.2%
Verso.Python.Interpreter.JediTools 82.5% 94.4%
Verso.Python.Interpreter.ManagedEnvironment 81.8% 62.5%
Verso.Python.Interpreter.ProcessRunner 95% 75%
Verso.Python.Interpreter.UvTool 66.6% 33.3%
Verso.Python.Interpreter.WellKnownInterpreterPaths 0% 0%
Verso.Python.Kernel.PythonKernel 80.9% 61.5%
Verso.Python.Kernel.PythonKernelOptions 100%
Verso.Python.MagicCommands.PipMagicCommand 22.4% 0%
Verso.Python.MagicCommands.PythonMagicCommand 80.3% 63.7%
Verso.Python.PackageManagement.AutoInstallService 99.3% 95.5%
Verso.Python.PackageManagement.ImportMap 100% 92.8%
Verso.Python.PackageManagement.ImportScan 100% 100%
Verso.Python.PackageManagement.InstalledPackage 100%
Verso.Python.PackageManagement.InstallReport 95.8% 87%
Verso.Python.PackageManagement.PackageInstaller 92.8% 86.3%
Verso.Python.PackageManagement.Pep723Block 97.7% 94.8%
Verso.Python.PackageManagement.RequirementGuard 88% 71.7%
Verso.Python.PackageManagement.RequiresPython 94.4% 91.3%
Verso.Python.PackageManagement.ResolvedImport 100%
Verso.Python.PackageManagement.ScannedImport 100%
Verso.Python.PackageManagement.ScriptMetadata 100%
Verso.Sample.Diagram - 80.1%
Name Line Branch
Verso.Sample.Diagram 80.1% 85.5%
Verso.Sample.Diagram.DiagramCellType 0%
Verso.Sample.Diagram.DiagramKernel 82% 100%
Verso.Sample.Diagram.DiagramRenderer 65% 100%
Verso.Sample.Diagram.Models.DiagramEdge 100%
Verso.Sample.Diagram.Models.DiagramGraph 100%
Verso.Sample.Diagram.Models.DiagramNode 100%
Verso.Sample.Diagram.Parsing.ArrowNotationParser 100% 100%
Verso.Sample.Diagram.Rendering.SvgFlowchartRenderer 96.5% 79.1%
Verso.Sample.Dice - 82.1%
Name Line Branch
Verso.Sample.Dice 82.1% 91.3%
Verso.Sample.Dice.DiceExtension 82.8% 81.8%
Verso.Sample.Dice.DiceFormatter 81.8% 90%
Verso.Sample.Dice.DiceRenderer 70.8% 100%
Verso.Sample.Dice.DiceRollAction 57.1% 100%
Verso.Sample.Dice.Models.DiceNotation 100% 100%
Verso.Sample.Dice.Models.DiceResult 100%
Verso.Sample.Slides - 58.8%
Name Line Branch
Verso.Sample.Slides 58.8% 55.5%
Verso.Sample.Slides.Models.SlideAssignment 100%
Verso.Sample.Slides.PresentationLayout 57.9% 55.5%
Verso.Sample.Sparkline - 67.3%
Name Line Branch
Verso.Sample.Sparkline 67.3% 50%
Verso.Sample.Sparkline.RendererScript 100% 50%
Verso.Sample.Sparkline.SparklineLayout 64.5% 50%
Verso.Testing - 80.5%
Name Line Branch
Verso.Testing 80.5% 73.6%
Verso.Testing.Fakes.FakeCellInteractionHandler 85.1% 0%
Verso.Testing.Fakes.FakeCellPropertyProvider 100%
Verso.Testing.Fakes.FakeCellRenderer 80%
Verso.Testing.Fakes.FakeCellType 80% 75%
Verso.Testing.Fakes.FakeDataFormatter 73.9% 0%
Verso.Testing.Fakes.FakeExtension 73.9%
Verso.Testing.Fakes.FakeFrameChannel 94.7% 83.3%
Verso.Testing.Fakes.FakeIsolatedLayoutEngine 75% 100%
Verso.Testing.Fakes.FakeLanguageKernel 86.8% 100%
Verso.Testing.Fakes.FakeLayoutInteractionHandler 75.6% 100%
Verso.Testing.Fakes.RecordedFrameMessage 100%
Verso.Testing.Stubs.StubCellRenderContext 75%
Verso.Testing.Stubs.StubExecutionContext 86.3% 100%
Verso.Testing.Stubs.StubFormatterContext 81.8%
Verso.Testing.Stubs.StubMagicCommandContext 80%
Verso.Testing.Stubs.StubNotebookOperations 73.8% 100%
Verso.Testing.Stubs.StubToolbarActionContext 80%
Verso.Testing.Stubs.StubVersoContext 69.2%

Add an in-memory cache for package icon data URIs to avoid repeated disk reads on render paths. Introduces IconDataUriCache (ConcurrentDictionary), IconCacheKey, ReadPackageIconDataUri and InvalidateIconCache; uses GetOrAdd in TryReadPackageIconDataUri and invalidates entries after installs. Also adds System.Collections.Concurrent using and tests verifying cached hits, cached misses, and separate entries for pinned vs unpinned lookups.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
@TorreyBetts
TorreyBetts merged commit df8d377 into main Aug 1, 2026
10 checks passed
@TorreyBetts
TorreyBetts deleted the feature/flat-appearance branch August 1, 2026 14:27
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