Skip to content
Merged
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
1969873
commit ini sorting plan
Zero-Fanker Oct 7, 2026
f1579bf
feat: align INI key and section order preservation with YR_RN_Mission…
Zero-Fanker Oct 7, 2026
fa4bcbe
fix(rn): use direct copy of RN FAData.ini without Phobos features
Zero-Fanker Oct 7, 2026
13f8bf2
refactor: abstract INI section and key order iteration into CINIOrder…
Zero-Fanker Oct 7, 2026
c8bf3c1
feat(unittest): integrate googletest and in-process test runner for F…
Zero-Fanker Oct 7, 2026
8d12d22
ci: add PR compile and UT verification workflow
Zero-Fanker Oct 7, 2026
92a31a0
ci: refactor into reusable build-and-test workflow, upgrade msbuild.y…
Zero-Fanker Oct 7, 2026
05aca46
refactor: centralize hash<ppmfc::CString> into Helper.h
Zero-Fanker Oct 7, 2026
c7a71df
docs: add agents.md, Claude.md, and Codex.md with UT verification gui…
Zero-Fanker Oct 7, 2026
be9d7d1
ci: enhance release workflow with build-tag-number versioning and mul…
Zero-Fanker Oct 7, 2026
2fda2b7
refactor: add Scripts/PackageRelease.ps1, relocate RunUnitTest.bat to…
Zero-Fanker Oct 7, 2026
793bae2
fix(rn): base RevengeNow FAData.ini on default FAData.ini with proper…
Zero-Fanker Oct 7, 2026
2f5681d
fix(rn): integrate full RN triggers/actions/scripts and set SaveMap.K…
Zero-Fanker Oct 7, 2026
2e18e95
test: add comprehensive realistic CINI CRUD operations tests for CINI…
Zero-Fanker Oct 8, 2026
4d0705e
test: add head, middle, tail delete and re-add permutation tests for …
Zero-Fanker Oct 8, 2026
9722ae9
feat: implement AdaptiveSorting for INI key output and numeric natura…
Zero-Fanker Oct 8, 2026
6a99fc3
feat: embed RecordKey in writeString lambda and adopt LoadINIExt with…
Zero-Fanker Oct 8, 2026
88e8a6b
using string_view to reduce memory allocation .
Zero-Fanker Oct 8, 2026
65b1a77
feat(ini): encapsulate CINI mutations in CINIExt with dynamic functio…
Zero-Fanker Oct 8, 2026
7ca150c
feat(ini): encapsulate CINI::CurrentDocument with CINIExt proxy insta…
Zero-Fanker Oct 8, 2026
771ee55
docs(ini): add design motivation and developer guideline comments for…
Zero-Fanker Oct 8, 2026
9cfbc4d
refactor(ini): remove redundant global CurrentDocument alias and keep…
Zero-Fanker Oct 8, 2026
441f762
chore(rn): set UTF8Support.AlwaysSaveAsUTF8=true in RN FAData.ini
Zero-Fanker Oct 8, 2026
56965e7
docs: update ini_key_sorting_alignment_plan with UT architecture, CI …
Zero-Fanker Oct 8, 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
53 changes: 16 additions & 37 deletions .github/workflows/msbuild.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,25 @@
name: MSBuild

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
branches:
- "**"
types:
- opened
- synchronize
- reopened
paths-ignore:
- 'image/**'
- 'docs/**'
- '**/*.md'
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: windows-2022

strategy:
matrix:
configuration: [ Release ]

env:
SOLUTION_FILE_PATH: .
BUILD_CONFIGURATION: ${{ matrix.configuration }}

steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1.0.2

- name: Restore NuGet packages
run: nuget restore ${{ env.SOLUTION_FILE_PATH }}

- name: Build ${{ matrix.configuration }}
run: msbuild /m /p:Configuration=${{ env.BUILD_CONFIGURATION }} ${{ env.SOLUTION_FILE_PATH }}

- name: Upload ${{ matrix.configuration }} Artifacts
if: ${{ success() }}
uses: actions/upload-artifact@v4
with:
name: FA2sp_${{ matrix.configuration }}_${{ github.sha }}
path: |
${{ env.SOLUTION_FILE_PATH }}/${{ env.BUILD_CONFIGURATION }}/FA2sp.dll
${{ env.SOLUTION_FILE_PATH }}/${{ env.BUILD_CONFIGURATION }}/FA2sp.pdb
verify:
uses: ./.github/workflows/reusable-build-and-test.yml
with:
configuration: Release
run_tests: true
138 changes: 138 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Release

permissions:
contents: write

on:
pull_request:
branches:
- "master"
types:
- closed
paths-ignore:
- 'image/**'
- 'docs/**'
- '**/*.md'
workflow_dispatch:
inputs:
tag_name:
description: 'Custom Release Tag (leave empty to use auto-version)'
required: false
default: ''
type: string
prerelease:
description: 'Is Pre-release'
required: false
default: false
type: boolean

env:
VERSION_MAJOR: 1
VERSION_MINOR: 6
VERSION_PREFIX: "v"

jobs:
build-and-test:
if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true)
uses: ./.github/workflows/reusable-build-and-test.yml
with:
configuration: Release
run_tests: true

