resolve stack overflow and improve MaskedTextBox behavior

What does the pull request do?
This PR prevents a stack overflow in the binding system when a property is changed during processing of an OnPropertyChanged event handler tied to the same property.
https://github.com/AvaloniaUI/Avalonia/issues/16746
How was the solution implemented (if it's not obvious)?
The method call at 1. triggers event handlers in user code.  When the method finishes, the event e has obsolete values.  If sent out, the old values look like a new change, set the value back to what it was, and cause an infinite loop.
AvaloniaObject lines 754-761:

1.          OnPropertyChangedCore(e);

            if (isEffectiveValue)
            {
                property.NotifyChanged(e);
                _propertyChanged?.Invoke(this, e);
                _inpcChanged?.Invoke(this, new PropertyChangedEventArgs(property.Name));
            }

I added a check to see if the value has changed, and if so, to stop sending obsolete new values.
I also enhanced the MaskedTextBox to remember the original empty value, so clearing the control will return back to null or empty string, depending on the original value.
I added a way for the user application to suppress updating the source value as needed.  This prevents the control from updating the source until actual keystrokes are received, instead of filling the source with an empty mask value initially (when the initial value is null or empty string).  This is the previous behavior of the control before the binding system went through the major refactoring.  See https://github.com/AvaloniaUI/Avalonia/pull/13970
Fixed issues
Fixes #16746

https://github.com/AvaloniaUI/Avalonia/issues/16746#issuecomment-2336844456

@busitech,
Please read the following Contributor License Agreement (CLA). If you agree with the CLA, please reply with the following:
@cla-avalonia agree

Contributor License Agreement
Contribution License Agreement
This Contribution License Agreement ( “Agreement” ) is agreed to by the party signing below ( “You” ),
and conveys certain license rights to the AvaloniaUI OÜ ( “AvaloniaUI OÜ” ) for Your contributions to
AvaloniaUI OÜ open source projects. This Agreement is effective as of the latest signature date below.
1. Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to AvaloniaUI OÜ under this Agreement.
“Project” means any of the projects owned or managed by AvaloniaUI OÜ and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
2. Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
3. Originality of Work.  You represent that each of Your Submissions is entirely Your
original work. Should You wish to Submit materials that are not Your original work,
You may Submit them separately to the Project if You (a) retain all copyright and
license information that was in the materials as you received them, (b) in the
description accompanying your Submission, include the phrase "Submission
containing materials of a third party:" followed by the names of the third party and any
licenses or other restrictions of which You are aware, and (c) follow any other
instructions in the Project's written guidelines concerning Submissions.
4. Your Employer. References to “employer” in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term “You” in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
5. Licenses.
a. Copyright License. You grant AvaloniaUI OÜ, and those who receive the Submission directly
or indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable
license in the Submission to reproduce, prepare derivative works of, publicly display, publicly perform,
and distribute the Submission and such derivative works, and to sublicense any or all of the foregoing
rights to third parties.
b. Patent License. You grant AvaloniaUI OÜ, and those who receive the Submission directly or
indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license
under Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
c. Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.
6. Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3 ). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6 , THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
7. Notice to AvaloniaUI OÜ. You agree to notify AvaloniaUI OÜ in writing of any facts or
circumstances of which You later become aware that would make Your representations in this
Agreement inaccurate in any respect.
8. Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
9. Governing Law/Jurisdiction. This Agreement is governed by the laws of the Republic of Estonia, and
the parties consent to exclusive jurisdiction and venue in the courts sitting in Talinn,
Estonia. The parties waive all defenses of lack of personal jurisdiction and forum non-conveniens.
10. Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by AvaloniaUI OÜ.
AvaloniaUI OÜ dedicates this Contribution License Agreement to the public domain according to the Creative Commons CC0 1.

@cla-avalonia agreeOn Sep 8, 2024, at 3:27 PM, cla-avalonia @.***> wrote:
@busitech,
Please read the following Contributor License Agreement (CLA). If you agree with the CLA, please reply with the following:
@cla-avalonia agree
Contributor License Agreement

Contribution License Agreement
This Contribution License Agreement ( “Agreement” ) is agreed to by the party signing below ( “You” ),
and conveys certain license rights to the AvaloniaUI OÜ ( “AvaloniaUI OÜ” ) for Your contributions to
AvaloniaUI OÜ open source projects. This Agreement is effective as of the latest signature date below.

Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to AvaloniaUI OÜ under this Agreement.
“Project” means any of the projects owned or managed by AvaloniaUI OÜ and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work.  You represent that each of Your Submissions is entirely Your
original work. Should You wish to Submit materials that are not Your original work,
You may Submit them separately to the Project if You (a) retain all copyright and
license information that was in the materials as you received them, (b) in the
description accompanying your Submission, include the phrase "Submission
containing materials of a third party:" followed by the names of the third party and any
licenses or other restrictions of which You are aware, and (c) follow any other
instructions in the Project's written guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term “You” in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
Licenses.
a. Copyright License. You grant AvaloniaUI OÜ, and those who receive the Submission directly
or indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable
license in the Submission to reproduce, prepare derivative works of, publicly display, publicly perform,
and distribute the Submission and such derivative works, and to sublicense any or all of the foregoing
rights to third parties.
b. Patent License. You grant AvaloniaUI OÜ, and those who receive the Submission directly or
indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license
under Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
c. Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.
Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3 ). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6 , THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to AvaloniaUI OÜ. You agree to notify AvaloniaUI OÜ in writing of any facts or
circumstances of which You later become aware that would make Your representations in this
Agreement inaccurate in any respect.
Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the laws of the Republic of Estonia, and
the parties consent to exclusive jurisdiction and venue in the courts sitting in Talinn,
Estonia. The parties waive all defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by AvaloniaUI OÜ.
AvaloniaUI OÜ dedicates this Contribution License Agreement to the public domain according to the Creative Commons CC0 1.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

@cla-avalonia agree

Thanks for the PR @busitech but I think I have a simpler solution: #17073 🙂

@cla-avalonia agree

@grokys Your change does address the stack overflow successfully.
In our PR, we also wanted to provide a way to restore the behavior of the MaskedTextBox which existed before #13970.  Previously, the control did not write back to source unless the origin of the change was user input (keystrokes).
The best example is when the source begins as a null or empty value, which is commonly the case.  The text box gets initialized with the an empty mask value (for display only), but the null or empty string value of the source does not need to be replaced, since no data entry has taken place.  The write back to source used to be suppressed when SetCurrentValue was called.
After the implementation of #13970 calls to SetCurrentValue always write back to source, the same as editing the Text property, and the control developer appears to have no control over this.
To achieve the previous and desirable behavior of the control, we added a parameter to AvaloniaObject.SetCurrentValue that allows the control developer to decide if write back to source occurs or not.  This provides the control developer with the option to write a temporary value to the Text property (for display only), but not for general consumption, or to write a permanent value which should be propagated back to the source.
Adding this parameter was most of the other changes in our PR.
What are your thoughts?

The binding stack overflow was fixed in #17073.
MaskedTextBox was enhanced with #17143 to avoid out-of-order notifications.
Consequently, I'm going to close this PR.
Updating the binding source conditionally should be discussed in another issue, as it's a whole new feature.
(In my opinion, it's generally hard for a control to know what's "right" in this regard, as different users might expect different outcomes. Always pushing to the source guarantees that the source is aware of all operations. Doing the opposite leave users without any solution, as no notification would come.)


Log request and response headers

Adding logging for headers for https://github.com/aspnet/KestrelHttpServer/issues/4. This is still in progress as I check how https://github.com/aspnet/Logging/pull/338 impacts these changes.

