feat: fetch token rates across accounts

Explanation
The TokenRatesController used to only fetch prices for tokens on the currently selected account.  With this change, it will fetch prices for tokens across all accounts.
This will power UI features like showing portfolio $ values in the account picker, and avoids needing to re-fetch prices when switching accounts which causes some UI lag.
References

Changelog

@metamask/assets-controllers

CHANGED: TokenRatesController now fetches prices for tokens across all accounts

Checklist

[ ] I've updated the test suite for new or updated code as appropriate
[ ] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
[ ] I've highlighted breaking changes using the "BREAKING" category above as appropriate
[ ] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@metamaskbot publish-preview


Chore: refactoring

What kind of change does this PR introduce?
Refactoring
Did you add tests for your changes?
manual testing :smile:
If relevant, did you update the README?
not required
Summary
Consistent getting limit options, also don't use 0 as default limit value because this is misleading when reading the code: if no limit encode all, if limit enable encode only files smaller than limit.
Does this PR introduce a breaking change?
No
Other information
not required

@michael-ciniawsky I'll just do rebase after webpack-defaults :smile:

/cc @michael-ciniawsky can we merge this before webpack-defaults was applied?

From experience, the rebase after defaults is a pain. If it's beneficial to the current major version range, land it before defaults so consumers can benefit from it without having to upgrade.

From experience, the rebase after defaults is a pain. If it's beneficial to the current major version range, land it before defaults so consumers can benefit from it without having to upgrade.

/cc @michael-ciniawsky done
also remove this.cacheable && this.cacheable();

/cc @d3viant0ne


add non-conservative convection term

add non-conservative convection term
allow to swift between conservative convection and non-conservative convection in steppers

A couple more general remarks:
Can you run the pre-commit hook, being in the same folder as the repo and then:
pip install pre-commit
pre-commit install --install-hooks
pre-commit run --all-files

This should resolve code-linting checks.
And please keep docstrings to 80 characters in length if possible

Thanks for the updates, some last stylistic requests:

In the _convection.py file: please add a newline under the **Arguments:** header, otherwise mkdocs will not correctly produce the documentation
Please use rewrap to ensure that the docstrings are at max 80 characters.

Hi, Felix,
The new commit has been pushed; please take a look.

Thanks for all the work.
I just went over the code for a last time, and I think that the nonconservative eval functions (both for multi-channel and single-channel) should use the u_hat_dealiased for creating nabla_u in lines 167 and 228 of _convection.py. What do you think?

Hi, Felix,
Good point!
To be honest, I am not sure about that. Do you think the linear operation will change the frequency of the field?
Theoretically,  I would prefer to dealias the nabla_u as it is the actual one that does the nonlinear operation.
Anyway, I will currently modify the nabla_u term with the dealiased value; we could do some experiments later to see the difference.

The linear operator (i.e., the derivative_operator) does not move energy between the modes.
Aliasing occurs when we element-wise multiply two states in state space. To avoid creating any (undesirable) aliases, according to Orszag's 2/3 rule, both factors in the product must be zero-ed out in the upper 1/3 frequency range (which is what self. dealias does). Hence, we need to have both nabla_u and u being dealiased. At least, that's my current understanding of dealiasing. We can talk about it more in a separate thread.
With the modifications, I will now merge the PR. Thanks for the work :). If you are up for it, it would also be cool to extend some of the unit tests for the new four permutations of convection, but I'd say that's a separate PR.


Linux modding tutorial (Wine, Proton, Lutris)...maybe?

It's not really a bug but rather tutorial request. I'm on Pop!_OS using Lutris for gaming. Everything works just fine. Unfortunately I can't figure out how to run 7th Heaven with any version of FF7. Could anyone provide a simple tutorial on how to mod FF VII with Wine or Steam + Ptoton version?
Thanks a lot!

Hi @junglized,
Making 7th working on Linux is currently a painful process. If you can manage to make it work under Wine, then you should be good to go on other layers using it. Porting it natively wouldn't make much sense as you'd need Wine to play the game anyway and hooking the Linux memory process would be too cumberstone.
Consider trying steps described in here to see if you can make it work: https://appdb.winehq.org/objectManager.php?sClass=version&iId=38203
Let us know if you succeed.
Cheers,
Julian

I wish 7th Heaven was tested more thoroughly with Wine (or Steam Proton) on Linux to make it usable for those, who choose this solution over proprietary systems, such as Windows.
Best regsrds!

I stumbled across this, as I was interested in getting modded FF7 running under Linux, as it's my daily driver.
Unfortunately, currently there is no way to do so, due to the disc check on launch, due to missing implementation in Mono: https://github.com/mono/mono/blob/bdd772531d379b4e78593587d15113c37edd4a64/mcs/class/corlib/System.IO/DriveInfo.cs#L109
In order to stand a chance in getting it working, you would need to:

Get this VolumeLabel implemented in Mono for Windows
Push for this to be released in both Mono & wine-mono

For the record, I was able to get as far as this point using the following ( Ubuntu with the Steam FF7 installed ):
#!/bin/bash

export WINEPREFIX=/home/${USER}/.local/share/wineprefixes/ff7-7th-heaven
FF7DIR="/home/${USER}/.steam/debian-installation/steamapps/common/FINAL FANTASY VII/" # Assuming a default Steam install here - feel free to change as needed
FHDIR="${WINEPREFIX}/drive_c/Program Files/7th Heaven"

# Add PPA for cdemu
sudo add-apt-repository ppa:cdemu/ppa
sudo apt-get update
sudo apt install cdemu-client -y # Swap for gcdemu if you would rather also have a GUI

# Setup prefix
wine64 wineboot
winetricks dxvk # unsure if needed yet - usually a safe bet for the game itself
winetricks corefonts
winetricks winxp # work around file menus crashing using the Vista+ version

# Install wine-mono - .NET 4.8 in wine is horribly broken
wget https://github.com/madewokherd/wine-mono/releases/download/wine-mono-7.1.1/wine-mono-7.1.1-x86.msi
wine64 msiexec /i wine-mono-7.1.1-x86.msi
rm wine-mono-7.1.1-x86.msi

# Run installer
wget https://files.tsunamods.com/7ThHeavenSetup.exe
wine64 7ThHeavenSetup.exe # The installer will crash at the end, due to being unable to create a shortcut - the core install still works

# make a few dirs that don't exist but show up in the guide
mkdir -p "${FF7DIR}/mods/Textures"
mkdir -p "${FF7DIR}/mods/7th Heaven"

# Load the Disc into cdemu
cdemu load 0 "${FHDIR}/Resources/FF7DISC1.ISO"
# Mount the disc itself, so WINE can auto-detect it
pause

# Run it
wine64 "${WINEPREFIX}/drive_c/Program Files/7th Heaven/7th Heaven.exe"

This would get you as far as launching 7th Heaven and doing basic configuration, but without being able to pass the CD Check, there is very little anyone can do.
For the Tsunamods Team: If we were able to get this resolved elsewhere first, would you be open to offering this as an option? I'd be more than willing to spend the time to provide support, to make it happen.

# Load the Disc into cdemu
cdemu load 0 "${FHDIR}/Resources/FF7DISC1.ISO"
# Mount the disc itself, so WINE can auto-detect it
pause

Okies, so for Linux, I will add a setting that is "DoNotMount" AKA 7th heaven won't attempt to automount the disk. that should get around that problem for you, we should have that as an option anyway so if someone wants they can call a Partition or something else that name and so don't have to have it mounted

After unsuccessful attempts of running 7th Heaven with Wine or Proton I ditched it and moved to The Reunion installed with Protontricks. Works out of the box. No so many mods but the most relevant for me - SYW and Ninostyle characters - are present for and function without a problem.

unsuccessful attempts of running 7th Heaven with Wine or Proton I ditched it and moved to The Reunion

Would you be willing to test the new 7th heaven when it's released it should detect reunion and handle it and launch the version without reunion, and then when the game exits undo the changes so that reunion works again?

unsuccessful attempts of running 7th Heaven with Wine or Proton I ditched it and moved to The Reunion

Would you be willing to test the new 7th heaven when it's released it should detect reunion and handle it and launch the version without reunion, and then when the game exits undo the changes so that reunion works again?

So, in other words, would you like me to try installing it over The Reunion with Steam + Proton version of FF VII (Linux Mint 20.3 + Steam/Proton + FF VII + The Reunion is my current environment/game setup)?

After getting stuck in this evening & trying to get further - looks like there is more to be done under Wine.
I was able to patch my own install locally to return the correct disc label, which got the game launched as a vanilla install.
Once you try to add mods, things fall apart around EasyHook. First it needs  aSystem.Runtime.Remoting.Channels.Ipc.IpcServerChannel constructor that is missing from the Mono distribution.
If you get past that - FF7 simply crashes. Unsure at this point if its the hooks in 7th Heaven, EasyHook itself or missing stuff in wine / mono.
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|Copying EasyHook.dll to FF7 path (if not found or older version detected) ...
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|       skipped copying EasyHook.dll ...
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|       skipped copying EasyHook32.dll ...
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|Checking if Reunion mod is installed ...
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|       found: False
23:24:30|INFO|SeventhHeaven.Classes.GameLauncher|Launching additional programs to run (if any) ...
23:24:31|INFO|SeventhHeaven.Classes.GameLauncher|Writing temporary runtime profile file to C:\users\simon\Temp\tmp7e19183.tmp ...
23:24:31|INFO|SeventhHeaven.Classes.GameLauncher|Attempting to inject with EasyHook ...
23:25:24|WARN|SeventhHeaven.Classes.GameLauncher|       received errors: STATUS_INTERNAL_ERROR: Unknown error in injected assembler code. (Code: 5);  ...

Okies, so for Linux, I will add a setting that is "DoNotMount" AKA 7th heaven won't attempt to automount the disk. that should get around that problem for you, we should have that as an option anyway so if someone wants they can call a Partition or something else that name and so don't have to have it mounted

While appreciated, not sure if it's necessary beyond just failing fast.
WinCDEmu doesn't seem to work at all in Wine, but have not really had time to look into why
The main problem is that the stub simply returns the path. In Wine, this means it would be the drive letter itself - nothing could ever match without fixing / hacking Mono.

After a bit more experimentation with different launchers, was able to get the base game to load under 7th Heaven without mods.
Using Bottles:

Create New Gaming Bottle
Install Steam under "Installers"
Install dotnet48 under "Dependencies"
Enable "use bottles runtime" under "Preferences"
Downgrade DXVK to 1.8.1 under "Preferences" ( to avoid graphical glitches that will make install difficult )
Install FF7 via Steam
Run 7H Installer via "Run Executable"
Mount CD as before ( if you are using the Flatpak version of Bottles, you need to make sure it has permission to access the disk )

