About

Wizardry and Steamworks publishes some very popular software packages and just like any software our applications contain bugs too. However, if users do not report bugs, for example, by using the bug reporting service https://bugs.grimore.org, then bugs cannot be neither identified nor fixed.

Not every user has the luxury to report bugs, some users would rather not interact with other people, which is very understandable. This is why "telemetry" exists, which is a blanket term that implies that error reports will be reported directly to Wizardry and Steamworks without user intervention.

This is very convenient. Even if our fans have asked to help us and we refused, this is perhaps one of the best ways to help. When these bugs are reported, we do not need to go through the whole process of reporting a bug and the next upcoming version of the software that reported the bug will definitely address the issue and contain a fix. It speeds up development a whole lot because we do not need to ask our users to mess around with the application in order to probe it because the report is generated directly from within so it will contain all the ingredients of what happened.

Note that telemetry does not resolve all the issues unfortunately because it is only possible to catch errors in areas of code that predictably might have trouble but covering the entire application would just lead to bad performance. With that said, telemetry does not outdate bug reporting, and bugs should still be reported by users at https://bugs.grimore.org (we can even combine both in case we notice that a user reports a bug and that there is telemetry to attest to their report, in order to speed up development).

Dissecting a Telemetry Report

Here is the content of one such automatic report that was received by our error reporting intake:

{
  "resourceLogs": [
    {
      "resource": {
        "attributes": [
          {
            "key": "asset",
            "value": {
              "stringValue": "Winify"
            }
          },
          {
            "key": "version",
            "value": {
              "stringValue": "1.0.0.0"
            }
          },
          {
            "key": "service.name",
            "value": {
              "stringValue": "unknown_service:Winify.exe"
            }
          },
          {
            "key": "telemetry.sdk.name",
            "value": {
              "stringValue": "serilog"
            }
          },
          {
            "key": "telemetry.sdk.language",
            "value": {
              "stringValue": "dotnet"
            }
          },
          {
            "key": "telemetry.sdk.version",
            "value": {
              "stringValue": "4.2.0-main-057a8c1+057a8c1712d1268a4d7f0952819c535e45c56647"
            }
          }
        ]
      },
      "scopeLogs": [
        {
          "scope": {},
          "logRecords": [
            {
              "timeUnixNano": "1757914133458352500",
              "observedTimeUnixNano": "1757914133458352500",
              "severityNumber": 17,
              "severityText": "Error",
              "body": {
                "stringValue": "Could not deserialize the list of applications from the server."
              },
              "attributes": [
                {
                  "key": "exception.type",
                  "value": {
                    "stringValue": "System.Net.Http.HttpRequestException"
                  }
                },
                {
                  "key": "exception.message",
                  "value": {
                    "stringValue": "An error occurred while sending the request."
                  }
                },
                {
                  "key": "exception.stacktrace",
                  "value": {
                    "stringValue": "System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote name could not be resolved: 'sphinx'\r\n   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)\r\n   --- End of inner exception stack trace ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Winify.Gotify.GotifyConnection.<RetrieveGotifyApplications>d__44.MoveNext() in C:\\Users\\user\\Documents\\Winify\\Winify\\Gotify\\GotifyConnection.cs:line 559"
                  }
                },
                {
                  "key": "message_template.text",
                  "value": {
                    "stringValue": "Could not deserialize the list of applications from the server."
                  }
                }
              ]
            }
          ]
        }
      ],
      "schemaUrl": "https://opentelemetry.io/schemas/1.13.0"
    }
  ]
}

The report says that there has been a crash of type System.Net.Http.HttpRequestException detected for the program Winify in the source-code file GotifyConnection.cs on line 559. Interpreting the rest of the details, it seems like Winify tried to connect to a server that is not responding, yet it should have responded, such that this error was unexpected.

This helps development a lot because now we can fix this issue in the next upcoming release without even asking anything by handling this situation better and checking whether there is a generalized issue with connecting to servers.

Information Gathered

We do not gather personal-identifying information because in our business model there is nothing we can do with this information and we do not sell this information to third-parties either. However it is possible that these reports might include temporarily-identifying information such as hostnames or IP addresses that are sent along with the report because that information is included automatically by the development framework that we use. We do not really even need this information either but sometimes the framework itself includes it and it is very difficult to filter it out.

Disabling Telemetry

Telemetry is by default on but it can be disabled for all our software by navigating to the settings and unticking the telemetry box. Furthermore, it is also possible to block all outbound telemetry to Wizardry and Steamworks by blocking all connections to the hostname:

  • telemetry.grimore.org

Typically, if an error is detected, and telemetry is enabled, the application will attempt to make an HTTP connection to https://telemetry.grimore.org in order to file the report. The hostname itself or the HTTP connection itself could be blocked by a firewall.


wiki/telemetry.txt ยท Last modified: by office

Wizardry and Steamworks

© 2025 Wizardry and Steamworks

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.