Hi, can you provide a windows app.

I need a  windows app because  I don't like to use MSI gaming app, but i want  to control the  rgb light.
Thank you.

Providing an app for Windows would involve writing a kernel driver (as far as I can tell), getting the driver signed (something I have no idea how to do), and figuring out how to make Windows load the driver.
I cannot dedicate time for all the effort needed to release a Windows application myself, but if you, or anybody else, wants to help, I’ll gladly accept it.

Thank you for you reply, i found a  project which can control the msi card without gaming app: https://github.com/Vipeax/MSI-LED-Tool.
Is there any way to make a new tool like this project?

The tool you’ve linked to still uses the libraries from the gaming app to implement the functionality, so it is not truly “without gaming app”.

is there anyway to make a tool with the libraries ?

Sure.

So somehow can you use that to manipulate for motherboard on Windows? I tried with ubuntu on windows 10 but not worked of course :( And standart system of MSI for leds is not enough. I purchased 5050 leds and nzxt hue+ set. Hue+ is great but on MSI side not fancy things like that :(

This cannot be used on windows yet. I still haven't seen a standalone ISA
bus driver.
On Jul 10, 2017 11:15 AM, "stbatuhan"<EMAIL_ADDRESS>wrote:

So somehow can you use that to manipulate for motherboard on Windows? I
tried with ubuntu on windows 10 but not worked of course :( And standart
system of MSI for leds is not enough. I purchased 5050 leds and nzxt hue+
set. Hue+ is great but on MSI side not fancy things like that :(
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-314036824, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AApc0hYGqwD96jn8v2eorYrP88ubsCSGks5sMd2ogaJpZM4NMm9F
.

Well is there a way to contribute? I'm a programmer also but not interested on hardware programming and drivers on the kernel for now. Also i hate when i get home after work :) Bec all my day passes on the programming. So i spent only almost an hour @last-friday

You could try to write an utility that uses MSI's own drivers, but I would
personally avoid them because of them enabling trivial vulnerabilities.
On Jul 10, 2017 11:34 AM, "stbatuhan"<EMAIL_ADDRESS>wrote:

Well is there a way to contribute? I'm a programmer also but not
interested on hardware programming and drivers on the kernel for now. Also
i hate when i get home after work :) Bec all my day passes on the
programming. So i spent only almost an hour @last-Friday
https://github.com/last-friday
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-314041228, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AApc0qt9pu4RVo9baB-ZSJPfTT5oIS5aks5sMeIigaJpZM4NMm9F
.

RUST, and now particularly RUSTUP seem to have good cross-platform credentials.
I will update this comment with the links.
Peeking and poking at hardware registers is supported by all platforms, so a separate driver may not be necessary. As I see it, msi-rgb is a cross-platform driver.

Looks like you can run msi-rgb on Windows.
https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
I have not tried it, but this is a full blown user-mode version of Ubuntu from Canonical allowing bash.
Personally I think it is cheating, so I will continue trying to get RUSTUP to compile msi-rgb using the MSVC tool chain.

You cannot as WSL does not give access to ISA ports.
On Sep 16, 2017 05:28, "Dominic Cerisano"<EMAIL_ADDRESS>wrote:

Looks like you can run msi-rgb on Windows.
https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
I have not tried it, but this is a full blown user-mode version of Ubuntu
from Canonical allowing bash.
Personally I think it is cheating, so I will continue trying to get RUSTUP
to compile msi-rgb using the MSVC tool chain.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-329939245, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AApc0jNG2E_o-AhUjpp5pogijzaoDtYkks5sizJdgaJpZM4NMm9F
.

Have you looked at the x86 crate?

This looks to be the missing piece of the puzzle.
There are no crates available for it, but it allows direct user mode ipa port access in Windows.

I just want to point out that I installed the Linux Subsystem for Windows, Ubuntu flavor, and successfully built the project. However, it chokes up with the error:
error: could not open /dev/port; try sudo?
   caused by: No such file or directory (os error 2)

I am interested in helping to port this to Windows, but I have hardly worked with hardware development or Windows software development. I've been a JS developer for a few years and am trying to get my foot in the door to building these kinds of apps. If I can be of any help, I will gladly contribute!

The missing piece as pointed by the Dominic seems right. Porting the app
should be just changing the program to load the linked driver and use
functions provided by it on windows rather than the inb and outb functions
called currently.
On Nov 20, 2017 06:03, "Arlo"<EMAIL_ADDRESS>wrote:

I just want to point out that I installed the Linux Subsystem for Windows,
Ubuntu flavor, and successfully built the project. However, it chokes up
with the error:
error: could not open /dev/port; try sudo?
caused by: No such file or directory (os error 2)
I am interested in helping to port this to Windows, but I have hardly
worked with hardware development or Windows software development. I've been
a JS developer for a few years and am trying to get my foot in the door to
building these kinds of apps. If I can be of any help, I will gladly
contribute!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-345586210, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AApc0o98c_Zr4m0GyGQkyL7cSSWdRNLnks5s4PotgaJpZM4NMm9F
.

Ports are protected in Windows and require signed drivers.
The windows port driver I mentioned is signed.
The interface is standard in/out port protocol.
I have since moved onto usb adressable RGBs,
which do not require leaping through such fiery hoops,
Dominic Cerisano
Director Mobile VR Labs
www.standard3d.com https://standard3d.com
<EMAIL_ADDRESS>ca.linkedin.com/in/dcerisano
dcerisano@skype
On Mon, Nov 20, 2017 at 12:50 AM, Simonas Kazlauskas <
<EMAIL_ADDRESS>wrote:

The missing piece as pointed by the Dominic seems right. Porting the app
should be just changing the program to load the linked driver and use
functions provided by it on windows rather than the inb and outb functions
called currently.
On Nov 20, 2017 06:03, "Arlo"<EMAIL_ADDRESS>wrote:

I just want to point out that I installed the Linux Subsystem for
Windows,
Ubuntu flavor, and successfully built the project. However, it chokes up
with the error:
error: could not open /dev/port; try sudo?
caused by: No such file or directory (os error 2)
I am interested in helping to port this to Windows, but I have hardly
worked with hardware development or Windows software development. I've
been
a JS developer for a few years and am trying to get my foot in the door
to
building these kinds of apps. If I can be of any help, I will gladly
contribute!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-345586210, or
mute
the thread
<https://github.com/notifications/unsubscribe-auth/AApc0o98c_
Zr4m0GyGQkyL7cSSWdRNLnks5s4PotgaJpZM4NMm9F>
.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nagisa/msi-rgb/issues/3#issuecomment-345597995, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABkMjXFubLTWRGlHnP75H1B8FSDs2Thjks5s4RMIgaJpZM4NMm9F
.

It seems Mystic Light itself uses WinRing0 for something. The WinRing0.dll is modified and exports some LEDctrl and LEDGetAddress functions. Perhaps something could be done with that?

I have 'ported' msi-rgb to Windows. See here.
It's not exactly a port.
For one, it's not written in Rust. I didn't add support for Windows to this project. It was a possibility, and I do find Rust attractive, but 1) Rust is a bit too verbose 2) There are no idiomatic Win32 wrappers and it lacks other little niceties that make C++ far more convenient to get things done quickly 3) I barely have any experience with Rust (that's not to say I didn't try to port it in Rust, I did and I gave up when I realized the amount of verbose code I'd have to write and the amount of time I'd have to spend to write code to make calls to Win32).
For another, while I ported over most of the functions from here, my goal was to do it differently. I.e. reverse engineering Mystic Light to figure out how to do it right, rather than try to guess from trial and error. @nagisa did get it pretty much right - but I couldn't have known.
Also, reverse engineering Mystic Light allowed me to understand a couple of things: Mystic Light-supported MBs use either NCT6797(D), NCT6795(D), NCT5567, or NCT5565. Some have specialized LED controllers, which means they work in a completely different way. Others also work differently though they use these same chips. However, IO to all 4 chips works exactly the same. They're always found at 0x4E. Functionality is not chip-dependent, but motherboard-dependent. So there are going to be motherboards not compatible with msi-rgb even though they use an NCT6795(D) chip. Also it seems to me that LED control on these motherboards affects all built-in MB LED hardware (including headers)? It looked to me like it, but I don't have a motherboard to test it to make sure I'm not missing anything.

That is excellent work @ixjf.
Did you explore the possibility of using this signed library that can access ports without admin or kernel privileges?

That is exactly the one I'm using. I just scrapped all the user mode code and wrote my own to avoid a DLL dependency and because I already had code to talk to a driver that was cleaner and simpler (I only needed specific code to load the x64 driver as well). The driver is also embedded in the program and is extracted to the process' current path before loading, and then deleted afterwards on unloading, so it's really all just one 300kb EXE.
I don't think it's possible to load a kernel driver without admin privileges, though.

It is not a kernel driver, it is a signed library. Signing authority allows access to protected memory like IO ports. All you really need to do was replace your port register call with the InpOut32 call.

No, it uses a kernel driver. There is a kernel mode and user mode to it: the DLL, which applications load and call functions from, and the kernel mode, where the magic happens. It's exactly because of that kernel driver that it needs to be signed. Only signed drivers can be loaded by Windows. Only drivers can access the hardware at that level.
Also, no, it doesn't. Coincidentally, I was trying to figure that out just now.  So far, nothing.

The point being (is-a and has-a aside) that it allows user level port access.
To re-initialise your rgb header, just launch MSI GAMING APP and set your leds to white (or any colour). Only have to do this once per cold boot (after unplugged).

Yes, I know, but I want to figure out why it doesn't work at all now. I followed all the main calls in Mystic Light and I don't seem to be missing anything there, so there must be something else initializing the chip.

It is obviously something that MSI GAMING APP is doing, strongly suspect it is just a sequence of bytes sent to some  bank of port registers on first run.

The DLLs DO matter, because that's where I get the information from. I'm reverse engineering them, not doing trial and error with RWeverything.
Also, no, you can't. Especially not a kernel driver. You need sudo on Linux too, don't you?

No DLLs don't matter - only the init codes to the SIO. You should be able to get them from tracing the MSI DLLs from cold boot (or RWEverything).
As I said, DLL signing authority is exactly what allows user-level access to protected memory like SIO ports.