At this point, it's using the real .NET 4.8 & a proper Steam install location, so everything runs correctly as before.
So far I've only been able to get the game to reliably launch with DX11, so make sure this is selected in the launcher.
I don't get any SFX, only the BGM - entirely possible I'm missing some config here, but haven't had time to dig into that in more detail
Sadly running with mods doesn't appear to be possible still - as soon as EasyHook gets involved, the game crashes (albeit with a different stack trace this time):

it appears that SHA isn't implemented in WINE 7.2? ( the version used at the time of this comment)
Not being familiar with the hooking system being used - is it possible to avoid this?
Overall, the game was far more stable - Was able to play through as far as escaping the first reactor, without any real issues, etc.

it appears that SHA isn't implemented in WINE 7.2? ( the version used at the time of this comment)

strange because it's listed in the source as being there, https://source.winehq.org/WineAPI/A_SHAFinal.html

Finally got a break through - the fork of WINE being used was at fault. Switched to a different runner & got it working immediately. Tested a few minutes in with Cosmo Memory & Cosmo FMV without issue.
The config I used:
Arch: win64
Creation_Date: '2022-03-05 12:15:48.176125'
Custom_Path: false
DLL_Overrides: {}
DXVK: dxvk-1.9.4
Environment: Gaming
Environment_Variables: {}
Installed_Dependencies:
- dotnet40
- dotnet48
- d3dx9
- msls31
- riched20
- allfonts
- d3dcompiler_43
- d3dcompiler_47
- vcredist2019
Latest_Executables: []
NVAPI: dxvk-nvapi-v0.5.2
Name: 7th Heaven
Parameters:
    aco_compiler: false
    custom_dpi: 96
    discrete_gpu: true
    dxvk: true
    dxvk_hud: false
    dxvk_nvapi: false
    fixme_logs: false
    fsr: false
    fsr_level: 5
    fullscreen_capture: false
    gamemode: false
    gamescope: false
    gamescope_borderless: false
    gamescope_fps: 0
    gamescope_fps_no_focus: 0
    gamescope_fullscreen: true
    gamescope_game_height: 0
    gamescope_game_width: 0
    gamescope_scaling: false
    gamescope_window_height: 0
    gamescope_window_width: 0
    pulseaudio_latency: true
    sync: esync
    take_focus: false
    use_runtime: true
    virtual_desktop: false
    virtual_desktop_res: 1280x720
    vkd3d: false
Path: 7th-Heaven
Runner: vaniglia-6.23
State: 9
Uninstallers:
    allfonts: false
    d3dcompiler_43: false
    d3dcompiler_47: false
    d3dx9: false
    dotnet40: Microsoft .NET Framework 4 Extended
    dotnet48: true
    msls31: false
    riched20: false
    vcredist2019: true
Update_Date: '2022-03-05 13:18:20.710904'
VKD3D: vkd3d-proton-2.5
Versioning: true
Windows: win10
WorkingDir: ''

Save this config & import it in Bottles. Should then just be a case of:

Install Steam
Install FF7
Disable DXVK ( for the duration of setting up 7th Heaven )
Install 7th Heaven
Configure Mods & set DX11
Enable DXVK ( only when you intend to play )

and enjoy:

Great progress over there!
What do you think about creating a Bottle Installer recipe to make it easy for other users? https://maintainers.usebottles.com/installers/Introduction
Would be really nice to have 7th Heaven in the list. Thank you in advance!

What do you think about creating a Bottle Installer recipe to make it easy for other users? https://maintainers.usebottles.com/installers/Introduction

Can certainly look into doing one. On the face of it, they don't appear to need to be silent installs, which should make it easier. That said - still need to get Steam to install FF7 in the first place.

On the face of it - creating the installer might not be practical yet.
Given the Steam version appears to be the golden standard for installs & there doesn't appear to be any way to chain installers, it looks like we would have to maintain our own Installer for Steam as part of this.
With Bottles releasing experimental support for Steam Proton fixes - would be interesting to reach out to the devs, to see if there are plans to support this. In our case, all we really need is FF7 + the last bits needed to get 7th heaven.

If you're up for it, feel free to approach them and follow up this topic. The easier we manage to get this up and running on Linux, the better. Keep us updated and thank you in advance for the time spent on this!

Apologies, but I have to interject here a little; I seem to be running into a similar (albeit not identical) issue @sjenkins7 was having with EasyHook.
In my case (Arch, Kernel 5.17, KDE 5.42), it's a standalone prefix created specifically for 7H with Lutris (only needs dotnet48 vcrun2019) so I've gotten to the point of the mod manager running and detecting/configuring mods, and running vanilla FF7 works as well (Game Driver/FFNx Stable set to use Vulkan, and the prefix has a virtual D:\ set to a random directory and given the label FF7DISC1).

Unfortunately, running with mods fails at EasyHook with 'Code 5'.

But there is no visible Wine crash/debugger window appearing, and running the instance from a terminal gives the most generic and least helpful line prints I've ever seen.

This has been tried with System (mainline) Wine 7.5, lutris' 7.2 fshack, 6.21 fshack, and GE 7-7; all of which exhibit the same symptoms. I've tried using the same Bottles-sourced fork used in the referenced comments above, but the prefix won't even launch with it using Lutris - and I've too many other Windows/GOG games setup with it to even consider switching frontends.

On a related note, the Bottles idea is nice, but it does leave out what's probably a small but existing minority that uses the original 1998 4-CD release. fwiw, it's clearly much less of a hassle to get FF7 running without WineSteam on top of it.

Unfortunately, running with mods fails at EasyHook with 'Code 5'.

This was in line with what I saw when putting the notes together. The only way i managed to get it working, was with the bottle's distributed vaniglia variant. Anything else tripped with this same error & a crash of the FF7 process. It's odd that you aren't getting the debugger show up though
If someone was able to narrow this down, we could figure out where to ask for support, be it a patch in WINE or a fix to a bad hook. At very least we have access to the source of both 7th Heaven & EasyHook, which can help. I can go rummaging around the 7th heaven source and try stuff out, but I'm not sure how much success there would be, as I'm not a WINE developer

On a related note, the Bottles idea is nice, but it does leave out what's probably a small but existing minority that uses the original 1998 4-CD release

While I was obviously putting these notes together under the guise of the Steam version, I believe the CD version could be substituted - you wouldn't need to mount the ISO needed for the Steam version, because you already have the original disc. Unfortunately I don't have one to hand to prove either way.

You could try enabling the Code 5 Fix flag in Settings -> Game Launcher and see how it goes.
The code 5 fix is required even on Windows depending on various circumstances. Unfortunately it's a legacy thing we have from EasyHook and we can't change that, not in the near future.

You could try enabling the Code 5 Fix flag in Settings -> Game Launcher and see how it goes.
The code 5 fix is required even on Windows depending on various circumstances. Unfortunately it's a legacy thing we have from EasyHook and we can't change that, not in the near future.

This I have tried, but it initially caused 7H to crash outright (Object Not Set to a Reference-type deal). Unfortunately, looking at 7H's source, all the Code 5 fix does is apply a regkey for HiDPI compatibility(?) - a setting that does not apply to Wine at all (it just acts like it's 100% scale). Adding the same reg key path in the prefix gets past the crash, but (ironically) causes the same Code 5 error regardless.
And @sjenkins7, my rambling was not intended to frame you in an undesirable spotlight and I hope it didn't come off as such. It is just strange that Bottles' fork specifically is content with EasyHook, but not any other popular upstream/downstream Wine variant - and that it has to seemingly throw a tantrum when used elsewhere outside of its own program driiives me up a small wall.

And @sjenkins7, my rambling was not intended to frame you in an undesirable spotlight and I hope it didn't come off as such. It is just strange that Bottles' fork specifically is content with EasyHook, but not any other popular upstream/downstream Wine variant - and that it has to seemingly throw a tantrum when used elsewhere outside of its own program driiives me up a small wall.

Don't worry - wasn't taken as that :)
For what it's worth, I used to use Lutris a lot before i rebuild my setup on Endeavour recently ( after putting the above notes together ). Always intended to swing back around for this - once I have something 100% working all of the time, I can isolate the differences in the prefixes. This might help get things working across the board.
Also worth noting the installer logic for Bottles made it into a release. I will take a look at trying to automate as much of the install as I can.

So from a technical standpoint normally if you are getting read error's at 0x0 addresses, the application using the memory addresses does not have application offset applied, Normally Applications in an OS is provided with an offset at the start and all memory addresses are Offset+internal position, Easyhook needs to know the memory offset location for the ff7 exe, and normally windows hold this against the application process (in the process manager) so 7th heaven provides the process ID to EasyHook, EasyHook can then talk to the Windows Process Manager to get it's memory offset if your getting 0x0 addresses across the board it means this is failing and getting a NULL response as NULL = 0x0

@sjenkins7 Well, good to know we both share a common distro together, so we can rule out another possible variable.
@barkermn01 I tried your VS build - even going as far as making a new 32-bit prefix specifically for it with the same changes I noted before - but unfortunately it made no difference. Same symptoms and output as before.

