Upgrading to API v4.0 series

Follow the compatibility notes when upgrading your mods to API v4.0 series

As API v4.0 is still in development, the breaking changes get committed and land here. They describe what broke and what should be used instead.

From 0.1.2 to 0.2.0

This version gives your kernel a minor gorgeous makeover that brings in feature additions and spectacular improvements in all fields, including some of the cosmetic changes.

Updated Terminaux to 7.0

We've updated Terminaux to 7.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 7.0 by pressing the below button:

API v7.0Breaking changes for API v7.0

Detailed important changes

This section explains how to adapt the important changes to your mod code so that it works with 0.2.0 and higher. This highlights the most important changes that we have compiled for you.

LanguagePacks addon removed

The LanguagePacks addon has been removed due to the LocaleStation migration that happened during the Terminaux 7.0 preparation stage as part of the development plans. Terminaux 7.0 Beta 4, which has been scheduled for July 31st, 2025, has incorporated langauge tools according to the tools that LocaleStation provides.

As a result, we've decided to remove the LanguagePacks addon.

Condensed the language manager

LocaleStation has been used in the whole Nitrocid kernel. We've condensed the language manager to remove all the following features:

  • Custom languages

  • Installation and uninstallation of custom languages

  • Mod localizations

Mod localizations can be easily dealt with, but only if you've added the custom language action for your mod using the functions that LocaleStation provides.

As part of the condensation, we've also removed the following:

  • LanguageInfo.Codepage

  • LanguageInfo.Country

  • LanguageInfo.Transliterable

  • LanguageInfo.Custom

  • public LanguageInfo(string LangName, string FullLanguageName, bool Transliterable, int Codepage = 65001, string country = "")

  • public LanguageInfo(string LangName, string FullLanguageName, bool Transliterable, string[]? LanguageToken, string country = "")

Moved KernelMain to Nitrocid for the .Base migration

KernelMain.cs
public static class KernelMain

We've recently moved KernelMain from Nitrocid.Kernel to Nitrocid to satisfy the .Base migration more smoothly. This is as part of the API v4.0 version that all mods will have to use.

Argument parser code moved to Terminaux 7.0

// Nitrocid.Arguments
public abstract class ArgumentExecutor : IArgument
public class ArgumentInfo
public class ArgumentParameters
public static class ArgumentParse
public interface IArgument

// Nitrocid.Arguments.Help
public static class ArgumentHelpPrint

The argument parser code has been moved to Terminaux 7.0, because the functions that are inside are application-independent. The arguments themselves haven't been moved because they are specific to Nitrocid.

Remaining shell code moved to Terminaux 7.0

Features such as UESH scripting and process execution have been moved to Terminaux 7.0's shell implementation to match the Nitrocid one. Furthermore, this movement has resulted in us removing all relevant shell code, except the Nitrocid-specific code.

The shell documentation has been moved to Terminaux 7.0. Check it out using the link below:

Shells

Removed console driver

BaseConsoleDriver.cs
public abstract class BaseConsoleDriver : IConsoleDriver
ConsoleDriverTools.cs
public static class ConsoleDriverTools
IConsoleDriver.cs
public interface IConsoleDriver : IDriver
DriverHandler.cs
public static IConsoleDriver CurrentConsoleDriverLocal
public static IConsoleDriver CurrentConsoleDriver
DriverTypes.cs
public enum DriverTypes
{
    (...)
    Console,
    (...)
}
KernelDriverConfig.cs
public string CurrentConsoleDriver

The console driver has been removed following Terminaux's addition of the brand new console wrapper that doesn't rely on delegated actions. This was necessary to simplify the console wrapper feature in Terminaux and to have it handle the console driver's features.

Consult Terminaux's documentation on how to register and to set the console wrapper.

Moved theming system to Terminaux

Theming system
// Nitrocid.ConsoleBase.Colors
public enum KernelColorSetErrorReasons
public static class KernelColorTools
public enum KernelColorType

// Nitrocid.ConsoleBase.Themes
public enum ThemeCategory
public class ThemeInfo
public static class ThemePreviewTools
public enum ThemeSetErrorReasons
public static class ThemeTools

The theming system that Nitrocid used has been moved to Terminaux to give all other Terminaux applications advantage for using Nitrocid's features. Calls to text writers have also been changed to reflect the appropriate theme to set.

Consult Terminaux's documentation on how to use the theming system.

Theme-based writers moved to Terminaux

Text*Writers.cs
public static class TextDynamicWriters
public static class TextWriters

The text writers that use the theme color type have been moved to Terminaux, causing us to remove those two classes entirely. This is a massive change that will mandate the usage of what Terminaux implements due to the way the migration has been done. The relevant functions have been moved to their relevant places, resulting in the ListWriterColor being re-introduced.

Consult Terminaux's documentation on how to write to the console.

All Nitrocid functions moved to Nitrocid.Base

The root namespace for all Nitrocid functions has been changed from Nitrocid to Nitrocid.Base to separate the entry point from the actual product code, since the mods use the base library as a dependency 100% of the time. Also, it was considered to be best practice to distribute NuGet packages that result from building libraries and not .exe files.

We had planned to do this during very early development of the v0.0.x series, but we didn't do that because we had introduced kernel mods from .dll files very late.

Update your using clauses to point the root namespace of Nitrocid to Nitrocid.Base.

Calendar classes moved to Terminaux

// Nitrocid.Base.Kernel.Time.Calendars
public abstract class BaseCalendar : ICalendar
public static class CalendarTools
public enum CalendarTypes
public interface ICalendar

The calendar classes have been moved to Terminaux as we were working on porting the calendar cyclic writer to Terminaux to give the other console applications more features. Events and reminders, however, weren't moved due to them being Nitrocid-specific.

Those classes might get moved again to a brand new library released later this year, which will provide more features. In case this happens, we'll update both Terminaux and Nitrocid documentations to point to that library's docs.

Last updated