Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
20b173d
Add per-mod and per-folder hashes alongside legacy combined hash
TheMasterCreed May 6, 2026
ec19b8e
Add sentinel-encoded per-bucket hash payload to mod-version handshake
TheMasterCreed May 6, 2026
18b4e7c
Render mod mismatches as additive multi-section dialog
TheMasterCreed May 6, 2026
88bec92
Fix Settings::filterCosmeticMods pass-by-value bug
TheMasterCreed May 6, 2026
2a862ad
Add mod-sync handshake v2 with capabilities and validator helper
TheMasterCreed May 7, 2026
a2a0658
Add filesystem helpers for mod-sync packaging and pending swaps
TheMasterCreed May 7, 2026
bae7338
Harden mod-sync helpers and tighten manifest swap semantics
TheMasterCreed May 7, 2026
be75f78
Wire mod-sync executor and reaper into Settings::loadSettings
TheMasterCreed May 7, 2026
e786103
Drop mod-sync boot breadcrumb that fires before LogLevel applies
TheMasterCreed May 7, 2026
74b6521
Add mod-sync request, data, reject, and complete handlers
TheMasterCreed May 7, 2026
46fc09c
Add Apply host's mod set button and progress dialog to mismatch flow
TheMasterCreed May 7, 2026
7163866
Fix relative-path keying in buildModSyncPackage for empty UserPath
TheMasterCreed May 7, 2026
0b4ae06
Surface specific reject reason in mod-sync failure dialog
TheMasterCreed May 7, 2026
60d9b15
Skip mod-sync download when the local copy is on disk but inactive
TheMasterCreed May 7, 2026
ddb069b
Verify hash and version before mod-sync skip, fix offer predicate
TheMasterCreed May 7, 2026
8533203
Mirror staged mod list into in-memory active set during sync
TheMasterCreed May 7, 2026
636007d
Shorten Apply mod-sync button label to fit DialogMessageBox button width
TheMasterCreed May 7, 2026
94296c0
Auto-restart and rejoin after mod-sync; fix progress bar paint timing
TheMasterCreed May 7, 2026
08eacb4
Add Settings checkboxes for mod sync hosting, backup retention, and t…
TheMasterCreed May 7, 2026
d9eb5d2
Implement slice 5a/5b
TheMasterCreed May 9, 2026
177dc4d
Implement slice 6
TheMasterCreed May 9, 2026
e214e13
Fix mod-sync progress dialog text centering
TheMasterCreed May 9, 2026
4108a34
Make mod-sync mismatch prompt say the game restarts automatically
TheMasterCreed May 9, 2026
42acbe2
Merge branch 'Robosturm:master' into feature/mod-mismatch-sync
TheMasterCreed May 9, 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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,7 @@ set(${PROJECT_NAME}_SRCS
objects/dialogs/filedialog.cpp objects/dialogs/filedialog.h
objects/dialogs/dialogcostyle.cpp objects/dialogs/dialogcostyle.h
objects/dialogs/dialogmessagebox.cpp objects/dialogs/dialogmessagebox.h
objects/dialogs/dialogmodsyncprogress.cpp objects/dialogs/dialogmodsyncprogress.h
objects/dialogs/dialogtextinput.cpp objects/dialogs/dialogtextinput.h
objects/dialogs/folderdialog.cpp objects/dialogs/folderdialog.h
objects/dialogs/dialogvaluecounter.cpp objects/dialogs/dialogvaluecounter.h
Expand Down
9 changes: 8 additions & 1 deletion coreengine/commandlineparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const char* const CommandLineParser::ARG_AISLAVE = "aiSlave";
const char* const CommandLineParser::ARG_USERPATH = "userPath";
const char* const CommandLineParser::ARG_DEBUGLEVEL = "debugLevel";
const char* const CommandLineParser::ARG_SLAVETRAINING = "slaveTraining";
const char* const CommandLineParser::ARG_REJOINPASSWORD = "rejoin-password";

// options required for hosting a dedicated server
const char* const CommandLineParser::ARG_SERVER = "server";
Expand Down Expand Up @@ -88,7 +89,8 @@ CommandLineParser::CommandLineParser()
m_mailServerSendAddress(ARG_MAILSERVERSENDADDRESS, tr("E-Mail address used on the mail server for the server for sending mails to accounts."), tr("address"), ""),
m_mailServerAuthMethod(ARG_MAILSERVERAUTHMETHOD, tr("Mail server authentication type (Plain, Login) for the server for sending mails to accounts."), tr("method"), ""),
m_serverSaveFile(ARG_SERVERSAVEFILE, tr("Path to the server game save file"), tr("path"), ""),
m_slaveTraining(ARG_SLAVETRAINING, tr("mode for starting an ai training session."))
m_slaveTraining(ARG_SLAVETRAINING, tr("mode for starting an ai training session.")),
m_rejoinPassword(ARG_REJOINPASSWORD, tr("Password used by the auto-rejoin path after a mod-sync restart. Internal; not for manual use."), tr("password"), "")
{
Interpreter::setCppOwnerShip(this);
m_parser.setApplicationDescription("Commander Wars game");
Expand Down Expand Up @@ -130,6 +132,7 @@ CommandLineParser::CommandLineParser()
m_parser.addOption(m_mailServerAuthMethod);
m_parser.addOption(m_serverSaveFile);
m_parser.addOption(m_slaveTraining);
m_parser.addOption(m_rejoinPassword);
}

void CommandLineParser::parseArgsPhaseOne(QCoreApplication & app)
Expand Down Expand Up @@ -174,6 +177,10 @@ void CommandLineParser::parseArgsPhaseOne(QCoreApplication & app)
QString value = m_parser.value(m_update);
Settings::getInstance()->setUpdateStep(value);
}
if (m_parser.isSet(m_rejoinPassword))
{
Mainapp::setRejoinPassword(m_parser.value(m_rejoinPassword));
}
}

bool CommandLineParser::getUserPath(QString & path)
Expand Down
2 changes: 2 additions & 0 deletions coreengine/commandlineparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class CommandLineParser final : public QObject
static const char* const ARG_USERPATH;
static const char* const ARG_DEBUGLEVEL;
static const char* const ARG_SLAVETRAINING;
static const char* const ARG_REJOINPASSWORD;

static const char* const ARG_SERVER;
static const char* const ARG_SERVERSLAVEHOSTOPTIONS;
Expand Down Expand Up @@ -93,6 +94,7 @@ class CommandLineParser final : public QObject
QCommandLineOption m_mailServerAuthMethod;
QCommandLineOption m_serverSaveFile;
QCommandLineOption m_slaveTraining;
QCommandLineOption m_rejoinPassword;

QCommandLineParser m_parser;
};
Expand Down
Loading
Loading