Firewall Shaper causes IPv6 address loss on WAN

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[X] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Describe the bug
If one uses the traffic shaper like described here: https://maltechx.de/en/2021/03/opnsense-setup-traffic-shaping-and-reduce-bufferbloat/ and elsewhere, the IPv6 address of the WAN interfaces gets lost when an outbound congestion occurs. IPv4 works fine.
This is especially problematic with dynamic IPv6 prefixes and CG-NAT / DS-Lite. The german ISP Deutsche Glasfaser is a prominent example of this.
To Reproduce
There are multiple reports of this behaviour on the OpnSense forums:
https://forum.opnsense.org/index.php?topic=27247.0
https://forum.opnsense.org/index.php?topic=39624.0
https://forum.opnsense.org/index.php?topic=32912
Expected behavior
The IPv6 connectivity should not be disturbed by traffic shaping.
Describe alternatives you considered
In two of the threads, a potential workaround is to use specific IPv6 ranges for the source of the rules, which is impossible with dynamic IPv6 prefixes, though.
Relevant log files
See links...
Environment
OPNsense 22.x to 24.1.4

I have shaping working on both my WAN links - and both have IPv6 enabled. The only difference between my rules and the rules in the guide, is that I do not have a mask set on the queue, and only use direction on the rule.
Could you test what that does?

Since @Wireheadbe's question was posed and did not receive an answer, I will follow up since this issue seemingly gets no activity (for a rather large issue if I can say so):
###Hardware setup:

Intel Core i7-2600
8GB DDR3-1333
250GB Micron SSD formatted for ZFS
Mellanox MCX4121A-ACAT for LAN
Intel I226-V for WAN
IPv4 and IPv6 DHCP working perfectly, until...