I think you don't understand what I'm saying. I'm NOT doing trial and error with RWeverything. That can tell me what is happening, but not how and why. I'm reverse engineering Mystic Light - disassembling the code and seeing what it does.
Also, no. Signing is not what allows user level access to hardware. Signing provides a way for both Windows and the user to know that some executable comes from the author it says it does. That's about it. It's like a real life signature.
In order to access the hardware, you need to run in kernel space. Hence, you need a kernel driver. The reason kernel drivers must be signed is because those drivers can do pretty much anything, especially without being detected, so it's best only those from reliable sources be installed. Moreover, it's not the InpOut32 DLL that is signed - it's the kernel driver that the DLL loads.
And yes, only an administrator can install a driver. The reason you don't see Mystic Light asking for permissions every time you run it is because when you installed Mystic Light, or the Gaming App, the setup asked you for them. When it installed the program, it installed the service as well and allowed anyone to run it afterwards. If you look at LEDKeeper.exe in Mystic Light's directory, you'll see a small blue and yellow icon on the side that shows that the executable requires admin rights.

I don't see why you would want to reverse engineer SIO port protocols without the aid of a port sniffer. That seems unnecessarily difficult. It is how @nasiga got this far in the first place.
Also reverse engineering OEM apps seems extraordinarily laborious given they change the apps every time they release a new SIO chip, mobo design, Tuesday, etc (which is the core point of not doing it).

But you will have to do it all over again every time MSI sneezes! Not to mention there are whacks of other OEM SIO chips that msi-rgb does NOT handle.
It is a combinatorial explosion!

Also, it's highly unlikely the program logic is going to change that much from version to version.

It's not the progam logic, it's the proprietary SIO protocols that are subject to extreme variance from OEM to OEM and even BIOS to BIOS version.

msi-rgb does handle them. That's the thing that nagisa got wrong. As I had already said above, functionality is mostly motherboard-dependent, not chip-dependent. There are probably half of the motherboards that Mystic Light supports that should work with msi-rgb. The other half could be easily implemented as well with this knowledge now.

Got your leds working yet? Lol.

Mystic Light-supported MBs all use the same 6 chips, which function in exactly the same way. They just have different functionality enabled. There are only a few MBs with different, Renesas chips.

Case in point - let's see how long it takes you to solve the initialisation problem. That is point where I gave up on this approach.

Yes, if this were to become very popular, there could be. But I doubt most people will ever hear about it, so MSI won't care. Plus, it's not like they're losing any money if someone doesn't use Mystic Light. If anything, it might make more people buy their boards.

Also, testing on all supported mobos is unfair. Did you test msi-rgb on all boards with an NCT6795 chip?

I would have agreed with you up until now, but apparently some smart guy just opensourced a Windows version of msi-rgb. The space-time continuum has been altered!

Doubt it. I posted it on Reddit and no one batted an eye. Think I'll be fine. Especially if no one makes a GUI for it. N00bs.

It will takesa while for people to grasp the full extent of this folly. Then you will have youtube tech influencers hounding you for interviews. RGB is a crazed phenomenon!

@ixjf

Yes, I know, but I want to figure out why it doesn't work at all now. I followed all the main calls in Mystic Light and I don't seem to be missing anything from there, so there must be something else initializing the chip.

We had the same problem with msi-rgb. This is the code that "enables" the advanced mode that makes RGB work. Make sure that you have all steps of initialization in your code as well.

As I had already said above, functionality is mostly motherboard-dependent, not chip-dependent. There are probably half of the motherboards that Mystic Light supports that should work with msi-rgb.

This makes me suspect that

Either RGB control is not implemented in the SIO (similar to ASUS’ Aura, which possibly has a separate chip on the ISA bus) and either (a) SIO chip is not related to RGB at all; or (b) SIO is passing the configuration to the actual RGB control chip; or (c) something else entirely;
SIO chip is separately programmable/configurable (maybe reads its firmware from the flash which happens to store BIOS), but this would only make sense if the configuration would turn-on and turn-off certain functionality, rather than cause fundamental interface differences to occur.

Also doesn't the Mystic Light EULA contain a non-reverse-engineering clause? The issues could be more than just technical.

Reverse engineering prohibitions are not enforceable in many jurisdictions as reverse engineering is considered fair use. That clause should not be valid anywhere in the US and EU (Disclaimer: IANAL, not legal advice, check with your local lawyer).

I'm pretty sure I just got it. Am gonna test it further but I think I figured out how to initialize the chip properly.

Also, I fixed it by setting a bit I had missed both looking at msi-rgb and Mystic Light. Rip. It works now.

@ixjf That’s https://github.com/nagisa/msi-rgb/issues/6.

I'm using inpout32 on Windows for my Asus Aura project and it works great.  I can write directly to SMBus and Super IO registers just fine and has allowed me to do a lot of R/E'ing work without constantly rebooting to Linux.  Feel free to take a look at my implementations for initializing Super IO and scanning for SMBus controllers.  I ported some of the SMBus code from the Linux kernel.
https://gitlab.com/CalcProgrammer1/OpenAuraSDK

Now we just need someone to port to the hundreds of other OEM SIO RGB controller chips, maintain the resulting frankenstein monster in perpetuity, and we shall realize the opensource dream of RGB ALL THE THINGS.


babel 7 configuration format

Hi there,
I'm trying to bumble my way through to having a working babel7-based setup but there seems to be something wrong the moment i pull in "babel-plugin-inline-import-graphql-ast"
Here is my babel.config.js (this is now the babel7 method to specify a project-wide babel config, in lieu of .babelrc):
// https://github.com/babel/babel/pull/7358#issuecomment-388311941
module.exports = {
  overrides: [{
    test: '*',
    presets: [
      ['@babel/preset-env', {'node': 'current'}],
    ],
    plugins: [
      [
        "babel-plugin-inline-import",
        {
          extensions: [
            ".css"
          ]
        }
      ],
      "babel-plugin-inline-import-graphql-ast"
    ],
    env: {
      development: {
        presets: [
          "next/babel",
        ]
      },
      production: {
        presets: [
          [
            "next/babel",
            {
              ["preset-env"]: {
                targets: {
                  browsers: "> 5%"
                }
              }
            }
          ]
        ]
      },
      test: {
        presets: [
          [
            "next/babel",
            {
              ["preset-env"]: {
                modules: true
              }
            }
          ]
        ]
      }
    }
  }],
  ignore: [
    "/*.plain/"
  ]
}

Example usage of the graphql inlining:
# ---- https://github.com/apollographql/graphql-tag
#import "./Category3Fragment.graphql"
#import "./Category2Fragment.graphql"
#import "./Category1Fragment.graphql"

query Category1(
  $canonicalised_name: String,
  $category1__canonicalised_name: String,
) {
  category1 (
    canonicalised_name: $canonicalised_name,
    category1__canonicalised_name: $category1__canonicalised_name,
  ) {
      ...Category1Fragment
  }
}

Error text:
Module build failed: Error: Configuration contains explicit test/include/exclude checks, but no filename was passed to Babel
    at configFieldIsApplicable (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/config-chain.js:401:11)
    at configIsApplicable (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/config-chain.js:396:41)
    at forEach (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/config-chain.js:242:13)
    at Array.forEach (<anonymous>)
    at /Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/config-chain.js:239:42
    at buildRootChain (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/config-chain.js:90:20)
    at loadPrivatePartialConfig (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/partial.js:51:55)
    at loadFullConfig (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/config/full.js:43:39)
    at transformSync (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/lib/transform-sync.js:15:38)
    at buildVariableAST (/Users/matt/dev/partridge/frontend/node_modules/babel-plugin-inline-import-graphql-ast/build/index.js:87:58)
    at /Users/matt/dev/partridge/frontend/node_modules/babel-plugin-inline-import-graphql-ast/build/index.js:72:26
    at Array.map (<anonymous>)
    at buildReplacements (/Users/matt/dev/partridge/frontend/node_modules/babel-plugin-inline-import-graphql-ast/build/index.js:65:31)
    at PluginPass.exit (/Users/matt/dev/partridge/frontend/node_modules/babel-plugin-inline-import-graphql-ast/build/index.js:59:34)
    at newFn (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/node_modules/@babel/traverse/lib/visitors.js:237:21)
    at NodePath._call (/Users/matt/dev/partridge/frontend/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:65:20)

Would you mind running npm list @babel/core and letting me know what version that outputs? (It could be different from what's in your package.json). Babel just released an update in the last day or two and I've not gotten around to seeing if there are any breaking changes that affect my plugin.

Wow, thanks for taking the time to detail what needs to be done @loganfsmyth! Do you think this is likely to be a breaking change (major version bump) for my plugin? I mean do you think anyone would have been relying on their config being loaded by my plugin in some way?

here are both npm's and yarn's outputs for @babel/core (there's something funky going on with npm's resolution):
Matthews-MacBook-Pro:frontend matt$ npm list @babel/core
<EMAIL_ADDRESS>/Users/matt/dev/partridge/frontend
└─┬ UNMET DEPENDENCY<EMAIL_ADDRESS>  └── UNMET DEPENDENCY<EMAIL_ADDRESS>
npm ERR! missing<EMAIL_ADDRESS>required by<EMAIL_ADDRESS>npm ERR! missing<EMAIL_ADDRESS>required by<EMAIL_ADDRESS>Matthews-MacBook-Pro:frontend matt$ yarn list !$
yarn list @babel/core
yarn list v1.6.0
warning Filtering by arguments is deprecated. Please use the pattern option instead.
└─<EMAIL_ADDRESS>✨  Done in 0.64s.

@elmpp Thanks! It looks like you're using the newest one. I just checked the changelog and it doesn't look like it should have affected my plugin directly. Hopefully what Logan suggested will fix it for you. I'm working on making that change now and I'll ping you here when I've published the new version.
@loganfsmyth I didn't see anything in the babel-handbook about pulling template from the params.. is that new with Babel 7? Would that be a breaking change for people using my plugin with Babel 6? Should I use the babel-template package mentioned in the handbook instead? :confused:

I didn't see anything in the babel-handbook about pulling template from the params.. is that new with Babel 7?

Nope! That's been there for ages. The first argument includes everything you get from importing babel-core itself, along with some extra stuff. That said, if you want to avoid it to keep things minimal you could also do
function buildVariableAST(graphqlAST, importName) {
  return t.variableDeclaration("var", [
    t.variableDeclarator(t.identifier(importName), t.valueToNode(graphqlAST)),
  ]);
}

@loganfsmyth Amazing. I wish I'd have known about t.valueToNode when I was creating this plugin. It'd have saved me many hours of frustration. Thank you for all your help!

it works! Thank you very much (also to @loganfsmyth)

@elmpp Awesome! Thanks for reporting back. :)

@detrohutt The best you can do on the side of the transform itself would be
const node = t.valueToNode(graphqlAST);
node._compact = true;

which will force-enable the concise option and restrict the output to a single line with only single-space spacing. Not quite as small as the minified but should still be a good way there.

@loganfsmyth Amazing! Thanks for being so available for my questions. It's great to have such a wellspring of knowledge on call when I get stuck or just feel like I'm probably doing something sub-par. And thanks for all your great work on Babel!

