You may not call monitor.canDrop() inside your canDrop() implementation

In canDrop, before returning false, we want to update state to display notification about why it can't be dropped, but got this error:
Uncaught Error: You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html
Is there a way to deal with it or may be a callback function?

Hi @zourbuth Do you mind posting a repro?

I've tested using Storybook example Drag from external source to prevent drop Baby Rabbit into Papa Rabbit, then shows message why it is prevented.

class UnwrappedApp extends Component {
  constructor(props) {
    super(props);
    this.dropMessage = this.dropMessage.bind(this);
    this.state = {
      treeData: [{ title: 'Mama Rabbit' }, { title: 'Papa Rabbit' }],
      message: 'Sample message',
    };
  }

  dropMessage(object) {
    if ( object.nextParent && object.nextParent.title === 'Papa Rabbit' ) {
      this.setState({ message: 'Papa Rabbit is sleeping, play outside!' }); // --> ERROR HERE
      return false;
    }

    return true;
  }

  render() {
    return (

{this.state.message}

          <SortableTree
            treeData={this.state.treeData}
            onChange={treeData => this.setState({ treeData })}
            canDrop={object => this.dropMessage( object )}
            dndType={externalNodeType}
          />

        <YourExternalNodeComponent node={{ title: 'Baby Rabbit' }} />
        ← drag this

    );
  }
}

@zourbuth this issue is confirmed and I think its due to how we bind this when we create DropTarget. I will have to investigate more later

+1 for being able to specify the reason why something can't be dropped - sometimes it can be the result of some complex logic rules and users could be frustrated not knowing why.
I'm not too convinced however about altering the state from inside a function named canDrop which is supposed to be pure and just return information.
What about something like allowing the canDrop callback to return not just a boolean but also an object like { canDrop: false, tip: "xxx" }, which could be rendered inside the red box?
  dropMessage(object) {
    if ( object.nextParent && object.nextParent.title === 'Papa Rabbit' ) {
      return { canDrop: false, tip: 'Papa Rabbit is sleeping, play outside!' };
    }
    else if ( /* some other condition */ ) {
      return { canDrop: true, tip: 'Oh yes drop me here please' };
    }
    return true;
  }

I was thinking allowing the canDrop callback to have access to the node and/or location it is going to be dropped as parameters, thus the user can use that information to render a message or whatever they want to do

#261 appears to cover a similar issue that could be addressed by these solutions.

@wuweiweiwu we would like to help, but don't know where to start, what piece of code need to modify. Perhaps you can point it to us.

hi @zourbuth that would be much appreciated! https://github.com/frontend-collective/react-sortable-tree/blob/master/src/utils/dnd-manager.js#L146 is where the this.props.canDrop is called.
This would requiring allowing the user specifying a callback parameter in canDrop can calling it with the required parameters (ex: node, location)

Hi @wuweiweiwu, in this case, I didn't see the line as the problem. I found the line
https://github.com/frontend-collective/react-sortable-tree/blob/master/src/utils/dnd-manager.js#L252
which calls canDrop inside canDrop prop.
function nodeDropTargetPropInjection(connect, monitor) {
  const dragged = monitor.getItem();
  return {
    connectDropTarget: connect.dropTarget(),
    isOver: monitor.isOver(),
    canDrop: monitor.canDrop(), // <--- calls canDrop inside canDrop
    draggedNode: dragged ? dragged.node : null,
  };
}

I understand the DnD collect parameter above that passed canDrop is used for cancel pad class in placeholder-renderer-default.js and node-renderer-default.js.
If we remove canDrop from the collect parameter, it works, the message is updated, but always shows cancel pad instead of landing pad.
Please suggest.

@zourbuth I was thinking of adding a callback, however, in hindsight, it probably is not a good long term fix. I will be updating our react-dnd dependency soon #87 (it is a major change) So I will revisit this issue once that is done.
Thanks!

Hello @wuweiweiwu.
Any update with this issue?
Thanks.

I did a hacky workaround for this issue, since showing a rejection notification in canDrop() was triggered multiple times, so i got dozens of  rejection notifications when only one was neccessary.
so i have a variable in state which just records the last success or failure of canDrop.
then in onDragStateChanged if its not isDragging i check the variable from state, and display the error notif, if it was a failure.  For a complete drag action, onDragStateChanged is triggered once so it works.

have some update ?

I m also facing the same issue. CanDrop() called multiple times  while we drop the external node into tree. Please suggest some workaround.

generateNodeProps={() => ({
  onDragEnd: () => {
    // Works if canDrop returns false
    // Add code here
  },
})}

I think until this issue is resolved this workaround might be a good solution.


Add extension GetService<T> to DependencyInjection for better readability

Add extension to Coverlet.Core.DependencyInjectionot  cleanup a bit the code, something like
    public static class DependencyInjectionExtensions
    {
        public static T GetService<T>(this IServiceProvider serviceProvider)
        {
            return (T)serviceProvider.GetService(typeof(T));
        }
    }

And update the callers.
NB. We could use Microsoft.Extensions.DependencyInjection.Abstractions but we want avoid to have too much transitive/reference.

@MarcoRossignoli hi! Added pull request to implement this, please check. Thank you.

Sure thank you!


[Question] Community Participation & PR Expectations?

Hey @jaku, found your repo thanks to Nutty's recent video (https://www.youtube.com/watch?v=UU8Jq6It8o4) and have a question regarding community participation:
Do you want us to submit PRs with cached data[1], lens names/urls, or anything of the sort?
Perhaps it would be easiest to have a "requests" file where people can add their own URLs to lenses they like? Maybe just a single-line-per-URL text file?
[1] One question re: caches, I don't know if there's any personal or hardware-specific data contained in them. If so, then it might be worth finding a way to scrub it before submission, being that the raw data from the lens is arguably more useful than even a URL.
A related final thought after typing this:
The URLs to download the filters will still probably work after snap camera shuts down since snapchat itself isn't going down, and I doubt they store it in more than one location. That said, there's no way to know until after Jan 25th. It's possible there's a header/UA string that the mobile app sends differently from the desktop app they could use to gatekeep it after the shutdown.
Cheers; love the idea. Let us know how we can help out.

Hey Aphix,
No need to submit PRs with cached data. The modified client I have automatically does that so as long as you're using that (which I'll post here soon). As long as you activate each lens once it should cache them.
I'll work on a way to verify this as well. I've sadly been sick all week. :|
And I agree, I think a lot of stuff will actually still work after the shutdown but we're not completely sure. The desktop app does send some headers that are required for the files but from what I could tell the mobile app hits a different endpoint. Again, might all still work for some things but hard to know 100% until the shutdown.

Created a quick patch site that will patch the exe instead of hosting the EXE directly. But that is now available along with the BPS file if people want to manually patch using another tool.

Hey Jaku, thx for getting involved.
Q1 - What if down the line we need to reinstall SnapCam due to a windows reinstall or whatever? Do we follow the patching method ?
Q2 - The firewall blocking method in Nutty's vid, is that legit? As in, if we do that, and we backed up our files/installs/lenses/cache on our hard drives, it will work 100% regardless of what SnapInc. decides in the future?
Q3 - If the answer to Q2 is NO, is there a way we can make our own hosting servers, and with your help, repatching SnapCam to work with that, and if yes, do we need to hurry till the 25'th to get it up & running so we can downloaded our fav lenses?

Q2 - The firewall blocking method in Nutty's vid, is that legit? As in, if we do that, and we backed up our files/installs/lenses/cache on our hard drives, it will work 100% regardless of what SnapInc. decides in the future?
I made a pose on Nutty's video about blocking the IP address that Snap Chat phones home to. But for some reason he must of deleted it? I have noticed he is a bit like that at times?
Anyway. Blocking the IP address at the host file is much safer than using a firewall in my experience of (thirty years running my own computer business) simply because some firewalls even if the program is blocked still allows programs to phone home. Plus if the firewall gets turned off for some reason then the program in question can phone home.
But blocking the IP through host file will always stop the program from calling home. I have used this method for many years and never had an issue with blocking any program that calls home. Plus if my Firewall is turned off for one reason or another. The program still cannot phone home as it it blocked in the host file.
So again much better than using a firewall.
If you want to know how to do this. Just let me know as it's very simple and you can use any free Host Editor or even Notepad if you wish. Here is a screenshot of how I did it using the Host Editor that I use.
https://prnt.sc/Cia03FWHhxjF
Also the IP address was found using my firewall program as shown in this screenshot.
https://prnt.sc/hudXRVefcQfw
Any questions just let me know.

Q2 - The firewall blocking method in Nutty's vid, is that legit? As in, if we do that, and we backed up our files/installs/lenses/cache on our hard drives, it will work 100% regardless of what SnapInc. decides in the future?

I made a post on Nutty's video about blocking the IP address that Snap Chat phones home to. But for some reason he must of deleted it?
Anyway. Blocking the IP address at the host file is much safer than using a firewall in my experience of (thirty years running my own computer business) simply because some firewalls even if the program is blocked still allows programs to phone home. Plus if the firewall gets turned off for some reason then the program in question can phone home.
But blocking the IP through host file will always stop the program from calling home. I have used this method for many years and never had an issue with blocking any program that calls home. Plus if my Firewall is turned off for one reason or another. The program still cannot phone home as it it blocked in the host file.
So again much better than using a firewall.
If you want to know how to do this. Just let me know as it's very simple and you can use any free Host Editor or even Notepad if you wish. Here is a screenshot of how I did it using the Host Editor that I use.
https://prnt.sc/Cia03FWHhxjF
Also the IP address was found using my firewall program as shown in this screenshot.
https://prnt.sc/hudXRVefcQfw
Any questions just let me know.

That IP address is universal? I can just put that in my hosts file and it'll work blocking the program ? Or it's a dynamic one?

That IP address is universal? I can just put that in my hosts file and it'll work blocking the program ? Or it's a dynamic one?

Hello, and thank you for your comment.
Most companies use static IP addresses so you should be ok. The only time this would not work is if they changed servers. But this rarely happens in my experience.
I have added many IP's in my host list over the years and never had an issue.
Hope this helps :).

Hey Jaku, thx for getting involved.
Q1 - What if down the line we need to reinstall SnapCam due to a windows reinstall or whatever? Do we follow the patching method ? Q2 - The firewall blocking method in Nutty's vid, is that legit? As in, if we do that, and we backed up our files/installs/lenses/cache on our hard drives, it will work 100% regardless of what SnapInc. decides in the future? Q3 - If the answer to Q2 is NO, is there a way we can make our own hosting servers, and with your help, repatching SnapCam to work with that, and if yes, do we need to hurry till the 25'th to get it up & running so we can downloaded our fav lenses?

