Xero - The connection isn't syncing when enabling tax import

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.25-1
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Issue reported by: Applause - Internal Team
Issue found when executing PR https://github.com/Expensify/App/pull/47905
Action Performed:

Open the app
Log in with a new Gmail account and validate it
Click on FAB - New workspace
Enable "Accounting" in the "More features" page.
Navigate to "Accounting"
Connect to Xero and enable 2FA when asked
Navigate to Import - Taxes
Enable "Import"

Expected Result:
The connection should auto sync to enable "Taxes" in the workspace settings
Actual Result:
The connection isn't syncing when enabling tax import. I have to sync it manually
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/user-attachments/assets/4cbd8850-d05a-4d5b-b739-d48d7c941091
View all open jobs on GitHub

We think that this bug might be related to#wave-collect - Release 2

The api was called successfully, can you take a look at the BE @dangrous ? 😄

ha yeah I had this up in a tab but hadn't reviewed yet. It's definitely not because of your PR, @hungvu193 since it's on production as well. I took a very brief look yesterday and didn't see anything different between the tax import setting and the other ones? I'll see if I can do so today

oh we do have special handling for tax import. I thinkkkk I know how to fix this on the backend. Stay tuned!

oh wait. In testing, I think this is happening for ALL integrations and all settings. Is that correct @lanitochka17? I just tested a couple QBO settings as well as a few Xero ones.
If so, it's a different issue. Maybe @aldo-expensify can let us know since you worked on the first connection syncing stuff - is this expected behavior? It seems like the sync eventually happens, and we have optimistic data beforehand, so maybe it's fine?

It may be because of this: https://github.com/Expensify/Web-Expensify/pull/43173, I added a debounce of 1 min for syncing when you modify a setting. If the person doing the test would have waited longer, they would have seen it syncing,... but I can see how this can be confusing for the user.
I'm not sure what to do, some ideas:

When we modify a setting, we could optimistically show like the sync is happening, even if the backend will really start syncing one minute later.
We could decrease the 1 minute debounce to something shorter... 30s, 20s...

both? other?

Thanks @aldo-expensify! Maybe both? Interested to hear what @dangrous thinks!

Hm interesting. So let's try 30s to start...
As for pretending it's loading? I'm not sure - I almost feel like users would be more annoyed with "hey it seems like this sync is taking a long time" vs. "oh it just hasn't synced yet" but I don't know. @CortneyOfstad do you think it's worth bringing up in Slack somewhere to see what we think?

"oh it just hasn't synced yet"

I feel like this is more confusing / annoying than "hey it seems like this sync is taking a long time"

@CortneyOfstad do you think it's worth bringing up in Slack somewhere to see what we think?

That sounds like a good idea to get more consensus. Or maybe we can ask a designer?

yeah let's bring it up in.... #product? @CortneyOfstad do you have time to tackle that?

So I'm reviewing this with fresh eyes, and I think part of the problem is we don't import tax for US-based entities in integrations. The tester used the US Xero company details, so we don't import those in, which is why the sync wasn't triggered.
However, I think we need to display something when this happens. In classic, we don't even let them select the option (either it isn't there, or it is grayed out). I wonder if we need to do the same thing here.

@dangrous @aldo-expensify interested to hear your thoughts on the above ^^^

So I'm reviewing this with fresh eyes, and I think part of the problem is we don't import tax for US-based entities in integrations. The tester used the US Xero company details, so we don't import those in, which is why the sync wasn't triggered.

I tried to verify this with the account<EMAIL_ADDRESS>the tester used, but seems like the password stored is wrong 🤷

However, I think we need to display something when this happens. In classic, we don't even let them select the option (either it isn't there, or it is grayed out). I wonder if we need to do the same thing here.

This sounds like something we may need to improve.
@lanitochka17 can you retry what the tester did, but now giving it at least a minute after changing the "Import tax' setting to see if the sync starts later or it never does? 🙏  Where can I get the right password for<EMAIL_ADDRESS>

Seems like a regression if Taxes is available for import on a connection to a US-based entity, as we weren't showing the option at all when initially built.

@lanitochka17 can you retry what the tester did, but now giving it at least a minute after changing the "Import tax' setting to see if the sync starts later or it never does? 🙏 Where can I get t

@CortneyOfstad might be worth escalating this to #qa for faster resolution. 👍

Poste in #QA here

It only syncs if
Uploading bandicam 2024-09-11 21-53-02-883.mp4…
waiting a minute after enabling the setting.

Thanks @kavimuru , then in this case the problem is because of the 1 minute delay of the sync job after any setting is changed. I think we should just decide if we prefer:
a. Shortening the time to sync to 30s (or less), and / or
b. Optimistically show like we are syncing as soon as a setting is changed, even if the real syncing starts later
I'm still on the side of doing both or just .b, and I find .a insufficient by itself.

I think I've changed my mind and would vote for "do both" as well, so there's immediate feedback for the user. 30s seems like a good limit.
My only remaining concern - would users think they can't continue to make changes while the syncing is happening? I feel like it would be fine, but just wanted to bring it up.

would users think they can't continue to make changes while the syncing is happening?

🤷 , but this is a concern that also applies now.

haha fair. Okay maybe we move forward with both those solutions then. Do you have time to tackle the PRs? Sounds like one BE and one FE, right?

Yes, I can work on it.

Dang, this seems like a step back in the UX. Waiting a minute or even 30s for the sync to start is confusing and makes it seem super slow - because it will be shown as syncing for a much longer time than necessary. The lack of feedback as well.
Did we discuss this anywhere in Slack? I'd be curious for the input of @Expensify/design @JmillsExpensify. Like, maybe there's a better way that can allow it to start right away, but while the sync is in progress not let you change the same value again until it's done.
Just looking at what we were trying to solve for in the parent issue of the PR that introduced this 1m delay.

Hmm yeah, I agree with Tom. This doesn't really seem ideal.

Like, maybe there's a better way that can allow it to start right away, but while the sync is in progress not let you change the same value again until it's done.

Would it be possible to just use something similar to offline pattern? Where if you change a setting it becomes reduced opacity and not-interact-with-able until the sync finishes?

Yeah, I guess it is "pending update" in that regard.

It is not the input that you just changed that would need to be locked, you would need to lock all settings.

you would need to lock all settings (any setting that triggers a sync)

Is that something we can do @aldo-expensify?

you would need to lock all settings (any setting that triggers a sync)

Is that something we can do @aldo-expensify?

I think so, but when would we block it and for how long?
If we do this only when the user is offline, then the user can at most change only one setting offline and then will be blocked, this UX is worse IMO. Also, we come back to having the problem of creating multiple IS jobs that push many policy updates that may arrive in the wrong order when changing settings while being online.
If we do the locking when online and offline, for online we would have to introduce an artificial amount of time to lock the settings to give time to the IS job to finish... this also sound like a worse UX to me.
I think we could do a better solution if there was a way to know if the IS job is running or not. If this is not possible for the moment, then we could try to implement something for knowing that? If we can know if the IS job is running, we could do this in the backend:

If IS is not running, then immediately queue a new IS job to sync
If IS is running, then create the bedrock job we are creating now that will queue the IS job in the future (when it is not running)

Actually, I think when we create the IS job from the bedrock job, we could wait for it to finish instead of fire and forget. Maybe that could help with "knowing" that the IS job is running because the bedrock job would also be "running" until the IS job finishes.

I think something like this will work: https://github.com/Expensify/Web-Expensify/pull/43574

The sync should start immediately like it used to
Config changes while the sync is running should be held until the sync finishes (two syncs should not happen at the same time).

I think that could work!

Made PR ready for review: https://github.com/Expensify/Web-Expensify/pull/43574

Thanks, Aldo!

So I have https://github.com/Expensify/Web-Expensify/pull/43483/files up for the backend - if there is a reimburser explicitly set for the policy, it will use their info, if not it will just say "an admin". I'll put up a front end PR momentarily (it's quick so doesn't need a contributor really)

PR — https://github.com/Expensify/Web-Expensify/pull/43574 — is on staging, so will keep an eye until it is released to production 👍

That's on prod now.

I'll try to reproduce this, I'm expecting this to be fixed now.

Same problem as https://github.com/Expensify/App/issues/48090#issuecomment-2341885599, the password stored in 1Password doesn't work. I'll ask in #QA for a retest from applause.

Same problem as #48090 (comment), the password stored in 1Password doesn't work. I'll ask in #QA for a retest from applause.

Oh, there is a second entry for xero /<EMAIL_ADDRESS>in 1Password and that one worked.
This works now:
https://github.com/user-attachments/assets/b231bd22-d677-40e3-bc4d-16fb16ceaa33


Don't double count updated sidecar memory

Pushing existing app with sidecars fails when total sidecar memory exceeds half of the process's allocated memory:
---
applications:
- name: dora
  processes:
  - type: web
    instances: 1
    memory: 200M
    disk_quota: 256MB
    log-rate-limit-per-second: 0
    health-check-type: port
  sidecars:
  - name: my-sidecar
    process_types: [ 'web' ]
    command: sleep infinity
    memory: 101M

This will succeed on the first push, but fail on the second push as it doesn't exclude my-sidecar's current memory usage when calculating the new total usage.

[ ] I have made this pull request to the main branch

[ ] I have run all the unit tests using bundle exec rake

[ ] I have run CF Acceptance Tests

I think we need to fix the v3 controller here as well: https://github.com/cloudfoundry/cloud_controller_ng/blob/cb05e88ad79c9ed6c1c98e5cbb60401508fde459/app/controllers/v3/sidecars_controller.rb#L92

verified it's fixed for PATCH v3/sidecars:
 2023-02-23 20:11:44 ⛅  ruby 3.1.2p20 capi-ws-2 in ~/workspace/cf-acceptance-tests/assets/dora
± sb+da |main {2} S:3 U:3 ✗| → cf curl -X PATCH /v3/sidecars/3d2aaef6-3afc-4049-ad59-1ecd45a46c0e -d '{"memory_in_mb": 601}'
{"errors":[{"detail":"The memory allocation defined is too large to run with the dependent \"web\" process","title":"CF-UnprocessableEntity","code":10008}]}