@loganfsmyth That worked beautifully. Mind if I credit you in the CHANGELOG/Release notes/Twitter announcement?


Fix resetting _reopenInterval problem

In _onOpen() function, this._config is used for reverting
_reopenInterval property, but it was undefined.

@hidai I'm not sure what happened there... Thanks for the contribution!


feat: add sveltekit auth example

Motivation and Context
Add Wundergraph cookie based authentication example with SvelteKit

Checklist

[ ] run make test
[ ] PR title must follow conventional-commit-standard
[ ] tests and/or benchmarks are included
[ ] documentation is changed or added
[ ] commit message and code follows the Code of conduct

Can you update the example to use the new prefetchQuery method?
https://docs.wundergraph.com/docs/clients-reference/svelte-query#ssr

Can you update the example to use the new prefetchQuery method? https://docs.wundergraph.com/docs/clients-reference/svelte-query#ssr

I updated the code. But I don't think the changes are updated in the NPM repository.

CI is failing https://github.com/wundergraph/wundergraph/actions/runs/4744045831/jobs/8424403243?pr=801 @leoalves could you take a look?

I believe the issue was a mismatch in the @tanstack/svelte-query version installed in this package and the one from @wundergraph/svelte-query it should be good now.

Getting the following error in the tests:
Warning: G] Cannot find base config file "./.svelte-kit/tsconfig.json" [tsconfig.json]

    tsconfig.json:2:12:
      2 │   "extends": "./.svelte-kit/tsconfig.json",
        ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Getting the following error in the tests:
Warning: G] Cannot find base config file "./.svelte-kit/tsconfig.json" [tsconfig.json]

    tsconfig.json:2:12:
      2 │   "extends": "./.svelte-kit/tsconfig.json",
        ╵              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Tthat is just a warning.  That tsconfig.json is generated afterwards when running the build, dev or sync commands.
The error is coming from the QueryClient type (same error as before).  It's comparing types from 2 different versions of the @tanstack/svelte-query package. One from this example and the other one installed in the @wundergraph/svelte-query.
Both types are exactly the same and when running the check command locally npm run check I don't get any errors.
I can try to to copy the @tanstack/svelte-query version from the @wundergraph/svelte-query package into this example package.json.  But I am not sure if that will solve the problem


Explicit cloud authentication configuration

Right now, cloud registry credentials for ECR/GAR/GCR/ACR are provided either implicitly or indirectly, such as:

instance profile for AWS
adding annotations to the controller ServiceAccount for GCR
adding envvars to the controller for things like ACR

This may work and in some cases be valid, but we should extend the configuration to provide explicit configuration fields where they make sense.

Addressed by https://github.com/dominodatalab/hephaestus/pull/56


arch/soc/st_stm32: Move STM32Cube HAL core funtions

STM32Cube HAL core initialization functions HAL_GetTick()
and HAL_Delay() are implemented in all STM32 series. This
patch moves these functions in file stm32cube_hal.c under
"common" folder to reduce code duplication.
Signed-off-by: Yannis Damigos<EMAIL_ADDRESS>

Codecov Report

Merging #7496 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #7496   +/-   ##
=======================================
  Coverage   55.25%   55.25%
=======================================
  Files         467      467
  Lines       51659    51659
  Branches     9889     9889
=======================================
  Hits        28543    28543
  Misses      19206    19206
  Partials     3910     3910

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5ce10f1...71114ea. Read the comment docs.


Error compilation

Nuitka-Options:INFO: Used command line options: --onefile bot.py
Nuitka:INFO: Starting Python compilation with Nuitka '1.5.3' on Python '3.10' commercial grade 'not installed'.
Nuitka-Plugins:INFO: multiprocessing: Injecting pre-module load code for module 'multiprocessing':
Nuitka-Plugins:INFO: multiprocessing:     Monkey patching "multiprocessing" load environment.
Nuitka-Plugins:INFO: multiprocessing: Injecting post-module load code for module 'multiprocessing':
Nuitka-Plugins:INFO: multiprocessing:     Monkey patching "multiprocessing" for compiled methods.
Nuitka:INFO: Completed Python level compilation and optimization.
Nuitka:INFO: Generating source code for C backend compiler.
Nuitka:INFO: Running data composer tool for optimal constant value handling.
Nuitka:INFO: Running C compilation via Scons.

In the template, I have made it clear, that not filling out the issue template is not acceptable. I am closing this kind of report as invalid. The main reason is that I do not want to be left guessing. For you it's easy to erase the issue template and expect me to ask you questions only as necessary, but I cannot do that. I would much rather wait for you to create a new report, fill out the template, or wait for somebody with the necessary skill to do it.
In short: No issue template, no fun. Therefore I am likely just deleting the issue, as it serves as a bad example and detraction for searches.  And even worse, it might keep good reporters from reporting as is this "already known."


Fix bug with building xi-syntect-plugin?

Kept getting
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: target/x86_64-apple-darwin/release/xi-syntect-plugin (No such file or directory)

errors until I made this change. Not sure if anybody else ran into this, but thought I'd just submit just in case. Rust 1.27, xcode 9.4.1.

I didn't run into this at all - maybe check if you have cloned xi-core properly?
This change would make syntect not build at all, so I don't think this is the right fix (or if it's needed).

Yea, I've got the xi-editor folder copied in. You sure it would make it not build? This script for me creates a xi-editor/rust/target/x86_64-apple-darwin/release/xi-syntect-plugin, and the resulting app seems to be syntax highlighting. Without this change, the script attempts to open xi-editor/rust/syntect-plugin/target/x86_64-apple-darwin/release/xi-syntect-plugin, but the folder xi-editor/rust/syntect-plugin/target doesn't exist on my machine.

That’s weird. I develop xi-mac on 3 different Mac devices and they all work fine. Perhaps there is something in your configuration?
@cmyr any thoughts?

This is likely a result of https://github.com/google/xi-editor/pull/730, which adds a workspace to the cargo project; I guess that changes what base directory is necessary for building the plugin?

Ah, yea, that sounds like it could be a problem? In a workspace, all built files from subprojects are placed in target next to the root Cargo.toml.
This is definitely not the correct change to fix this bug, since it'll run the builds twice, but I'll open another issue to track this problem.


Add ConnectX-8 to supported NICs list

Hi @e0ne can you also add it to the hw supported table?

done


Dear Esther (original version)

Project link: https://archive.org/details/dear_esther_linux
Project license: Proprietary
Does it work on 64-bit only Linux: MAYBE
Is source code available?: NO
Is source code stored in Git?: NO
List of Steam AppIds of supported games:

https://steamdb.info/app/203810/

Additional information
I preserved the Linux version from Humble Bundle on Internet Archive since it is no longer available elsewhere. dearesther-linux-06082013-bin is the native version. The game might need following fixes;
https://www.pcgamingwiki.com/wiki/Dear_Esther#Native_Linux_version_.28.22Native_.bin.22_version.29_fails_to_launch_on_unsupported_localizations
https://www.pcgamingwiki.com/wiki/Dear_Esther#Native_Linux_version_.28.22Native_.bin.22_version.29_fails_to_launch_on_older_AMD_or_Intel_GPUs_with_open_source_drivers

It'd be better if there was a publicly available binary of the release or an open source project. Linking the original humble bundle release may be problematic.
One possibility could be enough scripts where you could download Dear Esther, put the humble bundle version in the right spot, and it'd handle making it launchable through Steam, although that'd require  you to have it both in Steam and humble bundle which may not be common.

It'd be better if there was a publicly available binary of the release or an open source project. Linking the original humble bundle release may be problematic.
One possibility could be enough scripts where you could download Dear Esther, put the humble bundle version in the right spot, and it'd handle making it launchable through Steam, although that'd require  you to have it both in Steam and humble bundle which may not be common.

It may also be worth contacting icculus who did the port and seeing if they'd be interesting in providing the binaries for use (similar to how prey is available for example). That'd most likely require some sort of agreement with the original developers though.

It may also be worth contacting icculus who did the port and seeing if they'd be interesting in providing the binaries for use (similar to how prey is available for example). That'd most likely require some sort of agreement with the original developers though.

Replacing ~/.local/share/Steam/steamapps/common/Dear Esther/bin, /.local/share/Steam/steamapps/common/Dear Esther/dearesther/bin directories and adding Linux binary/launch script has made the Steam version able to launch the native Linux version. I can upload assetless version if that's all right.

Replacing ~/.local/share/Steam/steamapps/common/Dear Esther/bin, /.local/share/Steam/steamapps/common/Dear Esther/dearesther/bin directories and adding Linux binary/launch script has made the Steam version able to launch the native Linux version. I can upload assetless version if that's all right.

Can you see about attempting to contact icculus to see thoughts on the Dear Esther port? I could also do it instead if you'd prefer.

Can you see about attempting to contact icculus to see thoughts on the Dear Esther port? I could also do it instead if you'd prefer.

Can you see about attempting to contact icculus to see thoughts on the Dear Esther port? I could also do it instead if you'd prefer.

Unlike Prey, icculus was hired to make a Linux port of Dear Esther as a complete pack instead of an installer. Also, since the release of Dear Esther Landmark Edition, The Chinese room has a predatory tendency towards the original game and its Linux releases. They kinda delisted the original game from Steam while letting Humble Store Widget keep selling the original version as DRM-Free as well as Steam version; including Humble Bundle's Linux version. Later on, for no reason, sale of Linux version was stopped whereas Humble Store Widget is still selling the original version's DRM-Free and Steam version for Windows and Mac. Long story in short, it is unlikely that icculus can provide Linux libraries even if he wanted. Feel free to contact him as you know how to handle software much better than me.
By the way, zipped assetless version of Dear Esther that contain only Linux libraries, binaries, launch script and config is around 10 mb. I can upload it to here or Internet Archive right away.

Can you see about attempting to contact icculus to see thoughts on the Dear Esther port? I could also do it instead if you'd prefer.

Unlike Prey, icculus was hired to make a Linux port of Dear Esther as a complete pack instead of an installer. Also, since the release of Dear Esther Landmark Edition, The Chinese room has a predatory tendency towards the original game and its Linux releases. They kinda delisted the original game from Steam while letting Humble Store Widget keep selling the original version as DRM-Free as well as Steam version; including Humble Bundle's Linux version. Later on, for no reason, sale of Linux version was stopped whereas Humble Store Widget is still selling the original version's DRM-Free and Steam version for Windows and Mac. Long story in short, it is unlikely that icculus can provide Linux libraries even if he wanted. Feel free to contact him as you know how to handle software much better than me.
By the way, zipped assetless version of Dear Esther that contain only Linux libraries, binaries, launch script and config is around 10 mb. I can upload it to here or Internet Archive right away.

