Alby Lightning Gateway Integration using Webhook and Alby API

Built this as a proof of concept for how we might be able to use a Lightning Service Provider API with the Gateway.
This fully implements the pay side of the gateway, receive side requires some changes on their end but working with @m1sterc001guy and @okjodom we think we found a pretty good solution:
Most custodial lightning APIs don't expose the htlc interceptor and it's a big ask to expose that, but they DO have the ability to register webhooks for updates.
This impl adds a rpc_webhook_server that starts a webhook endpoint for the Alby API to forward htlcs marked for the gateway to. We use a btreemap of oneshot channels so that same endpoint can forward the htlc into the normal gateway htlc stream and listen for the response of Fail or Success(preimage), then return the preimage as a response to the webhook call.
So the entire ask for getting a lightning api provider to integrate with us turns into:
We need you to implement a single endpoint, where you POST an htlc that you would normally fail and the response will contain the preimage for that htlc or Error.
Which we were thinking is a way lighter lift than getting them to actually run gateways or our daemons/extensions themselves.
This is a WIP and was more of an exercise to see if it might work, would love to hear feedback/thoughts on the approach.
(Builds on lightnign directory refactor PR)

I'd be willing to add an endpoint to https://github.com/coinos/coinos-server to play with this. It's a nodejs API server and can talk to our CLN node over RPC.

Was planning to implement a bunch of these tomorrow morning Pacific time and coinos just jumped to the top of the list hahaha awesome!
Shoot me a discord message if you need any help or would like to pair, I'll be in the fedimint general voice channel all day https://discord.com/invite/exjN3NAF I'm @kodylow

just fixed the imports issue, you should be able to run this as is. I'll work on a coinos.rs in the morning (basically mirror alby.rs but using your api for info and pay methods on the trait) , the receive methods should be exactly the same for coinos
as they are in this alby impl

As mentioned on the dev call, the biggest concern is figuring out how to test something like this. One option is to build out our own "test-custodial" API that could serve as an example to service providers on what APIs are needed to be exposed in order to support a Fedimint LN Gateway. Otherwise this might need to live outside of the Fedimint repo

agreed, let's maintain this just as a draft so we can provide reference to people looking to implement the webhook side though, they've already found it useful

Being opened it kind of gets in a way and looks like unaddressed work. I would prefer this was closed if no one minds. Maybe link it from some documentation or something. Otherwise I doubt anyone will find it here gathering dust anyway.

Yup closing, will attack more generically this was a good exercise though


pandas_datareader error in chapter 6

running the code for Stocks examples returns and error related to pandas_datareader as below:

I believe the problem is related to the API no longer being accessible.


DKIM Validation

Enhancement request:
DKIM validation.
PGP ensures the identity of the human writing the message, but does not provide proof that the person is contacting you from the address or username from which he or she claims to be contacting you.
Also: DKIM is something I look for in my e-mails (I have DKIM Validator plug-in for Thunderbird). Much like even the most basic TLS cert by Let's Encrypt, the presence of a DKIM signature makes the originating web server a little more legitimate.
Deployment is not universal, but it is very good as a secondary and/or fallback signature on mail so that people can be sure of authorship and so that less than scrupulous politicians with horrible IT opsec cannot disavow everything.
With the robust and fast signatures of Ed25519 I have faith that DKIM will allow, in the near future, EdDSA in place of RSA and they may become more ubiquitous.
Filing this bug so that progress can be tracked.
Thank you all for your amazing work.

DKIM isn't really something that i would expose in the user facing mail client.
Mailinglists and intermediate systems change the subject and insert footers, which in turn breaks the dkim signature.
I think it does more harm than good.

@yoshimo They are mechanisms for those systems no to break DKIM. Valid DKIM signatures are a requirement in some case like when sending mail to GMail servers over IPv6, and this will become increasingly more required.
However, I do agree that DKIM is not somethings that should be checked at the MUA level, rather MTA/MDA. It does only authenticates the sending MTA, so this is pointless for the users, but interesting for the receiving MTA.

PGP ensures the identity of the human writing the message, but does not provide proof that the person is contacting you from the address or username from which he or she claims to be contacting you.

So what? If you trust the key, which means you trust the mail address linked to it, in which case would that matters?

Mailinglists and intermediate systems change the subject and insert footers, which in turn breaks the dkim signature.

The same is true of PGP signatures (both cleartext inline and attached PGP signatures in unencrypted format) and K-9 Mail supports them.

PGP ensures the identity of the human writing the message, but does not provide proof that the person is contacting you from the address or username from which he or she claims to be contacting you.

So what? If you trust the key, which means you trust the mail address linked to it, in which case would that matters?

There are situations where I may be replying to an e-mail and not know if the person is really a representative of<EMAIL_ADDRESS>or<EMAIL_ADDRESS>Also, I may send an e-mail to someone from a mail account that the recipient trusts<EMAIL_ADDRESS>and I may say that I wish to move the conversation to another account I own.
PGP signatures confirm who is writing the message, but they don't prove trusting the other party for honesty. I may be negotiating a contract with someone. I would want a verifiable record of the discussion. I may trust that the other party in the contract is the entity attached to a certain PGP key and that that certain PGP key is tied to that entity. But I may not trust that the other party is really an employee of<EMAIL_ADDRESS>The other party may say (I'm signing this message to prove (1) that it is me and (2) I am sending this message from my<EMAIL_ADDRESS>account to prove that I represent Cocacola, Inc."
PGP verifies (1), but DKIM verifies (2).

DKIM isn't really something that i would expose in the user facing mail client.

Have it be an extra checkmark somewhere. The absence of the checkmark means no reason to panic, but to see it there is re-assuring. If the DKIM is absent, have K-9 Mail display the mail as it does right now with no changes. That's the protocol for PGP as well. If there is no PGP data, the client (on any platform) just doesn't mention PGP at all.

There are situations where I may be replying to an e-mail and not know if the person is really a representative of<EMAIL_ADDRESS>or<EMAIL_ADDRESS>Also, I may send an e-mail to someone from a mail account that the recipient trusts<EMAIL_ADDRESS>and I may say that I wish to move the conversation to another account I own.
PGP signatures confirm who is writing the message, but they don't prove trusting the other party for honesty. I may be negotiating a contract with someone. I would want a verifiable record of the discussion. I may trust that the other party in the contract is the entity attached to a certain PGP key and that that certain PGP key is tied to that entity. But I may not trust that the other party is really an employee of<EMAIL_ADDRESS>The other party may say (I'm signing this message to prove (1) that it is me and (2) I am sending this message from my<EMAIL_ADDRESS>account to prove that I represent Cocacola, Inc."
PGP verifies (1), but DKIM verifies (2).

Isn’t all that covered by sending an encrypted email for this key to the address to verify?

Isn’t all that covered by sending an encrypted email for this key to the address to verify?

One response to this:
That is one method. However, it requires another step. It also requires both parties to support encryption. DKIM and unencrypted PGP signatures can be used with "dumb" e-mail and the contents verified later.
DKIM also does not require user intervention. It is automatically performed by the server. It also works as a fallback when the other party does not have PGP at all.
DKIM and PGP perform unique, complementary, redundant, and corroborating functions. In some ways, DKIM is just extra insurance. In some ways, unnecessary if you have PGP. DKIM is good for when PGP isn't feasible. DKIM also performs functions that PGP was never meant to do and could never do.

Isn’t all that covered by sending an encrypted email for this key to the address to verify?

Alternative response:
By this reasoning we don't need client-to-server SMTP over TLS or server-to-server SMTP over TLS because we can encrypt every message. We also wouldn't need secret passwords or individual e-mail accounts because we can sign e-mails or sign and encrypt e-mails. I am not trying to be facetious. This is what people do with PGP on Twitter: post or sticky post encrypted (or signed and encrypted) text.
But it is nice to have e-mail for a multitude of reasons, some of which are precision (instead of broadcasting) and some level of privacy. E-mail was improved with STARTTLS and then dedicated ports for TLS. DKIM was also an improvement upon e-mail.

Regarding the alternative answer: TLS still protects metadata from third-party listener though. But I see your point.
Anyway, my answer stays the same: in a not so long-term, DKIM should become mandatory and thus checked at MTA level. Whether having DKIM checked at MUA level meanwhile is good idea, I’ll leave that to the actual MUA dev. But I don’t think it is.
Also, note that DKIM without a DMARC policy is only partially useful, because if there is no DKIM signature, you don’t know whether that’s expected or not. So you just gain authentication of legitimate senders making use of DKIM, but don’t get ride of spoofer. Should the MUA also check DMARC? That doesn’t really make sense, since this is really a MTA targeted feature.