Q1) Yes, you just need to install the version of Snap Chat and then patch it again. My servers will still be up, it costs me almost nothing to host and I have projects that I've been running for other things that have gone well past 10 years now.
Q2) Blocking is a solution for sure, he showed the downsides to them but it should work. We really don't 100% know though if it will continue to last as maybe the cache still expires after a set time.
Q3) That is what this repo is supposed to have hopefully next week so that others can just run and host their own server. Instructions on how to manually patch your own exe and run the same code that I've created so you don't have to go through my server.

Done & done.
Thank you, I appreciate it.

I don't think this is a good idea. Blocking an IP when it's on a cloud provider can cause issues with other hosts or services by the same company that might be on the same IP. That IP you posted is not static, pinging snapcamera.snapchat.com on my computer and a server are giving two different IPs already from your post. https://imgur.com/a/LfVsZRy

Thank you for the extra clarification and I stand corrected :).  I guess I should have pinged snap camera. But I don't use snap chat or any other services they offer. So I just relied on my firewall for telling me the IP address(s).

You can still 100% just block the host snapcamera.snapchat.com in the hosts file. Adding it as <IP_ADDRESS> snapcamera.snapchat.com
Would do the job and if they changed IPs it would not matter. Also there is 2 another domains they use called studio-app.snapchat.com and studio-crash.snapchat.com which sends some information up to them when you open and or crash the app. So blocking that might be a good idea too.

Ok thanks will do just in case :).

I don't think this is a good idea. Blocking an IP when it's on a cloud provider can cause issues with other hosts or services by the same company that might be on the same IP. That IP you posted is not static, pinging snapcamera.snapchat.com on my computer and a server are giving two different IPs already from your post. https://imgur.com/a/LfVsZRy

Thank you for the extra clarification and I stand corrected :). I guess I should have pinged snap camera. But I don't use snap chat or any other services they offer. So I just relied on my firewall for telling me the IP address(s).

You can still 100% just block the host snapcamera.snapchat.com in the hosts file. Adding it as <IP_ADDRESS> snapcamera.snapchat.com

But won't that block the website itself?

Would do the job and if they changed IPs it would not matter. Also there is 2 another domains they use called studio-app.snapchat.com and studio-crash.snapchat.com which sends some information up to them when you open and or crash the app. So blocking that might be a good idea too.

Ok thanks will do just in case :).

I've only seen the app user the studio-app.snapchat.com domain and not snapcamera.snapchat.com. It's true the website is hosted on snapcamera.snapchat.com and putting in <IP_ADDRESS> for the IP will prevent you from accessing the site as well. But if you have everything downloaded you don't really need to access it anymore anyways.


XLS-80d Permissioned Domains

High Level Overview of Change
This PR implements the PermissionedDomains amendment in the xrpl-py library.
Specification: https://github.com/XRPLF/XRPL-Standards/discussions/228
C++ Implementation: https://github.com/XRPLF/rippled/pull/5161
#759  is a prerequisite for this PR.
For the readers who are only interested in the PermissionedDomain changes only, (but not the VerifiableCredentials changes) please read from this commit onwards: 8abf7b7ecbf1777d37b7218be79f6420fedc291f

Context of Change

Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (non-breaking change that only restructures code)
[x] Tests (You added tests for code that already exists, or your new feature included in this PR)
[ ] Documentation Updates
[ ] Release

Did you update CHANGELOG.md?

[x] Yes
[ ] No, this change does not impact library users

Test Plan
I've included Unit and integration tests for the newly added transactions. No new unit tests have been attributed to the PermissionedDomainDelete transaction. The domain_id field must be retrieved from one of the rippled RPCs which conforms to the HASH256 internal type.

This PR should be based on top of the #759 branch, so it's easier to review.

@mvadari Do you mean the target branch of the current PR should be ckeshava:cred ? I did merge the cred branch into this PR branch.

yes. Otherwise, the diff of this PR contains both.

@mvadari Do you mean the target branch of the current PR should be ckeshava:cred ? I did merge the cred branch into this PR branch.

yes. Otherwise, the diff of this PR contains both.

Okay, I have changed the base to the cred branch. But this is a little bit of a hack. The #759  Pull-Request is based on a branch from my fork, but this PR is based on a branch inside the XRPLF/xrpl-py repository. I'll keep these two branches in-sync manually.
Github doesn't allow me to change the base-repository, I had to resort to this idea.

If this is too messy, I can close this PR and re-open a new one


blazorboilerplate ui

UI Boilerplate addon
Hi @ArgoZhang I've been away for a while but now that I'm back I see a fantastic boilerplate project which would benefit from the features of BootstrapBlazor.
There is a structure for providing different UI libraries and the author of this project is looking to move away from the current MattBlazor so I thought adding in BB would help to increase the reach of your great project and also help to mature it to work with other frameworks
BlazorBoilerPlate
Issue where I mentioned BB

great! later I will take a look at this repo. thanks

@pomeara hi, what's is this BlazorBoilerPlate? how to use it? I can't find the install docs

@ArgoZhang 是的 ，增加一个后台管理系统， 即开即用， 大家都很喜欢呀，  类似你的  https://github.com/ArgoZhang/BootstrapAdmin

@gitlsl 大佬帮忙 star 一下吧，哈哈，BootstrapAdmin 跟 Blazor 求赏星星

@ArgoZhang 已点， 加油

@gitlsl thanks!!!


Merge to master

master currently is out-of-sync with bosmarmot, this addresses that and we can stabilise for a release

:smiley_cat:


Download link to get IP Address ranges for Azure Clouds are broken

In this line:
"Azure allocates public IP addresses from a range unique to each region in each Azure cloud. You can download the list of ranges (prefixes) for the Azure Public, US government, China, and Germany clouds.", all the links point to this URL: https://www.microsoft.com/en-us/download/details.aspx?id=56519 which does not provide the IP Addresses.

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

ID: fd95f8e2-963d-3193-ec1f-b0dd9f566ee2
Version Independent ID: 14376448-43ec-8f0f-65fd-c813256a7520
Content: Public IP addresses in Azure
Content Source: articles/virtual-network/public-ip-addresses.md
Service: virtual-network
Sub-service: ip-services
GitHub Login: @asudbring
Microsoft Alias: allensu

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

@anaraju
Did you try clocking on the Download option given in this link as shown in the below snapshot:

Once you clcik that, it should download a file named ServiceTags_Public.json

@anaraju Any update?

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

Yes that worked, thanks.


Add multiple filters (where)

I want to be able to have multiple filters like:
a frontend can give me a couple of conditions and based on those I need to filter by using Where()
If I could make a slice of where's and could do
db.where(myslice).find($records)
In Gorm I have to specify the where-chain upfront and I don't know them upfront.
An=y tricks that I am unaware of?

I found out myself.
The trick is you can do like this:
filter := db.Where("your filter")
filter = filter.Where("your second filter")
filter = filter.Where("your third filter")
filter.Find(&object)


Use older bazel

There is an issue with platform detection in bazel 6.0.0
Until this is fixed in Verible, use an older bazel version.

LGTM.


Clustermesh guide with direct etcd connection requires --set global.identityAllocationMode=kvstore

As per the issue title, basically following the current clustermesh guide (1.7 or earlier, and 1.8 as of today), it is easy to miss that global.identityAllocationMode is set to crd by default. If this is not reconfigured to kvstore then identities for pods in remote clusters will not be propagated to other clusters, so cross-cluster policy will not work correctly.
Potential mitigations:

Mention in clustermesh documentation to enable this option
Auto-enable this option in helm charts if global.etcd.enabled is set to true

@joestringer  can you assign it to me.


Is it possible to implement a 404 Error handler?

Hello, I was wondering if there is a way to handle 404 errors.

Hi this will send a http responsecode
yield from resp.awrite("Custom Error Message")
yield from picoweb.http_error(resp, "404")

There's definitely a way to handle 404 errors. One obvious way would be to add a catch-all rule at the end of all webapp's routes. Just care should be taken to make this exactly the last route, e.g. add it with webapp.add_url_rule() immediately before webapp.run().


Authentication Header not present in the token request

Dear maintainers,
I'm running into errors when trying to get this library to work with AWS Cognito.
It seems like AWS is expecting an Authorization header to be present(https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html), when the token request is done, which it is not.
Token Request(copied from the Chrome network tab):
General:
    Request URL: https://auth-nativecloud-d.auth.eu-central-1.amazoncognito.com/oauth2/token
    Request Method: POST
    Status Code: 400
Response Headers:
    access-control-allow-credentials: true
    access-control-allow-origin: http://localhost:3000
    cache-control: no-cache, no-store, max-age=0, must-revalidate
    status: 400
    x-amz-cognito-request-id: [snip]
Request Headers:
    :authority: auth-nativecloud-d.auth.eu-central-1.amazoncognito.com
    :method: POST
    :path: /oauth2/token
    :scheme: https
    content-type: application/x-www-form-urlencoded
    referer: http://localhost:3000/callback?code=[snip]&state=[snip]
Form Data:
    client_id: [snip]
    code: [snip]
    redirect_uri: http://localhost:3000/callback
    code_verifier: [snip]
    grant_type: authorization_code

Configuration:
export const userManagerConfig = {
  authority: "https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_OCLp33801/.well-known/openid-configuration",
  client_id: "[snip]",
  secret: "[snip]",
  redirect_uri: "http://localhost:3000/callback",
  response_type: "code",
  scope: "openid",
};

It would be great if you could help us diagnose, why the Authorization header is not present (if needed I can supply you with the nescessary credentials for the Cognito instance too)
Kind regards and thanks in advance,
Lukas

Any idea when the pull request 1060 to https://github.com/IdentityModel/oidc-client-js/issues/892 will be merged? this will resolve this i think too?

Fixed it by removing the secret both on Cognito's side (see https://github.com/aws-amplify/amplify-js/issues/4426 - no auto generation allowed) and on the client side


