Skip to content

UBD-11 , UBD-12#7

Open
ubden wants to merge 35 commits intoCyberSys:mainfrom
ubden:UBD-12
Open

UBD-11 , UBD-12#7
ubden wants to merge 35 commits intoCyberSys:mainfrom
ubden:UBD-12

Conversation

@ubden
Copy link
Copy Markdown
Contributor

@ubden ubden commented Apr 9, 2026

UBD-11 , UBD-12

ubden and others added 30 commits January 11, 2025 15:24
[WIP] Add hyperlink to download the latest version
Co-authored-by: ubden <44896964+ubden@users.noreply.github.com>
…nfig

Co-authored-by: ubden <44896964+ubden@users.noreply.github.com>
…ssue

Fix: extra_inventory_items written as object instead of array in SmokeAPI config
Add global.json for SDK resolution with .NET 8+
docs: Add Wikipedia antivirus reference to false-positive warning section
…rmance-security

fix: bugs, performance, security, and AV false-positive annotations
…ve UI components

- Updated .NET SDK version to 9.0 in global.json and project files.
- Added new entries to .gitignore for DLL files.
- Enhanced README with community support links and installation instructions.
- Improved UI elements in forms for better user experience, including dark mode support.
- Added log export functionality in the installation form.
- Implemented search/filter functionality in the selection form.
- Updated various components to use new theming and styling conventions.
Removed community support section from README.
- Updated build.yml and release.yml to include FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 environment variable for improved compatibility with Node.js 24.
- Updated build workflow to change code formatting severity from 'warn' to 'info'.
- Modified various components to use more explicit checks (e.g., replacing 'Any()' with 'Count > 0').
- Enhanced readability in string index operations by using single quotes for characters.
- Ensured list conversions are explicitly handled in LINQ queries for better clarity.
ubden added 5 commits April 8, 2026 11:38
- Add NoWarn (CA1806/CA1860/CA1865/CA2263/CA1861/CA1872) to csproj
- Add TreatWarningsAsErrors=false to csproj and CI workflow
- Remove dotnet format --verify-no-changes (was causing exit code 1)
- Seal DarkButton class (CA1852)
- Make GatherTreeNodes static (CA1822)

Made-with: Cursor
- CustomTreeView: replace invisible dark colors with bright amber/sky-blue/green
- ThemeManager: brighter TextDisabled, CheckBox EnabledChanged hook for ForeColor
- ThemeManager: fix GroupBox paint to not cover header-area checkboxes
- CustomForm: replace emoji with ASCII markers (WinForms GDI+ compatibility)

Made-with: Cursor
Copilot AI review requested due to automatic review settings April 9, 2026 05:55
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades CreamInstaller to v5.0 with a move to .NET 9, adds a new dark-themed UI layer and persistent app settings, and overhauls repo metadata/docs + GitHub Actions workflows for CI/release.

Changes:

  • Upgrade to net9.0-windows, update NuGet dependencies, add global.json, and refresh CI/release workflows.
  • Introduce dark theme components (buttons/progress bar), UI enhancements (search/filter + status strip), and persistent app settings.
  • Expand README and GitHub community/support/security templates (disclaimers, support links, reporting guidance).

Reviewed changes

