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();