-
Notifications
You must be signed in to change notification settings - Fork 20
feat: implement ActionSet orchestration framework and GenPatcher tool integration #242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
undead2146
merged 95 commits into
community-outpost:development
from
undead2146:feat/genpatcher
Aug 30, 2026
Merged
Changes from all commits
Commits
Show all changes
95 commits
Select commit
Hold shift + click to select a range
1d93b48
feat: implement ActionSet orchestration framework and GenPatcher tool…
undead2146 46363ba
fix(actionsets): resolve DeepSource analysis findings and code review…
b61a94d
test(profiles): avoid slow powershell in test launcher when exiting i…
b5883ec
fix(actionsets): address review feedback and hardening improvements
undead2146 4eb5706
fix(actionsets): add missing namespace imports for GenArial and MyDoc…
undead2146 1b4b011
fix(registry): add explicit overloads to IRegistryService for express…
undead2146 4cf3add
fix(actionsets): resolve all DeepSource analysis and Kilo review find…
undead2146 c4fbdfa
fix(actionsets): resolve Windows build errors, StyleCop warnings, and…
undead2146 5f52d52
fix(actionsets): address review feedback, UI layout, security validat…
undead2146 0eca004
fix(actionsets): resolve DeepSource analysis findings and refactor Di…
undead2146 1d353fd
feat(ui): add red glassmorphic header, translucent rows, purple butto…
undead2146 e2bd19e
fix(actionsets): address review feedback on security validation, roll…
undead2146 47e27ea
fix(actionsets): resolve test assertions, async method naming, and st…
undead2146 6856da0
fix(actionsets): address review findings and improve security validation
undead2146 84127fe
fix(windows): align async IsAppliedAsync override signatures with Can…
undead2146 b608e38
fix(windows): resolve missing usings, member ordering, and error prop…
undead2146 0c4aa3c
fix(actionsets): improve error handling and delegate elevation checks…
undead2146 c421933
fix(review): address DeepSource static analysis findings
undead2146 ad820cc
fix(launching): poll during grace period when adopting game process a…
undead2146 2a8bde1
feat(genpatcher): enrich fix descriptions, categories and redesign in…
undead2146 8b0a36f
fix(actionsets): address code review feedback across fixes, constants…
undead2146 87e5f88
fix(viewmodels): restore 4-clause version check for game installation…
undead2146 cb87d6e
feat(actionsets): add SHA-256 verification and 7z extraction for GenT…
undead2146 b6a47c2
fix(launching): make HandleImmediateProcessExit async with Task.Delay…
undead2146 7663ebe
style(ui): center GenPatcher fix cards and refine fix descriptions
undead2146 e301e55
fix(profiles): remove duplicate _isHovering field from rebase
undead2146 4de3c34
fix(windows): add missing using GenHub.Core.Constants in StartMenuFix
undead2146 68ee2d2
style(fixes): update LAN lobby and HD icons execution details to refe…
undead2146 f3d6e33
feat(fixes): implement real HD icons package download and remove butt…
undead2146 cf6ced6
fix(actionsets): resolve deepsource static analysis findings and redu…
undead2146 b0511e2
fix(genpatcher): preserve user options, implement reversible undos, a…
undead2146 873d830
fix(actionsets): implement real reversals for registry, shortcuts, in…
undead2146 8f7c93b
docs(actionsets): clarify fix labels, addon distinctions, and downloa…
undead2146 a9a17da
feat(actionsets): implement real download and extraction for custom w…
undead2146 2f54a48
fix(actionsets): replace generic exception catches with typed catches…
undead2146 1ba7628
fix(actionsets): merge nested conditions and simplify boolean express…
undead2146 3a1f6b2
fix(review): address review feedback across actionsets, process adopt…
undead2146 ec20953
fix(deepsource): simplify nullable check and boolean expressions in r…
undead2146 929f0fd
fix(review): address Kilo feedback on integrity validation, Windows t…
undead2146 5bf2140
refactor(actionsets): decompose ExpandedLANLobbyMenu.ApplyInternalAsy…
undead2146 2656b09
fix(actionsets): propagate OperationCanceledException and return Oper…
undead2146 87d2bd4
fix(actionsets): improve error propagation, cancellation handling, an…
undead2146 ac3ccd2
fix(actionsets): add Apply All confirmation, CanExecute guards, refre…
undead2146 cffe2ac
fix(actionsets): transactional deployment rollback, individual apply …
undead2146 9749560
fix(actionsets): refine cancellation filters, backup registration ord…
undead2146 4c83c70
fix(actionsets): match real HD icon file names, guarantee finally sta…
undead2146 c4e1f0f
test(actionsets): fix ExpandedLANLobbyMenu title and BIG file asserti…
undead2146 164dd01
fix(actionsets): inject marker path for hermetic tests, format list, …
undead2146 397c5fc
test(actionsets): extract ValidateArchiveContents and add unit tests …
undead2146 b034bee
fix(actionsets): order internal ValidateArchiveContents and fix negat…
undead2146 0419ce8
style(actionsets): move static method ValidateArchiveContents before …
undead2146 14a1a54
fix(actionsets): harden undo, add ZH icon isolation, and synchronize …
undead2146 465fccc
fix(actionsets): harden rollback safety, prevent duplicate backups, a…
undead2146 3f4d836
fix(actionsets): harden undo error handling, atomic marker updates, a…
undead2146 3879257
fix(actionsets): preserve prior markers on write failure, migrate leg…
undead2146 0cde28b
fix(actionsets): order member to satisfy SA1202 and align result asse…
undead2146 721df70
refactor(actionsets): extract undo and marker helpers, streamline vie…
undead2146 396a9b3
feat(actionsets): align GenPatcher UI and tools dialog with theme tokens
undead2146 115ba35
fix(actionsets): add top headroom in card grid to prevent hover clipping
undead2146 a1ea8b8
style(actionsets): align GenPatcher UI and card controls with dynamic…
undead2146 9870424
fix(windows): resolve SonarCloud quality gate, eliminate duplication,…
undead2146 cad8d3c
fix(actionsets): resolve SonarCloud quality gate and DeepSource findings
undead2146 91c8155
fix(actionsets): resolve SonarCloud quality gate, cognitive complexit…
undead2146 6d94703
fix(actionsets): deduplicate VCRedist detection, simplify firewall ru…
undead2146 c5c1025
fix(actionsets): resolve SonarCloud quality gate issues, reduce cogni…
undead2146 0bc9407
fix(actionsets): restore TryAddPortRule, fix StyleCop member ordering…
undead2146 bac5d2f
refactor(actionsets): reduce cognitive complexity, deduplicate marker…
undead2146 1083ed3
refactor(actionsets): eliminate duplicate IsApplicableAsync overrides…
undead2146 394812b
refactor(actionsets): eliminate remaining duplicated cleanup methods …
undead2146 863bf48
refactor(actionsets): eliminate remaining duplicated overrides and ma…
undead2146 cfddf89
refactor(actionsets): modernize BasePackageDeploymentFix with primary…
undead2146 6b38165
refactor(actionsets): deduplicate archive extraction in BasePackageDe…
undead2146 e16392c
refactor(actionsets): eliminate redundant cleanup and marker helpers …
undead2146 7525ff8
refactor(actionsets): eliminate redundant cleanup in BaseVCRedistFix …
undead2146 7a45128
refactor(actionsets): consolidate netsh process execution in Firewall…
undead2146 bb66366
fix(actionsets): explicitly initialize lines array in BasePackageDepl…
undead2146 d631830
refactor(actionsets): introduce ReadMarkerLinesSafely helper to clean…
undead2146 cdd9bd1
fix(actionsets): resolve security validation, package undo backups, a…
undead2146 1a7a86b
fix(actionsets): resolve static analysis warnings, member ordering, a…
undead2146 5f88b56
fix(actionsets): guarantee transactional backup safety and add unit t…
undead2146 9d41cce
fix(actionsets): resolve UAC decline exception, simplify LINQ, and re…
undead2146 26d9697
fix(core): resolve SonarCloud LINQ loop and exception logging findings
undead2146 f6e263a
feat(core): add MaximumAddonPackageSizeBytes constant for archive bounds
undead2146 fb0fd89
fix(actionsets): track cumulative extracted bytes against aggregate b…
undead2146 e85163b
Merge branch 'development' into feat/genpatcher
undead2146 1806e0e
refactor(tests): extract helper methods for zip fixture creation to s…
undead2146 d289ee6
refactor(actionsets): simplify using declarations in BasePackageDeplo…
undead2146 e492b75
merge: resolve merge conflict with development and use sync using for…
undead2146 de72046
fix(actionsets): await OpenEntryStreamAsync in BasePackageDeploymentF…
undead2146 8ff682f
fix(actionsets): pass cancellation token to OpenEntryStreamAsync
undead2146 2cafecd
fix(actionsets): address review feedback on marker containment, rollb…
undead2146 852cda0
fix(actionsets): move legacy marker on migration and guard rollback d…
undead2146 b009ca0
refactor(actionsets): reduce cognitive complexity of RollbackDeployment
undead2146 c88c600
merge: resolve conflicts with development into feat/genpatcher
undead2146 66680f9
fix(content): preserve default manifest version in CommunityOutpostRe…
undead2146 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,396 @@ | ||
| namespace GenHub.Core.Constants; | ||
|
|
||
| using System.Collections.Generic; | ||
| using System.IO; | ||
|
|
||
| /// <summary> | ||
| /// Centralized constants for ActionSet fixes, registry keys, and file operations. | ||
| /// </summary> | ||
| public static class ActionSetConstants | ||
| { | ||
| // RegistryKeys moved to GenHub.Core.Constants.RegistryConstants.cs | ||
|
|
||
| /// <summary> | ||
| /// File names and content. | ||
| /// </summary> | ||
| public static class FileNames | ||
| { | ||
| /// <summary> | ||
| /// Gets the desktop.ini file name used for folder customization. | ||
| /// </summary> | ||
| public const string DesktopIni = "desktop.ini"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the Generals.exe file name. | ||
| /// </summary> | ||
| public const string GeneralsExe = "generals.exe"; | ||
|
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
|
||
|
|
||
| /// <summary> | ||
| /// Gets the Game.dat file name. | ||
| /// </summary> | ||
| public const string GameDat = "Game.dat"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the game.exe file name, often used for Zero Hour. | ||
| /// </summary> | ||
| public const string GameExe = "game.exe"; // Often used for ZH | ||
|
|
||
| /// <summary> | ||
| /// Gets the DXSETUP.exe file name used for DirectX runtime installer. | ||
| /// </summary> | ||
| public const string DxSetupExe = "DXSETUP.exe"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Initialization file sections and keys. | ||
| /// </summary> | ||
| public static class IniFiles | ||
| { | ||
| // Sections | ||
|
|
||
| /// <summary> | ||
| /// Gets the [.ShellClassInfo] section name for desktop.ini files. | ||
| /// </summary> | ||
| public const string ShellClassInfoSection = "[.ShellClassInfo]"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the TheSuperHackers section name for Options.ini files. | ||
| /// </summary> | ||
| public const string TheSuperHackersSection = "TheSuperHackers"; | ||
|
|
||
| // Keys | ||
|
|
||
| /// <summary> | ||
| /// Gets the ThisPCPolicy key name used to disable OneDrive sync. | ||
| /// </summary> | ||
| public const string ThisPCPolicyKey = "ThisPCPolicy"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the ThisPCPolicy value to disable OneDrive cloud sync. | ||
| /// </summary> | ||
| public const string ThisPCPolicyValue = "DisableCloudSync"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the ConfirmFileOp key name used in desktop.ini files. | ||
| /// </summary> | ||
| public const string ConfirmFileOpKey = "ConfirmFileOp"; | ||
|
|
||
| // TheSuperHackers keys | ||
|
|
||
| /// <summary> | ||
| /// Gets the ScrollEdgeZone key name for edge scrolling settings. | ||
| /// </summary> | ||
| public const string ScrollEdgeZoneKey = "ScrollEdgeZone"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the ScrollEdgeSpeed key name for edge scrolling settings. | ||
| /// </summary> | ||
| public const string ScrollEdgeSpeedKey = "ScrollEdgeSpeed"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the ScrollEdgeAcceleration key name for edge scrolling settings. | ||
| /// </summary> | ||
| public const string ScrollEdgeAccelerationKey = "ScrollEdgeAcceleration"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the ScrollFactor key name for edge scrolling settings. | ||
| /// </summary> | ||
| public const string ScrollFactorKey = "ScrollFactor"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// ActionSet category constants. | ||
| /// </summary> | ||
| public static class Categories | ||
| { | ||
| /// <summary> | ||
| /// Gets the All category filter option. | ||
| /// </summary> | ||
| public const string All = "All"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the Core & Stability category. | ||
| /// </summary> | ||
| public const string CoreAndStability = "Core & Stability"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the Compatibility category. | ||
| /// </summary> | ||
| public const string Compatibility = "Compatibility"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the Multiplayer category. | ||
| /// </summary> | ||
| public const string Multiplayer = "Multiplayer"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the Quality of Life category. | ||
| /// </summary> | ||
| public const string QualityOfLife = "Quality of Life"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Firewall rule names and protocols. | ||
| /// </summary> | ||
| public static class FirewallRules | ||
| { | ||
| /// <summary> | ||
| /// Gets the prefix used for firewall rule names for GenPatcher compatibility. | ||
| /// </summary> | ||
| public const string Prefix = "GP"; // Compatibility with GenPatcher | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for UDP port 16000. | ||
| /// </summary> | ||
| public const string PortRuleUdp16000 = "GP Open UDP Port 16000"; | ||
|
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
|
||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for UDP port 16001. | ||
| /// </summary> | ||
| public const string PortRuleUdp16001 = "GP Open UDP Port 16001"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for TCP port 16001. | ||
| /// </summary> | ||
| public const string PortRuleTcp16001 = "GP Open TCP Port 16001"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for Generals.exe. | ||
| /// </summary> | ||
| public const string GeneralsRule = "GP Command & Conquer Generals"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for Generals Game.dat. | ||
| /// </summary> | ||
| public const string GeneralsGameDatRule = "GP Command & Conquer Generals Game.dat"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for Zero Hour. | ||
| /// </summary> | ||
| public const string ZeroHourRule = "GP Command & Conquer Generals Zero Hour"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the firewall rule name for Zero Hour Game.dat. | ||
| /// </summary> | ||
| public const string ZeroHourGameDatRule = "GP Command & Conquer Generals Zero Hour Game.dat"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the UDP protocol string. | ||
| /// </summary> | ||
| public const string ProtocolUdp = "UDP"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the TCP protocol string. | ||
| /// </summary> | ||
| public const string ProtocolTcp = "TCP"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Constants for Malwarebytes detection and paths. | ||
| /// </summary> | ||
| public static class Malwarebytes | ||
| { | ||
| /// <summary> | ||
| /// Gets the registry uninstall key path for detecting Malwarebytes. | ||
| /// </summary> | ||
| public const string RegistryUninstallKey = RegistryConstants.UninstallKeyPath; | ||
|
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
|
||
|
|
||
| /// <summary> | ||
| /// Gets the DisplayName value name in the registry. | ||
| /// </summary> | ||
| public const string DisplayNameValue = RegistryConstants.DisplayNameValueName; | ||
|
|
||
| /// <summary> | ||
| /// Gets the string to check for in DisplayName to identify Malwarebytes. | ||
| /// </summary> | ||
| public const string NameContains = "Malwarebytes"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the array of executable paths for Malwarebytes applications. | ||
| /// </summary> | ||
| public static readonly IReadOnlyList<string> ExecutablePaths = | ||
| [ | ||
| Path.Combine("Malwarebytes", "Anti-Malware", "mbam.exe"), | ||
| Path.Combine("Malwarebytes", "Anti-Malware", "mbamtray.exe") | ||
| ]; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// File and directory paths used by ActionSets. | ||
| /// </summary> | ||
| public static class Paths | ||
| { | ||
| /// <summary> | ||
| /// Gets the directory name for sub-action set markers. | ||
| /// </summary> | ||
| public const string SubActionSetMarkers = "sub_markers"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the marker file name for remove read-only fix. | ||
| /// </summary> | ||
| public const string ReadOnlyFixMarker = ".gp_ro_fix"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Default serial keys used for fallback generation. | ||
| /// </summary> | ||
| public static class Serials | ||
| { | ||
| /// <summary> | ||
| /// Default placeholder serial for Generals EA App installations. | ||
| /// </summary> | ||
| public const string DefaultEAAppGeneralsSerial = "GENS1234567890ABCDEF"; | ||
|
|
||
| /// <summary> | ||
| /// Default placeholder serial for Zero Hour EA App installations. | ||
| /// </summary> | ||
| public const string DefaultEAAppZeroHourSerial = "ZH1234567890ABCDEFGH"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// UI status badge colors. | ||
| /// </summary> | ||
| public static class StatusColors | ||
| { | ||
| /// <summary>Hex color for applied state.</summary> | ||
|
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
undead2146 marked this conversation as resolved.
|
||
| public const string Applied = "#28a745"; | ||
|
|
||
| /// <summary>Hex color for unapplied state.</summary> | ||
| public const string Unapplied = "#ffc107"; | ||
|
|
||
| /// <summary>Hex color for not applicable state.</summary> | ||
| public const string NotApplicable = "#6c757d"; | ||
|
|
||
| /// <summary>Hex color for checking state.</summary> | ||
| public const string Checking = "#17a2b8"; | ||
|
|
||
| /// <summary>Hex color for error state.</summary> | ||
| public const string Error = "#dc3545"; | ||
|
|
||
| /// <summary>Hex background color for applied state badge.</summary> | ||
| public const string AppliedBackground = "#2228A745"; | ||
|
|
||
| /// <summary>Hex background color for unapplied state badge.</summary> | ||
| public const string UnappliedBackground = "#22FFC107"; | ||
|
|
||
| /// <summary>Hex background color for not applicable state badge.</summary> | ||
| public const string NotApplicableBackground = "#156c757d"; | ||
|
|
||
| /// <summary>Hex border color for applied state badge.</summary> | ||
| public const string AppliedBorder = "#4428A745"; | ||
|
|
||
| /// <summary>Hex border color for unapplied state badge.</summary> | ||
| public const string UnappliedBorder = "#44FFC107"; | ||
|
|
||
| /// <summary>Hex border color for not applicable state badge.</summary> | ||
| public const string NotApplicableBorder = "#256c757d"; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Validation constants for file operations. | ||
| /// </summary> | ||
| public static class Validation | ||
| { | ||
| /// <summary> | ||
| /// Minimum file size for VCRedist installers (1000 KB). | ||
| /// </summary> | ||
| public const long VCRedistMinSize = 1000 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Minimum file size for DirectX web setup installer (200 KB). | ||
| /// </summary> | ||
| public const long DirectXWebSetupMinSize = 200 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Minimum file size for DirectX runtime ZIP package (1 MB). | ||
| /// </summary> | ||
| public const long DirectXPackageMinSize = 1024 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Minimum file size for patch archives and installers (1 MB). | ||
| /// </summary> | ||
| public const long PatchMinSize = 1024 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Minimum file size for GenTool archive (200 KB). | ||
| /// </summary> | ||
| public const long GenToolMinSize = 200 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Minimum file size for addon packages like custom windows and high-definition icons (1 KB). | ||
| /// </summary> | ||
| public const long MinimumAddonPackageSizeBytes = 1024; | ||
|
|
||
| /// <summary> | ||
| /// Maximum file size for addon packages like custom windows and high-definition icons (200 MB). | ||
| /// </summary> | ||
| public const long MaximumAddonPackageSizeBytes = 200 * 1024 * 1024; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Security constants for digital signature and Authenticode publisher validation. | ||
| /// </summary> | ||
| public static class Security | ||
| { | ||
| /// <summary> | ||
| /// Gets the expected Microsoft Corporation Authenticode publisher string. | ||
| /// </summary> | ||
| public const string MicrosoftPublisher = "Microsoft Corporation"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the expected Electronic Arts Authenticode publisher string. | ||
| /// </summary> | ||
| public const string ElectronicArtsPublisher = "Electronic Arts"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the Generals 1.08 patch archive. | ||
| /// </summary> | ||
| public const string Generals108PatchSha256 = "265ff414850ef92e94828508f849a363c7fbe994d6994c6405e9eeaaa0f6b5c5"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the DirectX runtime ZIP archive. | ||
| /// </summary> | ||
| public const string DirectXRuntimeZipSha256 = "6fcc7cd1be32422d07f022424412d6fe3141c6ba3845b855cb6f1b18f9c3a0a7"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the GenTool archive package. | ||
| /// </summary> | ||
| public const string GenToolArchiveSha256 = "62bb0380ae14c570b6fad92b31784bec188dc22ac5ac9e11d3c524e08fa434e4"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the GenTool d3d8.dll binary. | ||
| /// </summary> | ||
| public const string GenToolD3D8DllSha256 = "be5276180d04b3de9abd20aeaf2c1f65a2b65c800233ce49d5e77f1ab42441f7"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the Expanded LAN Lobby / Custom Windows cbbs.dat package. | ||
| /// </summary> | ||
| public const string ExpandedLANLobbySha256 = "41f4c65c89bfae958d593a841b7f77aa6737cd12f810f5a3903a0a4cd6f7482d"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the pinned SHA-256 hash for the High-Definition Icons icon.dat package. | ||
| /// </summary> | ||
| public const string HDIconsSha256 = "68aedc84b0c4291dee7bdd079c551273e33cee4026ecc482ab48850cf99f7baa"; | ||
|
undead2146 marked this conversation as resolved.
|
||
| } | ||
|
|
||
| /// <summary> | ||
| /// Constants for confirmation and notification dialogs. | ||
| /// </summary> | ||
| public static class Dialogs | ||
| { | ||
| /// <summary> | ||
| /// Gets the title for the Apply All recommended fixes confirmation dialog. | ||
| /// </summary> | ||
| public const string ApplyAllConfirmationTitle = "Apply All Recommended Fixes"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the confirmation button text for the Apply All dialog. | ||
| /// </summary> | ||
| public const string ApplyAllConfirmButtonText = "Apply Fixes"; | ||
|
|
||
| /// <summary> | ||
| /// Gets the cancel button text for the Apply All dialog. | ||
| /// </summary> | ||
| public const string ApplyAllCancelButtonText = "Cancel"; | ||
| } | ||
| } | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.