Infinite reload loop when refresh token expires

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.14.2
Wrapper Library
Not Applicable
Wrapper Library Version
2
Description
When our users access our page and there is an expired refresh token in the cache,  acquireTokenSilent fails with the following error object:
{
"errorCode": "monitor_window_timeout",
"errorMessage": "Token acquisition in iframe failed due to timeout.",
"subError": "",
"name": "BrowserAuthError"
}
By following examples we do a acquireTokenRedirect with the required API scopes as input.
This redirects to B2C, which by using a cookie redirects back and the token endpoints return 400, going back to the original error in an infinite loop.
Clearing the browser cache (localstorage) fixes the issue. So I am looking for the right approach to solve this, i.e. by clearing the cache before doing the acquireTokenRedirect  call.
Error Message
400 Bad request
Token acquisition in iframe failed due to timeout.
Msal Logs
No response
MSAL Configuration
const authority = `https://${b2cSettings.tenant}.b2clogin.com/${b2cSettings.domain}/${b2cSettings.signInPolicy}`;
  return new PublicClientApplication({
    auth: {
      clientId: b2cSettings.clientId,
      redirectUri: `${window.location.origin}`,
      authority,
      knownAuthorities: [`${b2cSettings.tenant}.b2clogin.com`]
    },
    cache: {
      cacheLocation: BrowserCacheLocation.LocalStorage
    }
  });