I agree that it should be a mail-transfer-agent matter and not mail-user-agent thing.
After all, we entrust our MTAs to establish TLS between servers. PGP is user-to-user, hence, an MUA feature.
Not quite. I cannot disable non-TLS mail for my posteo account because many servers in Asia, for example, have no TLS and I cant afford to not email those people or have their mail get rejected. I appreciate posteo offering the option for my account, nevertheless.
I would like to maximize security while maimtaining compatibility. For the same reason, clients still support STARTTLS for the few forsaken servers that refuse c2s tls (like MS Office 365 mail servers for large organizations).
Maybe it is better to entrust our servers or eventually force them to only do TLS or successful STARTTLS when talking to each other and to enforce DKIM and check validity.
In the meantime, I suppose we are forced to have MUA tells us both if mail was delivered over TLS and if it has a valid DKIM signature... or act as if S2S over successful STARTTLS on port 25 and DKIM effectively do not exist. This is basically the situation with DNS over TLS, a draft right now with no deployment on DNS servers or on web browsers or mail/messaging/XMPP clients.

Maybe K-9 Mail cpuld improve the Source Code view.
An advanced user can check source code of a message. At the top of the Source Code there could be a bold green text line:
SENT OVER TLS: YES/NO
VALID DKIM: YES/ERROR/NA

I've had some Received header TLS checking code in my local repo for a while.
What I basically do is look for any none localhost connection and check it is reported in the Recipient headers as '(using TLSX with cipher ....)'. It's very marginal and it can miss cases because there's no standardisation on encoding this. For example, I've written custom regex's to match the style produced by MS and AWS.
Also any MTA in the path can modify Received headers others did or didn't add.
I've just enhanced it with a really basic form of  DKIM check (just looking for the first Authentication-Results header that has either dkim=pass or dkim=fail).
All of this is hidden in the crypto information dialog which you can access if you have a crypto provider. None of it affects the symbol that gets shown there.
Some examples
https://drive.google.com/open?id=0BxQ_FfpsOsfIbEVXUm9aUzIxNVU
https://drive.google.com/open?id=0BxQ_FfpsOsfIbkRXSzY0RXdiZWs
If you really wanted you could make it so you could tap on the icon and get the reason which typically contains the DKIM key size
There is of course lots of auth check types you could look whether MTA is doing. For example, SPF.
Really however, it's only interesting on an academic basis.
Yahoo.FR is perfectly happy to send me DKIM valid spam (which may or may not have been sent securely - the Received headers show NNFMP which may not be TLS secured).
In comparison the cryptography Mailing List ( http://www.metzdowd.com/mailman/listinfo/cryptography ) breaks DKIM when it re-distributes email because it adds the usual footer.
Amusingly while reading around DKIM I found a bad write-up on the benefits of DKIM by WikiLeaks. It's important to note that DKIM is added by the MTA, not the MUA, like PGP/MIME signatures and so it doesn't have the same guarantee.

Isn’t all that covered by sending an encrypted email for this key to the address to verify?

Yes. @ArchangeGabriel

TLS still protects metadata

Except those relays that employ fallback.

Except those relays that employ fallback.

Which is an issue as is relay that don’t support TLS at all (or use a weak TLS configuration). The number of A+ SSL grade SMTP servers is ridiculously low, and the number of not even SSL/TLS supporting ones is abnormally high. Yes.


large-v3-turbo is now supported

Faster Whisper recently added support for the new Whisper large-v3-turbo model. I tested it with the recommended environment configuration, and everything works smoothly. This model may also provide performance improvements.

For some reason it does not translate when I do --task translate and --lang=ru. Just transcribes


BVAL-528 Replace API listings by source includes

https://hibernate.atlassian.net/browse/BVAL-528

FYI, there are a couple of things I didn't replace: sometimes, we extract part of the API in a listing and I wasn't too comfortable with this. We might revisit it later though. There is a good example of this here: http://beanvalidation.org/latest-draft/spec/#boostrapping-validation .

Merged; thanks, @gsmet!


Use pactl json format

Current Situation

pactl supports --format=[text|json]
Currently parsing text output with regex

Proposed Improvement

Switch to JSON format for better parsing reliability

Additional Considerations

Move away from external libraries for PulseAudio and PipeWire interaction
Create custom library as facade for pactl interaction

Benefits

Improved maintainability
Reduced dependencies
More robust parsing

Next Steps

[x] Implement JSON parsing
[x] Design facade library structure
[x] Begin migration from external libraries

Done in #20


Get: handle "None" values properly

Fix for https://github.com/akesterson/dpath-python/issues/43

Btw travis fails on a Python 3 init, unrelated to this fix.

Sorry for the delay on this - thanks for sending the patch. I'm dealing with some local tox failures in addition to whatever Travis' problem is, but I'll get this approved & merged sometime this weekend.

I know it should be a different feature request, but could be a parameter default added? So it would not throw a KeyError.
>>> d = {'p': {'a': {'t': {'h': 'value'}}}}
>>> dpath.util.get(d, 'p/a/t/x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  [snip]
    raise KeyError(glob)
KeyError: 'p/a/t/x'
>>> dpath.util.get(d, 'p/a/t/x', default="")
''

This PR raises dpath to perfect status.... Is it going to get merged?

Merged in 10055b5343fba216f730429898021f9ce4bea5e3


Imap Folder Agent - html_part.decoded

Usecase:
An email newsletter or results of form submission being received as html.
I would like to achieve something like that, but with huginn:
html_email = (Mail.find mailbox: 'INBOX').first.html_part.decoded
html_doc = Nokogiri::HTML.parse html_email
my_desired_value = html_doc.at('/html/body/p[2]/strong[6]').text

The body part of the email, always gets emitted as pure text, when using ImapFolderAgent:
{
  "expected_update_period_in_days": "1",
  "host": "mail.temp.host.dev",
  "port": "993",
  "ssl": "true",
  "username"<EMAIL_ADDRESS>  "password": "password",
  "folders": [
    "INBOX.PARSE"
  ],
  "conditions": {
    "mime_types": [
      "text/html",
      "text/enriched",
      "text/plain"
    ]
  }
}

I would like to emit the body as html, so the next agent can parse it:
{
  "expected_update_period_in_days": "1",
  "type": "html",
  "data_from_event": "{{ body }}",
  "mode": "on_change",
  "extract": {
    "name_first": {
      "xpath": "/html/body/p[2]/strong[1]",
      "value": "string(.)"
    },
    "name_last": {
      "xpath": "/html/body/p[2]/strong[2]",
      "value": "string(.)"
    },
    "location_street": {
      "xpath": "/html/body/p[2]/strong[5]",
      "value": "string(.)"
    },
    "location_city": {
      "xpath": "/html/body/p[2]/strong[4]",
      "value": "string(.)"
    },
    "location_postcode": {
      "xpath": "/html/body/p[2]/strong[3]",
      "value": "string(.)"
    },
    "email": {
      "xpath": "/html/body/p[2]/strong[6]",
      "value": "string(.)"
    }
   }
  }
}

Is there any way to do it with huginn?

I think in theory the Agent should work like you expect it to work. Can you share a sample email in the eml format?

@dsander here you go, html_email_sample.eml
Please note, this link expires after a single view/download, didn't want to sanitize the email,so as to leave everything original, hence it contains some real email addresses.

Thank you. I used that email in the tests for the ImapFolderAgent and it created an Event with the text/html part of the email. Can you try to empty the Agents memory to ensure it processes the mails again with the current settings?

Tried everything, still getting text part only. I am using huginn from docker image, should I try with master instead?

Sorry, I should have looked at the Agent options earlier, the mime_types option needs to be at the top level:
{
  "expected_update_period_in_days": "1",
  "host": "mail.temp.host.dev",
  "port": "993",
  "ssl": "true",
  "username"<EMAIL_ADDRESS>  "password": "password",
  "folders": [
    "INBOX.PARSE"
  ],
  "conditions": {
  },
    "mime_types": [
      "text/html",
      "text/enriched",
      "text/plain"
    ]
}


[bug]  Contact Us Form Not Working Properly, Incorrect Alerts and Response Handling

Describe the bug
Issue Description:
The contact us form on the website is currently experiencing issues and providing incorrect alerts when users attempt to submit data. The problem lies in the way the response from the server is being handled.
Expected behavior
When a user submits the contact form, it should trigger a request to the server, and upon successful submission (HTTP status code 200), an appropriate success message should be displayed. If there are any errors or issues with the form submission (HTTP status codes other than 200), an error message should be shown to the user.
Current Behavior:
Currently, the contact us form is displaying success alerts based on the if (res) check after submitting the form. However, this approach is flawed as it doesn't take into account the actual status code of the response. As a result, even when the form submission fails (e.g., due to server errors, network issues, or validation problems), the success alert is displayed erroneously.
Steps to Reproduce:

Go to the website/contact page.
Fill out the contact us form with valid or invalid information.
Click the "Submit" button to send the form data to the server.

Expected Results:

If the form submission is successful (HTTP status code 200), display a success message confirming the user's message has been sent.
If there's an error with the form submission (HTTP status codes other than 200), display an appropriate error message indicating the failure.

Actual Results:

Upon clicking the "Submit" button, the system shows a success alert regardless of whether the form data was successfully submitted or not.
In case of form submission failure (HTTP status codes other than 200), the success alert is still displayed, leading to user confusion.

if (submitable) {
  try {
    const res = await fetch(
      "https://demo-sampark.asia-southeast1.firebasedatabase.app",
      {
        method: "POST",
        body: JSON.stringify({
          email,
          name,
          message,
        }),
      }
    );

    if (res) {
      setUserData({
        email: "",
        name: "",
        message: "",
      });
      alert("Data Stored");
    } else {
      alert("Error occurred while storing data");
    }
  } catch (error) {
    alert("An error occurred while sending your message. Please check your internet connection and try again.");
  }
} else {
  alert("Please fill valid fields.");
}

BUT IT SHOULD CHECK FOR RES.STATUS==200
Screenshots
VIDEO
https://github.com/Gaurav-Verma07/sampark/assets/85815172/a88d5791-58b8-4d37-8f12-89c54275ea29
Additional context
Add any other context about the problem here.
@Gaurav-Verma07 ,please assign me this issue

@Gaurav-Verma07 ,please assign me this issue


How to style toolbar with smaller icons

Summary
With Toast UI Editor v3, the toolbar icons are much bigger than previously. Changing certain styles may help a bit, but it seems the image used for toolbar buttons is bigger than in v2.
Is there any simple way to reduce this new toolbar size, without adding custom buttons for each standard functions (bold, italic, etc.)?
Screenshots
v3 toolbar style
v2 toolbar style
Version
v3

Unfortunately, it is not possible at the moment. The icons are a base64 map and each icon is represented by coordinates on this map.

@tafel
We created custom toolbar item because we cannot accommodate all of these requirements.
That is the best way forward.

@tafel
We created custom toolbar item because we cannot accommodate all of these requirements.
That is the best way forward.

Ok, no problem, custom toolbar elements with font-awesome will be enough for me. Thanks.


Begin a new line during a long text field input

Is there a feature to support automatically moving the active text field to a new line once the text field input is wider than the maximum available width remaining in the current line? (Just like the behavior in iOS Messages/Mail App)
Now the textfield will make horizontal scrolling on long content.
If not can this feature be supported in the future release? Thanks for the information.

Hi, I forked the repo and I'm watching on this enhancement.

Related to #77


Directory permissions issue on Windows

We are able to upload files to our s3 bucket from a machine running OSX, but running the same code on a Windows 7 machine results in the following error:

For some reason, it appears that the Windows machine has issues accessing the intermediate directory that skipper-s3 makes when a dirname is specified. If we remove the dirname property, the file is uploaded with no issues.
We use the following code to upload:
req.file('receipt').upload({
               adapter: require('skipper-s3'),
               key: 'XXXXXXXXX',
               secret: 'XXXXXXXX',
               bucket: 'someBucket',
               region: "us-east-1",
               dirname: 'someDirectory'
           }

@Maowse  Did you happen to find a solution for this? My current thought is that I'll have to compute my own filename hash and pass a function to saveAs so that I can specify an S3 directory.

No, unfortunately. I believe we just ended up using a base bucket for now.


Fix cannot find -lplayready error

It looks that playready library was passed twice to the linker:
a) /home/dwrobel/projects/webkit/WebPlatformForEmbedded-2.22/2/_install/usr/lib/libplayready.so
b) -lplayready
b) causes error without appropriate -L option, so fix the FindPlayReady.cmake to provide it correctly.
Fixes the following error:
/usr/lib64/ccache/c++ -fPIC -ggdb -gdwarf-4 -gsplit-dwarf -fvar-tracking -O0 -fno-omit-frame-pointer -DDEBUG -pipe  -Wno-class-memaccess -Woverloaded-virtual -I/home/dwrobel/projects/webkit/WebPlatformForEmbedded-2.22/2/_install/usr/include -g  -shared -Wl,-soname,Playready.drm -o Playready.drm CMakeFiles/Playready.dir/MediaSession.cpp.o CMakeFiles/Playready.dir/MediaSystem.cpp.o CMakeFiles/Playready.dir/MediaSessionExt.cpp.o -Wl,-rpath,/home/dwrobel/projects/webkit/WebPlatformForEmbedded-2.22/2/_install/usr/lib: /home/dwrobel/projects/webkit/WebPlatformForEmbedded-2.22/2/_install/usr/lib/libplayready.so -lplayready
/usr/bin/ld: cannot find -lplayready
collect2: error: ld returned 1 exit status

