Skip to content

Implement i18n tooling and localize UI strings across projects - #97

Merged
TorreyBetts merged 6 commits into
mainfrom
feature/localize-ui
Aug 3, 2026
Merged

Implement i18n tooling and localize UI strings across projects#97
TorreyBetts merged 6 commits into
mainfrom
feature/localize-ui

Conversation

@TorreyBetts

Copy link
Copy Markdown
Contributor

This pull request introduces comprehensive support for interface translations in Verso, including new documentation, CI checks, and guidance for contributing and maintaining translations. The most important changes are:

Translation Infrastructure and CI Integration

  • Added a new translation checker script build/i18n/check.py that validates all translations against the English source, ensuring keys, placeholders, and coverage are correct; this script is now run in CI before the build to catch translation drift early [1] [2].
  • Updated the CI workflow (.github/workflows/verso-ci.yml) to trigger on changes to translation files and to run the translation check step [1] [2] [3].

Documentation and Contributor Guidance

  • Added a detailed guide for working with translations in build/i18n/README.md, covering where strings belong, how to add or translate them, and how to check the work.
  • Updated CONTRIBUTING.md to explain best practices for writing user-facing messages, which strings should be translated, and how to handle plurals and sentence construction.
  • Updated the main README.md to document interface language support, configuration options, and a link to the new guide.

Introduce localization infrastructure and apply it across the UI. Adds build/i18n scripts (resources.py, translate.py, check.py, pseudo.py) and documentation (README.md, glossary.md) to discover, generate, check, and machine-translate resource files (including a pseudo-locale). Add resource files and helpers (Plural.cs, UI.resx, UI.de.resx, UI.qps-Ploc.resx, VersoCultures, VersoLocalization, LanguageOption) and editor localization bundles (vscode l10n files and package.nls.json variants). Replace many hard-coded English strings in Blazor components with UI resource lookups and wire up localization in the host/CLI/VSCode pieces. Also add tests for localization and related changes to project files and VSCode extension code.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Introduce translation tooling and many localization assets: add build/i18n scripts (export.py, merge.py) and update i18n README and CONTRIBUTING with translation workflow and guidelines; ignore working translation files in .gitignore. Add plural/theming/localized text helpers and CellText resources across projects, plus numerous .resx and VS Code l10n JSON files for de/es/ja/zh and pseudo locales. Wire resources into projects, add tests for theming and localization, and remove the old ThemeCssGenerator. This enables exporting, merging and managing translations in passes and centralizes localization handling across assemblies.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
Introduce interface-language support and localization plumbing: add docs (docs/guides/interface-language.md), CLI help for --language, and glossary guidance. Replace hard-coded English extension names with resource lookups (Strings.*) across ADO SQL components and add corresponding resource entries (and translations) for names like renderer, formatter, import hook, kernel, magic commands, and toolbar actions (Export CSV/JSON). Update README and glossary to mention interface language. CI workflow now includes build/i18n in paths and runs build/i18n/check.py to validate translations early in the build.

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

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Summary

Summary
Generated on: 08/03/2026 - 11:48:56
Coverage date: 08/03/2026 - 11:45:13 - 08/03/2026 - 11:48:46
Parser: MultiReport (29x Cobertura)
Assemblies: 17
Classes: 669
Files: 491
Line coverage: 65.7% (21807 of 33146)
Covered lines: 21807
Uncovered lines: 11339
Coverable lines: 33146
Total lines: 82495
Branch coverage: 57.8% (10239 of 17711)
Covered branches: 10239
Total branches: 17711
Method coverage: Feature is only available for sponsors

Coverage