Github Action building on Docker (Java 8 and 11), Linux (Java 8 and 11), Mac (Java 8 and 11, and Win (Java 8 and 11)

Instead of previous PR #36
Examples of runs: https://github.com/mathieucarbou/terracotta-utilities/actions
Latest results: https://github.com/mathieucarbou/terracotta-utilities/runs/5333414268?check_suite_focus=true

@cljohnso @akomakom : I didn't add in this PR the removal of Jenkinsfile and azure-pipelines.yml... Should I ?

@cljohnso @akomakom : I didn't include in this PR the removal of Jenkinsfile and azure-pipelines.yml... Should I ? I didn't want to be too "pushy" and force this change, even if I think IMO it would be best for OSS projects.

The Jenkinsfile provides a SNAPSHOT publisher (to nexus).  It can be removed if you are certain that this artifact is never used.  Azure integration can be removed.

@cljohnso @akomakom : I didn't include in this PR the removal of Jenkinsfile and azure-pipelines.yml... Should I ? I didn't want to be too "pushy" and force this change, even if I think IMO it would be best for OSS projects.

The Jenkinsfile provides a SNAPSHOT publisher (to nexus). It can be removed if you are certain that this artifact is never used. Azure integration can be removed.

Done!

@cljohnso @akomakom : here is the last run output so that you can verify the outcome of the GA script again:
https://github.com/mathieucarbou/terracotta-utilities/actions/runs/1927278231
Once this PR is merged we will be able  to activate the GA script as this project build and consequently issue another PR to rewmove the - ga branch name added for now in the script so that the build triggers in my fork.

@mathieucarbou I don't see any PR builds for this.  Are we missing something?  I know the Jenkinsfile and Azure Pipelines files have been removed but is there something else needed to assure a clean build before a merge is enabled?

@mathieucarbou I don't see any PR builds for this. Are we missing something? I know the Jenkinsfile and Azure Pipelines files have been removed but is there something else needed to assure a clean build before a merge is enabled?

This PR removed the previous build config (like @akomakom explained) and switches to the new one.
Until this PR is merged, this only feedback is the build of this PR in my fork that you have since weeks already.
Latest run is fine: https://github.com/mathieucarbou/terracotta-utilities/actions/runs/1927310496
So the PR can be merged.
Once it will be merged, the PR build will appear in the upstream repo. Right now, there is no workflow setup in the upstream repo.


feat(ignore patterns): allow to ignore files

This adds a sister to the files config option called ignorePatterns. Using ignorePatterns functions as a blacklist (where files functions as a whitelist). These configuration options decide which files are included in your project and need to be copied to the Sandbox directory (inside the .stryker-tmp directory).
For example:
{
  "ignorePatterns": ["dist"]
}

This will discover all files in your current working directory, except for files defined inside the "dist" directory. The .gitignore to resolve the ignore patterns.
By default, Stryker always adds ['.git', 'node_modules', '.stryker-tmp'] when resolving these patterns, if you have some reason why you would want a copy of these files in your sandbox dir you can re-enable them using as your first pattern, for example:
{
  "ignorePatterns": ["!node_modules"]
}

This also changes the default way that Stryker uses to discover which files are included in your project.
Previously, Stryker used git ls-files --others --exclude-standard --cached --exclude .stryker-tmp to discover which files are included in your project if you didn't specify files yourself.  If not, you got an error and had to use files
❌ If a .gitignore'd file is needed to run your tests, you would have to fall back on files.

Note, combining "files" with "ignorePatterns" is not possible. When specifying both, Stryker will use the files array to discover your files
Closes #1593
Closes #2739

@stryker-mutator/stryker-js-and-friends-maintainers What do you think about this? A couple of thoughts:

I've decided to not go with a .strykerignore file in the end. It would take us a lot of time and code to maintain, which I think isn't really worth it for this niche feature (who is going to override ignorePatterns anyway? 🤷♂)
I've chosen the name ignorePatterns, which is in line with how eslint calls it, but this could potentially be confusing, since users might expect these patterns to be ignored for mutating... ?
Should we deprecate "files"? I don't see a reason for users to really use a files array. However, since this was the only way to include non-gitignored files in the past, it might be a bit harsh to out-right deprecate it.

Maybe we should rename it to ignoreFiles, so it's more in line with files itself. However, you might think you can specify a .strykerignore or .gitignore file there 🤷♂

Ok, I think I know what I want to do.
I think I'll deprecate files. If a user defines files, I'll log a warning and rewrite them to ignorePatterns rules:
{
  "files": [ "src/**/*.ts", "dist/**/*.js"]
}

wordt
{
  "ignorePatterns": ["**", "!src/**/*ts", "!dist/**/*.js"]
}

Changing
{
  "files": [ "src/**/*.ts", "dist/**/*.js"]
}

into
{
  "ignorePatterns": ["**", "!src/**/*ts", "!dist/**/*.js"]
}

will work, but removing the ignorePatterns all together may also work. Should we let the user know that it might be smart to try running without the suggested change?

I've added a remark about completely removing "files":

DEPRECATED. Use of "files" is deprecated, please use "ignorePatterns" instead (or remove "files" altogether will probably work as well). For now, rewriting them as ["","!src//*.js","src/index.js"]. See https://stryker-mutator.io/docs/stryker-js/configuration/#ignorepatterns-string

LGTM!


Multistore: what if storecodes differ from urls

Is there any suggested way of configuring multistore where storecode does not follow the url?
For example:

store code 'au_en', url '/au'
store code 'en_us', url '/en-us'

At the moment this doesn't seem to work without me digging in the code and figuring out a workaround? Urls seem to be made of storecodes rather than using the url?
Thanks for any suggestions.

@dio5 at this moment we're using storeCode as it's defined in the URL. Probably it could be taken from config.storeViews.storeCode instead so it would let you to override it. The other option is to run different VSF instances on different IP ports and then route the URLs on Nginx - you can set the X-VSF-Store-Code header via Nginx to mark the proper store code OR set it via ENV: https://github.com/DivanteLtd/vue-storefront/blob/dfdb9f5264d2ca08aaad7281843cd4eda643ef2b/core/scripts/utils/ssr-renderer.ts#L128


Multiple AI Avatars, especially for use in multiple ai systems.

I'm using your wonderful package and it's great. Thanks! I am now working on AI agents, where a conversation may have a user and multiple AI agents conversing. It would be great if, in messages returned, we could specify different AIs. I.e. right now you have 'ai' or 'user' and their corresponding name and icon/avatar definitions. Might it be possible for message roles to be extended to something like "ai:ai-name", like "ai:coder", "ai:reviewer", etc. and have associated config for setting different names and avatars/icons to mape to those? I could create a custom component, but then I would lose or have to create the rendering for markdown, prism, and custom elements as are in standard messages.

Hi @pillowsoft, that is very likely possible, only issue right now is that Deep Chat is architected to work around the 'ai' role string for ai response messages, hence there would need to be a good bit of decoupling done + new logic to handle different type of roles.
I am currently working on a feature to disable the submit button and directly after that I will be picking up the integration of OpenAI API function calling. I am more than happy to implement this feature, but can only start it after these have been completed which will likely be some-time next week. I think there are other people who would find this useful so I will definitely try to add it. I will be closing this issue for now and will re-open it when I start the work on it. Thanks!

You can continue to use this component at the moment as-is and then simply flip the role names when I will implement this feature.

Thanks and thanks for the quick response!

Thankyou for your patience. I have now released the aforementioned features and will now be focusing on implementing multiple role types. I will update this thread for the latest updates.

I have now refactored most of the logic to allow custom roles. This code affects most services so I will need to do a lot of testing to make sure things still work as expected and finalise the new code. Will report on progress tomorrow.

I believe all of the code has been polished up to allow custom roles. I will update the documentation and hopefully release the new functionality tomorrow. Will update this thread when this is done.

Custom roles are now live in Deep Chat version 1.4.2 :tada: :tada: :tada: :tada:
These roles can be customized to your preference using the messageStyles, avatars and names properties.
I will be closing this issue, however if you experience any issues or have uncertainties about custom roles, feel free to comment below. For everything else you can create a new issue. Thanks!

Thank you!!!!!🎉 🎉 I will give it a test.


Removed parent POM.

This PR removes the core parent POM.

Added changes to the various pom.service.xml aggregate POMs since we no longer have a core aggregate POM.

/azp run java - keyvault - ci


fix unix test compiling failed on MAC M1

No any unit test not be executed as the compiling failed with this issue :
https://stackoverflow.com/questions/74112738/underfined-function-error-in-go-jmptofunctionvalue
https://github.com/jenkins-x/jx/issues/2081
https://github.com/procodr/monkey
the monkey patch unit tests still failed but the compile finished anyway and unit tests that are not related to the monkey patch can be executed.

Codecov Report
Patch coverage has no change and project coverage change: +0.10% :tada:

Comparison is base (5b3a33c) 99.68% compared to head (0820e1b) 99.78%.
Report is 2 commits behind head on main.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #401      +/-   ##
==========================================
+ Coverage   99.68%   99.78%   +0.10%
==========================================
  Files          83       80       -3
  Lines        5722     5698      -24
==========================================
- Hits         5704     5686      -18
+ Misses         12        8       -4
+ Partials        6        4       -2

see 3 files with indirect coverage changes

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

The original monkey repository has been archived by the owner, so we need to find a suitable alternative, the repository you are using seems too temporary for me, how about this gomonkey repository? Could you help to test it?

Testing gomonkey on MacOS M1,  the issues https://github.com/agiledragon/gomonkey/issues?q=is%3Aissue++Macos+m1 still exists.  and the interface and method of use changed in an incompatible way. It would only be worth doing the refactor until gomonkey is stable on MacOS M1/M2.

You are right, gomonkey is not stable now, we should wait or find another library, thanks for you work.


cmake can't find package

I'm sorry but i don't understand how to use ndk-pkg installed packages in cmake projects. And yes, i have read documentation hundred times, moreover i have read instructions shown in terminal on ndk-pkg deploy. I added all suggested to build.gradle, i added all suggested to CMakeLists.txt but building says:
CMake Error at CMakeLists.txt:188 (find_package):
Could not find a package configuration file provided by "somelib" with any
of the following names:
somelibConfig.cmake
somelib-config.cmake
Add the installation prefix of "somelib" to CMAKE_PREFIX_PATH or set
"somelib_DIR" to a directory containing one of the above files.  If "somelib"
provides a separate development package or SDK, be sure it has been
installed.
What do i do wrong?

could you show me :

the ndk-pkg commands you run
your build.gradle
your CMakeLists.txt

./ndk-pkg deploy android-34-arm64-v8a/libssh --ndk-home=/Users/sergey/Library/Android/sdk/ndk/25.2.9519653

libssh's dependencies are also should be deploied by yourself.
./ndk-pkg deploy android-34-arm64-v8a/openssl-dev
./ndk-pkg deploy android-34-arm64-v8a/libz
./ndk-pkg deploy android-34-arm64-v8a/libssh

implementation 'com.fpliu.ndk.pkg.prefab.android.34:openssl-dev:3.3.0@aar'
implementation 'com.fpliu.ndk.pkg.prefab.android.34:libz:0.10.6@aar'
implementation 'com.fpliu.ndk.pkg.prefab.android.34:libssh:1.3.1@aar'

find_package(libz:libz.so REQUIRED CONFIG)
find_package(openssl-dev:libcrypto.so REQUIRED CONFIG)
find_package(libssh:libssh.so REQUIRED CONFIG)

i just tried link openssl-dev and it have same error:
CMake Error at CMakeLists.txt:192 (find_package):
  Could not find a package configuration file provided by "openssl-dev" with
  any of the following names:

    openssl-devConfig.cmake
    openssl-dev-config.cmake

  Add the installation prefix of "openssl-dev" to CMAKE_PREFIX_PATH or set
  "openssl-dev_DIR" to a directory containing one of the above files.  If
  "openssl-dev" provides a separate development package or SDK, be sure it
  has been installed.

Could you explain how cmake should find package if there is no any path to ndp-pkg or maven repository in CMakeLists.txt?

btw i can link all libraries with something like:
set(NDK_PKG_HOME_DIR /Users/sergey/.ndk-pkg)
add_library(
        libssh
        STATIC
        IMPORTED
)
set_target_properties(
        libssh
        PROPERTIES IMPORTED_LOCATION
        ${NDK_PKG_HOME_DIR}/installed/android-34-arm64-v8a/libssh/lib/libssh.a
)

but perhaps it's not expected way of using ndk-pkg, right?

btw i can link all libraries with something like:
set(NDK_PKG_HOME_DIR /Users/sergey/.ndk-pkg)
add_library(
        libssh
        STATIC
        IMPORTED
)
set_target_properties(
        libssh
        PROPERTIES IMPORTED_LOCATION
        ${NDK_PKG_HOME_DIR}/installed/android-34-arm64-v8a/libssh/lib/libssh.a
)

but perhaps it's not expected way of using ndk-pkg, right?

It works but not a normal way.

find_package(libz REQUIRED CONFIG)
find_package(openssl-dev REQUIRED CONFIG)
find_package(libssh REQUIRED CONFIG)

target_link_libraries(sha256sum openssl-dev::libcrypto.so)

or
find_package(libz REQUIRED CONFIG)
find_package(openssl-dev REQUIRED CONFIG)
find_package(libssh REQUIRED CONFIG)

target_link_libraries(app libssh:libssh.a)
target_link_libraries(app libz::libz.a)
target_link_libraries(app openssl-dev::libcrypto.a)

see my message above - i tried link only libz or openssl-dev - same problem - cmake can't find package. It may be related with some macos individual issues, i don't know. Btw, now, after few attempts uninstall/reinstall/install it started ignore --static and installs libssh.so without libssh.a, but after few more reinstallation (including ndk-pkg) it stopped install (can't find formulae) any library. So i'm sorry for boring you, i'm going to stop attempts to use ndk-pkg in my project, so let close this thread.

I'm sorry. my local test works well. This is a example https://github.com/leleliu008/android-calendar-for-the-aged , but it use Kotlin script not Groovy script.

btw i can link all libraries with something like:
set(NDK_PKG_HOME_DIR /Users/sergey/.ndk-pkg)
add_library(
        libssh
        STATIC
        IMPORTED
)
set_target_properties(
        libssh
        PROPERTIES IMPORTED_LOCATION
        ${NDK_PKG_HOME_DIR}/installed/android-34-arm64-v8a/libssh/lib/libssh.a
)

but perhaps it's not expected way of using ndk-pkg, right?

This is actually what the Android Gradle Plugin does.
The content of app/.cxx/RelWithDebInfo/3g645a1v/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/openssl-dev/openssl-devConfig.cmake
if(NOT TARGET openssl-dev::headers)
add_library(openssl-dev::headers INTERFACE IMPORTED)
set_target_properties(openssl-dev::headers PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/headers/include"
    INTERFACE_LINK_LIBRARIES ""
)
endif()

if(NOT TARGET openssl-dev::libcrypto.a)
add_library(openssl-dev::libcrypto.a STATIC IMPORTED)
set_target_properties(openssl-dev::libcrypto.a PROPERTIES
    IMPORTED_LOCATION "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libcrypto.a/libs/android.arm64-v8a/libcrypto.a"
    INTERFACE_INCLUDE_DIRECTORIES "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libcrypto.a/libs/android.arm64-v8a/include"
    INTERFACE_LINK_LIBRARIES ""
)
endif()

if(NOT TARGET openssl-dev::libcrypto.so)
add_library(openssl-dev::libcrypto.so SHARED IMPORTED)
set_target_properties(openssl-dev::libcrypto.so PROPERTIES
    IMPORTED_LOCATION "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libcrypto.so/libs/android.arm64-v8a/libcrypto.so"
    INTERFACE_INCLUDE_DIRECTORIES "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libcrypto.so/libs/android.arm64-v8a/include"
    INTERFACE_LINK_LIBRARIES ""
)
endif()

if(NOT TARGET openssl-dev::libssl.a)
add_library(openssl-dev::libssl.a STATIC IMPORTED)
set_target_properties(openssl-dev::libssl.a PROPERTIES
    IMPORTED_LOCATION "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libssl.a/libs/android.arm64-v8a/libssl.a"
    INTERFACE_INCLUDE_DIRECTORIES "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libssl.a/libs/android.arm64-v8a/include"
    INTERFACE_LINK_LIBRARIES ""
)
endif()

if(NOT TARGET openssl-dev::libssl.so)
add_library(openssl-dev::libssl.so SHARED IMPORTED)
set_target_properties(openssl-dev::libssl.so PROPERTIES
    IMPORTED_LOCATION "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libssl.so/libs/android.arm64-v8a/libssl.so"
    INTERFACE_INCLUDE_DIRECTORIES "/home/leleliu008/.gradle/caches/transforms-3/fde0bd0333cf75f28a02aa4fabb6221d/transformed/openssl-dev-3.3.0/prefab/modules/libssl.so/libs/android.arm64-v8a/include"
    INTERFACE_LINK_LIBRARIES ""
)
endif()


pysam not installed issue

Hi there,
I was running speedseq realign, and it complains that pysam not installed. But I do have pysam installed, and the error message looks truncated...  I can open python and import pysam without problem.
Do you have an idea what's the problem? Thanks.
Sourcing executables from /risapps/rhel6/speedseq/0.0.3/bin/speedseq.config ...
Checking for required python modules ()...
Program: speedseq
Version: 0.0.3a
Author: Colby Chiang<EMAIL_ADDRESS>usage:   speedseq  [options]
command: align    align FASTQ files with BWA-MEM
var      call SNV and indel variants with FreeBayes
somatic  call somatic SNV and indel variants in a tumor/normal pair with FreeBayes
sv       call SVs with LUMPY
realign  re-align from a coordinate sorted BAM file
options: -h       show this message
Error: pysam is not installed for

The HPC staff re-installed it, and the pysam problem is gone.
Thanks,
Ming


Implement support for Upload and Upgrade transactions

fuel-core has introduced two new transaction types which we need to implement support for.
See:
https://specs.fuel.network/master/tx-format/transaction.html?highlight=Upgrade#transactionupgrade
https://specs.fuel.network/master/tx-format/transaction.html?highlight=Upgrade#transactionupload

Upgrading a blockchain transaction typically involves updating the underlying technology or protocol to improve performance, security, or functionality. Here are the general steps to upgrade a blockchain transaction:1. *Proposal*: Suggest changes or upgrades to the blockchain protocol or technology.2. *Development*: Implement the proposed changes through coding and testing.3. *Testing*: Conduct thorough testing to ensure the upgrade is secure and functional.4. *Consensus*: Reach agreement among network participants (e.g., miners, validators) to implement the upgrade.5. *Deployment*: Roll out the upgrade to the blockchain network.6. *Activation*: Enable the upgrade at a specific block height or timestamp.7. *Monitoring*: Continuously monitor the network to ensure the upgrade is working as intended.Some popular upgrade methods include:1. *Hard fork*: A permanent divergence from the previous protocol, creating a new blockchain.2. *Soft fork*: A backward-compatible upgrade that doesn't split the blockchain.3. *Layer 2 scaling solutions*: Upgrades that improve scalability without modifying the underlying blockchain.4. *Smart contract upgrades*: Updates to specific smart contracts, rather than the entire blockchain.Remember, upgrading a blockchain transaction requires careful planning, testing, and consensus to ensure a smooth transition and maintain the integrity of the network.

--

Upgrading a blockchain transaction typically involves updating the underlying technology or protocol to improve performance, security, or functionality. Here are the general steps to upgrade a blockchain transaction:1. *Proposal*: Suggest changes or upgrades to the blockchain protocol or technology.2. *Development*: Implement the proposed changes through coding and testing.3. *Testing*: Conduct thorough testing to ensure the upgrade is secure and functional.4. *Consensus*: Reach agreement among network participants (e.g., miners, validators) to implement the upgrade.5. *Deployment*: Roll out the upgrade to the blockchain network.6. *Activation*: Enable the upgrade at a specific block height or timestamp.7. *Monitoring*: Continuously monitor the network to ensure the upgrade is working as intended.Some popular upgrade methods include:1. *Hard fork*: A permanent divergence from the previous protocol, creating a new blockchain.2. *Soft fork*: A backward-compatible upgrade that doesn't split the blockchain.3. *Layer 2 scaling solutions*: Upgrades that improve scalability without modifying the underlying blockchain.4. *Smart contract upgrades*: Updates to specific smart contracts, rather than the entire blockchain.Remember, upgrading a blockchain transaction requires careful planning, testing, and consensus to ensure a smooth transition and maintain the integrity of the network.


rcl_interfaces: 1.3.1-1 in 'rolling/distribution.yaml' [bloom]

Increasing version of package(s) in repository rcl_interfaces to 1.3.1-1:

upstream repository: https://github.com/ros2/rcl_interfaces.git
release repository: https://github.com/ros2-gbp/rcl_interfaces-release.git
distro file: rolling/distribution.yaml
bloom version: 0.11.2
previous version for package: 1.3.0-1

action_msgs
* Depend on rosidl_core_generators for packages required by actions (#144 <https://github.com/ros2/rcl_interfaces/issues/144>)
* Contributors: Jacob Perron

builtin_interfaces
* Depend on rosidl_core_generators for packages required by actions (#144 <https://github.com/ros2/rcl_interfaces/issues/144>)
* Fix documented range (#139 <https://github.com/ros2/rcl_interfaces/issues/139>)
* Contributors: Jacob Perron, Tully Foote

composition_interfaces

No changes

lifecycle_msgs

No changes

rcl_interfaces

No changes

rosgraph_msgs

No changes

statistics_msgs

No changes

test_msgs
* Depend on rosidl_core_generators for packages required by actions (#144 <https://github.com/ros2/rcl_interfaces/issues/144>)
* Make the functions in the header static inline (#140 <https://github.com/ros2/rcl_interfaces/issues/140>)
* Contributors: Chris Lalancette, Jacob Perron

This pull request has been mentioned on ROS Discourse. There might be relevant details there:
https://discourse.ros.org/t/rosidl-defaults-split-into-rosidl-defaults-and-rosidl-core/27143/2


Sqlite amalgamation 3380500

Closes #1042

Codecov Report

Merging #1043 (8de8ef8) into master (adb060d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1043   +/-   ##
=======================================
  Coverage   46.04%   46.04%
=======================================
  Files          11       11
  Lines        1490     1490
=======================================
  Hits          686      686
  Misses        667      667
  Partials      137      137

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update adb060d...8de8ef8. Read the comment docs.


Thread信息显示不全

Thread: OkHttp http://dev.bodtec.cn/...
如上所示，Thread信息显示不全，后面显示三个点

I'm sorry I didn't understand this one. There is no explanation, therefore closing.


Update connect-to-vpn extension

Description
Fixes behavior when extension spawning zombie processes while updating services statuses in background
Resolves #15990
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[ ] I checked that files in the assets folder are used by the extension itself
[ ] I checked that assets used by the README are placed outside of the metadata folder

LGTM, solves the zombie process problem

LGTM


Update tests

### Tasks
- [x] Update unittests, add new model tests, update changed models
- [x] Update integration tests

Ready for 2.0.0b2.


WIP kubernetes: fix flaky test and run tests as group

Motivation for this change
Fixes the flakiness in the kubernetes tests and makes it possible to run the tests as a group in all circumstances.
Fixing the flakyness
All of the kubernetes tests would sometimes fail after spamming the logs with messages like this:
...
machine1 # [  232.393093] kubelet[1402]: E0730 10:42:42.228320    1402 kubelet.go:2291] "Error getting node" err="node \"machine1.my.zyx\" not found"

The underlying cause was that kube-apiserver failed to start because it ran out of restarts while waiting for the certificates to appear:
machine1 # [   15.805215] kube-apiserver[876]: Error: failed to parse service-account-issuer-key-file: open /var/lib/kubernetes/secrets/service-account-key.pem: no such file or directory
machine1 # [   15.809382] systemd[1]: kube-apiserver.service: Main process exited, code=exited, status=1/FAILURE
machine1 # [   15.812195] systemd[1]: kube-apiserver.service: Failed with result 'exit-code'.
...
machine1 # [   21.243087] kube-apiserver[1111]: Error: failed to parse service-account-issuer-key-file: open /var/lib/kubernetes/secrets/service-account-key.pem: no such file or directory
machine1 # [   21.249561] systemd[1]: kube-apiserver.service: Main process exited, code=exited, status=1/FAILURE
machine1 # [   21.251559] systemd[1]: kube-apiserver.service: Failed with result 'exit-code'.
...
machine1 # [   27.410962] kube-apiserver[1248]: Error: failed to parse service-account-issuer-key-file: open /var/lib/kubernetes/secrets/service-account-key.pem: no such file or directory
machine1 # [   27.455427] systemd[1]: kube-apiserver.service: Main process exited, code=exited, status=1/FAILURE
machine1 # [   27.468722] systemd[1]: kube-apiserver.service: Failed with result 'exit-code'.
...
machine1 # [   28.062371] systemd[1]: kube-apiserver.service: Start request repeated too quickly.
machine1 # [   28.069502] systemd[1]: kube-apiserver.service: Failed with result 'start-limit-hit'.

By default, a service is only permitted to restart some amount of times in an interval  (see DefaultStartLimitIntervalSec in systemd-system.conf(5)), and kube-apiserver was hitting this.  According to the docs, the default limit was supposed to be 5 restarts in 10s, but systemd in the tests seems to give up after 3 restarts in 10s.  I couldn't find where this is configured.
I think the solution to this is to remove the restart limit on kube-apiserver by setting StartLimitIntervalSec to 0 (according to systemd.unit(5).  Although I've never seen them fail in tests, the other kubernetes processes also have similar failures due to missing certificates.  So, let's make them restart forever too.
The change affects live deployments too and not just tests.  I'd say this is desirable since kubernetes components are supposed to self-heal automatically, so restarting them forever should be fine.
Running the tests as a group
This PR reorganizes the tests a bit so that all of the following work:
# ofborg running passthrough tests
$ nix-build --no-out-link -A kubernetes.passthru.tests

# ofborg running tests because of an issue comment like `@ofborg test kubernetes`
$ nix-build --no-out-link ./nixos/release.nix -A tests.kubernetes

# ofborg running individual test because of an issue comment like `@ofborg test kubernetes.dns-single-node`
$ nix-build --no-out-link ./nixos/release.nix -A tests.kubernetes.dns-single-node

# human runs individual tests
$ nix-build --no-out-link ./nixos/release.nix -A tests.kubernetes.dns-single-node
$ nix-build --no-out-link ./nixos/tests/kubernetes/dns.nix

The weird thing here is that I couldn't find any other examples of groups of tests that work like this.  Everybody else seems to just be running tests only individually.
Things done

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

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

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

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

[x] Fits CONTRIBUTING.md.

Let's see if orborg can now run all the tests without having to list them:
@ofborg test kubernetes

Let's see if ofborg can run just one test:
@ofborg test kubernetes.dns-single-node

@saschagrunert @johanot Could one of you review this PR, please?  It fixes the flaky kubernetes tests by changing the systemd services to keep trying to restart forever.

No critique of the approach itself but someone should really fix the dependencies so this doesn't rely on crashing. I have tried running the kubernetes module in the past and it failed somewhere. But this made it impossible to investigate as there where lots of spurious crashes/restarts.

Are the certificates in question generated by the service itself? It is possible to make the service dependent on files to be present if that is any help.

Sorry I haven't had the time to look into this yet, but just to provide some context/history here.
We've had attempts previously on fixing the "Kubernetes restart dance" using systemd dependencies. See for example this and related issues: https://github.com/NixOS/nixpkgs/pull/67563
What makes it difficult: There are currently cyclic dependencies of some components, as well as daemons that lack reconnect capabilities and thus only retry if actually restarted.
While I'm sure that a proper startup sequence can be engineered, we just have to keep in mind the readability and maintainability of the code, as well as making sure that any solution doesn't cause more problems than it fixes.

Ok. Than letting it crash until it converges seems the preferred option.

I merge this in a few days until there is objection.

While I'm sure that a proper startup sequence can be engineered, we just have to keep in mind the readability and maintainability of the code, as well as making sure that any solution doesn't cause more problems than it fixes.

FWIW I've had similar experiences with trying to encode complex file-based dependencies into systemd in the past.  It always seems like it should be possible, but actually writing the dependencies ends up being very fiddly because the systemd language sometimes requires you to write similar sounding things multiple times to get the desired effect.  It's then a pain to test that you actually got the dependencies right because you have to repeatedly restart things and hope it wasn't just timing that made it work.  And, once you've done that, the resulting services behave counter-intuitively sometimes (e.g. if you stop a service with a path dependency, and then change the file at the path, then systemd will try to start the service back up).
On the other hand, "it tries to restart every 5s forever" is trivial to explain and reason about, even if feels a bit hacky.

I've just rebased this, but the tests aren't going to work because kubernetes in general doesn't seem to work after the upgrade to 1.22 (#132759).  Investigating...

I've rebased past the fix and the tests pass.
I think this is good to merge now.

@Mic92 I think you volunteered to merge this earlier.  Could you do so, please?

Thank you!


Create new system for scene changing

Create a new system that can be used by other scripts to change scenes.
The containing functions will be public so they may be called by any script that is requiring scene change.
Next level can be assumed: current scene index + 1
Reference for scene change: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html

Due to wanting to implement a global score keeper I also went ahead and fixed the scene change in order to test the new global score kept in PlayerData. The "scene change button" Bug was fixed by the end state disabling the camera lock when the level is complete. This will have to be kept in mind for when a pause is implemented.


Update kmongo to 4.2, coroutine to 1.4 and other dependencies

To be able to change to latest kmongo and coroutine versions, some
cleanup in mongodb dependencies where necessary as declared versions
where incompatible.
MongoDB drivers are now only transient dependencies of kmongo to avoid
such incompatibilities in the future.
Checklist

[x] mvn clean install build and test completes

@tellison
Incompatibility to latest (k)mongo drivers were not in tests respective the mocks as I thought in the beginning, there were incompatibilities between the declared version of kmongo, mongodb-driver and coroutines.
Cleaned up the dependencies, was able to upgrade without any code change.
/cc @johnoliver @karianna

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@766116b). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #33   +/-   ##
=======================================
  Coverage        ?   63.61%
  Complexity      ?      280
=======================================
  Files           ?      108
  Lines           ?     2787
  Branches        ?      449
=======================================
  Hits            ?     1773
  Misses          ?      782
  Partials        ?      232

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 766116b...0a93267. Read the comment docs.


Update documentation with dependencies and examples

Hi, I've been trying to instal this package to test. I had to install a few more packages. I would suggest adding them to the documentation:
pip install apriltag PySide6 scikit-learn open3d scikit-spatial scikit-image

In addition, I couldn't find the dependency for img_to_grid. Is this code that you have developed or is it part of a third party package?
Also, it would be nice to add a sample Rosbag that we can use to test your example. That could be helpful in allowing us to find insights in case our application doesn't work

The issue with img_to_grid exists within the docker as well.
It was a big pain to actually run things in docker, as it was stubbornly using python-dateutil 2.7.3, which is not compatible with the latest version of open3d.
I had to uninstall it using sudo pip uninstall python-dateutil --isolated and then install the right version pip install python-dateutil==2.8.2

nope =/

If someone has resolved this then kindly post the solution.

Hi, we have added the img_to_grid file in the new release. The issue should be resolved.


[Feature Proposal] Online Configuration

I have a project that lives only in the file:// domain, and where I cannot use build tools. The CDN version is great for this, but I lose out on a handful of features, specifically focus-within.
So, I'm proposing a new configuration page on tailwindcss.com to allow for customization in similar use cases. Instead of taking the Bootstrap approach of using a mega form, the Tailwind configurator would be a JSON text editor with a small selection of presets. This may use something like the Monaco Editor.
Once the user hits a submit button, a serverless function would generate the tailwind.css & tailwind.min.css files and download to the browser.
I'm curious how many Tailwinders would benefit from this. I would be willing to contribute to the project if it's going to be adopted.

Sound like something useful to have. Why do you need for it to be adopted? Have I understood right that it would basically be "Tailwind-Processing as a service"?
I am not familiar with running the processing in the browser. If it would be possible that would lower the cost to host it to 0, which is nice.

If the browser can process the config and compile a CSS file for download, that would be great. I don’t know if that’s possible.

Sound like something useful to have. Why do you need for it to be adopted? Have I understood right that it would basically be "Tailwind-Processing as a service"?

I expect the benefits of this feature to be:

Allow TW variant configuration without requiring users to setup a build process
Educational use for prospective and new users
Potentially display output .css file size as the config is changed
Theme customization without build tools

Again, my use case is focus-within, which is not included in the CDN version of Tailwind. I'm using Vue and TW for a small un-hosted app (file://app.html) for a medium sized office, and I'm developing in an unofficial capacity. In my second gig, I'm able to use all of the features of TW via PostCSS and WebPack.
Technically, a simpler solution would be to provide a few TW CDN versions with different utilities and variants, but then everyone is going to request a version to fit their specific needs.

I am not familiar with running the processing in the browser. If it would be possible that would lower the cost to host it to 0, which is nice.

I have no experience with WebAssembly, but maybe it's possible to compile via WebPack in the browser according to this article.

Agree this would be a cool thing to build. There's already a quick and dirty version of this at https://tailwindcss.now.sh built by @bradlc, but it would be awesome to slap a pretty face on it.
Also, this aside is there any reason you can't just precompile Tailwind locally and copy the compiled file into your project?

I did not find it's sourcecode, could you link it?

Also, this aside is there any reason you can't just precompile Tailwind locally and copy the compiled file into your project?

@adamwathan That would be too easy.

Agree this would be a cool thing to build. There's already a quick and dirty version of this at https://tailwindcss.now.sh built by @bradlc, but it would be awesome to slap a pretty face on it.

This is a barebones version of what I'm thinking. Didn't know it existed. Source code would be nice.

@adamwathan That would be too easy.

I did not understand this. Are you being ironic?

@adamwathan That would be too easy.

I did not understand this.

Yes, sorry. It may be possible to compile my custom Tailwind and get it to work, but it's a large company with strict security. Emailing the file might work depending on the firewall, but USB sticks are a no-go.
At any rate, this is just a proposal. It seems like Zeit Now's free tier would cover this use case.

Ok, sounds like a pointless measure if you are then allowed to include code from any random domain, but I understand it's out of your control. In this case, could you just compile it on your machine and put it on a free cdn?

@brasilikum I'd like to make this issue less about how I get a custom Tailwind file to a single project, and more about whether an online config tool would be useful to the community as a whole. Displaying an interactive editor that demonstrates TW's configurability would make the library appealing to newcomers who haven't yet caught the drift. At minimum, it lowers the barrier to entry for anyone who wants to customize TW.
I hope that clarifies what this could accomplish.

I think @bradlc's stuff is over here:

https://github.com/bradlc/tailwindcss-as-a-service
https://www.npmjs.com/package/tailwindcss-language-server

Also @utkarshkukreti just released https://tailwind.run/ whichs seems to do what you wanted: https://github.com/utkarshkukreti/tailwind.run

Thank you @hacknug! tailwind.run was exactly what I needed. There may still be an opportunity for an official TW configuration tool, but my needs are met.
@adamwathan Feel free to close this if you don't want to pursue the idea. Thanks for TW and filling in for Derrick!

I have been toying with the idea of building something like this...
User can either use the default config, or import there own.
Then have a sketch/figma styled interface where you could alter settings, and see example markup being changed, on the fly. Even insert your own markup, or fetch from another url. And then export... It would be a great tool for QA.


Support publishing codemods to npm from external repos

For users not publishing codemods to the community folder, we want to still provide a way for consumers to bundle + publish their codemods for use with our CLI.
Related thread: https://github.com/facebook/jscodeshift/issues/126
This might look a little something like this:
@codeshift/cli publish path/to/transform
Dependency management might be an interesting challenge, but i think we can solve that by requiring transforms to also be accompanied by a codeshift.config.js file containing everything it needs.

I was about to propose something similar, so I'm glad someone else is also asking for it.
on your exampe I guess you mean this?
@codeshift/cli<EMAIL_ADDRESS>path/to/transform/*.js

It will be nice, if each package doesn't need to be a single transform but a collection of transforms. It is a bit cumbersome to ask devs to publish a separate package for each codemod they want to share.
If you accept "collections" of codemods, some options to select an specific trasform may be:

@codeshift/cli<EMAIL_ADDRESS>path/to/transform/*.js
Provide a list of the available codemods on that package and make the user pick one

This will also take advantage of the codeshift .config.file

Hey @danielo515, thanks for chiming in!
Just so I can have more context, what kind of codemods / collections of codemods would you consider publishing?
Are they codemods intended for a specific package? For example codemods that migrate an npm package from one version to another? Or generic codemods that do things like order imports, change formatting etc?

Accept "collections" of codemods
Really interesting idea! Currently, we have the concept of "motions" that are essentially parts of a single codemod. An example of a motion could be, update imports, remove props, clean up file. Authoring#motions . That might suit your use-case, otherwise maybe we can adapt that idea a bit.

It is a bit cumbersome to ask devs to publish a separate package for each codemod they want to share

For this we've created an init command that auto generates a folders for each of the codemods you want to publish. Should speed things up a bit if you're interested

Hello.
I am thinking more like generic or thematic collection of code mods. Right now there are two usual ways people share codemods

very uncomfortably by asking you to clone their repository and giving the full path to codeshift
they wrap jscodeshift cli themselves and ask you to run using "npx"

The first one is very tedious for the user, while the second one is wasteful and redundant, not to mention how confusing can be for end users.
Some examples of this last method are:

react codemods
lit codemods
this same community cli
my own personal codemods 😉

I really wish to see this cli become an standard way to run any codemod like npx is the standard way to run cli tools from npm.
That's why I mention that having just one codemod per package, albeit simpler to implement, it's not comfortable.
I have experience with lerna and other tools, but I still prefer to not have to have 10 packages published for a bunch of codemods

I still prefer to not have to have 10 packages published for a bunch of codemods

Yeah that's totally fair, thanks for sharing!
So far, codemods related to a specific npm package like @atlaskit/avatar are contained in their own package, organised by version since all of the codemods can be batched and run with the cli from the one package.
What i'd like to build next is a pretty much what you've described to a tee (I'm really glad you brought it up)!

Generic or thematic collection of code mods

My current thinking is to allow people to create preset codemods that are generic in that they don't relate to a specific published npm package like react or @atlaskit/avatar but are more utility oriented.
To give an example, you might have a set of codemods that do things like sort-imports, remove-default, rename-relative-imports, etc. These are generic in that they can be applied to any project.
The folder structure in my head right now is (Totally open to feedback here!):
/community
  /preset-import-management
     /__tests__
     /sort-imports.ts
     /remove-default.ts
     /rename-relative-imports.ts

And that would be accessible via CLI in the same way you've described.
npx @codeshift/cli --preset import-management#sort-imports path/to/src
What do you think about that? Would that work for you?
Just out of interest what types of codemods would you like to publish? Would love to work with you on that to get them in 😄

My current thinking is to allow people to create preset codemods that are generic in that they don't relate to a specific published npm package like react or @atlaskit/avatar but are more utility oriented.

While the semantics may differ, I don't see technical differences other than, maybe, being tied to an specific library version. But the version it is just one more level of grouping, so it still kind of similar.

To give an example, you might have a set of codemods that do things like sort-imports, remove-default-import, rename-relative-imports, etc. These are generic in that they can be applied to any project.

Yeah, that is exactly what I am referring to

The folder structure in my head right now is (Totally open to feedback here!):

That folder structure looks reasonable for packages/transforms that live inside this repository. But some people may not want/can go to the hurdle of contribute to an open-source project just to share a bunch of codemods they have written. Or maybe those codemods doesn't fit into a generic community project.
Those kind of codemods may benefit from this cli accepting external packages.
So, similarly to the syntax you proposed can be done like this:
npx @codeshift/cli --package @danielo515/codemods#sort-imports path/to/src

If you want to take a look at the kind of stuff I'm talking about, here you have my personal codemods:
https://github.com/danielo515/codemods
Regards

Ah cool, how would you expect this to work?
Because for security reasons, codemods would have to be published to the user's own NPM (ie people wouldn't be able to publish straight to this registry), which would require them to run some sort of publish command on their end, specify a package name to publish with etc. We could potentially do that, but might be fiddly for the user to set-up 🤔
so could look something like:
File structure
codemods/
  /sort-imports.ts
  codeshift.config.js

Configuration (codeshift.config.js)
{
  name: 'mycodemods',
 transforms: {
  sortImports: require('./sort-imports.js');
 }
}

Publish command
@codeshift/cli publish codemods/codeshift.config.js --someNPMToken 1111111
Consuming
@codeshift/cli --package mycodemods#sortImports /path/to/code

Hello @danieldelcore
Everything you said makes sense except the publishing part. What do you mean by "publishing straight to this registry" ?
My proposition is to use public npm packages that people have, of course, published to npm
So the steps would be:

Create a package following the conventions you mentioned (for ease of use, the main property of package.json should point to codeshift.config.js
Publish it to npm npm publish
You can use codeshift/cli to consume such package like on the last command you mentioned
Codeshift will install the package locally, probably to a .codeshift configuration folder
codeshift will "require" the package and run the requested transformation

Think about like the plugin system babel uses, where anyone can publish a babel package as long as they stick to the babel conventions.
Let me know if this makes sense

Ahh that clears it up for me thanks!
Well in that case, I see no reason why we couldn't do that!!
Your list is the plan moving forward!

Your list is the plan moving forward!

Do you mean the steps I outlined?

Yeah haha! I was overthinking it!

Closing this issue for now, this should now be available via codeshift-cli init + npm run build + npm publish


Badge doesnt refresh.

Have Streamdeck XL with 22 JQLs. Dont know, if its a API problem or not. When i go into the jql, add a space, then its refreshing.
Also, i added with a macro (2 inputvariables and a PHP Backendscript) a "Create new issue" function. Maybe you can add this into the plugin :) ? Maybe i can help!

Wow! 22 is definitely more than I tested with at once--but I only have a mini. I wouldn't think that 22 would be crossing any sort of limit.
The intended behavior is that as long as the action is visible, it should update the badge every 2 minutes (but if you switch profiles/pages or the device goes to sleep, it pauses updating). It will also immediately update the badge if you change any setting in the property inspector.
Can you try two things for me?

Can you try restarting the Stream Deck software? If the actions didn't know they were visible, then they might not update automatically. Restarting the software might help.

If restarting Stream Deck doesn't help, then we need to look at Stream Deck's logs. The plugin will log error messages to the Stream Deck log. Logs are saved to disk per plugin in the folder ~/Library/Logs/StreamDeck/ on macOS and %appdata%\Elgato\StreamDeck\logs\ on Windows.

You're welcome to post the full log files here--but you might want to search through it first to see if any other plugins logged information you don't want to post.
(And I welcome any contributions back to the plugin! I had considered adding an action for adding an issue, but I ended up using the open URL action for that.)

Closing since I haven’t heard back—but feel free to reopen if the issue is still occurring!


Flexbox support

I just started using this, so forgive me if I'm just ignorant. These properties seem not to show in the output, despite "display: flex" being allowed:

flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
order
flex-grow
flex-shrink
flex-basis
flex
align-self

This seems to work in this sample: https://tonicdev.com/5695a77804e6390d00da309b/5695a77804e6390d00da309c
If you can provide an isolated case that reproduces the issue, please post a link to it. Thanks.

ok, it's probably Gmail then. my bad.


Scroll-bar need styling

##Description
I want to work on the styling of the scroll bar, scroll-bar style is not matched the UI of the website, so I want to add some styling to the scroll bar, It will improve the UI of the website.
Kindly assign me this issue.
##screenshot

Hey @HimanshuNarware, I am looking into building a better client. Please check #37 before working on this.

Please assign me this issue i would like to work on it..


/cmd is buggy

My bot, PoS-Bot, uses /cmd roominfo and /cmd userdetails to collect metadata about rooms and users on connect. There are two issues I encountered:

sending /cmd userdetails at the wrong time sometimes doesn't send any response.
sending /cmd roominfo also sometimes doesn't send a response, even when it's sent at the correct time (just after joining a room).

Are you logging all the input/output? Can you show me the logs?

if (targetRoom.isPrivate && !user.inRooms.has(targetRoom.id) && !user.games.has(targetRoom.id)) {
	return false;
}

You might be running afoul of this.

/cmd userdetails I can't get logs of anymore since I mitigated the issue I was having with it, and even if I could, the logs are over a thousand lines long. /cmd roominfo I can, but since the bug's a flapper it may take me a little while to get them.

You might be running afoul of this.
Possibly... this does only happens with private rooms from my experience. I don't understand why it works most of the time and other times not though. Maybe there's a race condition somewhere

As far as I can tell, it's not possible for userdetails to fail to respond. What's probably happening is that you're looking up a user who's changed their username since then?

>> |/crq userdetails guest10953670
<< |queryresponse|userdetails|{"userid":"zarel","avatar":220,"group":"~","autoconfirmed":true,"rooms":{"staff":{"isPrivate":true},"#upperstaff":{"isPrivate":true},"#helpstaff":{"isPrivate":true},"#development":{"isPrivate":true}}}

You think this might be the problem?

I don't look up userdetails for guests.

Possibly.. but I send the /cmd userdetails messages just after collecting room metadata

Are you listening for the "too many commands" throttle?

I don't listen for it since the bot throttles its own messages.

This is what the logs look like when it works:
[SEND]
|/cmd roominfo digimon
[RECV]
|queryresponse|roominfo|{"id":"digimon","title":"Digimon","type":"chat","visibility":"hidden","modchat":false,"modjoin":null,"auth":{"#":["morfent","lucario1582","seraphus"],"@":["swagn","kpimov","pokemondeadchannel"],"*":["fileisland","kida","posbot"],"%":["princessluna","spiderz","darthesis"],"+":["xprienzo","c733937123","prinnymaster","andy"]},"users":[" Swag.n","@Morfent ( _̀> ̀)"," Princess Luna","+Seraphus"," Kraken Mare ☭"," uqb"," Andy30♫","+kingbaruk","*Kid A"," LadderPTBRRoom >_>"," Gwynt"," Lucario•1582","+PokemonDeadChannel"," File Island"," michews"," nuval fissure 2","‽Spiderz","*PoS-Bot"]}
[SEND]
|/cmd roominfo botdevelopment
[RECV]
|queryresponse|roominfo|{"id":"botdevelopment","title":"Bot Development","type":"chat","visibility":"hidden","modchat":false,"modjoin":null,"auth":{"#":["morfent","bumbadadabum","xfix"],"+":["bumba","usainbot","po5bot","jetou","partman","tlouk","whalesy","jumbotwhales","arandobot"],"*":["paney","kida","posbot","quadbot","githubstaging","partbot","fartbot","universalbackup","jumbowhales","lynche","vrbot","squadallahman","sirvivor","moode","onebottyboi","gunzip","gzip","rhythms","waverb","expectobotronum","eaubot","cactuswhisperer","summerbot","flygonscoliosis","sotar2","orangealte","prenda","truthuntold","dashbotz","phantomozonix"],"@":["panpawn","kaiepi"]},"users":[" CheeseMuffin"," gunzip"," paney"," Abyssal Bot"," Universal Backup"," Bellematon"," moodE"," Sir Vivor"," TypeBot","*Officer Jenny","@Morfent ( _̀> ̀)"," Nixola"," Expecto Botronum","+osra"," Maknaeyy$(❤)"," Vextal -","&HoeenHero","*Kid A"," Lame Dude's Bot","+Parnassius"," Dragonmirror☆彡"," Euphoria-V"," Truth Untold"," VRBot","*PoS-Bot"]}
[SEND]
|/cmd roominfo development
[RECV]
|queryresponse|roominfo|{"id":"development","title":"Development","type":"chat","visibility":"secret","modchat":"autoconfirmed","modjoin":null,"auth":{"#":["zarel"],"@":["macchaeger","dawoblefet","panpawn","jumbowhales","slayer95","morfent","urkerab","kris","austin"],"%":["starbloom","spandan","wgma","sparkychild","anonycat","mathfreak231","lego","jetou","sirdonovan"],"+":["speks","acz13","ritchiejk","paris","xnadrojx","nineage","mk360","codingonamac","bgsamm","volco","kota","mclemore","pokemondeadchannel"],"*":["githubbot"]},"users":["+Florina Liastacia","*GitHub","+Mei Aihara","+urkerab"," Fartonaut","@Morfent ( _̀> ̀)","+kota ◕‿◕"," m00la","+a l k o v","+Taistelu♪"," Tami Lahren","&asgdf"," Kraken Mare ☭"," zamazanta"," Nixola"," plat0"," Sunsurfer - Zamasu"," a_Gnasher"," eat pre-n get lean","‽Franz132","+Zalm"," YashGreninja","+Volco","+kingbaruk","+Cynara","+Dan of Ares","+Jolteonite"," lwg"," Maknaeyy$(❤)"," aaaaa242a5a64","&HoeenHero"," thatIvyGuy","+tjay","*Kid A","+Parnassius"," HGgamer","@rYGLY"," Yoshizilla315","+Smoochyena"," Dragonmirror☆彡","+Gui =) shark","+PokemonDeadChannel"," Ann(ik)a0"," mc56556"," nuval fissure 2","+Amaluna"," PokeArt2004❤"," kikipluff"," dynamax hariyama","*PoS-Bot"]}

This is what they look like when the server doesn't give a response:
[SEND]
|/cmd roominfo digimon
[SEND]
|/cmd roominfo botdevelopment
[SEND]
|/cmd roominfo development

Yes, that one is very blatantly the if-block mentioned earlier. If you didn't want it to not give a response, you probably shouldn't have wrote it that way in #5279. :p

I wrote it that way so information about private rooms wouldn't be obtainable by people that don't have access to them. Is there a different way to write that?

Yes.

(I'll show you in the commit I'll be pushing in a few minutes.)


Example for Required rule is not correct

In README you have
let stringRequiredRule = ValidationRuleRequired<String?>(error: someValidationErrorType)

let floatRequiredRule = ValidationRuleRequired<Float?>(error: someValidationErrorType)

If you specify you rule type as optional, you will get double optionals inside validate method and it will always evaluate input as valid, making the rule useless. (Input to validate method is already specified as Optional of generic type, so for String? type you will then get String?? inside the method)

Export this file to your project and should work
https://github.com/adamwaite/Validator/blob/master/Example/Example/ValidationErrorType.swift

@DzonyKalafut is right. Your example is incorrect. You should specify non-optional generic for ValdiationRuleRequired. Otherwise it won't work.
Please, fix README with these lines:
let stringRequiredRule = ValidationRuleRequired<String>(error: someValidationErrorType)
let floatRequiredRule = ValidationRuleRequired<Float>(error: someValidationErrorType)


CLI config command

  [App Configuration]
    APP_ROOT_DIR = /Users/yann/Sites/webp2018/mvc-20160330-g1/
    APP_VIEW_DIR = /Users/yann/Sites/webp2018/mvc-20160330-g1/View/
    APP_LOG_DIR = /Users/yann/Sites/webp2018/mvc-20160330-g1/logs/
    APP_LOG_FILE = /Users/yann/Sites/webp2018/mvc-20160330-g1/logs/app.log
    APP_DEFAULT_ROUTE = home
    APP_DB_HOST = localhost
    APP_DB_PORT = 3306
    APP_DB_NAME = kandt
    APP_DB_USER = root
    APP_DB_PASS = root
    APP_JSON_QUERY_STRING_FLAG = json

Done!


[vault-secrets-webhook] Mutated pods fail to be scheduled when ResourceQuotas enabled

Describe the bug
When ResourceQuotas are set on a namespace, the mutated pod won't be able to run, because the mutated pod does not set any resources on the injected containers.
Expected behavior
Provide a way to set the container.Resources for each type of container (initcontainer and sidecars)
Kubernetes: 1.13.4
Version: 0.4.16
...
status:
  conditions:
  - lastTransitionTime: "2019-06-14T15:07:38Z"
    message: 'pods "banzai-poc-77899885b9-nvfzr" is forbidden: failed quota: default-quotas:
      must specify limits.memory,requests.cpu'

@devlounge Adding resource quotas to containers makes sense. Thanks


Add cluster capabilities in spec

Issue: https://github.com/rancher/rancher/issues/18275

LGTM

Closing as per https://github.com/rancher/rancher/issues/18275#issuecomment-490601105


Support Image Maker Script not working as intended

Hi, I am new to the app, trying to figure it out. So far my experience has been quite positive, however the one thing that stumps me is the support selection. What I am aiming for is 3T farming, to do this easier, I'm aiming to select certain servants, namely Raikou and Lancelot with MLB kaleidoscope. So I have been using the script to make images, but it doesn't work in the end. When i turn on the battle script, the script continues to scroll down the support list, even when there are multiple Raikous and Lancelots with MLB in my friends list. When i went to check on the images, it turns out that the cropped images were in black and white. Might this be the problem inhibiting the script from selecting the servants?

Black and white is definitely not an issue, since we only match in black and white anyways.
Does the support selection work at all for those servants?

The script just scrolls over the servants. Maybe something wrong on my end instead? I'm also having some trouble with the autoskill. I recorded a6,f5,g6 but when 2nd round comes, no skill activation happens, and no attempts to click the NP zone occur. I have been cicumventing this by toggling the NP spam option, but its not ideal. The biggest problem is definitely the script just scrolling over servants

I recorded a6,f5,g6

Then you clicked on "Next Turn" instead of "Next Battle". Next Battle means next enemy wave, Next Turn means same wave but different turn.
You can manually fix it by turning it into a6,#,f5,#,g6.
I would need to see screenshots of your AutoSkill setup and general Support settings to see if there's something affecting the support selection, and it would be good if you could post details about your device.

Alright, its actually working now, the support selection that is. I had to put the one photo of lancelot and raikou i had into their own folders.
As for the autoskill, thanks for the clarification as well. Its sorted out too.
Everything is working now, but I have one more question; Is there a way to get the script to skip death animations and such by clicking the screen?

At least not for now. The devs have said the only way to be sure one of the allies died is by having the image of all servants in the game dying built into the app, and have it check the screen often for the sprite of servants dying, and even then it wouldn't be 100% reliable, since servants taking damage also looks just like the death animation.

Death animation of your own members like Arash or enemies?
For the first - no there isn't, because it's hard to implement well.
For the second - FGO has a Skip Enemy Fadeout option in the Battle Menu


New backend functionnality : GetAlbumDetails

Start Date
No response
Implementation PR
No response
Reference Issues
No response
Summary
Get album mood (energetic, sad etc), top genre (and percentages), top subgenre (percentages), most repeated artist, average tempo and length.
Average popularity, hapiness, speechiness etc
More info here :
https://developer.spotify.com/documentation/web-api/reference/#/operations/get-several-audio-features
Basic Example
Would be called like that :
GetPlaylistDetails(string:acces_token,string:paylist_id){...}
Return a JSON with everything.
Drawbacks
Would allows to display mutliple interesting information about albums.
Unresolved questions
No response

Hi! Can I start contributing to this issue?

If you have any questions, don't hesitate to ask, I or someone else will answer them.

Could you give me your email address (the one used for your spotify account) ? So that I could add the authorizations to your spotify account and send you the clientId and ClientSecret to insert in the .env file (as explained in Installation in the readme).
Hi, do I also need to give you my email, so I can use my spotify account to test the web?
<EMAIL_ADDRESS>

I've added you to the authorized users so you should be able to use it now ! I'm also gonna send you the content of the .env file

Hi, I think I managed to write a working code for this issue.
I haven't tested it yet though, because the method getAlbumDetails needs to call getAlbumTracks method, and that issue is assigned to another contributor  (#7)  but it isn't done yet.
I also created other necessary files for this method to work:

Added route to index.js
albumRoute.js
albumController.js

getAlbumDetails code:
const getAlbumDetails = async (req, res) => {
    if (!req.query.access_token || !req.query.album_id) {
      res.status(400);
    }
    const spotifyApi = new SpotifyWebApi({
      accessToken: req.query.access_token,
    });

    //set all default values to 0
    let return_value = {};
    return_value.mean_danceability = 0.0;
    return_value.mean_energy = 0.0;
    return_value.mean_loudness = 0;
    return_value.mean_speechiness = 0;
    return_value.mean_acousticness = 0;
    return_value.mean_instrumentalness = 0;
    return_value.mean_liveness = 0;
    return_value.mean_valence = 0;
    return_value.mean_tempo = 0;
    return_value.mean_time_signature = 0;
    return_value.mean_key = 0;
    return_value.mean_mode = 0;
    return_value.mean_duration_ms = 0;
    return_value.mean_popularity = 0;
    return_value.nbr_tracks_audio_ft = 0;
    return_value.nbr_tracks_get_norm = 0;
    return_value.nbr_tracks = 0;
    return_value.genres = {};
    return_value.artists = {};

    //is used to store the total number of tracks in the album
    let total;
    //is used to store temporarly the ids of the tracks that will be used to get the details of the tracks
    let tracks_ids = [];

    //get the first 50 track's ids of the album
    await getAlbumTracks(spotifyApi, req.query.album_id, 50, 0).then(
      function (data) {
        total = data.total;
        data.items.forEach((item) => {
          tracks_ids.push(item.track_id);
        });
      }
    );

    //get the details of the tracks
    return_value = await getTracksDetails(spotifyApi, tracks_ids, return_value);

    //if there are more tracks to get, get them
    if (total > 50) {
        for (let i = 0; i < (total - 50) / 50; i++) {
            tracks_ids = [];
            await getAlbumTracks(
                spotifyApi,
                req.query.album_id,
                50,
                (i + 1) * 50
            ).then(function (data) {
                data.items.forEach((item) => {
                tracks_ids.push(item.track_id);
                });
            });

            return_value = await getTracksDetails(
                spotifyApi,
                tracks_ids,
                return_value,
                res
            );
        }
    }

    //calculate the mean of each feature
    return_value.mean_danceability = (
        return_value.mean_danceability / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_energy = (
        return_value.mean_energy / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_loudness = (
        return_value.mean_loudness / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_speechiness = (
        return_value.mean_speechiness / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_acousticness = (
        return_value.mean_acousticness / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_instrumentalness = (
        return_value.mean_instrumentalness / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_liveness = (
        return_value.mean_liveness / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_valence = (
        return_value.mean_valence / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_tempo = (
        return_value.mean_tempo / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_time_signature = (
        return_value.mean_time_signature / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_key = (
        return_value.mean_key / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_mode = (
        return_value.mean_mode / return_value.nbr_tracks_audio_ft
    ).toFixed(2);

    return_value.mean_duration_s = (
        return_value.mean_duration_ms /
        return_value.nbr_tracks_audio_ft /
        1000
    ).toFixed(2);

    return_value.mean_popularity = (
        return_value.mean_popularity / return_value.nbr_tracks_get_norm
    ).toFixed(2);

    //delete for more clarity
    delete return_value.nbr_tracks_audio_ft;
    delete return_value.nbr_tracks_get_norm;

    return_value.nbr_tracks = total;

    //sort artists by number of tracks they appear in
    let sorted_artists = Object.keys(return_value.artists).sort(function (a, b) {
        return return_value.artists[b].nbr - return_value.artists[a].nbr;
    });

    //get the 10 most common artists
    return_value.common_artists = [];
    for (let i = 0; i < 10; i++) {
        if (sorted_artists[i] != undefined) {
        return_value.artists[sorted_artists[i]].id = i + 1;
        return_value.common_artists.push(return_value.artists[sorted_artists[i]]);
        }
    }
    delete return_value.artists;

    res.status(200).json(return_value);
};

Check the rest of the code files: https://github.com/AlexLunaP/Spotidata

Hi, as the method getAlbumTracks is already implemented, now I can test my code for getAlbumDetails, any help on this? Not sure how to test it.

Ok, to test your function, you need to use Postman, which allows you to easily make requests to the back-end and see what the function returns.
To do this, :

Install Postman.
Run the front-end in VS-Code, then connect with Spotify on Spotidata.
Still on Spotidata, click on "Make a request" to get your access token (it will be active for one hour).
To access your token, go to the developer mode of your browser and in the console your access token will be printed, copy it.
Now go back to VS-Code and launch the back-end. (you can launch it before, it doesn't change anything).
On Postman there are several ways to send requests, select "GET" if not already selected.
In the url type this http://<IP_ADDRESS>:5000/api/spotify/NameOfWhatYouWantToTest, eg : http://<IP_ADDRESS>:5000/api/spotify/GetAlbumDetails
Now you need to add your access token to the request; to do this, under the URL, in the Params tab, click on the first case and add the key as "access_token" and as value your access token. (And check the line)
If you have other parameters to enter, such as the album id, proceed in the same way: enter the key "album_id" and the value of the album id (parameter req.query.xxx).
Now send the query and see the result.

Good luck !
And if I was not clear, don't hesitate to leave a message here, I'll be happy to help.

Hi. Thanks, it is well explained.
I am having some trouble testing some methods. Some of them give the correct response in Postman, but others are not working for me (maybe I'm using the wrong parameters?)
Would you mind if I show you on Discord or similar? I think it can be faster to explain.
My email is<EMAIL_ADDRESS>Thanks in advance

Yes, sorry for the delay, I'll send you my discord by mail.


Unable to format my DAX measures in Power bi

Describe the problem
Error 103: The requested update conflicts with the current state of the target resource.
Bravo version
1.0.8 (1.0.8868.14547)
Tabular model
Power BI Desktop, import mode
Power BI
Power Bi Desktop April 2024
Steps to reproduce the behavior
No response
Additional context
No response
Screenshots
No response
Anything else ?
Trace Id: 00-aacc87dd4759c082cf099b0ccb75c4fe-6769ce7c7a18865a-00

@vivdroid242 The error message indicates that Bravo halted formatting because it detected that the model has changed. This could occur if changes are made to the model or if a data refresh happens while Bravo is formatting the measures. In such cases, Bravo stops the task to prevent changes from being overwritten/lost. You can retry formatting after synchronizing the changes in Bravo using the Synchronize button.

I am closing this issue, but feel free to reopen it if you're still experiencing the problem.


[stable/percona-xtradb-cluster]

BUG REPORT
Version of Helm and Kubernetes:
Helm 2.10 + Kubernetes 1.10.6-gke.1 (GCP)
Which chart:
stable/percona-xtradb-cluster
What happened:
Setting custom mysqlRootPassword value causes chart to hang on start with following error in log indefinitelly:

[Note] Access denied for user 'root'@'localhost' (using password: YES)

What you expected to happen:
For service to start and allow user to connect to it by using predefined custom MySQL root password.
How to reproduce it (as minimally and precisely as possible):
Run:
helm install --name pxc stable/percona-xtradb-cluster --set \
persistence.enabled=true,\
persistence.storageClass=ssd,\
persistence.size=100Gi,\
mysqlRootPassword=some-password,\
xtraBackupPassword=some-password,\
mysqlUser=user,\
mysqlPassword=some-password,\
mysqlDatabase=deploytime

Anything else we need to know:

Avoiding to set custom MySQL root user password makes app starting without problems.
Bottomline: A user should be able to configure their own password, currently it doesn't work unless I'm misunderstanding something terribly.

Okay, just learned I made a mistake.
When deploying the app, it creates PVC and PV. For initial deployment, I used one password and for consecutive deployments, I used another which made the app refusing to connect as persistent storage had a different password than one I was specifying.
The solution for the issue above was to delete PVC and PV and define my custom MySQL root user password. This works and the issue can be closed.