Where is the linking with libplayready.so being done this way?

That works to me only because I didn't delete the cmake build directly. Current version was checked using scratch build.

@bramoosterhuis oke to merge now ?


Special workspace focus issues when misc:initial_workspace_tracking is enabled

Hyprland Version
 System/Version info
Hyprland, built from branch main at commit d119513749daf47b9061258a1974b34111ab8bb5  (renderer: fix safety around sendFrameEventsToWorkspace).
Date: Tue Apr 23 17:15:37 2024
Tag: v0.39.1-61-gd1195137, commits: 4521

flags: (if any)

System Information:
System name: Linux
Node name: eryth
Release: 6.8.7-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Wed, 17 Apr 2024 15:20:00 +0000

GPU information:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] [10de:1f91] (rev a1) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:
  hyprexpo by Vaxry ver 1.0

Bug or Regression?
Bug
Description
As seen bellow, special workspace doesn't get initial focus when new windows are created until cursor is moved, and if try to spawn new windows on special workspace they'll spawn on the previous ws instead, but when trying to close the newly created window, the one on the special workspace gets closed instead.

I can still reproduce the initial focus on the just-spawned foot for the special workspace issue, however.

The focus on latest spawned window behaviour is intended I believe as it has been the case for as long as I have used Hyprland

Do you mean if you spawn a window in special then it brings up special? That makes sense.
Thanks for the fix to the Agent! I've definitely ran into this before.

No, I meant like, i toggle special workspace, foot is spawned, but it is not focused, like in the start of the video. Only happens on the first focus tho, to have it happen again I have to close foot and have the workspace rule spawn another one.

That's also been the default behaviour for a while. You keep focus on the workspace under the special workspace until you either: move your mouse or spawn a window on the special workspace

Yes, but I have a workspace rule to spawn foot if special is empty, with misc:initial_workspace_tracking disabled then foot on the special workspace is focused as soon as it's spawned, but if misc:initial_workspace_tracking is disabled then the workspace under loses focus, but also the foot on special loses focus, so none of the windows are focused until I either move my mouse or spawn a new window.
I can provide a video if necessary, just need to tweak my configs to make it more noticeable.

