Aptivi - Manual
ProjectsWebsiteBlog
Nitrocid KS - Manual
Nitrocid KS - Manual
  • Welcome!
  • Versions and Compatibility
    • Supported Versions
    • EOL Versions
    • Version Release Notes
      • v0.0.1.x series
      • v0.0.2.x series
      • v0.0.3.x series
      • v0.0.4.x series
      • v0.0.5.x series
        • v0.0.5.0 Beta Versions
      • v0.0.6.x series
        • v0.0.6.0 Beta Versions
      • v0.0.7.x series
        • v0.0.7.0 Beta Versions
      • v0.0.8.x series
      • v0.0.9.x series
      • v0.0.10.x series
      • v0.0.11.x series
      • v0.0.12.x series
      • v0.0.13.x series
      • v0.0.14.x series
      • v0.0.15.x series
      • v0.0.16.x series
      • v0.0.17.x series
      • v0.0.18.x series
      • v0.0.19.x series
      • v0.0.20.x series
      • v0.0.21.x series
      • v0.0.22.x series
      • v0.0.23.x series
      • v0.0.24.x series
      • v0.1.0.x and 0.1.1.x series
      • v0.1.2.x and v0.1.3.x series
    • Compatibility Notes for KS API Revisions
      • Upgrading to API v1.0 series
      • Upgrading to API v1.1 series
      • Upgrading to API v1.2 series
      • Upgrading to API v1.3 series
      • Upgrading to API v2.0 series
      • Upgrading to API v2.1 series
      • Upgrading to API v3.0 series
        • From 0.0.24.x to 0.1.0 Beta 1
        • From 0.1.0 Beta 1 to 0.1.0 Beta 2
        • From 0.1.0 Beta 2 to 0.1.0 Beta 3
        • From 0.1.0 Beta 3 to 0.1.0 RC
        • From 0.1.0 RC to 0.1.0 Final
      • Upgrading to API v3.1 series
  • Installation and Maintenance
    • Installing the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Upgrading the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Dependency Information
  • Fundamentals
    • What is the Kernel?
    • What is Nitrocid KS?
    • Simulated Kernel Features
      • Extra Features
        • More Networking
          • FTP Client
          • SSH Connection
          • SFTP Client
          • RSS Client
          • HTTP Client
          • Mail Client
        • Games and Amusements
          • Hangman
          • BackRace
          • Meteor
          • Pong
          • Russian Roulette
          • ShipDuet
          • Snaker
          • Solver
          • SpeedPress
          • Wordle
        • More Editors
          • JSON Editor
          • SQL Editor
        • Common Programs
          • Archive
          • Caffeine
          • Calendar
          • Calculator
          • Contacts
          • Dictionary
          • Git Shell
          • Notes
          • Stocks
          • Timers
          • To-do List
          • Unit Converter
          • Weather
        • Docking
        • Language Studio
        • Theme Studio
      • Accounts
        • Groups
        • Permissions
      • Editors
        • Text Editor
        • Hex Editor
      • Shells
        • Commands List
        • Addon Commands List
      • Files and Folders
        • Hashing and Encryption
      • The Nitrocid Homepage
      • Networking
      • Localization
      • Screensavers
      • Lockscreen Widgets
      • Audio Cues
  • Advanced and Power Users
    • Building the Kernel
      • Building on Windows
      • Building on macOS
      • Building on Linux
      • Building on Android
    • Kernel Modifications
      • Building your Mod
      • Analyzing your Mod
        • Text - NKS0001
        • ConsoleBase - NKS0002
        • ConsoleBase - NKS0003
        • ConsoleBase - NKS0004
        • ConsoleBase - NKS0005
        • ConsoleBase - NKS0006
        • ConsoleBase - NKS0007
        • ConsoleBase - NKS0008
        • ConsoleBase - NKS0009
        • Files - NKS0010
        • Files - NKS0011
        • Files - NKS0012
        • Files - NKS0013
        • Files - NKS0014
        • Files - NKS0015
        • Files - NKS0016
        • Files - NKS0017
        • Files - NKS0018
        • Files - NKS0019
        • Files - NKS0020
        • Files - NKS0021
        • Files - NKS0022
        • Files - NKS0023
        • Kernel - NKS0024
        • Kernel - NKS0025
        • Kernel - NKS0026
        • Kernel - NKS0027
        • Kernel - NKS0031
        • Kernel - NKS0032
        • Kernel - NKS0033
        • Kernel - NKS0037
        • Kernel - NKS0038
        • Kernel - NKS0039
        • Kernel - NKS0040
        • Kernel - NKS0041
        • Kernel - NKS0042
        • Kernel - NKS0043
        • Kernel - NKS0052
        • Kernel - NKS0053
        • Languages - NKS0044
        • Languages - NKS0045
        • Languages - NKS0046
        • Network - NKS0051
        • Text - NKS0047
        • Text - NKS0048
        • Text - NKS0049
        • Text - NKS0050
        • Text - NKS0054
        • Text - NKS0055
      • Managing your Mod
        • Inter-Mod Communication
        • Inter-Addon Communication
    • Diagnostics
      • Debugging
        • Local Debugging
        • Remote Debugging
      • Testing
      • Other Diagnostics
    • Bootloader
      • Boot Choices
      • Kernel Environments
      • Custom Boot Styles
    • Inner Workings
      • Kernel Settings
        • Mechanics of Settings App
        • Settings Format
        • Custom Settings
      • Shell Structure
        • Help System
        • Command Parsing
        • Command Information
        • Command Switches
        • Shell History
        • Shell Scripting
        • Shell Presets
        • Extra Shell Features
      • Multilingual Kernel
        • Locale Tools
        • Custom Languages
      • Inner Essentials
        • Kernel Drivers
          • Console Drivers
          • Debug Logger Drivers
          • Encoding Drivers
          • Encryption Drivers
          • Filesystem Drivers
          • Hardware Prober Drivers
          • Input Drivers
          • Network Drivers
          • RNG Drivers
          • Regular Expression Drivers
          • Sorting Drivers
        • Kernel Placeholders
        • The Permissions
        • The Users
        • Kernel Threads
        • Kernel Arguments
        • Kernel Journaling
        • Remote Procedure
        • Nitrocid Filesystem
        • Screensaver Internals
        • Splash Internals
        • Kernel Platform
        • Theme Internals
        • Color Internals
        • Privacy Consents
        • System Notifications
        • MAL and MOTD
        • Progress Handlers
        • Assembly Signing
        • Assembly Reflection
        • Random Number Generation
        • Network Tools
        • Date and Time
        • Mod Manual Pages
      • Miscellaneous APIs
  • Project Dependencies
  • Report an issue
  • Source code
  • API Reference