Copilot reviewed 40 out of 44 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
README.md Rewrites top-level documentation/disclaimer; updates install/build links and requirements.
global.json Pins SDK selection behavior for .NET builds.
CreamInstaller/Utility/ProgramData.cs Simplifies JSON tuple deserialization and normalizes empty checks.
CreamInstaller/Utility/HttpClientManager.cs Adds a 60s HttpClient timeout and clarifying comments.
CreamInstaller/Utility/Diagnostics.cs Hardens process launching and adds guards for missing paths/files.
CreamInstaller/Utility/AppSettings.cs Adds persisted JSON settings for UX preferences/window state.
CreamInstaller/Resources/UplayR2.cs Ensures StreamWriter is disposed; adds clarifying comments.
CreamInstaller/Resources/UplayR1.cs Ensures StreamWriter is disposed; adds clarifying comments.
CreamInstaller/Resources/SmokeAPI.cs Ensures StreamWriter is disposed; fixes JSON output for extra_inventory_items.
CreamInstaller/Resources/ScreamAPI.cs Ensures StreamWriter is disposed; adds clarifying comments.
CreamInstaller/Resources/Resources.cs Adds MD5 caching and cache invalidation on writes; adds clarifying comments.
CreamInstaller/Resources/Koaloader.cs Ensures StreamWriter is disposed; adds clarifying comments.
CreamInstaller/Properties/Resources.resx Fixes resource path casing for the app icon.
CreamInstaller/Program.cs Updates repo metadata/links, switches DPI mode, initializes settings at startup.
CreamInstaller/Platforms/Steam/SteamCMD.cs Adds clarifying comments; minor string-indexing simplification.
CreamInstaller/Forms/SelectForm.Designer.cs UI refresh: dark controls, search box, status strip, resizable layout wiring.
CreamInstaller/Forms/SelectForm.cs Adds scan timestamp persistence, search/filter logic, status strip updates, resize persistence.
CreamInstaller/Forms/SelectDialogForm.cs Adjusts to new WriteProgramChoices(List<...>) signature.
CreamInstaller/Forms/MainForm.Designer.cs UI refresh: adds header label and dark controls.
CreamInstaller/Forms/MainForm.cs Updates styling and header display for the main update flow.
CreamInstaller/Forms/InstallForm.Designer.cs UI refresh: dark controls + adds “Export Log” button.
CreamInstaller/Forms/InstallForm.cs Adds log export feature; minor style refactor.
CreamInstaller/Forms/DialogForm.cs Minor char-based IndexOf simplification.
CreamInstaller/CreamInstaller.csproj Bumps to net9 + v5.0; updates package versions and metadata.
CreamInstaller/Components/ThemeManager.cs Adds centralized dark theme palette + recursive application helpers.
CreamInstaller/Components/DarkProgressBar.cs Adds owner-drawn themed progress bar control.
CreamInstaller/Components/DarkButton.cs Adds owner-drawn themed button control.
CreamInstaller/Components/CustomTreeView.cs Minor micro-optimization (Count > 0 vs Any()).
CreamInstaller/Components/CustomForm.cs Applies theme on handle creation; adds dark title bar integration and updated help text.
.gitignore Adds DLL ignore patterns.
.github/workflows/test.yml Removes legacy test workflow.
.github/workflows/release.yml Adds tag-based release publishing workflow.
.github/workflows/jekyll-gh-pages.yml Removes GitHub Pages deployment workflow.
.github/workflows/delete_releases.yml Removes release deletion workflow.
.github/workflows/build.yml Adds Windows CI build + optional formatting verification + artifact upload.
.github/SUPPORT.md Adds explicit “no official support” guidance and community links.
.github/SECURITY.md Adds security policy and reporting guidance.
.github/ISSUE_TEMPLATE/false-positives.md Reworks false-positive issue template and adds structured prompts.
.github/ISSUE_TEMPLATE/enhancement-request.md Reworks enhancement template and adds community pointers.
.github/ISSUE_TEMPLATE/bug-report.md Reworks bug template and adds community pointers.
.github/DISCUSSION_TEMPLATE/q-and-a.yml Adds a structured Q&A discussion template.
.github/DISCUSSION_TEMPLATE/general.yml Adds a structured general discussion template.
.github/dependabot.yml Enables weekly Dependabot updates for NuGet and GitHub Actions.
.github/CONTRIBUTING.md Adds contributor workflow and development setup guidance.
Files not reviewed (3)
  • CreamInstaller/Forms/InstallForm.Designer.cs: Language not supported
  • CreamInstaller/Forms/MainForm.Designer.cs: Language not supported
  • CreamInstaller/Forms/SelectForm.Designer.cs: Language not supported
Comments suppressed due to low confidence (1)