Ok, seems like that's a workspace rule clashing with the token spawn system.
 Token behaviour for 'on-created-empty:foot' workspace rule
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 5fdb1151-c16d-42d2-b998-e693896d76cd
[LOG] HL_INITIAL_WORKSPACE_TOKEN 5fdb1151-c16d-42d2-b998-e693896d76cd -> 2
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: a08d4699-9d02-4b7e-83b0-7dd7aa4732d8
[LOG] HL_INITIAL_WORKSPACE_TOKEN a08d4699-9d02-4b7e-83b0-7dd7aa4732d8 -> 2
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 75dd4616-678f-42a6-b935-e5db90831794
[LOG] HL_INITIAL_WORKSPACE_TOKEN 75dd4616-678f-42a6-b935-e5db90831794 -> 2
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: dde5772c-58c4-4b24-a5bd-e2486d3d36df
[LOG] HL_INITIAL_WORKSPACE_TOKEN dde5772c-58c4-4b24-a5bd-e2486d3d36df -> 2
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 2c239782-e1b5-4566-8b2d-a87f826ff67c
[LOG] HL_INITIAL_WORKSPACE_TOKEN 2c239782-e1b5-4566-8b2d-a87f826ff67c -> 2
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 7c82ad21-4f4b-4f30-a034-4df9810be0d6
[LOG] HL_INITIAL_WORKSPACE_TOKEN 7c82ad21-4f4b-4f30-a034-4df9810be0d6 -> 2

 Token behaviour for manual spawn (with #5729)
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: dd38cccb-4005-4dd7-8496-3a38f1117dbe
[LOG] HL_INITIAL_WORKSPACE_TOKEN dd38cccb-4005-4dd7-8496-3a38f1117dbe -> special:scratchpad
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 4134bf1f-1df1-4e75-9189-adbbbe77d3bf
[LOG] HL_INITIAL_WORKSPACE_TOKEN 4134bf1f-1df1-4e75-9189-adbbbe77d3bf -> special:scratchpad
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 1445b336-a8a8-437d-85d2-1f75cd7e8c58
[LOG] HL_INITIAL_WORKSPACE_TOKEN 1445b336-a8a8-437d-85d2-1f75cd7e8c58 -> special:scratchpad

This issue is still happening for me. I haven't defined misc:initial_workspace_tracking so it's set to the default (1). The bug doesn't occur with it set to 0.


react-router and history api incompatibility

I'm getting this error in my packaged app on Windows 7 x64 at Router.js?cf42:111:
Uncaught TypeError: Cannot read property 'getCurrentLocation' of undefined
The code on that line is:
!history.getCurrentLocation ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v2.x or ' + 'earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please upgrade to history v3.x.') : (0, _invariant2.default)(false) : void 0;
Amila, since I suspect you'll be the first one here, thank you very much for your time in advance.

Try making the following change:
https://github.com/chentsulin/electron-react-boilerplate/blob/master/webpack.config.development.js#L18
And see what the new error messages are.

Ah actually I had already tried that. Same error unfortunately. I'm on build commit a5382241a1fe40099289c73a96b6435c0c319847.
Sorry, not sure if there's a better way to reference that.

Hmm. What code do you have in Router.js?

Sorry I should have included that from the get go.

Seems like its related to this. We might need to provide an upgrade.
Try this:

Please upgrade to history v3.x

Unfortunately didn't help, but that's a nice tool to know about.

I am getting same error with react-router 3.0.0. Slapbox, did you manage to fix this?

No I didn't unfortunately. It's been a major roadblock for me.

I've done a fresh clone and reinstalled dependencies and can't seem to reproduce the issue. @Slapbox have you tried a fresh clone?

@Slapbox @utsavig update react-router-redux to v4.0.7 should fix this.

Unfortunately that's the version I'm using and my routes and store setups are virtually identical to the versions in the repo. I have matched all my packages to the versions in the repo, and also tried the latest versions of all the packages, but the same error always.

Did you try https://github.com/chentsulin/electron-react-boilerplate/issues/542#issuecomment-261794414

@Slapbox what is the version of your node_modules/history? history.getCurrentLocation only exists between v3.0.0-0 ~ v4.0.0-2.
3.0.0-0
Added history.getCurrentLocation() method
https://github.com/mjackson/history/blob/master/CHANGES.md#300-0
v4.0.0-2
Removed history.getCurrentLocation()
https://github.com/mjackson/history/blob/master/CHANGES.md#v400-2

Cannot read property 'getCurrentLocation' of undefined error message pointed out that history is undefined in Router's props: https://github.com/ReactTraining/react-router/blob/master/modules/Router.js#L75
You should check your passed history correctly to Router (maybe you can log history before pass it to Router):
https://github.com/chentsulin/electron-react-boilerplate/blob/master/app/index.js#L16

I managed to fix the error.  I hadn't defined "history" attribute on the  tag. My Routes looked
something like

as soon as I defined "history" attribute error was gone.  Following is what my current code looks like and works without any errors. (I am still using react-router 3.0.0)
var ReactRouter = require('react-router');
var hashHistory = ReactRouter.hashHistory;

Note that react-router v3 no longer use hash history as default (v2 with warning), so you must pass history in.

I was really hopeful in that solution, but unfortunately I have the same error here. The weirdest thing is that hashHistory is actually coming up defined and I'm passing it, but I still get the same results.

It's difficult to help you if we didn't get a reproduce example here. Your app implement history in a entire different way. We pass history to router here: https://github.com/chentsulin/electron-react-boilerplate/blob/master/app/index.js#L16-Lundefined
and link it to redux: https://github.com/chentsulin/electron-react-boilerplate/blob/master/app/store/configureStore.development.js#L20

Thanks a lot for that info chentsulin! I'll try to implement it in a way that's in line with what you showed me above and report back if it still doesn't work in that configuration.

Okay so it turns out I was passing history that was the whole time, and it is version 3.0.0. So I restored my code to only pass history in this way and here's my code. It's slightly different, in that it passes in a saved state to configureStore, so I use functions and promises, but the structure is essentially the same. I also tried packaging a version where I don't pass in my saved state, and I get the same result.
// @flow
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import storage from 'electron-json-storage';
import { Router, hashHistory } from 'react-router';
import { syncHistoryWithStore } from 'react-router-redux';
import axios from 'axios';

import * as appUtils from './utils/functions';
import configureStore from './store/configureStore';
import routes from './routes';
import './app.css';
var CryptoJS = require("crypto-js");

let appState;
let stateKeyPresent;
let createStore;
var history;
let userEmail;

function createStoreFunction() {
	debugger;
	console.log(hashHistory);
	createStore = configureStore(appState);
	history = syncHistoryWithStore(hashHistory, createStore);
}

function createProvider() {
	debugger;
	render(
	  <Provider store={createStore}>
	    <Router history={history} routes={routes} />
	  </Provider>,
	  document.getElementById('root')
	);
}

storage.keys(function(err, keys) {

	if (err) throw err;
	//	Check for 'state' key in electron-json-storage
	for (var i = 0; i < keys.length; i++) {
		if (keys[i] === 'state') {
			stateKeyPresent = keys[i];
		}
	}

	//	Parse state from json file
	storage.get('state', function(err, data) {
		appState = JSON.parse(data);
	});

	var promise = new Promise((resolve, reject) => {
		createStoreFunction();
  	resolve();
  });

	promise.then(function() {
		createProvider()
	});
});

Please consider reopening.
Based on the code I have here, I see no substantial differences from the implementation in the repo.
Even when passing in no state to the store creator as the repo version does, I get the same issues.

If the fresh clone method did work for you, the problem with the code is not with the boilerplate. Our tests also end to end tests arent failing so that means that it should work on both windows and mac without any errors regarding the router.


This sample doesn't work

I can run the page, but it doesn't show any changes when a selection is made.
Specifically the sample for callbacks - the page is called dynamiccomponent-example-3

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 36513a62-bad8-c724-c8e5-2d3aad7913ec
Version Independent ID: 3cefd835-d898-6486-607e-01f42ebb4b6e
Content: Dynamically-rendered ASP.NET Core Razor components
Content Source: aspnetcore/blazor/components/dynamiccomponent.md
Product: aspnet-core
Technology: aspnetcore-blazor
GitHub Login: @guardrex
Microsoft Alias: riande

Fixed.

Hello @AlanFitzgeraldVSolvit ... I think I'll make that remark about the namespace more noticeable. Also, I'd like to add a code comment on this one to the example. We often avoid code comments because machine translation of the docs into other languages doesn't translate comments in code. However, this example has the namespace buried quite far down into the code. A quick remark there should help.
Leave this issue open. It will close automatically when my PR merges later.
Thanks for the issue! 🚀


Clean install on Windows 11 fails, using latest node-sass (v7.0.2) - latest as of today 8/Sep/2022

Windows 11

node -v
v14.20.0
npm -v
6.14.17

Steps to repo repro:
create new folder c:\test
cd test
npm init -y
npm install node-sass
C:\test>npm install node-sass

<EMAIL_ADDRESS>install C:\test\node_modules\node-sass
node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v7.0.2/win32-x64-83_binding.node
Download complete
Binary saved to C:\test\node_modules\node-sass\vendor\win32-x64-83\binding.node
Caching binary to C:\Users\cindi.rella\AppData\Roaming\npm-cache\node-sass\7.0.2\win32-x64-83_binding.node

<EMAIL_ADDRESS>postinstall C:\test\node_modules\node-sass
node scripts/build.js

Binary found at C:\test\node_modules\node-sass\vendor\win32-x64-83\binding.node
Testing binary
Binary has a problem: Error: \?\C:\test\node_modules\node-sass\vendor\win32-x64-83\binding.node is not a valid Win32 application.
\?\C:\test\node_modules\node-sass\vendor\win32-x64-83\binding.node
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1144:18)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:101:18)
at module.exports (C:\test\node_modules\node-sass\lib\binding.js:19:10)
at Object. (C:\test\node_modules\node-sass\lib\index.js:13:35)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32) {
code: 'ERR_DLOPEN_FAILED'
}
Building the binary locally
Building: C:\Program Files\nodejs\node.exe C:\test\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   'C:\Program Files\nodejs\node.exe',
gyp verb cli   'C:\test\node_modules\node-gyp\bin\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb find Python Python is not set from command line or npm configuration
gyp verb find Python Python is not set from environment variable PYTHON
gyp verb find Python checking if "python3" can be used
gyp verb find Python - executing "python3" to get executable path
gyp verb find Python - "python3" is not in PATH or produced an error
gyp verb find Python checking if "python" can be used
gyp verb find Python - executing "python" to get executable path
gyp verb find Python - "python" is not in PATH or produced an error
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python39\python.exe
gyp verb find Python - executing "C:\Program Files\Python39\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python39\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39-32\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39-32\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python39-32\python.exe
gyp verb find Python - executing "C:\Program Files\Python39-32\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python39-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files (x86)\Python39-32\python.exe
gyp verb find Python - executing "C:\Program Files (x86)\Python39-32\python.exe" to get version
gyp verb find Python - "C:\Program Files (x86)\Python39-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python38\python.exe
gyp verb find Python - executing "C:\Program Files\Python38\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python38\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38-32\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38-32\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python38-32\python.exe
gyp verb find Python - executing "C:\Program Files\Python38-32\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python38-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files (x86)\Python38-32\python.exe
gyp verb find Python - executing "C:\Program Files (x86)\Python38-32\python.exe" to get version
gyp verb find Python - "C:\Program Files (x86)\Python38-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python37\python.exe
gyp verb find Python - executing "C:\Program Files\Python37\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python37\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37-32\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37-32\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python37-32\python.exe
gyp verb find Python - executing "C:\Program Files\Python37-32\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python37-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files (x86)\Python37-32\python.exe
gyp verb find Python - executing "C:\Program Files (x86)\Python37-32\python.exe" to get version
gyp verb find Python - "C:\Program Files (x86)\Python37-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python36\python.exe
gyp verb find Python - executing "C:\Program Files\Python36\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python36\python.exe" could not be run
gyp verb find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36-32\python.exe
gyp verb find Python - executing "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36-32\python.exe" to get version
gyp verb find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files\Python36-32\python.exe
gyp verb find Python - executing "C:\Program Files\Python36-32\python.exe" to get version
gyp verb find Python - "C:\Program Files\Python36-32\python.exe" could not be run
gyp verb find Python checking if Python is C:\Program Files (x86)\Python36-32\python.exe
gyp verb find Python - executing "C:\Program Files (x86)\Python36-32\python.exe" to get version
gyp verb find Python - "C:\Program Files (x86)\Python36-32\python.exe" could not be run
gyp verb find Python checking if the py launcher can be used to find Python 3
gyp verb find Python - executing "py.exe" to get Python 3 executable path
gyp verb find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python39\python.exe
gyp ERR! find Python - "C:\Program Files\Python39\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39-32\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python39-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python39-32\python.exe
gyp ERR! find Python - "C:\Program Files\Python39-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files (x86)\Python39-32\python.exe
gyp ERR! find Python - "C:\Program Files (x86)\Python39-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python38\python.exe
gyp ERR! find Python - "C:\Program Files\Python38\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38-32\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python38-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python38-32\python.exe
gyp ERR! find Python - "C:\Program Files\Python38-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files (x86)\Python38-32\python.exe
gyp ERR! find Python - "C:\Program Files (x86)\Python38-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python37\python.exe
gyp ERR! find Python - "C:\Program Files\Python37\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37-32\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python37-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python37-32\python.exe
gyp ERR! find Python - "C:\Program Files\Python37-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files (x86)\Python37-32\python.exe
gyp ERR! find Python - "C:\Program Files (x86)\Python37-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python36\python.exe
gyp ERR! find Python - "C:\Program Files\Python36\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36-32\python.exe
gyp ERR! find Python - "C:\Users\cindi.rella\AppData\Local\Programs\Python\Python36-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files\Python36-32\python.exe
gyp ERR! find Python - "C:\Program Files\Python36-32\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Program Files (x86)\Python36-32\python.exe
gyp ERR! find Python - "C:\Program Files (x86)\Python36-32\python.exe" could not be run
gyp ERR! find Python checking if the py launcher can be used to find Python 3
gyp ERR! find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (C:\test\node_modules\node-gyp\lib\find-python.js:330:47)
gyp ERR! stack     at PythonFinder.runChecks (C:\test\node_modules\node-gyp\lib\find-python.js:159:21)
gyp ERR! stack     at PythonFinder.  System Windows_NT 10.0.22000
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\test\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\test\node_modules\node-sass
gyp ERR! node -v v14.20.0
gyp ERR! node-gyp -v v9.1.0
gyp ERR! not ok
Build failed with error code: 1
npm WARN<EMAIL_ADDRESS>No description
npm WARN<EMAIL_ADDRESS>No repository field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: node scripts/build.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\cindi.rella\AppData\Roaming\npm-cache_logs\2022-09-08T07_41_23_128Z-debug.log
C:\test>
Where the errors are:
I can verify it is failing in 2 locations::
Downloading binary from https://github.com/sass/node-sass/releases/download/v7.0.2/win32-x64-83_binding.node
Download complete
Binary saved to C:\test\node_modules\node-sass\vendor\win32-x64-83\binding.node
NO LIAR, there is no node-sass folder created inside C:\test\node_modules
Caching binary to C:\Users\cindi.rella\AppData\Roaming\npm-cache\node-sass\7.0.2\win32-x64-83_binding.node
NO LIAR, the file at that location is created with 0 bytes.

