diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 9c8cbebd7..000000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1 +0,0 @@
-patreon: Ryujinx
diff --git a/.github/labeler.yml b/.github/labeler.yml
index cd7650a9d..54f2757b0 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -20,7 +20,7 @@ gpu:
gui:
- changed-files:
- - any-glob-to-any-file: ['src/Ryujinx/**', 'src/Ryujinx.UI.Common/**', 'src/Ryujinx.UI.LocaleGenerator/**', 'src/Ryujinx.Gtk3/**']
+ - any-glob-to-any-file: ['src/Ryujinx/**', 'src/Ryujinx.UI.Common/**', 'src/Ryujinx.UI.LocaleGenerator/**']
horizon:
- changed-files:
diff --git a/.github/reviewers.yml b/.github/reviewers.yml
index 46c0d5c11..97f5e8268 100644
--- a/.github/reviewers.yml
+++ b/.github/reviewers.yml
@@ -1,25 +1,17 @@
-
cpu:
- - gdkchan
- - riperiperi
- - LDj3SNuD
+ - GreemDev
gpu:
- - gdkchan
- - riperiperi
+ - GreemDev
gui:
- - Ack77
- - emmauss
- - TSRBerry
+ - GreemDev
horizon:
- - gdkchan
- - Ack77
- - TSRBerry
+ - GreemDev
infra:
- - TSRBerry
+ - GreemDev
default:
- '@developers'
diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml
deleted file mode 100644
index bfed328c9..000000000
--- a/.github/workflows/flatpak.yml
+++ /dev/null
@@ -1,212 +0,0 @@
-name: Flatpak release job
-
-on:
- workflow_call:
- inputs:
- ryujinx_version:
- required: true
- type: string
-
-
-concurrency: flatpak-release
-
-jobs:
- release:
- timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }}
- runs-on: ubuntu-latest
-
- env:
- NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
- GIT_COMMITTER_NAME: "RyujinxBot"
- GIT_COMMITTER_EMAIL: "61127645+RyujinxBot@users.noreply.github.com"
- RYUJINX_PROJECT_FILE: "src/Ryujinx/Ryujinx.csproj"
- NUGET_SOURCES_DESTDIR: "nuget-sources"
- RYUJINX_VERSION: "${{ inputs.ryujinx_version }}"
-
- steps:
- - uses: actions/checkout@v4
- with:
- path: Ryujinx
-
- - uses: actions/setup-dotnet@v4
- with:
- global-json-file: Ryujinx/global.json
-
- - name: Get version info
- id: version_info
- working-directory: Ryujinx
- run: |
- echo "git_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
-
- - uses: actions/checkout@v4
- with:
- repository: flathub/org.ryujinx.Ryujinx
- token: ${{ secrets.RYUJINX_BOT_PAT }}
- submodules: recursive
- path: flathub
-
- - name: Install dependencies
- run: python -m pip install PyYAML lxml
-
- - name: Restore Nuget packages
- # With .NET 8.0.100, Microsoft.NET.ILLink.Tasks isn't restored by default and only seems to appears when publishing.
- # So we just publish to grab the dependencies
- run: |
- dotnet publish -c Release -r linux-x64 Ryujinx/${{ env.RYUJINX_PROJECT_FILE }} --self-contained
- dotnet publish -c Release -r linux-arm64 Ryujinx/${{ env.RYUJINX_PROJECT_FILE }} --self-contained
-
- - name: Generate nuget_sources.json
- shell: python
- run: |
- import hashlib
- from pathlib import Path
- import base64
- import binascii
- import json
- import os
- import urllib.request
-
- sources = []
-
-
- def create_source_from_external(name, version):
- full_dir_path = Path(os.environ["NUGET_PACKAGES"]).joinpath(name).joinpath(version)
- os.makedirs(full_dir_path, exist_ok=True)
-
- filename = "{}.{}.nupkg".format(name, version)
- url = "https://api.nuget.org/v3-flatcontainer/{}/{}/{}".format(
- name, version, filename
- )
-
- print(f"Processing {url}...")
- response = urllib.request.urlopen(url)
- sha512 = hashlib.sha512(response.read()).hexdigest()
-
- return {
- "type": "file",
- "url": url,
- "sha512": sha512,
- "dest": os.environ["NUGET_SOURCES_DESTDIR"],
- "dest-filename": filename,
- }
-
-
- has_added_x64_apphost = False
-
- for path in Path(os.environ["NUGET_PACKAGES"]).glob("**/*.nupkg.sha512"):
- name = path.parent.parent.name
- version = path.parent.name
- filename = "{}.{}.nupkg".format(name, version)
- url = "https://api.nuget.org/v3-flatcontainer/{}/{}/{}".format(
- name, version, filename
- )
-
- with path.open() as fp:
- sha512 = binascii.hexlify(base64.b64decode(fp.read())).decode("ascii")
-
- sources.append(
- {
- "type": "file",
- "url": url,
- "sha512": sha512,
- "dest": os.environ["NUGET_SOURCES_DESTDIR"],
- "dest-filename": filename,
- }
- )
-
- # .NET will not add current installed application host to the list, force inject it here.
- if not has_added_x64_apphost and name.startswith('microsoft.netcore.app.host'):
- sources.append(create_source_from_external("microsoft.netcore.app.host.linux-x64", version))
- has_added_x64_apphost = True
-
- with open("flathub/nuget_sources.json", "w") as fp:
- json.dump(sources, fp, indent=4)
-
- - name: Update flatpak metadata
- id: metadata
- env:
- RYUJINX_GIT_HASH: ${{ steps.version_info.outputs.git_hash }}
- shell: python
- run: |
- import hashlib
- import hmac
- import json
- import os
- import yaml
- from datetime import datetime
- from lxml import etree
-
-
- # Ensure we don't destroy multiline strings
- def str_presenter(dumper, data):
- if len(data.splitlines()) > 1:
- return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|")
- return dumper.represent_scalar("tag:yaml.org,2002:str", data)
-
-
- yaml.representer.SafeRepresenter.add_representer(str, str_presenter)
-
- yaml_file = "flathub/org.ryujinx.Ryujinx.yml"
- xml_file = "flathub/org.ryujinx.Ryujinx.appdata.xml"
-
- with open(yaml_file, "r") as f:
- data = yaml.safe_load(f)
-
- for source in data["modules"][0]["sources"]:
- if type(source) is str:
- continue
- if (
- source["type"] == "git"
- and source["url"] == "https://github.com/Ryujinx/Ryujinx.git"
- ):
- source["commit"] = os.environ['RYUJINX_GIT_HASH']
-
- is_same_version = data["modules"][0]["build-options"]["env"]["RYUJINX_VERSION"] == os.environ['RYUJINX_VERSION']
-
- with open(os.environ['GITHUB_OUTPUT'], "a") as gh_out:
- if is_same_version:
- gh_out.write(f"commit_message=Retry update to {os.environ['RYUJINX_VERSION']}")
- else:
- gh_out.write(f"commit_message=Update to {os.environ['RYUJINX_VERSION']}")
-
- if not is_same_version:
- data["modules"][0]["build-options"]["env"]["RYUJINX_VERSION"] = os.environ['RYUJINX_VERSION']
-
- with open(yaml_file, "w") as f:
- yaml.safe_dump(data, f, sort_keys=False)
-
- parser = etree.XMLParser(remove_blank_text=True)
- tree = etree.parse(xml_file, parser)
-
- root = tree.getroot()
-
- releases = root.find("releases")
-
- element = etree.Element("release")
- element.set("version", os.environ['RYUJINX_VERSION'])
- element.set("date", datetime.now().date().isoformat())
- releases.insert(0, element)
-
- # Ensure 4 spaces
- etree.indent(root, space=" ")
-
- with open(xml_file, "wb") as f:
- f.write(
- etree.tostring(
- tree,
- pretty_print=True,
- encoding="UTF-8",
- doctype='',
- )
- )
-
- - name: Push flatpak update
- working-directory: flathub
- env:
- COMMIT_MESSAGE: ${{ steps.metadata.outputs.commit_message }}
- run: |
- git config user.name "${{ env.GIT_COMMITTER_NAME }}"
- git config user.email "${{ env.GIT_COMMITTER_EMAIL }}"
- git add .
- git commit -m "$COMMIT_MESSAGE"
- git push origin master
\ No newline at end of file
diff --git a/.github/workflows/mako.yml b/.github/workflows/mako.yml
deleted file mode 100644
index 19165fb04..000000000
--- a/.github/workflows/mako.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: Mako
-on:
- discussion:
- types: [created, edited, answered, unanswered, category_changed]
- discussion_comment:
- types: [created, edited]
- gollum:
- issue_comment:
- types: [created, edited]
- issues:
- types: [opened, edited, reopened, pinned, milestoned, demilestoned, assigned, unassigned, labeled, unlabeled]
- pull_request_target:
- types: [opened, edited, reopened, synchronize, ready_for_review, assigned, unassigned]
-
-jobs:
- tasks:
- name: Run Ryujinx tasks
- permissions:
- actions: read
- contents: read
- discussions: write
- issues: write
- pull-requests: write
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- if: github.event_name == 'pull_request_target'
- with:
- # Ensure we pin the source origin as pull_request_target run under forks.
- fetch-depth: 0
- repository: Ryujinx/Ryujinx
- ref: master
-
- - name: Run Mako command
- uses: Ryujinx/Ryujinx-Mako@master
- with:
- command: exec-ryujinx-tasks
- args: --event-name "${{ github.event_name }}" --event-path "${{ github.event_path }}" -w "${{ github.workspace }}" "${{ github.repository }}" "${{ github.run_id }}"
- app_id: ${{ secrets.MAKO_APP_ID }}
- private_key: ${{ secrets.MAKO_PRIVATE_KEY }}
- installation_id: ${{ secrets.MAKO_INSTALLATION_ID }}
diff --git a/.github/workflows/pr_triage.yml b/.github/workflows/pr_triage.yml
index d8d66b70f..2c4936159 100644
--- a/.github/workflows/pr_triage.yml
+++ b/.github/workflows/pr_triage.yml
@@ -18,7 +18,7 @@ jobs:
with:
# Ensure we pin the source origin as pull_request_target run under forks.
fetch-depth: 0
- repository: Ryujinx/Ryujinx
+ repository: GreemDev/Ryujinx
ref: master
- name: Update labels based on changes
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 301024cf8..c474184b4 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -15,8 +15,6 @@
-
-
@@ -34,7 +32,6 @@
-
@@ -49,4 +46,4 @@
-
\ No newline at end of file
+
diff --git a/Ryujinx.sln b/Ryujinx.sln
index 76ebd573f..8a582d32d 100644
--- a/Ryujinx.sln
+++ b/Ryujinx.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32228.430
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Gtk3", "src\Ryujinx.Gtk3\Ryujinx.Gtk3.csproj", "{074045D4-3ED2-4711-9169-E385F2BFB5A0}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests", "src\Ryujinx.Tests\Ryujinx.Tests.csproj", "{EBB55AEA-C7D7-4DEB-BF96-FA1789E225E9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Unicorn", "src\Ryujinx.Tests.Unicorn\Ryujinx.Tests.Unicorn.csproj", "{D8F72938-78EF-4E8C-BAFE-531C9C3C8F15}"
@@ -95,10 +93,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {074045D4-3ED2-4711-9169-E385F2BFB5A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {074045D4-3ED2-4711-9169-E385F2BFB5A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {074045D4-3ED2-4711-9169-E385F2BFB5A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {074045D4-3ED2-4711-9169-E385F2BFB5A0}.Release|Any CPU.Build.0 = Release|Any CPU
{EBB55AEA-C7D7-4DEB-BF96-FA1789E225E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBB55AEA-C7D7-4DEB-BF96-FA1789E225E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBB55AEA-C7D7-4DEB-BF96-FA1789E225E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/src/Ryujinx.HLE/UI/IHostUIHandler.cs b/src/Ryujinx.HLE/UI/IHostUIHandler.cs
index 3b3a430ee..8debfcca0 100644
--- a/src/Ryujinx.HLE/UI/IHostUIHandler.cs
+++ b/src/Ryujinx.HLE/UI/IHostUIHandler.cs
@@ -25,7 +25,7 @@ namespace Ryujinx.HLE.UI
bool DisplayMessageDialog(ControllerAppletUIArgs args);
///
- /// Tell the UI that we need to transisition to another program.
+ /// Tell the UI that we need to transition to another program.
///
/// The device instance.
/// The program kind.
diff --git a/src/Ryujinx/Ryujinx.ico b/src/Ryujinx/Ryujinx.ico
index edf1b93f7..679ff6e0d 100644
Binary files a/src/Ryujinx/Ryujinx.ico and b/src/Ryujinx/Ryujinx.ico differ
diff --git a/src/Ryujinx/UI/Helpers/LocalizedNeverConverter.cs b/src/Ryujinx/UI/Helpers/LocalizedNeverConverter.cs
index 26fe36c4c..337404233 100644
--- a/src/Ryujinx/UI/Helpers/LocalizedNeverConverter.cs
+++ b/src/Ryujinx/UI/Helpers/LocalizedNeverConverter.cs
@@ -11,6 +11,7 @@ namespace Ryujinx.Ava.UI.Helpers
/// This makes sure that the string "Never" that's returned by is properly localized in the Avalonia UI.
/// After the Avalonia UI has been made the default and the GTK UI is removed, should be updated to directly return a localized string.
///
+ // TODO: localize ValueFormatUtils.FormateDateTime
internal class LocalizedNeverConverter : MarkupExtension, IValueConverter
{
private static readonly LocalizedNeverConverter _instance = new();