Relevant Code Snippets
return this.authService.acquireTokenSilent({ scopes, account }).pipe(
      catchError(err => {
        this.authService.acquireTokenRedirect({
          ...this.msalInterceptorConfig.authRequest,
          scopes,
          redirectStartPage
        });
        return EMPTY;
      }),

Reproduction Steps
Wait for refresh token to expire without logging in (24h) or inject expired tokens into local storage then reload app
Expected Behavior
Not going into infinite loops
Identity Provider
Azure B2C Custom Policy
Browsers Affected (Select all that apply)
Chrome
Regression
No response
Source
External (Customer)

@jakobgn This error is thrown by acquireTokenSilent, not acquireTokenRedirect, and is expected when 3rd party cookies are blocked. Can you try to determine why this error is not being caught by your code?

@tnorling Sorry the description was not correct, it is indeed acquireTokenSilent that fails

And as I understand, the library should still work with 3rd party cookies blocked as it is 2.x with auth code and PKCE?
We also do catch the error, it is just not handled well by default (going in infinite reload loop). Maybe it is MSAL, probably B2C, but who knows really.

And as I understand, the library should still work with 3rd party cookies blocked as it is 2.x with auth code and PKCE?

Yes, the library will work in most scenarios where 3rd party cookies are blocked. The one thing that will not work with 3rd party cookies blocked is silent token renewal when the refresh token has expired (every 24 hours).
In this scenario you'll receive a monitor_window_timeout error such as the one you're getting. And you'll need to catch this and call acquireTokenRedirect as you're doing.
So it seems the error you're getting is probably expected and we just need to determine why you're getting stuck in a loop afterwards. Are you calling handleRedirectPromise anywhere to handle returning from the redirect?
Also you indicated that you're not using a wrapper library but the code snippet you shared looks like Angular. Can you please confirm whether you are using msal-browser on it's own or are you also using msal-angular?

Good points, thank you for your insight!
We are indeed using msal-browser in Angular without the Angular wrapper. We wanted to move to MSAL 2.0 before the wrapper was ready.
We are indeed calling handleRedirectPromise  in the authGuard which should be called on all authenticated page loads. I can look into if it gets called and completed before acquireTokenSilent
And we are sometimes manipulating the hash - will look into if that is also the case here, thanks

@tnorling
I have investigated a bit further based on your feedback. Our solution is more or less the same as https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-angular-v2-samples/angular10-browser-sample

The interceptor acquireTokenRedirect returns to our baseUrl with only #state in the url. It does not remember the furl href i.e. /user/settings.

this.authService.acquireTokenRedirect({
          ...this.msalInterceptorConfig.authRequest,
          scopes,
          redirectStartPage
        });

In our app component onInit we have some custom logic that routes the user to their start page based on token permissions. I.e. /dashboard for some users and admin/dashboard for others. This rerouting loses the url #state causing the infinite reload loop.
If I remove the rerouting, the looping stops but there is still a single awkward redirect happening after the timeout 5ish seconds after the app loads.
A possible fix is to append the #state when we do the rerouting. Perhaps we can live with a single awkward redirect.

On another note - there is some concern in our org about storing tokens in the browser storage. Do you plan to support storing tokens in memory (I think this is what Auth0 does)?

Sadly adding state to the route fragment like so /admin/dashboard#state=eyJpZCI6ImRlZjkw... does not fix the infinite reload 😢

Would it be a solution to just clear the cache for msal tokens before doing the acquireTokenRedirect? We don't mind that the user will need to do an interactive login after 24 hours - I think it would actually be preferable to limit access via stored refresh tokens as much as possible for security purposes

@jakobgn
I'm not sure I understand your scenario both the expected behavior as well as the current behavior. Can you please walk me through step by step how you want this to work and how it is working right now? For instance, you say only #state is in the url. Are you saying that AAD is redirecting back to your redirectUri with only #state and no tokens? Or is your app providing a custom state that you are using to handle the redirects between pages and appending this manually on redirects?

On another note - there is some concern in our org about storing tokens in the browser storage. Do you plan to support storing tokens in memory (I think this is what Auth0 does)?

This is supported by setting cacheLocation: "memoryStorage" in your MSAL config. API docs for reference. Be warned, however, that this can lead to a degraded user experience when using redirects as tokens will be lost on each page load.

Would it be a solution to just clear the cache for msal tokens before doing the acquireTokenRedirect? We don't mind that the user will need to do an interactive login after 24 hours - I think it would actually be preferable to limit access via stored refresh tokens as much as possible for security purposes

I'm not sure what you mean here or why this would help. Can you please clarify? Are you saying you wish to not hold access tokens in the cache and only use the refresh token to acquire new tokens? We don't provide a way to pick and choose like this.

@tnorling

I'm not sure I understand your scenario both the expected behavior as well as the current behavior. Can you please walk me through step by step how you want this to work and how it is working right now? For instance, you say only #state is in the url. Are you saying that AAD is redirecting back to your redirectUri with only #state and no tokens? Or is your app providing a custom state that you are using to handle the redirects between pages and appending this manually on redirects?

Sorry for the confusion. We are being redirected back from B2C with tokens and everything as expected. The issue is that we are navigating our users to a default page using the angular router when the page is done loading and the ACQUIRE_TOKEN_SUCCESS event is emitted from MSAL. This happens before MSAL is done timing out, which seem to cause the loop. Appending the #state to the new route did not help.

On another note - there is some concern in our org about storing tokens in the browser storage. Do you plan to support storing tokens in memory (I think this is what Auth0 does)?

This is supported by setting cacheLocation: "memoryStorage" in your MSAL config. API docs for reference. Be warned, however, that this can lead to a degraded user experience when using redirects as tokens will be lost on each page load.

We tried changing to memoryStorage as that would fix this issue but it seems like the tokens are not being cached properly. On every API call we make, MSAL fetches new tokens instead of retrieving them from the memory cache, but maybe I misunderstood the intent of memoryStorage. The documentation of this feature is very limited.

Would it be a solution to just clear the cache for msal tokens before doing the acquireTokenRedirect? We don't mind that the user will need to do an interactive login after 24 hours - I think it would actually be preferable to limit access via stored refresh tokens as much as possible for security purposes

I'm not sure what you mean here or why this would help. Can you please clarify? Are you saying you wish to not hold access tokens in the cache and only use the refresh token to acquire new tokens? We don't provide a way to pick and choose like this.

The issue is caused due to expired tokens being cached in the browserStorage. I am asking if clearing the browserStorage when we catch the timeout error would be a decent fix in this case.

@jakobgn

The issue is that we are navigating our users to a default page using the angular router when the page is done loading and the ACQUIRE_TOKEN_SUCCESS event is emitted from MSAL.

Got it. Can you please put a check in your code to detect when it's being run in an iframe? When your app is loaded in an iframe it should not do any navigation or manipulate the hash as it can cause race conditions like this. I suspect this navigation is causing the top frame's acquireTokenSilent call to timeout which means it's falling back to acquireTokenRedirect and causing your loop.

Appending the #state to the new route did not help.

I'm still not really sure I understand how state is playing into this. Can you please explain why this is important?

We tried changing to memoryStorage as that would fix this issue but it seems like the tokens are not being cached properly. On every API call we make, MSAL fetches new tokens instead of retrieving them from the memory cache, but maybe I misunderstood the intent of memoryStorage.

In-memory storage means the tokens will be cached in a variable on the PublicClientApplication instance. If the page is reloaded or PublicClientApplication is being re-instantiated all cache entries will be lost. Because you're using redirects to handle interactive auth I would expect this to happen at least every time you need to invoke interaction. If you're not changing routes or reloading the page and are still seeing cache misses then I would suggest debugging to see if PublicClientApplication is being re-instantiated somewhere.

The issue is caused due to expired tokens being cached in the browserStorage. I am asking if clearing the browserStorage when we catch the timeout error would be a decent fix in this case.

Generally we advise against manually clearing cache. The library should handle cleanup on it's own and the fact that you're getting a timeout error means that something is misconfigured, your best bet to is to solve the underlying problem.

@jakobgn

The issue is that we are navigating our users to a default page using the angular router when the page is done loading and the ACQUIRE_TOKEN_SUCCESS event is emitted from MSAL.

Got it. Can you please put a check in your code to detect when it's being run in an iframe? When your app is loaded in an iframe it should not do any navigation or manipulate the hash as it can cause race conditions like this. I suspect this navigation is causing the top frame's acquireTokenSilent call to timeout which means it's falling back to acquireTokenRedirect and causing your loop.

Sure - but my understanding was that the running in iframe is an implementation detail of MSAL so how do I know when it is running in an iframe? Which MSAL file can give me this information?

Appending the #state to the new route did not help.

I'm still not really sure I understand how state is playing into this. Can you please explain why this is important?

Fair - It is probably not important.

We tried changing to memoryStorage as that would fix this issue but it seems like the tokens are not being cached properly. On every API call we make, MSAL fetches new tokens instead of retrieving them from the memory cache, but maybe I misunderstood the intent of memoryStorage.

In-memory storage means the tokens will be cached in a variable on the PublicClientApplication instance. If the page is reloaded or PublicClientApplication is being re-instantiated all cache entries will be lost. Because you're using redirects to handle interactive auth I would expect this to happen at least every time you need to invoke interaction. If you're not changing routes or reloading the page and are still seeing cache misses then I would suggest debugging to see if PublicClientApplication is being re-instantiated somewhere.

Yea unfortunately it is fetching tokens on the same page several times without redirects. The only change being the configuration of  memoryStorage over localStorage and storeAuthStateInCookie:true.

The issue is caused due to expired tokens being cached in the browserStorage. I am asking if clearing the browserStorage when we catch the timeout error would be a decent fix in this case.

Generally we advise against manually clearing cache. The library should handle cleanup on it's own and the fact that you're getting a timeout error means that something is misconfigured, your best bet to is to solve the underlying problem.
Agree, it would be nice to solve the root cause. I feel MSAL should be able to handle expiring tokens more gracefully than a timeout after a failed call to the /token endpoint. It should be possible to check the expire time on the token before calling the /token endpoint to avoid the failed request?

@jakobgn

Sure - but my understanding was that the running in iframe is an implementation detail of MSAL so how do I know when it is running in an iframe? Which MSAL file can give me this information?

Use this: const isInIframe = window !== window.parent;

Agree, it would be nice to solve the root cause. I feel MSAL should be able to handle expiring tokens more gracefully than a timeout after a failed call to the /token endpoint.

To be very clear, the timeout is not caused by an expired token or a failed call to the /token endpoint. The timeout is caused by a race condition between your app's route changes and MSAL receiving the response from the server. There's unfortunately nothing we can do on our side to fix that or make it handle that scenario more gracefully.

It should be possible to check the expire time on the token before calling the /token endpoint to avoid the failed request?

This is how MSAL works. It first looks in the cache for a token and checks if it is expired. If the token does not exist or is expired it will attempt to renew using the refresh token and a POST request to the /token endpoint. If that fails due to an expired refresh token or other, MSAL will then open a hidden iframe to the /authorize endpoint and use the server's session cookie to sign you back in. The last step is what's failing.

@tnorling
isInIframe is always false, is that a bad sign?
I discovered that we initiate angular routing already as soon as we have an account object available starting the race condition in the case that the token is invalid. If I delay the routing until msal:acquireTokenSuccess has been emitted the loop is avoided but the app doesn't reroute at all in the case that there is a valid token in the cache so also a no-go unfortunately. Clearing the browser cache is still the only working solution so far.
It would be nice if MSAL could always emit an event when it is "done" so we can do our rerouting after that.
For any of the tried solutions the app hangs for 6 seconds after the failed /token call. Is that expected?

isInIframe is always false, is that a bad sign?

This should return false anytime this code is run in the top frame of the window. It should return true if it is run inside of an iframe. Unless your app is intentionally being embedded inside an iframe the only time this should return true is inside the hidden iframe that is used when the refresh token is expired.

It would be nice if MSAL could always emit an event when it is "done" so we can do our rerouting after that. Right now we cannot really trust the presence of tokens(as the refresh token might be expired) nor the msal:acquireTokenSuccess as it is not fired when the token comes from cache.

What you're looking for here is msal:HandleRedirectEnd which will be emitted after handleRedirectPromise has finished processing the hash. Additionally msal:acquireTokenSuccess does get emitted after a token is retrieved from the cache as seen here. It may be worth double checking that it's not getting fired in your case and spending some time debugging if that is indeed the case...
I would also highly recommend moving over to the msal-angular v2 library as that is now GA and may solve some of these issues you are having out of the box.

For any of the tried solutions the app hangs for 6 seconds after the failed /token call. Is that expected and can it be improved?

No this is unexpected. Is it succeeding after the 6 seconds or is it timing out still?

@tnorling
I updated our app to use the latest angular wrapper and it seemed to have fixed the issues mentioned here (hurray!). Thanks for the help.
The MSAL interceptor does multiple requests to the token endpoint instead of waiting for the first request to finish

We had a fix to this in our own version of the interceptor but it would be nice to have this as part of the framework. It is mentioned in a different issue though.

@jakobgn Great to hear, thanks for the update! The parallel requests issue will be resolved in the next release of msal-browser via #3837
As this issue has been resolved, I'll go ahead and close this but feel free to open a new issue if you run into anything else.


Make tests also check alg_states for equivalence

It is just checking the length like the others, but I cannot think of a reason for not including it. I ran into one issue earlier yesterday where detecting it would have helped, which is why I made this PR. Is there anything you (@vdwees) can think of why we should not include this check?


Fix slowdown in type inference involving union types

Fixes #5849.
When inferring types, if the source and target are both non-generic object types we don't descend into the types because it we know it won't produce inferences. However, in 1.7 all classes are generic because of the implied this type parameter, so we ended up doing a lot more work. With this PR, we check that the type references actually have explicitly specified type arguments and only descend into the types then.
I have manually verified that performance is back to where it was before.

:+1:

:+1:


queryDB provided in influxdb/client/README.md does not return correct error codes

So I realized that the queryDB function provided in client/README.md does not make proper use of Golang's return by named result parameter feature and returns successfully when it should not.
In queryDB() res and err are the named result parameters, however in the if-statement we create a local (to the if-statement) copy of err different from the result err which has already been initialized and set to 0 as the Golang named result parameter documentation states.
This causes no error to ever be returned when you query the DB as the err that returns from con.Query(q) is a local variable in the if-statement and the data within this variable is not transferred to the err result variable.  Simply pulling "response, err := con.Query(q)" out of the if-statement clause fixes this issue as the correct Query() error code is then mapped to the result err variable which the function initialized locally (and not the err variable which only the if-statement has scope over...)
func queryDB(con *client.Client, cmd string) (res []client.Result, err error) {
q := client.Query{
Command:  cmd,
Database: MyDB,
}
if  response, err := con.Query(q); err == nil {
if response.Error() != nil {
return res, response.Error()
}
res = response.Results
}
return
}
This is very bad as every call to con.Query() is believed to have been successful!

@stefanKnott your recent note to support@ mentioned you were running v0.8.8. Is this issue filed against 0.8 or 0.9?

Ah it only acts like this in 0.8 and not 0.9 as I now see through testing.
Apologies, I will close the issue.


How to Create a Posted Shipment via Web Service and AL?

Hi everyone,
I am currently working on D365BC extension, I'm not sure how to trigger the "post" action to let the sales order becomes a shipment. Or we could directly create a shipment use web service. I want to do a function that create the shipment base on the sales order information. Does anyone know how to do that in AL and use Web Service?
I have tied to send a POST request to posted shipment web service , it always returns errors. We are not sure what is the required fields. Otherwise, is it possible to trigger the “post” action through the OData to post a Sales Order to create a posted shipment?
Thank you guys!

Long terms we are working on making bound actions accusable in v2. That will enable you to apply the same patterns as we have used for page 5475 Sales Invoice Entity
Meanwhile there are serval ways that you can do a post a shipment.
On way could be to create a new table with a structure like
Order No.
Posted shipment no.
Expose this as an odata page or an API (yes you can do this now :-)
And if an entry with order no is insert the fire a post this order (as shipment) and end with updating the Posted shipment no.
Another way could be to expose a codeunit as soap and use this interface

Thank you for replying. Since our integration solution are use OData, so we create a new table and once we post a SO number, it will post this SO to Shipment in the oninsert trigger. Which is similar to the first method. Thank you so much.


Use organisation configuration

Does the stale bot currently support reading of the configuration from the organisation wide .github repository or would that same configuration need to be added to every single repository in the organisation?
See https://github.com/ArkEcosystem/.github/blob/master/stale.yml for example.

@faustbrian you can have a repository that contain the main configuration of stale, then in each repository just add the stale.yml file with an extend element (only needed if you need to configure it further for the repo).
See the following comment for more information: https://github.com/probot/stale/issues/141#issuecomment-402006522

So just having the global repository like ArkEcosystem/.github which contains a stale.yml should be enough to make it work without any further stale.yml files in other repositories if I don't have the need for further configuration if I got that right.
Then the question is why the bot isn't running on the organisation as it was installed a few days ago and said it will run after maximum 24 hours for the first time. Could the file location maybe be wrong?

ArkEcosystem/.github/stale.yml
ArkEcosystem/.github/.github/stale.yml

Currently I have the file at location 1 but #141 seems to indicate that option 2 is looked for even with the global .github repository which itself would represent the .github folder.

So just having the global repository like ArkEcosystem/.github which contains a stale.yml should be enough to make it work without any further stale.yml files in other repositories if I don't have the need for further configuration if I got that right.

If I have understood everything correct, then yes that should be enough. Assuming that you have also added the stale bot to the repositories you want it to run on as well.
I have never done it that way myself though, I have always added a stale.yml file in my own repo with the _extends: .github though.

Currently I have the file at location 1 but #141 seems to indicate that option 2 is looked for even with the global .github repository which itself would represent the .github folder.

option 2 would be correct in this case, using option 1 won't work.

Thanks, then there must be another issue as the stale bot is enabled on all repositories I want to use it on and the configuration is also in the right place since yesterday evening.
Will see if it runs within 24 hours from now or not.

Still hasn't run, will give the .github/stale.yml directly inside each repository a try.

@faustbrian Did you ever have any success with this?

@achandlerwhite I got it working with the setup of the below links.
https://github.com/ArkEcosystem/.github/tree/master/.github
https://github.com/ArkEcosystem/core/blob/master/.github/stale.yml

Thanks for the quick reply! I see, you had to put the _extends line in the other repo. It's a shame it doesn't work like the documentation states and you have to do that workaround.

I sure is a bit of an annoyance but at least it works with the workaround for now, maybe there will be a solution to this at some point by someone else.

Per the documentation, org-wide config stored in a .github repo should be honored?:

If configuration for your app is not available in the target repository, it will be loaded from the .github directory of the target organization's .github repository.

I have a setup for the @blockstack org: https://github.com/blockstack/.github/blob/master/.github/stale.yml
But it's not being applied to any of the repositories. Seems like either the documentation is incorrect or there's a bug in stale bot?


NEXT: v.0.1.0-alpha.21

Coverage remained the same at 100.0% when pulling 654f2337c0fbf1e5cf3d72ee268021838f88dfdf on dev into 98de7daa972f462b0b0c02b8c9e5a604e1011472 on next.


Map gives false error when using a struct as a key instead of a String

Heres the relevent RON set:
(
 tile_object_stacks: (
    tile_object_stacks:{
       (name:"Units"): (
           current_count: 0,
           max_count: 1
           )
      }
 ),
)

I get this error from the plugin at the opening ( for the key value (name:"Units")

map key or RONTokenType.} expected, got '('

Despite the error the file does load correctly into my program.

Yeah it's known issue, the plugin does not support objects and tupples as keys at the moment.


Including in Spring Boot project

Including the java-sdk as a dependency for a Spring Boot project builds properly, but results in a "NoSuchMethodError: Companion" exception at run-time when initializing an instance of the DaprHttp.
From investigation, it appears that this has to do with the okhttp library and version mismatches:
Without Spring Boot:
[INFO]    \- com.squareup.okhttp3:okhttp:jar:4.9.0:compile
[INFO]       +- com.squareup.okio:okio:jar:2.8.0:compile
[INFO]       |  \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.4.0:compile
[INFO]       \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.4.10:compile
[INFO]          \- org.jetbrains:annotations:jar:13.0:compile

With Spring Boot:
[INFO]    \- com.squareup.okhttp3:okhttp:jar:3.14.9:compile
[INFO]       \- com.squareup.okio:okio:jar:1.17.2:compile

Adding this explicit dependency to the POM fixed the problem:
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.0</version>
        </dependency>

I am scratching my head why this happens since a standalone Spring Boot project does not include the okhttp library, so I am not sure why a Spring Boot + Java SDK project would downgrade this dependency, and I was unable to determine it using the Maven dependency tool.
Referencing the dependency explicitly does fix the problem. Two asks:

Investigate if there is a better way to resolve this issue.
Add a note to the README to help others avoid this issue.

Duplicate of https://github.com/dapr/java-sdk/issues/515. You can work-around this by changing the Spring Boot version to one that uses a compatible OkHTTP version, or force a compatible OkHttp version in your project by adding the following dependency:
    <dependency>
      <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp</artifactId>
      <version>4.9.0</version>
    </dependency>

We had a note on this in the README.md file. Please, add it again.

To add a bit more detail regarding your first question: I believe the OkHttp dependency that you see when you do have Spring Boot is "managed" by the Spring Boot "Bill of Materials".


change load_dataset parameter

As I tried out your code, I found out that load_dataset part cannot load my data properly.
I've update the parameter of load_dataset and it works fine with me.

This is a helpful correction. Thank you for your revisions.


KOGITO-6981: SWF Editor - Viewer Look&Feel

Hey @romartin,
Could you please review this PR?
JIRA: KOGITO-6981
JIRA: KOGITO-6767
Thanks!

Hey @domhanak ,
You're the tester for the ticket. You want to take a look too?
Thansk!

Hey @romartin  @domhanak,
I updated the callback state icon to the latest version sent by UX and fixed right magin for long names without spaces.
Thanks!

oh sorry did not notice this - will finish tomorrow!

Hey @domhanak, @romartin
In regards with the issue with the text alignment.
If you reload the page and open any diagram for the very first time it works, however, if you reopen the same diagram or any other diagram without reloading the page it breaks.
It seems we have bug related to the Fonthandler when the text alignment is set to "LEFT". It loses/don't apply the margin setting when you reload the diagram or a load a different one.
Should we open new JIRA for this issue?
WDYT @romartin?
Thanks!

Hey @domhanak @handreyrc
Thanks, good catch on the issue about text wrapping. I just reported this:
https://issues.redhat.com/browse/KOGITO-7132
Let's address this before releasing, but let's try not blocking this PR for now. Are you agree on this?
Thanks in advance!


WIP: add a new endpoint to return resource info

Summary
Adding a new endpoint and handler to return some resource information.
Test
Will add unit test

Codecov Report
Attention: 169 lines in your changes are missing coverage. Please review.

Comparison is base (2c3419c) 72.60% compared to head (73809b8) 32.34%.

Files
Patch %
Lines

...m/github/ambry/clustermap/HelixClusterManager.java
3.84%
100 Missing :warning:

.../github/ambry/frontend/GetResourceInfoHandler.java
0.00%
48 Missing :warning:

...java/com/github/ambry/clustermap/ResourceInfo.java
0.00%
13 Missing :warning:

...hub/ambry/frontend/FrontendRestRequestService.java
0.00%
5 Missing :warning:

...ava/com/github/ambry/frontend/FrontendMetrics.java
0.00%
3 Missing :warning:

Additional details and impacted files
@@              Coverage Diff              @@
##             master    #2676       +/-   ##
=============================================
- Coverage     72.60%   32.34%   -40.27%
+ Complexity    11567     4475     -7092
=============================================
  Files           809      811        +2
  Lines         65755    65884      +129
  Branches       8030     8041       +11
=============================================
- Hits          47741    21307    -26434
- Misses        15389    42341    +26952
+ Partials       2625     2236      -389

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


aur builds do not cache output

On aur builds, pacaur does not copy the output *.pkg.tar.xz file from /tmp/pacaurtmp-// to /var/cache/pacman/pkg/ like pacman does with regular repository installs. I have seen this with other aur helpers, and would appreciate it.
As a side note, it would be nice for pacaur to check for a matching version in /var/cache/pacman/pkg/ before rebuilding from source. This may get tricky for git/svn/darcs/etc based development packages, but rebuilding those is usually desired.

Yes it does. You need to set PKGDEST in either /etc/makepkg.conf or $XDG_CONFIG_HOME/pacman/makepkg.conf. Another trick is to add an environment variable called AURDEST and pacaur will clone all builds in a fixed directory. All my packages get built in ~/source, and the final package ends up in ~/packages

Yes, that's implemented (by makepkg). Read the man page please.

cool, thanks for the info; I have had other aur helpers cache builds to var for the user, so I thought this burden was on the helper, it is awesome that makepkg does this for you.

@arnottcr Makepkg has always done it, at least as far as I can remember. The issue mostly comes from yaourt that duplicates existing settings in its own config file.

@rmarquis would it be of merit to better document this on the aur helpers or aur page on the archwiki, so that others do not make my mistake in the future?

@arnottcr It's already on the makpekg page. I wouldn't add it on the AUR page, since makepkg isn't AUR specific. Truly, I feel the issue is due to helpers unnecessarily duplicating settings, which confuses new and even older Arch users.

Alright, that makes sense; my thought was to link to the makepkg page in one of those two pages, as users could go to the helper page looking for how to change this behavior. But I am still new to arch, so I will trust your judgement.

@arnottcr The global consensus is that Arch users should learn to build manually with makepkg before using an AUR helper, so makepkg behavior is assumed to be known.
On a sidenote, this is also the reason AUR helpers are only available in the AUR and can't be installed without a manual install with makepkg.
Lastly, welcome to Arch, hope you'll enjoy it!

I follow you, that reasoning makes a lot of sense; thanks for your time and assistance with this.


C++ example: Reload app on NaCl module crash

Add code into the example C++ client app that triggers a self
reload when a fatal error with the NaCl module happens (e.g.,
when it crashes).

BTW, here's the internal bug for the context: http://b/138099922 (for Googlers only).


Update Project_doc.md

Added description of 7 Segment Display.

I guess, this PR can be closed too. Since everything that was required has been merged. Thank you.


Screenshot to clipboard accessible via /image tag

Purpose
The functionality I wanted to add was being able to use the /image tag to access screenshots taken with the CMD + OPTION + SHIFT + 4 combination (allows you to select an area to screenshot). The screenshots taken this way are stored in a temporary file such that their Clipboard.ReadContent entries return as follows.
{
    file: 'file:///var/folders/g1/rcmxcq7915g5l93035hf1g6c0000gn/T/Image%20(212x148)',
    text: 'Image (212x148)',
    html: '<img src="file:///var/folders/g1/rcmxcq7915g5l93035hf1g6c0000gn/T/Image%20(212x148)" alt="Image (212x148)" />'
}

Problem
Since a file property is present in this response, I have updated the GetImageFromFile function to handle URL's of this form. The two primary issue that this PR addresses is that the this file URL has an encoded space character, as well as no file extension.
Solution

To fix the encoded space, the file prop of the response is passed to decodeURI before being passed to readFileSync
To fix the lack of extension, a new library, file-type, is included to parse the images MIME type from the binary structure of the file as opposed to the extension. This was not possible with the old library

Thanks @AlexMcDermott for your contribution 🙏🏻. Nice job.

Cheers @MassimilianoPasquini97, when do you normally publish your changes?

I have done some refactor changes on Inference so I what to test it a little it more then usual. Probably I will upstrem all changes at the end of this week.


Separate testing purpose modules from demonstrating purpose modules.

same as https://github.com/apache/dubbo/pull/10923

Codecov Report

Merging #10999 (4e28661) into 3.1 (e7f0ee3) will decrease coverage by 4.59%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##                3.1   #10999      +/-   ##
============================================
- Coverage     69.29%   64.69%   -4.60%
- Complexity      106      477     +371
============================================
  Files          1464     1384      -80
  Lines         76024    58055   -17969
  Branches      13304     8514    -4790
============================================
- Hits          52678    37558   -15120
+ Misses        18719    16473    -2246
+ Partials       4627     4024     -603

Impacted Files
Coverage Δ

...center/initializer/ConfigZookeeperInitializer.java
0.00% <0.00%> (-68.75%)
:arrow_down:

...nter/initializer/DownloadZookeeperInitializer.java
0.00% <0.00%> (-38.75%)
:arrow_down:

...gistrycenter/processor/ZookeeperUnixProcessor.java
0.00% <0.00%> (-51.17%)
:arrow_down:

...java/org/apache/dubbo/integration/DemoService.java
0.00% <0.00%> (ø)

...apache/dubbo/test/check/registrycenter/Config.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...luster/router/script/ScriptStateRouterFactory.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...he/dubbo/test/common/impl/GreetingServiceImpl.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...dubbo/test/check/exception/DubboTestException.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...check/registrycenter/context/ZookeeperContext.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...trycenter/processor/ZookeeperWindowsProcessor.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 475 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


MusicPlayer Forward and Rewind not working

In Sample Music Player forward and rewind button not working how to solve this?

RW/FF depends on implementation, and it is not very useful for music playing. We will remove the unsupported RW/FF action.
btw we are redesign the seek UI (no longer use RW/FF action) for next release.


Update docs and sample Gatling docker image files

Description

Added User Guide #22 - https://github.com/st-tech/gatling-operator/commit/7cee0771d3a54409d56add51f36a02cce4845e1c
Updated README to shape descriptions on overview and features - https://github.com/st-tech/gatling-operator/commit/da4cedddd01c6b7d148d64c57fd1bf664ad19d82
Fix Makefile to adapt the update made in #37 - https://github.com/st-tech/gatling-operator/commit/b5aa13e4c5e383eb23187404ae909a799b6578c3
Update files included in default Gatling docker image -  https://github.com/st-tech/gatling-operator/commit/829bb43723bd0c4cca9af193421da673bd78b5d1 https://github.com/st-tech/gatling-operator/commit/d6f59d4e0e66f35d6c4f49c0d7a5e95ae1ed241c
Updated the sample comments on  AWS_SECRET_ACCESS_KEY env variable - https://github.com/st-tech/gatling-operator/commit/ce88b204f785374925fe14066fa157d5c5fedf1b

@tmrekk121
thanks for the review!!
The PR Reviewers,
I'm going to merge this shortly. Please feel free to leave comments even after the PR is merged. I'll take care of it


refactor: changed next iterator returning a callable

Which issue(s) this PR fixes

Fixes #517
Additional comments

Changed the __next__ function of the deployment_iterator to return a callable.
The current operation running is marked as RUNNING in the operation's database.

Agreements

[x] I hereby declare this contribution to be licensed under the Apache License Version 2.0, January 2004.
[x] I hereby agree to grant TOSIT a copyright license to use my contributions.

Should we replace:
if _:
    _()

By
_() if _ else None


Use jll method to run binary

It's worth considering if the interface to this package should use the same method as the one used by jll packages. This would look like
Tectonic.binary() do t
   run(`$t file.tex`)
end

The reason jll packages use this form is that it allows them the ability to manipulate the PATH and LD_LIBRARY_PATH before running the commands. Even though that might not be useful for this package now, I think its worth doing for two reasons. One, to ensure consistency across the ecosystem, and two, to keep open the possibility that the artifacts could be built and distributed by BinaryBuilder some day as jll packages.

Yeah, that sounds good. I've not got up to speed on the jll packages yet so wasn't aware of that interface, seems pretty reasonable to change it now in anticipation. Any good examples/docs to look at regarding the interface, or is it as simple as
function Tectonic.binary(f)
    # ... setup
    f(path_to_binary)
    # ... clean up
end

keep open the possibility that the artifacts could be built and distributed by BinaryBuilder some day as jll packages.

I gave BinaryBuilder a try first, but ran into some harfbuzz and icu issues that I couldn't solve with my limited understanding, but having this as a jll is the end goal once I, or someone else, manages to build from source.

or is it as simple as

pretty much. That is effectively how the jll wrappers do it.

I gave BinaryBuilder a try first, but ran into some harfbuzz and icu issues

Yes, those kinds of things are not fun, an our rust stack is also not the most mature. I'm sure it'll get done eventually, however, as an interim, repackaging the prebuilt binaries is a reasonable strategy. Here is an example. The (admittedly minor) advantage is that you don't have to download/upload or maintain the artifacts.toml by hand.

Thanks for the pointers.

Fixed in 6bdfd0b080c9cd7d5667dd057fea94bd6a41e026.


Layout/MultilineMethodCallIndentation requesting illogical results

I'm not sure if this is something that can realistically be "fixed", but wanted to just point out a scenario where Rubocop was throwing an error regarding Layout/MultilineMethodCallIndentation that is entirely illogical and results in less readable and maintainable code.

Expected behavior
I expect Rubocop to enforce Layout/MultilineMethodCallIndentation in a manner that provides clear, concise, logical results for multiline method call indentations, such that the following code would be considered valid:
      expect { post :parse_emails, params: params, format: :json }.to change { Membership.count }.by(0)
                                                                  .and change { Invitation.count }.by(0)
                                                                  .and raise_error(ActiveRecord::RecordInvalid)

Actual behavior
Rubocop expects the indentation to work at the end of each last method call, for each line, cascading down, like so
      expect { post :parse_emails, params: params, format: :json }.to change { Membership.count }.by(0)
                                                                                .and change { Invitation.count }.by(0)
                                                                                .and raise_error(ActiveRecord::RecordInvalid)

Steps to reproduce the problem
See the above code
RuboCop version
1.26.1 (using Parser <IP_ADDRESS>, rubocop-ast 1.16.0, running on ruby 3.1.1 x86_64-linux)
  - rubocop-faker 1.1.0
  - rubocop-performance 1.12.0
  - rubocop-rails 2.14.2
  - rubocop-rspec 2.9.0

Thanks everybody, I greatly appreciate the work you all do.


Added missing scale parsing in string_to_transform conversion function and fixed warning messages in simple_scene_loader

Hi Travis, thanks for your great effort and series on youtube! I am currently watching the simple scene parsing videos on YouTube and saw, that you forgot to parse the scale if the rotation is provided as euler angles. This PR solves this and adds the parsing of the scale. I also fixed the warning messages and typos in the simple_scene_loader file.

Hi there, @Cankar001 ! Thank you for submitting this.
I am just getting around to reviewing some of these PRs now, and it looks like this one now has a conflict. Would you mind resolving it and updating the branch? I'll approve it once this is done.
Thank you!


added a notebook tutorial on llama 3.2 new capabilities

What does this PR do?
This pull request (PR) adds a new notebook tutorial that showcases the latest capabilities of LLaMA 3.2.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[X] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

Thanks for contributing 🎉!

@Monireh2 Thanks for the PR-this is awesome!
Can you please add a Colab link in the readme and then merge?

Please remove the QR codes from the images directory and make sure you remove the ack and thank you sections. These are meant for external talks only. Thanks

@Monireh2 Thanks for the PR-this is awesome!
Can you please add a Colab link in the readme and then merge?

Thanks @init27! Updated the colab link!

Please remove the QR codes from the images directory and make sure you remove the ack and thank you sections. These are meant for external talks only. Thanks

Thank @varunfb! Removed unnecessary images, had removed ack and thank you section!


feature request: allow to use stding as input in an unix way

to have file as arguments like:
$ compact-json tests/data/test-11.json --indent 2 --max-inline-length 88
{
  "ObjectColumnsObjectRows": {
    "Vera": {"street": "12 Madeup St.", "city": "Boston", "state": "MA", "zip": "02127"},
    "Chuck": {
      "street": "994 Fake Place",
      "unit": "102",
      "city": "Las Vegas",
      "state": "NV",
      "zip": "89102"
    },
    "Dave": {"street": "1967 Void Rd.", "unit": "B", "city": "Athens", "state": "GA"}
  },
  "ArrayColumnsObjectRows": [
    { "type": "turret", "hp": 400, "loc": {"x": 47, "y": -4}, "flags": ["stationary"] },
    { "type": "assassin", "hp": 80, "loc": {"x": 102, "y": 6}, "flags": ["stealth"] },
    { "type": "berserker", "hp": 150, "loc": {"x": 0, "y": 0} },
    {
      "type": "pittrap",
      "loc": {"x": 10, "y": -14},
      "flags": ["invulnerable", "stationary"]
    }
  ],
  "DissimilarObjectRows": {
    "lamp": {"x": 4, "y": 1002, "r": 75, "g": 0, "b": 130, "state": 1},
    "address": {"city": "San Diego", "state": "CA"},
    "font": {"r": 0, "g": 12, "b": 40, "size": 18, "style": "italic"}
  }
}
$

and stdin this:
$ echo tests/data/test-11.json | compact-json  - --indent 2 --max-inline-length 88
 ...

I took into account the the less verbose help in https://github.com/masaccio/compact-json/pull/16/commits/050f80432977aeae20be61eef8e44b72775c320e but having a pytest with stdin working is not easy my side I did open this SO question: https://stackoverflow.com/questions/74978130/pytest-a-script-using-stdin-from-argparse

I have merged some of this and it's possible to use compact-json - but the Unix-style waiting on stdin isn't something I wanted and so the no arguments reading from stdin behaviour isn't merged. There's no reliable way across Unix/Windows to detect whether data is available on stdin to prevent the script from sitting waiting for a terminal in a console.


Can we customize the steps progress?

How can we customize the progress steps? I don't want the  and  approach.
How can this be done?
EDIT: Maybe even customize just the text of the em tag. I want a representative icon and not a number for example

we can take stepRenderer function as a prop and can use current one as default prop.
cc: @newbreedofgeek


Come up with nice strategy for deploying tier 1 infrastructure

We gotta start somewhere, so let's start from the measurements API, which include both the new ooni/data, but also the refactor 2024 API of the backend.
This task is about writing all the automation tasks to do CD/CI for it.

This is done.
We are using ECS to deploy the dataapi to ec2, with orchestration and CD/CI implemented using codebuild and code pipeline.
The Code Build and Code Pipeline tasks should be moved into terraform, but in terms of having a strategy, we have it (see: https://github.com/ooni/devops/issues/12).


ci(minifier): minifier benchmark measure only the minifier itself

#6222  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @overlookmotel and the rest of your teammates on  Graphite


Won't compile; problem with coercion of msplit

jeff@jbb-lenovo:~/code/logic/MiniKanrenT$ stack init
Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- MiniKanrenT.cabal

Selecting the best among 11 snapshots...

* Matches lts-9.14

Selected resolver: lts-9.14
Initialising configuration using resolver: lts-9.14
Total number of user packages considered: 1
Writing configuration to file: stack.yaml
All done.
jeff@jbb-lenovo:~/code/logic/MiniKanrenT$ stack ghci
MiniKanrenT-0.0.1: configure (lib)
Configuring MiniKanrenT-0.0.1...
MiniKanrenT-0.0.1: initial-build-steps (lib)
Configuring GHCi with the following packages: MiniKanrenT
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
[1 of 4] Compiling Control.Monad.LogicVarT ( /home/jeff/code/logic/MiniKanrenT/src/Control/Monad/LogicVarT.hs, interpreted )

/home/jeff/code/logic/MiniKanrenT/src/Control/Monad/LogicVarT.hs:57:55: error:
    • Couldn't match representation of type ‘m (Maybe
                                                  (a, LogicVarT m a),
                                                LVarData)’
                               with that of ‘m (Maybe (a, StateT LVarData m a), LVarData)’
        arising from the coercion of the method ‘msplit’
          from type ‘forall a.
                     StateT LVarData m a
                     -> StateT LVarData m (Maybe (a, StateT LVarData m a))’
            to type ‘forall a.
                     LogicVarT m a -> LogicVarT m (Maybe (a, LogicVarT m a))’
      NB: We cannot know what roles the parameters to ‘m’ have;
        we must assume that the role is nominal
    • When deriving the instance for (MonadLogic (LogicVarT m))
Failed, modules loaded: none.

Has anybody solved this issue?


[Bug]: slash_cmd required in custom prompt, or crash

Your minimal.lua config
-- I skipped this part

Error messages
   Error  00:10:12 notify.error lazy.nvim Failed to run `config` for codecompanion.nvim

...edrik/lazy/codecompanion.nvim/lua/codecompanion/init.lua:275: attempt to index field 'opts' (a nil value)

# stacktrace:
  - /codecompanion.nvim/lua/codecompanion/init.lua:275 _in_ **setup**
  - ~/.config/fredrik/lua/plugins/codecompanion.lua:34 _in_ **config**
  - ~/.config/fredrik/lua/config/lazy.lua:15
  - ~/.config/fredrik/init.lua:11

Health check output
N/A
Log output
N/A
Describe the bug
Right now, you must provide a slash_cmd to custom prompts, or there is a crash.
Reproduce the bug
Add the first custom prompt as described on this page and the crash/error will be hit, as it does not specify opts = { slash_cmd = "..." }.
require("codecompanion").setup({
  default_prompts = {
    ["My New Prompt"] = {
      strategy = "chat",
      description = "Some cool custom prompt you can do",
      prompts = {
        {
          role = "system",
          content = "You are an experienced developer with Lua and Neovim",
        },
        {
          role = "user_header",
          content = "Can you explain why ..."
        }
      },
    }
  }
})

Final checks

[X] I have made sure this issue exists in the latest version of the plugin
[X] I have tested with the minimal.lua config file above and still get the issue
[X] I have shared the contents of the log file

How and when does the crash occur? When you open the action palette?

The crash occurs as soon as require("codecompanion").setup is called. In my case, when Neovim is launched and plugins are loaded.


Add information to all interfaces managed by neutron

Currently only showing interface on one interface

For instance, the "tap" interface has no Neutron attributes

Fixed


Support get_url option for signature_request_file

Hello! I believe this is a PR for my company. I noticed a bug with multi signers. Any status update on this being merged?

@dudo - are you saying this pull request introduces a bug with multi signers? Or that there's a bug with multi signers and this fixes it?

I believe it fixes a bug...

@dudo Would you be able to document your issue regarding multi-signers on another thread? Perhaps an issue? We would be interested in learning more details about what you are discussing. I do not believe it is related to this pull request through.
This pull request is in regards to adding the get_url param to GET /signature_request/files/:signature_request_id
If you could document your issue above under issues, we could look into it. Thanks!

+1
What's the timeline for getting this merged in and the gem version updated?

@angelafield Any reason why this wasn't  included in the last version bump? It seems to be a straight forward fix and has specs in place.

@angelafield Thanks!


Issue with Google Music Manager Cask

Google Music Manager currently fails to install because it's unable to handle correct permissions requiring sudo for installing it's preference pane.
This should probably be escalated together with a similar problem with Parallels from #18638, as it looks like something broke the sudo handling, probably related to the new installation behavior from #13201 and #13966.
This single issue has low priority for me, but after this is the 2nd cask running into sudo issues with the new installation behavior, it's probably worth having a look into..
Bug description for this particular Cask
I removed all leftovers of previous installation and received this upon Installation via Cask:
 ~/Dropbox/Application Support/dotfiles/Update  brew cask install music-manager
==> Downloading https://dl.google.com/dl/androidjumper/mac/2431116/musicmanager.dmg
Already downloaded: /Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg
==> Verifying checksum for Cask music-manager
==> Moving App 'MusicManager.app' to '/Applications/Music Manager.app'
Error: It seems the Preference Pane source is not there: '/opt/homebrew-cask/Caskroom/music-manager/<IP_ADDRESS>6/MusicManager.app/Contents/Helpers/MusicManager.prefPane'

Like with Parallels, sudoing solves this:
 ✘  ~/Dropbox/Application Support/dotfiles/Update  sudo brew cask install music-manager
Password:
==> Downloading https://dl.google.com/dl/androidjumper/mac/2431116/musicmanager.dmg
Already downloaded: /Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg
==> Verifying checksum for Cask music-manager
==> It seems there is already an App at '/Applications/Music Manager.app'; not moving.
==> Moving Preference Pane 'MusicManager.prefPane' to '/Users/winkelsdorf/Library/PreferencePanes/MusicManager.prefPane'
🍺  music-manager staged at '/opt/homebrew-cask/Caskroom/music-manager/<IP_ADDRESS>6' (114 files, 1,6M)

Scenario 2: Uninstallation without sudo crashes, when previously installed with sudo
 ~/Dropbox/Application Support/dotfiles/Update  brew cask uninstall music-manager
==> Removing App: '/Applications/Music Manager.app'
==> Removing Preference Pane: '/Users/winkelsdorf/Library/PreferencePanes/MusicManager.prefPane'
Error: Permission denied - /Users/winkelsdorf/Library/PreferencePanes/MusicManager.prefPane/Contents/_CodeSignature/CodeResources
  Most likely, this means you have an outdated version of homebrew-cask. Please run:

      brew uninstall --force brew-cask; brew untap phinze/cask; brew update; brew cleanup; brew cask cleanup

  If this doesn’t fix the problem, please report this bug:

      https://github.com/caskroom/homebrew-cask#reporting-bugs

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1439:in `unlink'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1439:in `block in remove_file'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1444:in `platform_support'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1438:in `remove_file'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1427:in `remove'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:770:in `block in remove_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1477:in `block (2 levels) in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1477:in `block (2 levels) in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1477:in `block (2 levels) in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1481:in `postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1476:in `block in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1476:in `block in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1476:in `block in postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1475:in `postorder_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:768:in `remove_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:626:in `block in rm_r'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:622:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:622:in `rm_r'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/pathname.rb:570:in `rmtree'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:101:in `delete'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:34:in `block in uninstall_phase'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:43:in `block in each_artifact'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:42:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:42:in `each_artifact'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:31:in `uninstall_phase'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:298:in `block in uninstall_artifacts'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:295:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:295:in `uninstall_artifacts'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:286:in `uninstall'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/uninstall.rb:12:in `block in run'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/uninstall.rb:6:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/uninstall.rb:6:in `run'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:83:in `run_command'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:121:in `process'
/usr/local/Library/Taps/caskroom/homebrew-cask/cmd/brew-cask.rb:26:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Library/brew.rb:22:in `require?'
/usr/local/Library/brew.rb:93:in `<main>'

Full debug output without sudo
 ~/Dropbox/Application Support/dotfiles/Update  brew cask install music-manager --debug
==> Creating directories
==> Loading Cask definitions
==> Translating 'music-manager' into a valid Cask source
==> Testing source class Hbc::Source::URI
==> Testing source class Hbc::Source::PathSlashRequired
==> Testing source class Hbc::Source::TappedQualified
==> Testing source class Hbc::Source::UntappedQualified
==> Testing source class Hbc::Source::Tapped
==> Success! Using source class Hbc::Source::Tapped
==> Resolved Cask URI or file source to '/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/music-manager.rb'
==> Cask instance dumps in YAML:
==> Cask instance toplevel:
--- !ruby/object:Hbc::Cask
token: music-manager
sourcefile_path: !ruby/object:Pathname
  path: "/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/music-manager.rb"
dsl: !ruby/object:Hbc::DSL
  token: music-manager
  version: !ruby/string:Hbc::DSL::Version
    str: <IP_ADDRESS>6
    raw_version: <IP_ADDRESS>6
  sha256: e425d1724d092ae5ddfb28ad4304439754394b91ab3ff3063b66196d2ffe4bee
  url: !ruby/object:Hbc::URL
    uri: !ruby/object:URI::HTTPS
      scheme: https
      user:
      password:
      host: dl.google.com
      port: 443
      path: "/dl/androidjumper/mac/2431116/musicmanager.dmg"
      query:
      opaque:
      registry:
      fragment:
      parser:
    user_agent:
    cookies:
    referer:
    using:
    revision:
    trust_cert:
    data:
  name:
  - Google Play Music Manager
  homepage: https://play.google.com/music/
  license: !ruby/object:Hbc::DSL::License
    value: :unknown
  artifacts:
    :app: !ruby/object:Set
      hash:
        ? - MusicManager.app
          - :target: Music Manager.app
        : true
    :prefpane: !ruby/object:Set
      hash:
        ? - MusicManager.app/Contents/Helpers/MusicManager.prefPane
        : true
==> Cask instance method 'name':
---
- Google Play Music Manager
==> Cask instance method 'homepage':
--- https://play.google.com/music/
...
==> Cask instance method 'url':
--- !ruby/object:Hbc::URL
uri: !ruby/object:URI::HTTPS
  scheme: https
  user:
  password:
  host: dl.google.com
  port: 443
  path: "/dl/androidjumper/mac/2431116/musicmanager.dmg"
  query:
  opaque:
  registry:
  fragment:
  parser:
user_agent:
cookies:
referer:
using:
revision:
trust_cert:
data:
==> Cask instance method 'appcast':
---
...
==> Cask instance method 'version':
--- !ruby/string:Hbc::DSL::Version
str: <IP_ADDRESS>6
raw_version: <IP_ADDRESS>6
==> Cask instance method 'license':
--- !ruby/object:Hbc::DSL::License
value: :unknown
==> Cask instance method 'sha256':
--- e425d1724d092ae5ddfb28ad4304439754394b91ab3ff3063b66196d2ffe4bee
...
==> Cask instance method 'artifacts':
---
:app: !ruby/object:Set
  hash:
    ? - MusicManager.app
      - :target: Music Manager.app
    : true
:prefpane: !ruby/object:Set
  hash:
    ? - MusicManager.app/Contents/Helpers/MusicManager.prefPane
    : true
==> Cask instance method 'caveats':
--- []
==> Cask instance method 'depends_on':
---
...
==> Cask instance method 'conflicts_with':
---
...
==> Cask instance method 'container':
---
...
==> Cask instance method 'gpg':
---
...
==> Cask instance method 'accessibility_access':
---
...
==> Cask instance method 'auto_updates':
---
...
==> Hbc::Installer.install
==> Printing caveats
==> Downloading
==> Downloading https://dl.google.com/dl/androidjumper/mac/2431116/musicmanager.dmg
Already downloaded: /Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg
==> Downloaded to -> /Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg
==> Verifying download
==> Determining which verifications to run for Cask music-manager
==> Checking for verification class Hbc::Verify::Checksum
==> 1 verifications defined
Hbc::Verify::Checksum
==> Running verification of class Hbc::Verify::Checksum
==> Verifying checksum for Cask music-manager
==> SHA256 checksums match
==> Extracting primary container
==> Determining which containers to use based on filetype
==> Checking container class Hbc::Container::Pkg
==> Checking container class Hbc::Container::Ttf
==> Checking container class Hbc::Container::Otf
==> Checking container class Hbc::Container::Air
==> Checking container class Hbc::Container::Cab
==> Executing: ["/usr/bin/file", "-Izb", "--", "/Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg"]
==> Checking container class Hbc::Container::Dmg
==> Executing: ["/usr/bin/hdiutil", "imageinfo", "/Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg"]
==> Using container class Hbc::Container::Dmg for /Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg
==> Executing: ["/usr/bin/hdiutil", "mount", "-plist", "-nobrowse", "-readonly", "-noidme", "-mountrandom", "/tmp", "/Users/winkelsdorf/Library/Caches/Homebrew/music-manager-<IP_ADDRESS>6.dmg"]
==> Executing: ["/usr/bin/ditto", "--", "/private/tmp/dmg.bsA4El", "/opt/homebrew-cask/Caskroom/music-manager/<IP_ADDRESS>6"]
==> Executing: ["/usr/sbin/diskutil", "eject", "/private/tmp/dmg.bsA4El"]
==> Installing artifacts
==> Determining which artifacts are present in Cask music-manager
==> Checking for artifact class Hbc::Artifact::PreflightBlock
==> Checking for artifact class Hbc::Artifact::NestedContainer
==> Checking for artifact class Hbc::Artifact::Installer
==> Checking for artifact class Hbc::Artifact::App
==> Checking for artifact class Hbc::Artifact::Suite
==> Checking for artifact class Hbc::Artifact::Artifact
==> Checking for artifact class Hbc::Artifact::Colorpicker
==> Checking for artifact class Hbc::Artifact::Pkg
==> Checking for artifact class Hbc::Artifact::Prefpane
==> Checking for artifact class Hbc::Artifact::Qlplugin
==> Checking for artifact class Hbc::Artifact::Font
==> Checking for artifact class Hbc::Artifact::Service
==> Checking for artifact class Hbc::Artifact::StageOnly
==> Checking for artifact class Hbc::Artifact::Binary
==> Checking for artifact class Hbc::Artifact::InputMethod
==> Checking for artifact class Hbc::Artifact::InternetPlugin
==> Checking for artifact class Hbc::Artifact::AudioUnitPlugin
==> Checking for artifact class Hbc::Artifact::VstPlugin
==> Checking for artifact class Hbc::Artifact::Vst3Plugin
==> Checking for artifact class Hbc::Artifact::ScreenSaver
==> Checking for artifact class Hbc::Artifact::Uninstall
==> Checking for artifact class Hbc::Artifact::PostflightBlock
==> Checking for artifact class Hbc::Artifact::Zap
==> 2 artifact/s defined
Hbc::Artifact::App
Hbc::Artifact::Prefpane
==> Installing artifact of class Hbc::Artifact::App
==> Moving App 'MusicManager.app' to '/Applications/Music Manager.app'
==> Installing artifact of class Hbc::Artifact::Prefpane
==> Purging files for version <IP_ADDRESS>6 of Cask music-manager
Error: It seems the Preference Pane source is not there: '/opt/homebrew-cask/Caskroom/music-manager/<IP_ADDRESS>6/MusicManager.app/Contents/Helpers/MusicManager.prefPane'/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:77:in `preflight_checks'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:24:in `block in install_phase'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:43:in `block in each_artifact'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:42:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:42:in `each_artifact'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/artifact/moved.rb:22:in `install_phase'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:129:in `block in install_artifacts'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:126:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:126:in `install_artifacts'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/installer.rb:75:in `install'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/install.rb:20:in `block in install_casks'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/install.rb:17:in `each'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/install.rb:17:in `install_casks'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli/install.rb:6:in `run'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:83:in `run_command'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:121:in `process'
/usr/local/Library/Taps/caskroom/homebrew-cask/cmd/brew-cask.rb:26:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Library/brew.rb:22:in `require?'
/usr/local/Library/brew.rb:93:in `<main>'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:126:in `exit'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:126:in `rescue in process'
/usr/local/Library/Taps/caskroom/homebrew-cask/lib/hbc/cli.rb:117:in `process'
/usr/local/Library/Taps/caskroom/homebrew-cask/cmd/brew-cask.rb:26:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Library/brew.rb:22:in `require?'
/usr/local/Library/brew.rb:93:in `<main>'

Cask doctor output (latest versions as of posting this)
 ✘  ~/Dropbox/Application Support/dotfiles/Update  brew cask doctor
==> OS X Release:
10.11
==> OS X Release with Patchlevel:
10.11.5
==> Hardware Architecture:
intel-64
==> Ruby Version:
2.0.0-p648
==> Ruby Path:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
==> Homebrew Version:
Homebrew 0.9.9 (git revision 656c; last commit 2016-06-03)
Homebrew/homebrew-core (git revision 8611; last commit 2016-06-03)
==> Homebrew Executable Path:
/usr/local/bin/brew
==> Homebrew Cellar Path:
/usr/local/Cellar
==> Homebrew Repository Path:
/usr/local
==> Homebrew Origin:
https://github.com/Homebrew/brew
==> Homebrew-cask Version:
0.60.0 (git revision 9c6ad; last commit 21 minutes ago)
==> Homebrew-cask Install Location:
<NONE>
==> Homebrew-cask Staging Location:
/opt/homebrew-cask/Caskroom
==> Homebrew-cask Cached Downloads:
/Users/winkelsdorf/Library/Caches/Homebrew
/Users/winkelsdorf/Library/Caches/Homebrew/Casks
0 files, 0B
==> Homebrew-cask Default Tap Path:
/usr/local/Library/Taps/caskroom/homebrew-cask
==> Homebrew-cask Alternate Cask Taps:
/usr/local/Library/Taps/alehouse/homebrew-unofficial
/usr/local/Library/Taps/caskroom/homebrew-fonts
/usr/local/Library/Taps/caskroom/homebrew-versions
==> Homebrew-cask Default Tap Cask Count:
3194
==> Contents of $LOAD_PATH:
/usr/local/Library/Taps/caskroom/homebrew-cask/lib
/usr/local/Library/Homebrew
/Library/Ruby/Gems/2.0.0/gems/psych-2.0.17/lib
/Library/Ruby/Site/2.0.0
/Library/Ruby/Site/2.0.0/x86_64-darwin15
/Library/Ruby/Site/2.0.0/universal-darwin15
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/x86_64-darwin15
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/universal-darwin15
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/x86_64-darwin15
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15
==> Contents of $RUBYLIB Environment Variable:
<NONE>
==> Contents of $RUBYOPT Environment Variable:
<NONE>
==> Contents of $RUBYPATH Environment Variable:
<NONE>
==> Contents of $RBENV_VERSION Environment Variable:
<NONE>
==> Contents of $CHRUBY_VERSION Environment Variable:
<NONE>
==> Contents of $GEM_HOME Environment Variable:
<NONE>
==> Contents of $GEM_PATH Environment Variable:
<NONE>
==> Contents of $BUNDLE_PATH Environment Variable:
<NONE>
==> Contents of $PATH Environment Variable:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/winkelsdorf/.composer/vendor/bin:/usr/local/Library/Taps/caskroom/homebrew-cask/cmd:/usr/local/Library/ENV/scm"
==> Contents of $SHELL Environment Variable:
SHELL="/usr/local/bin/zsh"
==> Contents of Locale Environment Variables:
LANG="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
==> Running As Privileged User:
No

Two small notes:

parallels-desktop already had issues before (the linked issue is older than the recent changes), but that could very well be related to the cask itself (which had some problems that were already fixed).
The problem with this cask is a fun one. See how it says Error: It seems the Preference Pane source is not there: '/opt/homebrew-cask/Caskroom/music-manager/<IP_ADDRESS>6/MusicManager.app/Contents/Helpers/MusicManager.prefPane'? Well, it depends in what order we’re doing things (will have to check), If we moved the target from app before trying to get the target from prefpane, then it’s natural it can’t find it, because it would have already been moved. To fix that, the line would need to be prefpane "#{appdir}/MusicManager.app/Contents/Helpers/MusicManager.prefPane". That said, I don’t see a reason why we should be taking out the prefpane ourselves. Presumably the app will do it, so I’ll remove that line.

Should be fixed now. Closing.

Thanks for the clarification 👍
Agreed about the order of installation of the prefpane, verified MusicManager cask to be working correct now.


[BUG] msbuild /t:GenerateCode fails when your username has a space in it.

Running msbuild /t:GenerateCode to generate code for a client library using AutoRest fails on windows when your username has a space in it.  This appears to be related to how npx interacts with NPM when the cache directory includes a space in it. By default, the cache directory is %AppData%\npm-cache on Windows, so I suspect this will hit anyone who has a space in their username.
When trying to run the target, npx will fail, with an EPERM error like this:
Task "Exec"
  npx autorest@https://github.com/Azure/autorest/releases/download/autorest-3.0.6221/autorest-3.0.6221.tgz --version=3.0.6280 C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src/autorest.md  --use=https://github.com/Azure/autorest.csharp/releases/download/3.0.0-dev.20200415.7/autorest-csharp-v3-3.0.0-dev.20200415.7.tgz --output-folder=C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src --title=Azure.Template --namespace=Azure.Template --shared-source-folder=C:\dd\azure\azure-sdk-for-net\eng\../sdk/core/Azure.Core/src/Shared/ --verbose
EXEC : error : EPERM: operation not permitted, mkdir 'C:\Users\Matt' [C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src\Azure.Template.csproj]
  command not found: autorest
C:\dd\azure\azure-sdk-for-net\eng\CodeGeneration.targets(24,5): error MSB3073: The command "npx autorest@https://github.com/Azure/autorest/releases/download/autorest-3.0.6221/autorest-3.0.6221.tgz --version=3.0.6280 C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src/autorest.md  --use=https://github.com/Azure/autorest.csharp/releases/download/3.0.0-dev.20200415.7/autorest-csharp-v3-3.0.0-dev.20200415.7.tgz --output-folder=C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src --title=Azure.Template --namespace=Azure.Template --shared-source-folder=C:\dd\azure\azure-sdk-for-net\eng\../sdk/core/Azure.Core/src/Shared/ --verbose" exited with code 1. [C:\dd\azure\azure-sdk-for-net\sdk\template\Azure.Template\src\Azure.Template.csproj]
Done executing task "Exec" -- FAILED.

To work around this issue, you can explicitly set your cache location using npm, to include a path that uses the corresponding 8.3 short file name:
> npm config set cache "C:\Users\MATTG~1.ELL\AppData\Roaming\npm-cache" --global

Alternately, we could change our invocation of the npx to set the NPM_CONFIG_CACHE environment variable to something like $(TEMP)/npm-cache (perhaps scoped to the case where you're on windows and %AppData% contains a space?).  It appears that when your username contains a space, %TEMP% uses the 8.3 version of your username.

Original issue https://github.com/zkat/npx/issues/100


userDataSyncService.resetLocal doesn't appear to do anything

The userDataSyncService.ts -> resetLocal function looks like it's missing a call to synchroniser.resetLocal(), see below.
	async resetLocal(): Promise<void> {
		await this.checkEnablement();
		for (const synchroniser of this.synchronisers) {
			try {
				synchroniser.resetLocal(); <-- Suggest adding this here?
			} catch (e) {
				this.logService.error(`${synchroniser.source}: ${toErrorMessage(e)}`);
				this.logService.error(e);
			}
		}
	}

How should this be verified?

Turn off sync and Turn on sync again. This should show the first time sync dialog.


Planning: Limit projected s with max value of total length.

Fix #IDG-Apollo-4319
Limit the total length of LaneInfo as also as the projected s with the max value of total length.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


External Interpreter & Template Haskell support

So the sequence of implementation steps for getting an interpreter + TemplateHaskell support (which follows almost directly):
1. Port process and directory packages. This requires mapping low-level OS C APIs to Java APIs. @psibi is currently looking into it, but others are welcome to help him to speed up the process.

Make iserv work. iserv is the interpreter process that takes in bytecode as input and interprets it as output. See here. If all the dependencies were implemented in a semantics-preserving fashion, this step should require almost no effort.

The bytecode interpreter should be written in the RTS. Essentially, this has to be ported from C to Java.  I've done a minor start here.

The ghci library from GHC 8 should be ported.

Port the modern Template Haskell implementation in GHC 8 while making sure the type system changes don't leak in. This means a focus on those *Splice modules in the GHC 8 codebase and changing the imports to match Eta's module namespacing.

Turn on the GHCI macro when compiling eta by adding the -DGHCI option to the eta.cabal file. This will automatically enable the Template Haskell implementation.

I may be able to help port the directory package, but what is it used for in the template haskell implementation?

It's not actually, I misread the dependencies of iserv. I edited the description to reflect the mistake.
As for the directory package, I've already started the port and it's very close to being done.
The main thing that needs to be done now is the core design of interpretation. GHC uses runtime linking to facilitate interpretation and I think you can map that to Java class loading.
If you're interesting in helping implement the interpreter bit, we can discuss on Gitter.

For anyone planning to contribute/collaborate on interpreter for Eta - this is the PR/branch I'm working on it: https://github.com/typelead/eta/pull/162

Successfully completed and working in Eta v0.8.0b1. Docs/release coming soon.


FIX: length of vectors not equal when dthetaM is not defined

Also fixed issue with magnetic profile calculation when drhoM[-1] = 0.
Hi Paul, could you review these tweaks? I have finally got round to testing the FreeInterfaceMagnetism function you added in a while ago.
Essentially, the issues were:

When dthetaM is not defined it would only have the length of the input list, not the profile length
When drhoM[-1] = 0 it did not seem to calculate the profile. I have added in a check that we used in the test function I originally sent you.

Thanks
Andrew

@acaruana2009 can you provide a test for this fix?  (a problem definition that breaks without the fix?)

@bmaranville Sure, I will put something together tomorrow. From memory, it breaks subtly i.e. you need to look at the model produced say in the GUI to see that it is not behaving right. Will this still be ok?
The model I am aiming to send through has the node values linked to the FreeInterface (Structural SLD) so adjusting the dz and drho values should give the same shape as the FreeMagnetismInterface.


How to make the cell locked? Please give me a example!!

Now I use OpenXLSX to write some cells' value, and then I want to set these cells' cellFormat to make their value be protected. So when user open the Excel, he can't change the value of the locked cells. Can OpenXLSX do that?

I just did some tests, and apparently

OpenXLSX currently does not support the worksheet's sheetProtection property, which is used to flag that the whole worksheet is protected
it appears that individual cells can not be protected, but you can set the whole worksheet to protected (until this feature is implemented, you'll have to do that afterwards, directly in MS Office), and then set cells to be NOT protected when you want them to be edited.

By default, all cells in a worksheet are protected unless specifically "un-protected":
    XLDocument doc;
    doc.create("./Demo01.xlsx", XLForceOverwrite);
    auto wks = doc.workbook().worksheet("Sheet1");

    wks.cell("A1").value() = 41;
    wks.cell("B1").value() = 42;
    wks.cell("C1").value() = 43;
    XLCellFormats & cellFormats = doc.styles().cellFormats();
    XLStyleIndex newCellFormatIndex = cellFormats.create( cellFormats[ wks.cell("B1").cellFormat() ] );
    wks.cell("B1").setCellFormat(newCellFormatIndex);
    // cellFormats[ newCellFormatIndex ].setApplyProtection( true ); // seems to be irrelevant
    cellFormats[ newCellFormatIndex ].setLocked( true );  // locked seems to be default behavior if attribute is not set
    cellFormats[ newCellFormatIndex ].setLocked( false ); // unprotect a cell
    doc.save();
    doc.close();

With the above example, if you open the worksheet and "protect sheet" in MS Office, you should be able to overwrite the cell B2, but no other cell.

Thank you for your reply!


improved for...loop a bit

Since this function would be invoked a lot, it's worthy to be optimized.

I think most browser already optimize this for you.

Yeah, this is no longer necessary in most cases, thanks for the PR anyway!


Typescript support

Issue
This module does not seem to provide typescript definitions. This causes compile errors in the projects using TypeScript + marked.
Do you think  it be possible to provide these either out of the box or through @types/marked-gfm-heading-id?

I took the time to write it for my project. Something like this should do the trick
declare module 'marked-gfm-heading-id' {
  type Extension = {
    hooks: {
      preprocess: (markdown: string) => string
    }
    renderer: {
      heading: (text: string, level: number, raw: string) => string
    }
  }

  export type Parameters = {
    prefix?: string
  }

  export const gfmHeadingId: (params?: Parameters) => Extension
}

If you want to create a PR that adds the types we could add it


Bug in the custom cronjob definition

In section 8 of the README, the example every2hour cron definition has a bug. Right now it will run every minute.
Should be switched to 0 */2 * * *

Closed in #1


Set install_requires for pip deps

This change fixes the pip install dependencies per https://packaging.python.org/discussions/install-requires-vs-requirements/
Current State:
aijay-mbp:venvs aijay$ python3 -m venv pyaug
aijay-mbp:venvs aijay$ source pyaug/bin/activate
(pyaug) aijay-mbp:venvs aijay$ pip install py-august
Collecting py-august
  Downloading https://files.pythonhosted.org/packages/47/0a/4dc955657d407455d7fc844693122eaaae5127122f2f87680d505cf2180f/py-august-0.9.0.tar.gz
Installing collected packages: py-august
  Running setup.py install for py-august ... done
Successfully installed py-august-0.9.0
(pyaug) aijay-mbp:venvs aijay$ pip freeze
py-august==0.9.0

With change:
(pyaug) aijay-mbp:py-august aijay$ pipdeptree
pipdeptree==0.13.2
  - pip [required: >=6.0.0, installed: 9.0.1]
py-august==0.8.0
  - requests [required: Any, installed: 2.22.0]
    - certifi [required: >=2017.4.17, installed: 2019.6.16]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.9, installed: 2.8]
    - urllib3 [required: >=1.21.1,<1.26,!=1.25.1,!=1.25.0, installed: 1.25.3]
  - vol [required: Any, installed: 0.1.1]
    - docopt [required: Any, installed: 0.6.2]
setuptools==28.8.0

Thanks! I’ll make a release soon


landingpage: Elaborate icons and keywords for core aspects

Now that we've worked out a general idea about which core aspects we want to mention in our new landingpage, we should elaborate on what icons and keyphrases exactly we want to use.

Current View


Clappr does not play mkv (matroska) container

hi,
someone correct this code for me to play .mkv files please?

other examples please??
thank you.

@Abdel-ilah I think we don't support mkv container =( if you can, you can convert it to mp4 using ffmpeg.

@Abdel-ilah : try the following code on Clappr demo page with Google Chrome browser :
(please note i did not test the code and it may not work)
var MkvPlayback = Clappr.HTML5Video.extend({
  name: 'mkv_video',
});
MkvPlayback.canPlay = function(resourceUrl, mimeType) { return true; };

var player = new Clappr.Player({
  parentId: '#player-wrapper',
  source: 'http://dl2.mihanpix.com/Film/2016/Allegiant.2016.720p.ShAaNiG.mkv',
  plugins: [MkvPlayback],
  height: 360,
  width: 640,
  events: {
    onError: function (e) {
      console.log('Error !', e);
    }
  },
});

thanks leandromoreira, kslimani

for chrome you only need to add option mimeType: "video/mp4", but it not work in firefox maybe you should try add plugin Flashls.


Show control after reading all (in paged mode)

In continuous mode, we have a next entry button or an exit reader button at the bottom of pages.
On the other hand in paged mode, we don't have any feedback whether it is an end of page or not.
I make the control appeared If a user goes to next at the end of page

Great idea, and looks good to me! Thanks!


Secrecy app/apk for Android

Hello I recently came across your app and quickly became a fan.  My question is:  Would you be able to point me in the direction of where I could learn about working on apps,etc.? I figure this would be the best place to ask since ideally I would like to contribute.  Thank you in advance, and thank you for creating a great utility.  Sincerely,

hi, you can download the code and use Android Studio to understand it / update it.

Thanks for the tip I'm going to download it now.


Car stops at orange lights

Classifiers were retrained for the car to stop at orange lights.
Training for the simulation model

Final test accuracy = 87.5% (N=640)
Training for the site model

Final test accuracy = 93.3% (N=744)

Sorry, wrong repo…


geometry: a skeleton for the MS-RDPEGT channel

The base for implementing the MS-RDPEGT client channel that allows to track window geometry.

@mfleisz 's remarks have been addressed

@mfleisz are the changes ok for you ?


certificate doesn't contain any IP SANs guide

This is short guide what to do with error x509: cannot validate certificate for vault_ip_addres because it doesn't contain any IP SANs
close #126

Thanks!


Do you have some paper about 3D cartographer?

We have not yet written a paper about our 3D implementation.

Does that mean you are planning to write a paper on the 3D implementation? If so, what would be the ETA? If not, is there any available material on the 3D implementation? (other than source code).
Thanks in advance for any help or advice.

We plan to write a paper, but have no ETA and no cycles to spent on it currently.
There is no other documentation besides the source code, but the 3D implementation is a straightforward extension of the 2D approach, so the source code is probably the most educational.

Fantastic, thanks for the help!


sender_of<decltype(just(2)), int> is false

  auto work_sender = stdexec::just(2);
  using work_sender_t = std::decay_t<decltype(work_sender)>;
  static_assert(stdexec::sender_of<work_sender_t, int>);

This static assert fails. I am trying to use sender_of to judge if sender completes with certain value type. Is there something I am missing?
Thank You

Closing the issue as just realised it should be sender_of<set_value_t(int)>


Delete photo from asset

Hello, how to delete photo from the assets programmatically ? I've tried this but didn't worked
[_picker delete:[_photoArray objectAtIndex:indexPath.row]]

iOS doesn't provide delete item in photo library

Not from photo library but from selected photo in picker ( deselect an item programmatically )


[FancyZones] Fix for the scenario of layout reset when opening the FZEditor

Summary of the Pull Request

Updated virtual desktops synchronization
Updated editor launch data
Save info about the last used virtual desktop ID
Added unit tests

PR Checklist

[ ] Closes: #xxx
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Create, delete, switch virtual desktops while FZ is working or not. Verify correct layouts are applied.
Clean up virtual desktops in registry and restart FZ, verify last used layout is applied.

/azp run


AttributeError: module 'numpy' has no attribute 'trapezoid'

The requirements don't specify a numpy version; however, AortaPortalLiver() model dosen't work as it requires np.trapezoid() made available after numpy 2.0.0
flux_aorta(J_vena, t, dt, E, FFkl, FFk, heartlung, organs, kidneys, liver, tol)
99 def flux_aorta(J_vena: np.ndarray,
100                t=None, dt=1.0, E=0.1, FFkl=0.0, FFk=0.5,
101                heartlung=['pfcomp', (10, 0.2)],
(...)
104                liver=['pfcomp', (10, 0.2)],
105                tol=0.001):
107     """Whole-body model for indicator flux through the aorta.
108
109     See section :ref:whole-body-tissues for a more detailed description of
(...)
179         plt.show()
180     """
--> 182     dose = np.trapezoid(J_vena, x=t, dx=dt)
183     min_dose = tol*dose
185     # Residuals of each pathway
File ~\AppData\Local\anaconda3\Lib\site-packages\numpy_init_.py:347, in getattr(attr)
344     "Removed in NumPy 1.25.0"
345     raise RuntimeError("Tester was removed in NumPy 1.25.")
--> 347 raise AttributeError("module {!r} has no attribute "
348                      "{!r}".format(name, attr))
AttributeError: module 'numpy' has no attribute 'trapezoid'

Thanks @FidelNavarro I suspect another dependency has forced your numpy version down to below 2.0.
To avoid issues like this I have replaced numpy.trapezoid by scipy.integrate.trapezoid
Hope that fixes it
#194


Disable "Create Proposal" Button for non members

Reproduce:

Go to e.g. https://dao-dev.hypha.earth/#/daoxpr/login
Click "continue as a guest"
Go to Proposal List https://dao-dev.hypha.earth/#/daoxpr/proposals/
Click "Create new Proposal" in the widget of the page (not header)

Experienced behaviour:
I get forwarded to https://dao-dev.hypha.earth/#/daoxpr/login
Expected behaviour:
I should not be able to create a proposal as a guest

Yes, Leonie, I finished. Only I disable the button like the banner on the proposal page. I'm testing and I can see the proposal list as guest.

@DaniPoot yes it is working now, thanks!


Feature request: changing file size interactively

For example, trying to fit an entire opening in the default 2.5 MB results in horrible quality so I need to tinker with the script sources.

Like a selector in the options? Should be doable.

Huh, I thought GitHub automatically closed issues when they were mentioned on commits. Guess I was wrong.

Thanks! GitHub closes the issues when you place phrase such as fixes #X or closes #X, possibly others, in the commit message.