I re-tested after the patched upgrade to 7.0.3,  it installed smoothly.
Thank you kindly @xzyfer 👍


✅(frontend) separate test that takes screenshot from others

Purpose
This is an attempt to get more stable tests.
Proposal

[x] separate test with screenshots from others
[x] increase jest timeout for a long test

This is what I suggest:

you can keep the new added jest command in the package.json.
you can remove all screenshots that are not SVG but be sure that a test is covering what the screenshot was doing.
Keep the syntax you introduce with [screenshot] in the title

@lunika @roro-lv this PR is ready for review.


Card component minor updates

Closes https://sce.myjetbrains.com/youtrack/issue/TD-1065/Create-new-Metadata-card-in-react-ui-part-2

updated File card title to be accessible from other apps
updated summary Card width and height types
updated image size in FileCard

LGTM. I'll leave it with you to merge it and release it.


Remove guests, add polymorphic relations for likes and comments

Lots of changes, the main ones are:

Remove guests, and everything (I hope so) related to them
Remake likes table, adding polymorphic relations (now anything can be likeable and anything can give likes)
Remake comments table, adding polymorphic relations
Make comments likeable

Some controllers were refactored and some routes too.
I added a text_area on commets/_comment so that users can make comments, also reused the like button and delete button (for liking and deleting a comment). These things need to be remade in the front-end.

nice :´)
If an idea could die, this would be the funeral of the "guests"


private email visual bug

add a line break between the Product Description text and the License Plate header

We don't show License Plate in Private Cloud emails. But we do in the Public Cloud emails.
It is fixed for Public Cloud emails.

I added two tasks: one about adding license plate to the Private Cloud emails as it is the most universal ID of the product throughout the whole system; second about adding the gap between Product Name and Product Description, in case a product has a long name.


Cannot read properties of undefined (reading 'value') on gql compile or push

How did you install the Amplify CLI?
No response
If applicable, what version of Node.js are you using?
No response
Amplify CLI Version
12.5.2
What operating system are you using?
Mac
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No
Describe the bug
type Users @model @auth(rules: [{ allow: public }]) {
  id: [ID!]!
  email: AWSEmail
}

if you create a model on CLI or studio with id: [ID!]! the push or gql-compile will fail with Cannot read properties of undefined (reading 'value'), which does not provide useful message.
Expected behavior
throw appropriate error
Reproduction steps

Create schema with the model provded
run gql-compile or push

Project Identifier
No response
Log output

# Put your logs below this line

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

I can reproduce this issue by following the instructions provided in the description. Hence, marking this as bug for the team to evaluate further.

