gitlabEdit

upFrom 0.1.0 Beta 3 to 0.1.0 RC

Guide for upgrading 0.1.0 Beta 3 mods to 0.1.0 RC

This page lists all the changes that have been made from 0.1.0 Beta 3 to 0.1.0 RC. For upgrading your mods from 0.0.24.x directly to the 0.1.0 series, use the main upgrade page where it highlights the most important changes.


From Beta 3 to RC

During RC's development, we have made the following breaking changes:

chevron-rightRemoved "mod part" leftovershashtag
IMod.cs
/// <summary>
/// Name of part of mod
/// </summary>
string ModPart { get; set; }

When we removed the mod management code related to mod parts, there were leftovers to that deprecated feature, and none of the mod management parts seem to be using the mod parts feature after its removal on Beta 3.

So, we've decided to ease the task on the mod developers by removing the mod part leftovers, essentially removing the ModPart variable that you have to override.

triangle-exclamation
chevron-rightChanged the root namespacehashtag
All code files
namespace KS.(...)
{
    (...)
}

The root namespace of NItrocid KS has been finally changed to Nitrocid from the abbreviation of the older name, Kernel Simulator (KS), to achieve consistency across the whole set of projects, especially Nitrocid's addons that use the newer Nitrocid namespace over the older one, KS.

As a result, all mods will break due to the change to the root namespace.

circle-info

The root namespace has been changed from KS to Nitrocid, so you need to update all your usings clause to point to the new root namespace. For example, if you're referring to KS.ConsoleBase, you need to update it to point to Nitrocid.ConsoleBase.

chevron-rightCustom splashes folder removedhashtag
PathsManagement.cs
public static string CustomSplashesPath

To accommodate the usage of the mod importance, we've removed the custom splashes folder path from the kernel paths. This is because we've added the registration and the unregistration of the custom splashes, which further simplifies the complexity of the custom splashes.

This simplification is going to be pointed out in a separate breaking change section.

circle-info

Your custom splashes are now found in the KSMods folder instead of the KSSplashes folder.

chevron-rightChanged the splashes model to (un)registration modelhashtag
// Modified
public static List<string> GetNamesOfSplashes() { }

// Removed
public static void LoadSplashes() { }
public static void UnloadSplashes() { }
public static ISplash GetSplashInstance(Assembly Assembly) { }

We've changed the splash loading form to use the registration and the unregistration model. This allows your splashes to be registered in the easiest method possible.

Furthermore, GetNamesOfSplashes() has been changed to return an array of strings containing the names of both the base and the custom splashes, making it read-only.

As a result, the removed APIs that are mentioned in the above code block have been removed to respect the changes made to the splash loading system.

circle-info

Your mod should set the importance priority (LoadPriority) to Important to be able to load the splashes early before configuration parsing takes place.

chevron-rightMandatory mod version and name propertieshashtag

Earlier, the mods can specify empty version and empty name so that they can have mod file name as the mod name. Now, we've made these properties mandatory so that they can no longer be optional.

Furthermore, we've changed the two properties to be read-only to avoid name and version manipulation.

circle-info

You need to specify a valid SemVer 2.0 compliant version for your mod and your mod name in order to get loaded.

chevron-rightMerged text tools to Textifyhashtag

This merger contains two changes: removals and migrations.

Removals

We've removed these two classes to avoid duplicate code that already exists in Textify for consistency.

Migrations

We've also minified the two above classes to their absolute minimum to only include properties and functions that are specific to Nitrocid KS.

chevron-rightWrapped classes with Terminauxhashtag

Terminaux contained changes merged with the latest development branch of Nitrocid KS 0.1.0, so we've listed the following classes that got merged with Terminaux:

In addition to the classes, we've moved the following functions:

Terminaux provides all of these functions and classes. To reduce maintenance burden associated with the duplicated code, we've removed all the duplicated code in the Nitrocid KS codebase. As a result, we've moved all its associated documentation to Terminaux to also reduce the documentation maintenance burden.

circle-info

You can no longer call these functions directly from Nitrocid KS's ConsoleBase namespace. You must make use of Terminaux's namespaces instead.

chevron-rightSeparated driver config from main kernel confighashtag

We've separated the driver configuration from the main kernel configuration so that we can separately manage the kernel drivers without having to modify the main kernel configuration. This allows such configuration to be much more portable from before.

circle-info

You need to update the references to the above properties found in KernelMainConfig to point to DriverConfig instead of MainConfig.

chevron-rightUsed double-precision floats for progress handlinghashtag

To more accurately tell whether the progress has finished or not, we're introducing the double-precision floating-point numbers to the progress handler and the manager, effectively improving the progress handling for long tasks.

circle-info

There's no longer a need to cast a progress number to the integer when reporting progress; it already makes use of the double-precision floating-point numbers now.

chevron-rightMoved MAL/MOTD parsers to Loginhashtag

Earlier, the MOTD and the MAL parsers belonged to the miscellaneous portion of the kernel. However, according to our examination, only the login handler seems to be actively using it. This means that it's more appropriate for these parsers to move to the Login namespace.

circle-info

None of the classes have their functionality changed. You can just update the usings clause to point to Nitrocid.Users.Login.Motd instead of Nitrocid.Misc.Text.Probers.Motd.

chevron-rightRemoved three addons from the known addons listhashtag

As a result of the three addons being removed at the start of the release candidate development cycle, we've decided to remove their leftovers: code files and known addons list. This is to ensure that the inter-addon communication doesn't expect any more deleted addons.

triangle-exclamation
chevron-rightCommand lists, revampedhashtag

The two properties used to host a single dictionary that contained a key for the command name and a value for the actual command information instance. Over time, we've discovered that specifying a command two times when building the shell info is redundant, so we've decided to convert the two properties to a list to make the job easier for the mod developers to assign their own command and to reduce confusion.

However, the following properties had to be modified during the change:

In addition to that, the following functions had to be modified:

As a result, the alias management had to change a bit on how it worked to adjust with this kind of change, resulting in a property in CommandInfo, called Aliases, showing up.

The reason for this revamp is that because we needed to reduce the complexity of defining commands, especially when it comes to command names, you had to write it twice: the first time on the key and the second time on the CommandInfo constructor.

circle-info

You'll have to do the following:

  • For the functions, the includeAliases argument is gone. As a result, you'll have to cut the last argument passed to it.

  • ListModCommands() now returns an array of CommandInfo instead of a dictionary.

  • You need to update your public overrides as illustrated in the below code block:

chevron-rightMoved network classes one level shallowhashtag

The network namespace needed better organization, because a lot of network-based shells were moved to their own addons. As a result, we've moved all the classes under Base one level closer to the root namespace, while the RPC and the RSS classes were moved to the Types namespace.

circle-info

This movement is done based on the fact that the network classes needed better organization. You'll have to update the following namespaces:

chevron-rightAdded file combination to Manipulationhashtag

The file combination methods from the above class were considered to be file manipulation functions, so we've moved these functions to the Manipulation class:

  • CombineTextFiles()

  • CombineBinaryFiles()

In addition to that, we've removed the Combination class as it only contained the two above functions.

circle-info

Change the references of Combination to Manipulation class when calling these functions.

Last updated