Powered by GitBook
On this page
  • From 0.0.23 to 0.0.24
  • Removed support for ICustomSaver
  • Removed support for PerformCmd()
  • Restructured the filesystem API
  • Separated ConsoleColors enumeration
  • Removed KS.Misc.Dictionary to substitute with Dictify
  • Moved APIs to their own namespace
  • Removed the progress and its report positions from SplashInfo
  • Replaced CommandPromptWrite()
  • Organized the ShellBase namespaces
  • Changed progress bar writer module name
Edit on GitHub
  1. Versions and Compatibility
  2. Compatibility Notes for KS API Revisions

Upgrading to API v2.1 series

Follow the compatibility notes when upgrading your mods to API v2.1 series

Last updated 7 months ago

When upgrading your modification from the target of the later version of Nitrocid KS that declares itself to be from the API v2.1, you must make necessary changes to be able to use your mod in a Nitrocid KS version which you use to test your mod.

The following changes were listed sequentially as development went on.

From 0.0.23 to 0.0.24

This version was released to make groundbreaking additions and improvements.

Removed support for ICustomSaver

ICustomSaver.vb
<Obsolete("This custom screensaver interface is obsolete. Use IScreensaver and BaseScreensaver instead.")>
Public Interface ICustomSaver
CustomSaverCompiler.vb
Public Sub CompileCustom(file As String)

Custom screensavers used to implement the ICustomSaver interface to implement the screensaver logic. Now, it has been removed in favor of the new screensaver class implementing the newer IScreensaver interface, BaseScreensaver.

This breaks all the existing screensavers that still use the old ICustomSaver interface. This has also resulted in the removal of the Custom() function and reimplementation as ParseCustomSaver.

All new screensavers should use the BaseScreensaver class. All existing screensavers should migrate from ICustomSaver to BaseScreensaver.

