Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
17 changes: 17 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,23 @@ jobs:
throw "Tag '$env:GITHUB_REF_NAME' (version '$tagVersion') does not match WitcherScriptMerger/Properties/AssemblyInfo.cs's AssemblyVersion ('$assemblyVersion'). Bump AssemblyVersion/AssemblyFileVersion there (and WitcherScriptMerger.Headless.csproj's <Version>) before tagging a release."
}

# Fourth copy of the same number, and the one that silently rots: the Vortex
# extension downloads WitcherScriptMerger.Headless-<DEFAULT_WSM_VERSION>-win-x64.zip
# when a user acquires WSM through it. Nothing checked it before, so shipping a
# release without bumping it meant every new extension user auto-downloaded the
# PREVIOUS build - i.e. one missing exactly the fixes the release was cut for.
# It is not part of the extension's own version, which tracks separately.
$extMatch = Select-String -Path 'vortex-extension/src/githubRelease.ts' `
-Pattern "^export const DEFAULT_WSM_VERSION = '([^']+)';" | Select-Object -First 1
if (-not $extMatch) {
throw "Could not find DEFAULT_WSM_VERSION in vortex-extension/src/githubRelease.ts"
}
$extVersion = $extMatch.Matches[0].Groups[1].Value

if ($extVersion -ne $assemblyVersion) {
throw "vortex-extension/src/githubRelease.ts's DEFAULT_WSM_VERSION ('$extVersion') does not match AssemblyVersion ('$assemblyVersion'). That constant selects which WSM release the Vortex extension downloads, so leaving it behind ships an extension that fetches the wrong build."
}

"version=$assemblyVersion" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8

# build.yml (dotnet build + dotnet format whitespace --verify-no-changes) only runs on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
GenerateAssemblyInfo=false (see its CLAUDE.md), so it can't pick up this
property; this one has no such override, so GenerateAssemblyInfo (default true)
stamps AssemblyVersion/AssemblyFileVersion/AssemblyInformationalVersion from it. -->
<Version>0.6.4</Version>
<Version>0.7.0</Version>
<!-- The SDK default appends "+<git commit sha>" to AssemblyInformationalVersion.
Suppressed so VersionInfo.GetVersion() (Core) prints exactly this <Version>
value (or whatever -p:Version= a release build passes) - matching, not just
Expand Down
4 changes: 2 additions & 2 deletions WitcherScriptMerger/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.6.4")]
[assembly: AssemblyFileVersion("0.6.4")]
[assembly: AssemblyVersion("0.7.0")]
[assembly: AssemblyFileVersion("0.7.0")]
2 changes: 1 addition & 1 deletion vortex-extension/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"id": "witcherscriptmerger-vortex",
"name": "WitcherScriptMerger Companion",
"author": "TheValiantOne/WitcherScriptMerger contributors",
"version": "0.1.0",
"version": "0.2.0",
"description": "Companion Vortex extension for WitcherScriptMerger (WSM) - drives WSM's MCP server for Witcher 3 script-conflict scanning and merging from inside Vortex."
}
4 changes: 2 additions & 2 deletions vortex-extension/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vortex-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "witcherscriptmerger-vortex",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"description": "Vortex (Nexus Mods) companion extension for WitcherScriptMerger (WSM) - drives WSM's MCP server for Witcher 3 script-conflict scanning and merging from inside Vortex.",
Expand Down
22 changes: 14 additions & 8 deletions vortex-extension/src/githubRelease.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const DEFAULT_WSM_REPO = 'TheValiantOne/WitcherScriptMerger';
* (`v<version>`) and `WitcherScriptMerger.Headless.csproj`'s own `<Version>`; bump it
* alongside a new WSM release once that release's assets are published.
*/
export const DEFAULT_WSM_VERSION = '0.6.4';
export const DEFAULT_WSM_VERSION = '0.7.0';

/**
* Windows-only for now, matching Vortex itself being Windows-only today (see
Expand All @@ -35,13 +35,19 @@ export type WsmAssetPlatform = 'win-x64';

/**
* The Headless host (CLI + MCP, no GUI) rather than the WinForms host's own win-x64
* asset: `WitcherScriptMerger.Headless/CLAUDE.md`'s "Dependency gating" section - the
* WinForms host's `merge` *and* `mcp` verbs both gate on the combined
* `ValidateDependencyPaths()` (QuickBMS + wcc_lite), so it refuses to even start
* without bundle tooling this unit doesn't acquire. The Headless host gates on
* `ValidateTextMergeDependencies()` only, so it works for flat-file conflicts with
* nothing else installed - exactly what `mcpClient.ts` and a future one-shot `merge`
* CLI invocation both need.
* asset: `WitcherScriptMerger.Headless/CLAUDE.md`'s "Dependency gating" section.
*
* The WinForms host's **`mcp` verb** gates on the combined `ValidateDependencyPaths()`
* (QuickBMS + wcc_lite), so it refuses to even start a server without bundle tooling
* this extension doesn't acquire - and MCP is precisely how this extension drives WSM,
* so that alone settles the choice. Its `merge` verb no longer does (it gates on
* `ValidateTextMergeDependencies()` like Headless); this comment previously said both
* verbs did, which stopped being true once that was fixed. The conclusion is unchanged,
* and if anything stronger: the one surface this extension actually uses is still gated.
*
* The Headless host gates on `ValidateTextMergeDependencies()` for both verbs, so it
* works for flat-file conflicts with nothing else installed - exactly what
* `mcpClient.ts` needs.
*/
export function buildAssetFileName(version: string, platform: WsmAssetPlatform = 'win-x64'): string {
return `WitcherScriptMerger.Headless-${version}-${platform}.zip`;
Expand Down
Loading