Bump Tmds.DBus from 0.14.0 to 0.94.2 - #41
Closed
dependabot[bot] wants to merge 42 commits into
Closed
Conversation
Add null guard on ServiceLog.Message in the search-term filter to prevent NullReferenceException when log entries have null messages. Add comprehensive XML documentation for the ApplyFilter method explaining the level comparison semantics.
… 100% (closes #16) Replaced the per-service CPU usage calculation in GetServiceResourceMetricsAsync so that the raw cgroup cpu.stat / cpuacct.usage delta is divided by the number of logical CPU cores (Environment.ProcessorCount) before being expressed as a percentage. A service that saturates one core on a 4-core host now reports 25 % instead of 100 %; a service that saturates all cores reports 100 %. Also replaced the if-check cap with Math.Clamp(value, 0m, 100m) so the result is guaranteed to stay in the 0-100 range regardless of floating-point rounding.
…loses #15) Replaced the Lazy<Task<Connection>> field in DBusConnectionManager with a plain nullable Task<Connection> field protected by a SemaphoreSlim. Previously, when a D-Bus call failed the faulted Task was cached forever by Lazy<T>, meaning every subsequent call was handed the same failed object. After enough failures (~50-100 polls) no new connections could be established and the application returned 503 until restarted. The new implementation discards the cached task whenever it is faulted or cancelled before issuing a fresh CreateConnectionAsync() call, so transient failures auto-recover on the next request. ReconnectAsync also explicitly disposes any live connection before retrying, and Dispose() properly cleans up both the connection and the semaphore.
#19) Added a new installation section (§5) covering all steps needed to run the dashboard under a dedicated low-privilege account instead of root: * Create a system account (useradd --system) * Add it to the systemd-journal group for journal log access * Create a D-Bus policy file (/etc/dbus-1/system.d/) that allows listing, querying, and optionally controlling units via org.freedesktop.systemd1 * Create a polkit rule (/etc/polkit-1/rules.d/) to authorise service control operations without elevated privileges * Provide a sample systemd unit file using User=svcmonitor, SupplementaryGroups=systemd-journal, and NoNewPrivileges=true * Add verification commands (id, dbus-send, journalctl) to confirm the setup Updated the Table of Contents to link to the new section.
Added BulkRestartAsync to IServiceControlService and ServiceControlService.
The implementation accepts a list of unit names and a configurable concurrency
limit (default 3, clamped 1-20). It fans out RestartUnit D-Bus calls using a
SemaphoreSlim so that only maxConcurrency restarts run simultaneously, then
returns a BulkOperationResult with per-service success/failure details
(SuccessCount, FailureCount, AllSucceeded).
Exposed the feature as:
POST /api/services/bulk-restart
with JSON body { "serviceNames": [...], "maxConcurrency": 3 }
Added BulkRestartRequest model and BulkOperationResult class.
- Add Pages/Index.razor Blazor dashboard page with: - Text search input that filters services by name (client-side, case-insensitive) - Status filter buttons: All / Active / Failed / Inactive - Results count summary - Service table with name, state badge, sub-state, description, PID, uptime - Error state with retry button and loading indicator - Add App.razor, Routes.razor, _Imports.razor to enable Blazor Server - Add wwwroot/css/dashboard.css with clean responsive dashboard styles - Register AddRazorComponents/AddInteractiveServerComponents in Program.cs - Add UseAntiforgery and MapRazorComponents pipeline in Program.cs - Move Swagger UI from root to /swagger path to avoid route conflict closes #33
…Api 10.0 in favor of Swashbuckle Microsoft.AspNetCore.OpenApi 10 requires Microsoft.OpenApi 2.0 which breaks Swashbuckle.AspNetCore 7.x that expects the Models namespace from 1.x. Removed the duplicate DatabaseOptions class that caused CS0101.
… headers ASP0019 requires IHeaderDictionary indexer instead of .Add() to avoid ArgumentException on duplicate keys. All three middleware classes were also missing the RequestDelegate next parameter needed to call the next handler.
…controllers - Add LoadState, CpuUsagePercent, MemoryUsageMb to ServiceInfo - Add resource snapshot fields to ServiceMetric for MetricsController - Fix ServiceMonitorService: IsConnected is bool (not Task), GetAllAsync arity, unassigned pattern variables, decimal/double cast for AverageCpuUsage - Fix DBusConnectionManager: use new Connection(Address.System) instead of non-existent GetSessionConnectionAsync; remove State property references - Fix IProperties.GetAllAsync call to single-argument overload - Fix AttributeUsage on non-Attribute filter classes (CS0641) - Fix MemoryCacheProvider constructor parameter order (CS1737) - Fix Index.razor rendermode to InteractiveServerRenderMode - Fix LogsController: materialize IEnumerable before .Count
Tests for AlertRulesEngine, ApiIntegration, ConcurrencyEdgeCases, ResourceMonitor, ServiceControl, ServiceLog, and WorkflowIntegration all referenced types and properties that do not exist in the codebase. Kept PaginationHelper, ValidationHelper, ServiceMonitorService, ServiceDependencyGraph, ServiceHealthChecker, and AlertsController tests.
Removed build.yml (235 lines with 7 jobs including CodeQL, Trivy, Docker), codeql.yml, docker.yml, nuget-publish.yml, and release.yml. The single ci.yml does restore, build, and test on every push/PR to main.
Old README was ~400 lines of filler. New one has quick start, config reference, systemd unit example, and API table. Removed CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, and empty CHANGELOG.
Pipeline/RequestPipeline.cs was never referenced. Events/ServiceEventPublisher.cs was fully commented out in ServiceExtensions.cs. Removed docs/ directory (7 markdown files) - README covers all essential information.
76 files had a 4-line banner comment block. Removed them all - author attribution belongs in the LICENSE file, not repeated in every source file.
--- updated-dependencies: - dependency-name: Tmds.DBus dependency-version: 0.94.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/nuget/Tmds.DBus-0.94.2
branch
from
June 29, 2026 10:55
272768c to
699acc4
Compare
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated Tmds.DBus from 0.14.0 to 0.94.2.
Release notes
Sourced from Tmds.DBus's releases.
0.94.2
Tmds.DBus.Generator
0.94.1
Tmds.DBus.Generator
0.94.0
Tmds.DBus.Protocol
Func<ValueTask>handler overloads added to avoidasync voidin user code (#440).Tmds.DBus.Generator
IReadableXxxPropertieshas been replaced with a unifiedIXxxPropertiesinterface. Write-only properties are uncommon and the separate interface made explicit interface implementations more verbose (#441).DBusHandler.ParseInterfacenow ignores missing interface string on Properties requests (#442).Documentation
0.93.0
0.93.0
Tmds.DBus.Protocol
Connection- useDBusConnectioninstead.ConnectionOptions- useDBusConnectionOptionsinstead.ClientConnectionOptions- useDBusConnectionOptionsinstead.ClientSetupResult- useDBusConnectionOptions.SetupResultinstead.Address- useDBusAddressinstead.ActionException- useObserverHandlerinstead.IMethodHandler- useIPathMethodHandlerinstead.DBusException- useDBusErrorReplyExceptioninstead.DisconnectedException- useDBusConnectionClosedExceptioninstead.ConnectException- useDBusConnectFailedExceptioninstead.ProtocolException- useDBusUnexpectedValueExceptioninstead.MethodContext.Connection- useMethodContext.DBusConnectioninstead.AddMatchAsyncoverloads that acceptAction<Exception?, T, object?, object?>are markedObsolete. Use the newAction<Notification<T>>overloads instead (#427).Notification<T>/Notification/NotificationType: new callback API for signal observers, replacing theAction<Exception?, T, ...>pattern. Notifications distinguish between value, owner change, and completion events (#427).NameOwnerWatcher: tracks name ownership changes when calling methods and watching signals, enabling detection of service restarts. ADBusOwnerChangedExceptionis thrown when a method call targets an owner identifier from
NameOwnerWatcherand the owner has changed (#425).OnExceptionhandler onDBusConnectionOptions: provides exception reporting and disconnect control via the newExceptionContext/ExceptionSourcetypes (#431).Tmds.DBus.Generator
DBusGeneratorModeproperty toHandler, to generate proxies set it toProxy. (#429, #433)Action<Exception?, T>, the generator generates a simple overload that acceptsAction<T>for users that are not interested in completion notifications, and anAction<Notification<T>>overload to be notified of completions. (#427)IXxxPropertiesinterface, the generated proxy code changed as follows:GetPropertiesAsyncmethod now returns the concreteXxxPropertiesclass. When trying to get properties that were not set the get accessor throws. Alternatively, users can callGetNullablePropertiesAsyncwhich returns anINullableXxxPropertiesinterface which returnsnullfor properties that are not set.WatchPropertiesChangedmethods use a newIChangedXxxPropertiesinterface.0.92.0
This release addresses vulnerabilities from malicious senders in
Tmds.DBusandTmds.DBus.Protocol:Advisory: GHSA-xrw6-gwf8-vvr9
0.91.1
Tmds.DBus.Generator/Tmds.DBus.Tool:
0.91.0
Changes:
Bug fixes/improvements:
0.90.3
0.90.2
Tmds.DBus.Generator/Tmds.DBus.Tool:
0.90.1
Tmds.DBus.Generator:
0.90.0
Tmds.DBus.Protocol
This release does some refactoring which requires changes from the user. The version is binary compatible with the previous version.
Obsoleteattributes indicate what changes a user should make.When you have code that requires the
Connectiontype, you can callDBusConnection.AsConnection().Behavioral changes:
ReaderthrowsDBusReadExceptionwhen the message body and the read operations mismatch. When trying to read a handle that was already read, it throwsDBusUnexpectedValueException. (Protocol: add DBusReaderException and throw it when the Read operation and data being read mismatch. tmds/Tmds.DBus#385, Protocol: throw DBusUnexpectedValueException instead of InvalidOperationException when handle was already read. tmds/Tmds.DBus#399)Message.SignatureAsStringreturn an empty string when the signature header is omitted. (Protocol: Message: make SignatureAsString return an empty string when the header is omitted. tmds/Tmds.DBus#384)Reader.ReadHandlemethods return a non-null handle to avoid user having to do null-handling. (Protocol: make ReadHandle methods return a non-null handle to avoid user having to do null-handling. tmds/Tmds.DBus#364)New APIs:
DBusServicetype represents a peer reachable via the connection. (Protocol: add DBusService type which represents a named connection. tmds/Tmds.DBus#374)DBusObjecttype may be used as a base class for proxy classes. (Protocol: add a DBusObject base class. Add connection methods for watching signals and property changes. tmds/Tmds.DBus#376)SkipSafeHandletype may be used with theReader.ReadHandle/VariantValue.ReadHandlemethod to indicate a handle should not be read. This enables letting the user decide to skip reading the handle or not through what generic argument they are passing. (Protocol: add SkipSafeHandle class as a way to skip reading handles so other readers can still consume them. tmds/Tmds.DBus#363)DBusConnectionfor watching signals and property changes. (Protocol: add a DBusObject base class. Add connection methods for watching signals and property changes. tmds/Tmds.DBus#376)Tmds.DBus.Generator
Tmds.DBus.ProtocolAPI. Only proxies are supported. (Add Tmds.DBus.Protocol.SourceGenerator: a source generator for the Protocol library. tmds/Tmds.DBus#378)Documentation
... (truncated)
0.23.0
Tmds.DBus.Protocol:
0.22.0
Tmds.DBus:
Tmds.DBus.Protocol:
Tmds.DBus.Tool:
0.21.3
This release backports the fixes from 0.92.0 to
Tmds.DBus.Protocol.Advisory: GHSA-xrw6-gwf8-vvr9
0.21.2
Tmds.DBus.Protocol:
WriteArray/WriteDictionarythat acceptVariantValueinstead ofVariant. (add MessageWriter.WriteDictionary() overloads for VariantValue tmds/Tmds.DBus#327).0.21.1
Removes public API that was added in 0.21.0:
0.21.0
Tmds.DBus.Protocol
In v0.17.0 support for NativeAOT safe variant handling was enabled through two types:
VariantValuefor reading variants,and
Variantfor writing variants. The focus on this release is to support both reading and writing using theVariantValuetype.This enables writing back variants that were previously read.
The
Varianttype has been marked obsolete. Users should now be able to use theVariantValuetype as a direct replacement.Note that the
Dict/Array/Structtypes are not obsolete. They can be used for creating composite VariantValues.The
VariantValuetype now behaves different for variants that hold other variants. Such variants are not common becauseusually a variant will directly hold an actual (that is: non-variant) value. Variants that hold other variants are represented
as their own
VariantValueinstance with aTypeofVariant. The nested variant value can be obtained by callingGetVariantValue.There are some additional breaking API changes which shouldn't affect most users because involve low-level APIs for D-Bus marshalling and signature handling.
Utf8Spantype has been removed. APIs useReadOnlySpan<byte>instead.VariantValue.GetSignaturereturns aSignature(instead of astring).VariantValue.GetArray<T>requires a T ofSignature(instead of astring) for getting arrays of signature.Reader.ReadSignaturereturnsSignatureinstead ofUtf8Span.ReadSignatureAsSignaturehas been removed. The newReadSignatureAsSpanreturnsReadOnlySpan<byte>.Tmds.DBus.Tool
The following fixes have been made to the
codegencommand for the protocol API (in tmds/Tmds.DBus#307):0.20.0
Tmds.DBus.Protocol:
Tmds.DBus:
0.19.0
Tmds.DBus.Protocol:
0.18.0
Tmds.DBus.Protocol:
Tmds.DBus:
0.17.0
Main feature:
The focus of this release is improve trimming/NativeAOT support in the protocol library. Non-compatible members have been annotated and obsoleted. The library adds AOT-friendly types for reading and writing variants:
VariantValueandVariant.Other changes:
0.16.0
0.15.0
_camelCaserather than_PascalCase(#171)" tmds/Tmds.DBus#204)Commits viewable in compare view.