Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
46085b4
Add vscode / gitattributes settings
mulderf0x Apr 15, 2026
949e76a
cargo new
mulderf0x Apr 15, 2026
dba5daf
cargo add serde --features derive; cargo add serde_json
mulderf0x Apr 16, 2026
02a1c72
Add config modules + read title
mulderf0x Apr 20, 2026
5a57a06
Add Mode Detector
mulderf0x Apr 20, 2026
8189c7f
Add windows-sys lib + hello world
mulderf0x Apr 21, 2026
e8c7a3b
Hide terminal window (release)
mulderf0x Apr 21, 2026
98a9cc3
Allow launch/operations not set
mulderf0x Apr 21, 2026
379edca
First working UI
mulderf0x Apr 21, 2026
9ff10df
Add toolbar
mulderf0x Apr 21, 2026
f5cf4d4
Set background color
mulderf0x Apr 21, 2026
94c0e3a
add when_resolver
mulderf0x Apr 21, 2026
8799eac
use when_resolver in ui
mulderf0x Apr 21, 2026
4f7d28f
Add save management
mulderf0x Apr 28, 2026
c67db14
Load save on start + show errors on MessageBox
mulderf0x Apr 28, 2026
6730403
UI - restore selection when save loaded
mulderf0x Apr 28, 2026
619519c
Add rust native windows gui
mulderf0x Apr 28, 2026
ed58051
add addon comboBox and buttons
mulderf0x Apr 28, 2026
d0a9808
Add checkbox and radio groups
mulderf0x Apr 28, 2026
2968bd5
Apply constraints on click
mulderf0x Apr 28, 2026
08a5a1d
Uncheck when Disabled
mulderf0x Apr 28, 2026
d693f9f
Add base game in addon_combo
mulderf0x Apr 28, 2026
b1bb9a4
Apply when_constraints when combo change
mulderf0x Apr 28, 2026
6797961
Uncheck when disabled (radio)
mulderf0x Apr 28, 2026
16b3163
Enable bottom buttons only when conf complete
mulderf0x Apr 28, 2026
c328d9f
Save on click
mulderf0x Apr 28, 2026
908f0d4
Save success messagebox
mulderf0x Apr 28, 2026
5640fd0
Load save on start
mulderf0x Apr 28, 2026
eefda61
Handle (steam) -addon argument
mulderf0x Apr 29, 2026
19a0bb3
Add context
mulderf0x Apr 29, 2026
4a60313
remove useless stubs
mulderf0x Apr 29, 2026
5494a42
Center window
mulderf0x Apr 29, 2026
bbda774
hide window before center
mulderf0x Apr 29, 2026
0dc4138
Add icon
mulderf0x Apr 29, 2026
015ee3c
Add colors
mulderf0x Apr 29, 2026
91eb48b
Add Mulderland Watermark
mulderf0x Apr 29, 2026
634c7c5
Split UI code
mulderf0x Apr 29, 2026
66f93fa
move error to ui/
mulderf0x Apr 29, 2026
9a44176
Apply
mulderf0x Apr 29, 2026
9ab36a7
Show errors on apply
mulderf0x Apr 29, 2026
1f120a2
Fix separator right alignment
mulderf0x Apr 30, 2026
7cedfbc
Port missing tests from C#
mulderf0x Apr 30, 2026
ad00aa8
Add constraints cascading
mulderf0x Apr 30, 2026
ef2295f
add regex-lite for str replacement + keep EOL format
mulderf0x Apr 30, 2026
d5e9897
Fix apply should apply selection even without saving first
mulderf0x Apr 30, 2026
a81c426
Mode Detector - better + add tests
mulderf0x Apr 30, 2026
7c6b8ee
Remove hardcode of MulderConfig.exe for hardlink creation
mulderf0x Apr 30, 2026
b861415
Config - prevent duplicate names (like in C#) + add tests
mulderf0x Apr 30, 2026
140c120
Have stable save order (same order as in config)
mulderf0x Apr 30, 2026
ebd8fa5
ExeReplacer - delete before rename
mulderf0x Apr 30, 2026
f70972c
ExeReplacer - add tests
mulderf0x Apr 30, 2026
2303a1a
FileOps - add tests + fix empty line case
mulderf0x Apr 30, 2026
d8d19a0
Launcher - add tests
mulderf0x Apr 30, 2026
e6cb991
file_ops - check same drive before move
mulderf0x May 4, 2026
8230077
fix(file_ops): preserve trailing-newline state in filter_lines_in_file
mulderf0x May 4, 2026
8533bb8
fix(file_ops): create dest directory if not exists
mulderf0x May 4, 2026
f4f0738
test(file_ops): document replace_line multi-line and CRLF behaviour
mulderf0x May 4, 2026
ec44bf4
Keep WhenGroup order as defined in Json
mulderf0x May 4, 2026
123dda2
Make save works with unmatching case
mulderf0x May 5, 2026
d7e25e3
resolve_path in exec too
mulderf0x May 5, 2026
5a267ba
validator - allow emply replacement in replaceText
mulderf0x May 5, 2026
c1f945e
Keep game/addons order in save Json
mulderf0x May 5, 2026
8e623ba
ui - release GDI font handles on drop
mulderf0x May 5, 2026
04675a5
cargo clippy (fix warning)
mulderf0x May 5, 2026
f4a489f
Show warning when unknown Steam Addon ID
mulderf0x May 5, 2026
ca858be
Make version number settable with env var
mulderf0x May 5, 2026
f0441ea
cargo fmt
mulderf0x May 5, 2026
1822529
exe_replacer - check if old MulderConfig and overwrite it
mulderf0x May 6, 2026
ca9c618
read json files near exe instead of workdir
mulderf0x May 6, 2026
3198b82
fix args with space
mulderf0x May 6, 2026
b7fc086
fix codestyle + change default version
mulderf0x May 6, 2026
44f49d4
Update build.yaml for Rust
mulderf0x May 6, 2026
0f2af82
Add prerelease generation + cleanup
mulderf0x May 6, 2026
ac44faa
Conditional code signing
mulderf0x May 6, 2026
bdbe66b
Remove C# code
mulderf0x May 6, 2026
b50cbb9
fix release note
mulderf0x May 6, 2026
f19dc45
fix tag
mulderf0x May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
root = true

# Default for all files
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

# Markdown: preserve trailing spaces (used for line breaks)
[*.md]
trim_trailing_whitespace = false
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
65 changes: 42 additions & 23 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,35 @@ on:
push:
branches:
- main
- pre/**
pull_request: {}

jobs:
build:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
dotnet-version: 8.x
targets: x86_64-pc-windows-msvc

- name: Restore dependencies
run: dotnet restore

- name: Run unit tests
run: dotnet test .\Tests\MulderConfigTests.csproj -c Release --no-restore
- name: Run tests
run: cargo test

- name: Generate Version
id: generate_version
shell: pwsh
run: |
$base = Get-Date -Format "yy.MM"
$isPre = "${{ github.ref_name }}" -ne "main"
if ($isPre) {
$base = Get-Date -Format "yy.00"
} else {
$base = Get-Date -Format "yy.MM"
}
git fetch --tags
$tags = git tag -l "$base.*"
Write-Host "Tags: $($tags -join ', ')"
Expand All @@ -41,30 +45,45 @@ jobs:
$version = "$base.$next"
Write-Host "Generated version: $version"
echo version=$version >> $env:GITHUB_OUTPUT
echo is_pre=$($isPre.ToString().ToLower()) >> $env:GITHUB_OUTPUT

- name: Publish (framework-dependent, single file)
run: dotnet publish ./MulderConfig.csproj `
-c Release `
-r win-x64 `
--self-contained false `
-p:SelfContained=false `
-p:PublishSingleFile=true `
-p:DebugType=none `
-p:Version=${{ steps.generate_version.outputs.version }} `
-o publish
- name: Compile executable
env:
APP_VERSION: ${{ steps.generate_version.outputs.version }}
run: cargo build --release

- name: Sign executable
if: vars.ENABLE_CODE_SIGNING == 'true'
shell: pwsh
run: |
[Byte[]] $bytes = [System.Convert]::FromBase64String("${{ secrets.CERTIFICATE_BASE64 }}")
[IO.File]::WriteAllBytes("mulderload.pfx", $bytes)
Start-Process "C:/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool/signtool.exe" "sign /f mulderload.pfx /p ${{ secrets.CERTIFICATE_PASSWORD }} /t http://timestamp.digicert.com /fd sha256 publish/MulderConfig.exe" -PassThru -Wait
Start-Process "C:/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool/signtool.exe" "sign /f mulderload.pfx /p ${{ secrets.CERTIFICATE_PASSWORD }} /t http://timestamp.digicert.com /fd sha256 target/release/MulderConfig.exe" -PassThru -Wait

- name: Create Release
uses: softprops/action-gh-release@v2.3.3
uses: softprops/action-gh-release@v3
with:
files: target/release/MulderConfig.exe
generate_release_notes: true
prerelease: ${{ steps.generate_version.outputs.is_pre }}
tag_name: ${{ steps.generate_version.outputs.version }}
files: publish/MulderConfig.exe
target_commitish: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}

- name: Cleanup old pre-releases
if: steps.generate_version.outputs.is_pre == 'true'
shell: pwsh
run: |
$old = gh release list --limit 100 --json tagName,isPrerelease,createdAt |
ConvertFrom-Json |
Where-Object { $_.isPrerelease } |
Sort-Object createdAt |
Select-Object -SkipLast 10
foreach ($r in $old) {
Write-Host "Deleting old pre-release: $($r.tagName)"
gh release delete $r.tagName --cleanup-tag --yes
}
env:
GH_TOKEN: ${{ github.token }}

permissions:
contents: write
Loading
Loading