Ok thanks for the info. I'll contact icculus and see if there's anything that can be done. In the meantime, I'll close this ticket. I'll re-open if I hear anything else.

Ok thanks for the info. I'll contact icculus and see if there's anything that can be done. In the meantime, I'll close this ticket. I'll re-open if I hear anything else.


Feedback: Change request for apiReference field

As discussed in Slack:
Create MDX component for Algolia term - for example:
<AlgoliaTerm name="apiReference" value="@id" />

For each AlgoliaTerm:

Populate heading and title as normal (h1 and nearest h2)
Add value to the Algolia field - in this case, apiReference
Also add value to content for that entry, otherwise there's no content for that section

Feedback here: https://github.com/prisma/docs/issues/1067


Inline twig function stops working after upgrade to 1.4

Hello!
Perhaps I'm missing something in the 1.4 changelog, but with 1.3 the following construction is worked:
Feel free to **[contact us](mailto:{{"inbox@example.com"|safe_email}})**
This construction throws Grav 1.4 to 500 error with text "Unexpected character "&"".
Sorry for bad English.
P.S. it is a modular page

think this relates to an update in Parsedown to address XSS vulnerabilities: https://github.com/erusev/parsedown/releases/tag/1.7.0
This escapes & in markdown causing an error.  twig_first: true doesn't help either as that will output the & which markdown then proceeds to escape again.

I think the only way around this new markdown security fix, is to explicity use the twig with HTML:
<a<EMAIL_ADDRESS>us

Interestingly if you render the variable first it doesn't render the mardkown at all:
{% set safemail =<EMAIL_ADDRESS>%}

**[contact us](mailto:{{ safemail }})**

contact us

https://trilby.d.pr/TKeLSc

@rhukster After updating from 1.3.10 to 1.4.7 I get another error:
Unknown "safe_email" filter in "__string_template__
35c8104ef025a6fba0efdb87648d33021c0690da522173a2de55b1bee351a5b7" at line 1.

Screen:

I use this filter with process: twig: true in lines:
text<EMAIL_ADDRESS>icon: envelope-o
link<EMAIL_ADDRESS>

try this:
text<EMAIL_ADDRESS>
don't use double single quotes, use double quotes...

Does this imply that it is now impossible to use twig with markdown?

Nope, they work just fine, you just need to use the correct syntax.

Apologies, I discovered that my problem is a result of an interaction with the smartypants plugin.

If it's still an issue, please file a bug report here: https://github.com/getgrav/grav-plugin-smartypants/issues


Unable to use .env to set passwords etc.

Describe the bug
When I deploy Matterbridge using docker-compose, I expect to be able to use .env to populate sensitive passwords etc. as described in the Wiki, but I simply cannot get it to work. I've tried many different variants without success. I suspect that it's broken or maybe the documentation is misleading.
To Reproduce
Steps to reproduce the behavior: https://github.com/42wim/matterbridge/wiki/Gateway-config-(basic)#environment-variables
Expected behavior
When I deploy Matterbridge using docker-compose, I expect to be able to use .env to populate sensitive passwords etc. as described in the Wiki.
Environment (please complete the following information):

OS: Ubuntu 22.04 LTS
Matterbridge version: 1.25.2

Additional context
Related to #50.
My matterbridge.toml:
[irc.tgbot]
Server="irc.example.com:6697"
RemoteNickFormat="<tg-{NICK}> "
UseTLS=true
SkipTLSVerify=true
Nick="telegrambot"
#Password="notmyrealpassword"
Charset="utf-8"

[telegram.myirc]
#Token="123456789:NOT_MY_REAL_TOKEN_NOT_MY_REAL_TOKEN"
RemoteNickFormat="<{NICK}> "
MessageFormat="HTMLNick"

[[gateway]]
name="tg_my_gw"
enable=true

    [[gateway.inout]]
    account="irc.tgbot"
    channel="#debug"

    [[gateway.inout]]
    account="telegram.myirc"
    channel="-1234567890123"

My .env:
MATTERBRIDGE_IRC_TGBOT_PASSWORD='notmyrealpassword'
MATTERBRIDGE_TELEGRAM_MYIRC_TOKEN=123456789:NOT_MY_REAL_TOKEN_NOT_MY_REAL_TOKEN

A partially related question, which is basically just a documentation issue, is whether or not it works for gateway configurations too or only accounts?

@lindhe Have you declared the envvars that your .env file would populate in your docker-compose.yaml? That would typically look something like:
version: '3.7'
services:
  matterbridge:
    image: 42wim/matterbridge:stable
    restart: unless-stopped
    environment:
    - MATTERBRIDGE_IRC_TGBOT_PASSWORD
    - MATTERBRIDGE_TELEGRAM_MYIRC_TOKEN
    volumes:
    - ./matterbridge.toml:/etc/matterbridge/matterbridge.toml:ro

No, since that's not documented in the wiki. 😅


proposal: Go 2: allow multiple variables with all assignment variants

Problem
Multiple variables are allowed in some assignment cases, but not others.
// Allowed
a, b := 0, 1
a, b = a+1, b-1

// Disallowed
a++, b--
a += 2, b -= 2 // and *= /= etc

As a result we stutter when two counters are adjusted together:
for {
   i, err = r.Read(b)
   got, want = got+i, want-i
   ...
}

for a, z := 0, len(s)-1; a < z; a, z = a+1, z-1 { // common slice inversion
   s[a], s[z] = s[z], s[a]
}

Proposal
Allow multiple steps with different variables in assignment/increment/decrement statements, e.g.
for {
   i, err = r.Read(b)
   got += i, want -= i
   ...
}

for a, z := 0, len(s)-1; a < z; a++, z-- {
   s[a], s[z] = s[z], s[a]
}

Thanks to @mingwho for raising this previously.

how about
got, want += i, -i

a, z += 1, -1

I don't really understand your proposal summary.
a++ is not an assignment statement.
a += 2, b -= 2 is not an assignment statement, it's a pair of assignment statements.
So I'm not sure what you mean by "allow multiple variables in all assignment statements."  It seems like you mean something else: in some cases it's OK to write multiple statements separated by a comma, as long as those statements are either assignment statements or increment/decrement statements.
Are you suggesting that any place that a simple statement may occur, it's OK to have a comma separated list of assignment statements or increment/decrement statements?  For example, can I write
if a += 2, b -= 3; f(a, b) {}

Why are only assignment and increment/decrement statements permitted to be used in this way?  Why not any simple statement (see SimpleStmt in the language spec)?

I called a++ an assignment because it's shorthand for a=a+1. But OK, I should have written "assignment and increment/decrement statements".

Are you suggesting that any place that a simple statement may occur, it's OK to have a comma separated list of assignment statements or increment/decrement statements?

Indeed.

Why not any simple statement ...?

I don't know a reason to comma-chain other kinds. I gave common-practice examples for the assignment/inc/decrement case.
PS. Why did you open with "I don't really understand" the summary, when you clearly did?

PS. Why did you open with "I don't really understand" the summary, when you clearly did?

Because I tried to work out what you might have meant and made what appears to have been a good guess.  Sometimes those guesses work, sometimes they don't.
I'm looking for a principled reason to decide which kinds of statements can be comma-chained.  For example, if we do this, why not permit
    for c <- a, c <- b; ctx.Err() == nil; c <- x, c <- y { ... }

Is "let all assignment cases support multiple variables" not a sufficient principle?
If we could write a, b <- 1, 2 then comma-chained channel ops would be reasonable :-)

Is "let all assignment cases support multiple variables and/or steps" not a sufficient principle?

I don't know what that means in terms of the language spec.  The language spec doesn't have any concept of "assignment cases."  It has concepts like SimpleStmt.

Can we add a concept to the spec? e.g.
SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | AssignList | ShortVarDecl
AssignList = AssignCase { "," AssignCase }
AssignCase = IncDecStmt | Assignment

Alternatively to the above spec concept, here's one with only inc/dec chains, e.g. i++, j--
SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecList | Assignment | ShortVarDecl
IncDecList = IncDecStmt { "," IncDecStmt }

I've added both to the proposal text.

This does not seem to address an important enough problem in the language.  It doesn't add any functionality that we don't already have.  In your examples, the only one that seems clearly simpler and easier to read is changing a, z = a+1, z-1 to a++, z-- in a for statement.  Since ++ and -- is already syntactic sugar, this use seems to be piling sugar on sugar.  This isn't worth the additional language complexity.


mini refactor in HttpClientFactory class

added humanizer utility for readable code
removed extra condition for set headers
used 'using static' for access utlity
used Not(statement) instead of !statement

@RandWeb Thanks for your contribution. I have merged this PR. would you please send your next commits as signed commits? you can read more about signed commit: https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification


Better log format for terraform v1

What would you like to be added:
Currently on Pipecd console

On terminal

Why is this needed:

Ref: https://github.com/pipe-cd/pipe/blob/master/pkg/app/web/src/utils/parse-log.ts


Request for mutt aliases integration

I would like to humbly request for integration with vim-mutt-aliases-plugin.
Thanks for an excellent plugin.

Here's a way to do this, add the following code into your vimrc, you'll also need a snippet engine (ultisnips/snipmate/neosnippet).
The alias name may not match the prefix of the alias pattern (e.g. foo and My Foo <foo@bar.com>), items will be filtered out by NCM. This is why I convert it into snippet.
" ncm's filtering is based on word, so it's better to convert results of
" muttaliases#CompleteMuttAliases into snippet expension
func! g:MuttOmniWrap(findstart, base)
     let ret = muttaliases#CompleteMuttAliases(a:findstart, a:base)
     if type(ret) == type([])
         let i=0
         while i<len(ret)
             let ret[i]['snippet'] = ret[i]['word']
             let ret[i]['word'] = ret[i]['abbr']
             let i+=1
         endwhile
     endif
     echo ret
     return ret
endfunc

au User CmSetup call cm#register_source({'name' : 'mutt',
		\ 'priority': 9,
        \ 'cm_refresh_length': -1,
		\ 'cm_refresh_patterns': ['^\w+:\s+'],
		\ 'cm_refresh': {'omnifunc': 'g:MuttOmniWrap'},
		\ })

Awesome!! Thanks!! :100: :+1:
I'll do a screen cast and put it in the screen shots issues once I figure out how to blur screen :stuck_out_tongue:

This would be a great sample to try to implement #64
....Just saying :stuck_out_tongue_closed_eyes:


Changes to publish the first version of the package.

Changes to publish the first version of the package.

👍


Indexing fixes