As for the parser, it has been reimplemented to take only the screensaver DLL files.

Removed support for PerformCmd()

IScript.vb
Sub PerformCmd(Command As CommandInfo, Optional Args As String = "")

CommandBase.Execute() was implemented to replace the above function, so we decided to remove the function as it only supported one command at a time, and you had to make a switch case statement for each command executed.

BaseCommand.Execute() can be overridden in the below method signature:

BaseCommand.cs
public virtual void Execute(string StringArgs, string[] ListArgsOnly, string[] ListSwitchesOnly)

Restructured the filesystem API

Filesystem module was a god class, so we decided to consolidate it to their own separate files to accomodate with the upcoming changes. However, you need to use their own namespace (for example, if you want to copy a file, import KS.Files.Operations) to be able to use them.

Filesystem.vb
Public Function SetSizeParseMode(Enable As Boolean) As Boolean

We have also removed SetSizeParseMode() as it's redundant and it was there for compatibility reasons.

The base Filesystem module will stay so that path neutralization and invalid path detection routines will still be available under the same namespace in 0.0.24.0 and above.

  • Removed functions:

    • SetSizeParseMode()

  • New namespaces:

    • KS.Files.Attributes

    • KS.Files.Folders

    • KS.Files.LineEndings

    • KS.Files.Operations

    • KS.Files.PathLookup

    • KS.Files.Print

    • KS.Files.Querying

    • KS.Files.Read

Choose one of the above namespaces to select the kind of filesystem operation you're going to do. However, these namespaces were written at the time of the change commit date, so the API documentation always gets up-to-date.

Separated ConsoleColors enumeration

Color255.vb
Public Enum ConsoleColors As Integer

This enumeration used to hold all the 255 console colors and their names for easier selection. It was just separated from the Color255 module to put it directly to the KS.ConsoleBase namespace

You can still use this enumeration in the Terminaux library.

Removed KS.Misc.Dictionary to substitute with Dictify

DictionaryManager.vb
Public Function GetWordInfo(Word As String) As DictionaryWord
DictionaryWord.vb
Public Class DictionaryWord

As Dictify got released, we decided to remove these functions and use them from the library.

You can still use these functions using the Dictify library.

Moved APIs to their own namespace

We have moved the below APIs to the below namespaces as they keep getting expanded:

  • Network transfer APIs -> KS.Network.Transfer

  • Color console APIs -> KS.ConsoleBase.Themes

  • Input console APIs -> KS.ConsoleBase.Inputs

Removed the progress and its report positions from SplashInfo

SplashInfo.vb
Public ReadOnly Property ProgressWritePositionX As Integer
Public ReadOnly Property ProgressWritePositionY As Integer
Public ReadOnly Property ProgressReportWritePositionX As Integer
Public ReadOnly Property ProgressReportWritePositionY As Integer

These four progress position variables were used to indicate where the splash manager should write the progress percentage and progress report. Splashes are now responsible for these.

We advice you to assign these variables in your splash code instead of using these fields.

Replaced CommandPromptWrite()

UESHShell.vb
Public Sub CommandPromptWrite()

CommandPromptWrite() used to be the helper for UESH to write its own prompt, but it's eventually replaced by the more powerful WriteShellPrompt() to accommodate all possible cases, like custom variables, and so on.

Your shell should use the PromptPresetBase class to define your own shell prompts.

PromptPresetManager.cs
public static void WriteShellPrompt(ShellType ShellType)
public static void WriteShellPrompt(string ShellType)

Organized the ShellBase namespaces

The shell base has been divided to three types:

  • Aliases (namespace: KS.Shell.ShellBase.Aliases)

  • Commands (namespace: KS.Shell.ShellBase.Commands)

  • Shells (namespace: KS.Shell.ShellBase.Shells)

Use the above namespaces if you want to perform operations in your own custom shell.

Changed progress bar writer module name

ProgressColor.vb
Public Module ProgressColor

We didn't want to cause confusion between ProgressColor in the FancyWriters namespace and the actual ProgressColor in the ColorTools module, so we decided to extend the name of the progress bar writer module to ProgressBarColor.

To utilize the progress bar writers, you need to use the KS.Misc.Writers.FancyWriters namespace and use the ProgressBarColor class methods.

v0.0.24.x series