prepare-version:
needs: build-and-test
if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true)
runs-on: windows-2022
outputs:
release_tag: ${{ steps.determine_version.outputs.release_tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Generate Build Number
if: ${{ !inputs.tag_name }}
id: buildnumber
uses: onyxmueller/build-tag-number@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
prefix: auto-version-${{ env.VERSION_MAJOR }}.${{ env.VERSION_MINOR }}

- name: Determine Release Tag
id: determine_version
shell: pwsh
run: |
$customTag = "${{ inputs.tag_name }}"
if (-not [string]::IsNullOrWhiteSpace($customTag)) {
$tag = $customTag
} else {
$buildNum = [int]"${{ steps.buildnumber.outputs.build_number }}"
$revision = $buildNum - 1
$tag = "${{ env.VERSION_PREFIX }}${{ env.VERSION_MAJOR }}.${{ env.VERSION_MINOR }}.$revision"
}
Add-Content -Path $env:GITHUB_OUTPUT -Value "release_tag=$tag" -Encoding utf8
Write-Host "Determined Release Tag: $tag"

package:
needs: [build-and-test, prepare-version]
if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true)
runs-on: windows-2022
strategy:
matrix:
target: [YR, MO, RN]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: FA2sp_Release_${{ github.sha }}
path: bin_output

- name: Package Target (${{ matrix.target }})
shell: pwsh
run: |
./Scripts/PackageRelease.ps1 -Target ${{ matrix.target }} -Version ${{ needs.prepare-version.outputs.release_tag }} -BinDir bin_output -OutputDir .
Add-Content -Path $env:GITHUB_ENV -Value "PACKAGE_NAME=FA2sp-${{ matrix.target }}-${{ needs.prepare-version.outputs.release_tag }}.zip" -Encoding utf8

- name: Upload Target Artifact
uses: actions/upload-artifact@v4
with:
name: release-pkg-${{ matrix.target }}
path: ${{ env.PACKAGE_NAME }}
retention-days: 1

publish-release:
needs: [prepare-version, package]
if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true)
runs-on: windows-2022
steps:
- name: Download all release target packages
uses: actions/download-artifact@v4
with:
pattern: release-pkg-*
merge-multiple: true
path: release_assets

- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: FA2sp_Release_${{ github.sha }}
path: bin_output

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.prepare-version.outputs.release_tag }}
name: FA2sp ${{ needs.prepare-version.outputs.release_tag }}
files: |
release_assets/*.zip
bin_output/FA2sp.dll
bin_output/FA2sp.pdb
target_commitish: ${{ github.sha }}
prerelease: ${{ inputs.prerelease || false }}
generate_release_notes: true
82 changes: 82 additions & 0 deletions .github/workflows/reusable-build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Reusable Build and Test

on:
workflow_call:
inputs:
configuration:
description: 'Build Configuration (e.g. Release)'
required: false
default: 'Release'
type: string
run_tests:
description: 'Whether to run Unit Tests'
required: false
default: true
type: boolean
outputs:
artifact_name:
description: 'Name of the uploaded binary artifact'
value: ${{ jobs.build-and-test.outputs.artifact_name }}

jobs:
build-and-test:
runs-on: windows-2022
env:
SOLUTION_FILE_PATH: FA2sp.sln
CONFIGURATION: ${{ inputs.configuration }}
outputs:
artifact_name: FA2sp_${{ inputs.configuration }}_${{ github.sha }}

steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
lfs: true

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1.0.2

- name: Restore NuGet packages
run: nuget restore ${{ env.SOLUTION_FILE_PATH }}

- name: Build Program and UT (MSVC)
run: msbuild /m /p:Configuration="${{ env.CONFIGURATION }}" /p:Platform=x86 ${{ env.SOLUTION_FILE_PATH }}

- name: Copy binaries to Supplementary
shell: pwsh
run: |
if (Test-Path "${{ env.CONFIGURATION }}/FA2sp.dll") {
Copy-Item -Force "${{ env.CONFIGURATION }}/FA2sp.dll" "Supplementary/FA2sp.dll"
}
if (Test-Path "${{ env.CONFIGURATION }}/FA2sp.UnitTest.dll") {
Copy-Item -Force "${{ env.CONFIGURATION }}/FA2sp.UnitTest.dll" "Supplementary/FA2sp.UnitTest.dll"
}

- name: do UT
if: inputs.run_tests
shell: cmd
run: |
call Scripts\RunUnitTest.bat

- name: Upload UT Results
if: always() && inputs.run_tests
uses: actions/upload-artifact@v4
with:
name: FA2sp-UT-Results-${{ github.run_number }}
path: |
Supplementary/UnitTest.log
Supplementary/UnitTest.xml
Supplementary/syringe.log
retention-days: 7

- name: Upload Build Artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: FA2sp_${{ env.CONFIGURATION }}_${{ github.sha }}
path: |
${{ env.CONFIGURATION }}/FA2sp.dll
${{ env.CONFIGURATION }}/FA2sp.pdb
retention-days: 7
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,15 @@ MFC42
!Debug/Scintilla.lib
/ida_mapping
/migration

/FA2sp.UnitTest/Debug/*
/FA2sp.UnitTest/Release/*
/FA2sp.UnitTest/FA2sp.UnitTest/*

Supplementary/FA2sp.UnitTest.dll
Supplementary/FA2sp.dll
Supplementary/*.log
Supplementary/*.txt
Supplementary/UnitTest.xml
dist/
bin_output/
5 changes: 4 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@
url = https://github.com/ScintillaOrg/lexilla
[submodule "scintilla"]
path = scintilla
url = https://github.com/mirror/scintilla
url = https://github.com/mirror/scintilla
[submodule "googletest"]
path = googletest
url = https://github.com/google/googletest.git
5 changes: 5 additions & 0 deletions Claude.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Instructions for Claude

Must read [agents.md](agents.md).

Always adhere strictly to the project rules, test verification mandates, and git constraints specified in [agents.md](agents.md).
5 changes: 5 additions & 0 deletions Codex.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Instructions for Codex

Must read [agents.md](agents.md).

Always adhere strictly to the project rules, test verification mandates, and git constraints specified in [agents.md](agents.md).
Loading
Loading