Updates all the tests to use the MCMCChains indexing behavior, since chn[:param] now returns a Chains object and not an array. I also updated the sampler page to use the correct indexing.

This fixes all broken tests as noted in #713.


Question about 3D Localization Mechanism

Dear author:
Thanks for your interesting work.
I have two questions about 3D Localization Mechanism:

Are position embeddings already embedded in the features of 3dllm_final_scene_data_v2
Where in the code is the embedding of location tokens implemented? I can not find it.

By the way, I wander when will you release detail data & code about grounding? I am really looking forward to it~
Best！
Xiaolong

Also interested in how the location tokens are used for 3d grounding task?

For now, the code shows how it is initialised only. However, it is not clear how the token is mapped to 3d space.
For example, the output may be like: the sofa is at <location 12>, <location 1>, <location 37>. But what does this mean? Each location corresponding to XYZ position, or a scalar number ?

Hope the author could explain more on this!
Thanks. @evelinehong

Also interested in how the location tokens are used for 3d grounding task?还对位置令牌如何用于 3d 接地任务感兴趣？

For now, the code shows how it is initialised only. However, it is not clear how the token is mapped to 3d space.目前，代码仅显示它的初始化方式。但是，目前尚不清楚令牌如何映射到 3D 空间。
For example, the output may be like: the sofa is at <location 12>, <location 1>, <location 37>. But what does this mean? Each location corresponding to XYZ position, or a scalar number ?例如，输出可能如下：沙发位于<位置 12>、<位置 1>、<位置 37>。但这意味着什么呢？每个位置对应于 XYZ 位置，还是一个标量数？

Hope the author could explain more on this!希望作者能对此进行更多解释！
Thanks.  谢谢。@evelinehong

Hello, how can you get the grounding outpusts? Could you tell me the format of your prompts? I couldn't find it in the paper or in the projects. Thanks a lot!

We have the same questions! Also, could anyone explain what data can be used to calculate the bounding boxes of objects in the "Box-Demonstration-Instruction based Prompting" section? It seems that this "final_bbox_label" is absent from the project datasets.


Does not work with async closure

Basically title, I put a very simple reproduction here. You can see the CI log as well. I know this feature is unstable so I just want to ask if I need to setup something (like LLVM version for example) to get it working.
Thank you very much for this tool!

This is a rustc bug: https://github.com/rust-lang/rust/issues/131190


Support MinGW-w64 on MSYS2

The open source compiler has some limitations compared to MSVC. For example, if you are using technology like ATL or MFC then it will not work on MinGW-w64 because it has no support for them. On MinGW-w64, people use Win32++ as an alternative:
https://win32-framework.sourceforge.net/

What you said is a reason to support MinGW-w64 on MSYS2, but I don't have any experience in coding with MinGW-w64, so... maybe later...

In VUILib 3.x, we already supported the other compiler like clang or gcc(Whether operation system your are). It can pass the build test and unit test under my PC with manjaro.


Vulkan SDK release feature cut-off Friday June 3

LunarG is planning the next Vulkan SDK release.
A MoltenVK SDK release for this Vulkan SDK will be made Monday June 6.
MoltenVK PRs approved by Friday June 3 will be included in this release.
@cdavis5e @HansKristian-Work @richard-lunarg @KarenGhavam-lunarG

Implemented by PR #1608, and released as MoltenVK v1.1.10.


Could not connect or determine Envoy model

Using EU Envoy-S non-metered, HA 2023-6-3 docker with HACS. Installed v0.1.1-beta using hacs. Restarted HA and added enphase-gateway. It wouldn't initialize and retried. It is able to get api/v1/production. It gets 401 of api/v1/production/inverters and production.json.
Then it errors out on message_battery_not_available attribute.
2023-07-03 12:02:27.821 DEBUG (MainThread) [custom_components.enphase_gateway.gateway_reader.gateway_reader] Fetched from https://<IP_ADDRESS>/api/v1/production: <Response [200 OK]>: {
  "wattHoursToday": 13312,
  "wattHoursSevenDays": 251778,
  "wattHoursLifetime": 4779946,
  "wattsNow": 3910
}

2023-07-03 12:02:27.823 ERROR (MainThread) [custom_components.enphase_gateway] Unexpected error fetching envoy Envoy<PHONE_NUMBER>41 data: 'GatewayReader' object has no attribute 'message_battery_not_available'
Traceback (most recent call last):
  File "/config/custom_components/enphase_gateway/gateway_reader/gateway_reader.py", line 286, in _async_get
    self._update_token()
    ^^^^^^^^^^^^^^^^^^
AttributeError: 'GatewayReader' object has no attribute '_update_token'

Startup log below:
home-assistant-v011-beta.log
Some observations:
from log is seems it accesses /production.json first. it hits a 401. /Auth/check_jwt should be used first. /api/v1/production works fine as that isn't subjected to the auth check.

The 'could not detect envoy model' comes from the original HA Enphase envoy integration (which doesn't support the new firmwares). With the rename to enphase_gateway, the custom integration no longer replaces the HA Core enphase envoy and that will trigger it detecting the envoy as well. It will require the HA user to specifically disable the enphase-envoy in the integrations screen.

The 'could not detect envoy model' comes from the original HA Enphase envoy integration (which doesn't support the new firmwares). With the rename to enphase_gateway, the custom integration no longer replaces the HA Core enphase envoy and that will trigger it detecting the envoy as well. It will require the HA user to specifically disable the enphase-envoy in the integrations screen.

You mean when both the default integration or a custom integration that overrides the default and this integration are configured?

When you name the custom integration with same name as ha core integration then the custom integration will be used instead of the HA Core integration. The original name is enphase_envoy. When you renamed yours (folder) to enphase_gateway it was no longer same name as the HA Core one and did not replace the HA Core one. As Result both HA Core enphase_envoy and your enphase_gateway become active. That may be a conscious choice, but since yours uses same naming scheme and so I'd recommend to not rename it so it will replace the HA core one. Similar yours would not replace/overwrite Brian Campbells one as that sits in enphase_envoy. (Or other way around) Again, it be be a choice to rename, but in my opinion it seems to make matters more complex with 2 potential active for same device.

Installed V0.1.2-beta and disabled the HA Core enphase_envoy and that got rid of the 'could not determine envoy model' and the attribute errors. I now have other attribute missing but I'll open  new issue for it.

Yes that's true this integration uses a different domain than the other forks. It started as an accidental change and continued as a conscious decision. Not too sure if I will continue like this or switch back in the future, but I will update the readme accordingly.
This should have been stated more clearly in the first place.
Huge thanks for your much appreciated help by the way :)

Welcome, and my vote is for the original enphase_envoy name (no pressure), too much of a hassle if not.


mediawiki: 1.35.2 -> 1.36.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/mediawiki/versions.
meta.description for mediawiki is: "The collaborative editing software that runs Wikipedia"
meta.homepage for mediawiki is: "https://www.mediawiki.org/"
meta.changelog for mediawiki is: ""
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.36.0 with grep in /nix/store/cgx897sacxwkvf2d7cz4zh5q0jfxx3qd-mediawiki-1.36.0

found 1.36.0 in filename of file in /nix/store/cgx897sacxwkvf2d7cz4zh5q0jfxx3qd-mediawiki-1.36.0

directory tree listing: https://gist.github.com/f8252f629829f663a36db52310d70e07

du listing: https://gist.github.com/24b579257eb6e5147d4c90b8d31b9b05

Rebuild report (if merged into master) (click to expand)

8 total rebuild path(s)

3 package rebuild(s)

3 x86_64-linux rebuild(s)
2 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
2 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
mediawiki
nixos-install-tools
tests.nixos-functions.nixos-test

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/cgx897sacxwkvf2d7cz4zh5q0jfxx3qd-mediawiki-1.36.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A mediawiki https://github.com/r-ryantm/nixpkgs/archive/b36019e96827e05ed2db51e15478e78ba6d6fd96.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/cgx897sacxwkvf2d7cz4zh5q0jfxx3qd-mediawiki-1.36.0
ls -la /nix/store/cgx897sacxwkvf2d7cz4zh5q0jfxx3qd-mediawiki-1.36.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package failed to build:

nixos-install-tools

1 package built:

mediawiki

Maintainer pings
cc @redvers for testing.

Result of nixpkgs-review pr 124910 at b36019e9 run on x86_64-linux 1

2 packages built successfully:

mediawiki
nixos-install-tools

1 suggestion:

warning: unused-argument
Unused argument: makeWrapper.
Near pkgs/servers/web-apps/mediawiki/default.nix:1:26:
  |
1 | { lib, stdenv, fetchurl, makeWrapper, writeText }:
  |                          ^

Result of nixpkgs-review pr 124910 run on x86_64-darwin 1

1 package built:

mediawiki

Newer version with security fixes is available<EMAIL_ADDRESS>


Optimize this lib to reduce object allocations

See rspec/rspec-core#1738 and rspec/rspec-core#1812 for examples of how to do this.  (That's where we applied optimizations to rspec-core).

Some initial work was done for this in #936


Docs: Fix RULES.md notice name for 2 notices

Summary:
Closes #1322
Expected behavior:
~~When either feed_expiration_date7_days or feed_expiration_date30_days is triggered, the link in the HTML report isn't broken. ~~
EDIT: the notice name in the validation report is the same than the notice name in RULES.md for these two notices.
Please make sure these boxes are checked before submitting your pull request - thanks!

[ ] Run the unit tests with gradle test to make sure you didn't break anything
[x] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/).
[x] Linked all relevant issues
[ ] Include screenshot(s) showing how this pull request works and fixes the issue(s)

@isabelle-dr What's the best way to test this? It doesn't look like the rule link is broken within RULES.md in master.