with this commit:
± sb+da |main {2} S:3 U:3 ✗| → cf curl -X PATCH /v3/sidecars/fe1a85fb-873a-4963-9dee-baf22e2b8b8d -d '{"memory_in_mb": 601}'
{"guid":"fe1a85fb-873a-4963-9dee-baf22e2b8b8d","name":"best-api","command":"sleep infinity","process_types":["web"],"memory_in_mb":601,"origin":"user","relationships":{"app":{"data":{"guid":"546323b3-10dc-41e0-b839-4243f7d68
a6e"}}},"created_at":"2023-02-23T19:58:27Z","updated_at":"2023-02-23T20:10:34Z"}

proof actions are cool


add volumeBindingMode to ignite

By adding volumeBindingMode a scheduling of volumes is possible

/assign @jlegrone

You should in generally remove all the storage classes from the chart and let the user define the storage class name. This way the application is decoupled from the underlying infrastructure.

Please can we make here any progress?

/assign @bergerx
Please can you merge this not breaking change

Ah sorry, I'm mot one of the maintainers here, i'm just a contributor like you, I can't really merge stuff.
There is an ongoing process for migrating the hosting of the charts to their respective owners, and last time I checked ignite chart doesn't really have any strong owners willing to host it for others. Maybe apache foundation. But until then its likely that our PRs wont have attention as I understand the situation of this.


Assigning Pods to Nodes: example and description don't match

The node affinity example does not match the description link:
apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/os
            operator: In
            values:
            - linux
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: another-node-label-key
            operator: In
            values:
            - another-node-label-value
  containers:
  - name: with-node-affinity
    image: k8s.gcr.io/pause:2.0

In this example, the following rules apply:
The node must have a label with the key topology.kubernetes.io/zone and the value of that label must be either antarctica-east1 or antarctica-west1.
The node preferably has a label with the key another-node-label-key and the value another-node-label-value.

This description seems to match the next example

Duplicate of https://github.com/kubernetes/website/issues/34573


Worker node cleanup

This PR performs some maintenance work in the flask app for the worker nodes:

[x] Use celery to check job status not a list that is kept in memory
[x] Refactor flask app structure to follow this popular example
[x] Convert to Python 3
[x] Write tests to cover flask endpoints
[x] Use msgpack for project inputs serialization [EDIT]

@lucassz would you mind reviewing PR #910?

Next steps:

Develop testing harness such that docker is not necessary for running tests. The best way to run the tests no is to run: docker-compose run flask py.test -s -v.  Plus, running celery in a different process means that you can't mock out the celery calls.
Refactor celery functions to have a standard data flow. Currently, there is still some ad hoc code for each celery task. I think that it can be standardized a little more.


[Feature] Remove test and test-data from publish wheels.

Search before asking

[X] I searched the issues and found no similar issues.

Component
Other
Feature
We are currently including test directory of source and somehow the test-data directory of test data into at least the core toolkit wheels.  We should not being doing this for all published wheels and is makes them larger than necessary.
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

This was found to be the case in the tar.gz on pypi, but not the .whl so will close this issue.


Type checks of custom salt too permissive

Why is null or a boolean a valid salt? Sure, it will be caught later by the length check, but that's only because those values happen to have a string representation with less than 22 characters. Semantically, this makes no sense.
Why is a number a valid salt? 22 decimal digits are hardly acceptable.
Is it really a good idea to accept objects? Just because it has a __toString() method doesn't mean it was actually intended to mimic a string. This is very error-prone, because the user might accidentally pass some object which merely contains the salt string (an instance of a randomness class or whatever).
In my opinion, the function should only accept a real, actual string. This might be against “the PHP way”, but I don't think a security-related function is the right place for type juggling, duck typing or whatever.

I think this is something that is caused by PHP's bad behaviour. In PHP you can pass any scalar values (+null) where the documentation says string. There are only a few exceptional cases. In a backported function, the same functionality must be provided. So if PHP does it badly, ...

Not only is the custom salt bad, rather than forcing openssl or mcrypt falling back to urandom (just use urandom), there is a fourth option that should generate a notice at the least to say it is not an invariant as it uses mt_rand...


Add support for 0a5c:5843

I have a 0a5c:5843 NFC readr on my Dell Latitude 5501 but I'm not able to use it on Ubuntu 20.04, could you add support for this chip?

This is a different hardware (ControlVault3) that I have no access to, unfortunately.
If you could sniff communication between Windows and the device using USBPcap:
https://desowin.org/usbpcap/tour.html
then I might be able to come up with something (skip the part about detaching device).
When you have sniffing enabled go to Device Manager, find ControlVault NFC device, select Disable command, wait a moment and reenable the device.
You can attach the resulting .pcap file to this issue (optionally encrypting it with my public GPG key) or send it to me privately.

@jacekkow I have pcaps from 0a5c:5843 on a Dell Latitude 7400. I can't seem to track down your contact info/gpg key, but am happy to pass along the pcaps when I do.

@lgarbarini
GitHub posts my GPG key at: https://api.github.com/users/jacekkow/gpg_keys
I'm also attaching it for convenience:
gpg.txt

Thank you, pcaps are on their way

I finally found some time to look at these dumps. These are not as scary as I have thought - general framework looks the same, only commands differ:
https://gist.github.com/jacekkow/8acf2bbc164dc377df9913a47807d589
I'll try to wrap it up during the weekend somehow.

Could you try:
https://github.com/jacekkow/controlvault2-nfc-enable/tree/cv3
(branch cv3)?
Usage changed slightly:
./nfc.py on

or
sudo ./nfc.py on

I tried on my Latitude 5501 with 0a5c:5843 and I keep getting this error
INFO:__main__:Looking for supported device...
Traceback (most recent call last):
  File "./nfc.py", line 62, in <module>
    handler = UsbDeviceFinder.find()
  File "./nfc.py", line 46, in find
    raise Exception('Cannot find BCM device - check list of supported devices')
Exception: Cannot find BCM device - check list of supported devices

PS: sorry if I didn't send the pcap you asked for, I was really busy during the past month

My mistake - I have added 0a5c:5833 instead of 0a5c:5843.
Fixed on that branch (note that I have made amend to the existing commit instead of a new one).

This time, I got this error:
NFO:__main__:Looking for supported device...
INFO:__main__:Found 0A5C:5843
DEBUG:cvcomm:Enumerating interfaces...
Traceback (most recent call last):
  File "./nfc.py", line 62, in <module>
    handler = UsbDeviceFinder.find()
  File "./nfc.py", line 49, in find
    handler = cls._cls_matcher(device)
  File "./nfc.py", line 36, in _cls_matcher
    return matcher.handler(device)
  File "./nfc.py", line 22, in <lambda>
    UsbDeviceMatcher({'idVendor': 0x0A5C, 'idProduct': 0x5843}, lambda device: __import__('cv3').ControlVault3(device)),
  File "/home/tom/Téléchargements/controlvault2-nfc-enable-cv3/cv3.py", line 26, in __init__
    self.communicator = cvcomm.ControlVaultCommunicator(device)
  File "/home/tom/Téléchargements/controlvault2-nfc-enable-cv3/cvcomm.py", line 13, in __init__
    self.bulk_in, self.bulk_out = self._find_endpoints()
  File "/home/tom/Téléchargements/controlvault2-nfc-enable-cv3/cvcomm.py", line 68, in _find_endpoints
    raise Exception('Cannot find vendor-specific interface')
Exception: Cannot find vendor-specific interface

This is a part I have not touched - iInterface value is different. I have just pushed another update.

It works! Thank you very much for this!

There is probably some room for improvements, but I'll leave it for when I get my hands on some laptop with that chip.
Great it works, I'll push these changes to master branch.


New option to allow for some event store aggregates to be global while others are conjoined tenancy

You can already do this with documents, but it's never been possible with the event store. I have a need on a client project, so this needs to happen fast

Nevermind, stupid idea. Easy other workarounds.


Swift style code, enum update, podspec

Hi, I did an update on your code just fixing swift style code and other small things.
The podspec file is updated to 0.0.2 too.
Please merge and upload to cocoapods.
Bests.

@gali8 thank you for the update


Include MASP Transaction hash in the wrapper signature

For any Tx that contains and uses a MASP Transaction (i.e. some field like Transfer::shielded_section_hash contains its TxId) , the Namada Ledger app must produce a wrapper signature that is also over the hash of the MASP Transaction section. (In addition to everything else put into https://github.com/Zondax/ledger-namada/blob/ca9da5e0129f676934809f58acffbd855d280664/app/src/crypto.c#L373) Moreover the MASP Transaction section must be hashed only after the placeholders in it have been replaced by valid authorization signatures and a valid binding signature. The reason for this requirement is that the wrapper signature is intended to prevent malicious actors from tampering with any part of a Tx, including any Transaction embedded within it. The hash of a MASP Transaction section is computed as the SHA-256 hash of 0x04 (DISCRIMINANT_MASP_TX) followed by the Transaction bytes (i.e. the SHA-256 hash of the byte vector consumed by readMaspTx).

Hey @murisi! As we are just about to complete the shielded hash verification, we will start solving this issue, but we have some questions, where you might be able to help us.
So far, the signMasp method that we have is returning the hash of the complete transaction (similarly to zcash), and the spend signatures can be retrieved with the getSpendSignature method.
From our understanding, you are requesting the signMasp to return not a hash but the wrapper signature, similar to the one for non-masp transactions, including the Masp transaction.
But are not understanding what you mean by "Moreover the MASP Transaction section must be hashed only after the placeholders in it have been replaced by valid authorization signatures and a valid binding signature", can you help us make this clearer?
Will you use the spend signatures we produced to regenerate the final transaction for the wrapper signature?

Hi @chcmedeiros , great thanks for the work on the shielded hash verification issue!

From our understanding, you are requesting the signMasp to return not a hash but the wrapper signature, similar to the one for non-masp transactions, including the Masp transaction.

Conceptually a Tx can contain/wrap any data. The wrapped data might be a Bond or a (Transfer + MASP Transaction) or a (MsgTransfer + MASP Transaction) or a plain MsgTransfer for example. So I could imagine a single general app.sign function that takes a Tx (which might or might not contain a MASP Transaction) and returns the raw header signature and wrapper header signature. The getSpendSignature method could then augment this setup to allow retrieval of the spend signatures (if they are needed). In this way sign and getSpendSignature could cover all the signatures required by the client for both MASP and non-MASP cases. But I guess making signMasp return a wrapper signature could also work.

But are not understanding what you mean by "Moreover the MASP Transaction section must be hashed only after the placeholders in it have been replaced by valid authorization signatures and a valid binding signature", can you help us make this clearer?

Ultimately the wrapper signature must cover over every byte in the Tx in order to prevent transaction malleability. If the Tx contains a Transaction, then all the Transaction bytes including the zk-proofs, spend signatures, and binding signature should be covered by the wrapper signature to prevent malicious actors from invalidating a transaction by tampering with the MASP authorizations. We currently achieve this by including the MASP section hash in the wrapper signature (alongside the data section hash, code section hash, and other section hashes which are already implemented at https://github.com/Zondax/ledger-namada/blob/6e0ac0f674ee3f9429244c7089fa31335e5f80af/app/src/crypto.c#L397). The MASP section hash is computed as SHA-256(0x04 || Borsh serialization of Transaction) (see https://github.com/anoma/namada/blob/24eebc7ec68c30f66f8c92a257f5d9acef75258f/crates/tx/src/types.rs#L878) where the concerned Transaction has valid authorizations (in the place of the dummy/placeholder authorizations contained by the Transaction that was sent to the hardware wallet for signing). (Side note: we used the Transaction Borsh serialization to compute the MASP section hash because it includes authorization data unlike the TxId digest.)

Will you use the spend signatures we produced to regenerate the final transaction for the wrapper signature?

Would it be possible for the hardware wallet to do this directly? It seems to me that we just need to patch/overwrite the dummy/placeholder spend signatures and binding signature in the Transaction object with the correct values that you have computed. The 64-byte gaps for the spend authorization signatures in the Transaction are already there, so this patching process should leave the Transaction serialization length unchanged. But maybe I'm missing something? Please let me know... Getting the computer to regenerate the final transaction is also a possibility, but this would introduce another round of communication, and I guess the hardware wallet would have to recheck this final transaction for consistency with all the data it has processed so far.

Hey @murisi ! Thanks for the clarification, I think it will be possible to do it in the app directly. But let me check with some more certainty and discuss with the team, so we can come with the best solution.

Hey @murisi ! I think we can do it without the need for an extra round of communication. Can you point us to a place in your SDK or documention where we can confirm the binding signature computation?

Hey @murisi ! I think we can do it without the need for an extra round of communication. Can you point us to a place in your SDK or documention where we can confirm the binding signature computation?

Hi @chcmedeiros , great thanks! See this code for computing the binding signature: https://github.com/anoma/masp/blob/8d83b172698098fba393006016072bc201ed9ab7/masp_proofs/src/sapling/prover.rs#L277 . At a higher level, the computations are also described here: https://zips.z.cash/protocol/protocol.pdf#saplingbalance although our code is generalized to support multiple asset generators. Let me know if you have any further questions...

Hi @chcmedeiros ! How is the binding signature computation going? Is there any additional information we can furnish you with for this issue? Thanks!

Hey @murisi ! We are working on computing the binding signature, so we can replace it by the dummy one.

Hey @murisi. We made some good progress. Do you think it is possible to have a MASP transaction, with some debug on the expected value of binding sig, so we could run some test in our implementation?
Or maybe some place in your SDK from which we could get some testcases for this.

Hey @murisi. But you will still need for us to add the Masp hash on the wrapper signature, right ?

Hey @murisi. But you will still need for us to add the Masp hash on the wrapper signature, right ?

Ah yes, you're right. The MASP hash is still needed in the wrapper signature. Thanks!

Conceptually a Tx can contain/wrap any data. The wrapped data might be a Bond or a (Transfer + MASP Transaction) or a (MsgTransfer + MASP Transaction) or a plain MsgTransfer for example. So I could imagine a single general app.sign function that takes a Tx (which might or might not contain a MASP Transaction) and returns the raw header signature and wrapper header signature. The getSpendSignature method could then augment this setup to allow retrieval of the spend signatures (if they are needed). In this way sign and getSpendSignature could cover all the signatures required by the client for both MASP and non-MASP cases. But I guess making signMasp return a wrapper signature could also work.

This is the part of this issue that we can leave out for now. The current Rust crate API is fine and we have already integrated it. Apologies for the confusion.

@murisi do you think is possible to have a transaction with the dummy values replaced with computed ones so we can have a test for MASP wrapper signature generation?

Hey @murisi. We made some good progress. Do you think it is possible to have a MASP transaction, with some debug on the expected value of binding sig, so we could run some test in our implementation? Or maybe some place in your SDK from which we could get some testcases for this.

I've reread the specifications and I think that I can make the Namada client namadac compute the binding signature before the call to signMasp. Its computation only requires knowledge of the randomness parameters and the Transaction sighash. And this sighash (different from TxId) does not depend upon the spend authorization signatures nor does it depend upon rsk since rk can be computed as rk = SpendAuthSigSapling.RandomizePublic(𝛼, ak).  So could you please leave the dummy value for bindingSigSapling as it is for now? Apologies, I hadn't realized we had sufficient information for this signature computation to be done before the Transaction is sent to the hardware wallet.
It seems to me that only the spend authorization signatures for each spend description must be computed on the hardware wallet since that computation requires knowledge of ask  (the spend authorizing key).

@murisi do you think is possible to have a transaction with the dummy values replaced with computed ones so we can have a test for MASP wrapper signature generation?

Yes, let me produce the test vectors for wrapper signatures that cover over MASP Transactions. I'll also separately produce test vectors for the test cases where TxId digest computations on the hardware wallet don't match those of namadac. Thanks.

I've just checked the debugs.txt testvectors that I sent before. These test vectors for the Txs containing MASP sections also contain the hashes of the MASP sections. The hash for the MASP section can be found in the list under Tx { sections: [ Authorization( Authorization { targets:. If the MASP section (i.e. MaspTx) is the nth section in the sections vectors, then its section hash should be at position n+1 in the list. Also, ignore the MaspBuilder section hash, it shouldn't be computed by the hardware wallet nor should it be included in the wrapper signature.
Given that we will no longer be computing the binding signature on the hardware wallet, is any additional information still required to test MASP wrapper signature generation?

I don't think we need any additional info regarding that. Only the test vectors for the test cases where TxId digest computations on the hardware wallet don't match

Hi @chcmedeiros . Please also find attached test vectors to show some of the computations happening during the signing process. They look like:
apply_signatures: sighash_bytes: 69475d2b9988040d4e76b4dde81954ab54afc54affc6f48e93a618dbc0c21015
sign: t: 029265371f023246969c03e03eaf10b1cd6891f16946f83cbe0ec29e4b75308274227ca381f5c509f6b28cd66c677186f1b6455f3079dc5e26cd6c5341bf4d5bf217c1bb442c0cfa847fbd59254730f2
sign: r: c930e9c67af6f9c1c9cbd2b6f019f813ff5576657c84239215cfbae3b6051f04
sign: r_g: b2f073645fb16a3c0c1144340da27caa64ede92551e6bf8bf5dc2f392f2d49d6
sign: rbar: b2f073645fb16a3c0c1144340da27caa64ede92551e6bf8bf5dc2f392f2d49d6
sign: H*(Rbar || M): 769765eb80953697dd81efc724a3521f7da08b114ce1206906263bcb38244e00
sign: s: 467856038ac43b5fcb6da494e26d7375456d1083215a7257fb556062ec4b4408
sign: sbar: 467856038ac43b5fcb6da494e26d7375456d1083215a7257fb556062ec4b4408
spend_sig_internal: ask: 0cd47b62dea686adfd1e96f6503216cdf133e575221400fd65eeaa378f3d450b
spend_sig_internal: ar: 1f666be29fde619463f42658f1d161a77b0caddf7febbaef33b511756b9d3709
spend_sig_internal: sighash: 69475d2b9988040d4e76b4dde81954ab54afc54affc6f48e93a618dbc0c21015
spend_sig_internal: rsk: 740df06d1f775171de02f581aee30fce6c055e54a1c453e6f0f388471026ff05
spend_sig_internal: rk:<PHONE_NUMBER>da467e5ec723ba86c345cdebf33e882b5c33702804799ac0393802
spend_sig_internal: data_to_be_signed:<PHONE_NUMBER>da467e5ec723ba86c345cdebf33e882b5c33702804799ac039380269475d2b9988040d4e76b4dde81954ab54afc54affc6f48e93a618dbc0c21015
sign: t: 05734daa7328fa0c91a33d78b9c256c06d79b4b38fa01658d6e3c39781464323d166c95227c2fe5e121e87f7d5d82f712bf0f7a3fa23585543201936370b4562ae3a6604e1870c67cf232bc48fbe39ba
sign: r: 9357809b6204808e81dbed2d3327d4a84f23737ebb4136e915c7e8d287be4a01
sign: r_g: d7fbecb584e158c90a02d5ff5914ec729f86f119cee9ed03d1c3af438b30e333
sign: rbar: d7fbecb584e158c90a02d5ff5914ec729f86f119cee9ed03d1c3af438b30e333
sign: H*(Rbar || M): f133d071d7477f9bb510b74a7c9740db20605a58208d99bcb8eb12ca995edb06
sign: s: 9ea71021df2d6f1f8240350026cacf2e36ffeb6dbc2d8202de782a8fdc27b40a
sign: sbar: 9ea71021df2d6f1f8240350026cacf2e36ffeb6dbc2d8202de782a8fdc27b40a
Personalization Prefix: 5a636173685478486173685f
Consensus Branch ID: MASP
Consensus Branch ID:<PHONE_NUMBER>
Personal: 5a636173685478486173685fa675ffe9
Header Digest: Hash(0x0d28515245442c4f2d26f7f584a8a8f6a05a523ed1e76889a521f827187e3e2c)
Transparent Digest: Hash(0xc33f2e95705faab35f8d533fa61e95c3b7aaba0776b874a9f74fc12784376a59)
Sapling Digest: 1ab0d393f113f6ea8a73914bbede894a9ee55405b9f0370efab29cede1f13780
TxId Digest: 1510c2c0db18a6938ef4c6ff4ac5af54ab5419e8ddb4764e0d0488992b5d4769
[masp_signing_testvectors.txt](https://github.com/user-attachments/files/16963910/masp_signing_testvectors.txt)

@murisi those Sign info is regarding the signature of a spend right? If so I will use this to test the spend signature generation

@chcmedeiros Yes exactly, thanks. The link properly formatted: masp_signing_testvectors.txt

Hey @murisi ! Regarding the spend signing, I was able to verify sbar and rbar calculation process, staring for the data_2_be_signnted, rsk and t from your debug vectors. Going to check if the issue now might be on rsk, rk computation or sign_hash.
Meanwhile, I found that on the debug vectors you are not printing the correct s value, my guess is that you are printing the value of s_bar on the s. Not that important, but might be worth mentioning in the case you are using this for other stuff.

Hi @chcmedeiros . Great, thanks. Let me know if anything comes up...

Meanwhile, I found that on the debug vectors you are not printing the correct s value, my guess is that you are printing the value of s_bar on the s. Not that important, but might be worth mentioning in the case you are using this for other stuff.

Thanks. Looking at https://zips.z.cash/protocol/nu5.pdf#concretereddsa , s_bar seems to just be an encoding of s. Whereas looking at crypto.c, s seems to be defined as a sub-expression of s_bar (i.e. H⊛(𝑅 || vk || 𝑀 )). But I guess all is fine if the hardware wallet obtains the same sbar and rbar as the test vectors.

Hi @chcmedeiros . Whenever I try to sign MASP transactions I get the following error after pressing selecting/pressing "Approve" on the hardware wallet: Ledger | App Error: | 28417 apdu sign verify error. I assume the error emanates in the vicinity of crypto_check_masp. Some notes:

I'm using the ZIP 32 (over SLIP 10) path: m/32'/877'/0'.
The hardware wallet internally uses the extended spending key: 0x03bc4834ed00000080fe5f31e2d3bd521177e96903bafaeea1ff38afbfc87bc92ffd8bafa9f8f939c707bc9208dcd6e622a6aacab839c23c26404cd362a33a6fb5f9e9871b65652e09a1a8f2975e2d21edeac47b57f70ade8fff6ede55049d5be4a1c95dcbec47ed0c90790db1d8232c742fa3c4437e958276951958bb2392c9debd325f306582daa6ad0a2591b6c6ad459fa2d181005eeef982e378b807eb109275ae89f288f86697 .
The client only knows the extended full viewing key generated from this: 0x03bc4834ed00000080fe5f31e2d3bd521177e96903bafaeea1ff38afbfc87bc92ffd8bafa9f8f939c7031b9d3d838fb0343ac264aeb78ba909e5a731cd7a3b4d601af55bfde40e2b6df0c1485f8201ab1675c00d1201cb18f0eea8c9e92d26189fc9738544c2e4143d90790db1d8232c742fa3c4437e958276951958bb2392c9debd325f306582daa6ad0a2591b6c6ad459fa2d181005eeef982e378b807eb109275ae89f288f86697.
The client is also given the proof generation key by the hardware wallet (the nsk can be found inside the extended spending key and the ak inside the extended full viewing key).
The attached vectors contain dummy spend authorization signatures since the client generated them without knowledge of the true spend authorizing keys.
The nth SpendBuildParams is used in the construction of the nth spend description. Analogously, the same thing is true for the convert descriptions and output descriptions.

See attached some logs of the calls I'm making. Am I doing something wrong?
apdu_sign_verify_error.txt

Hey @murisi.  So if I understood right, the methods to generate the randomness will be called more than the number of the spends/outputs/converts that will be present in the builder? If so, then the problem might be indeed in the crypto_check_masp when we are getting the randomness values to compute cv for comparison. We might not be getting the random vaue that namadac is using.

So if I understood right, the methods to generate the randomness will be called more than the number of the spends/outputs/converts that will be present in the builder?

Yes, this would make integrating the Ledger app into namadac easier.

If so, then the problem might be indeed in the crypto_check_masp when we are getting the randomness values to compute cv for comparison. We might not be getting the random vaue that namadac is using.

Ah, I see. My bad. Is there a way to make this work? I.e. allow namadac to generate M randomness parameters  and  then generate a Transaction with N descriptors where N<=M, and have the Ledger app ignore the last M-N randomness parameters (i.e. pretend that they were never requested/generated) when doing crypto_check_masp.

@murisi I am doing some testing to be sure. But I would say if you should use the first N randomness parameters to generate the transaction, I think this should work. And the app will not use the last M-N parameters, because in the check functions we are iterating over the number of spends/outputs/converts


Merge staging into production

Pull Request Test Coverage Report for Build 1065

0 of 12 (0.0%)  changed or added relevant lines in 2 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.5%) to 49.578%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

frappe/utils/data.py
0
4
0.0%

frappe/modules/utils.py
0
8
0.0%

Files with Coverage Reduction
New Missed Lines
%

frappe/utils/data.py
1
51.05%

Totals

Change from base Build 1057:
-0.5%

Covered Lines:
21402

Relevant Lines:
43168

💛  - Coveralls


[BUG] regression with 7.4.1 (against 7.2.2)

Sorry that this is vague, I will try to update this when I get a chance.
There seems to be a regression in 7.4.1 which looks like an off-by-one bug.
We have some code inspecting a schema for tables, columns etc and store that in a metadata database so we can use it to configure a webapp.
All this works fine with 7.2.2-jre8, but fails with 7.4.1-jre8 (so just reverting the driver makes everything work again)
I need to set up a debugging environment to see if someting goes wrong when collecting and procesing the metadata from the database or if something is amiss inserting/updating the data.
Driver version
 7.4.1-jre8
SQL Server version

Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)   Aug 22 2017 17:04:49   Copyright (C) 2017 Microsoft Corporation  Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Datacenter 6.3  (Build 9600: ) (Hypervisor)
Client Operating System
windows server 2012
JAVA/JVM version

openjdk version "1.8.0_212"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_212-b03)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.212-b03, mixed mode)
Table schema

Problem description

Expected behaviour: same as with 7.2.2
Actual behaviour: data is removed
Error message/stack trace:
Any other details that can be helpful:

JDBC trace logs

Reproduction code

Ahh yes, like #1136 all the tables in this schema have one or more underscores

name
type

l_voorziening
TABLE

l_voorziening_soort
TABLE

p_voorziening
TABLE

p_voorziening_soort
TABLE

Hi @mprins, if you think that this issue is identical to #1136, can I close this issue as duplicate? Otherwise, I'll leave this open for you to provide more details.

@peterbae It probably is the same issue so OK with me
If not a duplicate I can re-open. I've not gotten around to setting up an environment to reproduce and or further analyse this

close as duplicate of  #1136


Ionic livereload is not working<EMAIL_ADDRESS>and iOS10

I am working on a project which is using below configuration for development. When I tried to setup the working environment on MacBookPro with Xcode 10 and iphone 5 running at ios 10. Live reload was initially not working at all. However I have managed to get the console logs but still the changes in html and js files are getting reflected only after the restart(kill and then reopen) the running on device. Could you please help me?
Your system information:
Cordova CLI: 6.3.1
Gulp version: CLI version 3.9.1
Gulp local:
Ionic CLI Version: 1.7.15
Ionic App Lib Version: 0.7.2
ios-deploy version: 1.9.0
ios-sim version: Not installed
OS: Mac OS X El Capitan
Node Version: v6.9.1
Xcode version: Xcode 8.0 Build version 8A218a

Hello, thanks for using Ionic! This has actually already been fixed and will be in the next version of the Ionic cli. I will post here when that is released.

How is it possible to apply the fixes from ionic2 to ionic 1?
Let me clear the whole scenario, I am working on a project which is using the ionic1 and you guys fix all issues for ionic2. Do you really think its easy to migrate an app from ionic1 to ionic 2? If so please do let me know the steps to migrate. And if not then please continue improving the ionic 1 as well.

@premcarver ionic is free and opensource, FYI

@markthien  Ionic is free. But it doesn't mean that all improvements foes to Ionic2.
Stop redirecting the issue into a different way, please.

@premcarver try react if not happy with ionic


Fix for sensitive text in output message

Linking the issue https://github.com/microsoft/azuredatastudio/issues/19065. Will close only after port.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 2 (50.0%)  changed or added relevant lines in 1 file are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.007%) to 42.263%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

extensions/sql-database-projects/src/tools/shellExecutionHelper.ts
1
2
50.0%

Files with Coverage Reduction
New Missed Lines
%

extensions/machine-learning/src/common/processService.ts
2
81.48%

Totals

Change from base Build<PHONE_NUMBER>:
0.007%

Covered Lines:
27679

Relevant Lines:
61225

💛  - Coveralls


Necks refactor

Added BaseNeck abstract class
Refactor of RepPANNeck to support 2,3 or 4 headed models
Added testing for necks

PR for wrong branch. Should be deleted.

Now the target branch is correct. Note that we should wait for PR to be merged before this one because there are some changes that need to be made.

Is there a way to automatically check if the ONNX graph is "nice"? Or should we manually check this with e.g. Netron?

There is onnx.checker.check_model(model), though I don't know what all it checks.

I'll add additional tests in a separate PR once we merge all refactors of modules


Update lighthouse search api

PR Checklist

Please check all that apply to this PR using "x":

[x] I have checked that this PR is not a duplicate of an existing PR (open, closed or merged)
[x] I added a line describing my change to CHANGELOG.md
[x] I have checked that this PR does not introduce a breaking change
[ ] This PR introduces breaking changes and I have provided a detailed explanation below

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting)
[ ] Refactoring (no functional changes)
[ ] Documentation changes
[ ] Other - Please describe:

Fixes
Issue Number: #6706
Changelog update: #6735

Changelog update: #6735

I rebased.


create token multi-select dropdown issues

overview
when creating a token if a user opens the projects dropdown and then the policies dropdown the policies dropdown appears behind the projects dropdown.
repro steps

navigate to settings > tokens
use the create token button
open the projects dropdown
open the policies dropdown
notice that the policies dropdown displays behind the projects dropdown

what it should be
the last thing the user opened should be displayed on top

I'm moving this back into on deck - After I realized the action that is being looked for, having the last item clicked always remain on top - it will require a little more logic and the desktop needs priority for now

@SEAjamieD i wrote this quick and need to think more about it. i think that might not be the right approach. but either way i dont think this is ready for ur work yet, sorry about the miscommunication.

@SEAjamieD updated...

there's click outside functionality that is supposed to close the dropdown, so if the user opens the projects one first and then clicks outside to open the policies one the projects one should close. something is not working.


Remove of non-official wallets because of potential scam

We should review them first. I don't know when I will find time to do it. I'm on some MCU IOTA topics at the moment.

Can't trust that l3wi character... 😂
Pls remove, I'll add a dep notice to it.

@l3wi :D Just to be consistent. :) I'll review your code in the future first ;)
Hope, you can understand it.
Don't you want to continue this project?


xcpretty_formatter in gym not working

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
I wanted to use xcpretty-json-formatter from our Fastfile.
Their doc says to use xcpretty -f xcpretty-json-formatter, i.e. run the program and then take that output as the actual formatter.
I can't put backticks in the Fastfile without getting an error: Assuming it checks for special characters.
My workaround is putting the output of running xcpretty-json-formatter in the Fastfile.
TBH: Not really sure what the best way to go about this is, all the solutions that come to mind seem pretty whacky. Just wanted to leave this here for awareness and maybe someone else stumbles on it too.
Complete output when running fastlane, including the stack trace and command used

Environment

Going to close this for now since no response 😊 Feel free to comment back about this issue!


KeyError: 'song' at MPDControl.py

I have an error with the MPDControl.py after Jasper tries to run spotify.
These are my errors:
ERROR:client.brain:Failed to execute module
Traceback (most recent call last):
File "/home/pi/jasper/client/brain.py", line 73, in query
module.handle(text, self.mic, self.profile)
File "/home/pi/jasper/client/modules/MPDControl.py", line 47, in handle
music_mode.handleForever()
File "/home/pi/jasper/client/modules/MPDControl.py", line 160, in handleForever
self.mic.say("Playing %s" % self.music.current_song())
File "/home/pi/jasper/client/modules/MPDControl.py", line 204, in wrap
return func(self, *default_args, **default_kwargs)
File "/home/pi/jasper/client/modules/MPDControl.py", line 283, in current_song
item = self.client.playlistinfo(int(self.client.status()["song"]))[0]
KeyError: 'song'
I saw that the MPDControl.py is rewritten at jasper-dev

Which version of MPD and MPC are you using ?


hook new Image endpoint into main Linode object

The linode.image namespace was missed in https://github.com/rick/linode/pull/23
displague@i:~/src/linode$ bundle exec irb -I lib
irb(main):001:0> require 'rubygems' ; require 'linode';
l = ::Linode.new :api_key=> 'abc123'
=> #<Linode:0x00000001e5ef60 @logger=nil, @api_key="abc123">
irb(main):002:0> l.image.list
NoMethodError: undefined method `image' for #<Linode:0x00000001e5ef60>
	from (irb):2
	from /usr/bin/irb:11:in `<main>'

The tests don't catch this because they jump right into the Linode::Image class, without using the Linode namespaces.
With this PR:
irb(main):005:0* l.image.list
=> [#<Linode::OpenStruct last_used_dt="", minsize=1, description="test description imageid1", label="test label imageid1", creator="displague", status="deleted", ispublic=0, create_dt="2014-09-03 00:53:21.0", type="manual", fs_type="ext3", imageid=9610>, ...]
irb(main):006:0> l.image.delete :imageid => 9610
=> [#<Linode::OpenStruct last_used_dt="", minsize=1, description="test description imageid1", label="test label imageid1", creator="displague", status="deleted", ispublic=0, create_dt="2014-09-03 01:17:27.0", type="manual", fs_type="ext3", imageid=9610>]

I see the need for testing that namespaces exist within Linode, but I'm not sure how you would approach this.
Check for the existence of the tested item within Linode from each spec/linode/*_spec ?  Or would you have linode_spec check all known names (seems pointless) or derive the names from a directory listing?

Hi,
please merge this pull request. I'd would use it as well.
I just used it and it works great.
Thanks a lot. :)

+1 This will be useful

:+1: gimme! it's been almost a year


Slight change in data returned by readRow

To get one of the specific test cases passing for readRow, we need a slight fix to the way returned data is parsed.

it'd be nice for the commit message to mention that this is related to the test proxy and not the implementation itself 😊 maybe prepend testproxy:  to the title?

it'd be nice for the commit message to mention that this is related to the test proxy and not the implementation itself 😊 maybe prepend testproxy:  to the title?

Unfortunately for the conventional commits to pass we must prefix with a specific word. Probably test: in this case.
https://www.conventionalcommits.org/en/v1.0.0/
Maybe set to test: testproxy: Slight change in data returned by readRow?

maybe we can use: test(testproxy): read row should return a single row so that it's also a bit more descriptive of the change

for reference, I used chore in the commit I introduced the testproxy, ref: 0b3d996a667029cf2259dcc8f22d0dc537bf33f0


Live trading appears to be broken after this commit.

Live trading appears to be broken after commit af971ef3. I get to ---STARTING LIVE TRADING--- then nothing... Strangely, I can still toggle Manual mode, but nothing else. Rolling back to the previous commit locally takes care of the issue.

i can confirm this situation. Thanks @davidandrewcope for pointing this out. it was making me crazy when i was trying to figure it out yesterday and over night:S

It won't show anything until it received valid data, if you have short periods on a low volume exchange there is no data until the first trade is detected by the exchange.

After thinking about the problem a bit, I could probably add a check to detect that we don't gave enough data to start the reports and throw out a warning to the console in stead. I'll look at this in the short term.

https://github.com/carlos8f/zenbot/pull/470

same here, 1h later and my live trading on gdax is still empty

@dymex0 I'll investigate, GDAX uses a reverse history scan, it could be related. But for now can you please tell me the following.

Can you reproduce the problem with paper trading?
Which currency pairs specifically are you using on GDAX.
What parameters are you using for trading (basically strategy, and configuration options for it)

Thanks

I've found the problem, it effects any exchange platform that doesn't use timestamps for filtering/pagination. I'll have a fix in the next 24 hours.

Fixed in pull request 470


Add a warning note for common errors when specifying rules

When specifying a test in module.rules, webpack accepts either a regex or string. However it's easy to mistakenly qoute the regex which will cause webpack to not use the specified loader. I added this warning to help newcomers like me who might  stumbled into this situation save themselves frustrations and wasted time.

@montogeek, typos fixed thanks

Thanks!


Can no longer submit onboarding for a service with no product

I met with the Azure Migrate team today.  They have new ARM namespace and new management plane REST API Spec but the work is not associated with a new product.  I tried to onboard Azure Migrate service but the submit button is greyed out.  This was working previously as we have onboarded new services that do not have products yet and also onboarded teams that are working on non-APEX related work.

@JonathanCrd @maririos - It seems I can no longer onboard a service without a product.  This was working previously.

Actually, as we discussed, this use case is not covered by the onboarding questionnaire. Since the team does have at least one product, it won't allow the user to continue until selecting one.
Before making changes, I need to understand all the different possible scenarios in order to have a better design. I am keeping track of this discussion here:

https://github.com/Azure/azure-sdk-tools/issues/6059

As we discussed offline, this is part of uncovered scenarios for certain teams. I'm closing this issue in favor for #6059.


Django 1.9 depreciation issue

C:\w>manage.py makemigrations
C:\Python27\lib\site-packages\django\db\models\fields\subclassing.py:22: Removed
InDjango110Warning: SubfieldBase has been deprecated. Use Field.from_db_value in
stead.
RemovedInDjango110Warning)
No changes detected
pip freeze environment is Python 2.7.9 and django 1.9

+1

Duplicate of / fixed by #813.

Fix already merged.


add logs3request param

Sometimes, we need some debug logs of aws-go-sdk to dig into the problem.
So, add a logs3request param to control whether to output dbg info or not.
Signed-off-by: jimmyyan<EMAIL_ADDRESS>

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:jimmyyan/distribution.git somewhere
$ cd somewhere
$ git rebase -i HEAD~842362795336
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

Signed-off-by: jimmyyan<EMAIL_ADDRESS>

This PR's functionallity is a subset of #3057 and I think #3057 should be merged instead.

Closed in #4076


Speed test?

Does there speed test on model? Such as tactron2 and wavernn?

@jinfagang  You can find the latency of the available models here


New tap and target templates

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/2452
Originally created by @DouweM on 2020-11-16 16:13:33

To get us one step closer to https://gitlab.com/meltano/meltano/-/issues/2401 and https://gitlab.com/meltano/meltano/-/issues/2402, we can create new cookiecutter templates for taps and targets as a (more permissively licensed, e.g. Apache 2) alternative to the existing https://github.com/singer-io/singer-tap-template and https://github.com/singer-io/singer-target-template.
Meltano users will be able to easily create a new extractor/loader using these templates and https://gitlab.com/meltano/meltano/-/issues/2447. As we build the framework, we can update the templates to use it.

View 9 previous comments from the original issue on GitLab


Fix URL

Hi @yamatoya, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, AZPRBOT;

@yamatoya Thank you very much for your contribution!  I have sent the change to the author for approval.

I approve this PR.

Thanks for spotting this! However, due to how our articles are [published there are a few things that we still need in the links, and we do not require the .md extension. I will close this PR and fix the links! Thanks again!

Please close this PR.


Control AND/OR logic for Advanced Search

Is there a way to control the logic used for advanced search at run time so that, based on user input, I can programmatically set it to AND or OR?
Describe the problem your feature will solve.
User types "john" in the simple search box and searches, gets some results.  User opens the advanced search pop up and sees that all of the search fields are filled in with "john" (even integer and date fields).  User clicks the search button in the pop up and gets zero matches.  User is confused.  The issue is that the simple search box uses "OR" logic and the advanced search uses "AND" logic.
Describe the solution you'd like
Ideally, I would like something like a radio set at the bottom of the advanced search pop up that has two options such as "Match All" and "Match Any".
Describe alternatives you've considered
If there is a way to programmatically control the logic used by the advanced search, then I will find a way to prompt the user and set it accordingly.
Thanks, and great product by the way.

You could do the following:
    onSearch: function(event) {
      var obj = this;

      if (event.searchField === "multi") { // advanced search
        console.log("Advanced")
        obj.last.logic = 'AND'; // or 'OR', based on your use case
      } else { // simple search, either 'all' or a specific field
        console.log("Simple")
        obj.last.logic = 'OR'; // or 'AND', based on your use case
      }
      obj.postData.searchLogic = obj.last.logic;
    }

You could also "hack" into the search dialog and let the user select the search logic:
    onSearchOpen: function(event) {
      event.done(() => {
        var $td = $("td[class=actions]>div").first();
        $td.prepend('Logic: <select><option>AND</option><option>OR</option></select>')
        // todo: set logic on grid when selection changes
      })
    },

Fiddle (includes both suggestions): http://jsfiddle.net/gn6cbvf2/

Argee

Closing as implemented in w2ui 2.0


MB Arabic content: Search tab not working

When I searched for Arabic keywords such as "education, health and housing" and chose the Winnipeg site, I got no result.

We only support english and french for searching right now


Feature Request: Nested Resources / Routes

In the Rails world they use "Resources" to describe nested routes. Here's a reference for further reading.
http://guides.rubyonrails.org/routing.html#nested-resources
It would be great to add this feature to Yii2.
class Magazine < ActiveRecord::Base
  has_many :ads
end

class Ad < ActiveRecord::Base
  belongs_to :magazine
end

resources :magazines do
  resources :ads
end

The above code gives you these routes out of the box
GET      /magazines/:magazine_id/ads
GET      /magazines/:magazine_id/ads/new
POST     /magazines/:magazine_id/ads

+1

BTW some REST libraries (like restangular) allow you to do it out the box. So, if this ability will be on the server side - it would be really cool.

+1

Any suggestions for PHP syntax for the feature? i.e. how you want it to look in Yii terms when using it.

This could be a special URL rule class, which accepts 2 config parameters: 'modelClass' and 'relations':
'rules' => [
    [
        'class' => 'yii\rest\NestedModelUrlRule',
        'modelClass' => 'app\models\Magazine',
        'relations' => ['ads'],
    ],
],

@klimov-paul :+1:

@klimov-paul, I like that!
I would suggest doing it at the controller level.
Something along the below lines...
MagazineController extends Controller {
    public function resources() {
         return [
              AdsController::className()
         ];
    }
}

@klimov-paul it looks very good. It would be great to use arrays instead of string if we nee. E.g.
'rules' => [
    [
        'class' => 'yii\rest\NestedModelUrlRule',
        'modelClass' => 'app\models\Magazine',
        'relations' => [
            'ads' => [
                'relations' => [
                    'comments'
                ]
            ]
        ],
    ],
],

@usualdesigner , would your example allow all these routes to be exposed?
/magazine/:magazine_id:/ads
/magazine/:magazine_id:/ad/:ad_id:/comments
/ad/:ad_id:/comments
/ad/:ad_id:/comment/4

As I was reading the rails docs, I found another interesting, and related concept is Shallow Nesting and Routing Concerns.
http://guides.rubyonrails.org/routing.html#routing-concerns

This matter concerns not only URL routes but controller actions as well.
I am afraid we are outmatched against Ruby here.

any progress on this ?
A POST to /magazine/:magazine_id:/ads should correctly assign $ads->magazine_id before saving the new created data for example.
By initialising a modelClass instance in yii\rest\NestedModelUrlRule is that also mean modifying the activeController class by serving its actions different dataProvider instances ? or it is about building a new class to handle CRUD's ?
@klimov-paul do you have a suggestion about how to properly relate models if using this special URL rule class ?

related/duplicate of #9474

Here's my API update leveraging existing relationships in the models.
// controllers/MagazineController.php
MagazineController extends Controller {
    public function actionAd() {
         return $this->resource(Magazine::className(), 'ads');
    }
}

// controllers/AdController.php
AdController extends Controller {
    public function actionMagazine() {
         return $this->resource(Ad::className(), 'magazine');
    }
}

// models/Magazine.php
Magazine extends ActiveRecord {
    public function getAds() {
         return $this->hasMany(Ad::className(), ['id' => 'ad_id']);
    }
}

// models/Ad.php
Ad extends ActiveRecord {
    public function getMagazine() {
         return $this->hasOne(Magazine::className(), ['ad_id' => 'id']);
    }
}

I think this approach is a lot more familiar/flexible.

+1

I also found this feature in Laravel: http://laravel.com/docs/5.1/controllers#restful-resource-controllers

here's my suggested interface for modifying the query or data
https://github.com/yiisoft/yii2/issues/7184#issuecomment-73396628
however it is more generic and doesn't exactly do it as relations
the advantage of my approach is that for example
GET /magazines/1234

returns a 403 only for that specific 1234 ID for the magazine
then
GET /magazines/1234/ads/456 or /magazines/1234/ads

will also return a 403
now i am not sure if this is a desired behavior or not

+1, also you can just write custom urlrule...
http://stackoverflow.com/questions/27798088/yii2-nested-resources-best-practice

Here is an extension doing that: https://github.com/tunecino/yii2-nested-rest

+1


Initialize cargo xtask

Makes progress towards #172, setting up the skeleton for cargo xtask and moving the self_build command into it as cargo xtask build. I intentionally kept this minimal, so it wouldn't interfere with the existing shell script refactoring. Thanks!

I tried moving all of bin/self_build to exist under xtask. But it seems that the build.rs in jco's root is load-bearing. I'm not exactly sure when it's supposed to run or what it's for - so some guidance on that would be helpful.

Yay okay, I think I'm getting the hang of the various build scripts. The issue was that I wasn't updating the package.json scripts to point to xtask, so every time I moved something it would break. I'm feeling somewhat confident I can move more things now!

Okay, I think this should be ready for review now. To explain the changes I've made in this PR:

Added a new cargo xtask sub-command. This provides a central location for all Rust-based project scripting, like a counterpart to npm scripts.
Added cargo xtask build-self, which replaces the previous cargo run functionality.
Added cargo xtask build, which is equivalent to calling cargo build --workspace --target wasm32-wasi --release && cargo xtask build-self.
Added cargo xtask build-shims, which replaces PREVIEW2_SHIM_TYPES=* cargo build -p jco

The only strange bit I haven't been able to figure out is that seem to need a  binary being built in the project root, even if it's entirely a no-op. I've removed both the build.rs and main.rs files, as well as all dependencies and the project builds. But if I remove the project, we get a linker error. I'm still not sure why, but for now I've just named the binary dummy and stripped it from everything else. I think we can fix this in a follow-up, but help on why this might be needed would be very welcome!


Speed parameter

Hi
First of all, thanks a lot for releasing this code! I've been running some simulations, and I've one question: What's the value "speed" in this line? I've seen that that value is stored in this vector . But is that vector used elsewhere in the code?
Thanks!

The speed parameter indicates a nominal speed of quadrotor, but it is not utilized in this work due to limitation of the ECBS algorithm. (ECBS needs the assumption that the speeds of all quadrotors are equal.) It will be used in future work. Thank you for your attention!


Accept any number of space superior at 2 for indentation

Hello,
I work on project that have 2 or 4 spaces for indentation and I wonder if it's possible to set up php-cs-fixer to accept any number of space superior at 2 for indentation ?
If yes how ? If no is it possible to add it please ?
Thanks !

Hi @Paviluf ,
You can configure the indentation through the configuration you use for the fixer. Therefore you need a configuration file. Details about this file can be found in the README, for the indentation search for ->setIndent  to find the relevant details.
Mixing two types of indentation is not something the fixer support, currently you can use 4-spaces or tabs, I'm not sure if 2-spaces is (still) supported.

Thank you but it's not really practical. It will be great if we can have a setting to detect the indentation and format the code accordingly.

Some rules will detect the indentation and try to preserve it or apply it to the code these modify.
The ones that don't detect the indent use the configured indentation.
While this is indeed a limitation that might not be very practical in your use case it is done for a reason.
The tool is designed to change code into one style that can be defined through configuration, it is not meant to fix to multiple/dynamic styles.
I would advice:

reconsider using one style in the project
if not possible; make two configuration files; one for each style for each set of files
if not practical either I would remove the indentation fixer for the configuration

To remove the indentation fixer I just need to remove setIndent() from the config ?

the rule is called indentation_type, either remove it from you config or if it is imported through a set you can disable it later on using indentation_type => false in the ->setRules([ part of your configuration file

OK thank you !

Closing as question had been resolved


Add script to run CMG batch update routine

Try running python run_metacamel.py --help :)

Hey dude, I am having trouble running this and I think it's because I am using Python 2.7 and not Python 3. Does this sound right?

Yes. I am using 3.5. What problem are you getting? You can create an issue for this if you want. There are ways to fix up the code to make it able to run on either, but it can take a bit of effort. I have not put in that effort...

It's with urllib, as far as I can tell. Perhaps there are some other imports that will fail, as well. Is the effort involved try/except statements? I guess I'd have to use urllib2 equivalents...
Perhaps I should try to work in Python 3... been putting it off for so long...

If it's this line causing the import error then we can get around it with try ... except. We should look at how other people do it, e.g. requests itself.
IMHO it is both good to keep Python 2 compatibility, and good to move to Python 3... if only for the better unicode support.


#12: Add Permission Denied handling

Here is an implementation for @DeniedPermission annotations. I have seen that you are currently re-writing the processor in Kotlin, however I chose to extend the Java implementation to avoid conflicts.

Added new annotations @DeniedPermission & @DeniedPermissions, which can be used to react to denied requests for permissions
Extended annotation processor to include the corresponding callbacks
Added tests for the new annotations

This fixes #12

First of all, thx for your great work. I'm gonna check it.

About processor test, could you add these cases? The change will be perfect!

you have one DeniedPermissions which fits to NeedsPermissions (valid)
you have one  DeniedPermission and there is no fitted NeedsPermissions (valid)
you have duplicated value in DeniedPermission and DeniedPermissions (invalid)
you have private methods annotated with DeniedPermission and DeniedPermissions (valid)

@aurae Just finished code review. I really appreciated for your contribution :+1:

you have private methods annotated with DeniedPermission and DeniedPermissions (valid)

Wouldn't that be an invalid case because of the private modifier?
Thank you for the code review! I will update the PR shortly.

Sorry I mean "valid" is "not throwing RuntimeException". So you can test when fitted NeedsPermissions is not in the class DeniedPermission annotated class never be called.
I mean I'd like to check Exception will be thrown or not, like that

Do we want to allow that? I would argue that a "Denied" callback without a matching "Needs" method doesn't provide much utility, and might even cause confusion for a library's user (i.e. "why is my callback not invoked?"). For now, I will implement the test case like you said, though!

Okay, so we are talking about the same thing, then :) just wanted to make sure.

That is make sense. But there is no implementation right? May be you can check in RuntimePermissionsAnnotatedElement's constructor but it is not necessary stuff but better.

@hotchemi I have updated the PR according to our discussion! :+1:

@aurae really thx! I'm gonna update readme and some stuff and release 1.2.0!


Bukkit5177 problem!!!!

The server has a aether that i created, with many awesome projects, but when i upgrade bukkit to 5177, or 1.0..0, i can import the AETHER!!!!!!! its really bad. I go to 1.0.0 onto my server, and then i type /mv import gold_tlc skylands and it says INVALID ENVIRONMENT. Valid Environments are: Normal Nether Skylands. I tried capitalizes, and without s. wouldnt work. PLZ come up with a update that fixes the bug.

sigh
It's all in the wiki: FAQ

LOL

As a side note, @foreverblu your version of MV is out of date. Grab a build that works with MC 1.0.0 @ ci.onarandombox.com

ill try.....but it doesnt say that they have one
On Dec 12, 2011, at 11:31 PM, Eric Stokes wrote:

As a side note, @foreverblu your version of MV is out of date. Grab a build that works with MC 1.0.0 @ ci.onarandombox.com

Reply to this email directly or view it on GitHub:
https://github.com/Multiverse/Multiverse-Core/issues/307#issuecomment-3107413


Add Actor Interrupt Movement event

Causes an actor to cancel its current movement event and stop at the next tile coordinate.
Inspired by this issue: https://github.com/chrismaltby/gb-studio/issues/1019
GB Studio counterpart: https://github.com/chrismaltby/gb-studio/pull/1036

That feature need more complex solution, because you may have several concurrent scripts, which are moving several different actors. Actor movement code will be refactored.

I'm not sure I understand, this seems to work fine with multiple actors moving with their own update scripts. Of course, I would not be surprised to learn there are complexities I do not understand.
https://user-images.githubusercontent.com/371786/151747065-361d7e93-8509-49ed-a61a-e5c62188b69b.mp4

sorry, i looked through at night and did not notice that movement_interrupt is a property of actor, which is correct. grid snapping code looks a bit obscure. it also fires every loop, because actor->movement_interrupt is not reset after setting new destination.

also please make the commit with the example project

All fair points, I will address them ASAP.

I'm not sure how I would make the grid snapping function less obscure. I added some comments and a const define to try to explain what it's doing a little better.

ok. only please fix some style (brackets):
if ((actor->pos.x < params->X) && (actor->pos.x & LOWEST_7_BITS)) {
and probably
params->X = (actor->pos.x & ~LOWEST_7_BITS) | 128;
will generate better code, need profiling.
LOWEST_7_BITS is not a good name either: why 7 bits, say, not 5? probably something like TILE_FRACTION_MASK will be better. also define ONE_TILE_DISTANCE 128

Thank you, those are excellent suggestions. I always struggle with naming
things, yet they seem so obvious now that you say them. I'll go ahead get
those all implemented.
On Mon, Jan 31, 2022 at 3:41 PM Toxa @.***> wrote:

ok. only please fix some style (brackets):
if ((actor->pos.x < params->X) && (actor->pos.x & LOWEST_7_BITS)) {
and probably
params->X = (actor->pos.x & ~LOWEST_7_BITS) | 128;
will generate better code, need profiling.
LOWEST_7_BITS is not a good name either: why 7 bits, say, not 5? probably
something like TILE_FRACTION_MASK will be better. also define
ONE_TILE_DISTANCE 128
—
Reply to this email directly, view it on GitHub
https://github.com/chrismaltby/gbvm/pull/138#issuecomment-1026189766,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAC2YSSBRSWQZHH7X36CWATUY3XXDANCNFSM5NE75MRQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>


Cop idea: check for alphabetically sorted require statements

I am curious to know what the community thinks of this.
I find it useful when require statements are alphabetically sorted.  It makes it easier to check for a specific library, and I think it looks more aesthetically pleasing.
Something that could complicate this: are require statements inside of methods frowned upon?  Regardless of library size/frequency of use, should they always be placed at the beginning of a file?  If interspersed require statements are valid, this cop could just check that any "grouped" require statements are alphabetical.
Related but probably a different cop, rubocop does not check for redundant require statements (even on subsequent lines).
RuboCop version
$ rubocop -V
0.45.0 (using Parser <IP_ADDRESS>, running on ruby 2.3.1 x86_64-linux)

The sorting of require statements could also be extended to load.

If interspersed require statements are valid, this cop could just check that any "grouped" require statements are alphabetical.

We could probably combine require "groups" for a user and the majority of the time everything would work fine. In practice, code and style can get very weird so I agree that it wouldn't be worth trying to combine groups. I think this is the same sort of functionality that was introduced with Bundler/OrderedGems.

Related but probably a different cop, rubocop does not check for redundant require statements (even on subsequent lines).

Correct, as far as I know of, there is not a cop taht checks for this.

After giving this some thought, this may not be the best idea since some calls require might depend on other classes that do not precede it alphabetically. I still like the idea of alphabetizing when possible. Maybe this cop should be disabled by default since it is likely to break code.
From RuboCop's own source code (lib/rubocop.rb)
54 require 'rubocop/cop/mixin/configurable_max'
55 require 'rubocop/cop/mixin/code_length' # relies on configurable_max
56 require 'rubocop/cop/mixin/classish_length' # relies on code_length
57 require 'rubocop/cop/mixin/configurable_enforced_style'

@rrosenblum  Maybe it makes sense to do alphabetical paragraphs:
54 require 'rubocop/cop/mixin/configurable_max'
55
56 require 'rubocop/cop/mixin/code_length'
57
58 require 'rubocop/cop/mixin/classish_length' # relies on code_length
59 require 'rubocop/cop/mixin/configurable_enforced_style'


Problems after boot

« [    42][E][Pref[    44][E][Preferences.cpp:483] getString(): nvs_get_str len fail: STA_SSID NOT_FOUND
[    44][E][Preferences.cpp:483] getString(): nvs_get_str len fail: STA_Password NOT_FOUND
[  2168][E][WiFiSTA.cpp:232] begin(): SSID too long or missing!
E (2147) SPIFFS: mount failed, -10025
[  2171][E][SPIFFS.cpp:89] begin(): Mounting SPIFFS failed! Error: -1

Did you flash the filesystem? Because it can't be mounted.


Build container: /gobin thrown away on each invocation

On a fresh run of the build container, GOBIN=/gobin, and /gobin is empty. When running make init, we store the envoy binary there: https://github.com/istio/istio/blob/94c8d78639bcc92502e0ecb148abea51eb94334d/bin/init.sh#L29
Then, we throw away gobin on the next run, so we lose the envoy binary and things break (try make pilot-test. It may work the first time if you don't have out/linux_amd64/istio_is_init file, but will fail the next time).
Its not clear to me why we have /gobin instead of just using /go/bin.
This can be fixed by export GOBIN = $(GOPATH)/bin in the makefile (or the docker image), but I am not sure if this is a good fix.

Will test. envoy is supposed to output to out/os_arch/envoyblob, not to /gobin.
Cheers
-steve

Fixed by putting it in out/


[bug] Adding the "webview" attribute to capabilities does not give plugin permissions on additional webviews

Describe the bug

Opening a new issue because the last one was closed -> https://github.com/tauri-apps/tauri/issues/10298

I want to invoke a command inside an additional webview with the initialization_script but I get a permissions error.
This is how my code looks like:
let mut webview_builder = WebviewBuilder::new(label, WebviewUrl::External(url))
  .initialization_script(
    r#"
      window.__TAURI_INTERNALS__.invoke("plugin:security|my_plugin", { foo });
    "#,
  );
window.add_child(
  webview_builder,
  PhysicalPosition::new(x, y),
  PhysicalSize::new(X, y),
)

My webview labels are created dynamically and they are always different. The flow is like this: an user clicks on a link in my app, that opens a new webview, and the label is an ID related to that link.
I have tried 3 things on my capabilities file based on @amrbashir suggestions:

Set "webviews": ["*"] so It accepts all webviews.
Preappend some text to the webview label, like: label: 'webview-${ID}', and then add it to the capabilities: "webviews": ["webview-*"].
Hard-code the label as label: "childWebview" and add it like you suggested: "webviews": ["childWebview"].

None of them worked.
Reproduction
No response
Expected behavior
No response
Full tauri info output
[✔] Environment
    - OS: Mac OS 14.3.1 X64
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.79.0 (129f3b996 2024-06-10)
    ✔ cargo: 1.79.0 (ffa9cf99a 2024-06-03)
    ✔ rustup: 1.27.1 (54dd3d00f 2024-04-24)
    ✔ Rust toolchain: stable-aarch64-apple-darwin (default)
    - node: 20.13.1
    - pnpm: 9.1.2
    - npm: 10.5.2

[-] Packages
    - tauri [RUST]: 2.0.0-beta.23
    - tauri-build [RUST]: 2.0.0-beta.18
    - wry [RUST]: 0.41.0
    - tao [RUST]: 0.28.1
    - tauri-cli [RUST]: 1.5.14
    - @tauri-apps/api : not installed!
    - @tauri-apps/cli [NPM]: 2.0.0-beta.20

[-] App
    - build-type: bundle
    - CSP: unset
    - frontendDist: ../../dist/apps/exam-web
    - devUrl: http://localhost:3000/
    - framework: React
    - bundler: Vite

Stack trace
No response
Additional context
No response

@amrbashir Any ideas?

@amrbashir could you check this issue pls?


Implement #1156 by having the server send Ping messages

This change teaches HubEndpoint to send PingMessage.Instance to the client at regular intervals, if no other messages have been sent. But only for SSE and WebSockets.
I found a sneaky and possibly ingenious (or possibly terrible) way to implement keep-alive. Since the HubEndpoint already creates a Channel that it uses to marshal writes from multiple writers, I just wrap it in a special ChannelReader that emits PingMessage.Instance if WaitToReadAsync blocks for more than the desired interval.
There is a feature, IConnectionInherentKeepAliveFeature, that indicates if a transport has "inherent keep-alive", like Long Polling (for which the poll itself serves as a way for the client to tell if the server is gone)
Notes:

package-lock.json got changed, but I sense it will keep changing if we don't check in the changes, they're just ordering changes, no new packages.
The Redis Docker tests are flaky on my home desktop (seems to be more than just #1160 after all @BrennanConroy) so I had to disable them

:up: :date: Tried a different approach to appease @davidfowl (and my own conscience)

Spec update in this PR?

No spec update. The only thing needed in the spec is the Ping frame. I'd argue that keep-alive behaviors are policy/config, not spec. I can look at throwing a sentence or two in though.

It says "Either endpoint may send a Ping message at any time.", I don't see a good reason the client should be sending pings

There are reasons for an implementation to want that. I'd rather keep the spec open. Just because it says an endpoint "may" do something doesn't mean our implementation has to do it.

:'( easy to shoot yourself in the foot

How so? There's no mechanism in our client to send a Ping message, and the server is tolerant of receiving them.

If someone makes a client exactly like ours except it sends keep-alive, then that will cause the server to stop sending keep-alives and then the client could timeout since it doesn't receive a keep-alive. Not a big problem I guess

Discussed with @BrennanConroy offline, he was slightly confused and we're all good 😃

To clarify the behavior to avoid confusion: The keep-alive timer is only reset when a message is sent by the server. Receiving messages from the client does not reset the timer.

:up: :date:

:up: :date:

:up: :date: @davidfowl - This covers some of our in-person discussions. It needs a little clean-up, but the gist is what we talked about.

:up: :date: after discussions with @davidfowl, tests don't pass yet, but the pings are indeed sent.

Pushed some test fixes, but I'm not happy with it. I think the HubLifetimeManager tests are too low-level and brittle. I want to rewrite them to use HubEndpoint but I don't have the time to do that today, I'll look at it tomorrow.

I gave up trying to make the tests less brittle. It meant refactoring a huge amount of unit tests (because I needed to make TestClient changes to make it clean). I'm sure I could spend more energy and figure out an easier refactor, but I just don't have that kind of time :).
:up: :date: ready for review again. Tests pass, and we're now using a single heartbeat tick for all connections.

@anurse seems the tests are still failing. Do you know why?

Not tests, compile error :D

*sigh* fixed

:up: :date:


[deps] - Remove unused monolinker

PR Details
Description
This PR removes unused dependency from stride project.
Related Issue
https://github.com/stride3d/stride/issues/1394

Thanks !


pkg-config needs prefixes and wrappper like cc and binutils

Pkg-config needs a wrapper, so we we have ${target-prefix} pkg-config and BUILD_PKG_CONFIG_PATH environment variables.
CC @matthewbauer

Just adding a note here to remove this workaround if support for prefixed pkg-config is merged into nixpkgs:
https://github.com/NixOS/nixpkgs/blob/92d9d07c61d06c044af0261ab1741340151e4d3b/pkgs/development/libraries/ffmpeg/generic.nix#L166

This is solved by https://github.com/NixOS/nixpkgs/pull/87705.


New sample script: list sites where the particular app is installed

Docs

Author
n/a

Original Post
n/a

Description
List all sites where the particular app is installed

Keywords
SharePoint Framework Governance

Hi @waldekmastykarz
Do we just want to iterate all the site collections present in the tenant and check for the site collection app catalog and see if the id of the app or name of the app provided is present or not in the sample

Initially, the idea was to get the list of all sites in which the particular app is installed, in case the app hasn't been deployed globally to all sites. I don't know off the top of my head if a site collection app catalog would change anything with regards to how an installed app is detected, but it would be good to verify that in both cases apps are being correctly picked up. Would you like to give it a try? 🙂

yes sure @waldekmastykarz
But I tried a few sets of command
spo app list -- But it only provides the list of application present in the app catalog and not the installed
spo app get -- Provides the information about the app but not where the app is installed
Sorry but I was not able to find any command which would list installed app in a site collection can you please guide on that

Yes, it seems that we're missing commands for this script. App instances can be retrieved using CSOM but we don't have it implemented in Office 365 CLI right now. Would you be interested in building this command first?

@waldekmastykarz I would like to give it a try

Awesome! Let's start by creating a new issue with the spec (we have an issue template for that). Once we've verified that we're thinking about the same, you can start working on it. Fair enough? 🙂

Yes Sure @waldekmastykarz
Let me create an issue with the spec

@kunj-sangani
Did you have a chance to look into this issue? Is there any progress?
I'm also interested in getting a list of sites where an app is installed (or at least a check if the app is installed on a particular site) 😄

@kunj-sangani
Did you have a chance to look into this issue? Is there any progress?
I'm also interested in getting a list of sites where an app is installed (or at least a check if the app is installed on a particular site) 😄
@waldekmastykarz
Is it possible to call REST API directly using CLI? I was thinking about a workaround like:
/_api/web/AppTiles?$select=Title

If I could call that in the authenticated context of CLI, that would be good enough for me...

Not at the moment, no, but you can get an access token from the CLI and issue the request using curl or a similar tool.

Thanks, found it! Token is also good enough 👍

May be of some interest, here is a script fragment for Azure DevOps that checks if an app is installed on the target site (assuming "ubuntu-latest" image, o365 CLI installed, and tenant, target_site, and app_name to be tenant name, site name, and the app name respectively.
- script: |
  CMD_GET_TOKEN=$(o365 util accesstoken get -r <TENANT>)
  echo "##vso[task.setvariable variable=SpToken]${CMD_GET_TOKEN}"

- script: |
  CMD_IS_APP_INSTALLED=$(curl -s -H "Authorization: Bearer $(SpToken)" -H "Accept: application/json" <TARGET_SITE>/_api/web/AppTiles?$filter=Title%20eq%20%27<APP_NAME>%27)
  echo "##vso[task.setvariable variable=SpAppInstalled]${CMD_IS_APP_INSTALLED}"

and the condition to use in some other task that depends on the fact if app is installed or not (quite dirty, it just looks for string matching app name in the stringified JSON returned by CURL, but was good enough for my purposes)
condition: contains(variables['SpAppInstalled'], '<APP_NAME>'])

Thanks for sharing @nbelyh 👍

Since we shipped #2025 we're no longer blocked and could pick this up again.

Hi @nbelyh and @waldekmastykarz,
I had a look into this.
Lookup the app by title or Lookup the app by ProductId.
What do you think about this approach:

loop over all sites using "m365 spo site classic list"
for each site call m365 spo app instance list and filter by title or productId

This should give you the desired results.
I was thinking about a practical example for SharePoint administrators. Imagine you have an app that is installed in the app catalog with a specific version. As an admin I want to be sure that when I am upgrading to the latest version from the app catalog, that all app instances in the tenant are being updated to the latest version.
If I am not mistaken, I have to know where these apps are installed to perform the desired upgrade operation.
Based on this assumption I was looking what values the m365 spo app instance list retrieves.

I am lacking the Version value of that specific app. Do you have any idea why it is not returned? Without this information I am not able to report all different versions of a specific app in my environment.
Cheers

At the time of creating this issue, the "app instance list" command did not exist, in fact it was added as a solution for this issue, if you look at the history of the linked issue above. It's implementation is based on /api/AppTiles like described here, but that API does not seem to provide any version information. To get the app version, that underlying SharePoint API needs to be extended, as far a I understand.

Hi @nbelyh ,
are you still interested in  creating the sample code from this issue?
We could then see if we should look for another usecase in a separate issue.
Cheers

@plamber from my side it's not needed, the code that would iterate all sites and then calling "app instance list" on each seems to be obvious. I.e. for me this issue was relevant one year ago, when "app instance list" did not exist, but not now.

What do you think about this approach:
Lookup the app by title or Lookup the app by ProductId.

loop over all sites using "m365 spo site classic list"
for each site call m365 spo app instance list and filter by title or productId

@plamber apps are deployed in a site collection app catalog but installed in a web, so if we're to get the list of all sites where the app is installed, we'd need to iterate over all webs and not site collections, right?

Can I take this?

You sure can! All yours @SmitaNachan


fixed your mom

#26
features: ______

Y'all I am glad Programming is still having fun but I'd appreciate not getting your-mom'd by my old robotics team again


Add secrets config to git ignore

Prevent secrets config from being committed.

@Kuldip-Nanda and I were playing around with recording specs from different local PowerVC environments - I noticed that the config/secrets.yml isn't included in .gitignore.


#23 - add swoole to template

Should be close #23

Codecov Report
Attention: Patch coverage is 0% with 60 lines in your changes missing coverage. Please review.

Project coverage is 62.79%. Comparing base (7d7719a) to head (1001ad6).

Files
Patch %
Lines

src/Infrastructure/Swoole/Http/RequestCallback.php
0.00%
38 Missing :warning:

...rastructure/Swoole/Http/RequestCallbackOptions.php
0.00%
14 Missing :warning:

...rastructure/Swoole/Http/CallableRequestHandler.php
0.00%
4 Missing :warning:

src/Infrastructure/Swoole/ServerRequestFactory.php
0.00%
4 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##               main      #40      +/-   ##
============================================
- Coverage     66.59%   62.79%   -3.81%
- Complexity      344      365      +21
============================================
  Files            64       68       +4
  Lines           991     1051      +60
============================================
  Hits            660      660
- Misses          331      391      +60

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


Fix OpenMM instantaneous temperature

There was a bug in the instantaneous_temperature feature for OpenMM engine snapshots. It did not set context with desired snapshot, so the temperature that returns was always the from the last snapshot the engine had generated. Fix, plus regression test, in this PR.
Should be ready for review as soon as it passes tests.

Looks good.


Enable ES6 by default

Hi, any plans to enable all ES6 features by default or possibility to have a permanent config option? (allowing to just run arangod with a double click)

On Windows you could simply create a shortcut with start up options...
Once the ES2015 features are stable in V8, they should become available by default in Arango, as soon as that v8 version has been integrated. Chrome is currently behind the release calendar and it will take a while until v47 is released I'm afraid. But as soon as it is, a sub version of v8 v4.7 will become stable as well and I hope it will make it into Arango 2.8

You can edit the arangod.conf and/or arangosh.conf file and add (for example):
[javascript]
v8-options = --use_strict

Cool, thanks!