Masgau
Author: o | 2025-04-24
How to use MASGAU - MASGAU osdn How to install MASGAU - MASGAU osdn
MASGAU/MASGAU.NET.suo at master MASGAU/MASGAU
Skip to content Navigation Menu GitHub Copilot Write better code with AI Security Find and fix vulnerabilities Actions Automate any workflow Codespaces Instant dev environments Issues Plan and track work Code Review Manage code changes Discussions Collaborate outside of code Code Search Find more, search less Explore Learning Pathways Events & Webinars Ebooks & Whitepapers Customer Stories Partners Executive Insights GitHub Sponsors Fund open source developers The ReadME Project GitHub community articles Enterprise platform AI-powered developer platform Pricing Provide feedback Saved searches Use saved searches to filter your results more quickly //voltron/issues_fragments/issue_layout;ref_cta:Sign up;ref_loc:header logged out"}"> Sign up Notifications You must be signed in to change notification settings Fork 5 Star 22 DescriptionValue cannot be null.Parameter name: keyat System.Collections.Generic.Dictionary2.FindEntry(TKey key) at System.Collections.Generic.Dictionary2.ContainsKey(TKey key)at Collections.DictionaryList`2.Contains(K key, V value) in c:\Users\Matthew\Desktop\MASGAU\Libs\Collections\DictionaryList.cs:line 38at MASGAU.Location.Holders.DetectedFiles.Contains(DetectedFile file) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Location\Holders\DetectedFiles.cs:line 75at MASGAU.Location.Holders.DetectedFiles.AddFiles(Include save, DetectedLocationPathHolder location, Regex reg) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Location\Holders\DetectedFiles.cs:line 46at MASGAU.GameEntry.get_Saves() in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Game\GameEntry.cs:line 334at MASGAU.Backup.BackupProgramHandler.BackupProgramHandler_DoWork(Object sender, DoWorkEventArgs e) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Backup\BackupProgramHandler.cs:line 94at System.ComponentModel.DoWorkEventHandler.Invoke(Object sender, DoWorkEventArgs e)at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
MASGAU/MainWindowNew.xaml at master MASGAU/MASGAU
Finder to first check in the install folder - this is prepping for a portable versionChanged config path thinger to first check in the install folder - see aboveSwitched installer to Inno SetupChanged registry manager to be able to see 64-bit context even in 32-bit, thus removing the need for 64-bit buildsFixed being able to see the 64-bit Program Files folderA couple other things that I forgot about because my computer crashed and corrupted the changelogAdded errors for when a registry key root isn't recognized, and when a relative root isn't recognized, and when there's a space in a game nameAdded all settings to Monitor, so you don't have to fire up the main program if you don't want toAdded locks to settings manager to prevent two threads from modifying the config file simultaneouslyChanged XML definition to use location instead of rootAdded environment_variable attribute to location tags, not more of that %% stuffChanged registry attribute to registry_root and registry_keySome massive internal overhauling to accomodate the above 3 changes and generally make the whole detection process a lot cleanerFinally got everything in the same namespaceCreated portable versionAdded support for an ignore tagAdded button to e-mail reports straight from the analyzerChanged the detected games list to be tile viewFixed a bug that allowed the same file to be detected twiceAdded a comment box to the analyzerAdded support for games that use Steam's userdata folderFixed a crash when trying to restore a game with a name MASGAU doesn't knowAdded an alert when a new version of MASGAU is availableA bunch of other things that I didn't keep track of v.0.7 =v.0.7.1 - Micro-release the second=Fixed a bug that caused loaded registry hives to not unload, causing the associated users to be unable to load their profiles=v.0.7 - Alpha Seven=Rebuilt interface so that the main window can be resizedRebuilt custom archive window so it can be resizedFixed a bug that crashed MASGAU when trying to restore an archive to steam when no Steam users had been detectedAdded a status bar to replace the splashAdded file size to reports in analyzerAdded a UAC indicator to reports in analyzerMade analyzer's report window resizableReworked most of the internal cross-thread stuff. More stable, and allows me to do more with the interface.Updated Saved Games folder detection to accomodate custom locations (just for you cammkelly!)Changed all links so they open with the default web browserChanged Task to supress dialogsMASGAU/IRegistryHandler.cs at master MASGAU/MASGAU
. How to use MASGAU - MASGAU osdnMASGAU/AppMode.cs at master MASGAU/MASGAU - GitHub
Little more organizedOverhauled how mods are handled. They are now treated like regular games, and can have a root that is based on another gameReplaced all (most) path combinations with Path.Combine (Thanks EER!)Prepped GameData's GetSaves to pass the appropriate data to the updated ArchiveManagerChanged so that files are archived one at a time, rather than by folder when possibleReplaced %PROGRAMFILES% and %DRIVE% with %INSTALLLOCATION%Changed so that you can use wildcards in save pathsChanged Backend cancel button so no processes or threads need to be killedChanged folder browser to open to convenient locationsChanged so the system user selector dialog dialog doesn't appear in Single-User modeChanged restore list to use a Dictionary to store all the profile titles, so it is no longer necessary to parse the detected games listChanged so ArchiveManager makes a copy of any existing archives, then works on the originals. If canceled, the original will be deleted and replaced with the copy. v.0.2 - Second Alpha Changed detected game list to be a tree for MOD sortingAdded support for MODs that depend on detected gamesChanged the character for seperating game and username to _Added a progress bar to the detecting games splashAdded similar progress bar to backendAdded the hastilyest produced logo in historyFixed a problem where MASGAU could hang while querying task settingsFixed a problem where two threads tried to make the splash appearChanged SettingsManager so undetected games are not kept in memory (redetection now re-creates SettingsManager object)Changed Documents folder detection to use GetFolderPath (takes care of a localization problem)Added ability to specify a registry key to supply a root pathAdded new tag for game configs to specify an identifying folder or fileAdded ability to specify a start menu shortcut that points to the rootAdded indentifiers to games that might get confusedFixed a problem were an incomplete archive could crash the programAdded an icon! Woo!Fixed a problem when checking the registry key that tells MASGAU if UAC is enabledMASGAU/MASGAU.WPF/App.xaml at master MASGAU/MASGAU
Which unfortuantely means it takes longer for the interface to enableChanged game_data XML element to just gameChanged target framework to .NET 4.0Added more advanced XML validation for better error feedbackAdded an XSD for the game data XML formatShifted a while loop so that a duplicate game name does not necessarily prevent further game detectionAdded the ability to detect saves that are actually just in the root of a relative pathAdded %ALTSAVEPATHS% for saves that could be anywhereAdded %STEAMSOURCEMODS% to point to Steam/steamapps/SourceModsChanged Analyzer to convert paths to lowercase to ensure matches while scanning the registry and the s0tart menuAdjusted relative path detection so that all path names come right from the file systemChanged detected roots for a game to be stored in a Dictionary instead of an ArrayList to help prevent identical duplicatesChanged naming convention so mods have a ?then the name of the game they are moddingStopped MASGAU Monitor from being bi-polar (flashing Danger Will Robinson / Safety Will Robinson)Added a precaution to MASGAU Monitor in case duplicate save paths are passed to itChanged Path Handler so that both VirtualStore and the real Program Files will always be checked regardless of UAC status, which should help accomodate old games that may or may not be running as AdminChanged the backup detection portion of startup to use the progress bar, as this step can take a while if you have enough backupsFixed appending of root path to file name when making a custom archiveChanged custom archives to automatically have a timestamp appended to the nameChanged monitor's tooltip to always have the right pluralAdded the option to Monitor (which will be on by default) to perform a full backup on startup. This is to prevent some files from going undetected just because they were made while Monitor wasn't running.Addeed a check so Monitor will prompt for a backup path if one is not setRearranged the tabs in order of most frequently used (IMHO)Moved game data XML files to a subfolder so they won't interfere with other xml filesAdded the ability to update game definitions via auto-check or by pushing a button on the settings tabFixed a couple cross-thread callsFixed a bug when restoring a game to an %INSTALLLOCATION% path. Which pretty much means all of them. Sorry guys, my bad.Fixed a mistake that caused the "Use This" button to actually cancel a restore. I need to have my head examined.Changed 7z.exeMASGAU/app.config at master MASGAU/MASGAU - GitHub
When running in non-interactive modeThanks to a suggestion from VincentV137, MASGAU now has a save profile to back up a custom.xml file in MASGAU's install folderAdded a new system.xml for holding definitions of system dataAdded profile for backing up a user's Games for Windows account information (for Arkham)Disabled the purge command for non-windows gamesLittle theming tweaks to the interfaceChanged the detected games list to make use of check boxesAdded support for Windows 7 tasbar progress bars, courtesy of Windows 7 Progress Bars from flaunted Microsoft progress bar color guidelinesUpdated monitor so that the detected games list also functions as a checklist to disable end enable gamesFixed a bug that caused mods to lose user informationInserted a delay into the backup method to allow 7-zip time to finish working (solves can't write to file error)Changed monitor redetection to clear out all of it's arrayslists properlyChanged shortcut scanning to deal with targetless shortcutsFixed a bug that caused start menu shortcuts to produce incorrect pathsLittle things here and there that I don't remember=v.0.6 - Sixth Alpha=Fixed a bug where XP would be detected as VistaFixed a related bug that caused LocalAppData and AppData to malfunction under XPEliminated the guesswork from user folders, all user folders are now extracted from each user's hive file for utmost accuracyChanged alt paths so on startup if an alt path isn't actually present it isn't eliminated, just ignoredChanged restore process so if a folder is being created in a public location, it will have it's permissions set so everyone can write thereAdded support for new relative path %SAVEDGAMES%, which points to the user's Saved Games folder under Vista and 7Fixed a bug preventing games installed onto the root of a disc from detectingFixed 2 bugs that prevented monitor from dealing with files that only appeared momentarilyAdded a small XML file to all backups so that their associated game and creator can be identified regardless of file name (this means that you can rename the archives to whatever you want as long as it still has the .gb7 extension)Fixed a bug that prevented monitor from saving files that were at the moment still in useAdded failsafe to monitor in case 7-zip is not installedFixed a bug that causes monitor to not shut down all of it's threadsAdded ability to specify file name during custom backup creationFixed a bug that prevented restoring most gamesChanged the path handler to use SubStrMASGAU/.gitignore at master MASGAU/MASGAU - GitHub
V.1.0.6 Resolves a potential permissions issue with updated XML files in multi-user environmentsFixes a default versioning unit not showing up in settingsFixes an error caused by new "other steam library" featureFixed e-mailing errors causing a WTF exceptionRestored the "no archive data" error message, was showing a "string not found" exception in its placeResolved an issue causing some steam games to be detected twiceResolved empty game version identifiers getting written to the save archiveAdded support for a revision attribute on game versions, allowing the same game to appear multiple time (for deprecating entries)Fixed the downloading and temp steam folders being detected as usersArchives from previous revisions of a game profile will show up in the current revision's archive list, but will still use the deprecated paths for restoring v.1.0.4 Can now detect Steam games that have been installed on other drives through Steam's new feature that lets you do what I just said. v.1.0.2 Implemented custom List view to overcome the limitations of the stock oneAdded interface text to explain the restore processChanged the detect processs to, instead of throwing an exception, choosing a game when duplicates are found, and notifying the user of that choiceMade the duplicate game dialog suppressable for the duration of a refreshMade archive and game lists resizeableFixed window controls not being translateableAdded a delete archive(s) buttonFixed games dissapearing from the game list after a restoreFixed the monitor not restarting after a restoreFixed the extract process sometimes using the install folder as a temp folderFixed a problem with files not being detected when adding custom gamesReduced the number of retained logs to 25Fixed the report window saving empty report filesFixed MASGAU constantly thinking there are updatesChanged analyzer behavior sot hat it stops travelling up folders when it encounters an EXEAdded undo support to analyzer report windowChanged the load process so that if a game comes from new.xml, it's always used and the user isn't nagged.Added SteamUserData option to the add game folder drop down.Fixed a null exception when using alt save paths v.1.0 - Back to Alpha All e-mails sent via MailSystem.NET ( XML format to conform with the GameSave.Info 2.0 spec, but here are some format change highlights:Added environment_variable attribute to location_shortcut tag so that shortcuts in other locations can be specifiedAdded new append attribute to ps_code tag to allow dividing up collections that share the same ps codeAdded new type attribute to ps_code tag to. How to use MASGAU - MASGAU osdn
MASGAU/Docs/changelog.txt at master MASGAU/MASGAU
Bug fixes and suchAdded ability to create new backups after a period of time v.0.4 - Fourth Alpha Changed Playstation detection to only look on removable drivesChanged drive reads to only read drives marked as readyChanged path detection to only look on fixed and removable drivesChanged the XML format to use one large XMl file for each platformAdded a name="" attribute to the game_data tagConcatenated all the XML filesAdded platform identifier to restore itemsAdded ability to sort backup listChanged so that Frontend doesn't need to launch the backup to do anything.Added picker for when more than one restore location candidate is foundCleaned up the restore process. Thing was a mess. Probably still is.Fixed a potential bug where a user named "Global" might not be able to restore it's savesAdded monitor for automatic backupsInterface polishingAdded tooltips where I felt they would be helpfulFixed a bug where saves with a filename and path weren't getting parsed properlyFixed a bug where it would parse all the games when restoring instead of just the game in questionAdded ability to disable gamesAdded ability to create a custom archive with only selected filesLots of bug fixes and suchAdded ability to create new backups after a period of time=v.0.3 - Third Alpha=Added new button for multiple backing upAdded a second progress bar to backend that only appears when backing upAdded new class: SecurityHandlerAdded detection for if MASGAU has elevated permissions. If it doesn't, then only backs up the current user.Added backup path check to check for read and write parmissionsAdded permission check to archiver to check if the archive can be written toAdded restore check for archive read persmiisionsAdded restore check to check destination path for write privelegesAdded ability to detect Playstation 1,2,3 and Portable saves by IDAdded date check to backup process so that by default only files that have been modified more recently than the archive was created will be archivedAdded settings tab check box to override backup date checkChanged TaskHandler to use a username and password for the taskChanged so detracts happen before appendsChanged backup buttons so that if no backup folder is specified it will just ask for oneChanged detected list back to ListView for multiple selectionChanged backend to accept multiple backup commandsChanged backend so if only one argument is passed, the end will be checked for .gb7 to establish whether a restore is being doneChanged MASGAU's internal path handling to be aMASGAU/MASGAU.Common/structs.cs at master MASGAU/MASGAU
. How to use MASGAU - MASGAU osdnMASGAU - Browse /masgau at SourceForge.net
Comments
Skip to content Navigation Menu GitHub Copilot Write better code with AI Security Find and fix vulnerabilities Actions Automate any workflow Codespaces Instant dev environments Issues Plan and track work Code Review Manage code changes Discussions Collaborate outside of code Code Search Find more, search less Explore Learning Pathways Events & Webinars Ebooks & Whitepapers Customer Stories Partners Executive Insights GitHub Sponsors Fund open source developers The ReadME Project GitHub community articles Enterprise platform AI-powered developer platform Pricing Provide feedback Saved searches Use saved searches to filter your results more quickly //voltron/issues_fragments/issue_layout;ref_cta:Sign up;ref_loc:header logged out"}"> Sign up Notifications You must be signed in to change notification settings Fork 5 Star 22 DescriptionValue cannot be null.Parameter name: keyat System.Collections.Generic.Dictionary2.FindEntry(TKey key) at System.Collections.Generic.Dictionary2.ContainsKey(TKey key)at Collections.DictionaryList`2.Contains(K key, V value) in c:\Users\Matthew\Desktop\MASGAU\Libs\Collections\DictionaryList.cs:line 38at MASGAU.Location.Holders.DetectedFiles.Contains(DetectedFile file) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Location\Holders\DetectedFiles.cs:line 75at MASGAU.Location.Holders.DetectedFiles.AddFiles(Include save, DetectedLocationPathHolder location, Regex reg) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Location\Holders\DetectedFiles.cs:line 46at MASGAU.GameEntry.get_Saves() in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Game\GameEntry.cs:line 334at MASGAU.Backup.BackupProgramHandler.BackupProgramHandler_DoWork(Object sender, DoWorkEventArgs e) in c:\Users\Matthew\Desktop\MASGAU\MASGAU.Common\Backup\BackupProgramHandler.cs:line 94at System.ComponentModel.DoWorkEventHandler.Invoke(Object sender, DoWorkEventArgs e)at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
2025-03-28Finder to first check in the install folder - this is prepping for a portable versionChanged config path thinger to first check in the install folder - see aboveSwitched installer to Inno SetupChanged registry manager to be able to see 64-bit context even in 32-bit, thus removing the need for 64-bit buildsFixed being able to see the 64-bit Program Files folderA couple other things that I forgot about because my computer crashed and corrupted the changelogAdded errors for when a registry key root isn't recognized, and when a relative root isn't recognized, and when there's a space in a game nameAdded all settings to Monitor, so you don't have to fire up the main program if you don't want toAdded locks to settings manager to prevent two threads from modifying the config file simultaneouslyChanged XML definition to use location instead of rootAdded environment_variable attribute to location tags, not more of that %% stuffChanged registry attribute to registry_root and registry_keySome massive internal overhauling to accomodate the above 3 changes and generally make the whole detection process a lot cleanerFinally got everything in the same namespaceCreated portable versionAdded support for an ignore tagAdded button to e-mail reports straight from the analyzerChanged the detected games list to be tile viewFixed a bug that allowed the same file to be detected twiceAdded a comment box to the analyzerAdded support for games that use Steam's userdata folderFixed a crash when trying to restore a game with a name MASGAU doesn't knowAdded an alert when a new version of MASGAU is availableA bunch of other things that I didn't keep track of v.0.7 =v.0.7.1 - Micro-release the second=Fixed a bug that caused loaded registry hives to not unload, causing the associated users to be unable to load their profiles=v.0.7 - Alpha Seven=Rebuilt interface so that the main window can be resizedRebuilt custom archive window so it can be resizedFixed a bug that crashed MASGAU when trying to restore an archive to steam when no Steam users had been detectedAdded a status bar to replace the splashAdded file size to reports in analyzerAdded a UAC indicator to reports in analyzerMade analyzer's report window resizableReworked most of the internal cross-thread stuff. More stable, and allows me to do more with the interface.Updated Saved Games folder detection to accomodate custom locations (just for you cammkelly!)Changed all links so they open with the default web browserChanged Task to supress dialogs
2025-04-22Little more organizedOverhauled how mods are handled. They are now treated like regular games, and can have a root that is based on another gameReplaced all (most) path combinations with Path.Combine (Thanks EER!)Prepped GameData's GetSaves to pass the appropriate data to the updated ArchiveManagerChanged so that files are archived one at a time, rather than by folder when possibleReplaced %PROGRAMFILES% and %DRIVE% with %INSTALLLOCATION%Changed so that you can use wildcards in save pathsChanged Backend cancel button so no processes or threads need to be killedChanged folder browser to open to convenient locationsChanged so the system user selector dialog dialog doesn't appear in Single-User modeChanged restore list to use a Dictionary to store all the profile titles, so it is no longer necessary to parse the detected games listChanged so ArchiveManager makes a copy of any existing archives, then works on the originals. If canceled, the original will be deleted and replaced with the copy. v.0.2 - Second Alpha Changed detected game list to be a tree for MOD sortingAdded support for MODs that depend on detected gamesChanged the character for seperating game and username to _Added a progress bar to the detecting games splashAdded similar progress bar to backendAdded the hastilyest produced logo in historyFixed a problem where MASGAU could hang while querying task settingsFixed a problem where two threads tried to make the splash appearChanged SettingsManager so undetected games are not kept in memory (redetection now re-creates SettingsManager object)Changed Documents folder detection to use GetFolderPath (takes care of a localization problem)Added ability to specify a registry key to supply a root pathAdded new tag for game configs to specify an identifying folder or fileAdded ability to specify a start menu shortcut that points to the rootAdded indentifiers to games that might get confusedFixed a problem were an incomplete archive could crash the programAdded an icon! Woo!Fixed a problem when checking the registry key that tells MASGAU if UAC is enabled
2025-03-30Which unfortuantely means it takes longer for the interface to enableChanged game_data XML element to just gameChanged target framework to .NET 4.0Added more advanced XML validation for better error feedbackAdded an XSD for the game data XML formatShifted a while loop so that a duplicate game name does not necessarily prevent further game detectionAdded the ability to detect saves that are actually just in the root of a relative pathAdded %ALTSAVEPATHS% for saves that could be anywhereAdded %STEAMSOURCEMODS% to point to Steam/steamapps/SourceModsChanged Analyzer to convert paths to lowercase to ensure matches while scanning the registry and the s0tart menuAdjusted relative path detection so that all path names come right from the file systemChanged detected roots for a game to be stored in a Dictionary instead of an ArrayList to help prevent identical duplicatesChanged naming convention so mods have a ?then the name of the game they are moddingStopped MASGAU Monitor from being bi-polar (flashing Danger Will Robinson / Safety Will Robinson)Added a precaution to MASGAU Monitor in case duplicate save paths are passed to itChanged Path Handler so that both VirtualStore and the real Program Files will always be checked regardless of UAC status, which should help accomodate old games that may or may not be running as AdminChanged the backup detection portion of startup to use the progress bar, as this step can take a while if you have enough backupsFixed appending of root path to file name when making a custom archiveChanged custom archives to automatically have a timestamp appended to the nameChanged monitor's tooltip to always have the right pluralAdded the option to Monitor (which will be on by default) to perform a full backup on startup. This is to prevent some files from going undetected just because they were made while Monitor wasn't running.Addeed a check so Monitor will prompt for a backup path if one is not setRearranged the tabs in order of most frequently used (IMHO)Moved game data XML files to a subfolder so they won't interfere with other xml filesAdded the ability to update game definitions via auto-check or by pushing a button on the settings tabFixed a couple cross-thread callsFixed a bug when restoring a game to an %INSTALLLOCATION% path. Which pretty much means all of them. Sorry guys, my bad.Fixed a mistake that caused the "Use This" button to actually cancel a restore. I need to have my head examined.Changed 7z.exe
2025-04-13V.1.0.6 Resolves a potential permissions issue with updated XML files in multi-user environmentsFixes a default versioning unit not showing up in settingsFixes an error caused by new "other steam library" featureFixed e-mailing errors causing a WTF exceptionRestored the "no archive data" error message, was showing a "string not found" exception in its placeResolved an issue causing some steam games to be detected twiceResolved empty game version identifiers getting written to the save archiveAdded support for a revision attribute on game versions, allowing the same game to appear multiple time (for deprecating entries)Fixed the downloading and temp steam folders being detected as usersArchives from previous revisions of a game profile will show up in the current revision's archive list, but will still use the deprecated paths for restoring v.1.0.4 Can now detect Steam games that have been installed on other drives through Steam's new feature that lets you do what I just said. v.1.0.2 Implemented custom List view to overcome the limitations of the stock oneAdded interface text to explain the restore processChanged the detect processs to, instead of throwing an exception, choosing a game when duplicates are found, and notifying the user of that choiceMade the duplicate game dialog suppressable for the duration of a refreshMade archive and game lists resizeableFixed window controls not being translateableAdded a delete archive(s) buttonFixed games dissapearing from the game list after a restoreFixed the monitor not restarting after a restoreFixed the extract process sometimes using the install folder as a temp folderFixed a problem with files not being detected when adding custom gamesReduced the number of retained logs to 25Fixed the report window saving empty report filesFixed MASGAU constantly thinking there are updatesChanged analyzer behavior sot hat it stops travelling up folders when it encounters an EXEAdded undo support to analyzer report windowChanged the load process so that if a game comes from new.xml, it's always used and the user isn't nagged.Added SteamUserData option to the add game folder drop down.Fixed a null exception when using alt save paths v.1.0 - Back to Alpha All e-mails sent via MailSystem.NET ( XML format to conform with the GameSave.Info 2.0 spec, but here are some format change highlights:Added environment_variable attribute to location_shortcut tag so that shortcuts in other locations can be specifiedAdded new append attribute to ps_code tag to allow dividing up collections that share the same ps codeAdded new type attribute to ps_code tag to
2025-04-12