Sample logging:
info: Microsoft.AspNet.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
dbug: Microsoft.AspNet.Hosting.Internal.WebHost[1]
      Request Headers:
      {
          Connection: keep-alive;
          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/we
bp,*/*;q=0.8;
          Accept-Encoding: gzip, deflate, sdch;
          Accept-Language: en-US,en;q=0.8;
          Cookie: lzHxo2Sz_Pc=CfDJ8CDfMeS_rYJBvpIwonzQwkFqC4sxLLcGOI_biYyJL98fRl
SgvH8ebGc0uP9Sf9CH11-b_Lzbf0zUD7oG8u6_eRmUpmWqQ_T8rXeuWj3hlAJHKmYtfmMh2EJdfQDe8l
NjGNIRR_X0F7CbxZoqYBEBGvg; .AspNet.Session=a7164220-9ef9-22fb-8e61-b24280bc7b5d;
 .AspNet.Cookies=CfDJ8CDfMeS_rYJBvpIwonzQwkFCMWwzdWeCny5A0g4RRJntMGPqcwQYQBJmMCp
U2WSPOb5g26tz8vEXy6qbOQ2wnWaCU9-D28_vu3pCYCefUJEbU8-2N1nAiTbNkcxDvva7fAiVFNUKxkX
ARZmrx_cGuqRnDSvuZp22hqh_eCYQh1xKVoa25SHP3heoPFqN33BW6WDe1KBsUkJky779Vq-3bvYkFmC
lAugEGYbVa7LmfQ6pr81ijvM6950XyVaPX_YA7ygEXdrh65yQ7e8SaX-bMXRK21aZj0rV1JuwvZ14j8T
LqGT-YhZWYXJBg-Hm9XaI2rSnHb9c2rpt4uIueFd3XCc; .AspNet.Correlation.Google=QoSCKZ8
PdMta01SEMBT30vtWjy_prqozZXRc6f8v5dM; SH9R3h5WiuA=CfDJ8CDfMeS_rYJBvpIwonzQwkE-T0
opXM8i6_6JOrZfIcD5humtDvCH-F2_qji1B2ffTkPW3U3kLtcjslJmpV4PsHM3fEjbeIWrr0CKn8u44u
11IzwdJtXp0iVPIwevgo3yfpGap6KUDXWqJJ6qZOSS6Bk;
          Host: localhost:5000;
          User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (K
HTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36;
          Upgrade-Insecure-Requests: 1;
      }

Create two new event id numbers - don't re-use the existing [1] and [2] request started and finished
Log with a format string like "Request header {HeaderName}: {HeaderValue}"
Call log one time per header - don't call log once with all headers formatted together.
  if (logger.IsEnabled(LogLevel.Debug))
  {
    foreach(var header in httpContext.Headers)
    {
      foreach(var headerValue in header.Value)
      {
        logger.LogDebug(
          LoggerEventIds.RequestHeader,
          "Request header {HeaderName}: {HeaderValue}",
          header.Key,
          headerValue);
      }
    }
  }

Same thing for response. Expected output:
dbug: Microsoft.AspNet.Hosting.Internal.WebHost[...]
      Response header Date: Fri, 22 Jan 2016 01:47:05 GMT
dbug: Microsoft.AspNet.Hosting.Internal.WebHost[...]
      Response header Content-Length: 11
dbug: Microsoft.AspNet.Hosting.Internal.WebHost[...]
      Response header Content-Type: text/plain
dbug: Microsoft.AspNet.Hosting.Internal.WebHost[...]
      Response header Server: Kestrel
info: Microsoft.AspNet.Hosting.Internal.WebHost[2]
      Request finished in 12.5267ms 200 text/plain

So you don't need the other changes in the request started/finished class. This debug message isn't on by default and shouldn't be hand-coded to be performance critical like the other was.
Note for the future - we should also have a flag which lets you omit the category name and event id, to produce the output:
dbug: Response header Date: Fri, 22 Jan 2016 01:47:05 GMT
dbug: Response header Content-Length: 11
dbug: Response header Content-Type: text/plain
dbug: Response header Server: Kestrel
info: Request finished in 12.5267ms 200 text/plain

Oh, goodness. Did we move a class that's doing the logging to the internal namespace? We probably don't want the ".Internal." to be part of the category, do we?

Did you check with @blowdart about omitting the values of specific headers? E.g. auth, cookies, etc?

It certainly doesn't look that way.
We spent a bunch of time with the privacy folks discussing what we should and should not log by default. Where did that work go?
You cannot log auth headers or cookies by default.
Until this respects privacy settings it should not be merged.

@blowdart Is there a list of headers to omit? Also, is it okay to log the existence of those headers, for example, "SensitiveHeader": "omitted" or should we avoid that too?

You can log the header presence, but not the value. I will try to dig out the discussion again later in t he day

In the case of cookies it would be helpful to know at least the keys. Would something like this be acceptable?
Cookie: cookie1=[omitted], cookie2=[omitted]
This might be a little harder for Set-Cookie.

Any Authorization headers
Any cookie which has the default cookie name that cookie auth middleware uses.
Any cookie which has the default cookie name that session uses
Any form field with Password in its name (I know you're not doing form fields, but just in case you consider expanding scope)

@blowdart I completely agree - in fact I would say it's impossible to know what headers contain sensitive information. It would need to bake in knowledge of what is safe to log, not what is unsafe to redact.
And now that you mention it - this is exactly like the problem introduced by logging EF field values. We added and subsequently removed the extra logger factory filtering because of it. The reason we removed it is because DiagnosticSource is sufficient to expose the information to inprocess observation, does not have security implications, and logging database values means you're dumping arbitrarily large and unique values into log storage.
New recommendation: cut this feature. If we think of specific headers that are highly significant we may log them as individual header messages (like LogInformation("User-Agent: {UserAgent}", (string)httpContext.Request.Headers["User-Agent"]) but as a rule of thumb our code shouldn't log incoming/outgoing values of unknown informational purpose. In fact the logging for known headers should probably be moved to better layers than hosting.
I updated the original issue to reflect this :)

If you wanted to keep it you could turn it around. Have a list of headers that we know are safe, and then let users add headers to them if they want.

Not worth adding an entire feature for that when logging request/response headers from the startup class is "Hello World" level of code.
  app.Use(async (ctx,next) => {_logger.LogInformation(...); await next();});

It wasn't until you mentioned sensitive data that I realized this is exactly like the EF case - a key/value collection where the keys are app-specific, the values are user-activity-specific, and their meaning can't be known a priori.
So I really do think it is the right thing to come to the same conclusion from the same principles - we should send the http context to DiagnosticSource (we already do) - but not send the headers to logger. We should probably also double-check that MVC model binding is not logging "values" as it goes for exactly the same reason. We'll be putting credit card numbers into log files left and right.

I will close this PR then. I open a new one in WebListener to remove the logging of headers there.


windows 10 is a bit different and we need these

Need to

install npm
install curl
install more packages
curl need to use double quote in the curl parameters
curl need to escape double quote in json string

Coverage remained the same at 86.192% when pulling 080408880ccfe4cead5b5123077085de7cccdde5 on kwccoin:master into 9155be08fc04adb01e947ca37c742d8a445d259e on conradoqg:master.

Coverage remained the same at 86.192% when pulling 080408880ccfe4cead5b5123077085de7cccdde5 on kwccoin:master into 9155be08fc04adb01e947ca37c742d8a445d259e on conradoqg:master.

I did a lot of changes recently. Could you check the branch v1.0.0 and see if you still have windows 10 problems? I'm using Windows 10 as well.


python3Packages.python-jenkins: 1.7.0 -> 1.8.1

Description of changes
Changelog: https://opendev.org/jjb/python-jenkins/compare/1.7.0...1.8.1#diff-1627bd3db0737f7810b0e23038883f57a87fb0dd
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)
[x] 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/)
23.11 Release Notes (or backporting 23.05 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

[x] Fits CONTRIBUTING.md.

This is a semi-automatic executed nixpkgs-review with nixpkgs-review-checks extension. It is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
Result of nixpkgs-review pr 251952 run on x86_64-linux 1

8 packages built:

jenkins-job-builder (python310Packages.jenkins-job-builder)
jenkins-job-builder.dist (python310Packages.jenkins-job-builder.dist)
python310Packages.python-jenkins
python310Packages.python-jenkins.dist
python311Packages.jenkins-job-builder
python311Packages.jenkins-job-builder.dist
python311Packages.python-jenkins
python311Packages.python-jenkins.dist

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

8 packages built:

jenkins-job-builder (python310Packages.jenkins-job-builder)
jenkins-job-builder.dist (python310Packages.jenkins-job-builder.dist)
python310Packages.python-jenkins
python310Packages.python-jenkins.dist
python311Packages.jenkins-job-builder
python311Packages.jenkins-job-builder.dist
python311Packages.python-jenkins
python311Packages.python-jenkins.dist


jsTree functionality missing when dynamically created

hello my code is
jstree({
'core': {
"check_callback" : true,
'data': {
"url": "request->baseUrl; ?>/index.php?r=accounting/treejs",
"data": function (node) {
return {"id": node.id};
}
}
}
});
the response disappear on linux but it works on my mac ,

Please create a demo, so that I can reproduce the issue - I can assure you thousands of people use jsTree with AJAX and it is not a known problem.
Best regards,
Ivan


Raw bulk insert failing

Bug description
I'm attempting to do a bulk raw insert. This is to avoid having to loop through every record, as this has performance implications. I need the IDs from the initial bulk insert as I then need to update other tables, and as per what's discussed here, createMany does not return the inserted rows.
I have spoken to a Prisma Engineer about this, and have attempted to use the code he supplied me with (which, he says, was working for him).
See: https://github.com/prisma/prisma/issues/8131#issuecomment-1237992626
How to reproduce
I am running the following code, in Nest.js:
const rows = [{ status: 's' }, { status: 'x' }];

const values = rows.map((row) => Prisma.sql`(${row.status})`);

await this.prismaService
  .$queryRaw`INSERT INTO "test" (status) VALUES ${Prisma.join(
  values,
)} RETURNING *`;

When I run the above, I get the following error back:
prisma:query SELECT 1
prisma:query INSERT INTO "test" (status) VALUES $1 RETURNING *
[Nest] 43379  - 06/09/2022, 13:12:24   ERROR [ExceptionsHandler]
Invalid `prisma.$queryRaw()` invocation:

  Raw query failed. Code: `42601`. Message: `db error: ERROR: syntax error at or near "$1"`
Error:
Invalid `prisma.$queryRaw()` invocation:

  Raw query failed. Code: `42601`. Message: `db error: ERROR: syntax error at or near "$1"`

Expected behavior
No response
Prisma information

model test {
  id     Int     @id @default(autoincrement())
  status String? @db.VarChar
}

Environment & setup

OS: macOS
Database: Postgres
Node.js version: 16.13.1

Prisma Version
4.3.1

Who did you talk to? Knowing that would allow us to skip the "reproduce with no knowledge" step.

That was me. I wasn't able to locally reproduce the problem though. https://prisma.slack.com/archives/CA491RJH0/p1662461878343699

Internal:
The code above worked for Harshit.
It did not work for the user.
Next step: Reproduce if the code actually works locally.

I'm having the same issue. I had to move to queryRawUnsafe.
this is my code that fails
prisma.$queryRaw`INSERT INTO "l_intent" ("english") VALUES ${Prisma.join(
          missingResourceIntentEnglishes.map(english => `($E$${english}$E$)`)
        )} RETURNING *`

the error is:
error - PrismaClientKnownRequestError:
Invalid `prisma.$queryRaw()` invocation:

  Raw query failed. Code: `42601`. Message: `db error: ERROR: syntax error at or near "$1"`
    at Object.request (/Users/noitidart/Documents/The-App/web/node_modules/@prisma/client/runtime/index.js:45405:15)
    at async Proxy._request (/Users/noitidart/Documents/The-App/web/node_modules/@prisma/client/runtime/index.js:46301:18) {
  code: 'P2010',
  clientVersion: '3.14.0',
  meta: {
    code: '42601',
    message: 'db error: ERROR: syntax error at or near "$1"'
  },
  page: '/api/v1/l/admin/projects/upload'
}

It's interesting because if I run this code it works just fine:
prisma.$queryRaw`INSERT INTO "l_intent" ("english") VALUES ($E$don't do it$E$),($E$build with spaces$E$) RETURNING *`

I manage to reproduce some variant of this here.
It looks to me like this is the same problem as reported in this issue. I suspect that you have multiple instances of Prisma client generated, Prisma.join comes from one of them and prisma.$queryRaw from the other, so instanceof check within sql-template-tag does not work.  @sebpowell @Noitidart could check if that's true?

Thanks @SevInf! Clicking on that link takes me to a broken page here - https://github.com/prisma/reproductions/tree/main/gh-15205
I am using Vercel/Next.js so it is serverless. And this issue I haven't yet tested in production. But I import prisma from a file that looks like this snippet below. We do see that it tries to set global.prisma if its not yet set. I got this from the Vercel/Next.js tutorial here - https://vercel.com/guides/nextjs-prisma-postgres#step-3.-install-and-generate-prisma-client
import { PrismaClient } from '@prisma/client';
import { Hub } from '@sentry/hub';
import * as Sentry from '@sentry/nextjs';
import { isThenable } from '@sentry/utils';

let prisma: PrismaClient;
let DID_SETUP_SENTRY = false;

if (process.env.NODE_ENV === 'production') {
  prisma = new PrismaClient();

  tracePrismaWithSentry(prisma, Sentry.getCurrentHub);
} else {
  // @ts-ignore: dev only
  if (!global.prisma) {
    // @ts-ignore: dev only
    global.prisma = new PrismaClient();

    tracePrismaWithSentry(
      // @ts-ignore: dev only
      global.prisma,
      Sentry.getCurrentHub
    );
  }
  // @ts-ignore: dev only
  prisma = global.prisma;
}

/**
 * This is stolen directly from here -
 * https://github.com/getsentry/sentry-javascript/pull/4931/files#diff-1299d6ad2dcb1bc219acbc53ed90550ab15c6240e54efd6bd007692864ddcd3fR78-R79
 * I only added in the `data` property which has the `runInTransaction` and
 * `args` properties. I also add a breadcrumb of this, in case the query fails,
 * the span won't be logged.
 */
function tracePrismaWithSentry(client: PrismaClient, getCurrentHub: () => Hub) {
  if (DID_SETUP_SENTRY) {
    return;
  } else {
    DID_SETUP_SENTRY = true;
  }

  client.$use((params, next) => {
    const scope = getCurrentHub().getScope();
    const parentSpan = scope?.getSpan();

    const action = params.action;
    const model = params.model;

    const description = model ? `${model} ${action}` : action;
    const data = {
      runInTransaction: params.runInTransaction,
      args: params.args
    };

    const span = parentSpan?.startChild({
      description,
      op: 'db.prisma',
      // Add data to the span so it's shown when span finishes.
      data
    });

    // Add a breadcrumb on query start, in case span doesn't finish (due to
    // permdission denied by database for instance), then the data is available
    // as a breadcrumb.
    scope?.addBreadcrumb({
      type: 'query',
      category: 'prisma.started',
      level: 'info',
      message: description,
      data
    });

    const rv = next(params);

    if (isThenable(rv)) {
      return rv.then((res: unknown) => {
        span?.finish();
        return res;
      });
    }

    span?.finish();
    return rv;
  });
}

export default prisma;

@Noitidart thank you! Here is a snippet from my reproduction:
const { PrismaClient } = require('.prisma/client')

delete require.cache[require.resolve('.prisma/client')]
delete require.cache[require.resolve('.prisma/client/runtime')]

const { Prisma } = require('.prisma/client')

async function main() {
  const prisma = new PrismaClient()

  const rows = [{ status: 's' }, { status: 'x' }]
  const values = rows.map((row) => Prisma.sql`(${row.status})`)

  await prisma.$queryRaw`INSERT INTO "test" (status) VALUES ${Prisma.join(values)} RETURNING *`
}

Removing cache entry is there just to emulate client being loaded from different places.
Regarding your code, could you please do the following:

console.log(require.resolve('@prisma/client')) in the module you've just posted, the one that sets up Prisma instance
console.log(require.resolve('@prisma/client')) in the module that executes failing $queryRaw
See if they point to the same path

Thanks @SevInf! Sorry for late test, I had to set up the environment and stuff.
It's logging the same path but this was fresh npm run dev and first call, I'll keep testing cuz I think it makes sense, because I store it in global.prisma and eventually maybe much later, it changes.
Anyways first run values:
prisma.ts: @prisma/client
upload.ts: @prisma/client

Still same path so far :(

I uncommented by queryRaw and its giving me this error, I think I forgot how to use queryRaw lol:
prisma.$queryRaw`INSERT INTO "l_intent" ("english") VALUES ${Prisma.join(
          missingResourceIntentEnglishes.map(english => `($E$${english}$E$)`)
        )} RETURNING *`

This is the queryRawUnsafe that works:
prisma.$queryRawUnsafe<Array<Pick<TLIntent, 'id' | 'english'>>>(
          `INSERT INTO "LIntent" ("english") VALUES ${missingResourceIntentEnglishes
            .map(english => `($E$${english}$E$)`)
            .join(', ')} RETURNING *`

Does anything look wrong with that queryRaw?
Thanks again for your attention on this issue!

@Noitidart i think there is a syntax error in your raw query, just noticed it: round brackets around values are missing. I think you've meant to do:
prisma.$queryRaw`INSERT INTO "l_intent" ("english") VALUES (${Prisma.join(
          missingResourceIntentEnglishes.map(english => `$E$${english}$E$`)
        }) RETURNING *`

$queryRaw does not construct a plain string, but prepared sql statement, automatically escaping the values. So in your original query, round brackets are part of the column value, not the query itself.
Looking further into your query, i think it will only work if missingResourceIntentEnglishes has exactly one item. If that's intended, you can probably do it without raw queries at all:
prisma.LIntent.create({
    data: {
       english: `$E$${missingResourceIntentEnglishes[0]}$E$`
    }
})

Oh thanks I'll give that a try on by Monday please!
The reason I was using rawQuery was to insert and return at once. The RETURNING * part. Postgres has this awesome support.

Hey hey, thanks again, sorry for the wait. So I added the parents: so my query now looks like this:
        prisma.$queryRaw<
          Array<Pick<TLIntent, 'id' | 'english'>>
        >`INSERT INTO "LIntent" ("english") VALUES (${Prisma.join(
          missingResourceIntentEnglishes.map(english => `($E$${english}$E$)`)
        )}) RETURNING *`,

Now the error I get is:
INSERT INTO "LIntent" ("english") VALUES ($1,$2,$3) RETURNING *
2022-10-24T18:54:28.040749500Z 2022-10-24 18:54:28.040 UTC [21949] ERROR:  INSERT has more expressions than target columns at character 46

The logs on path is same too:
prisma.ts: @prisma/client
upload.ts: @prisma/client

Just a gentle bump, if you notice anything silly/obvious in my last post.

Note: we could update our dependency and expose bulk https://github.com/prisma/prisma/pull/20977
It would look like this:

Accepts an array of arrays, and returns the SQL with the values joined together in a format useful for bulk inserts.

const query = `INSERT INTO users (name) VALUES ${bulk([
  ["Blake"],
  ["Bob"],
  ["Joe"],
])}`;

query.sql; //=> "INSERT INTO users (name) VALUES (?),(?),(?)"
query.values; //=> ["Blake", "Bob", "Joe"]


Fix link in docs/README.md

The doc files are meant to be used by gitbook : https://alm-tools.gitbooks.io/alm/content/ and the current file works fine :rose:


libproducer.so: undefined reference to log4cplus::detail::macro_forced_log...

While running ./min-install, it fails on the kinesis_video_gstreamer_audio_video_sample_app recipe despite log4cplus being installed:
[ 95%] Linking CXX executable kinesis_video_gstreamer_audio_video_sample_app
libproducer.so: undefined reference to `log4cplus::detail::macro_forced_log(log4cplus::Logger const&, int, char const*, char const*, int, char const*)'
collect2: error: ld returned 1 exit status
CMakeFiles/kinesis_video_gstreamer_audio_video_sample_app.dir/build.make:100: recipe for target 'kinesis_video_gstreamer_audio_video_sample_app' failed
make[2]: *** [kinesis_video_gstreamer_audio_video_sample_app] Error 1
CMakeFiles/Makefile2:176: recipe for target 'CMakeFiles/kinesis_video_gstreamer_audio_video_sample_app.dir/all' failed
make[1]: *** [CMakeFiles/kinesis_video_gstreamer_audio_video_sample_app.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 96%] Linking CXX shared module libgstkvssink.so
[ 96%] Built target gstkvssink
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

$ sudo apt-get install liblog4cplus-1.1-9
Reading package lists... Done
Building dependency tree
Reading state information... Done
liblog4cplus-1.1-9 is already the newest version (1.1.2-3.2).
0 upgraded, 0 newly installed, 0 to remove and 55 not upgraded.

$ uname -a
Linux NanoPi-NEO4 4.4.179 #1 SMP Tue Dec 17 18:03:10 CST 2019 aarch64 aarch64 aarch64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.4 LTS
Release:	18.04
Codename:	bionic

Seems to have worked after a combination of the following:
$ sudo apt-get install liblog4cplus-1.1-9 liblog4cplus-dev --reinstall
$ git clean -ffxd
$ make clean


npm cache verify does not work

Describe the bug
The command npm cache verify is returning a non-zero exit code with this message:
Unknown Syntax Error: Command not found; did you mean one of:
0. turbo cache clean [--cwd,--prefix #0] [-s,--silent] [--quiet] [-V,--verbose] [--loglevel #0]

turbo cache invalidate [--cwd,--prefix #0] [-s,--silent] [--quiet] [-V,--verbose] [--loglevel #0]

There should be compatibility using the standard command npm cache verify to clean the cache of npm. Suggesting to use the turbo command is not a solution for compatibility as it is another completely different command. An alternative could be to mask the turbo command when npm cache is being called but  this should be done by the platform behind the curtain.
Link to the blitz that caused the error
https://stackblitz.com/edit/node-lv1cgf?file=package.json
Steps to reproduce
Executes the command
npm cache verify

Expected behavior
npm should check the cache in a location and return the common result done by this command on any other platform
Cache verified and compressed (... cache location ):
Content verified: ... (... bytes)
Index entries: ...
Finished in ...s
Screenshots

Platform
Browser name  = Chrome
Full version  = 92.0.4515.107
Major version = 92
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
performance.memory = {
  "totalJSHeapSize": 55742875,
  "usedJSHeapSize": 53436283,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Hash = d86858d537c0a310ebafd72a06454769861ab23a

Additional context
Several tools like QCObjects CLI need to execute the command npm cache verify to clean up the npm cache and and keep it safe. Using another alternative like turbo cache is not an option as the use of npm vs an non-standard alternative cannot be changed by settings.
To enable these tools, you should include the npm cache verify command in the allowed command list of Stackblitz and integrate the turbo solution behind the curtain for compatibility purposes.
Official docs about npm cache verify
https://docs.npmjs.com/cli/v7/commands/npm-cache

Several tools like QCObjects CLI need to execute the command npm cache verify to clean up the npm cache and and keep it safe

Can you elaborate exactly on what the use case for this is? Depending on your answer we could have a no-op cache command or maybe consider interacting with the turbo cache.

FWIW, we're working on native npm, which would automatically support this. You can track its progress in https://github.com/stackblitz/webcontainer-core/issues/1070.
I'll close this for now, thanks!


Provide WithRequestCredential for issue credential for Indy credentials

Title:
WithRequestCredential for IssueCredential for Indy credentials
Description:
When accepting a credential offer, Indy style credentials require responding with a RequestCredential that is not a copy of the offer attachment.  With option modifier is need to allow for accepting an Indy credential offer
Summary:
Added WithRequestCredential in both the client and service packages for the Issue Credential protocol.
Signed-off-by: pfeairheller<EMAIL_ADDRESS>

@pfeairheller could you please use your full name in your DCO sign-off? Thanks!


feat(vc): reex: calculate archive

Overview
To prevent https://github.com/AztecProtocol/aztec-packages/pull/8958 getting too large, the re-ex currently does not create implement state root ( archive ) calculation
Extend the new light public processor to perform this

closed by https://github.com/AztecProtocol/aztec-packages/pull/9768


Choose either "shooter" or "launcher" to use in code

Right now the subsystem uses shooter but the buttons use launcher.

We should have a vote on slack before we do this. Whoever is tackling the issue can start it.


Api::replace can fail to unset list values with k8s-openapi 0.12

The Option removal change had some unfortunate consequences.
See https://github.com/Arnavion/k8s-openapi/issues/103
Keeping this as a tracking issue in here, because we are still doing some releases.
You probably won't notice this if you are using small patches in your mutations, but be aware that you might not be able to unset certain values with Api::replace

This has been reverted in k8s-openapi master.


GoogleEarthImageryProvider - blurred, whitish image problem

Hi,
When I'm using GoogleEarthImageryProvider the imagery appears blurred and whitish compared to the image viewed in google default page.
After some investigation it seems that the tileScheme definition is wrong and the tiles which the provider returns are not in the correct level.
The whitish image is because the default gamma value is 1.9, instead of 1.0 (probably a typo).
I have fixed the module (the above two problems) and it works well.
Could I do a pull request for that?
I have no experience with contributing code to cesium...

Hello @duvifn,
Thanks for looking into this!  We would gladly accept a pull request to fix this issue.
Take a look at our contributing documentation for instructions on the steps to take for submitting a pull request: CONTRIBUTING.md

@duvifn looks like #4334 was closed without being merged.  Are you up for finishing this?

@pjcozzi,
Yes.
I meanwhile understood that the blurry image is not only GoogleEarthImageryProvider's problem (the defultGamma is). So I want to do a generic solution for this.
I will post my new suggestion in #3279 to discuss it there.


use jupyter-server-proxy

Fixes #3

Uff, there is one issue: jupyter-server-proxy is Python3-only. Could we drop Python2-support? Or do we want to make this feature optional, but this requires more code and a more complex test setup.

Thanks for working on this!
For the time being I think we could make the dependency python 3 only using environment markers within the requirements file. I think once that dep is made optional, the Py2 test suite will pass.

(I'd be fine if this feature only works in Py3, but I don't want to drop Py2 testing at the moment)

I'll adopt this on next week

@jakevdp I've made the proxy support Python-3-only now (altair_data_server itself still is 2+3 compatible).

@jakevdp any news on that?

Sorry, lost track of this.

We require the jupyter-server-proxy (which gets activated just by installing it) to be installed now under Python 3, so this works even locally (even though it obviously doesn't add any feature in that case). I've tested it locally and it works.

Have you tested outside the Jupyter notebook? I tried creating a Chart in the Python terminal. It works on master, but fails on this branch with an error 500 in the Javascript terminal.

It works with:

jupyter notebook
jupyterlabs (but only with altair 2, altair 3 seems to be broken on both, master and this branch because it requires jupyterlab 1.0 which is not released yet)

Can you share the notebook you're using? And maybe also pip freeze or the conda env? In that case, I can try to do my best to debug it. Or can you see the error message of jupyter on your terminal (if there's a 500, there should be a message somewhere).

Create a script like the following:
# filename: chart.py
import altair as alt

alt.data_transformers.enable('data_server')

from vega_datasets import data
cars = data.cars()

chart = alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()

# Hack around bug https://github.com/altair-viz/altair/issues/1537
# to use the URL-based data in the served chart.
newchart = alt.Chart.from_dict(chart.to_dict())

newchart.serve()

Run it from the command line using
$ python chart.py

With the current version of altair_data_server, the chart renders properly. With the changes from this PR, the chart is empty.
I think the approach used in this PR will break altair_data_server for any non-jupyter environment.

Now I get it, thanks very much. So we have 2 ways of solving this:
a) auto-detection of "this is a jupyter session"
b) keep the data_server transformation as it is and introduce data_server_jupyter as way to let the user select if they want the proxy-paths or not.
Since (A) is kinda a mess, I would go for (B) and just add a second, proxied transformer. The code changes should be rather minimal. What do you think @jakevdp ?

I really wish (a) was an option. So much of my pain in supporting Altair and related tools comes from the inability of the backend to reason about the frontend in any manner.
(b) sounds like a great approach: I would do it by creating a base class and two subclasses, which are exported by the package and by entrypoints in setup.py

@jakevdp I've implemented the suggested changes and adjusted the docs :)

@jakevdp friendly ping

Looks great, thanks for the contribution!


disappears game status

Please tick all applicable boxes.

[x] I am using Python 3.5.3 or higher (run python --version on the command line)
[x] I have followed the official guides to install the bot for my system
[x] I have updated my dependencies to the latest version using the appropriate update script

Which version are you using?

[x] The latest master version (release-260419)
[x] The latest review version

What type of issue are you creating?

[x] Bug
[ ] Feature request
[ ] Question

Description of issue
disappears game status after ~2-3 hours
Steps to reproduce

Start bot with ./run.sh
Wait ~3-4 hours
The status has disappeared

Log file
Please attach your MusicBot log file (located at logs/musicbot.log) to this issue. You can do so by dragging and dropping the file here. If you do not include your log file, you WILL be asked to provide one.
musicbot.log

I too have had this occur. Very frustrating but temporarily fixed with {prefix}restart.

i also have this problem.
the bot keeps working for around 3-4 hours then the status disappears, but the bot still keeps working.

Does doing python -m pip install -U discord.py[voice] fix this?

Does doing python -m pip install -U discord.py[voice] fix this?

Please let us know if this is still happening on the latest version of discord.py and the bot itself.
If it is, we'll reopen the issue.


File APIs inconsistently handle paths ending in . on windows in 3.4.3

See this gist https://gist.github.com/jakemac53/845b60847dbda53f93aeed8056d5fbd2.
Assuming the file does exist with that name (I think it is invalid, but it is possible to create at least on the command line), on 3.2.0 and 3.4.0 and greater we do consistently always claim the file does not exist. I am not sure if this in intended behavior or not, but at least it is consistent.
However, starting with at leatst 3.4.0, the first file copy (using the absolute file URI) succeeds, even though exists() returned false.
I can't easily test this beyond 3.4.3 on my windows box, as I am not set up to do custom builds.

Discovered when investigating https://github.com/dart-lang/test/issues/2243.

Seems to be the absolute path which breaks copy (and copySync) for me. The following shows the same error:
import "dart:io";
void main() {
    var test = File(r'test.');
    try {
      test.copySync(r'copyTest.txt');
      print("Success");
    } catch (e) {
      print("$e");
    }
    test = test.absolute;
    try {
      test.copySync(r'copyTest.txt'); // Fails.
      print("Success");
    } catch (e) {
      print("$e");
    }
}

Also works with .\test. and ..\testdata\test., so it's not any preceding path, only an absolute one, that breaks it.

potentially https://dart-review.googlesource.com/c/sdk/+/356680 is the culprit

Per https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#win32-file-namespaces on Windows you can't have (trailing) periods in filenames unless you prefix the filename with '\\?\'.
Since we do prefix filenames with '\?' before doing a copy https://github.com/dart-lang/sdk/blob/ca3e67a3b654c492b85b546354619137d1f2f95d/runtime/bin/file_win.cc#L816 , that changes meaning of those (trailing) periods.
We could strip trailing periods before adding a prefix
diff --git a/runtime/bin/file_win.cc b/runtime/bin/file_win.cc
index 66cadbedf1b..bf2c0c058e1 100644
--- a/runtime/bin/file_win.cc
+++ b/runtime/bin/file_win.cc
@@ -408,10 +408,14 @@ static std::unique_ptr<wchar_t[]> ToWinAPIPath(const char* utf8_path,
     return absolute_path;
   }

-  // Add prefix and replace forward slashes with backward slashes.
+  // Add prefix, remove trailing periods, replace forward slashes with
+  // backward slashes.
   auto result =
       std::make_unique<wchar_t[]>(kLongPathPrefixLength + path_length + 1);
   wcsncpy(result.get(), kLongPathPrefix, kLongPathPrefixLength);
+  while (absolute_path[path_length - 1] == '.') {
+    --path_length;
+  }
   for (int i = 0; i < path_length; i++) {
     result.get()[kLongPathPrefixLength + i] =
         absolute_path[i] == L'/' ? L'\\' : absolute_path[i];

cc @mraleph

@aam I don't think the proposed change is enough. Rules around trailing dots apply to all path components, not just the trailing one. Consider path test.\test. for example.
I think we have a choice to make:

We could add better support for path where components include trailing dots - this would require rewriting  ToWinAPIFilePath to avoid using GetFullPathNameW which currently eats those dots and then forcing \\?\ prefix if any components contain ..
We can silently apply Win32 path normalization rules in ToWinAPIFilePath and strip trailing dots from all path components (so that test.\test. becomes test\test). Maybe just using PathCchCanonicalizeEx would do the trick?
We could do a breaking change and make dart:io throw an error when path contains a component with a trailing dot.

I am in doubt that we actually want option 2 - because it silently leads to a very surprising behavior, especially when people are trying to write portable code. I think we should go for either 1 or 3. I am leaning towards 1.
Any opinions?

I would be fine with either option 1 or 3, I would not be a fan of option 2, that seems very surprising.

"Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not." (https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file)
It is true in Windows 11 - you are not able to cd/dir into such a directory and you can't do anything with it in Windows Explorer.
Given that, it's not clear whether writing our own canonicalizer that instead of using GetFullPathNameW is worth it.
Also at present, if user wants to they can explicitly add '\?' prefix to a path/filename with trailing periods and file operations will work.
But then forward slashes won't be accepted anymore, user have to specify backslashes, meaning no canonicalization to such filenames.
import "dart:io";
void main() {
    var test = File(r'\\?\c:\src\d2\sdk\test.');
    test.writeAsStringSync('kuka');
    try {
      test.copySync(r'copyTest.txt');
      print("Success");
    } catch (e) {
      print("$e");
    }
    test = test.absolute;
    print(test.path);
    try {
      test.copySync(r'copyTest.txt'); // Fails.
      print("Success");
    } catch (e) {
      print("$e");
    }
}

PS C:\src\d2\sdk> out\ReleaseX64\dart d1.dart
Success
\\?\c:\src\d2\sdk\test.
Success
PS C:\src\d2\sdk>

Also note that Windows CLI shell as well as Windows Explorer does strip trailing periods from filenames automatically:
PS C:\src\d2\sdk> dir a
Get-ChildItem: Cannot find path 'C:\src\d2\sdk\a' because it does not exist.
PS C:\src\d2\sdk> copy .\d1.dart a....
PS C:\src\d2\sdk> dir a

    Directory: C:\src\d2\sdk

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           6/13/2024  1:17 PM            420 a

PS C:\src\d2\sdk>

While stripping dots would be more "Windows-native", I think we should opt for supporting dots in filepaths instead. We already hide some of the WinAPI complexity away from users (e.g. we don't require them to know about \\?\ prefix which is necessary to work with long file names), so I think we should just silently supports trailing dots as well.

https://dart-review.googlesource.com/c/sdk/+/375421 with the fix


Crypto Heroes Wiki Reformatting & Updating♻

Dear Research Intern,
Pain
There is no Crypto Heroes Wiki
What code could be improved?
https://github.com/MarmaJFoundation/cryptoheroes-wiki/wiki
Tasks

[ ] Create a Wiki for Crypto Heroes which can be accessed at: https://github.com/MarmaJFoundation/cryptoheroes-wiki/wiki

Wiki formatting should be similar to: https://github.com/pixeldapps/pixelpets-wiki/wiki
Bounty Amount: 8.19 $marmaj
More Information
Here is a link to the Gaming Widget which has links to the Crypto Heroes game.
Dear Research Intern,
Pain
The Crypto Heroes Wiki is not formatted correctly and may need to have some information added.
What code could be improved?
https://github.com/MarmaJFoundation/cryptoheroes-wiki/
Tasks

[ ] Update the Wiki for Crypto Heroes which can be accessed at: https://github.com/MarmaJFoundation/cryptoheroes-wiki/wiki to be formatted more efficiently. Example in the screenshot below.

Bounty Amount: 8.19 $marmaj
More Information
There is a screenshot below of what an appropriate Wiki structure may look like.
In order to most efficiently contribute to the Wiki, one would probably have to play the game either on mainnet or on testnet.
Here is a link to the Gaming Widget which has links to the Crypto Heroes game.
Screenshots

I'll go ahead and work on this.

I just finished adding the final elements of the wiki and updating it. Feel free to look over and let me know what you think.
Intern: SHEMAR ABEL
FOR CRYPTOHEROES CLICK HERE!
FOR GITHUB PROFILE CLICK HERE!
FOR NEAR SOCIAL PROFILE CLICK HERE!


Defect in Prepared Statements parser and IN condition

OrientDB Version: 3.1.5
Java Version: 8
Imagine OClass with at least 2 properties: link (OType.LINK) and linklist (OType.LINKLIST).
Previously (in OrientDB v2) the following 2 prepared statements will be considered correct and will work as expected:
SELECT FROM MyClass WHERE link IN :parameter
SELECT FROM MyClass WHERE linklist IN :parameter

But for some reason in OrientDB v3 second option stopped working. To make it working you should have it "corrected" in the following way:
SELECT FROM MyClass WHERE linklist IN [:parameter]

It's quite inconvenient because you have to know type of the property (single value or multivalue).

HI @PhantomYdn
What do you pass in the second case, a List or a single RID?
Thanks
Luigi

Hello, @luigidellaquila,
I pass List.
Here is a commit which helped to overcome this behavior of OrientDB: https://github.com/OrienteerBAP/wicket-orientdb/commit/156a173ad06776f38790a8d9ca4b60388acd0b53
It was spotted in our UI: after applying of filter to a LINKLIST column - the results are empty. It was not covered in test cases - so we found that pretty late. The solution is to add brackets. And we have to adjust filters for LINK properties back to syntax without brackets - otherwise result of a query become also empty.
If it's new syntax of OrientDB - I'm good (because behavior is adjusted in our code:)), but it might be inconvenient for others.

Hi @PhantomYdn
Thank you for clarifying, actually it seems to be a bug. I'll check it ASAP
Thanks
Luigi

@luigidellaquila , thank you!
It seems that something really bad happened with IN condition (or more...).
Real-life example through our REST interface:
https://app.paleontology.rocks/orientdb/query/db/sql/select+from+Book+where+@rid+=+%231356:3
Please pay attention to category field.
Now lets try to query all Books which has contains any of the elements listed (definition of IN) of 2 first categories of this Book. Both of the following queries will return empty results:
https://app.paleontology.rocks/orientdb/query/db/sql/select+from+Book+where+category+in+[%231420:4,+%231420:7]
https://app.paleontology.rocks/orientdb/query/db/sql/select+from+Book+where+[%231420:4,+%231420:7]+in+category
What's making that even more interesting... These queries seems to work OK on freshly created DB 3.1.5. DB which is accessible through links was created on 3.1.3, then used on 3.1.4 and finally "upgraded" to 3.1.5
P.S. I will clean links after your investigation...

@luigidellaquila, checked source of com.orientechnologies.orient.core.sql.parser.OInCondition. Seems that there are really 2 issues:

[ ] IN treats incorrectly prepared statement on the right side
[ ] IN works literally as "equals" if both sides are collections

Will try to fix unless you will be faster:)

Surprisingly, CONTAINSANY do what's we are needed. Check the example below.
All documents:

Filtered:

But CONTAINSANY also has a defect. Check this results out:

@luigidellaquila, please advise, was this fixed in some latest minor releases?


Installation failed from apm

Trying to install relative-line-numbers, whether from apm or from the Atom GUI, fails with a 400 Bad Request:
$ apm install relative-line-numbers
Installing relative-line-numbers to /Users/thblt/.atom/packages ✗
Unable to download https://www.atom.io/api/packages/relative-line-numbers/versions/0.1.5/tarball: 400 Bad Request Repository inaccessible

If this is a GitHub issue, I can report it upstream (I'm assuming at atom/atom.io)
Thanks a lot for this plugin — I just came to Atom from vim thanks to vim-mode, and I believe relative line numbers are an absolute necessity for efficient vim-like operation.

That's because I have removed this package from the Atom package listing. I haven't had the time to upgrade this package to work with the newest API changes and therefore I removed it.


Upgrade pydantic to version 2.0

Not possible with SQLmodel at the moment.
Pydantic 2.0 support is requested for SQLmodel:
https://github.com/tiangolo/sqlmodel/discussions/621


Handle git is not found in init-skeleton, improve output

Happens on fresh Windows installation.

Maybe we reopen it on init-skeleton repo?


Disable moving config file to LEGANCY CONFIG BACKUP - NOT WORKING.txt

I cannot find code that moves this file in the MultiAdmin or ServerMod2 repositories, so please forgive me if this issue is in the wrong repo.
I use a script called MergeConfigs.sh to merge my scripts together. Creation of the LEGANCY(?) file is screwing up my workflow for deploying configs to my servers.

Again, MultiAdmin does not touch any of your configs other than scp_multiadmin.cfg, this is a main game issue that could most likely be resolved in ServerMod.

Sorry about that!


Which browser versions are supported?

The current version specifies that IE11 and upwards is supported, but what about Chrome, Firefox etc? What about mobile browsers?

"IE X+" usually means "all the modern browsers plus IE from version X onwards".
Roughly all browsers with support for the classList API (https://caniuse.com/#feat=classlist) should be supported.
We are not testing all browser versions against all OS versions though, here  the tested browsers are listed: https://github.com/fabiospampinato/cash/blob/b5cdf0461c693a47031d098ca35a13548218db93/karma.conf.js#L8-L82

Ok. Thank you for the clarification.


Continues OTP changes not working.

Continues OTP changes should work. now if I entered 333333. and when I change it to 444444 so at that moment manually focus on input.

It works as intended. Usually after fill event, the app should send automatically the otp code to the server or something. But I can imagine a scenario where you may want to fire this event by click for example.
I will extend the current API with a new option, which will determinate the behavior of the final event.


Change "CFCRF" to "CFCRJ"; fixes #13

Fixes typo in README.md Section 2. Overview -> Problem Statement, item 2

Good catch @jazcap53! Can you please push another commit to update the acronym to "CFCFRJ"? Just like the "for" in CFC, we include the "for" in CFCFRJ.

@krook Sure. The new push will conflict with the title of Diagram 1, though.

Thanks @jazcap53. We'll need to update the image too. But this change should at least be correct if we change it now.

Thanks @krook. Will do!


Fix dependency load error

Fix dependency load error and also add support for workflow base class

Hi @scottdurow,
Would be great if you could help progress this Pull Request soon please. I'm dependent on this for a project I'm currently working on.
Thanks,

This is released in https://www.nuget.org/packages/spkl/1.0.371-beta


Missing tag for snmpclitools 0.7.1

Expected behavior
First: Submitting here because issues aren't enabled on the snmpclitools repo and the link from the readme for reporting issues links here.
There is not a tag in the snmpclitools repo that matches the 0.7.1 version that is uploaded to PyPI. It might also be worth making a note in the old snmpclitools-lextudio package on PyPI to go back to the original snmpclitools package.
Actual behavior
Can't trace from the package to a specific commit.
Detailed steps
View tags in git.
Python package information
0.7.1
Operating system information
N/A
Python information
N/A
(Optional) Contents of your test script
No response
Relevant log output
No response

Thanks for the report, and the tag has been added.
Another way to locate the commit is to check the commit message, as we always use "Bumped the version" to manually update the version and release notes.


Remove version: Diladele.WebProxy version <IP_ADDRESS>

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

For moderators or/and anyone else

[!Caution]
As a result of several personal problems I've had over the last few months + my final exams coming up very soon, I'm currently unable to look at my GitHub notifications every day and maintain my executions correctly.
If you detect a certain problem on a certain pul request:

Either you can close the pull request directly without mentioning me.
Or you can send me a message on X (Twitter): @Exorcism0666

Thank you for your understanding, and I'm sorry if some pull requests can't be approved due to the situation I'm in.

This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping Exorcism0666.

[!warning]
With the new version of Komac, numerous Pull Requests may contain bugs or unwanted elements. If such issues arise, please tag russellbanks so that these bugs can be addressed in future updates.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

/azp run

URL: https://packages.diladele.com/webproxy/<IP_ADDRESS>E6A/amd64/release/windows/webproxy-<IP_ADDRESS>E6A_amd64.msi
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 912)


Apoc core functions & procedures

https://neo4j.com/docs/apoc/current/overview/

Apoc procedures & functions may actually be out of scope for the cypher builder


strace: 4.23 -> 4.24

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

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

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

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: strace
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: strace
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24
shrinking /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24/bin/strace
gzipping man pages under /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24/share/man/
strip is /nix/store/gpc2wld1s0c6qzx9326cwn1wcx29xzsj-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24/bin
patching script interpreter paths in /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24
/nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24/bin/strace-graph: interpreter directive changed from "/usr/bin/perl" to "/nix/store/mbmf1j17gadvxi9rrr8rzj0iqnb8xxyp-perl-5.24.4/bin/perl"
/nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24/bin/strace-log-merge: interpreter directive changed from "/bin/sh" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/sh"
checking for references to /build in /nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24...
/nix/store/k5lp7l5w547lc1d3c1713mlj9516drq3-strace-4.24

For some archs it might be significantly better to use libdw (elfutils) instead of libunwind. The mailing lists have some numbers IIRC, if you search for them. Haven't found information on what is preferred but I believe it uses libdw if both are provided (but that might not be significant).  Maybe that's the way to go on ELF-oriented platforms.  Anyone know?
As an aside it seems libiberty or so is needed for demangling, too.

(I believe all of this is true of previous version at least but might be worth investigating...)

What architectures are we talking about?


Add a more ergonomic API around path segment matching

The Problem
The current API for matching path segments is entirely built around the Lookup typeclass.  This works, but it can get clunky for  some common things.  For example, you can do this:
router :: HTTPure.Request -> HTTPure.ResponseM
router request@{ path }
  | path !@ 0 == "something" = somethingRoute request
  | otherwise                = HTTPure.notFound

But that will send any request whose first segment is "something" to somethingRoute.  Likely the intent is to only send the request to somethingRoute if it has exactly one segment, which is "something", and you'd have to do something like this:
router :: HTTPure.Request -> HTTPure.ResponseM
router request@{ path }
  | path !@ 0 == "something" && length path == 1 = somethingRoute request
  | otherwise                                    = HTTPure.notFound

The API can become very painful as you have longer paths, e.g.:
path !@ 0 == "something" && path !@ 1 == "anotherThing" && path !@ 2 == "somethingElse" && length path == 3

And that doesn't even include doing things like enforcing specific requirements for certain pattern-based path segments, which requires significantly more complexity.
Proposed Solution
router :: HTTPure.Request -> HTTPure.ResponseM
router request@{ path }
  | path =~ "/something"                            = somethingRoute request
  | path =~ "/foo/\d+"                              = fooRoute request
  | path =~ "/something/anotherThing/somethingElse" = ...
  | otherwise                                       = HTTPure.notFound

Introduce two new binary operators, =~ and ==~.  These operators take a Path on the left side, and a String on the right side.  The Path will be matched against the String using some set of rules heavily inspired by Express's routing engine.  =~ will be used for case-insensitive routing, where ==~ can be used for strict (case-sensitive) routing.
The only real change I'm aware of over what express does is that we'll have to come up with a different API around route parameters.  Of course, that could be as simple as replacing :namedParameter: with \w+ and using Lookup to reference the parameters.  If there were some way to even use the named parameters approach that Express uses, it would be awesome, but I don't see how that would be possible in a purely functional world (at least, without introducing a significantly more complex API, which isn't really worth it--it's a fairly small thing, and if it can't be done without an overly complex API, it's not worth changing to it).

@akheron I've put a lot of thought into this issue, I'm not quite convinced on the proposed solution and would love to get feedback/ideas, so if you have any to give, it would be much appreciated!

I've used array pattern matching to accomplish good ergonomics, and I think it's the way to go. It solves matching the path and capturing parameters at the same time.
Matching path only:
router { path } =
  case path of
    ["todos", id] -> readTodo id
    ["todos"] -> listTodos
    [] -> frontPage
    _ -> HTTPure.notFound

Matching path and method:
router { method, path } =
  handle method path
  where
    handle HTTPure.Get ["todos", id] -> readTodo id
    handle HTTPure.Put ["todos", id] -> updateTodo id
    handle HTTPure.Get [] -> frontPage
    handle _ -> HTTPure.notFound

That's what I was originally leaning towards, but I started thinking more along the lines of the express API, because working on array pattern matching is somewhat limited in a few ways.  Specifically:

We can't match on specific ID shapes (/todos/\d{4}-\d{6}--contrived but a lot of use cases do build IDs that have specific shapes).
We can't deal in variable-length segments.  For instance, in Express, you could match something like (/:locale:)?/todos/:id.
Doing anything involving requiring regexes immediately becomes a non-ergonomic API.

I'm not entirely convinced these 3 are significant problems--they all have workarounds, and it may be cleaner to defer to the workarounds than to move away from PS language features.
For 1., the workaround is just to match on any shape and check the shape in the route handler.  I just don't love that, because it means that some aspects of routing are moved out of the router, but it works.  For 2, you just have to have two different matches, one for each case--not a huge deal.  3 is a gross API, but totally doable--and perhaps not something we should cater towards.
So I guess the question is, at this time, do you feel that any of these 3 are significant enough limitations (or that the workarounds are gross enough) to be worth catering solutions?

Oh, and one other problem with array pattern matching: you can't do case-insensitive matches.  That isn't a big issue for something like a REST API, but it's a non-started for something that serves, e.g., a UI, where addresses are entered by users into address bars in browsers.  HTTPure should be able to cater to both use cases.

The thing I like most in HTTPure is that the serve takes a function that processes all requests. The user is free to implement routing, request handlers, middleware etc. in any way he sees fit. However, providing helpers for common use cases (e.g. routing) would be a big plus, so that each user doesn't have to reinvent the wheel.
I suggest figuring out the best way to create composable routers, which could then be used for different purposes. If the user wants regex route matching, it could be used while also using plain array pattern matching or simple prefix matching for other purposes.
In purescript-httpure-rest-router I approached the problem like this: https://github.com/cprussin/purescript-httpure-rest-router/blob/f8883ba2cc95646ead3933ec7bce8a12b9fc6b90/examples/Todo.purs#L105-L119
The only problem with those arrays of routes and making a router function using Router.router is that routers made like this are not composable, i.e. the router always returns a response even though none of the routes matches (falling back to 404).
PS. Case-insitive matching could be accomplished by e.g. converting the path of some or all requests to lowercase in a middleware function.

Hi,
I'm not sure if I should add any comments as I'm not a contributor but barely a user (we have just started to build a service around httpure)... but anyway here are my to cents:
I really like clean API which is provided by this framework and I think that advanced/opinionated routing options should be delegated to external libraries like: purescript-routing, purescript-routing-duplex, purescript-boomboom, purescript-boomerang or some other (maybe "contrib") proposition.
Routing can be done in different ways and with different focus in mind. If you are building API you can lean toward performance and simplicity and don't need bidirectional routes, if you are implementing a web service you probably don't want to hard code any urls in your HTMLs and want some automatic serialization for your typed routes etc.
I think that your path representation as just array of segments is nearly ideal as it is lightweight, covers really simple scenarios and can be base for integration with any other more advanced routing option...
Thanks for your work on httpure!

Folks, the feedback here is really helpful, thank you both for leaving those opinions @akheron and @paluh .    I'll close this ticket as something that doesn't need to happen.
I do think before we go to 1.0 it would be nice to do a better job documenting some common patterns around routing, such as the array pattern matching approach, and using tools like the ones you listed @paluh .  I'll add a note in #106 to remember to do that.
Thanks again all!


Bug/dnn 6135

I've tested sitemap on localized site without fix that is provided in DNN-4122, but couldn't replicate the exception.
I think issue could be related to the tab settings or modules on the localized pages.
To prevent failure of the SiteMap creation I've added try catch around the
GetPageUrl call:
try
{
pageUrl = GetPageUrl(tab, (ps.ContentLocalizationEnabled) ? tab.CultureCode : null);
urls.Add(pageUrl);
}
catch (Exception ex)
{
Logger.ErrorFormat("Error has occurred getting PageUrl for {0}", tab.TabName);
}
This way even if one page has failed process will continue and problematic tab would be reported in the log file.

Merged PR manually


Value conversions documentation

I believe this can be added as a new page under https://github.com/aspnet/EntityFramework.Docs/tree/master/entity-framework/core/modeling.

Done for preview1. Need to add real sample code for RTM.

See also comments here: #1986


 I'm trying to use gpt4 for indexing but with no luck. It'd be great if there was a model parameter for indexing commands. currently, it only supports while querying which is not helpful if the context is written using gpt3.
I also tried setting the settings parameter model to gpt-4 but it didn't seem to work.

What do you mean? Are you on the latest version of the bot?
The bot supports models as follows in /index chat:

as you can see there's a model param to choose what u want to use for the indexed conversation
During query-time you can also set the model:

For actual indexing itself, the LLM isn't used, indexing actually just consists of chunking input text and then creating embeddings. LLMs are only used when querying a created index, or when creating a deep composition index.
@ashra-academy does that help

Rightt I meant during deep composition. is it possible to set the model during deep composition?

also which model are used for embeddings? is it an openai ada? being able to set the embedding model would be solve the issue too I think if the model is trained more on math and code like gpt4

Oh I see, unfortunately not right now, it is editable in code but not within the discord bot while it's in use AFAIK, what model do you want to switch it to? I can look into it and fix the default to be some sort of gpt-4 model.
For the embeddings model it is the latest ada model yeah, but I'm not aware of any other embedding systems that are trained more on math and code, gpt-4's embeddings would also use ada

For future note for work on this ticket:

We need to fix the passing of the llm predictor into the deep composer, right now it is using some sort of default llm predictor and not the gpt-4-32k one defined in the compose_indexes method

there are alot of embedding models available, the code models would be good at math as well. so I'd propose we be able to choose them with a parameter. here's a discussion: https://community.openai.com/t/what-do-all-these-models-do/19007/5

@ashra-academy that's not true, the only embedding models usable are:

And the only GOOD one is the last most recent one, so we don't have openai options for embedding models that work better with code and text.

All of those "code" models you're talking about are also LLMs, not embedding models, and are incredibly old and much worse compared to GPT-4. Out of all of the models listed, gpt-4-1106-preview performs the best across the board

it looks like available on my dashboard. probably the highlighted one would be best for math as its a mix of latex and text.

Oh you're totally right, that's my bad!

I see it in my dashboard as well, I don't see official documentation for any of these models though so I need to do some digging to figure out how these are used and if they're beter than gpt-4, and how they actually even work

Awesome! looking forward to trying them out. Cheers!

my understanding is that all the Text models are embedding models

Thanks for bringing this to my attention! Let me know if you come across any good docs for these

Sure thing


Flutter SDK 3.10.0 doesn't support iOS

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
Flutter SDK 3.10.0
google_map_sdk: ^2.3.0
iOS : 11
sample code gives crash.
Expected results
Flutter SDK 3.7.8
google_map_sdk: ^2.2.5
iOS : 11
sample code working properly
Actual results
sample code gives crash
Code sample
Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
Goole Maps SDK for iOS version: <IP_ADDRESS>
New version of Google Maps SDK for iOS available: <IP_ADDRESS>
Lost connection to device

Flutter Doctor output
Doctor output
flutter channel stable, 3.10.0 on macOS 12.0.1 21559 darwin-x64
xcode 13.2.1
android studio 2022.1

flutter

Hi @alexlozdev
I'm not quite clear on the Steps to reproduce this issue. The latest [google_maps_flutter](https://pub.dev/packages/google_maps_flutter) version is 2.3.0 and there is no google_map_sdk package on pub.dev. Can you please be more specific?

Sorry, I miswrite the version. I edited my question again.
The lastest google_maps_flutter version 2.3.0 is not working for iOS.

Sample works well.
I found that it is related with GetX.
I use GetX4.6.5 .
Obx(() {
return Column(
children: [
widget1,
GoogleMap(
mapType: MapType.hybrid,
initialCameraPosition: _initialPosition,
),
],
);
});
If I remove GetX, it works well.
Is there any solution?

Since it's related to GetX, you should open an issue on its repository for better support there.
Closing, as this isn't an issue with Flutter framework.


easily deploy previews to web for design QA/demo purposes (e.g. mailing build -> static site)

command could also be mailing export (might be better since this is not required for production)

https://mailing.run


Ruby implementation of add to your app.

PR checklist:

[ ] Added changelog entry.
[ ] Get code working (data filtering is still not working)
[ ] Make sure ruby (the parts that will be in docs examples) is not horrible
[ ] Add as literal include to have ruby add to app guide.

@gj or @gkaemmer could use a review from either of you on this code -- not ready to merge yet, but just to make sure it's not too ugly (only the parts that will go into docs)

Merged into #1157


Deployment of a finger server

This allows for external users to check on the status of the DevOps team using
the finger protocol.
Documentation is provided on establishing your plan as well as opting-out of the
finger system.

After playing around, I cannot get this to work nicely unfortunately. It's just
a little too dated protocol and tooling wise and it just does not seem to work
on modern Debian.

It was a nice idea and I'm not opposed to building a lightweight finger server
(similar to what finger<EMAIL_ADDRESS>returns).
I chose cfingerd but this seemed to always hang when performing IDENT lookups
on port 113, which is not something that can be disabled (even allowing
anonymous lookups still triggers an ident lookup).
Even with the provided xinetd configuration from cfingerd the IP address that
cfingerd was picking up was just not the one that was actually requesting, I
think that the applications have diverged too much considering the age of
cfingerd.
Maybe another finger daemon would work better at this and return the information
we want, but I am also concious that finger daemons are notorious for being
exploit points or information exposure endpoints, so whatever we do I wanted to
ensure it was done right.
The client works completely fine, the server was the issue.
Maybe we can revisit this during the next DevOps meeting.


⚠ Bofrost.be has degraded performance

In 690a59b, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 983 ms

Resolved: Bofrost.be performance has improved in e9bb3c6.


Update tar dependency (backport #1987)

(cherry picked from commit 93b33b535f40357051fb544526f49812b068f804)

@grigasp @saskliutas updating package versions causes branch coverage < 100% for presentation-components.

@pmconne this is due to the immer package. I locked down the version on master. I'll do the same here in a separate PR.

Force merging because extract-api ecschema-metadata on windows.


baremetal: enable and document "pod_cidr" and "service_cidr" options

closes #1471
Allow the customization of pod and service CIDRs also for baremetal setups
This is a trivial change to the baremetal platform package that allows a user to define custom values for pod_cidr and service_cidr. Thanks to @invidian for pointing out the necessary code changes :+1:

Anything I can do here to get this PR accepted @invidian?

@surajssd @ipochi @iaguis maybe one of you can have a look?


Add Stargaze Documentation

This PR is designed to add new chain page for Stargaze. It includes both dev and node provider pages and lists all APIs.

Nice


[php] heredocs not colored

I just ran into an error in parsing PHP in VS Code.
This is an example:
$myVar=<<<EOT
    test content
EOT;

This is parsed fine but as soon as I insert a space or a tab after "EOT;" it breaks as it still sees this line as the end of the Heredoc string. However, only the "end word" (in this case EOT) and an optional semicolon is allowed, to other characters.
So the parsing in this case must only except the end word and the optional semicolon.

+1
I am seeing the same thing.

Sorry, I don't seem to bae able to reproduce this. Is this the complete code snippet?
This is about syntax highlighting, right?

For me it was about syntax highlighting.

I just tried it again and it seems that HEREDOC isn't parsed at all.
<?php
$myVar=<<<EOT
echo "test content";
EOT;
?>

In this case the text between the two "EOT" is a string that gets assigned to $myVar
However, the syntax highlighting indicates that echo "test content";  is a function call to "echo".

Ok, I see, that seems to be no support for HERE docs

It appears to be working now. Ran into the same problem but carefully read the php.net description http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc which says

It is very important to note that the line with the closing identifier must contain no other characters, except a semicolon (;).

Placing the EOT; without any indenting fixes any issues I had

We are getting close :-)
The following code is currently not parsed correctly. After the first "EOT;" there are some spaces which means this lines belongs to the string. However, it's not colored as part of the string but like the end of the Heredoc.
$test=<<<EOT
Hello
EOT;
EOT;

Is it possible to highlight HTML tags inside heredocs? This can be made a user setting.

I tried the given examples in 1.10-insiders and they seem to work now after switching to https://github.com/atom/language-php as TextMate grammar.

@markgukov Please file this request separately