.github/ISSUE_TEMPLATE/bug-report.md:45

  • This relative link (.github/ISSUE_TEMPLATE/false-positives.md) will likely be broken when rendered inside a GitHub Issue body (relative links resolve against the issue URL, not the repo root). Prefer an absolute GitHub URL to the template file (or link to the repository’s issue template chooser / documentation section in the README).
---

> 🛡️ **Antivirus false positive?** See the [false-positives template](.github/ISSUE_TEMPLATE/false-positives.md).


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
Comment on lines +4 to +6
# ⚠️ Disclaimer
## (Read before installation and Follow Us on Github !)

Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Github" should be capitalized as "GitHub" (project name) in this heading; also remove the extra space before the exclamation for consistent Markdown copy.

Copilot uses AI. Check for mistakes.
selectionTreeView.AfterCheck += OnTreeViewNodeCheckedChanged;
// Restore window position/size from settings
AppSettings.Current.RestoreFormState(this, restoreSize: true);
AppSettings.Current.SortByName = sortCheckBox.Checked;
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SortByName persistence is currently broken: on load you overwrite the stored setting with the current checkbox state, then immediately read it back, so the saved value is never applied. Instead, set sortCheckBox.Checked from AppSettings.Current.SortByName (and ideally update/save AppSettings.Current.SortByName inside OnSortCheckBoxChanged).

Suggested change
AppSettings.Current.SortByName = sortCheckBox.Checked;

Copilot uses AI. Check for mistakes.
Comment thread CreamInstaller/Program.cs
Comment on lines +21 to +26
internal const string RepositoryOwner = "ubden-community";
internal static readonly string RepositoryName = "CreamApi-CreamInstaller";
internal static readonly string RepositoryPackage = Name + ".zip";

internal const string CommunityDiscussions = "https://github.com/ubden/CreamApi-CreamInstaller/discussions";
internal const string CommunityForum = "https://forum.ubden.com.tr/konu/creaminstaller-auto-dlc-unlocker-installer-config-gen.1602/";
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CommunityDiscussions points to github.com/ubden/... while the repository constants use ubden-community. This inconsistency will produce dead/incorrect links in the Help dialog and documentation if the discussions live in the same repo. Consider constructing the discussions URL from RepositoryOwner/RepositoryName (or update the owner here to match the actual hosting location).

Copilot uses AI. Check for mistakes.
Mamson.A!ac, Trojan:Win32/ and other

#### File(s) flagged
Please review code line : "// ANTIVIRUS FALSE POSITIVE WARNING:" and folder /Resourcues
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in template text: "/Resourcues" should be "/Resources" (and consider replacing this line with a clearer instruction to include the exact file path(s) flagged by the AV).

Suggested change
Please review code line : "// ANTIVIRUS FALSE POSITIVE WARNING:" and folder /Resourcues
Please include the exact file path(s) flagged by the antivirus (for example: `/Resources/...`).

Copilot uses AI. Check for mistakes.
Comment on lines +28 to +37
run: dotnet restore CreamInstaller/CreamInstaller.csproj

- name: Publish (self-contained single file)
run: |
dotnet publish CreamInstaller/CreamInstaller.csproj `
-c Release `
-r win-x64 `
--self-contained false `
-p:PublishSingleFile=true `
-p:IncludeAllContentForSelfExtract=true `
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The step name says "Publish (self-contained single file)" but the command uses --self-contained false, which produces a framework-dependent single-file app. Either rename the step to avoid confusion or change the publish command to --self-contained true if you really intend a self-contained release.

Copilot uses AI. Check for mistakes.
Comment on lines 599 to 606
private static string ComputeMD5(this string filePath)
{
if (!File.Exists(filePath))
return null;
// Performance: return cached hash if the file has already been hashed this session.
if (md5Cache.TryGetValue(filePath, out string cached))
return cached;
#pragma warning disable CA5351
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MD5 cache is keyed only by file path, so it can return a stale hash if the file is modified externally (game update, user replacing DLL) during the same app session. That can make IsResourceFile() return incorrect results. Consider caching alongside File.GetLastWriteTimeUtc/length and recomputing when metadata changes (or drop caching for correctness).

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants