Upgrading to API v3.1 series
Follow the compatibility notes when upgrading your mods to API v3.1 series
Last updated
Follow the compatibility notes when upgrading your mods to API v3.1 series
Last updated
As API v3.1 is still in development, the breaking changes get committed and land here. They describe what broke and what should be used instead.
This version gives your kernel a nice ink of paint that brings in feature additions and spectacular improvements in all fields, including some of the cosmetic changes.
We've updated Terminaux to 6.0 to bring improvements. However, this doesn't come without the cost of having to deal with the breaking changes, which, in this case, is many.
You can consult the list of breaking changes that result from upgrading to Terminaux 6.0 by pressing the below button:
This section explains how to adapt the important changes to your mod code so that it works with 0.1.2 and higher. This highlights the most important changes that we have compiled for you.
We have removed the modern debug log look introduced in the 0.1.0 series, because although it provided a more comfortable look for log reading, we've considered it as a flawed goal due to problems that may come with it, such as log timing differences.
It's advisable for you to stop using this feature.
Removed SplashDisplaysProgress
The above property has been removed, because the SplashInfo
instance already contains information about whether the splash displays progress information or not. This removal is necessary to maintain consistency.
It's advisable for you to stop using this property.
Removed ConfigCategory
This enumeration went unused as the 0.1.0 configuration has been remade with speed and serialization in mind. Therefore, it got removed as it's of no use. Also, it's limited to only specifying the categories in the main kernel configuration, none of which apply to other configurations, including the custom configuration instances that your mods may install.
A viable alternative, GetSettingsEntries()
, can be used to get the categories from all configurations.
Merged ListLanguages()
and ListLanguagesWithCountry()
functions
The above functions have been merged with the ListLanguages()
function and it got an extra boolean parameter that does exactly the same thing. The reason was that because we wanted to avoid code repetition.
If you still want to list languages with their countries in the key, you can now move to ListLanguages
, passing true
to the last optional argument.
Aptivestigate is used for debugger and crash handler
As Aptivestigate is now used to handle unhandled crashes and to facilitate the work of the debugger with the help of Serilog, which already provides the quota system, we've decided to remove the two above settings entries to improve log rotation.
As a consequence, you'll have to implement the DebugLevel
argument in your debug logger implementation like this:
In addition to that, Aptivestigate uses the following paths to log the events:
Windows: %LOCALAPPDATA%/Aptivi/Logs
Unix: ~/.config/Aptivi/Logs
This caused us to remove the Debugging
kernel path to ensure that all logs that are logged by applications using Aptivestigate are logged in one place.
Aptivestigate will continue to get updated, despite the low frequency of updates, which is expected. It will be expanded to allow you to control the logging behavior.
Screensaver properties are get-only
The two overridable properties mentioned above have been inappropriately declared to be settable, despite them being read-only informational properties. In order to maintain consistency, we've decided to remove the setter from the property so that you can override them only once. This ensures that all the information present in the screensaver instances are correct.
You should edit the overridden properties so that they don't expose the setters.
Culture management is separate from the language management
To allow users more flexibility into choosing their own culture that is recognized by the kernel, the above functions that are tagged as removed above are deleted from the public API.
There are no alternatives for this.
Removed WelcomeMessage
from the public API
This class was not meant to be used by the kernel mods in the first place, because it contained code that was utilized by the kernel startup sequence, which would be inappropriate to use once the kernel boots up. We've decided to remove this class from the API to prevent misuse.
There are no alternatives for this.
Removed fancy console writers
The above classes have been removed, because Terminaux 7.0 is planned to remove the old-school function-based writers, which were marked as obsolete thanks to the new cyclic writers. Those writers were in use by the above static classes.
In addition to that, the above functions were removed from the TextWriters
class for the same reason.
Consult the Terminaux documentation for more information on how to use the cyclic writers here.
SelectionFunctionType
changes
When using the above settings entry key, you'll need to provide the fully-qualified type name, not just a short name. This is to avoid ambiguity.
Merged filesystem operation classes
To avoid fragmentation in the filesystem tools, such as Opening
, Listing
, and Checking
, we've decided to merge such classes, except those that are not directly related to the filesystem operation, to the FilesystemTools
partial class in the Nitrocid.Files
namespace.
You'll need to update your using clause to point to Nitrocid.Files
and to update your references to such classes to point to FilesystemTools
.
CheckConfigVariables()
simplified for SMultivar
support
The above function's return value has changed to List<bool>
. Consequently, you'll no longer be able to get information about which variable is for which, because we've omitted the configuration names.
In the final version of 0.1.2, we promise to restore the original functionality, but it's going to use a tuple instead of a dictionary because of a potential of multiple settings keys, especially the SMultivar
keys, that can hold the same name in the same configuration entry.
Inter-addon and inter-mod communication updated
We've updated the inter-addon and the inter-mod communication so that you can work with the mods and the addons with more depth. See the changes here.
Added info-based reflection functions
We've added reflection functions that used the following:
MethodBase
: for method reflection
FieldInfo
: for field reflection
PropertyInfo
: for property reflection
As a consequence, we've removed the Get*General()
functions due to internal structural changes in regards to the configuration reading mechanism, as well as have changed the signature of the Get*Value()
functions so that they don't have an optional parameter, UseGeneral
, anymore.
Get*Value()
functions are already aware of the settings-related properties.
Moved Nitrocid.Modifications
to the Nitrocid.Extras.Mods
addon
This affects all the classes except the most essential ones and the inter-mod communication class. They have been moved to this addon, so even the kernel requires the usage of the inter-addon communication in order to be able to utilize mod functions.
This is done to prevent the Lite version of Nitrocid KS from being able to run any mod, provided that the necessary mod code, including the starting functions, have been moved to that addon.
You can use the inter-addon communication to be able to interact with this addon, since these classes remain public.
Nitrocid.LocaleGen.Core
removed
This NuGet package didn't expose any public API since its inception. It was originally meant to be as a plan for 0.1.0.x to consolidate all the LocaleGen projects and their siblings into one, but it seems that it was never done as of the release of the second beta of 0.1.0.
Now, we've completed the work of consolidation, removing Nitrocid.LocaleGen.Core
in the process, resulting in such NuGet package being deprecated without an alternative. Additionally, all the internal projects and LocaleGen itself have been migrated into one application that is to be included in the main Nitrocid build output, Nitrocid.Locales
.
Debug writer changed for CompilerServices attributes
The debug writer's functions have been edited to include three new arguments before the vars
parameter. However, the following types were used:
memberName
: string
[CallerMemberName
attribute]
memberLine
: int
[CallerLineNumber
attribute]
memberPath
: string
[CallerFilePath
attribute]
Additionally, the nature of params
in the last argument, along with the usage of an array of any object (as indicated by object?[]?
), causes these functions to allow you to supply infinite arguments without having to explicitly create an array.
Because of potential conflicts, we've decided to convert the vars
argument to a normal parameter with the default value of null
. This is going to break the build, as you'll have to change how you call the functions.
This also affects all the above Assert()
functions found in the DebugCheck
class.
You'll have to change how you call these functions. Don't worry; you'll just have to append the vars:
prefix and create an array just like any other array that holds your variables for text formatting. For example:
Refactored console tools
The above functions have been moved to the KernelColorTools
class. Since those functions were the only functions that were made to the public, with no properties or fields set to public, we've decided to mark the ConsoleTools
class as internal.
You can still use these functions in the KernelColorTools
class.
Automatic update downloads removed
Since we're working on improvements for Nitrocid KS to ensure that it gets updated seamlessly and only when required, we've decided to stop the automatic update downloads by removing the feature. This ensures that we can provide distraction-free user experience.
It's advisable to stop using this configuration entry.