@emmambd you're right, the link isn't broken actually.
The user is manually scraping RULES.md to get the description of the rules (and I think they then match with what is found in the JSON report).
Here is a sample of the JSON report that this dataset](https://github.com/MobilityData/gtfs-validator/files/10572386/Archive.zip) creates.
{"notices":[{
   "code":"feed_expiration_date7_days",
   "severity":"WARNING",
   "totalNotices":1

Then when parsing RULES.md with the code found, the user calls https://github.com/MobilityData/gtfs-validator/blob/master/RULES.md#feed_expiration_date7_days which doesn't work because the name isn't accurate.
@lauriemerrell is this accurate, and is this PR solving the problem?

Thanks @isabelle-dr! TLDR: I do think that this PR would solve the problem.
Longer explanation of what we're actually doing: in our pipeline (separate from the web validator work), we are trying to join notices data in the warehouse based on the code names that are scraped from RULES.md to get the longer descriptions (rather than automatically generating the link as described here, though the principle is similar). So we have a table with rows that correspond to validator notices, and they are keyed on the values that come from the validator (feed_expiration_date7_days) and another table based on what I scraped from RULES.md which is keyed on how they appear in the markdown (feed_expiration_date_7_days) and the two failed to join.

Thank you @lauriemerrell, for merging this PR then.
We saw the second issue you opened as well. I think it would be good to discuss it in the contributor meeting we have next Monday. The pain from manually updating RULES.md has been on the table for a long time and we've started to think of how to modify the validator to generate this info automatically.
I am sending you an invite for the contributor meeting, hope you can make it!


Search is limited to 420?

I kept doing several searches and all say 420, when i assume there are more than 420.
tried modifying the max pages on the search query but it didnt increase results

Same problem here.
I'd love to know if there is a workaround

i don't know a workaround since this isn't a market   issue.  The issue is Google blocks the request for more data.  One possible workaround is to purchase commercial data and build your own search engine on top of it.


python3Packages.renault-api: 0.1.10 -> 0.1.11

Description of changes
https://github.com/hacf-fr/renault-api/releases/tag/v0.1.11

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 168399 run on x86_64-linux 1

3 packages built:

home-assistant-component-tests.renault
python310Packages.renault-api
python39Packages.renault-api


enable running requester and computer nodes separately

With this PR, each bacalhau node can be either a compute node, requester node or both (a hybrid node).
serve command changes
# Start a bacalhau compute node
bacalhau serve
# or
bacalhau serve --node-type compute

# Start a bacalhau requester node
bacalhau serve --node-type requester

# Start a bacalhau hybrid node that acts as both compute and requester
bacalhau serve --node-type compute --node-type requester
# or
bacalhau serve --node-type compute,requester

devstack command changes
# Create a devstack cluster with a single requester node and 3 compute nodes (Default values)
bacalhau devstack

# Create a devstack cluster with a two requester nodes and 10 compute nodes
bacalhau devstack  --requester-nodes 2 --compute-nodes 10

# Create a devstack cluster with a single hybrid (requester and compute) nodes
bacalhau devstack  --requester-nodes 0 --compute-nodes 0 --hybrid-nodes 1

API paths changes
Nodes will still have a single publicapi.APIServer instance with a single port, but the API paths have changed as follows:
# node health and core APIs are at the root. e.g.
/livez
/id
/peers
...

# requester specific APIs are under /requester e.g.
/requester/submit
/requester/list
/requester/debug

# compute specific APIs are under /compute. Currently we only have /compute/debug API the returns available capacity and active executions

Will look into fixing swagger issue tomorrow. Might have to sync up with @enricorotundo

@aronchick @lukemarsden let me know if you have feedback on the cli user experience, and the selection of the node type

LGTM

@wdbaruni Don't worry about the swagger error - fixed by https://github.com/filecoin-project/bacalhau/pull/1642/commits/529dae8c934cb348c8674d9bd5fd8d5d867bce35

@wdbaruni QQ: How does the load balancer know how to route /requester/* calls to requester-nodes only?

Thanks @enricorotundo for fixing swagger. You are the best!
As for your question, all our managed nodes will be deployed as both requester and compute nodes. In the future, we will change the load balancer to only point to the requester only nodes. I've also updated the client so that Submit requests will go to /requester/submit instead of /submit

hi is there a plan to provide a similar function for the executor interface?


PosiCode improvements

[ ] Stacked
[x] FNC4 extended ASCII

FNC4 extended ASCII was added to version 2015-05-22.


Enhanced segment key filtering

The initial segment key filtering feature just implemented is rather limited in scope.  It requires a range - either >/>= AND </<=.   Let's add some more flexibility.

Add support for =.  This is equivalent to segmentKey >= A AND segmentKey <= A.
Add support for open ended >/>= and </<=.

For Cassandra, since the range scan is really just a client side ALLOW FILTERING on the segment key, in theory we can also support arbitrary conditions, but let's limit ourselves on that a bit.

Fixed by #97 for now.


windows: remove ununsed PptRegGetDword function

Ok to verify

ok to verify

ok to verify

ok to verify

Ok to verify

OK to verify

OK to verify

Why do you delete and make same comment so many times?

Looks OK.

ping!


[WIP] upgrading to .NET Core 2.1

Contributions: We are not currently taking public contributions - see our contributions policy. However, we are accepting issues and we do want your feedback.

Description
THIS IS STILL WIP: No need to review until I cleaned up the commits
After trying to get https://github.com/spatialos/UnityGDK/pull/59 and https://github.com/spatialos/UnityGDK/pull/61 to pass CI for quite a while, I finally gave up and created a new branch merging in all the changes that happened in both PRs + some fixes to get CI to pass. Basically still the same: Trying to move to .NET Core (but .NET Core 2.1 instead of .NET Core 2.0) and fixing everything around it to be able to run all bash scripts successfully.
Tests
Ran TC CI like a thousand times until it finally passed
Documentation
no docs so far
Primary reviewers

@zeroZshadow changed all references from  netcoreapp2.0 to  netcoreapp2.1, but there doesn't seem to be a netstandard2.1 yet. So left that for now


View Modes

Hard coding for specific views in the index file itself has been removed.
This has two major advantages:

It's much easier to integrate custom views - #450 - it can just be passed to the view_modes option.
The codebase is far less convoluted

Along the line, many bugs (partly related to early changes made in this PR, but often existing before it) were fixed, including:

Empty tasks no longer raise errors
The placement of the ticks was off
Today highlighting and weekend highlighting was off.

Enhancements:

Better handling - error messages and ignore - for invalid tasks
The snap_by_day option - allows for snapping by one day instead of the unit length
Today (misnomer) highlighting is now not limited to days. Also, the placement of the blue tick indicates the position within the timeframe - in the below pic, it is shortly after noon.
date_utils.diff is now rounded to two decimal spaces, not floored.

Closes #451, closes #466, closes #405, closes #401
Format of a Mode
Type: object
Keys:

name - identifier, mandatory.
padding - the duration of time to pad on both sides. Can be either an array of two strings (for left and right respectively) or one string for both. (Refer to date format below). Mandatory.
step - the length of each unit, mandatory.
lower_text - determines how the lower text is formatted. Can either be a string, which will be the date format, or a function that receives 3 parameters - date, last_date, and language` - and returns the label to be displayed. Optional - defaults to blank string.
upper_text - determines how the upper text is formatted. Optional - defaults to blank string.
upper_text_frequency - determines how often the upper text appears, used to calculate position of upper text. Optional - defaults to 1.
thick_line - function that receives a date and determines whether that date should have a thick line in the grid. Optional.
column_width - mode specific column width. Optional, defaults to general column width set in options.

Date format
frappe-gantt entirely uses this format now - duration followed by scale without a space, like 1d for one day or 5h for five hours. Supported scales:

ms for millisecond
s for second
min for minute
h for hour
d for day
m for month
y for year

New feature: configurable snapping instead of snap_by_day. A global default_snap sets the default snap - can be a duration or unit. Each individual view can have a default_snap also.


Binance trade fee inclusion in order

if we cannot pass the orders id to getTradeHistory then this feature is not doable in a performant manner

if we cannot pass the orders id to getTradeHistory then this feature is not doable in a performant manner


Option to not deploy for a specific commit

Is it possible to make repl.deploy not deploy to replit when a keyword is used in the commit message? (like [skip-ci] for github-actions)

Stale and not needed anymore


Local jupyter server giving error for weight directory

I am running a Jupyter notebook on localhost and all the commands run flawlessly except when i start to initialize training, get below mentioned errors. I tried google colab notebook without any problems but can not replicate the same thing with local Jupyter server.
trainer.train(
epochs=1,
steps_per_epoch=20,
batch_size=4,
monitored_metrics={'val_PSNR_Y': 'max'}
)
NotADirectoryError                        Traceback (most recent call last)
 in
3     steps_per_epoch=20,
4     batch_size=4,
----> 5     monitored_metrics={'val_PSNR_Y': 'max'}
6 )
~\AppData\Local\Programs\Python\Python37\lib\site-packages\ISR\train\trainer.py in train(self, epochs, steps_per_epoch, batch_size, monitored_metrics)
290         self.settings['training_parameters']['batch_size'] = batch_size
291         starting_epoch = self.helper.initialize_training(
--> 292             self
293         )  # load_weights, creates folders, creates basename
294
~\AppData\Local\Programs\Python\Python37\lib\site-packages\ISR\utils\train_helper.py in initialize_training(self, object)
300
301         self.callback_paths = self._make_callback_paths()
--> 302         self.callback_paths['weights'].mkdir(parents=True)
303         self.callback_paths['logs'].mkdir(parents=True)
304         object.settings['training_parameters']['starting_epoch'] = last_epoch
~\AppData\Local\Programs\Python\Python37\lib\pathlib.py in mkdir(self, mode, parents, exist_ok)
1256             self._raise_closed()
1257         try:
-> 1258             self._accessor.mkdir(self, mode)
1259         except FileNotFoundError:
1260             if not parents or self.parent == self:
NotADirectoryError: [WinError 267] The directory name is invalid: 'weights\rrdn-C4-D3-G64-G064-T10-x2\2019-10-28_21:32'

It should have been fixed some time ago. Are you using the latest version?

I am seeing exactly the same issue.
I assume missing backslash in the end of the directory name causes this. Any help?

I found the semicolon in the time stamp causes the problem.
your time stamp function has : in the code. it should be removed.
def get_timestamp():
ts = datetime.now()
time_stamp = '{y}-{m:02d}-{d:02d}_{h:02d}:{mm:02d}'.format(
y=ts.year, m=ts.month, d=ts.day, h=ts.hour, mm=ts.minute
)
return time_stamp

I found the semicolon in the time stamp causes the problem.
your time stamp function has : in the code. it should be removed.
def get_timestamp():
ts = datetime.now()
time_stamp = '{y}-{m:02d}-{d:02d}_{h:02d}:{mm:02d}'.format(
y=ts.year, m=ts.month, d=ts.day, h=ts.hour, mm=ts.minute
)
return time_stamp

Where do you find this function?
In MASTER branch (ISR/utils/utils.py, this is the definition:
def get_timestamp():
    ts = datetime.now()
    time_stamp = '{y}-{m:02d}-{d:02d}_{h:02d}{mm:02d}'.format(
        y=ts.year, m=ts.month, d=ts.day, h=ts.hour, mm=ts.minute
    )
    return time_stamp

I installed ISR using pip on my local drive and found this issue
AppData\Roaming\Python\Python37\site-packages\ISR\utils\utils.py
I see the person originally reported this issue also has semicolon in the timestamp, which will trigger this issue.

@jaeseong02 Thank you, the pip package was not up to date. Now it should work!


Do not wrap all external exceptions

It would be simpler to allow the caller to manage any exceptions thrown if the Baseline.Filesystem cannot do anything specific with the exception. Currently baseline appears to wrap all exceptions meaning the caller has to unwrap them unnecessarily. A specific example where this can cause a problem is below:
try {
 fileManager.ReadAsStreamAsync();
}
catch (OperationCancelledException e) {
 //do nothing
}

//cancellation is never caught because you would need to unrwap **StoreAdapterOperationException**

https://github.com/getbaseline/Baseline.Filesystem/blob/main/src/Baseline.Filesystem/Internal/Extensions/ExternalExceptionExtensions.cs

The aim of this was to prevent the exposure of adapter related exceptions and also provide a common exception that could be caught that would encapsulate ANY possible exception that could be thrown.
You can either unwrap the exception as you said or add an exception filter (https://learn.microsoft.com/en-us/dotnet/standard/exceptions/using-user-filtered-exception-handlers) to make it nicer.
try
{
    await fileManager.ReadAsStreamAsync();
}
catch (StoreAdapterOperationException e) when (e.InnerException is OperationCancelledException oex)
{
    // Do nothing.
}

Added some documentation to make it clearer: https://docs.getbaseline.net/filesystem/basic-usage.html#exception-handling


STATIC DIR error after last upgrade

After auth error and upgrade i found this error

@sychev-a-k can you create the dist directory manually and try again? I was able to start the server after removing the dist directory from my local install.

If you do a pip install -e . locally it should create a dist directory with all the required JS. Please let us know if that is not happening.

I add in my Dockerfile this command
RUN cd /usr/src/dispatch && pip install -e .
And it is not helping me(
i cannot run this command locally, because my docker container was exited with this error.

Are you using your own docker imagine or the official dispatch docker?

I am using official dispatch docker

Can you be more specific about the steps you took?
I'd suggest:

Deleting all containers/images
run git pull on https://github.com/Netflix/dispatch-docker
run ./install.sh
run docker-compose

I was not able to recreate your issue doing the above.


⚠ Minecraft has degraded performance

In a2fc127, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1209 ms

Resolved: Minecraft performance has improved in 6538555.


Refactor quiz and question types

Each should be immutable value types. All imperative code should be put into a separate type/module.

Remaining: get rid of flip method on Question type.


Add generic async loader for loading non-react modules

Async loader for generic files
Currently we support loading of React components, however if someone wants to load raw functions they are out of luck. This PR fixes such issue, by moving load function to core package and using that function in react-core.
I've also added checks for emptyness of app and module. If module doesn't start with ./ it indicates an error, but we don't want to break the UI so just warn the developer.
Usage:
import { asyncLoader } from '@scalprum/core';
(async () => )(
  const data = await asyncLoader('someApp', './someModule');
  console.log(data); // default and other parts of module
)

@karelhala did already released new version (this is still manual)

@Hyperkid123 not yet, I am working on a React hook, to make it even simpler

Codecov Report

Merging #51 (6e2ef2b) into main (8adbf2f) will decrease coverage by 3.65%.
The diff coverage is 24.00%.

:exclamation: Current head 6e2ef2b differs from pull request most recent head 01a71b4. Consider uploading reports for the commit 01a71b4 to get more accurate results

@@            Coverage Diff             @@
##             main      #51      +/-   ##
==========================================
- Coverage   71.63%   67.98%   -3.66%
==========================================
  Files           7        8       +1
  Lines         208      228      +20
  Branches       41       45       +4
==========================================
+ Hits          149      155       +6
- Misses         59       73      +14

Impacted Files
Coverage Δ

packages/core/src/index.ts
55.00% <8.33%> (-8.24%)
:arrow_down:

packages/react-core/src/use-module.ts
30.00% <30.00%> (ø)

packages/react-core/src/async-loader.tsx
40.00% <50.00%> (+16.92%)
:arrow_up:

packages/react-core/src/index.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8adbf2f...01a71b4. Read the comment docs.


Update xcodeproj to 8.7.1

Couldn't push to your branch so updated in https://github.com/yonaskolb/XcodeGen/pull/1213


DS-3356 add turnoff authz system

https://jira.duraspace.org/browse/DS-3356

+1 by review

+1

just waiting for 6.0 to be released and PR#1553 to be merged for 6.1 so to be sure that no bug fix go in a potential 5.7 without to be included also in the 6.x branch


Documentation has dead links

There are several dead links in the documentation site sidebar
Examples:
Calendar
http://swifterswift.com/docs/Extensions/Calendar.html
Color and all the subpages
http://swifterswift.com/docs/Extensions/Color.html
File Manager
http://swifterswift.com/docs/Extensions/FileManager.html
Floating point
http://swifterswift.com/docs/Extensions/FloatingPoint.html
MKPolyline
http://swifterswift.com/docs/Extensions/MKPolyline.html
NSPredicate
http://swifterswift.com/docs/Extensions/NSPredicate.html
and others more

Hey @bjimenezned
Thank you for finding this issue, we'll investigate this :))
cc @omaralbeik

I don't know if we need to regenerate the documentation with Jazzy?

Thank you for reporting this @bjimenezned 💯
I had the /docs directory added to .gitigore file in the website repo by accident in the last release 😅
All links should be working now


Cannot draw in the canvas

HI,
I am using signaturePad with Angular 1.3.17, and I am not able to draw anything in the pad.
I am debbuging signature.js and I think the mouseDown event is not working, even if mousup is working fine.

Sign here

It seems something in signature.js is not working as expected
I am running it into a modal.

@armandomusto Please try the demo to see if it works on your system.
If it's something specific about your app, please recreate it in a jsfiddle isolating the issue.

No response from OP


Add Transiogram and related matrices

Codecov Report
Attention: Patch coverage is 97.95918% with 1 line in your changes missing coverage. Please review.

Project coverage is 85.83%. Comparing base (9570ca3) to head (5aab311).

Files with missing lines
Patch %
Lines

src/matrices.jl
97.91%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #22      +/-   ##
==========================================
+ Coverage   84.98%   85.83%   +0.84%
==========================================
  Files          28       30       +2
  Lines         686      734      +48
==========================================
+ Hits          583      630      +47
- Misses        103      104       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


chore: enable strict in tsconfig.json

In the march towards full strictness, this enables strict in tsconfig.json and fixes the errors it pops up. A changeset is included because there are some subtle code changes, and we should leave a trail for them.

I'm down to one type failure, woo.

Opened this up for review, happy to iterate on the details

Thanks @caass! I'm going to land this, we can iterate ofc.

I've created https://github.com/cloudflare/wrangler2/pull/473 as a follow up


docs: 故障排查以及功能文档

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.frostycliu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Radio buttons and toggles look odd in "off" state

The black does not suit. Make it grey?

You control the color in the settings. "Base control color" I think..

I did not like this approach, TBH.
Should it not be given as separate option?

Well it's a control, all controls should have the same style to be consistent. otherwise it'll be a big mess :)
Why does the radio button should have a separate option?
The issue here with the radio button IMO is that its line is thicker then the outline of the toggle button above it. which does looks inconsistent.
BTW you can always fork this project and make personal changes and also pull requests :)

The thing is, the base control color also controls the color of the chat UI and the bg color of the contacts on left. Controlling that with color of radio buttons is.... Odd.
Why not pair it with accent color?
Regarding the forking, I do not know CSS 😅.

You didn't like this approach for a reason, the radio button uses border color for the inner line which should be a "lower" or "higher" base control color.
The thing is, this style is based on the WhatsApp dark style so I tried to make everything similar as mush as I can and I didn't knew about Stylus lang at all before looking in the WhatsApp style.. this is why this style is ~75% CSS rather than Stylus unfortunately.
I agree with you that a change is welcomed here to at least be able to differentiate between UI elements.
This may lead to fundamental overhaul but still easy to implement (I think 😅)


What should happen when the property path didn’t resolve?

Current situation:
When the property path doesn’t resolve for a  member it throws an error
To-be situation:
When the property path doesn’t resolve, it should use an approach similar to the basic bucketizer for bucketizing all the members that cannot be bucketized by this bucketizer
Test-case: https://github.com/pietercolpaert/coghent-substrings/runs/4107613037?check_suite_focus=true

Agreed that we should have a fallback mechanism.
Looking at the substring bucketizer, in addition to the other pages, the root page will also contain a link to a page (e.g. 0.ttl) that contains members that could not be bucketized? And if that page (0.ttl) is full, we create another page 1.ttl for example. Does root.ttl then contain a link to 1.ttl or should it be 0.ttl?
And what with the subject page bucketizer? Each page is independent of the others, and basically, no relations exist between these pages.

Discussed in https://github.com/TREEcg/bucketizers/discussions/11

Originally posted by ddvlanck November 22, 2021
At this moment, whenever a bucketizer fails to extract a property path from an LDES member, it throws an error and the workflow it is being used in, stops working.
The desired behaviour should be that whenever the above situation happens, the LDES member is still assigned a bucket, but one that is different from the other buckets. The root file should then contain relations to the pages generated by the fallback mechanism.
Questions to be answered

Naming convention for the pages generated by the fallback mechanism
What if there is no root? (e.g. subject page bucketizer does not generate a root file)


I tried ported the vehicle_joints3 example from rapier to use bevy_rapier, but the steering move the body instead of the axle.

https://github.com/user-attachments/assets/9b92c30a-6c8a-44f4-8bc7-993b7012af49
The other issue is that the collider seems to be off, as the rear wheel of tire just floats instead of touching the surface of the orange obstacle.
Code is here

I've beed working on a similar setup, it's nice to see some of the same struggles. I spent a good amount of time getting the mass properties and motor parameters to play nice and if positions/axes of colliders and joints didn't correspond perfect things got weird. Also I definitely had issues when my axle colliders were to small, not sure why that effected the joints (seems like it unlocked locked axes).
in case it helps here's my attempt
use bevy::prelude::*;
use bevy_panorbit_camera::{PanOrbitCamera, PanOrbitCameraPlugin};
use bevy_rapier3d::prelude::*;

fn main() {
    App::new()
        .insert_resource(ClearColor(Color::srgb(0.1, 0.1, 0.2)))
        .add_plugins((
            DefaultPlugins,
            PanOrbitCameraPlugin,
            RapierPhysicsPlugin::<NoUserData>::default(),
            RapierDebugRenderPlugin::default(),
        ))
        .add_systems(Startup, (setup_graphics, setup_environment, setup_physics))
        .add_systems(Update, car_controller)
        .run();
}

fn setup_graphics(mut commands: Commands) {
    // either I'm crazy or moving the camera perturbs the rigid bodies
    // set the chassis to fixed so the car is floating in the air,
    // then swivel the view around and the wheels should start bouncing
    commands.spawn((
        Camera3dBundle {
            transform: Transform::from_xyz(10.0, 3.0, 0.0)
                .looking_at(Vec3::new(0.0, 3.0, 0.0), Vec3::Y),
            ..Default::default()
        },
        PanOrbitCamera::default(),
    ));
}

fn setup_environment(mut commands: Commands) {
    // add other obstacles here later
    let ground_size = 500.0;
    let ground_height = 0.1;

    commands.spawn((
        TransformBundle::from(Transform::from_xyz(0.0, -ground_height, 0.0)),
        Collider::cuboid(ground_size, ground_height, ground_size),
    ));
}

#[derive(Component)]
pub struct Wheel;

#[derive(Component)]
pub enum Axle {
    Steered,
    Fixed,
}

fn setup_physics(mut commands: Commands) {
    let start_height = 1.0;

    // side to side
    let chassis_width = 0.5;
    // front to back
    let chassis_length = 1.0;
    // top to bottom
    let chassis_height = 0.25;

    // range of motion, a very stiff spring will hold the
    // suspension in the middle of this range
    let suspension_height = 0.3;

    // wheel dimensions
    let wheel_radius = 0.2;
    let wheel_width = 0.1;

    // collision group to prevent collision between car parts
    let car_group = Group::GROUP_1;

    // simple cuboid to represent the chassis
    let chassis_collider = (
        Collider::cuboid(
            chassis_width / 2.0,
            chassis_height / 2.0,
            chassis_length / 2.0,
        ),
        ColliderMassProperties::Mass(100.0),
        CollisionGroups::new(car_group, !car_group),
    );

    // bevy entity with rigid body marker and chassis collider
    // set to spawn at start height
    let chassis_id = commands
        .spawn((
            TransformBundle::from(Transform::from_xyz(0.0, start_height, 0.0)),
            RigidBody::Dynamic,
            chassis_collider,
            Sleeping::disabled(),
        ))
        .id();

    // wheel positions are defined relative to the chassis size
    // this was important before using collision groups,
    // now its just for the aesthetic
    let x = 0.6 * (chassis_width + wheel_width);
    let y = -chassis_height;
    let z = 0.45 * chassis_length;
    let wheel_positions = vec![(x, y, z), (-x, y, z), (-x, y, -z), (x, y, -z)];

    for (x, y, z) in wheel_positions {
        // anchors set the joint relative to the collider, this sets the axle
        // joint to be level with the chassis and directly above the axle
        let axle_anchor1 = Vec3::new(x / 2.0, 0.0, z);
        let axle_anchor2 = Vec3::new(0.0, -y, 0.0);

        // sets the locked axes of the axle joint, both are free
        // in linear Y (suspension) and the front is free in angular Y (steer)
        let locked_axle_axes = match z > 0.0 {
            true => JointAxesMask::all() ^ JointAxesMask::ANG_Y ^ JointAxesMask::LIN_Y,
            false => JointAxesMask::all() ^ JointAxesMask::LIN_Y,
        };

        // set the axle marker indicating if an axle is fixed or free to steer,
        // not really used anymore, could just be a steered axle marker
        let axle_marker = match z > 0.0 {
            true => Axle::Steered,
            false => Axle::Fixed,
        };

        // I think a spring joint would work here, but it's pretty simple to define everything
        // as generic. Also where's the into()?
        let axle_joint = GenericJointBuilder::new(locked_axle_axes)
            .local_anchor1(axle_anchor1)
            .local_anchor2(axle_anchor2)
            .limits(
                JointAxis::LinY,
                [-suspension_height / 2.0, suspension_height / 2.0],
            )
            .set_motor(JointAxis::LinY, 0.0, 0.0, 500.0, 500.0)
            .build();

        // hacky jump feature, should really have a second collider fixed
        // to the chassis to actually model the suspension expansion.
        // but this is simpler and fun
        let axle_impulse = ExternalImpulse::at_point(
            Vec3::ZERO,
            Vec3::new(x / 2.0, y + start_height, z),
            Vec3::new(x / 2.0, y + start_height, z),
        );

        // collision for the axle, because it won't move without one
        let axle_collider = (
            // making the ball any smaller makes the joints to weak...
            Collider::ball(y.abs() / 2.0),
            ColliderMassProperties::Mass(50.0),
            CollisionGroups::new(car_group, !car_group),
        );

        // bevy entity for an axle
        let axle_id = commands
            .spawn((
                TransformBundle::from(Transform::from_xyz(x / 2.0, y + start_height, z)),
                RigidBody::Dynamic,
                axle_collider,
                axle_marker,
                axle_impulse,
                Sleeping::disabled(),
                ImpulseJoint::new(chassis_id, TypedJoint::GenericJoint(axle_joint)),
            ))
            .id();

        // Would be nice if RevouteJointBuilder took two axes, instead the collisions
        // it connects need to have the same orientation.
        // Generic joints are fine for now, also more flexible
        let wheel_joint = GenericJointBuilder::new(JointAxesMask::LOCKED_REVOLUTE_AXES)
            .local_anchor1(Vec3::new(x / 2.0, 0.0, 0.0))
            .local_axis1(Vec3::X)
            .local_axis2(Vec3::Y)
            .set_motor(JointAxis::AngX, 0.0, 0.0, 0.0, 1.0)
            .build();

        // cylinder wheel collider, needs to be rotated to face the right way,
        // that means it can't use a revolute joint
        let wheel_collider = (
            Collider::cylinder(wheel_width / 2.0, wheel_radius),
            Friction::coefficient(10.0), // make sure it doesn't slide around
            Restitution::coefficient(0.5), // wheels should bounce right?
            ColliderMassProperties::Mass(10.0),
            CollisionGroups::new(car_group, !car_group),
        );

        // bevy wheel entity with 90 degree rotation
        commands.spawn((
            TransformBundle::from(Transform {
                translation: Vec3::new(x, y + start_height, z),
                rotation: Quat::from_rotation_z(-std::f32::consts::PI / 2.0),
                scale: Vec3::ONE,
            }),
            RigidBody::Dynamic,
            wheel_collider,
            Wheel,
            Sleeping::disabled(),
            ImpulseJoint::new(axle_id, TypedJoint::GenericJoint(wheel_joint)),
        ));
    }
}

fn car_controller(
    _time: Res<Time>,
    keys: Res<ButtonInput<KeyCode>>,
    mut wheel_query: Query<&mut ImpulseJoint, With<Wheel>>,
    mut axle_query: Query<
        (&mut ImpulseJoint, &mut ExternalImpulse, &Transform, &Axle),
        Without<Wheel>,
    >,
) {
    let mut speed = 0.0;
    let mut steer = 0.0;
    let mut jump = 0.0;

    if keys.pressed(KeyCode::KeyW) {
        speed = 30.0;
    }
    if keys.pressed(KeyCode::KeyS) {
        speed = -30.0;
    }
    if keys.pressed(KeyCode::KeyA) {
        steer = std::f32::consts::PI / 6.0;
    }
    if keys.pressed(KeyCode::KeyD) {
        steer = -std::f32::consts::PI / 6.0;
    }
    if keys.just_pressed(KeyCode::Space) {
        jump = 400.0;
    }

    for mut wheel in wheel_query.iter_mut() {
        // Whats a factor?
        wheel
            .data
            .as_mut()
            .set_motor_velocity(JointAxis::AngX, speed, 50.0);
    }

    for (mut joint, mut impulse, tf, axle) in axle_query.iter_mut() {
        match axle {
            Axle::Steered => {
                joint
                    .data
                    .as_mut()
                    .set_motor_position(JointAxis::AngY, steer, 10000.0, 10000.0);
            }
            _ => {}
        }
        // jump is just an impulse on each of the axle colliders.
        // it should be an impulse that expands the suspension to it's limit
        // then the car jumps because of the momentum of the chassis.
        impulse.impulse = tf.rotation * Vec3::Y * jump;
        impulse.torque_impulse = tf.rotation * Vec3::X * -jump / 60.0;
    }
}

@Mitchelldscott your code works well, the axle is at the side of wheel which I think fixed the steering part. However, the driving is a bit wonky and the car bubbling side to side.
This is fixed by lowering down the stiffness in the set_motor_position function to 1000.0.
This is the same value as the original vehicles_join3 in the rapier repo.
.set_motor_position(JointAxis::AngY, steer, 10000.0, 1000.0);
   for (mut joint, mut impulse, tf, axle) in axle_query.iter_mut() {
        match axle {
            Axle::Steered => {
                joint
                    .data
                    .as_mut()
                    .set_motor_position(JointAxis::AngY, steer, 10000.0, 1000.0);
            }
            _ => {}
        }
        // jump is just an impulse on each of the axle colliders.
        // it should be an impulse that expands the suspension to it's limit
        // then the car jumps because of the momentum of the chassis.
        impulse.impulse = tf.rotation * Vec3::Y * jump;
        impulse.torque_impulse = tf.rotation * Vec3::X * -jump / 60.0;
    }

Your also missing the differential speed code which improves the smoothness of the driving.
    let differential_strength = 0.5;
    let sideways_shift = steer.sin() * differential_strength;
    let speed_diff = if sideways_shift > 0.0 {
        f32::hypot(1.0, sideways_shift)
    } else {
        1.0 / f32::hypot(1.0, sideways_shift)
    };

    let ms = [1.0 / speed_diff, speed_diff];

    for (mut impulse_joint, wheel) in wheel_query.iter_mut() {
        let ms = if wheel.is_left{
            ms[0]
        }else{
            ms[1]
        };
        if wheel.is_driving{
            impulse_joint
                .data
                .as_mut()
                .set_motor_velocity(JointAxis::AngX, speed * ms, 50.0);
        }
    }

Thanks to your code, I can continue my progress on the vehicle physics.

Correction:
Lowering the friction coefficient of the wheel to 1.0, also removes the driving wobbliness as well, even if the stiffness is still at 10000.

I had issues lowering the steering stiffness (the momentum of the car would cause the wheels to turn when accelerating). I didn't want to lower the friction because then the wheels may slip without you knowing, which is pretty unrealistic. I agree that differential kinematics should make it smoother but I had actually reduced the steer stiffness so that the steer angle could perturb, wheels should align with the direction they're going due to torque from friction (which is a sketchy implementation). I should have played a little more with the velocity stiffness because "flexibility" there would help. I did not implement that differential steering because then I would have tried to turn it into a whole module.


System default theme Colour

Please add system default theme Colour

should be easy
+good first issue @gazlaws-dev