Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
22e335e
Resources Replaced ...
CO2-code Sep 21, 2025
bbead93
removed unnecessary files
CO2-code Sep 21, 2025
1544dd0
Update :)
CO2-code Oct 2, 2025
af61267
Updates....
CO2-code Oct 2, 2025
e49c778
moved config. files from theme Default to Resources folder.
CO2-code Oct 2, 2025
3a662fb
DTACnCNetClient.ini must be in ThemeDefault
CO2-code Oct 2, 2025
854b0c3
updates.
CO2-code Oct 7, 2025
9f02ba3
replace Resources/ThemeDefault/LANGameLobby.ini
CO2-code Oct 9, 2025
f912a7a
Add files via upload
CO2-code Oct 9, 2025
269658e
Map preview/ binaries updated.
CO2-code Oct 9, 2025
6ede10d
Map bug fixed.
CO2-code Oct 9, 2025
dcc5387
Merge branch 'master' of https://github.com/CO2-code/cncnet-ra-client…
CO2-code Oct 9, 2025
1b3f5f3
Create LANGameLobby.ini
CO2-code Oct 9, 2025
1d18238
Delete LANGameLobby.ini
CO2-code Oct 9, 2025
7722a83
Move theme non-related ini's to the `Resources` folder
MahBoiDeveloper Oct 9, 2025
20c08c1
Fix `Got It` button position and enable border draw
MahBoiDeveloper Oct 10, 2025
b031265
Enable borders drawing
MahBoiDeveloper Oct 22, 2025
c5b0879
Update client binaries to 2.12.12 version
MahBoiDeveloper Oct 22, 2025
58494b7
ClientGameType changed to RA, added voiceicon.png and deleted client …
CO2-code Oct 22, 2025
2e7396c
Update client binaries to 2.12.13 version
MahBoiDeveloper Oct 23, 2025
9fa1dd8
Update regular and bold sprite fonts with latet CJK changes
MahBoiDeveloper Oct 23, 2025
c901a34
maps
CO2-code Oct 23, 2025
40cab79
Add files via upload
CO2-code Oct 23, 2025
884a88d
Add files via upload
CO2-code Oct 23, 2025
05309fa
Maps++
CO2-code Oct 23, 2025
5162f8a
Add files via upload
CO2-code Oct 23, 2025
5bd6c70
Update client stub to the latest version (2.0.10.0)
MahBoiDeveloper Oct 23, 2025
05ad8f1
Add files via upload
CO2-code Oct 23, 2025
86d78c9
Add files via upload
CO2-code Oct 23, 2025
936da8d
Enable start position dropdowns and refactoring `GameLobbyBase.ini`
MahBoiDeveloper Oct 24, 2025
af23b17
Add files via upload
CO2-code Oct 24, 2025
f4ab3f0
Game lobby designed/modified by Razer
CO2-code Oct 25, 2025
58c8bc2
Game lobby designed/modified by Razer
CO2-code Oct 25, 2025
fcbe554
Merge branch 'master' of https://github.com/CO2-code/cncnet-ra-client…
CO2-code Oct 25, 2025
5d7300e
Initial Port
CnCRAZER Oct 26, 2025
c0bb8f1
Add game search filter for online lobbies
CnCRAZER Oct 26, 2025
7874c49
Lobby UI Adjustments + Housekeeping
CnCRAZER Oct 26, 2025
7636a3e
Add msgboxform.png
CnCRAZER Oct 26, 2025
f9f9a18
Update ClientDefinitions.ini
CnCRAZER Oct 26, 2025
8748b2a
Update MultiplayerGameLobby.ini
CnCRAZER Oct 26, 2025
a0cd22c
Fix Borders
CnCRAZER Oct 26, 2025
ccc683c
Restructure to mimic YR repo
CnCRAZER Oct 26, 2025
14e17e9
maps
CnCRAZER Oct 26, 2025
0422c73
Update SkirmishLobby.ini
CnCRAZER Oct 26, 2025
c929216
Binaries updated , General UI fixes
CO2-code Oct 29, 2025
a68a129
Fix Background Texture
CnCRAZER Oct 29, 2025
997d8e7
Refactor to mimic YR repo structure
CnCRAZER Oct 29, 2025
25a3975
Beginning stages of mission file structure
CnCRAZER Oct 29, 2025
2c55b89
not sure , some maps..
CO2-code Oct 29, 2025
7c65eca
Start of tools folder support
CnCRAZER Oct 29, 2025
81927d3
maxname=11
CO2-code Oct 31, 2025
cfc5be9
Update ClientDefinitions.ini
CnCRAZER Nov 3, 2025
925859a
Update .gitignore
CnCRAZER Nov 3, 2025
eddfb97
Merge branch 'Local-Tests' into master
CnCRAZER Nov 4, 2025
b01f0d3
Revert "Merge branch 'Local-Tests' into master"
CnCRAZER Nov 4, 2025
6e57b5e
TEST - Add build-installer tool and CI/CD workflows
CnCRAZER Nov 4, 2025
e9c0e03
Update .gitattributes and .gitignore, add VersionWriter.exe
CnCRAZER Nov 4, 2025
f7a46b1
Add InnoDependencyInstaller library to installer tools
CnCRAZER Nov 4, 2025
8a4fc3f
Update build-installer.service.ts
CnCRAZER Nov 4, 2025
da66475
Update build-installer.service.ts
CnCRAZER Nov 4, 2025
fefb529
Enforce LF for TypeScript and simplify installer spawn
CnCRAZER Nov 4, 2025
e15c986
Update build-installer.service.ts
CnCRAZER Nov 4, 2025
c60bb12
CI: Ensure x64 Inno Setup on windows-2022 and robustly resolve ISCC.e…
CnCRAZER Nov 4, 2025
588d561
Installer: fix invalid icon by using RedAlert.exe as SetupIconFile (v…
CnCRAZER Nov 4, 2025
2cbda91
Installer: point SetupIconFile to Inno’s built-in SetupClassicIcon.ic…
CnCRAZER Nov 4, 2025
16e544b
Installer: make SetupIconFile optional; validate ICO magic and skip i…
CnCRAZER Nov 4, 2025
9c4708f
Update build-installer.service.ts
CnCRAZER Nov 4, 2025
85dbe72
Update build-installer.service.ts
CnCRAZER Nov 4, 2025
01c65dd
Add .gitmodules to pin InnoDependencyInstaller submodule (matching YR…
CnCRAZER Nov 4, 2025
b4dad93
Update cncnet5.ico
CnCRAZER Nov 4, 2025
02977f4
test
CnCRAZER Nov 4, 2025
eeb52e5
Revert "test"
CnCRAZER Nov 4, 2025
23ee2e9
test2omg
CnCRAZER Nov 4, 2025
e53d95a
Update GameLobbyBase.ini
CO2-code Nov 12, 2025
47411b2
Rename sovieticon.png to random sovietsicon.png
CO2-code Nov 12, 2025
35615ce
Rename alliedicon.png to random alliesicon.png
CO2-code Nov 12, 2025
86845db
Update GameLobbyBase.ini
CnCRAZER Nov 15, 2025
6f9c798
Random Icons
CnCRAZER Nov 15, 2025
7233d7e
Update GameOptions.ini
CO2-code Nov 15, 2025
552fa26
Update ClientDefinitions.ini
CO2-code Nov 15, 2025
f59c743
Increases maximum player name length
CnCRAZER Nov 16, 2025
d152a55
Updates game lobby UI and options
CnCRAZER Nov 16, 2025
29c6dca
Update GameLobbyBase.ini
CnCRAZER Nov 16, 2025
3312703
Update GameOptions.ini
CO2-code Nov 16, 2025
6ef3d6d
Delete package/Resources/Binaries directory
CO2-code Nov 16, 2025
80b68ce
Delete package/Resources/BinariesNET8 directory
CO2-code Nov 16, 2025
03fd756
Update to 2.12.16
CO2-code Nov 16, 2025
06cfe97
FF's maps
CO2-code Nov 17, 2025
a4d3b28
Update CnCNetLobby.ini
CO2-code Nov 18, 2025
2fd6091
Update LANLobby.ini
CO2-code Nov 18, 2025
90c8a67
latest Resources
CO2-code Jan 9, 2026
51d1dae
Merge CO2's changes to the port branch
MahBoiDeveloper Jan 27, 2026
2ad7ec4
Merge branch 'feature/port-to-xna' of https://github.com/CnCNet/cncne…
CnCRAZER Jan 28, 2026
3e274fe
Update GameOptions.ini
CnCRAZER Jan 28, 2026
998ad8f
Move maps to custom folder with .maps and update deployments
CnCRAZER Jan 28, 2026
778f371
Add update channel selection and dev updater config
CnCRAZER Jan 28, 2026
6c4c630
Add most essential game files and keyboard commands.ini (#14)
CO2-code Jan 29, 2026
e62321a
Map tools to .mpr
CnCRAZER Jan 29, 2026
cb9224d
Add Maps (#16)
CO2-code Jan 30, 2026
c210927
Configure Git LFS for MAIN.MIX
CnCRAZER Jan 30, 2026
d907441
Update DiscordAppId
CnCRAZER Jan 31, 2026
404df35
Update mpmaps-updater script
CnCRAZER Jan 31, 2026
0089b5f
Update Maps
CnCRAZER Jan 31, 2026
3a23e33
Add workflow to update client binaries (#17)
MahBoiDeveloper Feb 10, 2026
1c72257
start of mix packer
CnCRAZER Feb 12, 2026
f42bd3f
main.mix cleanup
CnCRAZER Feb 12, 2026
c0733a4
Track and remove intermediate .mix files
CnCRAZER Feb 12, 2026
9b05bf2
remove YR references
CnCRAZER Feb 12, 2026
c675818
Update ini-file.class.ts
CnCRAZER Feb 12, 2026
5f588c3
Fix sorting and reduce MIX header to 6 bytes
CnCRAZER Apr 19, 2026
a60d340
Modernize tools: add workspace packages & Node 24 CI
CnCRAZER Apr 19, 2026
e19838d
Use @actions/github context and fix option usage
CnCRAZER Apr 19, 2026
b9faf19
Update constants.ts
CnCRAZER Apr 19, 2026
6092c53
Update ExFS.ts
CnCRAZER Apr 20, 2026
878bb74
main.mix
CnCRAZER Apr 20, 2026
b8ace28
Merge branch 'feature/port-to-xna' of https://github.com/CnCNet/cncne…
CO2-code Apr 20, 2026
ffecea1
Cherry pick commits from pr18, update client binaries
CnCRAZER Apr 20, 2026
2132763
Update OptionsWindow.ini
CnCRAZER Apr 20, 2026
b09df5c
Add "Popular" maps + delete 9 useless files (#20)
CO2-code May 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Shell scripts require LF
*.sh text eol=lf
*.ps1 text eol=lf
*.ts text eol=lf
# Batch scripts require CRLF
*.cmd text eol=crlf
*.bat text eol=crlf
*.cfg text eol=crlf
*.ini text eol=crlf
*.map text eol=crlf
*.txt text eol=crlf
*.xdp text eol=crlf
preupdateexec text eol=crlf
updateexec text eol=crlf
version text eol=crlf
# Ensure binary assets keep original byte content
*.exe binary
*.dll binary
*.ico binary
*.cur binary
*.xnb binary
*.zip binary
*.7z binary
*.gz binary
*.tgz binary
*.png binary
*.jpg binary
*.jpeg binary
*.bmp binary
*.psd binary
237 changes: 237 additions & 0 deletions .github/workflows/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
name: build-and-deploy

on:
# Run on push to any branches listed
# Any new features that should be auto built and deployed should be in a branch under "feature/"
# example: feature/port-to-xna
# NOTE: Currently limited to dev/feature builds only
push:
branches:
# - master # Disabled for dev builds only
# - pre-release # Disabled for dev builds only
- feature/*
# - hotfix/* # Disabled for dev builds only

# Run when there is a release published
# NOTE: Disabled for dev builds only
# release:
# types: [published]

# Allows for this workflow to be run manually
workflow_dispatch:

jobs:
# This job is responsible for building the package that will be deployed to the server.
# It is run in a windows container so that Version.exe and other Windows based tools are able to be executed.
build-package:
runs-on: windows-2022
environment: cncnet
outputs:
# This the fully qualified version string that is used for deploy purposes.
packageUploadVersion: ${{ env.GitVersion_MajorMinorPatch }}${{ env.GitVersion_PreReleaseLabelWithDash }}
mirrorLinkName: ${{ env.GitVersion_PreReleaseLabel }}

steps:
# Checkout the repo
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0 # required for gitversion

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: tools/package-lock.json

# Ensure Inno Setup is installed on the runner (x64), and upgrade to a version that supports ExecAndCaptureOutput (>= 6.3)
- name: Install Inno Setup (x64)
shell: pwsh
run: |
choco install innosetup --yes --no-progress
function Set-InnoPath {
param([string[]]$Candidates)
$cand = $Candidates | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $cand) { throw 'ISCC.exe not found after Chocolatey install.' }
echo "INNO_SETUP_ISCC=$cand" | Out-File -FilePath $env:GITHUB_ENV -Append
return $cand
}
$cands = @(
'C:/Program Files/Inno Setup 6/ISCC.exe',
'C:/Program Files (x86)/Inno Setup 6/ISCC.exe'
)
$iscc = Set-InnoPath -Candidates $cands
$ver = ([System.Diagnostics.FileVersionInfo]::GetVersionInfo($iscc)).FileVersion
try { $verObj = [version]$ver } catch { $verObj = $null }
if (-not $verObj -or ($verObj.Major -lt 6 -or ($verObj.Major -eq 6 -and $verObj.Minor -lt 3))) {
Write-Host "Detected Inno Setup version $ver (path: $iscc). Upgrading to latest..."
choco upgrade innosetup --yes --no-progress
# Re-select after upgrade
Remove-Item Env:\INNO_SETUP_ISCC -ErrorAction SilentlyContinue
$iscc = Set-InnoPath -Candidates $cands
$ver = ([System.Diagnostics.FileVersionInfo]::GetVersionInfo($iscc)).FileVersion
Write-Host "Using Inno Setup version $ver at $iscc"
} else {
Write-Host "Using Inno Setup version $ver at $iscc"
}

- name: Install Tools NPM Libs
working-directory: tools
run: npm ci --omit=dev

- name: Run Mix Packer
working-directory: tools
run: npm run mix-packer

# This step validates the format of the tag created, if this was a published release.
# Currently, it must be in the format "ra-X.Y" or "ra-X.Y.Z"
- name: Validate Tag Name
if: github.event_name == 'release'
working-directory: tools
run: |
npm run release-tag-validator

- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v0.9.15
with:
versionSpec: "5.x"

# Run Gitversion - https://gitversion.net/docs/
- name: Run GitVersion
uses: gittools/actions/gitversion/execute@v0.9.15

# Update versionconfig.ini with gitversion version info
- name: Update versionconfig.ini
# replace the second line in the file with the proper version number (X.Y.Z-dev.N)
run: sed -i "2 s/.*/${{env.GitVersion_SemVer}}/" ./package/versionconfig.ini

- name: Version Writer
working-directory: tools
run: npm run version-writer

# Create package archive
- name: Create package artifact (tar.gz)
run: tar -C ./package -czvf package.tar.gz .

- name: Create package artifact (zip)
run: 7z.exe a package.zip ./package

# Create installer
- name: Build Installer
working-directory: tools
env:
INNO_SETUP_ISCC: ${{ env.INNO_SETUP_ISCC }}
run: npm run build-installer

- name: Check installer exists
shell: pwsh
run: |
if (Test-Path './CnCNet5_RA_Installer.exe') {
Write-Host 'Installer found at repo root.'
Get-Item './CnCNet5_RA_Installer.exe' | Select-Object FullName,Length,LastWriteTime | Format-Table -AutoSize
} else {
Write-Warning 'Installer not found at ./CnCNet5_RA_Installer.exe. Searching...'
Get-ChildItem -Recurse -File -Filter 'CnCNet5_RA_Installer*.exe' | Select-Object FullName,Length,LastWriteTime | Format-Table -AutoSize
throw 'Installer missing!'
}

# Upload package archive as a workflow artifact
- name: Upload Package Workflow Artifact
uses: actions/upload-artifact@v4
with:
name: package
path: ./package.tar.gz
if-no-files-found: error

# Upload installer as a workflow artifact
- name: Upload Installer Workflow Artifact
uses: actions/upload-artifact@v4
with:
name: installer
path: ./CnCNet5_RA_Installer.exe
if-no-files-found: error

# Upload package archive (tar.gz) to any relevant releases for current tag
# If there is no release/tag, this will not do anything
- name: Upload Package Release Asset (tar.gz)
if: github.event_name == 'release'
working-directory: tools
run: npm run release-asset-uploader -- --token ${{ secrets.GITHUB_TOKEN }} --assetName "package_${{env.GitVersion_SemVer}} (tar.gz)" --assetPath ../package.tar.gz

# Upload package archive (zip) to any relevant releases for current tag
# If there is no release/tag, this will not do anything
- name: Upload Package Release Asset (zip)
if: github.event_name == 'release'
working-directory: tools
run: npm run release-asset-uploader -- --token ${{ secrets.GITHUB_TOKEN }} --assetName "package_${{env.GitVersion_SemVer}} (zip)" --assetPath ../package.zip

# Upload installer to any relevant releases for current tag
# If there is no release/tag, this will not do anything
- name: Upload Installer Release Asset
if: github.event_name == 'release'
working-directory: tools
run: npm run release-asset-uploader -- --token ${{ secrets.GITHUB_TOKEN }} --assetName "CnCNet5_RA_Installer_${{env.GitVersion_SemVer}} (exe)" --assetPath ../CnCNet5_RA_Installer.exe

# This job downloads the package artifact from the previous job and deploys it to the server.
deploy-package:
# if previous job was successful
if: ${{ success() }}
runs-on: ubuntu-22.04
environment: cncnet
needs: build-package

steps:
# Download the package artifact from previous job
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: package

# Deploy the package to the server
- name: Deploy package
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
passphrase: ${{ secrets.SSH_PASS }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
overwrite: true
source: "package.tar.gz"
target: "${{ secrets.SSH_PATH_UPDATES }}/${{ needs.build-package.outputs.packageUploadVersion }}/"

# Extract the deployed package on the server
- name: Extract the deployed package
uses: appleboy/ssh-action@v0.1.7
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
passphrase: ${{ secrets.SSH_PASS }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd ${{ secrets.SSH_PATH_UPDATES }}/${{ needs.build-package.outputs.packageUploadVersion }}
tar -xzvf ${{ secrets.SSH_PATH_UPDATES }}/${{ needs.build-package.outputs.packageUploadVersion }}/package.tar.gz
rm ${{ secrets.SSH_PATH_UPDATES }}/${{ needs.build-package.outputs.packageUploadVersion }}/package.tar.gz
chmod 777 --recursive ${{ secrets.SSH_PATH_UPDATES }}/${{ needs.build-package.outputs.packageUploadVersion }}/*

# Create/update a mirror link for client update purposes, using the GitVersion pre release label as the link name.
# See the file "GitVersion.yml" for more details on the name that will be used for a given branch.
# Ex: if the branch name is "feature/port-to-xna", it will create a link using the sanitized branch name to point to the directory "updates/X.Y.Z-port-to-xna".
# Then, client users can use the path "/updates/games/ra/<branch>/" for their UpdaterConfig.ini file.
# This will keep develop and feature branch update mirror links up to date as soon as the deploy has occurred.
- name: Update mirror link
uses: appleboy/ssh-action@v0.1.7
# RUN ON NON-RELEASES ONLY. RELEASE VERSION LINKS SHOULD CONTINUE TO BE UPDATED MANUALLY, FOR NOW.
if: github.event_name != 'release' && needs.build-package.outputs.mirrorLinkName != ''
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
passphrase: ${{ secrets.SSH_PASS }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd ${{ secrets.SSH_PATH_GAMES_RA }}
ln -sfn updates/${{ needs.build-package.outputs.packageUploadVersion }} ${{ needs.build-package.outputs.mirrorLinkName }}
35 changes: 35 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: publish-release

on:
# Only run this workflow manually
workflow_dispatch:

jobs:
publish:
runs-on: ubuntu-22.04
environment: cncnet

steps:
# Checkout the repo
- name: Checkout repo
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: tools/package-lock.json

- name: Install Tools NPM Libs
working-directory: tools
run: npm ci --omit=dev

# This looks for the latest release in our repo and does the following:
# - updates our /live mirror path to point to it
# - posts an update message to an IRC channel notifying user clients of the newly published update
- name: Publish Latest Release
working-directory: tools
run: npm run publish-release -- --token ${{ secrets.GITHUB_TOKEN }} --sshHost ${{ secrets.SSH_HOST }} --sshUsername ${{ secrets.SSH_USER }} --sshPort ${{ secrets.SSH_PORT }} --sshPassphrase ${{ secrets.SSH_PASS }} --sshKeyBase64 ${{ secrets.SSH_KEY_BASE64 }} --raGamePath ${{ secrets.SSH_PATH_GAMES_RA }} --ircServer ${{ secrets.IRC_SERVER }} --ircChannel ${{ secrets.IRC_CHANNEL }} --ircNick ${{ secrets.IRC_NICK }} --ircUserName ${{ secrets.IRC_USERNAME }} --ircPassword ${{ secrets.IRC_PASSWORD }} --ircRealName ${{ secrets.IRC_REALNAME }}


Loading
Loading