-
Notifications
You must be signed in to change notification settings - Fork 20
feat(tools): integrate ModBuilder suite for mod project management and asset building #376
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
Open
undead2146
wants to merge
76
commits into
development
Choose a base branch
from
feat/modbuilder
base: development
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
76 commits
Select commit
Hold shift + click to select a range
fd38c63
feat(tools): integrate ModBuilder suite for mod project management an…
3001afb
docs(modbuilder): update documentation structure and table of contents
8498846
feat(modbuilder): enhance UI interaction flow and resolve lifecycle w…
5dd5fcb
test(modbuilder): add ViewModel and Converter unit tests and enhance …
3f4a606
fix(modbuilder): integrate archive pipeline, synchronize cache, fix m…
337ac22
feat(modbuilder): align pipeline parity with GoModBuilder reference
57110e4
test(modbuilder): align SaveCommand test invocation with synchronous …
4e9ae05
fix(modbuilder): resolve UI command enablement, search filtering, and…
c4e9b02
test(modbuilder): align parallel benchmark threshold for CI runner vi…
94c25e8
fix(modbuilder): address all code review findings across engine, serv…
d368079
docs(modbuilder): fix StyleCop XML documentation comments for ToolOpe…
306437b
fix(modbuilder): address all Macroscope review findings and streamlin…
87924a2
fix(benchmarks): address DeepSource naming conventions and unused var…
5d36901
fix(modbuilder): resolve all 98 DeepSource review issues and fix CI p…
406cf4e
fix(review): resolve 14 DeepSource code review findings
3fef9ac
fix(review): resolve remaining DeepSource code quality findings
391b46f
fix(review): add DeepSource skipcq for framework override parameter o…
72e5e55
fix(review): add assembly suppression and inline skipcq for BundlePac…
2801897
fix(tests): resolve test execution hang, progress races, and StyleCop…
cc8360a
fix(ci): fix logger thread leaks, update xunit runner to 2.9.2, and r…
61a811e
fix(ci): remove coverlet.collector from all test projects to prevent …
827e0f1
fix(ci): lock xunit.runner.visualstudio to 2.8.2 for xunit 2.x compat…
9a76165
fix(ci): lock Microsoft.NET.Test.Sdk to 17.11.1, disable test paralle…
a50ac3c
test(benchmarks): add single-thread modbuilder performance and regres…
3e18262
docs: add handover documentation for modbuilder benchmark suite
c80852e
fix(benchmarks): use authentic generalsmodbuilder.util.GetFileHash in…
a0fc554
fix(benchmarks): remove all simulated scaling from master orchestrato…
605cf32
feat(benchmarks): add multithreaded modbuilder benchmark suite, telem…
undead2146 60269d5
feat(benchmarks): add authentic GeneralsGamePatch benchmark runner an…
cddddec
feat(benchmarks): add full GeneralsGamePatch texture and BIG packagin…
f4b7c6e
chore: save benchmark artifacts
f99095f
bench: add GeneralsGamePatch real-world benchmark runner and bitwise …
undead2146 11f5d30
bench: record exact 10-iteration benchmark telemetry across C#, Go, a…
undead2146 239e069
bench: record full project end-to-end cold build telemetry and bitwis…
undead2146 f298fea
bench: streamline macro benchmark telemetry with Go FullEnglish pack …
undead2146 394e629
bench: record exact single pack measured timings and subsystem toolin…
undead2146 ab68294
feat(modbuilder): add CrunchImageConversionService for bit-for-bit te…
undead2146 2fa986b
docs: remove obsolete planning docs, benchmark reports, and archive m…
7519f9e
test(modbuilder): read maxRegressionPercent from PerformanceBaselines…
4bc42e0
test(modbuilder): isolate per-test data directory and guard file dele…
be4ce1d
style(modbuilder): fix SA1513 formatting in PerformanceRegressionTests
23c595e
fix(modbuilder): address review comments, fix process timeouts and re…
214c223
fix(tests): resolve hanging timeouts and process leaks in test suites
48ed552
fix(tests): resolve dispatcher test hang, StyleCop casing, and build …
fb994ef
fix(tests): skip powershell pid recording when launcher exits immedia…
c23400e
fix(review): add Async suffix to test method for CS-R1073 compliance
6712fd7
feat(modbuilder): update UI and dashboard, add CSV discovery and buil…
undead2146 11466fb
fix(review): resolve DeepSource code review issues and naming convent…
undead2146 b4557b2
fix(core): remove duplicate DefaultProfileName constant
undead2146 26b9559
fix(modbuilder): format progress text using invariant culture
undead2146 c942e58
fix(modbuilder): add explicit x:DataType to view templates and dispat…
undead2146 4e3d778
fix(modbuilder): resolve update crash, center dashboard cards, align …
undead2146 6d29166
refactor(update): reduce cyclomatic complexity in FindLatestArtifactF…
undead2146 d0557d8
fix(modbuilder): resolve UI defects, file manager performance, build …
undead2146 bcbd766
refactor(modbuilder): simplify conditional flows in view models and b…
undead2146 335c816
Merge branch 'upstream/feat/modbuilder' into t3code/update-modbuilder-ui
undead2146 2bd261f
refactor(tools): align ModBuilder views, dialogs, and styles with UI …
undead2146 88fab33
fix(modbuilder): tokenize status badge backgrounds and backdrop overlay
undead2146 13d2fe2
Merge branch 'upstream/development' into t3code/update-modbuilder-ui
undead2146 de4b309
fix(modbuilder): align icon fills, abort button, and metric foregroun…
undead2146 7e95f2b
feat(modbuilder): overhaul configuration editor with master-detail la…
undead2146 719783f
fix(modbuilder): resolve SonarCloud code duplication, reliability bug…
undead2146 8b61176
fix(modbuilder): resolve SonarCloud reliability bugs, security hotspo…
undead2146 c21c48f
fix(modbuilder): initialize local variables in ImageConversionService…
b4f4c7c
Merge branch 'upstream/development' into feat/modbuilder and resolve …
undead2146 6580a6d
fix(tools): resolve ModBuilder project config paths, wildcard matchin…
undead2146 873fcc4
fix(tools): address SonarCloud/DeepSource code quality issues and upd…
undead2146 a2cecd6
refactor(modbuilder): resolve remaining SonarCloud complexity and cod…
undead2146 c184bf1
feat(modbuilder): add project deletion with confirmation, sample asse…
undead2146 386d6f5
fix(modbuilder): pass CancellationToken.None explicitly to RemoveFrom…
undead2146 9cfb129
fix(modbuilder): fix project dir resolution, delete confirmation sess…
undead2146 84a7557
fix(modbuilder): pass CancellationToken.None to FileManager.Initializ…
undead2146 c045a2f
fix(modbuilder): resolve remaining 32 SonarCloud code quality and mai…
undead2146 ff509c5
fix(modbuilder): eliminate last 6 SonarCloud code smell issues
undead2146 7fda26d
feat(modbuilder): provide end-to-end working patch bundles, auto-disc…
undead2146 22a41bb
feat(modbuilder): add GeneralsGamePatch2 community patch sample, disc…
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
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
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
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
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,57 @@ | ||
| namespace GenHub.Core.Constants; | ||
|
|
||
| /// <summary> | ||
| /// Constants for asset paths and resource URIs. | ||
| /// </summary> | ||
| public static class AssetPathConstants | ||
| { | ||
| /// <summary> | ||
| /// Legacy poster filename for China faction. | ||
| /// </summary> | ||
| public const string LegacyChinaPoster = "china-poster.png"; | ||
|
|
||
| /// <summary> | ||
| /// Current cover filename for China faction. | ||
| /// </summary> | ||
| public const string ChinaCover = "china-cover.png"; | ||
|
|
||
| /// <summary> | ||
| /// Legacy poster filename for USA faction. | ||
| /// </summary> | ||
| public const string LegacyUsaPoster = "usa-poster.png"; | ||
|
|
||
| /// <summary> | ||
| /// Current cover filename for USA faction. | ||
| /// </summary> | ||
| public const string UsaCover = "usa-cover.png"; | ||
|
|
||
| /// <summary> | ||
| /// Legacy poster filename for GLA faction. | ||
| /// </summary> | ||
| public const string LegacyGlaPoster = "gla-poster.png"; | ||
|
|
||
| /// <summary> | ||
| /// Current cover filename for GLA faction. | ||
| /// </summary> | ||
| public const string GlaCover = "gla-cover.png"; | ||
|
|
||
| /// <summary> | ||
| /// Legacy path for image assets. | ||
| /// </summary> | ||
| public const string LegacyImagesPath = "/Assets/Images/"; | ||
|
|
||
| /// <summary> | ||
| /// Current path for cover assets. | ||
| /// </summary> | ||
| public const string CoversPath = "/Assets/Covers/"; | ||
|
|
||
| /// <summary> | ||
| /// Avalonia resource URI scheme. | ||
| /// </summary> | ||
| public const string AvaresScheme = "avares://"; | ||
|
|
||
| /// <summary> | ||
| /// Base Avalonia resource URI for GenHub application. | ||
| /// </summary> | ||
| public const string AvaresGenHubBase = "avares://GenHub/"; | ||
| } |
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
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
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,156 @@ | ||
| using System.Collections.Generic; | ||
|
|
||
| namespace GenHub.Core.Constants; | ||
|
|
||
| /// <summary> | ||
| /// Constants for mod builder directory names, file names, default configurations, and pipeline stages. | ||
| /// </summary> | ||
| public static class ModBuilderConstants | ||
| { | ||
| /// <summary> | ||
| /// Default project file extension. | ||
| /// </summary> | ||
| public const string ProjectFileExtension = ".mbproj"; | ||
|
|
||
| /// <summary> | ||
| /// File pattern for project selection dialogs. | ||
| /// </summary> | ||
| public const string ProjectFilePattern = "*.mbproj"; | ||
|
|
||
| /// <summary> | ||
| /// Install manifest file name stored in target game directory. | ||
| /// </summary> | ||
| public const string InstallManifestFileName = ".modbuilder_install.json"; | ||
|
|
||
| /// <summary> | ||
| /// Backup file extension used during file installation. | ||
| /// </summary> | ||
| public const string BackupFileExtension = ".modbuilder_backup"; | ||
|
|
||
| /// <summary> | ||
| /// Default directory name for build output. | ||
| /// </summary> | ||
| public const string DefaultBuildDir = ".Build"; | ||
|
|
||
| /// <summary> | ||
| /// Default directory name for release output. | ||
| /// </summary> | ||
| public const string DefaultReleaseDir = ".Release"; | ||
|
|
||
| /// <summary> | ||
| /// Subdirectory name for raw bundle items within build directory. | ||
| /// </summary> | ||
| public const string RawBundleItemsSubdir = "raw_bundle_items"; | ||
|
|
||
| /// <summary> | ||
| /// Subdirectory name for compiled big bundles within build directory. | ||
| /// </summary> | ||
| public const string BundlesSubdir = "bundles"; | ||
|
|
||
| /// <summary> | ||
| /// Subdirectory name for bundle packs within build directory. | ||
| /// </summary> | ||
| public const string BundlePacksSubdir = "bundle_packs"; | ||
|
|
||
| /// <summary> | ||
| /// Directory name for edited game source files. | ||
| /// </summary> | ||
| public const string GameFilesEditedDir = "GameFilesEdited"; | ||
|
|
||
| /// <summary> | ||
| /// Directory name for project configuration files. | ||
| /// </summary> | ||
| public const string ConfigDir = "Configs"; | ||
|
|
||
| /// <summary> | ||
| /// File name for bundle items configuration. | ||
| /// </summary> | ||
| public const string BundleItemsConfigFileName = "ModBundleItems.json"; | ||
|
|
||
| /// <summary> | ||
| /// File name for bundle packs configuration. | ||
| /// </summary> | ||
| public const string BundlePacksConfigFileName = "ModBundlePacks.json"; | ||
|
|
||
| /// <summary> | ||
| /// Directory name for uncompressed release files. | ||
| /// </summary> | ||
| public const string ReleaseFilesDir = "ReleaseFiles"; | ||
|
|
||
| /// <summary> | ||
| /// Directory name for project resources. | ||
| /// </summary> | ||
| public const string ResourcesDir = "Resources"; | ||
|
|
||
| /// <summary> | ||
| /// Subdirectory name for file hash registry files within resources. | ||
| /// </summary> | ||
| public const string FileHashRegistrySubdir = "FileHashRegistry"; | ||
|
|
||
| /// <summary> | ||
| /// Default streaming threshold size in bytes (10MB). | ||
| /// </summary> | ||
| public const long DefaultStreamingThresholdBytes = 10 * 1024 * 1024; | ||
|
|
||
| /// <summary> | ||
| /// Name of the primary crunch tool executable. | ||
| /// </summary> | ||
| public const string CrunchExecutable = "crunch_x64.exe"; | ||
|
|
||
| /// <summary> | ||
| /// Secondary fallback name of the crunch tool executable. | ||
| /// </summary> | ||
| public const string CrunchFallbackExecutable = "crunch.exe"; | ||
|
|
||
| /// <summary> | ||
| /// DXT1 texture format identifier (no alpha). | ||
| /// </summary> | ||
| public const string Dxt1Format = "DXT1"; | ||
|
|
||
| /// <summary> | ||
| /// DXT5 texture format identifier (with alpha). | ||
| /// </summary> | ||
| public const string Dxt5Format = "DXT5"; | ||
|
|
||
| /// <summary> | ||
| /// Candidate search paths for the crunch tool executable. | ||
| /// </summary> | ||
| public static readonly IReadOnlyList<string> CrunchExecutableCandidates = | ||
| [ | ||
| @".tools\crunch_x64.exe", | ||
| @"tools\crunch_x64.exe", | ||
| @".tools\crunch.exe", | ||
| @"tools\crunch.exe", | ||
| ]; | ||
|
|
||
| /// <summary> | ||
| /// Supported texture format flags for crunch. | ||
| /// </summary> | ||
| public static readonly IReadOnlyList<string> CrunchTextureFormatFlags = | ||
| [ | ||
| "-DXT1", | ||
| "-DXT2", | ||
| "-DXT3", | ||
| "-DXT4", | ||
| "-DXT5", | ||
| "-3DC", | ||
| "-DXN", | ||
| "-DXT5A", | ||
| "-DXT5_CCxY", | ||
| "-DXT5_xGxR", | ||
| "-DXT5_xGBR", | ||
| "-DXT5_AGBR", | ||
| "-DXT1A", | ||
| "-ETC1", | ||
| "-ETC2", | ||
| "-ETC2A", | ||
| "-ETC1S", | ||
| "-ETC2AS", | ||
| "-R8G8B8", | ||
| "-L8", | ||
| "-A8", | ||
| "-A8L8", | ||
| "-A8R8G8B8" | ||
| ]; | ||
| } | ||
|
|
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
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.