An update - I have the start of an installer for bottles available at: https://github.com/sjenkins7/bottles-programs
I'd encourage everyone interested to test this out and let me know if you have any issues. Please use a custom environment, rather than the Gaming environment, to select the correct runtime
A few things to be aware of:
If you are using Steam with Steam Guard - you might find you need to tweak settings to get it working ( https://github.com/bottlesdevs/programs/issues/57 )
FF7 is not automatically installed - Either the 1998 CDs or via Steam
Recommended settings to tweak once installed ( should we look to make these the default if running in wine? ):

Game Driver ( will need to launch vanilla for the first time before you can set these ):

set Graphics API to DirectX 12( Game appears to always crash without this )

Set Music Option to VGMStream ( No music without this )

Game Launcher:

Do not auto mount Disk (This is non-functional)

Set Auto-Mount Game Disk to off

Set Auto-Dismount Game Disk to off

Full details can be found at: https://github.com/sjenkins7/bottles-programs/blob/feature/7th-heaven/Reviews/7th-heaven.md

set Graphics API to DirectX 12( Game appears to always crash without this )

@sjenkins7 Shouldn't it be able to run fine with the Vulkan API? It worked for me when running FF7 on its own with Nx.

@sjenkins7 Shouldn't it be able to run fine with the Vulkan API? It worked for me when running FF7 on its own with Nx.

@SeongGino  I found that it was frequently causing lockups, usually before you get into the 1st reactor. This often locks up X11 as well for a few seconds, though it recovers ( the game itself doesn't and has to be killed ). At first i thought it was a texture mod causing it, but I was still hitting this without any mods.
So far DX12 hasn't caused any issues for me - tested as far as the second reactor.

@sjenkins7 Shouldn't it be able to run fine with the Vulkan API? It worked for me when running FF7 on its own with Nx.

@SeongGino I found that it was frequently causing lockups, usually before you get into the 1st reactor. This often locks up X11 as well for a few seconds, though it recovers ( the game itself doesn't and has to be killed ). At first i thought it was a texture mod causing it, but I was still hitting this without any mods.
So far DX12 hasn't caused any issues for me - tested as far as the second reactor.

That sounds more like a driver crash. Especially since DX12 over VKD3D has an extra overhead that limits GPU utilization...

That sounds more like a driver crash. Especially since DX12 over VKD3D has an extra overhead that limits GPU utilization...

Most likely. In my case, i'm favouring the stability - Even when rocking a fair amount of mods in my current test run, its sticking solidly to the 15/30/60 FPS depending on the area. No sudden drops etc, even with an older card ( i run this on a GTX 1070 ).

Worth noting that I didn't enable VKD3D in the installer either - so far it's proven unnecessary to do so

Small update for everyone:
I've pushed a new version of the installer - hopefully people can try it out and let me know how it works.
Mounting the CD isn't needed any more - the installer scripts the setup of an empty FF7 CD to satisfy the game. Messing with the mount settings is also not needed.
Install guide for this version:

Create Custom Bottle
Install Steam
Login to steam and install FF7 ( you may bump into https://github.com/bottlesdevs/Bottles/issues/1401 )
Install 7th Heaven
Launch game for the first time ( crash )
set Graphics API to DirectX 12

I opened https://github.com/tsunamods-codes/7th-Heaven/pull/85 to streamline the install. The installer will automatically launch 7th heaven without this, which isn't desired ( because we try to install FF7 directly before this, it will launch with no installed FF7 & you have to fill in the directory config yourself otherwise ). Once the 2 remaining Bottles bugs get resolved, I can streamline this into an (almost) 1-click install ( I can't auto login & grab FF7 from Steam sadly! )
The game still hard crashes on first launch, because you still need to specify DX12. Not sure what we can do to specify this in advance? Can't fill this in because FFNx.cfg doesn't exist on first launch?

Great progress so far, thank you for pushing hard on this topic. Ideally once this process has been streamlined we could theoretically find a way to add 7th on the SteamDeck library. Looking forward into this.

The game still hard crashes on first launch, because you still need to specify DX12. Not sure what we can do to specify this in advance?

You could automate the installation of the latest FFNx stable using the manual installation instructions, change the backend renderer parameter to what you desire and 7th will automatically handle the rest on launch.
I also merged the PR, thank you again.

You could automate the installation of the latest FFNx stable using the manual installation instructions, change the backend renderer parameter to what you desire and 7th will automatically handle the rest on launch.

Not sure how practical this would be - I would be replicating a lot of 7th Heavens logic into a system that doesn't have this kind of capability yet:

How can I guarantee the install directory exists? Steam doesn't provide this, outside of steamcmd, which would only be viable if I could download FF7 without an account
Installers are done via exe / msi - there is no current capability to unpack a ZIP

This could be done via dependencies, but then the first point applies - dependencies are installed before any installer steps are executed.

Other things I have to consider ( though admittedly, I could do this as a separate installer ):

What if the user wants to use the CDs?
Where is the install directory? Particularly important if i need to cater for multiple releases

While I can update config as part of the install steps, either:

FFNx.toml would need to exist after running the 7th Heaven installer ( maybe 7th heaven needs to download and manage FFNx as part of install, not when launching? )
I would have to bundle a pre-made FFNx.toml, which may cause more problems if it starts deviating.

Hello. Been spending hours attempting to get this process down to work with the Steam Deck and been having trouble trying to get this customer installer working in bottles. I've attempted the cd command listed above to copy below but it seems I'm still unable to get the customer installer to load up in the installer's section. Prior to this, I tried the earlier suggestion of getting 7th Heaven to work by using the script to make a custom bottle but was running into issues with the disc mount feature causing me to start over.
Can someone guide me as to how this CD command works to import 7th Heaven to bottles as an installer? Originally, I've just been using the + to add the installer that way.

Can someone guide me as to how this CD command works to import 7th Heaven to bottles as an installer? Originally, I've just been using the + to add the installer that way.

Because I haven't submitted the installer yet to the bottles maintainers, those wanting to test it in advance have to jump through additional hoops. The commands I mentioned before tell bottles to use my repository for installers, instead of the official one.
Assuming the Steam Deck doesn't change the install locations or have tools missing, the instructions provided should be enough. Unfortunately I don't have one to check, so I'd have to rely on screenshots etc..
Once the installer has been put to review & then accepted by the bottles maintainers, it will show up as any other installer without any of these extra steps. This is purely if you wish to test the installer beforehand

Seem to be running into the issue with the 7th heaven mounting the disco or even mounting the virtual disco when i swapped options as per mentioned earlier in the thread. The Bottle recipe calls for install steam then FF7 then 7th heaven. Given that all usually takes place within a fake C drive, does that mean that I would need to have FF7 be placed in the C drive created in bottles?
Given steam deck has it's built in steam application, it's made with it's own fake drive which can be accessed with bottles. Do you think that may be the reason the application is having trouble mounting a fake ISO? Or is there a separate setting that's suppose to help with that in the preferences?

Given steam deck has it's built in steam application, it's made with it's own fake drive which can be accessed with bottles. Do you think that may be the reason the application is having trouble mounting a fake ISO? Or is there a separate setting that's suppose to help with that in the preferences?

If you just name one of your drives to FF7DISC1 ( or 2 or 3 at the end ) and you use Play with Minimal Validation you'll be able to run the game skipping the disk mount logic.

Seem to be running into the issue with the 7th heaven mounting the disco or even mounting the virtual disco when i swapped options as per mentioned earlier in the thread. The Bottle recipe calls for install steam then FF7 then 7th heaven. Given that all usually takes place within a fake C drive, does that mean that I would need to have FF7 be placed in the C drive created in bottles?
Given steam deck has it's built in steam application, it's made with it's own fake drive which can be accessed with bottles. Do you think that may be the reason the application is having trouble mounting a fake ISO? Or is there a separate setting that's suppose to help with that in the preferences?

Hey, also a Steam Deck user that is interested in using 7th Heaven. Did you get yours to work with mods? If so, how did you get it to work? Any suggestions as I'm interested in trying this myself

I did managed to get this to work mods included. It wasn't the easiest process for me as I'm pretty  inept when it comes to linux but basically it was a process of Creating a Bottle with the recipe provided above > Renaming one of the drives in the bottles program to FF7DISC1 and then running the game. Keyboard and mouse highly recommended for setting up directories for 7th heaven. I had ended up moving my installed FF7 out of it's default location to one much more manageable by 7th Heaven's recognition. Same with mods.
It plays okay. There's some settings I've yet to tweak as my game tends to run slow given my mod load. I think for the most part, it's a matter of having to toggle DXVK off and on when messing with 7th Heaven so that it functions properly and the fact I'm not able to add it to steam to work that way from game mode.

That's awesome to hear. Did you install bottles via the terminal command posted above or was there any other steps involved?

No terminal. I used the long one posted above and created a config file and then just imported the settings in Bottles when making a Custom Bottle based off that long string you can copy from sjenkins above. I tried the terminal but was getting confused as it wasn't properly launching the program database that bottle populates for me.
It's been a bit since I tried messing with it again so I might try again with figuring out how to get this to work in gaming mode.

That's really unfortunate about not being to launch in game mode. Wonder if there is a solution for this

What do you mean exactly?

That's really unfortunate about not being to launch in game mode. Wonder if there is a solution for this

What do you mean exactly?

Steam Deck operates in gaming mode for their basic game launching ( Basically Steam Big Picture Mode ) but has a desktop mode for the traditional desktop experience where you can do all the fun backend stuff. Usually to get something to launch in gaming mode, you'd just add the program as a non-steam game in desktop mode and then you'd be able to launch the program from your library when you swap back to gaming mode.
Been trying to add bottles as a program shortcut and launch it that way to get to 7th Heaven and by proxy my modded FF7 but it doesn't seem to be a viable option that way. Haven't found a fix so just shelved it for now on my end.

That's really unfortunate about not being to launch in game mode. Wonder if there is a solution for this

What do you mean exactly?

Steam Deck operates in gaming mode for their basic game launching ( Basically Steam Big Picture Mode ) but has a desktop mode for the traditional desktop experience where you can do all the fun backend stuff. Usually to get something to launch in gaming mode, you'd just add the program as a non-steam game in desktop mode and then you'd be able to launch the program from your library when you swap back to gaming mode.
Been trying to add bottles as a program shortcut and launch it that way to get to 7th Heaven and by proxy my modded FF7 but it doesn't seem to be a viable option that way. Haven't found a fix so just shelved it for now on my end.

Did you install steam inside a custom bottle or were you able to use the pre-installed steam and then install FFVII from there?

Correct. I just used the pre-installed steam to download FFVII. The guide only seemed like installing steam first was necessary so that you could get access to FF7 and with the deck, I felt like I could cut that part out. Also yes, I had the flatpack version of bottles installed.

Apologies for the radio silence for a while - I've been super busy so unable to really catch up on things here.
It's increasingly looking like i'm back to step 1 again with this - Having pulled down the latest bottles and 7th heaven installer, its fairly broken again.
I'll start looking at getting things patched up and working on the installer branch I have, but it may take some time.
As an aside - it may pay for us to look into alternatives, such as providing our own setup via Flatpak. the FF14 community have done something very similar there, as they can now better control the libraries / runtimes. That said - not sure how that would work for us here, given we also need to source FF7 as well.

Just coming by to ask what is the current situation around this: I've seen multiple users reporting on Discord playing FF7 w/7th on a Steam Deck. Is there still anything required on our own end or can we close this issue? LMK, thanks

Work has been pretty busy so i've been unable to finish updating things. I've not been up-to-date with Discord, but that's some good news. I'll see what i can do about finishing updating stuff over this weekend.
I'd suggest not closing it until the launcher is public - it would also make the installation much much simpler for those involved

Still no joy - for whatever reason the only runner that I could get working previously is no longer available. Every other one either causes 7th Heaven to crash on launch, or causes the "code 5" issue, of which the workaround doesn't work at all in wine.
Because vaniglia is unavailable, unsure how Steam Deck users are currently able to use this at all.
Been trying to avoid making a fully native launcher to help lock down all these moving pieces, because it would take a fair amount of time. It's increasingly looking like I might not have alot of choice, unless we can deal with the underlying hooking mechanism ( which i suspect would just break everyone's existing mods.... ). At very least, a native launcher may make it easier for the Steam Deck users to run in Big Picture / gaming mode.
Don't suppose anyone on the team has time to chat about this in Discord in some detail?

Haven't checked the discord in a while but people have gotten 7th Heaven to work?
I was messing around with it a while ago and managed to get 7th Heaven installed using steam but was having errors whenever I added the game directory to it and tried to run it. I'm wondering if those users are running windows instead. If not, were they able to get it running in game mode?
One of the major hassles with it was the on screen keyboard kept getting stuck and would glitch out so very difficult to maneuver around using only the steam deck. Definitely need to plug it into an external dock

Anyone had any luck with this recently? I tried following the earlier Bottle approach today without much success (got 7th installed, but it failed to launch even the vanilla game).

Still the same behavior, and will probably stay this way until it's directly addressed.

Hi everyone!
Thanks sjenkins7 for the advice with vaniglia wine version. At the moment on Archlinux I can play ff7 with the new 7th heaven releases after downloading the wine fork from here and using a little script:
#!/bin/sh
ff7_path="<my ff7 game path>"
wine_bin="$ff7_path/vaniglia-6.23-x86_64/bin/wine"

export LC_ALL="C"
export WINEESYNC=1
export WINEPREFIX="$ff7_path/wine-ff7"

"$wine_bin" "7th Heaven.exe" /PROFILE:Default /LAUNCH /QUIT

Thanks also to The Tsunamods team for keeping the project alive.

Unfortunately, am unable to reproduce any working functionality with the linked Vaniglia fork:
Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed!
Monitored process exited.
Initial process has exited (return code: 32512)

Using latest Arch glibc.
The newest Vaniglia release doesn't even have a wine executable so Lutris doesn't see it.

Unfortunately, am unable to reproduce any working functionality with the linked Vaniglia fork:
Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed!
Monitored process exited.
Initial process has exited (return code: 32512)

Using latest Arch glibc. The newest Vaniglia release doesn't even have a wine executable so Lutris doesn't see it.

To call the wine fork from Lutris you would have to clean up the old library calls in the folder. To fix this I use the script I posted that calls the compiled Vaniglia binary from bash using the archlinux system libraries instead of the ones it carries. Try to use the script and you will see how the 7th heaven.exe starts.

To call the wine fork from Lutris you would have to clean up the old library calls in the folder. To avoid this I use the script I posted that calls the compiled Vaniglia binary from bash using the archlinux system libraries instead of the ones it carries. Try to use the script and you will see how the 7th heaven.exe starts.

Well from what I can tell, all your script does is set the WINEPREFIX, esync, whatever LC_ALL is, and runs the program using a designated wine version; all things Lutris does. I ended up setting the Disable Lutris Runtime setting for my 7th Heaven launcher... er, launcher--and Vaniglia works just fine.
Indeed, 7h hooks seems to work just fine with this specific Wine fork.
I experimented a bit, and the Vaniglia fork is the only one that seems to function with the hooks - allegedly it's "just" Wine Staging patches, but the corresponding Wine-Staging release throws a similar error to every other Wine release. But FWIW, Vaniglia 7.5 (i.e. the release before Vaniglia 7.4) also works. But the following release doesn't, and it seems every subsequent Vaniglia release strips out WoW64 support; hence the lack of a normal wine executable.
I'd also like to point out that using it with FSYNC enabled seems to not have any harmful effects. And now I'm wondering what the point was of using the LC_ALL=C flag...
P.S. Using this Wine version causes 7h to crash whenever clicking on anything that renders a dropdown menu, as well as simply hovering over the status bar/"click here to display logs" area, which is very easy to do by sheer accident.

For what it's worth, I was eventually able to get everything working on Steam Deck once I made sure I was using the vaniglia runner. The other stumbling block was setting the drive label with wineconfig not working, but I eventually got around that by placing a .wimdows-label file in the drive directory.
Everything now works: 7H, vanilla FF7 and modded FF7. The only thing I can't get to work is the Bottles shortcut in Steam to access it in the Deck UI rather than Desktop mode, but that's not the end of the world.

That's excellent progress. Can you give a small step-by-step guide on how to get it working?

Got Bottles setup and 7th Heaven launches.... but when i start FF7 it crashes, even without mods....

@lumnie
Do you or anyone else have any tips for how I can get bast the mounted ISO requirement.
I am just not able to get past that requirement...
I have been unable to add a fake drive called FF7DISC1 that Proton will see, so running with Minimal Validation also does not work :(

Is there a reason why 7th Heaven requires the ISO to be mounted?
I can easily play FF7 on Steam using proton, but it does not work when running 7th heaven on Proton.

Because the original legal copy has a CD check that requires this workaround. The Steam release is a whole different game technically.
The alternative would be piracy, which I'm just going to guess shouldn't be discussed on a public forum like this. But even then, I doubt the alternative method would work.
The marking a disc as FF7DISC1 method works fine in normal Wine.

Is it possible for this mod to run using the steam release .exe file for those who want to use that?
I believe that should solve the problem and make it very easy to run 7th heaven on linux.
It was super easy to run FF9 with the moguri mod using Stream Proton. But because 7th heaven runs using the non-steam .exe that requires disk verification it is very complicated to get it running.
@Hannan100
Can you please describe in more detail how you were able to set the label on the ISO disk.
I tried to make a dummy ISO like this:
mkisofs -o /tmp/FF7DISC1.iso -V FF7DISC1 /tmp/empty-file
I managed to mount it using protontricks, but 7th heaven just wont accept the CD. I believe the drive label is not set, but I am not sure.

I managed to mount it using protontricks, but 7th heaven just wont accept the CD. I believe the drive label is not set, but I am not sure.

Make sure you have .NET 4.8 installed. There appears to be an issue with mono, where it doesn't return the correct disc label.

Hey community, I'd like to let you know about the imminent release of what is going to be the 7th Heaven 3.0 release. If you want to know more, you'll find the announcement on the qhimm discord server, but in a nutshell is a .NET 7 version with a completely rewritten injection engine that will work without admin permissions or code 5 issues. Feel free to try the latest canaries and let me know how it goes!

For what it's worth, the .NET 7 canary build works better with Linux, so long as the launcher is loaded with a DOTNET_ROOT=c:\Program Files\dotnet\\ environment variable for it to not confuse the native Linux version with the Windows one it installs. It still needs either DXVK disabled or a dxvk.conf file in the 7H directory with
[7th Heaven.exe]
d3d9.shaderModel = 1

to render the window properly, but otherwise it works from 7H's installer on a fresh prefix.
Unfortunately though, trying to run FF7 has been a challenge; on a new prefix using only the .NET and MSVC redists the installer includes, trying to run the game (modded or vanilla) causes FF7 to ignore FFNx and loads its software renderer because it's not respecting any game driver settings and even messed with my desktop resolution, then immediately crashes (with 7H still open). At least running modded isn't technically generating any errors now?
I'm also noticing it keeps trying to re-register registry entries that are already present?
This is with Wine-GE.

After a little bit of playing around last night & this morning  - I was able to get the game launched with the new Canary, but no mods appear to take effect:

I could only get this far with Proton 7.0 currently - using WINE 7.0.1 from flatpak currently just segfaults on launching 7th Heaven.
Closing the game currently causes it to freeze & the 7th Heaven Canary doesn't respond to closing the window or ALT + F4.
I have seen the same issue as @SeongGino while building this from clean - I'm wondering if there is something different being done in the Canary on a clean install that isn't taking effect if you upgrade from Stable?

It still needs either DXVK disabled or a dxvk.conf file in the 7H directory with

Thanks for this - trying to disable DXVK when Flatpak bundles it by default has proven difficult. Should go a long way to resolve the glitchy / black-screen rendering i was having.

In addition - Had to install mods & FFNx manually. For some reason 7th Heaven is unable to check for updates or read the catalog

I'm wondering if there is something different being done in the Canary on a clean install that isn't taking effect if you upgrade from Stable?

Yes, upgrading 7th using the internal update would not install the .NET 7 Desktop Runtime required to run it, as well as the VC++ Runtime for the native injection to work.

I was able to get the game launched with the new Canary, but no mods appear to take effect:
Not sure how to check that under Wine but you need to make sure hooking Win32 APIs is allowed as we use Detours in order to do so. If there's a way to make it verbose please check the logs if any error or warning shows up there.

For some reason 7th Heaven is unable to check for updates or read the catalog
If you used the setup to install it and you did on a usually Administrator based path ( Program Files ) I pushed a patch that will fix this permission issues ( at least on Windows ). If you're using the ZIP and installing it on your own path then I have no idea, again check the logs in either 7th or Wine to see if anything shows up. I'd start from the 7th applog.txt and moving around it.

Yes, upgrading 7th using the internal update would not install the .NET 7 Desktop Runtime required to run it, as well as the VC++ Runtime for the native injection to work.

Just to be clear - I am still running the launcher itself over the top of a working ( vanilla only ) Stable install. It automatically installed the runtimes as needed.

Not sure how to check that under Wine but you need to make sure hooking Win32 APIs is allowed as we use Detours in order to do so. If there's a way to make it verbose please check the logs if any error or warning shows up there.

I'll re-run this and try to get some decent logs. Didn't have time to capture everything this morning as it was a quick test before work.

If you used the setup to install it and you did on a usually Administrator based path ( Program Files ) I pushed a patch that will fix this permission issues ( at least on Windows )

This is the <IP_ADDRESS> install, which has this included? Or are you referring to an additional change since?

<IP_ADDRESS> has the change I mentioned so you should be good, but only the setup ( the .exe download on the asset list basically )

Tbh looks like a network stack issue than a 7th issue on its own. Maybe check if there's anything related to this issue on Wine forums. I'll also try to dump some more details on the logs so the next time we can see where and why it fails.

Yeah i suspect a chunk of this will be down to the Switch to .NET 7 and how that is handled in Wine. I've been digging around since but so far, we appear to be one of the only ones using such a new version of .NET at this time.
Watching the debug output for Wine has it's usual fixme logs, but didn't see anything related. I'll look into how winetricks handles older .NET installs, as I recall it being somewhat of a pain.

Yeah .NET 7 has been recently released so I can imagine the struggle to get it running on Wine but I'm confident the community will find their way out. I honestly don't have time to run in parallel on this as I'm really overbooked with thingas to follow and next things to work on around FFNx and 7th, but I'll be happy to provide any patch required to help on this mission. Patience and willingness is what will make this port eventually succeed.

Thanks for that - re-ran with the .49 canary and seeing a number of the same underlying exception:
System.Runtime.InteropServices.SEHException: External component has thrown an exception.
Added the full log, but there isn't alot else there:
applog.txt
I don't see an error code to go with this, so unsure how to help narrow this down

Looks like some kind of unmanaged exception from .NET perspective: https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.sehexception?view=net-7.0#remarks
I have no idea which component is used to download but I can try to check later what is going on and If I can understand something around it. Although as it works fine under Windows I might think it's something related to Wine and its underlying layer :(

Thanks for the extra info in the edit - Will be very useful. The HTTP Listener part seems interesting, as the flag implies there may be other parts of .NET that could potentially be forced into a Managed implementation, which is likely to be better in terms of compatibility.
I have access to a Windows VM, so I'll download the source and go playing around - see what comes out of it

Actually, one of the warnings I get from .NET 7 now is that the core component we use to do downloads is deprecated. I'll try to see if I can easily migrate to what .NET suggests, this might fix also your issue perhaps.

I was able to migrate one of the basic download classes, so most of the catalog should work fine. Google Drive links will still use the old download code until I figure out how to migrate that. Feel free to test the latest canary.

Catalog does seem to work at least in latest canary.
Interestingly, I find that the catalog downloader module crashes with current Wine-GE builds (External component as thrown an exception), but using a build of current Wine Staging (which is my system's Wine) allows it to work.

@sjenkins7 I suppose it has nothing to do with .NET then as @SeongGino was able to run it...double check if you're both on the same Wine codebase or something...please also remember that if you use different distributions you might have different patch sets applied on top. Safer option would be to test this on Arch linux.

Agreed @julianxhokaxhiu  - Staging seems to be the way to go, but I don't have this as an option for Flatpak currently. I'll re-try it later on my main PC, rather than on the Steam Deck

Yes please, let's focus on a mainline Linux first so it will be easier to pinpoint eventual Steam Deck issues.

OK wine Staging 7.22 - Able to get the catalog now.
Attempting to launch the game out-of-the-box fails, as the registry isn't quite setup right:
[Software\\Wow6432Node\\Square Soft, Inc.\\Final Fantasy VII]<PHONE_NUMBER>
#time=1d9113e319f62e8
"AppPath"="C:\\Games\\FINAL FANTASY VII\" /t REG_SZ /f /reg:64"
"DataDrive"="X:\" /t REG_SZ /f /reg:64"
"DataPath"="C:\\Games\\FINAL FANTASY VII\\data\" /t REG_SZ /f /reg:64"
"DiskNo"=dword:00000000
"FullInstall"=dword:00000001
"MoviePath"="C:\\Games\\FINAL FANTASY VII\\data\\movies\" /t REG_SZ /f /reg:64"

Explains why i'm being greeted with multiple command line prompts asking to override the key on each launch attempt

Just to add - If i manually correct those entries, I get to the same point as @SeongGino previously - Game fullscreens & immediately crashes.
Have to manually reset the display resolution after

@sjenkins7 and that's why I've been running in virtual desktop mode, for what it's worth.

Were you able to download some mods? What about launching the game? Were you able to load them?

I actually was able to download a mod (Finishing Touches, just as an example) with Wine Staging (Wine version seems to be a root cause in this, since Wine-GE fails at even downloading previews even with a pre-fetched catalog). The download bar itself doesn't immediately indicate progress, it stayed at 0% and estimated time at pending, but then went right to 100% after a few moments. After which it installed fine and showed up in the mod list, and I can configure it with no corruption or anything.
Er, still same launch issue though. Registry override popups (like Jenkins earlier), then game still only loads the old renderer and crashes outright, whether vanilla or not.
FWIW I can go back to my 7H <IP_ADDRESS> prefix detailed earlier here running that older stable version, using the same instance of FF7 and it'll load FFNx and mods fine. But the new canary version in its own prefix, no dice when actually loading the game thus far.

May I ask if you can please post the Wine config you're using?

Running Arch and doing all this through Lutris, fwiw:
Wine-staging from Arch multilib repos
Using Lutris's defaults with the exception of Windowed (Virtual Desktop) enabled, and an environment variable DOTNET_ROOT=c:\Program Files\dotnet\\. All running on a clean prefix using nothing but the dependencies provided from 7H Canary's .exe installer. Then I set a custom *D:* pointing to an install of FF7's directory using the label FF7DISC1.

Spent a bit of time diffing my previously working (stable but vanilla game only ) prefix & one created using the latest canary - seems that there was 2 values missing from system.reg:
[Software\\Wow6432Node\\Square Soft, Inc.\\Final Fantasy VII\\1.00\\Graphics]
"DD_GUID"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

[Software\\Wow6432Node\\Square Soft, Inc.\\Final Fantasy VII\\1.00\\Sound]
"Sound_GUID"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

Both appear to be needed to get Graphics & sound to work at all.
I get back to roughly where I was before - Game freezes if you quit / ALT+F4. I can launch with mods, but none appear to be taking effect ( I picked what i felt to be obvious ones to be sure ).

Possibly related - Missing logs cause 7th Heaven to crash, if FF7 exits uncleanly:

On the face of it, seems like the wrapper is just silently failing?

Turns out in my case, it was both the missing keys that @sjenkins7 referenced, and that my AppPath/DataPath/MoviePaths were somehow malformed (which is why 7H kept prompting me to change the registry, because it turns out my paths somehow turned into

didn't matter if it was a virtual B:\ or Z:\ ; it always does this)
After manually fixing those registry keys, now FF7 boots up fine with FFNx.
But yeah, mods still don't load at all. My guess is it would be the wrapper failing?

@SeongGino I believe the registry mangling was resolved in the latest / .71 canary. I did mine from scratch just to be sure

@sjenkins7 I was using .61; I guess I just missed on those fixes from the work I'd been doing the past couple of weeks. Good to know!

Was able to get this working on the latest canary (.86). Make sure you configure dinput correctly
# install dinput native DLL
winetricks dinput

to make sure - go into winecfg and set dinput to be native

Also able to confirm that these additional bits would be enough to get this working on the Steam Deck.
In terms of packaging this up nicely ( Flatpak ), we are currently stuck waiting for a stable release of wine ( 7.0.1 is the current & doesn't work at all )
There are 2 avenues right now:

There is talk about adding development versions to Flatpak ( which would serve what we need ) - https://github.com/flathub/org.winehq.Wine/issues/20
We wait for 8.0.0 and see if that works ( they are on RC4 right now, so I can't imagine it will take long ).

I updated the priority as a reminder for a follow up. Great job there, looking forward to an easy installer.

Please advise on how to resolve this popup when attempting to start modded FF7 on latest canary & wine-staging.

Aside from dinput through Winetricks, prefix is only using what 7H canary installer provides.

Seems like 7H is unable to find the 32-bit half of .NET 7.0.1, hence the error in launching w/ mods despite being able to run the launcher.

Hopefully these kind of things will be less of an issue going forward, as wine shouldn't be able to see the native install in the proposed Flatpak

May I ask for a recap of this very long thread? It sounds like there have been fully working configurations at a couple points, but it's not super clear what's actually needed at this point.
It sounds like the following should be a working configuration. Please correct what's wrong and missing:

Wine staging 8.0rc4 (official build)
64-bit wine prefix?
7th Heaven canary .86
native dinput via winetricks
native dotnet4 and 48 via winetricks?
Unclear which things mentioned in the March post are still needed

There are 2 trains ongoing, which is likely where the confusion is coming from. For simplicity sake, I'll focus just on the Canary, as this will eventually become the new stable.

Wine-staging 7.22
64-bit prefix
7th Heaven Canary (.86)
the following installed via winetricks:

    winetricks -q d3dx9
    winetricks -q msls31
    winetricks -q riched20
    winetricks -q corefonts
    winetricks -q d3dcompiler_43
    winetricks -q d3dcompiler_47
    winetricks -q dinput

.NET Desktop Runtime 7.0.1+ ( both x64 & x86 versions)
Virtual CD configured ( make sure it is explicitly marked as a CD-ROM in winecfg ):

    mkdir -p "${WINEPREFIX}/drive_c/FF7DISC1"
    echo "FF7DISC1" > "${WINEPREFIX}/drive_c/FF7DISC1/.windows-label"
    echo "44000000" > "${WINEPREFIX}/drive_c/FF7DISC1/.windows-serial"
    touch "${WINEPREFIX}/drive_c/FF7DISC1/FF7DISC1.TXT"
    ln -sfv "${WINEPREFIX}/drive_c/FF7DISC1" "${WINEPREFIX}/dosdevices/x:"

If you have .NET 7.0 installed natively, it may interfere ( see https://github.com/tsunamods-codes/7th-Heaven/issues/19#issuecomment-1382869290 )
Please note that generally speaking - closing FF7 will cause the app to hang.
Any further talk in here is likely to be about packaging & potentially usable wine versions ( because staging is not available as a Flatpak, which is currently stalling progress )

Running 7th Heaven Stable with Bottles:
https://www.youtube.com/watch?v=ZtZNSPygxyY
Running 7th Heaven Canary with GE-Proton:
https://www.youtube.com/watch?v=Wfh-pE_TvGw

* the following installed via winetricks:

    winetricks -q d3dx9
    winetricks -q msls31
    winetricks -q riched20
    winetricks -q corefonts
    winetricks -q d3dcompiler_43
    winetricks -q d3dcompiler_47
    winetricks -q dinput

FWIW, I haven't needed to do any of the noted above Winetricks in the clean prefix I made, apart from dinput - the prereqs provided from/installed by the Canary installer (and having no native Linux .NET 7 install) makes it work out of the box with either Wine-GE or Wine-Staging (with just the former crashing the catalog downloader module for whatever reason, at least until it's updated?). Though this is on Lutris w/ DXVK & VKD3D installed in the prefix.

@sjenkins7:
I followed you instructions with minor deviations, but I'm afraid 7H crashes with a stack overflow when I try to execute it:
0108:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d36898 stack 0x208f0 (0x20000-0x21000-0x1a0000)
Deviations:

Wine is latest staging, 8.0rc4
7H is the new canary that dropped a few hours ago, v<IP_ADDRESS> (I'd love to try .86, since this is likely the culprit, but it seems to have disappeared from the releases page.)
.NET Desktop Runtime is 7.0.2

If anyone could toss up a .86 download somewhere, I'd appreciate it.
Also, do I absolutely need 7H? Is it possible to manually unpack the iro files into FFNx's mod directories and achieve the same result? Or does 7H have some functionality above and beyond what FFNx does? (On further thought, it would probably work better to unpack them elsewhere and then symlink stuff into the FFNx directories. That way I could simulate a "load order" change without having to re-unpack stuff that had been overwritten.)

Also, do I absolutely need 7H? Is it possible to manually unpack the iro files into FFNx's mod directories and achieve the same result? Or does 7H have some functionality above and beyond what FFNx does?

7th has an internal way to ensure you load files based on how many mods you load, and there are some dynamic behavior done that mods do use to provide special functionalities. So dropping files manually unfortunately won't make the mods work as you might expect.
Related to the 7th version, nothing critical changed between .86 and .89. I suspect the major difference here is Wine. Consider using the version suggested by @sjenkins7 and feel free to join the Discord channels for better support.

I followed you instructions with minor deviations, but I'm afraid 7H crashes with a stack overflow when I try to execute it:
0108:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d36898 stack 0x208f0 (0x20000-0x21000-0x1a0000)

I've just run .89 locally to make sure & it launches fine using:
$ wine --version
wine-7.22 (Staging)

I would suggest making sure you use this for now. I'm not aware of any distribution that has decent staging packages beyond this yet.
If I get time, it might prove useful for me to understand the staging patching process, so I can narrow down which patch(es) we require, in order to know when we can switch to a normal / stable build.

Also checked to make sure, using versions that report as wine-7.22 (Staging) and wine-8.0rc4.r0.g89374093 ( TkG Staging Esync Fsync ) (in Arch these are wine-staging from multilib and wine-tkg-staging-fsync-git from AUR, respectively), 7H and modded FF7 are definitely working fine as of current Canary.

Still getting nowhere with 7.22
export WINEPREFIX=~/.wine-ff7h
export WINEVERPATH="/home/<username>/Programs/wineforks/vanilla722/dist"
export WINELOADER="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wine"
export WINESERVER="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wineserver"
export WINEDLLPATH="/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine":"/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine/x86_64-windows":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine/i386-windows"
export LD_LIBRARY_PATH="/home/<username>/Programs/wineforks/vanilla722/dist/lib64":"/home/<username>/Programs/wineforks/vanilla722/dist/lib":"/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine/x86_64-unix":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine/i386-unix"
export PATH="/home/<username>/Programs/wineforks/vanilla722/dist/bin:$PATH"
export WINE="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wine"
wine --version
<output: wine-7.22>

winecfg
<prefix is created>
cd .wine-ff7h/drive_c/
mkdir Temp
cd Temp
cp ~/Installs/WINE/FF7/7thHeaven/v2fork/windowsdesktop-runtime-7.0.2-win-x* .
cp ~/Installs/WINE/FF7/7thHeaven/v2fork/7thHeaven-v<IP_ADDRESS>_Release.exe .
wine windowsdesktop-runtime-7.0.2-win-x86.exe
<click through installer>
wine windowsdesktop-runtime-7.0.2-win-x64.exe
<click through installer>
wine 7thHeaven-v<IP_ADDRESS>_Release.exe
<click through installer>
<leave "run 7th Heaven" checkbox checked>
<crash: 01cc:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d46898 stack 0x208f0 (0x20000-0x21000-0x1a0000)>

You are using a non-staging release, which is likely why it doesn't work.
Need to make sure that wine --version specifically reports (Staging).
If you do not have a distribution that packages this for you, then you will have to build it yourself sadly - As far as I know, the WineHQ website doesn't have premade packages for this

You are using a non-staging release, which is likely why it doesn't work.
Yep. That was it. I grabbed the devel binaries by mistake. Always thought devel had the staging patches, though... Guess not.

If you do not have a distribution that packages this for you, then you will have to build it yourself sadly - As far as I know, the WineHQ website doesn't have premade packages for this
They've got binaries for at least some distros. Here are the Debian files. (Just use dpkg-deb to extract the two i386 packages to one directory, and the two x86-64 packages to another directory, then cut/paste the x86-64 directory over the top of the i386 one, overwriting conflicts.)

I'm seeing 3 bugs right now, none of them fatal:

FF7 always hangs on exit.
Sometimes 7H renders its modal dialogs with black text/buttons on a black background, which is unusable. (This is using the light theme, so it's the background that's wrong.) Closing and restarting the program restores the correct behavior.
The DX11 renderer does not work out of the box. The opening movies have incorrect colors (seems like the wrong pixel format) and the first menu screen is a jumbled mess. I'm guessing this is due to the lack of DVXK. OpenGL and Vulkan both appear to work fine though (at least for the first 10 minutes or so that I've tested). Is there any reason to prefer DX11?

FF7 always hangs on exit.

Update FFNx to the latest canary.

The DX11 renderer does not work out of the box. The opening movies have incorrect colors (seems like the wrong pixel format) and the first menu screen is a jumbled mess. I'm guessing this is due to the lack of DVXK. OpenGL and Vulkan both appear to work fine though (at least for the first 10 minutes or so that I've tested). Is there any reason to prefer DX11?

@ChthonVII Assuming you're not using Lutris to set up the prefix, that would be correct. I'm using the Vulkan backend, but another suggested the DX12 backend with VKD3D if you have stability problems.

I'll close this issue as the hardest part to make it work has now been done and it has been proved to be effective. Anything else regarding Linux packaging and so on will be continued on Discord. Thanks to everyone for the effort in achieving this huge milestone!

The recent update to use .NET 8 appears to have broken Wine support. After installing and booting the 7th Heaven application for the first time, the General Settings window opens, but the window contents are entirely black, rendering it unusable.

I'd received a notif about someone saying the .NET8 update not working.
Just coming in to say: still works here.


Meural does not have icon or logo yet

Home assistant gets its icons and logos from:
https://github.com/home-assistant/brands
This also works for custom components. Meural is not yet listed here, so there is no logo available in Home Assistant for this integration.

High res source images:
https://meural.netgear.com/images/metaImage.png
https://content.abt.com/media/images/brands/meural-logo.svg

Logos and icons adapted in:
https://github.com/GuySie/brands/tree/master/custom_integrations/meural

Needs a custom component wheel before we can create a PR for the images.
https://github.com/home-assistant/wheels-custom-integrations

Custom component wheel needs manifest.json to be in its final location, but folder structure will still change for HACS in https://github.com/GuySie/ha-meural/issues/12
Fix getting into HACS first, then finish this issue.

Resolved in https://github.com/home-assistant/brands/pull/1683


feat: Add russian language i18n locale

Add support for russian language i18n locale. Most of the translation were taken from MS Word's russian version interface.

thank you!

:tada: This PR is included in version 1.15.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


NRSV Bible API

Hi John, thank you for this great addition to Roam Research. You mentioned that you would attempt to include other versions of the Bible. I have often used the following search portal to access the NRSV version on the Bible. It has US and UK variant spelling editions, and I found that it has some documentation for the API. Please have a look at the following link for more information. Can you add it to your Roam extension?
http://bible.oremus.org/?passages=&version=nrsv
Rennie

Hi again, John,
I am wondering if you will add the NRSV API as an extension.  Rennie


Add conformance report for Traefik Proxy

What type of PR is this?
/area conformance

What this PR does / why we need it:
This pull request adds the conformance report for Traefik Proxy.
Does this PR introduce a user-facing change?:

NONE

/ok-to-test

Hello, do you need anything from us (@rtribotte @kevinpollet) to move forward on this?

Thanks @rtribotte!
/lgtm
/approve
/cc @kflynn for blog post


Add list account and locations admins API

More info: https://developers.google.com/my-business/reference/accountmanagement/rest/v1/accounts.admins/list

[x] Add list accounts.admins API
[x] Add list locations.admins API
[x] Add tests

Implemented in #35


As a user, I want to choose alerts from a drop down list

Alerts in out context are numbers.
Users will want to choose one or more alerts from a drop down list.
Users will want to see meanings of those numbers as well, but only numbers will be submitted to the database on selection.
There is already an alerts(number) and explanations correspondence look up text file that we can refer to.

Consider using pipe to format the

Pipe is not using right now. Created an alert data structure instead so that alert id and reference can be accessed separately just like those library fields

Done. Users can choose and remove single or all alerts


docs: Update navigation prop setOptions example

Not entirely sure if this is intended, but I believe in this example use of React.useLayoutEffect is misleading.
In the example component no specific DOM manipulations/calculations are made, so React.useEffect should be just enough for this case.
I've tried using React.useEffect and it works fine for updating the header title.

useEffect is async and runs some time after the screen has rendered. You normally want to update the title as soon as the screen has rendered, not after some time. This is why useLayoutEffect is used in the example.


Clean up ceph variables

I have questions on data duplication across multiple roles.

This clears up data duplication. ceph-compute has no variables defined. ceph-common variables are moved into ceph dict.

:+1:


Use chrome.devtools.network.onNavigated

Use chrome.devtools.network.onNavigated instead of page context
unload event.
This acheives the same result and has several advantages:

unload listeners can be unreliable with async operations (the context might be unloaded before message is sent)
unload listeners can interfere with bfcache (especially on Firefox)
(subjectively) nicer-looking code

Closing as obsolete.


Support Canon iP72*0 and other printers - Work in progress, help needed

Motivation for this change
Canon iP72*0 does not work in nixos currently.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Questions
I'm not a C dev and I have no experience with autoconf. I simply copied pkgs/misc/cups/drivers/cnijfilter_4_00/default.nix, downloaded the source from the Canon website (http://gdlp01.c-wss.com/gds/3/0100004693/01/cnijfilter-source-3.80-1.tar.gz) and tried to fiddle around to get as far as I could.

Did I do most things right so far?
How can I improve my code?
Right now, it doesn't build. the build error is:

gcc  -O2 -L../../../com/libs_bin64 -L../../../lgmon/src  -o cnijnpr cnijnpr.o -lcnnet -lbscc2sts -ldl
/nix/store/sq2b0dqlq243mqn4ql5h36xmpplyy20k-binutils-2.31.1/bin/ld: cannot find -lbscc2sts
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:337: cnijnpr] Error 1
make[2]: Leaving directory '/build/source/cngpijmon/cnijnpr/cnijnpr'
make[1]: *** [Makefile:353: all-recursive] Error 1
make[1]: Leaving directory '/build/source/cngpijmon/cnijnpr'
make: *** [Makefile:294: all] Error 2

What can I do here? It seems the file bscc2sts.c is in the lgmon/src directory, but still the linker doesn't find it.

@chpatrick @jerith666 you added similar wrappers before, can you give some guidance?

I don't have any easy ideas, sorry.  :(  I know this was quite a pain to get working correctly, I wish you luck!

Oh it seems there is a more complete PR here: https://github.com/NixOS/nixpkgs/pull/65469


Remove cTLS specific code

As discussed before, removing cTLS specific code to ease upstreaming efforts for TLS 1.3 prototype.
The previous version of the code is retained at https://github.com/hanno-arm/mbedtls/tree/tls13-prototype-ctls so we can revisit and re-integrate it once the upstreaming of the TLS 1.3 code is complete.

This PR can be merged


zod validation error within loader function yields a source map loading error instead of the zod error

Reproduction
simple reproduction here: https://github.com/rhyek/remix-zod-issue
run npm run dev and click on the remix serve url. you will immediately see the error in both the terminal and the opened browser tab:
```bash
Error: ENOENT: no such file or directory, open '/Users/carlos/Dev/test/remix-zod-issue/node_modules/zod/lib/index.mjs.map'
    at Object.openSync (node:fs:603:3)
    at Object.readFileSync (node:fs:471:35)
    at Array.retrieveSourceMap (/Users/carlos/Dev/test/remix-zod-issue/node_modules/@remix-run/serve/dist/cli.js:50:37)
    at /Users/carlos/Dev/test/remix-zod-issue/node_modules/source-map-support/source-map-support.js:85:24
    at mapSourcePosition (/Users/carlos/Dev/test/remix-zod-issue/node_modules/source-map-support/source-map-support.js:216:21)
    at wrapCallSite (/Users/carlos/Dev/test/remix-zod-issue/node_modules/source-map-support/source-map-support.js:397:20)
    at Function.prepareStackTrace (/Users/carlos/Dev/test/remix-zod-issue/node_modules/source-map-support/source-map-support.js:446:39)
    at maybeOverridePrepareStackTrace (node:internal/errors:140:29)
    at prepareStackTrace (node:internal/errors:114:5)
    at getStackString (node:internal/util/inspect:1240:16)

### System Info

```shell
❯ npx envinfo --system --npmPackages '{vite,@remix-run/*}' --binaries --browsers

  System:
    OS: macOS 14.2.1
    CPU: (10) arm64 Apple M1 Pro
    Memory: 9.32 GB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.17.0 - ~/.nvm/versions/node/v18.17.0/bin/node
    npm: 9.6.7 - ~/.nvm/versions/node/v18.17.0/bin/npm
    pnpm: 8.13.1 - /opt/homebrew/bin/pnpm
    bun: 1.0.4 - ~/.bun/bin/bun
  Browsers:
    Chrome: 120.0.6099.129
    Edge: 120.0.2210.91
    Safari: 17.2.1
  npmPackages:
    @remix-run/css-bundle: ^2.4.1 => 2.4.1
    @remix-run/dev: ^2.4.1 => 2.4.1
    @remix-run/node: ^2.4.1 => 2.4.1
    @remix-run/react: ^2.4.1 => 2.4.1
    @remix-run/serve: ^2.4.1 => 2.4.1

Used Package Manager
npm
Expected Behavior
when using zod in the loader fn and the validation fails, loading / i expect to see the stack trace and description for the zod error
Actual Behavior
In both the browser and terminal I get the above stack trace about not being able to load a zod source map

Might also be related to #8309.


Save solution as Vector again and use wrap_array

Pull Request Test Coverage Report for Build 660751684

6 of 6 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.06%) to 15.37%

Totals

Change from base Build 660755108:
0.06%

Covered Lines:
1813

Relevant Lines:
11796

💛  - Coveralls


Error when get the dates

Hi
I get this error when I navigate through the calendar.

This has been fixed and SDK review meeting shows available dates on scheduler tool now.


Support for osp-core>3.6.0

I tried installing the latest master with osp-core 3.8.0 but got this error.
Processing dependencies for simphony-sqlalchemy==2.2.1 error: osp-core 3.8.0 is installed but osp-core<3.6.0 is required by {'simphony-sqlalchemy'}
is there a version of this wrapper that supports osp-core 3.8.0?
linked to issue 210 in the docs repo

I just published a new release to solve this. Update the repository via git pull or use the download link from the release page to get the new version.


update WebApplicationFirewallFirewallEvents.json and template validation

Required items, please complete
Change(s):
update WebApplicationFirewallFirewallEvents.json and template validation
Reason for Change(s):

new AFD premium WAF profile view to be added

Version Updated:
-Not required
Testing Completed:
Yes
Checked that the validations are passing and have addressed any issues that are present:

See guidance below

@NikTripathi - Do you mean for @tobystic to update the version number in the workbookMetadata.json file or something else?

@NikTripathi - Do you mean for @tobystic to update the version number in the workbookMetadata.json file or something else?

Yes. We need to update the version number in workbookMetadata.json filr.


Multiple calls to expect_revert raises an error

Protostar version

Name
Version

Protostar
0.3.2

Cairo-lang
0.9.1

Git
2.37.1

Current Behavior

Test fails when it should pass
Expected Behavior

I think that it's reasonable to expect testing scenarios where two non-mutually-exclusive conditions set the expectation that the test should revert.
Steps to Reproduce

%lang starknet

@external
func test_a():
    %{
        expect_revert()
        expect_revert()
    %}
    assert 1 = 0
    return ()
end

Output:
23:25:23 [INFO] Collected 1 suite, and 1 test case (0.003 s)
[FAIL] tests/test_a.cairo test_a (time=2.11s)
Protostar is already expecting an exception matching the following error:

23:25:26 [INFO] Test suites: 1 failed, 1 total
23:25:26 [INFO] Tests:       1 failed, 1 total
23:25:26 [INFO] Execution time: 4.71 s

Possible Solution

I think that it's reasonable to expect testing scenarios where two non-mutually-exclusive conditions set the expectation that the test should revert.

Protostar doesn't execute a code after receiving a revert error, hence I don't see a use case for the second expect_revent. To make this feature justified, we'd have to implement try/catch in cairo-lang. That would require deeper integration with cairo-lang, which we'd like to avoid due to maintenance reasons.

@kasperski95 maybe we should document this behaviour more thoroughly in our docs? Current behaviour makes sense if we say that we execute each test case wrapped in "virtual" try...except block if you use expect_revert cheatcode in the test.

https://github.com/software-mansion/protostar/issues/686

@kasperski95  the lack of error message here is also confusing, can you add adding a useful error message to #686?

https://github.com/software-mansion/protostar/issues/687
https://github.com/software-mansion/protostar/issues/688


Worksheets for Noughts and Crosses in Python

These are based off the original scratch version but include a link to a repository containing a version of Noughts and Crosses written in Python which can be seen here. The students would edit the winner function in order to finish the code with instructions which are included in the worksheet. It is set up to use Pygame for graphics and to automatically train a new model about every 10 games.

Nice, thanks!
I'll have a proper review this evening. In the meantime, please can you prepare a pull request to add this to the site.
Have a look at https://github.com/IBM/taxinomitis/blob/master/public/components/worksheets/worksheets.controller.js#L75-L99 as an example of a worksheet available in both Scratch and Python flavours - that should give you the idea of what you need.
The Noughts and Crosses worksheet you need to update is defined here: https://github.com/IBM/taxinomitis/blob/master/public/components/worksheets/worksheets.controller.js#L494-L514


Add React Static to "More Flexible Toolchains"

@sw-yx What do you think?

Dears, as the "More flexible toolchains" section is no longer present in the docs, and the toolchains are no longer mentioned anywhere, I will close this PR as no longer required.
Thank you!


Add percentage config helper and fix docs

This closes #78 and fixes a small documentation thing I noticed.
:eyeglasses: @ckwang8128 @krishnan-chandra

:fish:


SearchDatasetDetailResource Missing GET method

The SearchDatasetDetailResource does not have a GET method but the UI tries to call GET from dataset.js
@lewismc Can you take a look?

@fgreg @lewismc  I fixed this problem. Pleased close this issue after reviewing. Thanks

@quintinali what did you do to fix the issue? Can you reference it here please? Thank you.

@quintinali what are we meant to be reviewing?

I see no pull request.

@lewismc Oh, my mistake. I encountered some problems to solve the issue in my repository so I directly modified code in the mudrod master and used the "sync" button to submit the code. I fixed this issue when I tried to resolved the issue https://github.com/mudrod/mudrod/issues/101. Please check this commit https://github.com/mudrod/mudrod/commit/85c9a0c8120e4e00f5886438f080cb866ab833cc

OK thank you


consensus-diffusion: add lower bound on io-sim

The GSM QSM test will fail if the io-sim dep doesn't include a recent bug fix.

Nevermind. The upstream dependencies are more intertwined than I anticipated, so this PR would much more work than I expected.


ENH: Add DICOMOrientation class from remote module

The class provides anatomical orientation based enums for describing coordinate systems. In ITK the physical coordinate systems is the same as the DICOM standard. DICOM has the following specification:
If Anatomical Orientation Type (0010,2210) is absent or has a value of BIPED, the x-axis is increasing to the left hand side of the patient. The y-axis is increasing to the posterior side of the patient. The z-axis is increasing toward the head of the patient.
Which describes the direction of increasing. The above coordinate system is described as "LPS" with this enumeration and corresponds to an ITK image with an identity direction cosine matrix.
See also #4788, #4788

PR Checklist

[ ] No API changes were made (or the changes have been approved)
[ ] No major design changes were made (or the changes have been approved)
[ ] Added test (or behavior not changed)
[ ] Updated API documentation (or API not changed)
[ ] Added license to new files (if any)
[ ] Added Python wrapping to new files (if any) as described in ITK Software Guide Section 9.5
[ ] Added ITK examples for all new major features (if any)

Refer to the ITK Software Guide for
further development details if necessary.

One warning, Modules/IO/GE/src/itkGE5ImageIO.cxx:191:44: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct GEImageHeader'; use assignment or value-initialization instead [-Wclass-memaccess]

In ITK the physical coordinate systems is the same as the DICOM standard.

It is not the same.
DICOM defines only right-handed orientations. "Image Orientation (Patient) Attribute" defines "x" and "y" (6 values), "z" is right-handed cross-product.
The Patient-Based Coordinate System is a right handed system, i.e., the vector cross product of a unit vector along the positive x-axis and a unit vector along the positive y-axis is equal to a unit vector along the positive z-axis.
ITK defines  "x", "y" and "z", so e.g.
-1  0  0
 0 -1  0
 0  0 -1

exists in ITK and is not applicable to DICOM definition.

In fact I also think that something should be done with ITK's "from" orientation codes, it seems that surprisingly many users don't understand them at all. But how should they if there is no clear documentation and, even worse, at many places there are already "to" notations.
May be e.g. ITK_COORDINATE_ORIENTATION_RAI could be renamed to ITK_COORDINATE_ORIENTATION_NOTATION_FROM_RAI and be equal to  ITK_COORDINATE_ORIENTATION_NOTATION_TO_LPS or something like that.
It will allow preserve AnatomicalOrientation field of Meta images (document properly!). Also the same for some methods returning them (clarify "to" and "from" in the name).

The work has evolved into another PR. I didn't expect the continued comments on this WIP, some were applied to the other PR still under development.

The work has evolved into another PR. I didn't expect the continued comments on this WIP, some were applied to the other PR still under development.

So wait, this one is dead?  Should we only look at https://github.com/InsightSoftwareConsortium/ITK/issues/4788 ?  I'm confused with all these different PRs...

So wait, this one is dead? Should we only look at #4788 ? I'm confused with all these different PRs...

The original issue #4788 is the discussion. I have not yet directly asked for feedback on the other PR, its still approaching being finished and incorporating the feed back I have heard.
There was strong opposition for using the specific "DICOM" term ( and apparently overly specific/inappropriate association), and the opposition to replacing the OritenImageFilter class, a new PR with a updated title, and an updates description seemed appropriate to help reset everyone for the updated goals.

Should this PR be closed now?

See PR #4804 and #4895


Added my Playlist

I have added my Playlist. Thank you for reading my Pull Request.

Thanks for your contribution :)


Fixed Lark Wawk grammar

fixed inconsistent behavior described in #2, caused by incorrect precedence rules in the wawk lark grammar

closed due to an error in the commit


examples: modernize, install

Remove kboot.conf, this was primarily used when POWER9/petitboot was still being targeted. Update syslinux.cfg to demonstrate how to boot fixed name files. Install examples/ via Makefile.

This is a precursor to a generalized Syslinux document section.


Update to Python 3.8 minimum.

Although there aren't any unittests for using the notebooks on py3.11, I also unpeggd torch and torchvision versions in the notebooks to support py3.11.
One of the notebooks (examples/VIAME_OcclusionSaliency.ipynb) can't run with py3.11+ because of a zip that is downloaded from data.kitware.com that contains a python script with code baked in. That code requires an attribute from torchvision.models.resnet that was removed in 0.13.0+. However, no version torchvision<0.13.0 supports py3.11+.
Since this notebook isn't part of the package when released, there isn't a critical need to have py3.11+ supported. I put an assert in the notebook (with an explanation) instead to trigger if using 3.11+ so a user of the notebook would know how to fix the issue on failure rather than digging into the downloaded zip that contains the script to find the error.


Pirate squad system refactor

Currently, the way the pirates coordinate between one another is a little awkward. You have a squad leader, and different behaviors are used in the same state machine state depending on whether a pirate is a squad leader or not.
When a leader dies, this leads to situations where the state has to be 'reset' so that new behaviors are recreated, and the correct signals connected to.
Alternative ideas

Double up states: You have leader states and squaddie states. When a new leader is selected, he transitions to the leader-version of his currently assigned state. The squaddies don't need to change - they are just waiting for a signal to switch to rest/patrol/attack.
Overseer: Squads are built inside of a squad controller parent object. It is the squad leader, in effect, as a nebulous overseer entity over the squad. All squaddies are followers, but follow-the-leader style behaviors are configured by the overseer.

The former would be simple in implementation, while the second one could help with extension down the line or more complex behaviors if the game expands that far.
Since, ultimately, it'd be nice to have pirates that do different jobs - attackers, miners and workers, transports that go to their own station, etc - the latter will probably be more useful in the long run.

@Razoric480 This sounds like the same system that could be used for #27 Drones, where drones are squaddies - with a different set of behaviours and where the player is set as the Leader.
I imagine you could have a property on a ship/drone that allows it to be a leader, so that when a leader dies, the squad can get notified and a new leader can be chosen from those who are able.
This could be quite interesting, because it means if you killed a leader and there's no ship in the squad that is capable the ships can disperse and become angry lone wolves, lost in the belt, much easier to fight one ship at a time, would give fighting an tactic of trying to kill the leader first.


[improve] extra project configuration common filed to constants

thanks for you review, I update code, pls ptal again. @Calvin979

@tomsun28 Please check if there is any problem.


Merge scalafix sub-command into fix

Describe the solution you'd like
I'd like scalafix to be integrated with the fix command. There's no point to keep those commands separate.
Requirements

[ ] merge scalafix into fix
[ ] add a command line option to run scalafix rules alongside Scala CLI rules

Additional context
Initial scalafix integration implementation:

https://github.com/VirtusLab/scala-cli/pull/2968

Not sure what the best naming is here. It's weird for scala fix and scala scalafix to mean something different, but it's also weird for scala fix to do two completely different jobs.
Is there some way to resolve this, like if scala fix does two jobs, maybe the old "fix" functionality could be deprecated under the old name and given a new name? freeing up scala fix to eventually only mean one thing (run Scalafix)

@SethTisue The current idea is for the scala fix command to have 2 groups of rules: internal Scala CLI ones (what exists there right now) and scalafix ones (what I'm merging back there. I think it's fine to handle both things under the same command, with the options allowing to run either of the groups, or both.

would you design it that way if fix didn't already exist under that name? if so, carry on. (and if not, perhaps rethink?)

I think it would be highly confusing to have two fix commands and would make people need to know the difference. The ideal scenario here is that we run scala fix and everything that we can fix is fixed. Our internal rules will have names the same as scalafix ones, so in reality it will be either run one specific rule (implementation underneath doesn't matter) or all of them.
I currently don't see an alternative that would have a good UX, but if you have any ideas we are happy brain storm about it a bit.

Well, it seems we have different gut feelings here about what's confusing. Carry on :-)

Since it's experimental we can always switch to separate commands


Shapes Border and Fill default Color

I want to set the default border color for shapes to black. Currently, even though the default color on the color picker is black, I still need to select black to apply it as the border color.
I'm not sure if this is its code:
/**

Sets this.currentColor same as object stroke color,
or TRASPARENT if object has no stroke

@param  {fabric.Object} object
*/
ShapeBorder.prototype.updateColorFromObject = function (object) {
var color = null;
color = object.get('stroke');
if (color) {
this.currentColor = color;
} else {
this.currentColor = pluginsNamespace.ColorpickerControl.TRANSPARENT;
}
};

i tried changing the code to this
" this.currentColor = '#000000'; "
but still not fixing the problem.
I also want to change the default color for the fill to transparent.

I found the solution and would like to share it here in case others experience the same problem.
I am using the standalone version, so I edited the drawerJs.standalone.js file.
To set the default color, find the following line of code:
"this.drawerInstance.activeColor" and change it to the desired default color, for example, 'transparent'.


Deprecate global inject object for world local injections.

The idea is that each world should have their own injection space. Currently, every world that's created overwrites the previous world's injections. So you can't have 2 worlds with different injections.
This is useful for simulation/multiplayer type games where each player has their own world.
A real life example of this is that for my game, I am replicating a starcraft 2 arcade map called "Entropy TD" where each player is competing against each other with their own mazes. Each player has their own world with their own instances of injectables.
https://sc2arcade.com/map/2/148730/

In my opinion injectables should not be kept after world creation. They are only needed to start up your world by creating systems, ComponentListener and in the near future FamilyListener. Maybe EntityComparator as well. But afterwards they are not necessary anymore and the GC should be allowed to clean them up.
Therefore, I suggest to not store them as part of those objects.
As a proposal: can we not just initialize the existing Inject object at the beginning of the world's constructor and then clear it afterwards? That way your use-case should work as well and we don't need to keep the injectable maps in memory.
Something like:
// world.kt

init {
    val worldCfg = WorldConfiguration().apply(cfg)
    componentService = ComponentService(worldCfg.componentFactory)
    entityService = EntityService(worldCfg.entityCapacity, componentService)
    val injectables = worldCfg.injectables

    // Add world to inject object so that component listeners can get it form injectables, too
    // Set "used" to true to make this injectable not mandatory
    injectables["World"] = Injectable(this, true)

+  Inject.injectObjects = injectables
+  Inject.mapperObjects = compService.mappers

    // create and register ComponentListener
    worldCfg.compListenerFactory.forEach {
        val compType = it.key
        val listener = it.value.invoke()
        val mapper = componentService.mapper(compType)
        mapper.addComponentListenerInternal(listener)
    }

    systemService = SystemService(this, worldCfg.systemFactory, injectables)

    // verify that there are no unused injectables
    val unusedInjectables = injectables.filterValues { !it.used }.map { it.value.injObj::class }
    if (unusedInjectables.isNotEmpty()) {
        throw FleksUnusedInjectablesException(unusedInjectables)
    }

+  Inject.injectObjects = emptyMap()
+  Inject.mapperObjects = emptyMap()
}

Or am I missing something?

Thanks, I think that will work for now.


Playing a custom GIF from memory

I really want to try playing custom GIFs from memory (SD method doesn't work for me), but I don't know how to format them. What I mean by custom GIF is like the GIF played in the adafruit_gfx_memory.ino example sketch. I already figured out how to change them just want to know how to make a custom GIF file. Here is how I think the structure of the code works, but I want a confirmation:
const uint8_t gifName[] PROGMEM = { //?? goes here(might be a bitmap, I'm not sure) };
If anybody has done this, could you please recommend a website or a program that converts GIFs into this format. Thank you

The data given to my library is a GIF file in its entirety, not a bitmap. That's why it's called "AnimatedGIF".  There's nothing special needed, just find a GIF file and pass the data to my library. To generate the C const data from a file, use my image_to_c tool.


chore(main): release 0.9.1

:robot: I have created a release beep boop
0.9.1 (2023-07-10)
Bug Fixes

fix unresolved merge conflicts (#185) (b52bd75)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/rickstaa/stable-gym/releases/tag/v0.9.1 :sunflower:


add feature map 38x38

Hi:
i want to add feature map 38x38 and remove 2x2.  Is it feasible？

@OMG59E the origin SSD has 38x38 feature map, it is okay.

origin VGG-SSD 有3838的feature map并用作检测，但MobileNet-SSD里面没有把3838的feature map用于检测。


Icon

Anyone wanna make a cool icon?

This would be great!!

Suggestion for concept art, posted here rather than where i put it before #189


Default config file, env vars to secrets and editorconfig

This PR solves both issues #2 and #3 at the same time. I know that would be better to split in two different PRs, even because editorconfig changes is completely offtopic from the other two changes, next time I'll try to do it right :).
I don't really know if these are the best approaches to the problems, so anything you guys think could be done in a better way, please let me know!

Everything looks fine but there's a but. As we've provided an example of configuration file, that is named "example.config.yaml', why not use "config.yaml" as the default config file name instead of "gobot.config"? The file name "config.yaml" is also in the gitignore file IIRC.

@julianolf yeah, you're right! Let me change this and than open a new PR. Thanks!

@julianolf it wasn't necessary to close/open a new PR. Take a look now if it's ok :)