Releases: That-One-Nerd/SrcMod
Beta 0.5.0
Welcome to the first official beta release of SrcMod! This update adds a ton of new functionality. Unfortunately, most of it still isn't in command form. That'll be in version 0.6. But addon capability works, as far as I know.
I guess I haven't discussed addons much. I've written the shell in such a way that mounting additional modules is a piece of cake. The default runner program for the shell is like less than 10 lines of actual code. Anyone who wants to mod the shell can do so as much as they like. Command tools are in the Tools
class. Make sure to add the ModuleAttribute
and CommandAttribute
attributes! Check the Wiki for more information.
But anyways, here's a summary of stuff that was added in this update:
There's a new library that goes alongside the shell now, called Valve.NET
. It's currently just a small side library, but in the future when I deem it big enough it might get its own GitHub repository. For now, it is just a subdirectory. The goal of the Valve.NET library is to add lots of support for various Valve-related things. Currently, it doesn't have much, but is does have conversion support to a format called "Valve Key Values," or VKV for short. VKV is basically an older version of JSON, since I'm pretty confident that VKV came first. But it's not primitive in any way, with capabilities very similar to JSON. I've enabled conversion from objects to a datastream (likely a FileStream
in most general cases), as well as conversion to an intermediate format called VkvNode
s, which basically can either be a single node with a single value or a tree node with a dictionary of values.
I've used that library to add support to many things that need VKV parsing to function. The first of which is detecting information about the active mod the shell is currently in. Things like search paths and the base game is now automatically detected and applied where necessary. I've also added auto detection of Steam's game installation directories, which will be used in the future to mount the current mod directly onto supported Source games. For now though, it's just automatically added to the configuration defaults.
Now, unfortunately, I have to make the shell officially Windows-only. It's just not compatible with other operating systems because I'm using systems like the Windows Registry and some Windows DLLs for use in some commands. Maybe in the future I'll add support for other operating systems again, but .NET will no longer do that on its own, so for now, it's Windows-only.
Some additional small things have changed, of course, so check the changelog for everything (that matters).
Speaking of which, here's the changelog:
Changelog
- Created a side library that manages Valve related objects.
- Created a representation of Valve Key Value objects (VKV) as a node tree.
- Added conversions to and from a VKV node tree and a dynamic object.
- Added serialization and deserialization from a VKV node tree to a datastream.
- The shell now automatically detects the active source mod based on the working directory. It looks for a
GameInfo.txt
file. - The shell now deserializes the
GameInfo.txt
file present in all source mods into mod information the shell can use. - Officially made SrcMod a Windows-only application (some systems used by SrcMod are only included on Windows devices).
- The shell now automatically detects the user's Steam install location.
- The shell now deserializes the list of Steam game install directories and adds them to the configuration defaults.
- The shell will now display directories relative to the active mod located. This is a configurable variable.
- Slightly changed the shell header.
See you in the next release!
Alpha 0.4.0
We did it! This should hopefully be is the final alpha release of SrcMod! Next up will be actual integration into the Source Engine. Progress there can be tracked on the Steam and Source Engine Integration
project.
This version squashes some bugs but is mostly focused on reworking the config system to a whole other level. The config system is entirely automated now (well, basically). Now whenever one wants to add a new variable to the config system, instead of changing every single config method to add that variable, thanks to the power of reflection, it is done entirely for you! I like the new system a lot, and hopefully you will too!
Here's the full changelog:
Changelog
- Displaying the raw config info no longer writes to an unnecessary memory stream (#53).
- The config display system is now fully automated (#54).
- Changing config variables is now fully automated (#55).
- Turned the config type into a mutable type (class).
- Marked
Tools
andLoadingBar
as public instead of internal (#61). - Better exception messages are provided when compiled in debug mode (#71).
- Detecting changes in the config system is now fully automated (#56).
Alpha 0.3.3
This update, among some bug fixes, adds a configuration system that can be modified in the shell. The commands to do so are in the config
module.
This is likely the last alpha release for SrcMod. On to beta!
Here's the full changelog:
Changelog:
- Added a configuration system (#38).
- Added a module that controls the configuration info (#49).
- Added the ability to add steam game directories that aren't automatically recognized (to do) in the config (#40).
- Made the unsafe command validator reference the preferences in the config file (#39).
- The loading bar is now in its own seperate class (#46).
- The shell will now reload its directory info after a command is finished executing (#48).
- The unsafe command validator will now reference the preferences set in the config (#51).
- You can now load additional modules to the shell with the
Shell.AddModule<T>()
,Shell.AddModule(Type)
,andShell.AddModules(Assembly)
methods (#45).
Alpha 0.3.2
This update adds some small bug fixes and some new commands: mkdir
to make new directories, mkfile
to make new files, and run
to run external processes in the shell.
Honestly this update along with 0.3.1 and likely 0.3.3 too should have been merged into one bigger update, but it is how it is. We're almost in beta I think.
Here's the full changelog:
Changelog
- Created a new command
mkdir
that is used to create new directories (#33). - Created a new command
mkfile
that is used to create new files. - Created a new command
run
that is used to run other processes.
Alpha 0.3.1
Added some noises for warnings and, more importantly, the ability to cancel commands prematurely. There currently isn't any system for disposing of resources, and that will likely be added in the future.
Here's the full changelog:
Changelog
- Added an interrupt handler for the shell by pressing the terminal cancel key (#35).
- Commands are now executed on a background worker.
- Added a new
CanCancelAttribute
attribute to determine if a command can be cancelled. - Modified
CommandInfo
to check for the newCanCancelAttribute
attribute.
Alpha 0.3.0
This update adds some more compression formats and a bunch more extraction formats. I'm using a new library, SharpCompress, for it. However, SharpCompress can extract a lot more than it can compress, so that's why some compression commands are missing.
The wiki will be updated shortly.
Here's the full changelog:
Changelog
- Added the "ExtractionModule" to help with extracting some compression formats.
- Added compression and extraction for the GZip format (#30).
- Added compression and extraction for the Tar format (#31).
- Added compression and extraction for the combined Tar-GZip formats.
- Added the ability to include a comment when compression Zip files (#27).
- Auto-generated destinations in all compression and extraction formats now work slightly better (#29).
- Compressing a directory into the Zip format now tracks how many files it could not include.
- Added extraction to the Zip format.
- Disabled the "try" block when compiling in the "Debug" configuration.
Alpha 0.2.2
This update has some shell bug fixes and the ability to add aliases to commands. The Wiki will be updated shortly.
Here's the whole changelog:
Changelog
- Allowed the
CommandAttribute
attribute to be applied to a method multiple times (#18). - Made
CommandInfo.MethodInfo(ModuleInfo, MethodInfo)
compensate for possible command aliases and return an array of commands rather than just one (#18). - Renamed the
ModuleInfo.FromModule(Type)
method toModuleInfo.FromType(Type)
(#18). - Merged the
print
andtype
commands into one method (using aliases) (#18). - Merged the
quit
andtype
commands into one method (using aliases) (#18). - Merged the
cut
andmove
commands into one method (using aliases) (#18). - The loading bar now properly closes during a startup error (#19).
- The loading bar no longer throws an error when triggered at the bottom of the console buffer (#19).
- The loading bar no longer duplicates itself when writing additional text that scrolls the screen (#19).
Alpha 0.2.0
This release has just a couple shell bug fixes and also added some clipboard systems.
The wiki will be updated shortly.
Here's the full changelog:
Changelog
- Made custom modules recognized by the shell (#2, #4).
- Added the
sleep
command (#7). - Added
print
andtype
commands (#5). - Added the
copy
command (#9). - Added
move
andcut
commands (#8). - Fixed an issue deleting directories in
permdel
. - Changed what the
srcmod
command does. - Added
clipboard
module (#15). - Moved the
compress
command its specialcompress
module (#11). - Added an unsafe method validator.
Release 0.1.0
This is the first release of SrcMod. This version has a pretty basic shell, and as it's in alpha development, no modding capabilities. You may want to check out the wiki to see a list of all commands and how they work.