- C# 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Round 2: ship-readiness foundations plus the live tail feature and in-app updater. Version bump 4.1.8 -> 5.0.0. Foundations - CHANGELOG.md following Keep a Changelog format - AssemblyVersion bumped to 5.0.0 in both controllers - <Nullable>enable</Nullable> across all projects; 45 nullable warnings fixed (sender parameters, possibly-null registry/ TryGetValue out params, uninitialised singleton fields) - xUnit test project Shared.Tests with 19 tests covering ChatLogParser (Utf8JsonReader parsing, HTML entity decode, timestamp stripping), ChatLogScanner (server detection, newest- storage selection), LocalizationController. Parallelism disabled to keep the static-state tests deterministic. - GitHub Actions: build.yml on push/PR runs build+test on windows-latest. release.yml on tag push publishes 4 single-file artifacts (fdd + self-contained for both apps) and creates a GitHub release. Observability - Serilog rolling-file sink under %LocalAppData%\GTAW-Log-Parser\ logs\, retained 7 days. Replaces 14 silent Debug.WriteLine call sites with structured Log.Error/Information. - Sentry.Serilog sink wired up; gated by GTAW_SENTRY_DSN env var so it stays off by default (privacy by default). - Shared/Logging.cs centralises both sinks; Parser and Assistant call Logging.Initialize() at startup and Logging.Shutdown() at exit. New features - Live Tail (Assistant/UI/LiveTailWindow): FileSystemWatcher on the .storage file with 200ms debounce; on every change, re-parses, diffs against the previous full log, appends only the new lines. Auto-scrolls. Toggleable timestamp strip. Clear button. Reachable from MainWindow's menu strip. - In-app auto-updater (Assistant/Controllers/AutoUpdater): when an update is available, the user can now choose Yes = download and swap automatically, No = open releases page, Cancel = nothing. Uses Octokit to locate the matching fdd asset, downloads it next to the running exe, then spawns a cmd.exe one-liner that waits 2s, move /y over the running exe, restarts. On failure falls back to opening the releases page. Documentation - README rewritten with fdd vs self-contained release matrix, build/test/publish commands, env-var setup for crash reporting, code signing notes (SignPath.io for OSS, commercial cert), and project structure overview. |
||
| .github/workflows | ||
| Assistant | ||
| Parser | ||
| Shared | ||
| Shared.Tests | ||
| .gitignore | ||
| CHANGELOG.md | ||
| GTAW-Log-Parser.sln | ||
| header.png | ||
| LICENSE | ||
| README.md | ||
GTA World Chat Log Assistant
This program converts the chat logs generated while playing on GTA World into readable text.
Getting Started
No installation is required. Download the latest release and run the executable.
Two flavours are published for each app:
| Suffix | Size | Requirements |
|---|---|---|
*-fdd-win-x64.exe (framework-dependent) |
~5–10 MB | .NET 8 Desktop Runtime must be installed |
*-selfcontained-win-x64.exe |
~80–100 MB | No runtime install needed |
If you have the .NET 8 Desktop Runtime (most users on a modern Windows do), the framework-dependent build is recommended.
Optional: crash reporting
Set the GTAW_SENTRY_DSN environment variable to a Sentry DSN to enable opt-in crash reporting. Leave it unset (default) and nothing is sent.
[Environment]::SetEnvironmentVariable("GTAW_SENTRY_DSN", "https://your-dsn@oXXXXX.ingest.sentry.io/YYYYY", "User")
Logs are always written to %LocalAppData%\GTAW-Log-Parser\logs\ regardless of Sentry.
Building from source
Requires the .NET 8 SDK.
# Build everything (Parser, Assistant, Shared, Shared.Tests)
dotnet build GTAW-Log-Parser.sln
# Run tests
dotnet test Shared.Tests/Shared.Tests.csproj
# Run Parser locally
dotnet run --project Parser
# Run Assistant locally
dotnet run --project Assistant
The solution uses SDK-style csproj. No special MSBuild flags are required.
Publishing release binaries
The .github/workflows/release.yml workflow does this automatically on tag push (git tag v5.0.0 && git push --tags). To reproduce locally:
# Framework-dependent (small)
dotnet publish Assistant/Assistant.csproj -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true
# Self-contained (no runtime needed on target machine)
dotnet publish Assistant/Assistant.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
Output: Assistant/bin/Release/net8.0-windows/win-x64/publish/GTAWAssistant.exe.
Code signing (optional)
Released EXEs trigger Windows SmartScreen warnings unless code-signed. For OSS projects, two options:
- SignPath.io — free Authenticode signing for OSS via GitHub Actions. Apply once, then sign every release.
- Commercial cert — buy a certificate from a CA (DigiCert, Sectigo, GlobalSign) for ~$200–600/year and sign with
signtool.exein the release workflow.
Neither is wired up by default — both produce trust-warning-free downloads but require an external account.
Contributing
- Fork the project (https://github.com/blancodagoat/GTAW-Log-Parser)
- Create a branch (
git checkout -b feature/your-feature) - Commit (
git commit -am "Add feature_name") - Push (
git push origin feature/your-feature) - Open a pull request
CI builds and runs tests on every PR.
Project structure
Parser/ — WinForms minimal parser (ParserMini.exe)
Assistant/ — WPF full-featured app with backup, filtering, themes (GTAWAssistant.exe)
Shared/ — Class library: ChatLogParser, ChatLogScanner, LocalizationController, Logging
Shared.Tests/ — xUnit tests for Shared/
License
Distributed under the GPLv3 license. See LICENSE for more information.
