All notable changes to this project will be documented in this file.
- 'locale' command.
- 'Timeout' value to ExecutionResult enum.
- Timeout to OS.RunCommand.
- Reworked OS.RunCommand.
- Renamed OperatinSystem enum to EOperatingSystem and ExecutionResult to EExecutionResult.
- PowerShell script cannot be accessed when YAT is in custom location.
- OS.RunCommand hangs on Linux.
- Extensible.ClearExtension() method.
- UpdaterWindow will not work in editor when public fields are null.
- UpdaterWindow does not work in a custom plugin location.
- String of negative length is allowed.
- The colon is a valid type.
- The HasInterface method sometimes fails to detect the interface on Type variables.
- Override of 'ToString' method for Argument & Option attributes.
- Virtual 'GenerateManual' method to ICommand interface.
- SemanticVersion class.
- Updater class.
- Check update (cu) command.
- '--yat' option to 'version' command.
- Update check on YAT startup.
- UpdaterWindow scene.
- ZipExtractor helper class.
- Automatic plugin update.
- Moved CurrentTerminal property from YAT to TerminalManager.
- Setter of CurrentTerminal in TerminalSwitcher has been made private.
- Moved DebugScreen to separate autoload.
- 'ds' command have been rewritten.
- Removed upper limit for update interval for 'ds' command.
- 'Reflection.GetEvents' now returns 'IEnumerable' instead of 'EventInfo[]'.
- 'Reflection.GetAttributes' now returns 'IEnumerable?' instead of 'T[]?'.
- 'Success', 'Failure', 'InvalidArguments', 'InvalidCommand', 'InvalidPermissions', 'InvalidState', 'NotImplemented', 'UnknownCommand', 'UnknownError', and 'Ok' methods in ICommand interface now have null as default value for 'message' argument.
- YatReady signal.
- Option and argument names consisting of an empty string are considered valid.
- 'run' argument to 'qc' command.
- 'enum' type.
- HistoryComponent.
- Reworked type system.
- Updated documentation.
- Changed indentation to spaces.
- CommandInputAttribute throws ArgumentException/ArgumentNullException when passed type definition is invalid.
- Improved terminal history.
- Minor refactoring and optimizations.
- Bugs in TryParseTypeWithRange (#285).
- Removed unused EditorTerminal.
- Support for automatic usage info generation.
- EPingStatus enum.
- PlatformNotSupportedException is now handled in Networking.Ping/GetTraceRoute.
- Networking.Ping now returns EPingStatus and a reply is returned as out parameter.
- The message displayed when threaded command execution ends now includes the command's name.
- Disabled 'watch' command.
- HasInterface incorrectly checks if interface is present.
- Registering/calling commands creates orphans when a command inherits from a Node.
- OS.RunCommand is hanging when running on Linux.
- YatEnable scene.
- YAT can be enabled when a specific CMD argument is passed to executable.
- '--interval' option to Ds command.
- It's now possible to use Quick Commands w/o GUI.
- The display of the contents of the 'list' command has been improved (#271).
- Moved Yat Enable preferences to YatEnable scene.
- Reworked Yat Enable functionality.
- Updated the documentation to reflect the latest changes.
- DebugScreen updates WaitTime every time it resets.
- EYatEnableLocation.cs.
- Closing and opening the terminal again deletes the displayed content.
- Terminal state toggle button could write to additional terminals running.
- '-e' option for 'cat' command.
- Ok to ECommandResult enum.
- Unavailable to ECommandResult enum.
- Ok method to ICommand interface.
- LastCommandResult property to BaseTerminal.
- 'lcr' command.
- Default constructor for CommandInputType record.
- 'cat' command by default uses FullWindowDisplay to display content of the file.
- 'inspect' command displays node's UID.
- 'InputColor' preference is used by YAT from now on.
- 'BackgroundColor' preference is hidden.
- Testing on Godot SDK 4.3.0-dev.5.
- Improved type-safety via better handling null values.
- Scrolling text in FullWindowDisplay did not work.
- YatWindow did not update its settings when it was opened after changes were made.
- 'TryParseCommandInputType' should not accept '( : )', '(:)' and '()' as valid input type (#266).
- 'sr' command.
- JetBrainsMono font (OFL).
- Title attribute for DebugScreenItems.
- Value None to EDebugScreenItemPosition enum.
- Setting for terminal font size & window font.
- Ignore attribute.
- Terminal now uses JetBrainsMono font.
- Timer in DebugScreen no longer works when DebugScreen does not display anything.
- Reworked the way the items in DebugScreen are stored and used.
- Reduced memory usage by around 25% when YAT is not in use, and by ~6% when using DebugScreen.
- Default font size is now 16.
- It is possible to customize:
- the font size in windows and separately in the terminal
- used font
- Commands:
- '$'
- 'tfs'
- FullWindowDisplay component (with docs) for BaseTerminal.
- '-e' option for 'man' command.
- 'yat_terminal_close_full_window_display' keybinding.
- 'Current' property for BaseTerminal.
- Moved calling methods on selected nodes to '$' command.
- Moved MethodCalled signal to BaseTerminal.
- Renamed AddingResult enum to ECommandAdditionStatus and moved it to a separate file.
- Updated docs:
- BaseTerminal
- Input
- Usage
- The following methods now return StringBuilder:
- GenerateCommandManual
- GenerateArgumentsManual
- GenerateOptionsManual
- GenerateSignalsManual
- MethodManager component.
- Description for arguments and options was missing in the manual.
- Documentation was not included in the exported project.
- Unnecessary files were included in the exported project.
- DebugScreen scene.
- EDebugScreenItemPosition enum.
- IDebugScreenItem interface.
- Added access to DebugScreen from YAT.
- GpuInfoItem for DebugScreen.
- ShrinkToFit exported variable for ContextMenu.
- Button to ContextMenu toggling preferences window.
- Commands:
- 'ds'
- 'ss'
- 'fov'
- 'inspect'
- 'crash'
- 'forcegc'
- 'version'
- Clipboard class.
- '-e' option for 'wai' command.
- Reworked components from Monitor for DebugScreen.
- ShortenPath method shortens paths in a better way and takes more parameters.
- Increased the maximum displayed path length in the terminal from 20 to 32 characters.
- Testing on Godot SDK 4.3.0-dev.4.
- Using 'AddSubmenuNodeItem' to display QuickCommands context menu on Godot 4.3, for Godot 4.2 'AddSubmenuItem' is still used.
- Monitor.
- 'Stats' command.
- Not passing any value to an option that expects a value caused an exception to be thrown.
- QuickCommands menu had a fixed size.
- InvalidCommandInputType message.
- -f option to list command.
- 'trace' alias for traceroute command.
- Keybindings class now uses array of tuples instead of a list of tuples.
- Moved TestTryParseCommandInputType to Parser class.
- The list command by default displays the list of commands stored in the cache, updating the list requires using the -f option.
- Removed left out log messages.
- Improved view command.
- The action argument for the QuickCommands command was not aligned with recent changes.
- Entering text containing the '=' character was incorrectly handled.
- Attempting to run the toggleaudio & traceroute command threw an exception.
- Options -id & -name to ToggleAudio command.
- More results to ECommandResult.
- CommandResult record.
- Static methods to ICommand that corresponds to the ECommandResult results.
- Networking helper class.
- NetworkingOptions record.
- -limit option to ping command.
- CommandInputType record.
- TryParseCommandInputType method for Text helper class.
- String type in arguments and options can have defined min and max length.
- Enums:
- ESceneChangeFailureReason
- EStringConversionResult
- Commands:
- TraceRoute
- Load
- Attributes:
- Description
- Usage
- CommandInput
- Messages:
- InvalidOption,
- ValueOutOfRange
- Renamed CommandResult to ECommandResult.
- Commands now return CommandResult record.
- The SceneAboutToChange signal in the Cs command now also gives the old path, not just the new one.
- Renamed ping command options.
- Argument & Option attributes inherit from CommandInput attribute.
- Options with null type are no longer supported.
- The way of defining the type for arguments and options has changed.
- CommandData now uses StringName instead of string for dictionaries.
- Methods StartsWith & EndsWith from Text class are now extensions of string type.
- Using default value for bool type options is no longer necessary.
- Double is no longer a valid type for options & arguments.
- Updated AUTOMATIC_INPUT_VALIDATION.md & script templates.
- FailureReason enum.
- It is possible to call the history command via itself, which can cause an endless loop.
- The set command throws an exception when there are no registered extensions.
- MethodManager class.
- YatPreferences resource.
- EInputType enum.
- Scenes:
- Preferences
- PreferencesTab
- PreferencesSection
- PreferencesManager
- InputContainer
- GetRangeFromHint method to Scene class.
- PreferencesManager hold all the preferences & is a child of YAT.
- Preferences command.
- Documentation file: YAT_ENABLE.md.
- Moved method management logic from SelectedNode to MethodManager class.
- Moved RejectionReason, MethodStatus, PrintType & YatEnableLocation enums to separate files.
- Moved CommandManager to managers folder.
- Updated documentation:
- CREATING_COMMANDS.md
- YAT.md
- Input.md
- BaseTerminal.md
- Restored YatEnable functionality.
- Changed namespaces to YAT.Scenes:
- TerminalManager
- EditorTerminal
- Monitor (& components)
- YatWindow (& components)
- GameTerminal (& components)
- BaseTerminal (& components)
- Moved commands to commands folder.
- CurrentTerminal was initialized with a null value instead of the initial terminal.
- Options, OptionsManager & SettingsWindow scene.
- YatOptions resource.
- Tooltip for selected node.
- Parser class.
- Documentation for:
- Parser
- Storage
- Scene
- NodeMethodInfo struct.
- Methods to Scene class:
- GetNodeMethods
- TryFindNodeMethodInfo
- GetNodeMethodInfo
- ValidateMethod
- CallMethod
- DisposedNode & InvalidMethod messages.
- MethodValidationResult enum.
- '-all' option to stats command.
- Renamed NumericHelper to Numeric & StorageHelper to Storage.
- Improved exception handling in TryConvert method in Numeric class.
- Refreshed example scenes.
- Testing on Godot SDK 4.3.0-dev.3.
- Slightly improved monitor theme.
- Changing node when currently selected node is invalid throws ObjectDisposedException.
- Shallow search of cn command throws NullReferenceException.
- It is possible to call methods when the terminal is locked.
- Calling methods on disposed nodes throws ObjectDisposedException.
- WindowMoved signal & IsWindowMoving property to YatWindow.
- Implemented functionality for AllowToGoOffScreen property in YatWindow.
- Documentation for:
- YatWindow
- Reflection
- Extensible
- Script Templates & C# Project Configuration sections to USAGE.md file.
- UnknownCommand result to CommandResult enum.
- HasInterface method to Reflection class.
- Moved YatOptions to the YAT.Resources namespace.
- Moved CommandData record to the YAT.Types namespace.
- Updated script templates.
- Combined AttributeHelper with Reflection class.
- Reworked Extensible class.
- Moved Extensible & LruCache class to the Classes folder and namespace.
- Reset command does not reset terminal position to the center.
- Pressing the termination key of a threaded command when no command is running makes an attempt to terminate the command.
- Documentation for classes:
- YAT
- BaseTerminal
- Input
- Output
- RegisteredCommands
- RegisteredCommands class.
- Reference to the RegisteredCommands class in YAT.
- ContextMenu to YatWindow.
- Moved adding builtin commands to the RegisteredCommands class.
- Moved CommandManager to YAT.Scenes namespace.
- Updated folder structure.
- Moved QuickCommands resource to the resources folder.
- Moved QuickCommandsContext to the GameTerminal's components.
- Moved ContextMenu & ContextSubmenu under YatWindow's folder.
- RegisteredCommands class now manages QuickCommands.
- When there are several simultaneously running threaded commands, only the last one can be terminated.
- TerminalContext.
- Generic Print method overload for BaseTerminal.
- TerminalManager class.
- Reference to the TerminalManager in YAT.
- TerminalSwitcher class to the GameTerminal.
- Reference to the TerminalSwitcher in GameTerminal class.
- Support for multiple terminals.
- Output class.
- CommandValidator to the BaseTerminal.
- Signals on TerminalSwitcher:
- TerminalAdded
- TerminalRemoved
- CurrentTerminalChanged
- TerminalSwitcherInitialized
- The terminal locking mechanism has been moved from CommandManager to BaseTerminal.
- CancellationToken in CommandData is no longer nullable.
- YatEnabled variable in YAT class is public.
- Moved TerminalOpened & TerminalClosed signals from YAT to TerminalManager.
- The ability to add commands has been moved from YAT to CommandManager.
- AddCommand supports an array of commands.
- Renamed BaseTerminal to CurrentTerminal in GameTerminal.
- Moved logic from Log class to the Output class used in BaseTerminal.
- Options manager is now component of YAT.
- YatOptions resource is now in the 'resources' folder.
- Yat options & OptionsChanged signal have been moved to the OptionsManager class.
- Options are disabled until the entire system is rewritten from scratch.
- YAT no longer stores instances of commands, only their type, and creates objects dynamically when needed.
- Threaded commands could not be cancelled.
- The 'sys' command treats the '-program' option as an argument.
- The 'stats' command treats options as an arguments.
- Print method overload for BaseTerminal accepting StringBuilder.
- Reference to the BaseTerminal in YAT.
- Log class (use BaseTerminal.Output instead).
- CommandHelper class.
- Ability for YatWindows to set default window position.
- PositionResetRequested & SizeResetRequested signal for BaseTerminal.
- OS helper.
- HasAttribute method to AttributeHelper.
- Audio to the example scene "Into the Maelstrom" by glaciære licensed under CC-BY.
- Commands:
- Reset
- Sys
- Timescale
- Toggle audio
- The man command displays information when the command being checked is threaded.
- Renamed CommandArguments to CommandData.
- Separated converted arguments & options in CommandData.
- Renamed Arguments to RawData in CommandData record.
- LogHelper class (use Log instead).
- CommandName variable from CommandData.
- New logging mechanism.
- Messages class.
- yat_terminal_autocompletion_previous input action.
- Ability to display previous suggestion from autocompletion.
- InputInfo scene with CommandInfo component.
- Overloads for StartsWith & EndsWith methods accepting string.
- SearchNode method for World helper.
- Cn command now can search node tree for a node using '?'/'??' prefix.
- Wenv command.
- The content of some messages has been changed.
- Renamed action yat_terminal_autocompletion to yat_terminal_autocompletion_next.
- The creation of default keybindings has been rewritten.
- Separated command info from autocompletion.
- Renamed action yat_toggle to yat_terminal_toggle.
- Action names are stored as static variables of the Keybindings class.
- Quit command now have the ability to close the terminal via -t option.
- Updated Godot .NET SDK to version 4.3.0-dev.2.
- Updated script templates.
- LogHelper.
- Scene helper class with PrintChildren & GetFromPathOrDefault methods.
- Print method overload to Terminal accepting StringBuilder.
- BaseTerminal scene.
- CloseRequested & TitleChangeRequested signals to the BaseTerminal.
- CommandArguments record.
- Simplified logic of ls command.
- Renamed TextHelper class to Text.
- Terminal renamed to GameTerminal.
- Terminal history is managed by BaseTerminal instead of YAT.
- Documentation for terminal & command creation updated.
- UIDs are used instead of paths to scenes.
- Refactored view command.
- Command and extension creation has been completely revamped.
- Builtin commands have been adjusted to the new system.
- REGULAR_COMMANDS.md.
- THREADED_COMMANDS.md.
- ShortenPath method to the TextHelper class.
- Godot .NET SDK version to 4.3.0-dev.1.
- Logged messages from ls command are more descriptive.
- Cn command logs error when path is invalid.
- CurrentNode variable renamed to Current in SelectedNode scene.
- Cn command now can switch current node to the one at which the camera is looking at.
- Path to the currently selected node displayed in the terminal is limited to 20 characters.
- "Options"/"Arguments" headers were displaying where a command had no options/arguments.
- Ls command used path to the SelectedNode scene instead of path to the currently selected node.
- EOL in .editorconfig to LF.
- YatWindow do not scale with the main viewport.
- Keybindings helper class.
- Automatic loading of default key bindings.
- Cs command for changing scenes.
- Reflection helper class.
- Automatic generation of documentation for signals.
- Godot .NET SDK version to 4.2.1.
- Included example folder in exported repo.
- Arguments & options with multiple values were displayed incorrectly in manuals.
- TerminalOpened & TerminalClosed signals.
- The documentation has been revamped and expanded.
- Log information when YAT enters/exits the tree.
- OverlayOpened & OverlayClosed signals.
- The terminal toggle button no longer writes to the input (it's a workaround, the input is unfortunately cleared every time the terminal is opened).
- Windows node for YAT to store currently displayed windows.
- Move method to YatWindow to move window (e.q. top left, bottom right).
- Monitor scene.
- IMonitorComponent interface.
- FPS, OS, CPU, memory, Engine, LookingAt, Scene objects components for Monitor.
- Stats command.
- Moved YatWindow under YAT.Scenes.YatWindow namespace.
- Moved Terminal under YAT.Scenes.Terminal namespace.
- Moved SettingsWindow under YAT.Scenes.SettingsWindow namespace.
- Moved CommandManager under YAT.Scenes.CommandManager namespace.
- Renamed method FileSizeToString to SizeToString.
- SizeToString supports specifying precision.
- Overlay.
- SelectedNode scene.
- UnknownMethod method for LogHelper.
- CurrentNodeChanged signal.
- CurrentNodeChangeFailed signal.
- MethodCalled signal.
- Cn command.
- Support for scene tree for Ls command.
- -s option for Whereami command for printing info about currently selected node.
- -m option for Whereami command for printing the methods of the selected node.
- SplitClean method to TextHelper.
- Ability to run methods on a selected node (experimental).
- Ls command is no longer threaded.
- Ability to set a default value for the option.
- Not passed boolean options do not have the value set to false by default.
- TryConvert method accepts fallback values.
- Moved LruCache under Yat.Helpers namespace.
- TKey & TValue in LruCache must not be null.
- Reduced chance of null values in project.
- Command information updates when autocompletion is used.
- Some places in the code use #nullable enable.
- Ping command.
- Ip command.
- Ls command.
- FileSizeToString numeric helper method.
- GetAttributes method for AttributeHelper.
- Argument attribute.
- Option attribute.
- Godot.NET.Sdk version to 4.2.0.
- All builtin commands use new Argument attribute.
- All builtin commands use new Option attribute.
- List command alias renamed to 'lc'.
- Arguments attribute.
- Options attribute.
- Cat command.
- Cowsay command.
- QuickCommands command.
- TextHelper.ConcatenateSentence method.
- yat_context_menu input event keybinding.
- Generic context menu.
- Generic context submenu.
- Context menu for terminal.
- Quick Commands for terminal.
- StartsWith & EndsWith text helper method.
- Support for sentences in options.
- Terminal documentation.
- StorageHelper class.
- Godot.NET.Sdk version to 4.2.0-rc.2.
- The terminal now distinguishes between sentences wrapped in " or ' and treats them as a whole.
- Renamed keybindings for example scenes.
- New showcase video.
- The CommandManager variable in YAT was empty, instead of storing a reference to Command Manager.
- Providing an '=' character in an option resulted in incorrect parsing of the option.
- Autocompletion scene.
- On-the-fly argument validation.
- MakeBold method for TextHelper.
- Separated logic from ValidateCommandArguments to ValidateCommandArgument method.
- Improved input sanitization.
- Existing autocompletion have been moved from Input.cs to Autocompletion.cs.
- Background color difference between prompt and input.
- Terminal is not centered by default.
- CommandManager scene.
- CommandStarted signal.
- The name of the currently running command is displayed in the title of the terminal window.
- Terminal is under using YAT.Scenes.Overlay.Components.Terminal namespace.
- YatWindow is under YAT.Scenes.Overlay.Components.YatWindow namespace.
- Overlay is under YAT.Scenes.Overlay namespace.
- Overlay folder have been moved to the scenes folder.
- YAT inherits from Node.
- CommandExecuted signal have been renamed to CommandFinished.
- Moved command execution logic from terminal to command manager.
- CommandExecuted signal, Locked and cancellation token have been moved to command manager.
- Input actions for example.
- Documentation for custom windows.
- Bumped Godot.NET.Sdk version to 4.2.0-rc.1.
- OptionWindow renamed to SettingsWindow.
- SettingsWindow inherits YatWindow.
- The appearance of the terminal differs slightly.
- Renamed custom window to YatWindow.
- Completely redesigned custom window for YAT.
- Created from scratch an example of basic plugin usage.
- Include script templates in exported ZIP file.
- CloseRequested signal (replaced by native signal).
- Automatic validation of options.
- MissingValue method to LogHelper.
- Documentation (man command) displays information about options.
- Update Godot.NET.Sdk version to 4.2.0-beta.6.
- Dictionary passed to Execute method can contain both arguments and options.
- Command whereami displays abbreviated form by default, adding -l option restores previous behavior.
- Methods that generate documentation take no arguments.
- Moved documentation on automatic input validation to a separate file.
- NumericHelper class.
- NotImplemented command result.
- Automatic argument validation.
- Arguments & options attributes for automatic validation.
- NoValidate attribute indicating that no automatic validation should be performed.
- New methods to LogHelper: Error, InvalidArgumentType.
- Execute method overload accepting converted arguments as an additional parameter.
- Man command displays command arguments.
- Built-in commands use automatic argument validation.
- Attributes, interfaces and enums have been moved to their respective folders and namespaces.
- Attributes are no longer partial, but are sealed.
- Templates have been updated.
- History command.
- yat_terminal_autocompletion keybinding.
- Autocompletion system.
- Size property to LRU cache.
- Improved encapsulation.
- Moved overlay under YAT.Overlay namespace.
- Moved terminal under YAT.Overlay.Components.Terminal namespace.
- Caret sticks to the beginning of the string when scrolling through the command history & when scrolling through suggestions from autocompletion.
- InvalidArgument method to LogHelper.
- watch command.
- Terminal lock feature to prevent calling a new command during execution of a command.
- Threaded attribute for running commands on a separate thread.
- yat_terminal_interrupt keybinding.
- Overload for Execute method that takes a CancellationToken.
- Terminal's Print method uses CallDeferred to display messages in the output.
- Execute method is now virtual.
- Renamed keybindings:
- yat_history_next to yat_terminal_history_next
- yat_history_previous to yat_terminal_history_previous
- InvalidArguments method from LogHelper.
- Overridable GenerateCommandManual method for commands.
- Overridable GenerateExtensionManual method for extensions.
- Overridable GenerateExtensionsManual method for Extensible.
- Man uses LRU cache for manuals.
- Commands must take YAT as a property in the constructor.
- YAT reference in command Execute method.
- YAT reference in extension Execute method.
- YAT enable file.
- Support for Godot 4 (SDK 4.2.0-beta.4).
- Path to the options window.
- Text formatting.
- Terminal fetches settings on Ready.
- The print method always displays the message on a new line of the terminal.
- Only add-ons folder will be included in the exported ZIP.
- The documentation has been separated from the README.md file and is located in the docs folder.
- Println method for terminal output.
Initial release.