It looks like this is also a generic message for improperly formed relationships, e.g., if you meant to write  entities: [Entity!]! @hasMany but you ended up writing  entities : String! @hasMany. Assume you have an Entity`` type, and this is another type, say,  Validations``` You get the same unhelpful error message.


transport options are not processed when configure in the options

In the factory, the options array is ignored so it's not possible to use it to specify options instead of in the dsn.
For example:
my_queue:
  dsn: 'test://'
     options:
        queue_name: low
        disable_retries: false

or
$messengerConfig->transport('my_queue')
  ->dsn('test://')
    ->options([
       'queue_name' => 'low',
       'disabled_retries' => false,
    ])

Is there any possible problem to merge options with the parsed options from dsn to allow to use the array syntax ?
I am willing to make a pull-request, if you think it's pertinent.
Thanks !

Hi!
I think it is pertinent, since it mimics best what's happening in messenger.
from the docs:

Options defined under options take precedence over ones defined in the DSN.

I think this should be respected in the implementation.

I am willing to make a pull-request, if you think it's pertinent.

Cool, thanks! go ahead! :blush:


Hianime extension not working

Source information
HiAnime 14.47
Source language
English
Steps to reproduce

Open any anime from hianime (for eg. One piece)
It says video list empty

Expected behavior
It should play video
Actual behavior
Any resources from hianime says "video list empty"

Aniyomi version
Version <IP_ADDRESS>-8019 xyz.jmir.tachiyomi.mi.debug
Android version
Android 14
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

I'm having the exact same issue with the HiAnime extension

I'm having the exact same issue with the HiAnime extension

Yes, some anime working but some r not...for eg one piece not working but death note working.
Someone from discord of kohi den server says me,
"the sites video providers, megacloud have made changes recently and the extension cannot access it, something to do with how the extension sends/receives the video data.
Hianime site itself also changed their encryption keys.
Currently, there is nothing that can be done until:

someone gets those new keys
figure out how megaclouds new changes actually work. "


htmlgen broken with tilegrid.json location change

Loading tilegrid.
Traceback (most recent call last):
  File "/tmp/tmp.5JJ3N7HyOv/prjxray/htmlgen/htmlgen.py", line 1013, in <module>
    main()
  File "/tmp/tmp.5JJ3N7HyOv/prjxray/htmlgen/htmlgen.py", line 1008, in main
    allow_fake=args.allow_fake,
  File "/tmp/tmp.5JJ3N7HyOv/prjxray/htmlgen/htmlgen.py", line 972, in run
    grid = load_tilegrid(db_dir, verbose=verbose, allow_fake=allow_fake)
  File "/tmp/tmp.5JJ3N7HyOv/prjxray/htmlgen/htmlgen.py", line 233, in load_tilegrid
    assert allow_fake, 'No tilegrid.json found'
AssertionError: No tilegrid.json found
The command "./.travis/generate-html.sh" exited with 1.

https://travis-ci.com/SymbiFlow/prjxray-db/builds/148715630

Hrm - I thought I fixed this in https://github.com/SymbiFlow/prjxray/commit/adc297a560950c403c984cd488bfa1e8e4eceb0b has it moved yet again?

@mithro I know what the issue is. The Travis build script tries to generate the html for each settings. Being the artix200t.sh setting already there, it tries to generate the html for it, but the tilegrid is not present actually, until https://github.com/SymbiFlow/prjxray/pull/1227 gets merged

@mithro Fix here: https://github.com/SymbiFlow/prjxray/pull/1233

Traceback (most recent call last):
  File "/tmp/tmp.BVba6Gau4q/prjxray/htmlgen/htmlgen.py", line 1018, in <module>
    main()
  File "/tmp/tmp.BVba6Gau4q/prjxray/htmlgen/htmlgen.py", line 993, in main
    os.path.curdir, 'html', get_setting('XRAY_DATABASE')),
  File "/home/travis/virtualenv/python3.6.7/lib/python3.6/posixpath.py", line 94, in join
    genericpath._check_arg_types('join', a, *p)
  File "/home/travis/virtualenv/python3.6.7/lib/python3.6/genericpath.py", line 149, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'
The command "./.travis/generate-html.sh" exited with 1.

https://travis-ci.com/github/SymbiFlow/prjxray-db

@mithro is this still an issue, or can this be closed?

@mithro is this still an issue, or can this be closed?

The last link shows htmlgen is still broken but possibly for different reasons;
Generating for artix7_200t
--------------------------------------------
settings.sh 01881ed8cf11dcd733ef34d904d2aa96bdb77632f7060f67a6daff7af44ec481  /tmp/tmp.kHu5ag7Mxt/prjxray/settings/artix7_200t.sh
# Copyright (C) 2017-2020  The Project X-Ray Authors.
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC
export XRAY_DATABASE="artix7"
export XRAY_PART="xc7a200tffg1156-1"
export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# All CLB's in part, all BRAM's in part, all DSP's in part.
# tcl queries IOB => don't bother adding
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X163Y249 RAMB18_X0Y0:RAMB18_X8Y99 RAMB36_X0Y0:RAMB36_X8Y49 DSP48_X0Y0:DSP48_X8Y99 IOB_X0Y0:IOB_X1Y249"
export XRAY_EXCLUDE_ROI_TILEGRID=""
# This is used by fuzzers/005-tilegrid/generate_full.py
# (special handling for frame addresses of certain IOIs -- see the script for details).
# This needs to be changed for any new device!
# If you have a FASM mismatch or unknown bits in IOIs, CHECK THIS FIRST.
export XRAY_IOI3_TILES="RIOI3_X105Y9 LIOI3_X0Y9"
source $(dirname ${BASH_SOURCE[0]})/../utils/environment.sh
eval $(python3 ${XRAY_UTILS_DIR}/create_environment.py)
--------------------------------------------
Traceback (most recent call last):
  File "/tmp/tmp.kHu5ag7Mxt/prjxray/htmlgen/htmlgen.py", line 17, in <module>
    from prjxray.util import get_fabric_for_part
ModuleNotFoundError: No module named 'prjxray'
The command "./.travis/generate-html.sh" exited with 1.

The last link shows htmlgen is still broken but possibly for different reasons;
Generating for artix7_200t
--------------------------------------------
settings.sh 01881ed8cf11dcd733ef34d904d2aa96bdb77632f7060f67a6daff7af44ec481  /tmp/tmp.kHu5ag7Mxt/prjxray/settings/artix7_200t.sh
# Copyright (C) 2017-2020  The Project X-Ray Authors.
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC
export XRAY_DATABASE="artix7"
export XRAY_PART="xc7a200tffg1156-1"
export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# All CLB's in part, all BRAM's in part, all DSP's in part.
# tcl queries IOB => don't bother adding
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X163Y249 RAMB18_X0Y0:RAMB18_X8Y99 RAMB36_X0Y0:RAMB36_X8Y49 DSP48_X0Y0:DSP48_X8Y99 IOB_X0Y0:IOB_X1Y249"
export XRAY_EXCLUDE_ROI_TILEGRID=""
# This is used by fuzzers/005-tilegrid/generate_full.py
# (special handling for frame addresses of certain IOIs -- see the script for details).
# This needs to be changed for any new device!
# If you have a FASM mismatch or unknown bits in IOIs, CHECK THIS FIRST.
export XRAY_IOI3_TILES="RIOI3_X105Y9 LIOI3_X0Y9"
source $(dirname ${BASH_SOURCE[0]})/../utils/environment.sh
eval $(python3 ${XRAY_UTILS_DIR}/create_environment.py)
--------------------------------------------
Traceback (most recent call last):
  File "/tmp/tmp.kHu5ag7Mxt/prjxray/htmlgen/htmlgen.py", line 17, in <module>
    from prjxray.util import get_fabric_for_part
ModuleNotFoundError: No module named 'prjxray'
The command "./.travis/generate-html.sh" exited with 1.


TCo DART data inclusion

Integrate option to run with AWI-CM-3 TCo319 or TCo1279 data, kept functionality to still run with AWI-CM-1.
TCo data still has to be included in download folder on dkrz

test/test_climate_functions.py (def test_climate_data) should be updated according to changes here

I wasn't able to check the other models, but as long as it does not break AWI-CM I merge it. We have to have another PR with tests of other data.


add Visual Studio 2019, drop Visual Studio 2015

Now that Chez Scheme v9.5.4 and libuv support Visual Studio 2019, it's time to upgrade. We still support Visual Studio 2017 because that's what the Travis-CI system uses on Windows.

Automated testing passed: https://travis-ci.org/github/burgerrg/swish/builds/729431365


Nette Utils v3 support

Hello,
I am trying new Nette release v3 and I am getting a conflict with Utils & Finder packages pinned to v2.
As far as I looked into the code of ECS, I did not find any method which should be in conflict (BC break), so it should be safe to allow something like this "nette/utils": "^2.5 || ~3.0".
Thank you for your work!

Hi, could you send PR? Test will tell.
Also, use ^ only, as it's convention here.


Improve setup of temporary local repository

This comes as feedback by @roberth  that the temporary local repository should use the global local repository as an additional remote repository.
The SHA256 is also calculated from the local file rather than downloading it from the remote repository.
Overall much less network bandwidth for subsequent builds.
Here is an example of the output of maven-invoker that demonstrates it downloading it from my local repository.
2020-08-24 14:54:48,371 [Thread-1] INFO : [INFO] Downloading from local.central: file:///home/fmzakari/.m2/repository/info/picocli/picocli-codegen/4.5.0/picocli-codegen-4.5.0.jar
2020-08-24 14:54:48,373 [Thread-1] INFO : [INFO] Downloaded from local.central: file:///home/fmzakari/.m2/repository/info/picocli/picocli-codegen/4.5.0/picocli-codegen-4.5.0.jar (128 kB at 43 MB/s)
2020-08-24 14:54:48,377 [Thread-1] INFO : [INFO] Downloading from local.central: file:///home/fmzakari/.m2/repository/info/picocli/picocli-codegen/4.5.0/picocli-codegen-4.5.0.pom
2020-08-24 14:54:48,379 [Thread-1] INFO : [INFO] Downloaded from local.central: file:///home/fmzakari/.m2/repository/info/picocli/picocli-codegen/4.5.0/picocli-codegen-4.5.0.pom (1.9 kB at 1.9 MB/s)

Fixes #13

@DerGuteMoritz @roberth tag.

Just gave it a try, works like a charm :ok_hand: Runtime is down from 63s to 14s on my test project :rocket:

Just gave it a try, works like a charm  Runtime is down from 63s to 14s on my test project

Sweet -- I might commit then.


Feature: Enable using logged in account for broker

This adds a new method to InteractiveBrowserBrokerCredentialBuilder to enable using the logged in account for WAM broker scenarios. By default the broker UI will be shown.

API change check
API changes are not detected in this pull request.


I can not create prometheus pod

I downloaded the new release version (0.31.0) of prometheus operator
And then I run 'kubeclt create -f bundle.yaml' . Everything is OK and the operator can run without any error.
I use the yaml file in /example/user-guides/getting-started/ for testing.
I can run the deployment, serivce and servicemonitor about the example app.
After that  I run 'kubeclt create -f  prometheus.yaml'
I can use 'kubectl get prometheus' to see the promethus , but I can not find any pod about the prometheus.
My kubernetes is 1.13. Can you help me? Thank you.

Follwoing show the result about "kubectl describe prometheus prometheus"
Name:         prometheus
Namespace:    default
Labels:
Annotations:
API Version:  monitoring.coreos.com/v1
Kind:         Prometheus
Metadata:
Creation Timestamp:  2019-06-14T03:24:12Z
Generation:          1
Resource Version:    28466860
Self Link:           /apis/monitoring.coreos.com/v1/namespaces/default/prometheuses/prometheus
UID:                 e1643de1-8e53-11e9-b882-101a4a160164
Spec:
Enable Admin API:  false
Resources:
Requests:
Memory:            400Mi
Service Account Name:  prometheus
Service Monitor Selector:
Match Labels:
Team:  frontend
Events:


Support Python 3.2 and Python 3.3

The tests fail against these two releases.

CPython 3.2 reached end of life on 2016-02-27 and 3.3 will on 2017-09-29.
https://en.wikipedia.org/wiki/CPython#Version_history


OpenAiRestApiJacksonProvider affecting non extension clients

Ok, so I'm quite new to Quarkus and figuring things out. But after adding the extension to my projects. Other clients in my project weren't properly deserializing anymore because the extension 'forced' to use the OpenAiRestApiJacksonProvider. I'm currently searching for a way to work around this issue. But preferably of course the extension only affects the clients of the extension.

Very interesting.
Any chance you can attach a sample project that shows this problem?

https://github.com/quarkiverse/quarkus-langchain4j/pull/165 should fix it

Wow. You are fast! Thanks.

Unfortunately CI is complaining, so I'll have to take a closer look on Monday.

See https://github.com/quarkiverse/quarkus-langchain4j/pull/165#issuecomment-1858871062.
This means that it will take a few days to get a new release out with the fix

Thanks. Did a quick check, and this indeed fixed the issue.

Thanks for checking!


enabled hdocs/hsdev

It now builds with ghc-8.0.2
https://travis-ci.org/mvoidex/hsdev/jobs/222577480

text-region-<IP_ADDRESS> is out of bounds for:

[ ] hsdev-<IP_ADDRESS> (==0.1.*). Alexandr Ruchkin<EMAIL_ADDRESS>@mvoidex. @mvoidex. Used by: library

I've re-disabled hsdev; can you update it to work with text-region 0.2?

Uploaded hsdev-<IP_ADDRESS>


tree-wide: Remove unsupported dontCheck attribute

Description of changes
Remove unsupported dontCheck attribute (for context see this comment on #293498).
ℹ Since python3Module.gpt-2-simple is broken on aarch64-darwin I was not able to test it locally; yet the GitHub tests indicate that the changes proposed in this PR do not affect it negatively.

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

I  believe this is a serious inconsistency in Nixpkgs.
Remembering if we should set doPhase instead of dontPhase is a bit silly.

In your mind should both be supported, e.g. one being a "negating alias" of the other?

In my mind only the doPhase should be supported, in order to avoid (more) confusion.
But, in the name of backwards compatibility, your idea of "negating alias" is good.

If doCheck and dontCheck are both supported and dontCheck is a "negating alias" of doCheck, should doCheck take precedence over dontCheck if both are present in a derivation?

Reading through make-derivation.nix I see this TODO-comment that hints at doCheck being old semantics. Do you have any context on this you could share, @AndersonTorres? I'm wondering what the "new semantics" might be…

I have few to nil idea.  It was introduced at this commit below:
https://github.com/NixOS/nixpkgs/pull/134463/commits/b4cc2a2479a7ab0f6440b2e1319221920ef72699
https://github.com/NixOS/nixpkgs/commit/b4cc2a2479a7ab0f6440b2e1319221920ef72699
Maybe @Ericson2314 have a better idea.

If doCheck and dontCheck are both supported and dontCheck is a "negating alias" of doCheck, should doCheck take precedence over dontCheck if both are present in a derivation?

The most typical variant is dontPhase. So, we should have something like

dontCheck to control if checkPhase will be executed

default true, since checks are not enabled by default

if doCheck is set either as true or false, emit a warning and set dontCheck  != doCheck

The same for all the other doPhase variables.

Kindly requesting official review from @ckiee and @TomaSajt for the changes in the packages they maintain.
Unfortunately kaitastruct is unmaintained; if any of you would be willing to review the changes too, that would be very much appreciated 🙏

I found another interesting tidbit in relation to doPhase and dontPhase, @AndersonTorres: the runPhase shell function in pkgs/stdenv/generic/setup.sh:1551 provides a good overview of what is used and how.
I'd like to look into creating a "negating alias" for all the do* variables to allow for the possibility phase them out at some point in the (far) future. Any objections?

No objections, only recommendations!

Thank you for your feedback, @TomaSajt, very much appreciated. I may not have read your previous comment as thorough as I should have before making more changes to this PR. Hopefully I've now paid closer attention—although it is getting a bit in the evening for me 🥱

Friendly ping to @TomaSajt on this 🙂

Yeah, so after I've left my review about removing doCheck altogether I asked on the python matrix chat if that was a good practice. I was told that it would be better to keep doCheck = false with the reason for disabling above it.
Sorry for making this more compicated than it needed to be.

Thanks for reaching out to the python matrix chat, @TomaSajt, hopefully I've understood you correctly (see latest changes)

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/1643

Personal opinion:
Since bisect is a thing, the packages that received changes besides removing dontCheck should be separated in their own commits (not necessarily PRs).

I have too much on my plate and cannot review these changes this week.

I've created separate commits as preferred, @AndersonTorres.
Thanks for the heads up, @ShamrockLee.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/1701

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

28 packages built:

mitmproxy (python311Packages.mitmproxy)
mitmproxy.dist (python311Packages.mitmproxy.dist)
mitmproxy2swagger
mitmproxy2swagger.dist
python311Packages.gpt-2-simple
python311Packages.gpt-2-simple.dist
python311Packages.kaitaistruct
python311Packages.kaitaistruct.dist
python311Packages.roadtools
python311Packages.roadtools.dist
python311Packages.roadtx
python311Packages.roadtx.dist
python311Packages.selenium-wire
python311Packages.selenium-wire.dist
python312Packages.kaitaistruct
python312Packages.kaitaistruct.dist
python312Packages.mitmproxy
python312Packages.mitmproxy.dist
python312Packages.roadtools
python312Packages.roadtools.dist
python312Packages.roadtx
python312Packages.roadtx.dist
python312Packages.selenium-wire
python312Packages.selenium-wire.dist
pyxel
pyxel.dist
wapiti
wapiti.dist

Thanks everyone for your helpful feedback on this and helping getting it merged, very much appreciated 🙏


Identifiers validation failed for dataset Soil macrofauna communities in urban public parks of Curitiba, Paraná state, Brazil

Identifier validation failed for the dataset Soil macrofauna communities in urban public parks of Curitiba, Paraná state, Brazil:

Crawler attempt: 38
Publishing organization: Embrapa Forestry
Publishing country: BRAZIL
Installation: IPT Sistema de Informação sobre a Biodiversidade Brasileira - SiBBr
Number of occurrences indexed for this dataset at the time of the issue: 4500
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 4500 total records; 4500 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3364008/step

New IDs sample:

Old IDs sample:

BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_1
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_10
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_11
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_12
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_13
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_14
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_15
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_16
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_17
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_18

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Soil macrofauna communities in urban public parks of Curitiba, Paraná state, Brazil : https://doi.org/10.15468/ek2wuh.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Soil macrofauna communities in urban public parks of Curitiba, Paraná state, Brazil:

Crawler attempt: 39
Publishing organization: Embrapa Forestry
Publishing country: BRAZIL
Installation: IPT Sistema de Informação sobre a Biodiversidade Brasileira - SiBBr
Number of occurrences indexed for this dataset at the time of the issue: 4500
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 4500 total records; 4500 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3367111/step

New IDs sample:

Old IDs sample:

BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_1
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_10
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_11
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_12
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_13
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_14
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_15
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_16
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_17
BR:PEMG_2013/2014_wet_AtlanticForest_Lawn_Monolito 11_layer_0-20_18

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Soil macrofauna communities in urban public parks of Curitiba, Paraná state, Brazil : https://doi.org/10.15468/ek2wuh.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.


WNS raw notifications are not received if the payload is empty

The WNS docs indicate that you can send a raw notification with any payload as long as the payload is less than 5KB in size:

In practice, I've found that WNS will accept a notification request with an empty payload, however, the registered device never receives the notification. The notification is successfully received if the payload is not empty. Is this expected behavior? If so, can the docs please be updated to reflect the non-empty payload requirement?
Link to relevant docs: https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/raw-notification-overview#creating-a-raw-notification

Thank you for catching this! I confirmed with the feature team that the payload can't be an empty string and we've updated this line in the docs to make that clear.


Pass to convert a model with bfloat16 inputs to float16

ONNX Runtime doesn't support onnx models with bfloat16 inputs. Thus, given an onnx model with bfloat16 inputs, we need a pass that converts inputs to float16
the repro is a unit test at /test/onnx/test_fx_to_onnx_with_onnxruntime.py:
    def test_bfloat16_serialization(self):
        class MyLinear(nn.Module):
            def __init__(self):
                super().__init__()
                self.fc1 = nn.Linear(10, 5, bias=False, dtype=torch.bfloat16)
            def forward(self, tensor_x: torch.Tensor):
                return self.fc1(tensor_x)
        tensor_x = torch.rand((3, 10), dtype=torch.bfloat16)
        onnx_program = torch.onnx.dynamo_export(MyLinear(), tensor_x)
        with tempfile.NamedTemporaryFile(suffix=".onnx") as tmp_onnx_file:
            onnx_program.save(
                tmp_onnx_file.name, model_state=MyLinear().state_dict()
            )
        self.run_test_with_fx_to_onnx_exporter_and_onnx_runtime(MyLinear(), (tensor_x,))

Looks like only the c++ api supports bfloat16 https://github.com/microsoft/onnxruntime/issues/13001. Do you think this pass can be a utility we provide? It may be risky to assume users wants float16 inputs when they export, if this pass is enabled by default.

Looks like only the c++ api supports bfloat16 microsoft/onnxruntime#13001. Do you think this pass can be a utility we provide? It may be risky to assume users wants float16 inputs when they export, if this pass is enabled by default.

until numpy supports bfloat16, users may want float32 - which they can already get by using float32 input - or float16 in case they want to save memory

This is an ORT only optimization, which must be applied along with the other ort-specific rewrites

Also created https://github.com/microsoft/onnxruntime/issues/20578


Internal Server Error: private method `gets' called for Array