Simply turning on any ip protocol based shaping rules. Leaving it to ipv4 works, leaving it to tcp and udp in paired rulings for both directions works. Any time ip is left on, it includes ICMPv6 and ICMP packets.
My running theory is that the packets are getting fragmented by the shaper and not reassembled correctly. This much I can confirm by seeing the solicit packets missing bytelengths in the system logs, then restarting the solicit process to get a valid packet.
The most obvious answer to this would simply exclude ALL ICMP traffic from the shaper when using the ip protocol. If this is too much of an overreach for the devs (for some reason I can't begin to imagine), just add an advanced option to "exclude ICMPv4 and v6 traffic" option.
Let me know if I just said a lot of nothing, but this isn't my first rodeo fighting ICMP solicit issues with traffic shaping on opnSense. For some reason on my previous pfSense install, that was never an issue.

I have shaping working on both my WAN links - and both have IPv6 enabled. The only difference between my rules and the rules in the guide, is that I do not have a mask set on the queue, and only use direction on the rule.
Could you test what that does?

I also tried to enable traffic shaping according the instructions linked above, which lead to immediate outage of IPv6 Internet.
Trying without "mask" on the queue, IPv6 remains online so far.
Future will show, if it is stable.


Dead link from Metamask to Token Contract

Using Metamask's "View in Explorer" feature (see pic for USDC.e example) to view a token leads to a 404 error. The wrong URL it leads to for this token is:
https://cchain.explorer.avax.network/token/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664
But it should lead here:
https://cchain.explorer.avax.network/address/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664/transactions
or
https://cchain.explorer.avax.network/address/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664
This problem exists for other tokens as well.
Best fix I'd think would just redirect anything going to /token/ --but you guys know best!
Thanks much.

Or https://cchain.explorer.avax.network/tokens/0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664 (tokens plural) also works.


[GraphEdit] Convert to minimap line after getting connection line.

Users can change the start and end position of connection line by overriding _get_connection_line().
We should pass the positions in graph to _get_connection_line() consistently, then conver the line for minimap.
Before:

After:

@Geometror ,here is MRP:
FixGrapEdit.zip

Without this pr:

With this pr:

Well, just to be clear, this specifically is not the intended usage.

Users can change the start and end position of connection line by overriding _get_connection_line()

The system was designed so that you can provide a custom line "shape", not offsetting the start and end positions of connections.
That said, you're right, there are a few valid cases that come to my mind where it currently breaks. E.g.:

(Unity Shadergraph) Where you would want a straight line segment before/after each port with an absolute length.
To avoid recalculating this transform, we could add another method to the API (something along _get_minimap_connection_line), but I'm not really a fan of that. So this solution seems fine to me :)

Thanks!


Add the Helm OCI repository in the Helm README

Description
We want to point our ArtifactHub to the "new" OCI repository we use for our Helm releases.
Because ArtifactHub displays the README, we need to make sure that it mentions the OCI repository and from which version its available.
⚠ Only merge after our ArtifactHub repo has been updated to use the OCI url
How can this be tested?
Read the README 😅
Checklist

~[ ] Unit tests have been updated/added~
[x] PR is labeled accordingly with a single label
[x] I have read and understood the contribution guidelines

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (37f236a) 64.79% compared to head (5892e7d) 64.79%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2557   +/-   ##
=======================================
  Coverage   64.79%   64.79%
=======================================
  Files         249      249
  Lines       16352    16352
=======================================
  Hits        10596    10596
  Misses       4948     4948
  Partials      808      808

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


Cannot use the IN clause within the SUM method

Describe the bug
Hello everyone,
Is there anyone here familiar with using SQL on OpenSearch? We are encountering errors when running our queries and would greatly appreciate any assistance or insights you could provide.
To Reproduce
Specifically, we are facing issues with queries of type :
this works:
SELECT count(*) AS fps_count
FROM `my-alias-db`
WHERE status IN ('AA','BB')

but this does not (needed for creating new metrics in superset)
SELECT SUM(CASE WHEN status IN ('AA', 'BB') THEN 1 ELSE 0 END) AS status_sum
FROM 'my-alias-db'

Expected behavior
I'm expecting to have same results but I'm getting this error:
odelasticsearch error: Error (NullPointerException): {'error': {'reason': 'Invalid SQL query', 'details': '', 'type': 'NullPointerException'}, 'status': 400}
Host/Environment (please complete the following information):

OS: [ opensearch on aws]

Additional context
need to use my query for creating new metrics on superset

[Catch All Triage - 1, 2, 3, 4, 5]


Windows running edgedb on command prompt returns a ClientNoCredentialsError

EdgeDB Version: 2.6+ba1661b
OS Version: Windows 10

Steps to Reproduce:
Run edgedb command on command prompt
edgedb error: ClientNoCredentialsError: project is not initialized and no connection options are specified   Hint: Run edgedb project initor use any of-H, -P, -Iarguments to specify connection parameters. See--help for details
On powershell it works fine the command edgedb outputs:
Connecting to an EdgeDB instance at localhost:10700...
EdgeDB 2.6+ba1661b (repl 2.1.0+e136de4)
Type \help for help, \quit to quit.
edgedb>

Hi, I had encountered this issue too. After awhile I recognized it's because my terminal was not running at where edgedb.toml lie.
This may help you solve the issue


Added methods to ExecuteQuery without known class

Returns Dictionary<string,object>. Example from Stocks:
        var rows2 = cmdSelect.ExecuteQuery();
        foreach (var row in rows2)
        {
            Console.WriteLine(row["Id"] + "|" + row["Symbol"]);
        }

It is not quite a DataReader, but works reasonably well for small datasets.

Hi !
I just found myself needing such feature today: the use case was to be able to send arbitrary SQL query to a mobile device over the network.
In case it helps somebody else, here is the code:
using SQLite;
using System.Collections.Generic;
using System.Threading.Tasks;

public Task<List<Dictionary<string, string>>> Execute(string query)
{
    // Dont actually instantiate a connection here: it is just for the example
    var connection = new SQLiteAsyncConnection("app.db", SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.SharedCache);
    var lockableConnection = connection.GetConnection();
    using (lockableConnection.Lock())
    {
        var statement = SQLite3.Prepare2(lockableConnection.Handle, query);
        try
        {
            var columns = SQLite3.ColumnCount(statement);
            var result = new List<Dictionary<string, string>>();
            while (SQLite3.Step(statement) == SQLite3.Result.Row)
            {
                var row = new Dictionary<string, string>();
                for (var i = 0; i < columns; i++)
                {
                    var name = SQLite3.ColumnName(statement, i);
                    var value = SQLite3.ColumnString(statement, i);
                    row[name] = value;
                }

                result.Add(row);
            }

            return result;
        }
        finally
        {
            SQLite3.Finalize(statement);
        }
}

Cheers :)

Hi !
I just found myself needing such feature today: the use case was to be able to send an arbitrary SQL query to a mobile device over the network and get back the result.
It is very much bare-bone but in case it helps somebody else, here is the code. As we don't know the type of each column upfront, the idea is just to deserialize every row as a dictionary of string.
using SQLite;
using System.Collections.Generic;
using System.Threading.Tasks;

public Task<List<Dictionary<string, string>>> Execute(string query)
{
    // Dont actually instantiate a connection here: it is just for the example
    var connection = new SQLiteAsyncConnection("app.db", SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.SharedCache);
    var lockableConnection = connection.GetConnection();
    using (lockableConnection.Lock())
    {
        var statement = SQLite3.Prepare2(lockableConnection.Handle, query);
        try
        {
            var columns = SQLite3.ColumnCount(statement);
            var result = new List<Dictionary<string, string>>();
            while (SQLite3.Step(statement) == SQLite3.Result.Row)
            {
                var row = new Dictionary<string, string>();
                for (var i = 0; i < columns; i++)
                {
                    var name = SQLite3.ColumnName(statement, i);
                    var value = SQLite3.ColumnString(statement, i);
                    row[name] = value;
                }

                result.Add(row);
            }

            return result;
        }
        finally
        {
            SQLite3.Finalize(statement);
        }
}

Cheers :)

This saved me!! This should be added into the library or at least to sqlite-net example code.


New json format

First step towards #598

What are "otherArgs" supposed to be and why do we have them at all?

How about having a JSON representation of S-expressions? This basically means:

Literals are just literals, e.g., 15, "Hello world", and true.
Every operator application is represented as an array, e.g., OperEx(TlaArithOper.plus, ValEx(TlaInt(11)), ValEx(TlaInt22)) would be encoded in JSON as ["+", 11, 22 ]. However, I don't know how to sneak the type tags here. Maybe we should not.
The few special sets such as BOOLEAN, STRING, Int, Nat, and Real can be represented by using the operator notation: ["BOOLEAN"], ["STRING"], etc. It was our decision to call them values. In SANY, they are actually operators.
Operator definitions could be represented as objects, e.g., { "operator": "Bar", "params": [ "x", ["Foo", 2] ], "body": ..., "recursive": false }.  Here, x is a simple parameter, whereas Foo is an operator parameter of two arguments, that is, Foo(_, _). Similarly, a variable definition could be { "variable": "velocity" }

Let's discuss this alternative. I would like to have a format that is machine readable, but also not totally verbose like XML. Obviously, we should not introduce special syntax for every possible operator. Otherwise, we would have the same problem as the current JSON writer.

@shonfeder, @andrey-kuprianov, do you like to comment on this discussion?

This is definitely an improvement over the current JSON writer. I have several suggestions:
1. Can we use the type class pattern? See Chapter 1 in [Scala with Cats](https://underscore.io/books/scala-with-cats/). They give conversion to JSON as an example! We even don't have to use cats to follow this pattern. Then you would not have to use all those factories.

2. Can we convert integers, Booleans, and strings into the native JSON format? Having `{"type": "ValEx", {"Value": {"type": TlaInt, "value": 2}}}` is quite cumbersome.

3. Let's not use the name `"type"` for the expression case. Call it `"kind"`?

4. You could also output the `type` field of `TlaEx`. For the moment, it will be `untyped`, but very soon we will be able to output the expression types.

(1) It's unclear to me what kind of typeclass you want to see. Json, as defined in that book is essentially JsonRepresentation. As for the factories (and parameterization), they serve a different purpose than the parameterization of JsonWriter[A] in the example. There, a json writer is parameterized by what type gets written to json. In our case, that's fixed: we always (currently) convert TLA+ (IR) to json. The parameterization, and the use of factories, in our case comes from the different external libraries that implement json handling. I currently use ujson, but circe is also mentioned in the issue as an option. Then, if you wanted to use circe instead of ujson, all you had to do was write a factory, and extend TlaToJson like TlaToUjson does.
(2) I think there is value in consistency. The current implementation creates a json that exactly matches the IR syntax tree, including wrapping integers in a ValEx and TlaInt layer. The actual value field is still a json-native integer. This approach also future-proofs implementing, e.g. model values, where you could have {"type": "ValEx", {"value": {"type": TlaModelVal, "value": X}}}. In addition, json just has "numbers", so integers and decimals would have the same representation. Lastly, while maybe more verbose, this representation makes is trivial to do reconstruction (json to TLA-IR). Verbosity doesn't even matter, at the end of the day, since json is for machines, not humans.
(3) Sure, I anticipated such comments and made the field name a parameter for exactly this reason.
(4) Also doable.

What are "otherArgs" supposed to be and why do we have them at all?

This is just a reference to the fact that some constructors have individually named arguments (e.g. TlaOperDecl has body), and some take an arbitrary list of arguments (e.g. OperEx has oper named and args: TlaEx*, a sequence of "other arguments"). Perhaps the description could be improved.

How about having a JSON representation of S-expressions? This basically means:
1. Literals are just literals, e.g., `15`, `"Hello world"`, and `true`.

2. Every operator application is represented as an array, e.g., `OperEx(TlaArithOper.plus, ValEx(TlaInt(11)), ValEx(TlaInt22))` would be encoded in JSON as `["+", 11, 22 ]`. However, I don't know how to sneak the type tags here. Maybe we should not.

3. The few special sets such as `BOOLEAN`, `STRING`, `Int`, `Nat`, and `Real` can be represented by using the operator notation: `["BOOLEAN"]`, `["STRING"]`, etc. It was our decision to call them values. In SANY, they are actually operators.

4. Operator definitions could be represented as objects, e.g., `{ "operator": "Bar", "params": [ "x", ["Foo", 2] ], "body": ..., "recursive": false }`.  Here, `x` is a simple parameter, whereas `Foo` is an operator parameter of two arguments, that is, `Foo(_, _)`. Similarly, a variable definition could be `{ "variable": "velocity" }`

Let's discuss this alternative. I would like to have a format that is machine readable, but also not totally verbose like XML. Obviously, we should not introduce special syntax for every possible operator. Otherwise, we would have the same problem as the current JSON writer.

Honestly, I don't see what the benefit would be. Your encoding also completely erases the distinction between NameEx(...) and ValEx(TlaString(...)). What is 2 + x? If it's ["+", 2, "x"], what is 2 + "x"? Ultimately, verbosity is not an issue for machine-readable formats, especially not given the size of TLA+ specifications, the json files would still be tiny (for a machine to read).
The current implementation is both unambiguous and very intuitive for anyone who understands the IR.

I'm inclined to agree with @Kukovec.  An unambiguous and easy to maintain serialization seems more valuable than catering to human readability in special cases. Humans can figure out this representation easily enough to code with it reliably, and imo humans shouldn't be looking at data serialization output except for to code consumers. And for the latter purpose, a simple and consistent format is much more valuable than certain special cases being easy to read.
I think we might take a queue from Pandoc, for which it is quite easy to write filters that work on the JSON encoding of its AST (confirmed by the number of filters in different languages).
Here's a small example:
sf@system76-pc:~/scratch$ echo "# Heading
>
> *Foo* and \`bar\`." | pandoc -t json | jq
{
  "blocks": [
    {
      "t": "Header",
      "c": [
        1,
        [
          "heading",
          [],
          []
        ],
        [
          {
            "t": "Str",
            "c": "Heading"
          }
        ]
      ]
    },
    {
      "t": "Para",
      "c": [
        {
          "t": "Emph",
          "c": [
            {
              "t": "Str",
              "c": "Foo"
            }
          ]
        },
        {
          "t": "Space"
        },
        {
          "t": "Str",
          "c": "and"
        },
        {
          "t": "Space"
        },
        {
          "t": "Code",
          "c": [
            [
              "",
              [],
              []
            ],
            "bar"
          ]
        },
        {
          "t": "Str",
          "c": "."
        }
      ]
    }
  ],
  "pandoc-api-version": [
    1,
    20
  ],
  "meta": {}
}

This is a quite verbose, but easy to predict encoding of the haskell AST:
sf@system76-pc:~/scratch$ echo "# Heading

*Foo* and \`bar\`." | pandoc -t native
[Header 1 ("heading",[],[]) [Str "Heading"]
,Para [Emph [Str "Foo"],Space,Str "and",Space,Code ("",[],[]) "bar",Str "."]]

And, modulo the names of the keys, I think this is approximately the approach taken in this PR currently.
tl;dr I'm pro :)

I see your point @shonfeder and @Kukovec. IMO this one is somewhat in contradiction with #530. Perhaps, it is not a good idea to solve two problems at once.
I guess, if we want to pursue readability, we can introduce yet another format that is essentially S-expressions. JSON is almost like that but it also has unnecessary syntax.
@vitorenesduarte and @andrey-kuprianov, the json syntax is verbose, but it should be quite easy to parse. Why would you like to have a more concise syntax for automatic tooling?

@Kukovec, can you introduce an ADR like this: https://apalache.informal.systems/docs/adr/004adr-annotations.html
It is hard to extract the logic from the scala docs and tests.

What are "otherArgs" supposed to be and why do we have them at all?

This is just a reference to the fact that some constructors have individually named arguments (e.g. TlaOperDecl has body), and some take an arbitrary list of arguments (e.g. OperEx has oper named and args: TlaEx*, a sequence of "other arguments"). Perhaps the description could be improved.

Let's just use positioned arguments wherever possible, like we do in the IR. If we have clear documentation, positioned arguments will do the job. If find otherArgs quite confusing and not self-explanatory.

@vitorenesduarte and @andrey-kuprianov, the json syntax is verbose, but it should be quite easy to parse. Why would you like to have a more concise syntax for automatic tooling?

@konnov why do you say we want a more concise syntax? We don't! I completely agree the JSON format should be as straightforward as possible to parse, and not care at all about human readability.

@konnov why do you say we want a more concise syntax?

From #530, I had an impression that you like to have a JSON format for the counterexamples that maps well on JSON concepts. The mapping proposed in this PR is aiming to minimize the number of parsing rules rather than using a JSON-native representation.

@konnov why do you say we want a more concise syntax?

From #530, I had an impression that you like to have a JSON format for the counterexamples that maps well on JSON concepts. The mapping proposed in this PR is aiming to minimize the number of parsing rules rather than using a JSON-native representation.

One idea that came up is to instead generate that new JSON format for counterexamples by parsing the counterexample.tla. This should be feasible as we're already doing something like that for TLC.

Let's distinguish between two formats:

The general format for TLA+ syntax trees. This PR is about that format
The format for counterexample. This is a completely different one that's used in https://github.com/tlaplus/CommunityModules/blob/master/modules/Json.tla. And there is a particular reason for that format to be simpler, because the data it represents is much simpler (ground formulas)

And, as Vitor correctly pointed out, we don't even need to implement generation of this second format in Apalache, we can reuse the translator above.

@Kukovec, I think it is all clear now. Ignore my comments on simpler JSON. But please have a look at 3-4, otherArgs, and the ADR.

The latest commit is missing the ADR, since that takes a bit longer to write. Note (to self): don't merge until the ADR is finished too.

If you like to split the work, as we discussed earlier, we can merge this PR first and then continue with an ADR

If you like to split the work, as we discussed earlier, we can merge this PR first and then continue with an ADR

Makes sense, lets do that, since the ADR will likely spawn its own discussion/comments, that have nothing to do with code.


Laravel 11 Support

Hi,
Will there any new release on supporting Laravel 11?
Thank you.

Any update regarding Laravel 11 support.

Any update regarding Laravel 11 support.

i have submitted my PR on the upgrade - https://github.com/api-ecosystem-for-laravel/dingo-api/pull/43

Yes, absolutely it will be supported soon.

Yes, absolutely it will be supported soon. https://github.com/api-ecosystem-for-laravel/dingo-api/releases/tag/v4.2.0-beta1
Please try it, and let me know how well it works for you.

I noticed that, this package have another dependency from https://github.com/dingo/blueprint .
Still figuring out, how to upgrade the package as there's some deprecation issue need to be solve. Don't have any idea how to do that at the moment.

@specialtactics , I've made PR for dingo/blueprint to support Laravel 11. See this PR for more details. Just need it to be merge into master and tag.
Then we are good to go to latest stable version.

Seems like there is a bug, because of new symfony type hints.  In Dingo\Api\Http\Response for line 127  $this->content = $this->getOriginalContent() ?? '';.
Type hint for content property has been added and it should always be a string.
Because of this, if any response contains something that isn't a string, for example an StdClass, there is always an error.
Couldn't find a straight forward fix for this, but maybe i'm just returning responses wrong.

Two separate things, I've tagged new version of blueprint based on PR mentioned above by @nasrulhazim
The other issue mentioned by @MartinsRucevskis I will have a look at now.

Ok, I pushed a fix which think it should fix it, although I'm not sure what would happen if you have a nested set of stdClasses.
@MartinsRucevskis can you please try v4.2.0 (non-beta). Hopefully this is the last of any issues, but please post more feedback if you have issues upgrading to Laravel 11.

@specialtactics Thank You, but won't really be able to test the fix for now.
But anyways, looking at the PR, this wont fix the actual issue, since the error occurs earlier in the flow.
As of my memory, the actual problem lied somwhere else and the content should have been a string, but stdClass isnt being treated as json.
But a temporary fix like this i think should work.
  public function morph($format = 'json')
    {
        $content = $this->getOriginalContent() ?? '';
        $this->fireMorphingEvent();
        if (isset(static::$transformer) && static::$transformer->transformableResponse($content)) {
            $content = static::$transformer->transform($content);
        }
        $formatter = static::getFormatter($format);
        $formatter->setOptions(static::getFormatsOptions($format));
        $defaultContentType = $this->headers->get('Content-Type');
        // If we have no content, we don't want to set this header, as it will be blank
        $contentType = $formatter->getContentType();
        if (! empty($contentType)) {
            $this->headers->set('Content-Type', $formatter->getContentType());
        }
        $this->fireMorphedEvent();
        if ($this->content instanceof EloquentModel) {
            $this->content = $formatter->formatEloquentModel($content);
            ....

https://github.com/jemmy/dingo-api

Hey @MartinsRucevskis no problem, when you can. I would appreciate if you could post the exception with stack trace, and even better if you could provide a reproducible example.

[2024-06-07 04:55:33] local.ERROR: Cannot assign array to property Symfony\Component\HttpFoundation\Response::$content of type string {"exception":"[object] (TypeError(code: 0): Cannot assign array to property Symfony\Component\HttpFoundation\Response::$content of type string at /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Http/Response.php:127)
[stacktrace]
#0 /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Routing/Router.php(537): Dingo\Api\Http\Response->morph('json')
#1 /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Routing/Router.php(508): Dingo\Api\Routing\Router->prepareResponse(Object(Dingo\Api\Http\Response), Object(Dingo\Api\Http\Request), 'json')
#2 /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Http/Middleware/Request.php(123): Dingo\Api\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))
#3 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Dingo\Api\Http\Middleware\Request->Dingo\Api\Http\Middleware\{closure}(Object(Dingo\Api\Http\Request))
#4 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#5 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#6 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#7 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#8 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#9 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#10 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#11 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#12 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#13 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#14 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#15 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\HandleCors->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#16 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#17 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#18 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#19 /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Http/Middleware/Request.php(122): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#20 /app/vendor/api-ecosystem-for-laravel/dingo-api/src/Http/Middleware/Request.php(101): Dingo\Api\Http\Middleware\Request->sendRequestThroughRouter(Object(Dingo\Api\Http\Request))
#21 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Dingo\Api\Http\Middleware\Request->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#24 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#25 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1168): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#26 /app/public/index.php(17): Illuminate\Foundation\Application->handleRequest(Object(Illuminate\Http\Request))
#27 /app/vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php(16): require_once('/app/public/ind...')
#28 {main}
"}

Seems like there's a simple solution.
In Dingo\Api\Http\Response replace all $this->content with $content. Add $this->content = $content; at the end.
    public function morph($format = 'json')
    {
        $content = $this->getOriginalContent() ?? '';

        $this->fireMorphingEvent();

        if (isset(static::$transformer) && static::$transformer->transformableResponse($content)) {
            $content = static::$transformer->transform($content);
        }

        $formatter = static::getFormatter($format);

        $formatter->setOptions(static::getFormatsOptions($format));

        $defaultContentType = $this->headers->get('Content-Type');

        // If we have no content, we don't want to set this header, as it will be blank
        $contentType = $formatter->getContentType();
        if (! empty($contentType)) {
            $this->headers->set('Content-Type', $formatter->getContentType());
        }

        $this->fireMorphedEvent();

        if ($content instanceof EloquentModel) {
            $content = $formatter->formatEloquentModel($content);
        } elseif ($content instanceof EloquentCollection) {
            $content = $formatter->formatEloquentCollection($content);
        } elseif (is_array($content) || $content instanceof ArrayObject || $content instanceof Arrayable) {
            $content = $formatter->formatArray($content);
        } elseif ($content instanceof stdClass) {
            $content = $formatter->formatArray((array) $content);
        } else {
            if (! empty($defaultContentType)) {
                $this->headers->set('Content-Type', $defaultContentType);
            }
        }

        $this->content = $content;

        return $this;
    }

Has been tagged as v4.2.1, any feedback appreciated.

Seems like there are no outstanding reports of bugs. I've also updated the tests and added github ci through actions for both laravel 10 and 11 (intending to support both for a while yet), and fixed some other minor bugs.
I will close this thread, if there are any more issues, please start a new issue for that specific problem.


Show error message on macOS when trying to enable GPU plugin

It's confusing for users who haven't read the FAQ when the plugin just turns itself off again.

I dont see a reason why there should be error message just for mac when atm we do not support a lot of other systems/hardware

Other than if you're running macOS, not having a GPU that supports OpenGL 4.3 or greater would be the other main factor resulting in the GPU plugin not being able to run, at least as far as I can tell. Would either a check for a compatible OpenGL version or just a generic error message be desirable?

I mean, a message for macOS users would be a good start. You could add an OpenGL version check too, later.

MacOS gpu support was added in 0e6f9f9aeca8ebb46b40780dbfeca24a5682f457. Think this should be closed.

The proposed error message could now be for trying to enable compute shaders.

An error message for compute shaders would be a better approach, but this PR is no longer needed as written.


[Bug] 404 error reconciling dashboard if id not null

Describe the bug
Setting the "id" within the dashboard json to anything else than null (or omitting it) will cause reconciliations to fail. Grafana will respond with 404 "Dashboard not found" on reconciliation attempts.
grafana-operator-controller-manager-855556ff55-jxlgm manager 1.6813296423633134e+09    INFO    found matching Grafana instances for dashboard    {"controller": "grafanadashboard", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDashboard", "GrafanaDashboard": {"name":"grafanadashboard-sample
","namespace":"default"}, "namespace": "default", "name": "grafanadashboard-sample", "reconcileID": "8b603d62-3670-4340-b44d-46d7d10f43ed", "count": 1}
grafana-operator-controller-manager-855556ff55-jxlgm manager 1.6813296423865497e+09    ERROR    error reconciling dashboard    {"controller": "grafanadashboard", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDashboard", "GrafanaDashboard": {"name":"grafanadashboard-sample","namespace":"def
ault"}, "namespace": "default", "name": "grafanadashboard-sample", "reconcileID": "8b603d62-3670-4340-b44d-46d7d10f43ed", "dashboard": "grafanadashboard-sample", "grafana": "grafana", "error": "status: 404, body: {\"message\":\"Dashboard not found\",\"status\":\"not-found\"}"}
grafana-operator-controller-manager-855556ff55-jxlgm manager github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDashboardReconciler).Reconcile
grafana-operator-controller-manager-855556ff55-jxlgm manager     github.com/grafana-operator/grafana-operator/controllers/dashboard_controller.go:216
grafana-operator-controller-manager-855556ff55-jxlgm manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile
grafana-operator-controller-manager-855556ff55-jxlgm manager     sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:121
grafana-operator-controller-manager-855556ff55-jxlgm manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
grafana-operator-controller-manager-855556ff55-jxlgm manager     sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:320
grafana-operator-controller-manager-855556ff55-jxlgm manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
grafana-operator-controller-manager-855556ff55-jxlgm manager     sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:273
grafana-operator-controller-manager-855556ff55-jxlgm manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
grafana-operator-controller-manager-855556ff55-jxlgm manager     sigs.k8s.io/controller-runtime@v0.13.0/pkg/internal/controller/controller.go:234

Version
v5.0.0-rc1
To Reproduce
Steps to reproduce the behavior:

Download the example resources https://raw.githubusercontent.com/grafana-operator/grafana-operator/master/examples/basic/resources.yaml
Change the id in spec.json of the GrafanaDashboard CR to 1 instead of null like this:

apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
  name: grafanadashboard-sample
spec:
  resyncPeriod: 30s
  instanceSelector:
    matchLabels:
      dashboards: "grafana"
  json: >
    {
      "id": 1,
      "title": "Simple Dashboard",
      "tags": [],
      "style": "dark",
      "timezone": "browser",
      "editable": true,
      "hideControls": false,
      "graphTooltip": 1,
      "panels": [],
      "time": {
        "from": "now-6h",
        "to": "now"
      },
      "timepicker": {
        "time_options": [],
        "refresh_intervals": []
      },
      "templating": {
        "list": []
      },
      "annotations": {
        "list": []
      },
      "refresh": "5s",
      "schemaVersion": 17,
      "version": 0,
      "links": []
    }

The dashboard won't be reconciled and the operator will log the previously mentioned error

Expected behavior
Including a dashboard id shouldn't break reconciliation. The id field is appended when the dashboard is exported through the Grafana UI via Dashboard Settings > JSON Model.
Runtime (please complete the following information):

OS: Mac/Linux
Grafana Operator Version: v5.0.0rc1
Grafana: 9.4.7
Environment: kind, EKS v1.25.3

@Bloodyludi Thanks for reporting this, I'll take a look to see what's going on with the operator tomorrow morning. We'll also discuss this on our next triage call

The error is easily reproducible, will continue on it later on

@Bloodyludi I think I got the crux of the issue. What is your use case for wanting to set ID?
According to the grafana docs it's an auto-incrementing field https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/, so by setting it to something other than null and sending the http request, we are essentially saying "update the dashboard with this ID", which doesn't exist on the grafana instance. IMHO, this is intended usage and not in fact a bug but conscious design by upstream grafana developers.
see: https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/#create--update-dashboard
Closing the issue as this relates to upstream design and grafana API behaviour, rather than operator logic.
@Bloodyludi If you have another use case for setting id (or UID) please file a new issue with your feature request, or comment and @ me or any other maintainer on any relevant feature/bug that would more closely matching your desired behaviour.
Thanks!


fix docstring and rebuild documentation

I'm assuming the docs build skip is expected here?

Yeah. For the moment the docs is only built when a PR to master is made. Do you want me change this?

Might as well. Docs don't take long to generate.

Closing in favor of #12


Allowing main element as well as main role

Summary
Allow <main> as well as <element role="main'> as this is even more valid.
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Main_role

The <main> element has a role of main.

Details
Also changed message to that people are aware they can use the <main> element.
Motivation and Context
NextJS uses a <main> element by default, but bbc-a11y does not like that there is no role="main"
How Has This Been Tested?
Added/updated tests
Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] I've added tests for my code
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Hi @votemike
Thanks for your PR! This kind of change has been suggested before in https://github.com/bbc/bbc-a11y/pull/328 but it was declined - see that PR for reasoning.
@EmmaJP & @JamieKnightBBC - Can I check our position hasn't changed on requiring role="main" and not just accepting <main>?

I see. That's a pain. It seems like that is because <main> is an HTML 5 element that IE11 doesn't understand (and therefore doesn't apply the role to).
However, that means that in order for any website to use the bbc-a11y tool, they have to comply with the minimum browser requirements as set by the tool. I think it should be optional.
Would there be scope for options to be passed in to the tool surrounding minimum browser requirements?
And if you'd like another reason... I've heard they're sunsetting Internet Explorer entirely.

We actually looked at this again fairly recently, when updating the HTML guidance (refer https://www.bbc.co.uk/accessibility/forproducts/guides/html/landmarks/) and our conversation still steered us toward including the explicit role attribute and not solely relying on support for the native element.
Hopefully at some point in the not too distant future all browsers the BBC has to be mindful of will have full support of the native elements, as the older browsers become less used.

Support for IE11 (and all IEs) runs out next Wednesday on June 15, 2022. https://blogs.windows.com/windowsexperience/2021/05/19/the-future-of-internet-explorer-on-windows-10-is-in-microsoft-edge/
Is it worth reviewing this now?

@EmmaJP @andymsuk could we merge this now the IE support has run out?

@nicholasgriffintn - are you contributing to this repo now? Do you know who else is maintaining?

I'm not contributing directory no, just sorted out some of the contributing stuff and the CI, there are a few talks about this repo internally going on, I'm not sure about if this is going to happen or not, at all tbh.

Looking at out guidelines: https://www.bbc.co.uk/accessibility/forproducts/guides/html/landmarks/
role="main" is still required (in the testing section) and it has to abide by those, so unless that gets updated, I don't think this will be a change that can be merged, independent of IE support.
Rather than keeping this PR alive by removing the stale label, I've created a discussion for it here: https://github.com/bbc/bbc-a11y/discussions/372


add antialiasing to whitty dialoguebox & initial ballistic cutscene background

makes them look all smooth and not jaggitiyitiy

before

after

lol oops forgot story mode exists


[WIP] truncate build slug after escaping

long build names were getting too long because truncation happened before escaping, and the escapes increased the length of the string beyond the limit

slugs are case-insensitive (uppercase are safe, cast to lowercase)
only strings that come from providers are escaped (build_slug, ref)
prefix, hash are assumed safe because they are internal

This should wait until #282 is merged so that builds can be tested.
I'll rebase with an update to the tests to ensure the build slug is long.

Should we add a test that has a build slug that is too long/add a comment to an existing test where the slug ends up being >63 to let future generations know that they shouldn't replace it with a repo that has a shorter name?

LGTM


Upgrade to React 15.5.0

Upgrades to React and React-DOM v15.5.0
Upgrades react-hot-loader to v1.3.1
Adds prop-types and create-react-class as dev. dependencies
Applies jscodeshift to use create-react-class
Applies jscodeshift to use prop-types

ref #85


What's the difference between vsphere-automation-sdk-python and pyvmomi

Well, as far as I know, both of them can do many same things like creating and running a vm.
I wonder what is the main difference between vsphere-automation-sdk-python and pyvmomi?
Thanks a lot.

I have same doubt too.. Can someone answer please?

PyVmomi used the vSphere web service APIs which are SOAP based APIs. For more info refer to: https://code.vmware.com/doc/preview?id=4206
vSphere Automation SDKs (python, java, .net, perl, ruby and REST) uses new version REST based APIs. Some new features like Tagging, Content Library,
Appliance Management, NSX and VMware Cloud on AWS console APIs are only available through the Automation SDKs. Some existing SOAP based APIs, such as VM lifecycle and VC inventory APIs are also re-designed to support REST. For more info please see:  https://vmware.github.io/vsphere-automation-sdk/. Here is talk from @kmruddy about the new REST API: https://www.youtube.com/watch?v=nr3pJovtbzM

Will both libraries continue to be supported ?

@tianhao64 Thanks for explaining.

@linuxdan Yes, both will continue to be supported.


ord wallets

list all Bitcoin Core ordinals wallets

would this just be the same output that is produced from bitcoin-cli listwallets?

@cryptoni9n If you want you could implement the --ordinals-only flag. This would mean loading all wallets (which can take a while) and then checking that the descriptor matches the expected. We have helper function for that somewhere. That PR should also make sure to handle the waiting gracefully and not error while the wallets are loading.

This sounds a little above my head, not sure I'll be ready for this one anytime soon.

It's a bit complex, that's why I was too lazy to do it myself. The ord wallets command gets you most of the way but would be extra nice to only show actual ordinals wallets.


Avoid xcrun Call on Non Darwin

xcrun doesn't exist on non Darwin, so we should skip the execute_process
that calls it on non Darwin.

@swift-ci please test

@swift-ci please smoke test


Extract versions to specific files

The different version should be extracted to a dedicated pom.xml file.
Then, this file can be updated automatically by dependabot
Some examples:

https://github.com/jhipster/jhipster-lite/blob/main/src/main/java/tech/jhipster/lite/generator/server/springboot/core/domain/SpringBoot.java#L5
https://github.com/jhipster/jhipster-lite/blob/main/src/main/java/tech/jhipster/lite/generator/server/springboot/database/postgresql/domain/Postgresql.java#L5

@pascalgrimaud Can you assign to me, please?
My proposition:
1- Create a module with only the pom where it will be declared all the dependency versions
2- Create a property file from the pom.xml
3- Create a class to read a property and use it each time we need a dependency version.

Yes exactly what I have in mind too

Let me think a little bit about the folder structure before starting something.
I'll propose it here

After thinking a little bit, I would suggest to add the method in existing BuildTooService:

Here the mini roadmap to do this:

1st PR

add a new pom.xml to src/main/resources/generator/buildtool/ folder with old dependencies (it's intended)
update dependabot maybe to add this folder ?
check if some of these dependencies are auto updated

2nd PR

add a method in BuildToolService to extract the version, for example, getVersion("spring-boot") should return Optional 2.6.2

other PRs: refactoring with small PRs to update context by context, and use this new method

What do you think?

Seems OK for me.
For 3rd part, 3- Create a class to read a property and use it each time we need a dependency version., I was thinking if the property file can be used as any other application property and then use @Value annotation to have access to the property value, so no need to create a specific class/method to have access to the versions ;)
Anyway, let's do it step by step with small PRs!

Mhhh unless I miss understood, the 3rd part is similar to the 2nd part I mentioned
Anyway, I don't think we need @Value, as we'll be in the domain, so we can't rely on framework and we don't need framework in fact here. Simple Java code can read files

I'm trying to do the NPM part, with a fresh package.json, but I wonder where we should put these new files:

pom.xml
package.json
Dockerfile / docker-compose for Docker ?
etc

I'd suggest:

for pom.xml, it could be src/main/resources/generator/buildtool/dependencies/pom.xml
for package.json, it could be src/main/resources/generator/packagemanager/dependencies/package.json

Another solution would be:

src/main/resources/generator/dependencies/pom.xml
src/main/resources/generator/dependencies/package.json

what do you think? which solution do you prefer? Do you have better idea?

@DanielFran :  I'm adding a bounty on this. I don't need this, as the NPM part was pretty easy

@DanielFran : I'm closing this one as I think the main work is finished.
Now we can improve other context (spring boot, postgresql, liquibase, etc), step by step, for using this new system of version -> and it should be done in another PRs

@pascalgrimaud Bug bounty claimed: https://opencollective.com/generator-jhipster/expenses/62472

@DanielFran : approved


Add option to resize ridiculous massive headers

Closes #9
Happy to make any changes, etc. All feedback welcome (and encouraged)

Great call with this! So much better. Will leave some feedback on the changes

Also, what do you think if we enable this option by default in the settings? It doesn't take away any functionality from Medium, and I think this is a major improvement.

Ha, if you ask me everything should be default. Anyway, renamed method and option label names an moved it into defaults (which also fixes that js error)

Hey that works. Looks good to me! Thanks again


Urgent: (TOTP)How to change the tolerance value for all users

Hi ,
Want to make the TOTP tolerance value to 0, to make sure the current token is only valid.
Any setting is there to change the tolerance value for all users?
need urgent help.
@jezdez @matthiask @chipx86 @com4 @bmihelac

If you have an urgent issue, it may be time for you to hire a consultant, not summon a volunteer.
By the way, the ticket system is where you report bugs, not to ask for support questions, thanks for your understanding!


Add release notes for version 0.46.0

No changes needing a change description found.

You can try these changes here

🛝 Playground
🌐 Website
📚 Next docs


data-icon with FontAwesome (or any other)

Is there a chance we could use any other type of font icon instead of the pre built Bootstrap glyphs?
If so, how would one use them? Example?

I am having this issue too. Is it possible to use font awesome with the "data-icon" attribute? Not trying to overload iconbase or tick icon. Trying to make individual option icons use font-awesome.

Agreed with @sovtek , I would also like to put font-awesome icons into the data-icon attribute...

data-icon simply creates a span element with a class that is whatever you've set data-icon to. So, if you want Font Awesome, simply set data-icon="fa-heart". That would result in .

Thanks @caseyjhol, the only issue with this solution is that I want the icon to be colored depending on the item in the list.


Instances of Clusterwide CRDs are not displayed properly in InstalledOperators

Bug Report

What did you do?
Installed An operator which provides a clusterwide CRD
What did you expect to see?
UI where I could list the clusterwide CRD instances
What did you see instead? Under which circumstances?
undefined, 404

Environment

operator-lifecycle-manager version:

Kubernetes version information: v1.14

Kubernetes cluster kind: OCP 4.x (CRC)

Additional context
The clusterwide CRD instances are properly listed if check in
Administration>Cluster Resource Definitions>config.operator.tekton.dev>instances

Closing this issue as the right place to report this issue is openshift/console
https://github.com/openshift/console/issues/3040


GEODE-5373: Adjust timing for GMSHealthMonitorJUnitTest.testRemoveMem…

…berCalled

This test fails on Windows when run in conjunction with other tests - on its
own it always passes. There appears to be a thread scheduling difference in
Windows that is resulting in the Failure Detection Scheduler thread running
after the sleep interval.

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

precheckin is green


Feature request: Change how gene depth is estimated

Based on the StrainPGC workflow, here is a different way to estimate gene depth:

Bowtie2 index is built on all centroid99 sequences (after filtering) from a list of species (see L1-17 and L59-95)

Bowtie2 is run with the following flags (I'm not sure how sensitive the results are to these):  (see L100-146)

bowtie2 -x <centroid99_bowtie_db> --no-unal --mm -U <input_r1> -U <input_r2> --seed <random_seed> --local --ignore-quals --end-to-end --very-sensitive | sort_bam.sh > <sorted_bam_output>

(Note: sort_bam.sh is meant as a placeholder for my implementation of BAM sorting.)

Total number of bases mapping to each gene is summed up across all positions, e.g. using samtools depth:  (see L186-209)

samtools depth <sorted_bam_output>  -g SECONDARY --min-MQ 0 | sum_by_genes_script.awk > <total_bases_mapping_by_gene>

(Note: sum_by_genes_script.awk is also a placeholder for my hack-y implementation.)
(...We should also discuss the -g SECONDARY and --min-MQ 0 flags. I'm not remembering the details of why I do that, but I vaguely remember there being something very unintuitive about how samtools depth filters reads... 🤔)

Divide the total number of mapped bases by the centroid99 length. Sum all of these c99 depths in each c95 (or c90/85/80/75, depending on desired clustering)

This step is easiest to do for each species individually, while also merging all samples together into one file. (see L212-246 and the relevant script: merge_pangenomes_depth.py)
An update to MIDAS's run_genes and/or merge_genes that accomplishes all of the above would be ideal. Alternatively, I would also welcome including any subset of those steps.

Bowtie2 index is built on all centroid99 sequences (after filtering) from a list of species

This has already implemented by midas2 run_genes --species_list where the user can build one bowtie2 pangenome database for the given list of species.

Bowtie2 is run with the following flags
bowtie2 -x <centroid99_bowtie_db> --no-unal --mm -U <input_r1> -U <input_r2> --seed <random_seed> --local --ignore-quals --end-to-end --very-sensitive

[ ]  I can add the flexible of adding optional bowtie2 aligner parameters to MIDAS2.

The post-alignment filter options can be customized to no filter.

Total number of bases mapping to each gene is summed up across all positions.  Sum all of these c99 depths in each c95 (or c90/85/80/75, depending on desired clustering)

Total number of bases is already implemented in MIDAS2 run_genes.
[ ] I will add the flexibility of compute the coverage either on centroid99 or centroid95 level.

Divide the total number of mapped bases by the centroid99 length.

By "sum all of these c99 depths", do you mean the coverage (defined as total number of bases mapped per centroid_99 divided by centroid99 length)?

Here is what I proposed for calculating the copy number per centroid_99:

Add centroid_XX prevalence for a given list of genomes per species

[ ] Choice of genome lists: custom list or genomes list filtered by checkM's completeness and/or contamination.
[ ] Might need to run checkM for all clean imported genomes.

Report the prevalence of centroid_xx for select list of genomes to genes_summary.tsv.

Add the options of choosing the denominator of copy number compute per centroid_99:

Original MIDAS2 implementation, centroid_99s corresponding to the 15 university single copy marker genes,  OR
list of centroid_99s based on the centroid_99s prevalence filter (the user can set up the cutoff).

I need to think about the potential user case of this update. For the least, you can re-compute the copy number in your script if MIDAS2 provide the centroid_xx prevalence information.

The denominator will be the mean or median of the list of centroid_99s from step 4.

Please let me know if I miss out anything. Thanks.
Chunyu

By "sum all of these c99 depths", do you mean the coverage (defined as total number of bases mapped per centroid_99 divided by centroid99 length)?

Yes. I'm using depth throughout to mean mean "vertical coverage" and agree with your definition. I just don't like the word "coverage" because it's meaning can be ambiguous. "Mean depth" seems unambiguous.

This has already implemented by midas2 run_genes --species_list where the user can build one bowtie2 pangenome database for the given list of species.
Total number of bases is already implemented in MIDAS2 run_genes.

Awesome!

I can add the flexible of adding optional bowtie2 aligner parameters to MIDAS2.
The post-alignment filter options can be customized to no filter.

Great! I know that I found some non-intuitive things about how samtools depth calculates depth (vertical coverage) So we should probably double check that it really is no filter.

I will add the flexibility of compute the coverage either on centroid99 or centroid95 level.

This shouldn't actually matter. As long as c95 depth (vertical coverage) is the sum of all c99 depths, I can sum it up at any level and get the same answer. I do all my downstream work at c75.

Here is what I proposed for calculating the copy number per centroid_99...

Yeah, let's have a more involved discussion about this one. I'm not sure what's best for the various audiences.

All the above mentioned changes have been implemented in version 2.0.0.rc2


refactor(solidity): add modifier to bridge call

Summary by CodeRabbit

New Features

Added pausing and unpausing functionality to bridge contracts, enhancing control and security.

Bug Fixes

Implemented non-reentrant checks to prevent reentrancy attacks on bridge contracts.

Tests

Introduced tests for pausing and unpausing bridge contracts to ensure reliability and security.

mg


Select a base class for spectrum

Reasonable choices might be:

astropy.nddata.NDData
astropy.units.Quantity
nothing (and have data and wavelength as members)

data could be a quantity
or an ndarray

Some loose thoughts:

NDData seems like a good fit, but is under active development. We are likely to see changes in the NDData API and will have to adapt to it as time goes on.
NDData was actually designed with 2 use cases in mind: Spectrum and CCD imaging.
Quantitiy is a lot more mature than NDData. It brings in a lot of numpy array methods (min, max, mean, sum, ...). On the one hand that convolutes the namespace a little, on the other hand we might want much of that.
Related: Some reasonable use cases (spectrum / 4 / np.pi / (15. * unit.parsec)**2) will not (yet?) work out of the box for NDData, but would for a quantity.
Numerical operations with quantities are sometimes significantly slower than plain numpy. NDData is untested in that regard, but probably even slower (see e.g. https://github.com/astropy/astropy/issues/3908#issuecomment-176782129).
In NDData, unit, data, etc. are properties without a setter. That was a deliberate design decision - users should be prevented from changing these things in place, because mask, unit, uncertainty and data would get out of sync. (E.g. if If do spectrum.data[5:25] = np.arange(20), then spectrum.uncertainty certainly also needs to be changed). Thus, we would need setter methods for all this stuff or use the approach "a spectrum object should be treated as immutable and all operations return a new spectrum object".
I understand why the NDData design was made that why, but I worry about performance implications. (https://github.com/astropy/astropy-APEs/blob/master/APE7.rst)

Let's take NDData and go with it. We can close this issue later if we decide to stay with NDData, or we can close it now if you like.


WIP Improve App/View relation and introduce setView

Resolves #188
This also allows for some of the methods to error naturally instead of failing silently.
onBeforeStart() {
  var view = this.setView(new Layout());
  view.render();  // This line will be unnecessary in Mn v3.3
  this.showChildView('header', new HeaderView());
  this.startChildApp('main', { region: this.getRegion('main') });
  // Single DOM render
  this.showView();
}

// Instead of
onBeforeStart() {
  // DOM render
  this.showView(new Layout());
  // DOM render
  this.showChildView('header', new HeaderView());
  // At least 1 DOM render
  this.startChildApp('main', { region: this.getRegion('main') });
}

TODO:

[ ] docs
[ ] new tests / update tests for breaking changes

Thoughts?

Agreed, this looks great.

Included in #209


[Bug] 在nuxt3下使用开发环境没问题，生产环境出现500

Version
1.11.5
Link to Minimal Reproduction
https://github.com/pooooood/tableTest
Steps to Reproduce
npx nuxi@latest init test
cd test
npm install @visactor/vue-vtable
修改app.vue

新建pages/index.vue

Current Behavior
npm run dev 使用完全没有问题
npm run build 使用有问题打开直接500

Expected Behavior
npm run build 使用没有问题
Environment
- OS:
- Browser:
- Framework:

Any additional comments?
No response

感谢你的反馈！我们已经收到你的问题，并将在后续进行处理。
如果有开发者对这个 issue 感兴趣，请在issue下方留言“认领该issue”，留言后开始你的创作提pr给我们！
欢迎大家参与开源共建！我们非常感激每一位贡献者，提交pr后我们将为参与共建的开发者准备一份礼品。
参与共建可参考：https://visactor.io/vtable/guide/Contribution_Guide
与官方开发者交流问题可以下载飞书app扫码加入飞书群：

再次感谢你的支持！
Thank you for your feedback! We have received your question and will deal with it later.
If any developer is interested in this issue, please leave a message "claim this issue" below the issue. Welcome to participate in open source co-construction!
We are very grateful to every contributor. After submitting the PR, we will prepare a gift for the developers who participated in the co-construction.
For participation in co-construction, please refer to: https://visactor.io/vtable/guide/Contribution_Guide
To communicate with official developers, you can download the Feishu app and scan the QR code to join the Feishu group！
Thank you again for your support!

@pooooood 可以具体排查下问题哦  找到问题尝试修复下  看看是否需要提个pr 帮忙解决这个问题呢


swagger_client does not have an attribute or class named DiarizationSpeakersProperties

Under cognitive-services-speech-sdk/samples/batch/python/python-client/main.py , line 155:
    # properties.diarization_enabled = True
    # properties.diarization = swagger_client.DiarizationProperties(
    #     swagger_client.DiarizationSpeakersProperties(min_count=1, max_count=5))

will cause the following error:
"error":"module 'swagger_client' has no attribute 'DiarizationSpeakersProperties'"
The code block should instead be:
properties.diarization_enabled = True
properties.diarization = swagger_client.DiarizationProperties(
    enabled=True,
    max_speakers=5
)

Havre you managed a solution? I've checked the source code and in the swagger_client/models folder you can find the diarization_properties file. There you have the DiarizationProperties object where you can find the constructor. I 've tried to modify the code as:
  properties.diarization_enabled = True     properties.diarization = swagger_client.DiarizationProperties(True, 3, configuration)
Still, the diarization property is ignored


yarn build has not generate 'build/node_modules' .....

accroding to the document development-workflow, I ran the command yarn build react/index,react/jsx,react-dom/index,scheduler --type=NODE in my react-clone project，then it hasn't show me the document's respects（generate build/node_modules/react build/node_modules/react-dom folders）。The following picture is the command actually created...

Is there someone can help me to use yarn link to point react react-dom to my local build folder???

Thanks for the report.
With the recent state of master the following folder structure is created for me when running yarn build react/index,react/jsx,react-dom/index,scheduler --type=NODE:

.
├── build
│   ├── facebook-www
│   │   └── shims
│   ├── node_modules
│   │   ├── jest-react
│   │   │   └── cjs
│   │   ├── react
│   │   │   └── cjs
│   │   ├── react-dom
│   │   │   └── cjs
│   │   └── scheduler
│   │       ├── cjs
│   │       └── umd
│   └── react-native
│       └── shims

Notice build/node_modules where the built packages are located.
A couple of things you can debug:

Check if your editor excludes node_modules
In VSCode that would be files.exclude. Or use a different tool to print directories e.g. ls -la build. Some repositories have node_modules hidden e.g. https://github.com/facebook/jest/blob/64d5983d20a628d68644a3a4cd0f510dc304805a/.vscode/settings.json#L5-L6
which version of the repository have you checked out?
You can run git status and post the result.
What operating system are you using (some linux distribution, windows, macOS etc)?
You can run npx envinfo and post the result.

Base your solutions，I haven't solve it......
And the following pictures are my settings or project folder list~~~

@eps1lon  This morning, I delete the build folder, re-ran the command yarn build react/index,react/jsx,react-dom/index,scheduler --type=NODE，And I checked folder structure in my windows file manager, but still no node_modules in the build folder

Looks like you made some changes to package.json and yarn.lock. Does the issue still occur in a completely new clone without any changes applied?

yes. I cloned a new one，did not modify any files including package.json and yarn.lock。When I run yarn build react/index,react-dom/index,scheduler --type=NODE ,  got the same results。


ReturnValues in model create

Summary:
Dynamoose currently supports returnValues in an update (https://dynamoosejs.com/api#modelupdatekey-update-options-callback) but doesnt support it during a create even though AWS supports it (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html#DDB-PutItem-request-ReturnValues).
Expected output and behavior:
model.create's options should also support returnValues.
Environment:
Dynamoose version: 0.8.7
Type (select 1):

[ ] Bug report
[x] Feature suggestion
[ ] Question
[ ] Other suggestion
[ ] Something not listed here

Other:

[x] I have read through the Dynamoose documentation before posting this issue
[x] I have searched through the GitHub issues (including closed issues) and pull requests to ensure this issue has not already been raised before
[x] I have searched the internet and Stack Overflow to ensure this issue hasn't been raised or answered before
[x] I have tested the code provided and am confident it doesn't work as intended
[x] I have filled out all fields above
[x] I am running the latest version of Dynamoose

@mikecann Have you tried putting it in the options object in Model.create?

@fishcharlie yes, however I am using Typescript, so if you think it is supported then perhaps its a Typescript definitions issue.
Here is the relevant line: https://github.com/dynamoosejs/dynamoose/blob/master/dynamoose.d.ts#L139

@mikecann Can you test it and see if it works (without TypeScript)? If it doesn't work can you let me know if an error is thrown (and what that error says) and also attach sample code?
I think it could be a definitions issue, but am not completely sure.

Just taking a quick look through the source (https://github.com/dynamoosejs/dynamoose/blob/master/lib/Model.js) it looks like it isnt supported.
If I get a min ill have a go at a JS test.

@fishcharlie hey, no sorry I havent had chance. I usually work with Typescript so ill have to setup a separate project. Ill put it on my list to take a look at when I can.

Closing this due to no recent activity. If this is still a problem or you have questions please feel free to comment again and we can try to help further.


Dragged element duplication

I would like to report a bug.
VDDL Version: 0.5.2
Vue Version: 2.3.3
When I drag-and-drop <vddl-draggable> elements within a <vddl-list> too quickly while there is text selected on the webpage, the dragged element sometimes clones itself and replaces a different element in the list.
I have created an example project here, although the bug can occur in any project.
How to reproduce:

Create a <vddl-list> and fill it with an arbitrary number of <vddl-draggable> items.
Press Ctrl+A to select all text on the page. (I have noticed that the bug is more likely to happen if there is a lot of text selected).
Repeatedly drag-and-drop the same item from the list as quickly as possible. It will eventually clone itself by replacing another element in the list (typically the element closest to where you dropped the item).

EDIT: I have moved the link to MediaFire so my Github projects list is not cluttered.

how to resolve this problem

我从上往下拖不会有问题，但是从下往上拖就会有问题。而且这个问题有时候会发生有时候突然又正常了。。。。

@baixiyang 谢谢关注！
我观察过其他人写的基于H5的拖动库，大部分都不会出现这种问题，但是我暂时还没找到解决方法。而且最近一直在加班，没太多时间去处理这个问题，实在抱歉。
如果你有任何解决思路，请告诉我一下，谢谢！

My boss was able to find a way to recreate the bug (Please don't mind the awful design, it's only temporary).

I haven't tried recreating it like this outside of our project yet though.

Hey again. I decided to try it out with your example code for VDDL nested lists, and I got some weird results...
In this gif I first manage to recreate the bug in my own local dev environment, running your example code (I haven't changed anything). But when I switch over to your website and do the same, it works.
https://imgur.com/a/DPvcX
I have tried this over and over many times now and about 80% of the time I get the bug in the dev environment, but never on your website.

I have made some progress.
I believe it's this line that is removing the wrong item from the list:
https://github.com/hejianxian/vddl/blob/5ffb105ae49ba1fce59b9dd49161c7050d56bcc4/src/components/vddl-draggable.vue#L87
I did some logging like this: https://imgur.com/a/2j9KW
If I start with a list like this:
0: {type: "item", id: "1"}
1: {type: "item", id: "2"}
2: {type: "item", id: "3"}

And then drag item 3 up between item 1 and 2, I get this logged to the console:
wrapper.splice: 2

wrapper before:
0: {type: "item", id: "1"}
1: {type: "item", id: "3"}
2: {type: "item", id: "2"}
3: {type: "item", id: "3"}

wrapper after:
0: {type: "item", id: "1"}
1: {type: "item", id: "3"}
2: {type: "item", id: "3"}

This indicates that we are splicing index 2 from the list, which is {type: "item", id: "2"}.
If I change the code to: this.wrapper.splice(this.index + 1, 1); I can now drag upwards without problem!
However, now the bug appears when I drag downwards instead.
@hejianxian What do you think? Got any ideas?

Hello,
The bug seems to be related to the version of Vue. I've built a small project on CodeSandbox with the exact code of your "horizontal" demo (https://codesandbox.io/s/j387n4j3y3). Note that CodeSandbox makes it easy to change the version of packages dependencies, thus comparing the ok version with the ko version.
The bug occurs with a dependency of Vue 2.5.6 but doesn't occur with Vue 2.4.2 (which is the version of your Gihtub package.json project).
This doesn't solve the problem but it gives us a hint. Something has probably changed since version 2.4.2 that broke your component logic. Maybe related to reactivity or handlers execution order ?

@gjactat I tested it a bit and it appears that 2.5.0 is the breakpoint for when things started go wrong.

Yes... Version 2.5.0 brings major changes !

Also, if you look at my comment I explain where the wrong element is being removed from the list. Maybe I can install Vue 4.2.2 and log the same stuff to see the difference.

If you can downgrade to Vue 2.4.4, you can fix your issue.
I personnaly can't downgrade :-/

I am just running the example project that you can find in this repo when I'm testing now.

I need to kick a new sandbox with vddl sources instead of package dependency to investigate deeper ( breakpoints and traces....). We're getting closer !

Ok, so I have installed the older version now and I can see that the right index is set to this.index.
Starting list:
0: {type: "item", id: "1"}
1: {type: "item", id: "2"}
2: {type: "item", id: "3"}

And then drag item 3 up between item 1 and 2, I get this logged to the console:
wrapper.splice: 3

wrapper before:
0: {type: "item", id: "1"}
1: {type: "item", id: "3"}
2: {type: "item", id: "2"}
3: {type: "item", id: "3"}

wrapper after:
0: {type: "item", id: "1"}
1: {type: "item", id: "3"}
2: {type: "item", id: "2"}

Notice how this.index is 3 this time.

I've got a patch on my fork. This is a quick fix that relies on ids instead of indexes. I won't make a pull request as long as it changes the behaviour (vddl originally doesn't need ids, only for Vue v-for directive).
Anyway, it works for cases where your items have ids...
https://github.com/gjactat/vddl/commit/1102b2108230a0c743f8a2c74e477cd17a785942#diff-dfffb20e5ca8ccf0fe86081ed87328ea

I noticed that the Vuex example still suffers from this problem as well.
http://hejx.space/vddl-demo/#/vuex
Since it adds and deletes items through actions it wasn't solved by my pull request, but the solution should probably be similar now that we know the causation.

i think the reason is vue has not update the index after drop(when drop up ,one item insert before.vue should update the index to index +1,but not)
this.$nextTick(function () {
this$1.wrapper.splice(this$1.wrapper.indexOf(this.draggable), 1);
});
so just find the true index instead of this.index

this way cannot suit string and number list @hejianxian ，we need  stricter way to get the true index。

Yes, the index is passed before the list is updated for the Vuex example, we need a way to make sure that the real index is accessible.

@AWulkan I fixed it.
But I think the more serious problem is: press Ctrl+A to select all text on the page, and then, how to stop the text from being dragged while dragging.

@hejianxian Are you talking about the nested list when it's disabled? Well, I know that you can add user-select: none; in the css on the vddl-list to prevent selection of text. It worked for me in the project I'm working on.

😭 Ctrl+A can select all text on the page.

when dragging element:

🐽 This is a big bug.

duplication element is the biggest bug i think. it will happen certainly,  when drag up ward. if the bug exit , no one will use this component at all。

@baixiyang The duplication bug should be solved. Where are you experiencing it? Have you updated to the latest version?

change line 'this.splice(this.index,1)' to 'this.splice(this.wrapper.indexOf(this.draggable), 1)'  is useful in my environment. this is just an adivse.

I had a case where I had to access the final index (without the duplicated item in the list) inside the drop callback of a vddl-list and have a little workaround
handleDrop(data) {
	let { index, list, item } = data
	list.splice(index, 0, item)

	const hasDuplicates = list.filter(el => el.id === item.id).length === 2
	const oldIndex = list.findIndex(el => el.id === item.id)

	if (hasDuplicates && oldIndex < index)
		index -= 1
	}

	// do something with the final index
},

出现这个的问题是判断拖拽是缺少一个判断，判断当前拖拽的是向上移动还是向下移动


Prisma is not joining tables when making a query with referentialIntegrity feature

Bug description
Our database does not have foreign keys. To maintain relations, we're using referentialIntegrity:
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

When calling prisma.foo.update, where foo has a relation with bridge table foo_bar. The problem is that prisma is not performing a join between foo and bar while trying to select data from both tables in one SELECT statement.
When I invoke this script:
  const updated = await prisma.merchant.update({
    where: { id: merchant.id },
    data: { currency: 'USD' },
  });

This are the queries logged by prisma:
BEGIN

SELECT
  `my-local`.`merchant`.`id`
FROM
  `my-local`.`merchant`
WHERE
  `my-local`.`merchant`.`id` = ?

SELECT
  `my-local`.`server`.`id`,
  `my-local`.`server`.`merchant_id`
FROM
  `my-local`.`server`
WHERE
  (1=1 AND `my-local`.`server`.`merchant_id` IN (?))

SELECT
  `my-local`.`refund_event`.`id`,
  `my-local`.`refund_event`.`merchant_id`
FROM
  `my-local`.`refund_event`
WHERE
  (1=1 AND `my-local`.`refund_event`.`merchant_id` IN (?))

SELECT
  `my-local`.`foo`.`id`,
  `my-local`.`foo`.`merchant_id`
FROM
  `my-local`.`foo`
WHERE
  (1=1 AND `my-local`.`foo`.`merchant_id` IN (?))

SELECT
  `my-local`.`foo`.`id`,
  `my-local`.`foo_bar`.`foo_id`,
  `my-local`.`foo_bar`.`bar_id`
FROM
  `my-local`.`foo_bar`
WHERE
  1=0

ROLLBACK

The error that follows is:
Invalid `prisma.merchant.update()` invocation in
api/src/merchant/resolvers/mutation/toggleAcceptingOrders.ts:53:45 50 });
51 */ 52 → 53 const updated = await prisma.merchant.update( The column `my-local.foo.id`
does not exist in the current database.

Specifically, the error is caused by
SELECT
  `my-local`.`foo`.`id`,
  `my-local`.`foo_bar`.`foo_id`,
  `my-local`.`foo_bar`.`bar_id`
FROM
  `my-local`.`foo_bar`

A join is needed between foo and foo_bar.
The only thing I've found to work is to disable referentialIntegrity.
How to reproduce
With no foreign keys in your database, enable referentialIntegrity in your prisma schema:
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

Use a table (merchant) such that it has a one-to-many relationship with table foo and table foo has a relation to a bridge table foo_bar.
Then, call a prisma.merchant.update() and watch the Invalid prisma.merchant.update() invocation error occur following the same pattern as described above.
Expected behavior
No response
Prisma schema (roughly)

model Merchant {
  id               Int      @id @default(autoincrement()) @db.UnsignedInt

  bars             Bar[]
  foos          Foo[]

  @@map("merchant")
}
model Foo {
  id         Int     @id @default(autoincrement()) @db.UnsignedInt

  merchant     Merchant      @relation(fields: [merchantId], references: [id])
  merchantId   Int           @map("merchant_id") @db.UnsignedInt
  fooBars FooBar[]

  @@map("foo")
}
model FooBar {
  bar      Bar    @relation(fields: [barId], references: [id])
  barId    Int     @map("barId") @db.UnsignedInt
  foo   Foo @relation(fields: [fooId], references: [id])
  fooId Int     @map("foo_id") @db.UnsignedInt

  @@id([fooId, barId])
  @@index([barId], map: "bar_id")
  @@map("foo_bar")
}
model Bar {
  id          Int       @id @default(autoincrement()) @db.UnsignedInt

  merchant       Merchant       @relation(fields: [merchantId], references: [id])
  merchantId     Int            @map("merchant_id") @db.UnsignedInt
  fooBars   FooBar[]

  @@map("bar")
}

Environment & setup

OS: Mac OS 12.2.1
Database: MySQL 8.0.28
Node.js version: 16.14.2

Prisma Version
3.9.1

Can you please provide an example Prisma schema (and potentially sample script) so we have an easier time reproducing this? Thanks.

I've posted a schema and script. Please let me know if more info is needed to re-produce!

The schema has a few errors, both Baz and Bar are not present. The index and id in FooBar is also expecting a field barId to be present, which is missing. Not sure if I can remove/fix those just like that and not influence your reproduction.

The schema has a few errors, both Baz and Bar are not present. The index and id in FooBar is also expecting a field barId to be present, which is missing. Not sure if I can remove/fix those just like that and not influence your reproduction.

Apologies! I've been omitting some data in an attempt to simplify, and mistakes were made. I've updated it again, removing Baz and adding Bar.

I can confirm this problem.
This is the schema (where I added a currency field additionally to Merchant:
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

model Merchant {
  id       Int    @id @default(autoincrement()) @db.UnsignedInt
  currency String?
  bars     Bar[]
  foos     Foo[]

  @@map("merchant")
}

model Foo {
  id Int @id @default(autoincrement()) @db.UnsignedInt

  merchant   Merchant @relation(fields: [merchantId], references: [id])
  merchantId Int      @map("merchant_id") @db.UnsignedInt
  fooBars    FooBar[]

  @@map("foo")
}

model FooBar {
  bar   Bar @relation(fields: [barId], references: [id])
  barId Int @map("barId") @db.UnsignedInt
  foo   Foo @relation(fields: [fooId], references: [id])
  fooId Int @map("foo_id") @db.UnsignedInt

  @@id([fooId, barId])
  @@index([barId], map: "bar_id")
  @@map("foo_bar")
}

model Bar {
  id Int @id @default(autoincrement()) @db.UnsignedInt

  merchant   Merchant @relation(fields: [merchantId], references: [id])
  merchantId Int      @map("merchant_id") @db.UnsignedInt
  fooBars    FooBar[]

  @@map("bar")
}

And my minimal script.js:
const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

async function main() {
  let merchantId = 5
  const updated = await prisma.merchant.update({
    where: { id: merchantId },
    data: { currency: 'USD' },
  });
}

main()
    .catch((e) => {
    console.error(e)
    process.exit(1)
    })
    .finally(async () => {
    await prisma.$disconnect()
    })

Output I get:
PS C:\Users\Jan\Documents\throwaway\12810> node .\script.js
PrismaClientUnknownRequestError:
Invalid `prisma.merchant.update()` invocation in
C:\Users\Jan\Documents\throwaway\12810\script.js:7:41

   4
   5 async function main() {
   6   let merchantId = 5
→  7   const updated = await prisma.merchant.update(
  Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(Server(ServerError { code: 1105, message: "symbol `12810`.bar.id not found", state: "HY000" })) })
    at Object.request (C:\Users\Jan\Documents\throwaway\12810\node_modules\@prisma\client\runtime\index.js:45582:15)
    at async PrismaClient._request (C:\Users\Jan\Documents\throwaway\12810\node_modules\@prisma\client\runtime\index.js:46405:18)
    at async main (C:\Users\Jan\Documents\throwaway\12810\script.js:7:19) {
  clientVersion: '3.12.0'
}

Does this match what you are describing? I notice your error message is different though - I was testing this on PlanetScale which is a bit weird version of MySQL/Vitess that changes the error messages. (Trying to find a playground for plain MySQL 8 now)
If so, this would be another case of https://github.com/prisma/prisma/issues/10758

Found one and can confirm your error message:
PS C:\Users\Jan\Documents\throwaway\12810> node .\script.js
PrismaClientKnownRequestError:
Invalid `prisma.merchant.update()` invocation in
C:\Users\Jan\Documents\throwaway\12810\script.js:7:41

   4
   5 async function main() {
   6   let merchantId = 5
→  7   const updated = await prisma.merchant.update(
  The column `12810.bar.id` does not exist in the current database.
    at Object.request (C:\Users\Jan\Documents\throwaway\12810\node_modules\@prisma\client\runtime\index.js:45578:15)
    at async PrismaClient._request (C:\Users\Jan\Documents\throwaway\12810\node_modules\@prisma\client\runtime\index.js:46405:18)
    at async main (C:\Users\Jan\Documents\throwaway\12810\script.js:7:19) {
  code: 'P2022',
  clientVersion: '3.12.0',
  meta: { column: '12810.bar.id' }
}

I expanded that other issue's title, and posted a comment: https://github.com/prisma/prisma/issues/10758#issuecomment-1098430578

Thanks for the quick response! Yes, let's close this as a duplicate.


[Storage] Fix broken browser tests

After puppeteer upgrade from 23.1.1 to 23.2.1, storage browser tests failed to start chrome headless browsers. However, other package's browser tests are not impacted.  This PR copies the browser settings in karma config from a working package.

/azp run js - storage-queue - tests

/azp run js - storage-queue - tests

/azp run js - storage-file-share - tests


Countidon: React to tap on GraphView

To my understanding, a tap on the GraphView (and not directly beside it) should result in the view flipping  to the CounterView.

Gosh, seems this ticket got opened because I used the hash.


Can't stack Spawn Egg from Gigeresque Mod

All other Spawn Eggs from the base Game can be stacked, it is especially obvious when you middle-click an egg in creative to get a full stack of it.
Since spawn eggs can not be obtainable in survival, there isn't an obvious reason why it wouldn't be stackable like other spawn eggs.
I was told to move this here.

Pushed an update to fix this!


replaced SvelteComponentTyped with SvelteComponent

Closes #1507
Build it and linked it to a small demo repo and it seems to work as before.
Maybe we would need to change some documentation for some edge cases? @ericfennis
On the same note: SvgProps is also deprecated:

Just taking a quick look but couldn't find a replacement in svelte/elements so that's something we could add to this PR as well once we find it.

@ericfennis it has been deprecated with the Svelte 4.0.0 release so we should be fine


Uncaught ImportError in _types.py line 11

Aider version: 0.65.1
Python version: 3.11.10
Platform: macOS-15.1.1-arm64-arm-64bit
Python implementation: CPython
Virtual environment: No
OS: Darwin 24.1.0 (64bit)
Git version: git version 2.39.5 (Apple Git-154)
An uncaught exception occurred:
Traceback (most recent call last):
  File "aider", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "main.py", line 656, in main
    main_model = models.Model(
                 ^^^^^^^^^^^^^
  File "models.py", line 856, in __init__
    res = self.validate_environment()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "models.py", line 1103, in validate_environment
    res = litellm.validate_environment(model)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "llm.py", line 23, in __getattr__
    self._load_litellm()
  File "llm.py", line 30, in _load_litellm
    self._lazy_module = importlib.import_module("litellm")
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "__init__.py", line 22, in <module>
    from litellm.proxy._types import (
  File "_types.py", line 11, in <module>
    from pydantic import BaseModel, ConfigDict, Extra, Field, Json, model_validator
ImportError: cannot import name 'model_validator' from 'pydantic' (/opt/homebrew/lib/python3.11/site-packages/pydantic/__init__.cpython-311-darwin.so)

Same thing. Everything worked fine for me and suddenly it always throws this error.
Aider version: 0.65.1
Python version: 3.9.10
Platform: Linux-4.18.0-477.10.1.el8_8.x86_64-x86_64-with-glibc2.28
Python implementation: CPython
Virtual environment: Yes
OS: Linux 4.18.0-477.10.1.el8_8.x86_64 (64bit)
Git version: git version 2.39.3
An uncaught exception occurred:
Traceback (most recent call last):
  File "aider", line 8, in <module>
    sys.exit(main())
  File "main.py", line 887, in main
    coder.run()
  File "base_coder.py", line 758, in run
    self.run_one(user_message, preproc)
  File "base_coder.py", line 801, in run_one
    list(self.send_message(message))
  File "base_coder.py", line 1179, in send_message
    litellm_ex = LiteLLMExceptions()
  File "exceptions.py", line 55, in __init__
    self._load()
  File "exceptions.py", line 58, in _load
    import litellm
  File "__init__.py", line 22, in <module>
    from litellm.proxy._types import (
  File "_types.py", line 11, in <module>
    from pydantic import BaseModel, ConfigDict, Extra, Field, Json, model_validator
ImportError: cannot import name 'model_validator' from 'pydantic' (/home/atomasevic/.pyenv/versions/python9/lib/python3.9/site-packages/pydantic/__init__.cpython-39-x86_64-linux-gnu.so)

Thanks for trying aider and filing this issue.
How did you install aider? What environment are you using? It looks like you don't have the correct set of dependencies installed. This doc may be helpful:
https://aider.chat/docs/troubleshooting/imports.html

Thanks for trying aider and filing this issue.
This looks like a duplicate of #2481. Please see the comments there for more information, and feel free to continue the discussion within that issue.
I'm going to close this issue for now. But please let me know if you think this is actually a distinct issue and I will reopen this issue.Note: A bot script made these updates to the issue.