Verso - 79.2%
Name Line Branch
Verso 79.2% 69.3%
Verso.Contexts.CellRenderContext 68.7%
Verso.Contexts.ExecutionContext 96% 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.8% 92.9%
Verso.Diffing.NotebookDiffEngine 97.5% 86.5%
Verso.Display.DisplayFormatterContext 23% 50%
Verso.Display.DisplayHandler 14.6% 0%
Verso.Display.FormatterResolver 96% 100%
Verso.Display.HintedFormatterContext 33.3% 50%
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 54% 58%
Verso.Export.NotebookMarkdownExporter 70.1% 78.4%
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 78.3% 50.6%
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% 75%
Verso.Extensions.Formatters.HtmlFormatter 100% 50%
Verso.Extensions.Formatters.ImageFormatter 92.5% 81.8%
Verso.Extensions.Formatters.ObjectFormatter 96.1% 87.5%
Verso.Extensions.Formatters.ObjectTreeRenderer 92.2% 80.3%
Verso.Extensions.Formatters.PrimitiveFormatter 100% 75%
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 84.2% 65.4%
Verso.Extensions.Layouts.NotebookLayout 75.5% 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.4% 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 91.5% 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 83.3%
Verso.Extensions.ToolbarActions.RunAllAction 88.8% 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.3% 56.3%
Verso.Kernels.CSharpKernelOptions 100%
Verso.Kernels.NuGetPackageResolver 11.3% 8.2%
Verso.Kernels.NuGetResolveResult 0%
Verso.Kernels.NuGetRuntimeResolver 15.9% 9.8%
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.Localization.CellText 50%
Verso.Localization.VersoCultures 95.1% 100%
Verso.MagicCommands.AboutMagicCommand 89.6% 37.5%
Verso.MagicCommands.ExtensionMagicCommand 10.1% 13%
Verso.MagicCommands.ImportMagicCommand 88.7% 87.6%
Verso.MagicCommands.MagicCommandParser 90.4% 88.8%
Verso.MagicCommands.NuGetMagicCommand 38.8% 6.2%
Verso.MagicCommands.RestartMagicCommand 100% 100%
Verso.MagicCommands.TimeMagicCommand 100% 100%
Verso.NotebookOperations 73.4% 50%
Verso.Parameters.ParameterValueParser 100% 100%
Verso.Resources.Strings 75.9% 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 77.2% 70%
Verso.Stubs.StubNotebookOperations 0%
Verso.Stubs.StubThemeContext 100% 100%
Verso.ThemeEngine 95.9% 79.5%
Verso.Abstractions - 83.4%
Name Line Branch
Verso.Abstractions 83.4% 62.9%
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.IDataFormatter 0%
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.Plural 100% 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.ThemeCss 100% 88.4%
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 - 81.3%
Name Line Branch
Verso.Ado 81.3% 77.7%
Verso.Ado.CellType.SqlCellRenderer 76% 100%
Verso.Ado.CellType.SqlCellType 100%
Verso.Ado.Formatters.ResultSetFormatter 97.3% 86.3%
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 82.9% 72.2%
Verso.Ado.Kernel.TableInfo 100%
Verso.Ado.Localization.CellText 50%
Verso.Ado.MagicCommands.SqlConnectMagicCommand 77.2% 69.1%
Verso.Ado.MagicCommands.SqlDisconnectMagicCommand 95.6% 100%
Verso.Ado.MagicCommands.SqlScaffoldMagicCommand 29.2% 25%
Verso.Ado.MagicCommands.SqlSchemaMagicCommand 92.2% 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.Resources.Strings 53.9% 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%
Name Line Branch
Verso.Blazor 26% 21.4%
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 70.3% 60%
Verso.Blazor.Components.Pages.NotebookPage 31.6% 35.2%
Verso.Blazor.Components.Routes 0%
Verso.Blazor.Localization.VersoLocalization 0% 0%
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.3%
Verso.Blazor.Shared - 61.1%
Name Line Branch
Verso.Blazor.Shared 61.1% 50.6%
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% 49.8%
Verso.Blazor.Shared.Components.Notebook.CellPropertiesPanel 65% 80%
Verso.Blazor.Shared.Components.Notebook.ComparePanel 90.3% 73%
Verso.Blazor.Shared.Components.Notebook.CustomLayoutHtml 67.8% 41.8%
Verso.Blazor.Shared.Components.Notebook.DefaultCellList 84.6% 80.7%
Verso.Blazor.Shared.Components.Notebook.DiffErrorDialog 54.5% 25%
Verso.Blazor.Shared.Components.Notebook.ExtensionConsentDialog 90.9% 79.1%
Verso.Blazor.Shared.Components.Notebook.ExtensionPanel 57.2% 44.3%
Verso.Blazor.Shared.Components.Notebook.ExtensionPanelHost 84.4% 76%
Verso.Blazor.Shared.Components.Notebook.LayoutRenderer 47% 22.2%
Verso.Blazor.Shared.Components.Notebook.MetadataPanel 71.4% 44.4%
Verso.Blazor.Shared.Components.Notebook.NotebookCellContext 100% 100%
Verso.Blazor.Shared.Components.Notebook.NotebookDiffView 94% 77.2%
Verso.Blazor.Shared.Components.Notebook.OutputView 68.8% 49%
Verso.Blazor.Shared.Components.Notebook.PropertyFieldComponent 45.1% 41.5%
Verso.Blazor.Shared.Components.Notebook.PropertySectionComponent 100% 100%
Verso.Blazor.Shared.Components.Notebook.SettingsPanel 53% 46.1%
Verso.Blazor.Shared.Components.Notebook.Toolbar 76.5% 70.8%
Verso.Blazor.Shared.Components.Notebook.VariableExplorer 64.9% 83.3%
Verso.Blazor.Shared.Components.Notebook.ViewPanel 93.5% 89.2%
Verso.Blazor.Shared.Components.Notebook.WidgetFrame 70% 50%
Verso.Blazor.Shared.Components.ThemeProvider 94.4% 81.2%
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.DiffSources 100% 95.8%
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.Resources.UI 57% 100%
Verso.Blazor.Shared.Services.INotebookService 14.2%
Verso.Cli - 41.3%
Name Line Branch
Verso.Cli 41.3% 41.8%
Program 0%
System.Text.RegularExpressions.Generated.HtmlTagRegex_0 100%
Verso.Cli.Commands.ConvertCommand 52.1% 100%
Verso.Cli.Commands.ExportCommand 0% 0%
Verso.Cli.Commands.InfoCommand 8.1% 0%
Verso.Cli.Commands.ReplCommand 14.4% 0%
Verso.Cli.Commands.RunCommand 53.9%
Verso.Cli.Commands.ServeCommand 49.5%
Verso.Cli.Execution.CellOutcome 88.4% 88.4%
Verso.Cli.Execution.CliToolbarActionContext 0% 0%
Verso.Cli.Execution.HeadlessRunner 80.4% 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 84.4% 85%
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.9% 87.2%
Verso.Cli.Parameters.ParameterTypeParser 50%
Verso.Cli.Repl.Meta.Commands.ClearMeta 60%
Verso.Cli.Repl.Meta.Commands.ConvertMeta 11.1% 0%
Verso.Cli.Repl.Meta.Commands.ExitMeta 40% 0%
Verso.Cli.Repl.Meta.Commands.ExportMeta 4.3% 0%
Verso.Cli.Repl.Meta.Commands.HelpMeta 12% 0%
Verso.Cli.Repl.Meta.Commands.HistoryMeta 12% 0%
Verso.Cli.Repl.Meta.Commands.KernelMeta 10.7% 0%
Verso.Cli.Repl.Meta.Commands.LayoutMeta 20% 0%
Verso.Cli.Repl.Meta.Commands.ListMeta 5.3% 0%
Verso.Cli.Repl.Meta.Commands.LoadMeta 6.3% 0%
Verso.Cli.Repl.Meta.Commands.MdMeta 50%
Verso.Cli.Repl.Meta.Commands.RecallMeta 15.7% 0%
Verso.Cli.Repl.Meta.Commands.RerunMeta 4.8% 0%
Verso.Cli.Repl.Meta.Commands.ResetMeta 42.8%
Verso.Cli.Repl.Meta.Commands.SaveMeta 70.7% 88.8%
Verso.Cli.Repl.Meta.Commands.SetMeta 7.5% 0%
Verso.Cli.Repl.Meta.Commands.ThemeMeta 15% 0%
Verso.Cli.Repl.Meta.Commands.VarsMeta 10.3% 0%
Verso.Cli.Repl.Meta.Commands.ViewMeta 13% 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 78.3% 71.6%
Verso.Cli.Repl.Rendering.Renderers.CsvTableRenderer 86.6% 63.6%
Verso.Cli.Repl.Rendering.Renderers.HtmlStripRenderer 100% 50%
Verso.Cli.Repl.Rendering.Renderers.ImagePlaceholderRenderer 51.6% 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 63.2% 45.3%
Verso.Cli.Repl.Rendering.TruncationPolicy 100% 83.3%
Verso.Cli.Repl.ReplLoop 18.2% 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.Resources.Strings 47.8% 100%
Verso.Cli.Utilities.BrowserLauncher 0% 0%
Verso.Cli.Utilities.CellCount 100%
Verso.Cli.Utilities.DisplayWidth 63.6% 60.8%
Verso.Cli.Utilities.LanguageOption 0% 0%
Verso.Cli.Utilities.Messages 90% 50%
Verso.Cli.Utilities.PythonAutoInstallOption 25% 0%
Verso.Cli.Utilities.PythonInterpreterOption 25% 0%
Verso.Cli.Utilities.SerializerNotFoundException 100%
Verso.Cli.Utilities.SerializerResolver 94.7% 87.5%
Verso.FSharp - 82.4%
Name Line Branch
Verso.FSharp 82.4% 70.4%
Verso.FSharp.Formatters.FSharpDataFormatter 82.8% 68.4%
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 74.8% 62.3%
Verso.FSharp.NuGet.NuGetProcessResult 100%
Verso.FSharp.NuGet.NuGetReferenceProcessor 82.4% 81.2%
Verso.FSharp.NuGet.ScriptDirectiveProcessor 89.3% 79.1%
Verso.FSharp.Resources.Strings 64.5% 100%
Verso.Host - 55%
Name Line Branch
Verso.Host 55% 40.8%
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.3% 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.Host.Resources.Strings 33.3% 100%
Verso.Http - 74.7%
Name Line Branch
Verso.Http 74.7% 58.2%
Verso.Http.CellType.HttpCellRenderer 35.7%
Verso.Http.CellType.HttpCellType 100%
Verso.Http.Formatting.HttpResponseFormatter 91.2% 76.9%
Verso.Http.Kernel.HttpKernel 58.3% 40.7%
Verso.Http.Localization.CellText 100%
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.Http.Resources.Strings 47.7% 100%
Verso.JavaScript - 52.7%
Name Line Branch
Verso.JavaScript 52.7% 47.6%
Verso.JavaScript.Kernel.IJavaScriptRunner 0%
Verso.JavaScript.Kernel.JavaScriptDisplayOutput 0%
Verso.JavaScript.Kernel.JavaScriptEngineManager 53.7% 50%
Verso.JavaScript.Kernel.JavaScriptKernel 81.8% 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 20.8% 12.8%
Verso.JavaScript.Kernel.VariableBridge 84.4% 81.8%
Verso.JavaScript.MagicCommands.NpmMagicCommand 56.3% 25%
Verso.JavaScript.MagicCommands.NpmManager 7.2% 12.5%
Verso.JavaScript.MagicCommands.NpmPackage 100% 50%
Verso.JavaScript.MagicCommands.NpmReport 96.2% 79.5%
Verso.JavaScript.Resources.Strings 53.4% 100%
Verso.PowerShell - 64.7%
Name Line Branch
Verso.PowerShell 64.7% 51.3%
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 88.8% 75%
Verso.PowerShell.Kernel.PowerShellKernelOptions 100%
Verso.PowerShell.Kernel.RunspaceManager 66.6% 51.4%
Verso.PowerShell.Kernel.VariableBridge 82.8% 83.3%
Verso.PowerShell.PowerShellExtension 100%
Verso.PowerShell.Resources.Strings 61.5% 100%
Verso.Python - 76.4%
Name Line Branch
Verso.Python 76.4% 68.6%
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.1% 61.5%
Verso.Python.Kernel.PythonKernelOptions 100%
Verso.Python.MagicCommands.PipMagicCommand 22.8% 0%
Verso.Python.MagicCommands.PythonMagicCommand 81.4% 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.2%
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.Python.Resources.Strings 65% 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.2%
Name Line Branch
Verso.Sample.Dice 82.2% 90%
Verso.Sample.Dice.DiceExtension 82.8% 81.8%
Verso.Sample.Dice.DiceFormatter 82.3% 83.3%
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.2%
Name Line Branch
Verso.Testing 80.2% 69.5%
Verso.Testing.Fakes.FakeCellInteractionHandler 82.1% 0%
Verso.Testing.Fakes.FakeCellPropertyProvider 100%
Verso.Testing.Fakes.FakeCellRenderer 80%
Verso.Testing.Fakes.FakeCellType 80% 75%
Verso.Testing.Fakes.FakeDataFormatter 70.8% 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 87.5% 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 localized resource strings (Table_ObjectCount_One/Other) to en, de, es, ja, qps-Ploc and zh-Hans .resx files and refactor RunspaceManager to use a new AppendObjectCountFooter method. The new helper uses Plural.Of and HtmlEncode to render the localized singular/plural footer text and improves reuse by replacing inlined footer construction.

Signed-off-by: Torrey Betts <torrey.betts@gmail.com>
@TorreyBetts
TorreyBetts merged commit e49abb9 into main Aug 3, 2026
10 checks passed
@TorreyBetts
TorreyBetts deleted the feature/localize-ui branch August 3, 2026 11:58
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