I'm running into an issue after downgrading from 0.10.0pre to 0.9 (for compatibility with JSONAPI::Utils) with this error: private method 'gets' called for ["company", "company.company-master"]:Array
I'm performing a nested include from a top level resource JobApplication. The relationship is JobApplication belongs to Company, which belongs to CompanyMaster.
The request is:
/api/v1/job-applications?include[]=company&include[]=company.company-master
Everything was working well with the latest master branch, however JSONAPI::Utils only has compatibility with 0.9.0. I did try bumping JSONAPI::Utils dependency of this library to ~ 0.10 but that breaks with a missing constant JSONAPI::OperationResults. That's a separate investigation, however.
Any guidance would be appreciated.

FYI Fixed this by setting the include param to a comma-separated list rather than an array. e.g. include=company,company.master.


Support for non-regex step matching

Coming from Cucumber and Ruby I noticed that step matching is done only using regular expressions.
In Ruby you can step match using string literals or regex literals (something Swift doesn't have).
We had a bug recently when porting out Ruby Cucumber tests to XCTest-Gherkin where we were unaware that Step("Blaaa") was actually using regex behind the scenes. This meant that multiple step definitions where matched. For example step:
When I do something

Would match both definitions:
Step("I do something")
Step("I do something else")

As the Step function expects a regular expression represented as a String literal, without the ^ and $ tokens a sub-match is possible as shown above.
In Ruby cucumber, both step definitions would be performed using equality on the string literal and not using regular expressions at all.
Ruby:
Step("I do something")
Step("I do something else")

Using regex is opted-in using regex literals:
Ruby:
Step(/^I do something$/)
Step(/^I do something else$/)

So there is no confusion here that one us using regular expressions and the other is using String matching.
Could we add support for String matching by default and regular expressions by opt-in so that it's clear how steps are matched? String matching should be faster than regex and for most cases, I expect string matching is what you need most of the time.
Ideally an API like:
Step(_ string: String)
Step(_ regex: NSRegularExpression)

Would be ideal, I was thinking of how we could reduce the boilerplate of having to create NSRegularExpression objects and we could introduce a regex literal type using a custom operator, to simplify how you would use the second method above, something like this:
Step(~="My regex [0-9]*")

What do you think, I'm happy to have a go and create a PR?

This has actually come up a few times, or at least enough times that we added a section to the readme: https://github.com/net-a-porter-mobile/XCTest-Gherkin#ambiguous-steps

I think if we were to add support for this it would have to be in a backwards-compatible manner e.g. the default would be regex. It would be a shame to potentially break a lot of other project's tests for this.

Yeah, I thought that would probably be the case. I feel like there is probably a good reason to do this but due to the fact that it would require a breaking change not sure how much value a non-breaking implementation would have.
RegexStep(_ NSRegularExpression)

Or something equivalent just seems wrong to me. Ideally overloading Step() makes the most sense but won't be possible without breaking current implementations and even if we did go for a new Step method there is a very high chance that people would still attempt to use RegEx Strings with the Step(_ expression: String) method.

Another option is to add a default parameter exactly: Bool to the Step function whose default value is false, and if true then do string matching (by simply wrapping the given string in regex delimeters). You could do this as part of your project by subclassing the StepDefiner and providing a custom implementation of step. E.g.
open func step(_ expression: String, file: String = #file, line: Int = #line, f: @escaping ()->()) {
        let exactExpression = "^\(expression)$" // or w/e you want it to be
        super.step(exactExpression, file: file, line: line, f: f)
    }

☝ I didn't test this

Yeah, that would work for us, though I have concerns about the underlying implementing using regex as it would not be clear to me what exactly does.
What if a user did this:
step("^Blaaaa$", exactly: true)

The start and end of line tokens twice would be included twice once explicitly and once implicitly.
That's kind of why I liked the idea of using the typing i.e. Step(_ expression: NSRegularExpression) and Step(_ string: String) as there is no confusion at the call-site to which uses a regex match and which performs an "exact" string match.
This would also ensure the user knows when to use a regex statement and when not.

I think we could mitigate this by just escaping the exact string via https://developer.apple.com/documentation/foundation/nsregularexpression/1408386-escapedpatternforstring?language=swift - and obviously a large set of tests to make sure we cover everything.
Though I would probably have formatted it like this if possible, just for readability:
step(exactly: "^Blaaaaa$")

Personally, I'm very against breaking backwards compatibility. I don't think we can change the default behaviour now without making every user of this library pretty angry!

I couldn't sleep, so I out together a proof of concept for this: https://github.com/net-a-porter-mobile/XCTest-Gherkin/compare/exact-matches?w=1#diff-a51cbc48d8632252d5745c3a8433334dR56 - let me know what you all think!

@deanWombourne Looks good to me and it certainly mitigates my concerns over allowing regex to be used. I would definitely use this for our tests and use the Step(_ expression: String...) method when we explicitly need the pattern matching.
I guess in the future as an alternative we could update the Step class or use a protocol and define another class to represent a Step that is backed by a String instead of Regular Expression and then use simple String equality as there may be a performance improvement over using NSRegularExpression for exact matches.

#143 <- link the PR and the issue together :)

@cameroncooke Hey - I've just released this as version 0.18.0 - can you check it out and make sure it fixes this issue and close it when you're happy please - thanks!

@deanWombourne Will do, thanks!

Works great, thanks!


CosmosDB Throttling Condition

I have 2000 RU/s set for my single Cosmos DB collection. I have spikes of activity every 3 minutes. I am using the .NET client, so I get the automatic retry using 429 response headers when Cosmos is throttling. However I don't understand how Cosmos decided to throttle.
What period of time is considered for RU consumption vs RU settings when starting and ending throttling?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4535fb42-55f9-4d8c-52d2-30b5eb0ef726
Version Independent ID: f5cccae0-a752-4065-605a-4179016a5a42
Content: Monitor and debug with metrics in Azure Cosmos DB
Content Source: articles/cosmos-db/use-metrics.md
Service: cosmos-db
GitHub Login: @kanshiG
Microsoft Alias: sngun

@mack0196 Thanks for the feedback! We are currently investigating and will update you shortly.

Is there a way to get information on the requests that put cosmos into throttle mode?

Are there portal options or 3rd party options for monitoring RU?

@mack0196 If you are using a .NET client, there is a response header available that details the RU usage per request (x-ms-request-charge). Please take a look at this Stack Overflow thread that details this very question: How to measure RU in DocumentDB?. That is the most direct means for obtaining this information.

Thanks for that lead. That will help us measure. I am also looking for a
way to get cosmos requests that have been processed already. I know I can
chart request counts on azure cosmos metrics view, but I cannot find
request details on the Azure cosmos view today.
Is there an api for getting past cosmos requests?
On Wed, Feb 20, 2019, 6:22 PM Mike Ubezzi<EMAIL_ADDRESS>wrote:

@mack0196 https://github.com/mack0196 If you are using a .NET client,
there is a response header available that details the RU usage per request (
x-ms-request-charge). Please take a look at this Stack Overflow thread
that details this very question: How to measure RU in DocumentDB?
https://stackoverflow.com/questions/35240801/how-to-measure-ru-in-documentdb.
That is the most direct means for obtaining this information.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/25201#issuecomment-465810477,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGKegRN4Wm3YyF2bcBVD7Hg_17BCFSRsks5vPeaugaJpZM4bBOv8
.

@mack0196 Are you looking for the entire document Json for the events that are currently visible to you in the metrics view? By request details, are you looking for the entire message or additional telemetry data about those past requests?
Cosmos DB does have a REST API for accomplishing a wide range of operational tasks: Common tasks using the Azure Cosmos DB REST API  where there are both List Documents and Query Documents operations. Perhaps there is something there that meets your needs.

@mack0196 I sent an email to our team to help with your questions, you can also send these questions to<EMAIL_ADDRESS>a broader audience can look at and respond.

@mack0196 We will now proceed to close this thread. If there are further questions regarding this matter, please comment and we will gladly continue the discussion.

Hope this is already addressed, if not, here is some information:
Throughput is provisioned at per second level. So request which consume beyond the limit maximum RU/partition which you can find from diagnostics will result in rate limitation for next set of requests. This throughput at per second is given back as budget in very next second. So retry logic can take care of it in general unless you have the stomping herd mode on where many requests come together and majority get rate limited. in such case you have genuine requirement of increasing the throughput.
WRT requests processed before the throttling, enable the diagnostic log or use the response which comes back in the sdk (200) (not this is not the request header etc.) should be helpful.