[crypto]: Host function for verifying secp256r1 signatures

As a rule, all new elliptic curves should use our more versatile crypto framework:

https://hackmd.io/@rgbPIkIdTwSICPuAq67Jbw/rkipBanIn
https://github.com/paritytech/substrate/pull/13031
https://github.com/paritytech/arkworks-extensions

We'd ideally audit that framework too before deploying it, because I've made one or two "unique" choices there, like host calls return points in projective coordinates.

As for doing a simple hostcall like this, we'd ideally want strong evidence the curve would never be used other than via the hostcall, but obviously P256 should apear in zk glue protocols, hence its existance in https://github.com/arkworks-rs/algebra/tree/master/curves/secp256r1

As a rule, all new elliptic curves should use our new versatile crypto framework:

https://hackmd.io/@rgbPIkIdTwSICPuAq67Jbw/rkipBanIn
arkworks integration paritytech/substrate#13031
https://github.com/paritytech/arkworks-extensions

We'd ideally audit that framework too before deploying it, because I've made one or two "unique" choices there, like host calls return points in projective coordinates. It'd be nice if the auditor could discuss more generic framework ideas too, like providing the curve parameters.

As for doing a simple hostcall like this, we'd ideally want strong evidence the curve would never be used other than via the simple hostcall, but obviously P256 should apear in zk glue protocols, hence its existance in https://github.com/arkworks-rs/algebra/tree/master/curves/secp256r1
Anyways we should definitely att P256 to https://github.com/paritytech/arkworks-extensions and the curve hostcalls, and update everything to more recent arkwroks.

Thank you for the comments.
Substrate already uses k256 for the secp256k1 host functions, p256 seems like a good candidate implementation since it comes from the same repository and has been partially audited.
The initial idea was to add a new function secp256r1_ecdsa_verify_prehashed(sig, hash, pk) to substrate/primitives/io/src/lib.rs(Crypto) and use p256 to verify the signature.
If paritytech/arkworks-extensions is now the correct way for adding new elliptic curve host functions, it means that we are now enforced to use curves from https://github.com/arkworks-rs/algebra? Also, can you confirm if paritytech/arkworks-extensions host functions are available in Polkadot/Kusama?

If paritytech/arkworks-extensions is now the correct way for adding new elliptic curve host functions, it means that we are now enforced to use curves from https://github.com/arkworks-rs/algebra? Also

Not really.  In principle any elliptic curve crate like k256 or p256 could be forked to use the scalar multiplications provided by the host call, with any other crate that implements the same curve living behind the host call.
Arkworks does not have optimal implementations of anything, so ideally most arkworks curve crates should've forks that call better crates too.

Also, can you confirm if paritytech/arkworks-extensions host functions are available in Polkadot/Kusama?

Not yet, but they're part of sassafras & jam.  We can push them through faster too, but..
We make the hostcalls using uncompressed affine coordinates.  I'd like to have some second opinions on how I've designed this.  It's not absolutely critical, since you can always convert to/from cordinates, but someone who knows how all the different SW curve implementations work could be informative, and if osme conversion uses a division then best avoided.
About your applications:
Apple's Secure Enclave could likely use the hostcall you suggest here, and ECDSA lacks nice batch verification, so that's a clear fit for exactly this hostcall.
Webauthn and Passkeys would likely add anonymity like keyless accounts, so then ideally you'd have some plonk with folking using P256 directly in places.  This really need like all of arkworks.
Android Keystore could go either way I guess.

Anyways someone should do a PR to paritytech/arkworks-extensions and substrate that uses the arkworks secp256r1.  We'll deploy secp256r1 when we deploy all the others, which must happen anyways.

Anyways someone should do a PR to paritytech/arkworks-extensions and substrate that uses the arkworks secp256r1. We'll deploy secp256r1 when we deploy all the others, which must happen anyways.

Just to confirm, are you suggesting that we can open PRs to paritytech/arkworks-extensions and polkadot-sdk/substrate that use arkworks' secp256r1 impl without modifying and improving it as you suggested earlier?

I agree with @burdges on this point. I believe that we should work on an RFC to promote the host functions for arkworks see here.
These will not only be necessary if some parachain adopts Sassafras in the future, but they will also unlock a whole new class of arbitrary zk applications for the Polkadot ecosystem.
Currently, the secp256r1 hooks are still missing, by the way.

I maybe misunderstanding you but if this is true, can't we open a PR to polkadot-sdk/substrate to add a host call that uses p256 crate?

We ideally want one set of sec256r1/p256 host calls: one multi scalar multiplication, one projective scalar multiplication, and optionally one affine->projective scalar multiplication if performacne differs much from the projective one.
Ideally, this one set of host calls should permit both a sub-ark-secp256r1 drop in replacement for ark-secp256r1 and a sub-p256 drop in repalcement for p256.  Also ideally they'd be faster than arkworks onces.
Step 0. Descide if affine->projective scalar multiplication is much faster than regular projective scalar multiplication, aka read the p256 benchmarks.  This tells us if we want 2 or 3 hostcalls.
Step 1.  Write an ark-secp256r1-rustcrypto crate with tests showing equivelence to ark-secp256r1.  Imho this requires taking inspiration from https://github.com/MystenLabs/fastcrypto/tree/main/fastcrypto-zkp/src/bls12381 because there maybe under the hood differences in point representations.
Step 2.  Write a sub-ark-secp256r1 PR for paritytech/arkworks-extensions and a PR for substrate hostcalls, and equivelence tests to ark-secp256r1.
Step 3.  Write a sub-p256 fork of p256 which passes equivelence tests to p256.  This maybe easy, or maybe nasty or impossible, just depends upon their their elliptic curve traits.

Just to confirm, are you suggesting that we can open PRs to paritytech/arkworks-extensions and polkadot-sdk/substrate that use arkworks' secp256r1 impl without modifying and improving it as you suggested earlier?

We could skip steps 1 and 3 above if we cared little about the speed difference between rustcrypto and arkworks, but we do afaik care about this speed difference for secp256k1, so may as well do both exactly the same, no?
I'd like someone to attempt step 1 for at least secp256k1, or else show arkworks is faster than I think.

@burdges @davxy Thanks for the suggestions :+1:
Do you guys have any ETA for when these new curve host functions will be available in Polkadot/Kusama?

Before JAM obviously.
We're obviously seeing more community interest now, so maybe worth push forward soon.  They improve many other priorities too, like keyless accounts, identity, and games.

Hello, I am Piotr - head of Product at Moonbeam Foundation. This feature would significantly speed up the adoption of Smart Wallets. Do you have any estimates of when this could be incorporated and shipped?


Limit or Disable benefits from cutoff sectors

Currently in game if you were to go way behind enemy lines and capture a radio tower, a factory, or even just a town with a vehicle unlock you will still get the same benefits as if the front line was right there. In order to fix this I suggest adding a system that either limits or disables any benefits from taking a sector far behind enemy lines, not unlike how in Planetside 2 you can have your factions provinces get cut off.
Since I'm sure not everyone would enjoy this and depending on how it gets implemented it might lower performance, it would make sense to add it as an optional parameter, perhaps with three settings: Disabled (default), Limited, and Enabled.
Disabled: Speaks for itself, system wouldn't run at all and capturing places behind enemy lines would be no different than capturing one right on the edge of your territory.
Limited: Capturing a sector behind enemy lines will still give some benefits, but things like resource production, civilian happiness, and chance of things like civilian informants would be a fraction of the normal amount. Vehicle unlocks would still not be available, perhaps show by making the unlock icon grey instead of blue/red. Radio towers wouldn't give you intel but would still reduce reinforce time for the enemy to nearby places (since they still have lost control of the tower).
Enabled: Factories don't produce resources, capturing a town gives only very minor boost to civi happiness, and civilian informants almost never spawn. Vehicle unlocks don't work, and radio towers don't provide intel but still don't aid the enemy either same as in the Limited setting.
In addition to this setting I think it would also be worth looking into making the enemy more actively try to take back cutoff sectors. Really early on in my groups Lythium campaign we ending up taking a radio tower way up near Kalae in the north and the enemy has still not attempted to take it back even though they spawn many an attack group. Perhaps some sort of higher weighting could be added to the sectors that are cutoff so it's more likely to spawn an attack group to take them back first? Perhaps you could even add a new type of recapture mechanic for cutoff sectors that are separate from the normal attack groups?

Thanks for the suggestion.
You can expect some major tweaks to the enemy behaviour in the future.
But the current framework of Liberation ended with 0.963a and is now considered as "deprecated".
You can of course follow the development and state opinions on the things we're currently working on, as we keep the development process as transparent as possible for everyone.

Ah, alright. Well I hope to see some nice stuff in 0.97 whenever that releases!


GAFA dataset omission

Hi, there :)
Thank you very much for your great work! I like your great work.
I have one question about the GAFA dataset.
I downloaded the dataset and checked it.
I think the key point is missing, but I wonder if I checked it wrong.
Some key points point to (0,0,0).
especially 0, 15, 16 keypoint is often (0,0,0)
example file

Hi,
A keypoint with the value (0,0,0) means that the body joint could not be found in the image. The 0,15,16 keypoint corresponds to nose and both eyes, and these joints are occluded when the person is facing away from the surveillance camera, so they often get (0,0,0).


Fix build budge

SAAI
travis-ci has no longer used so I replace that into the github actions budges.

Thank you.


Allow building with freeglut on Windows

Currently, this library can only be built on Windows using glut32.dll, which not all Windows users have (including myself). This adds a -ffreeglut option to GLUT.cabal which makes GHC look for an installation of freeglut instead of glut32. This should work with with Martin Payne's freeglut binaries (http://www.transmissionzero.co.uk/software/freeglut-devel/) as well as the MinGW-w64 flavor of freeglut that MSYS2 provides (via pacman -S mingw-w64-$(uname -m)-freeglut).

I opted to make keep UseNativeWindowsLibraries the default to avoid surprises, although I'm not sure how widely used glut32 is as opposed to freeglut (I'm not an OpenGL programmer, just someone who is trying to get it installed successfully).

Hmmm, perhaps we should always try to load freeglut, libfreeglut and glut32 on Windows? This would get rid of the configuration magic and seems to be the most flexible approach. What do you think?

The problem is that you need to specify which extra-libraries to load. If you put both freeglut and glut32 under extra-libraries and the linker can't find one of them, Cabal will fail to configure the package. I'm not aware of a workaround other than guarding them with Cabal flags.

Somehow things are strange:

When we dlopen(NULL, ...) and a library is mentioned in extra-libraries, things should work. OpenGLRaw at least does work this way on various platforms.

When we explicitly mention library names in dlopen and LoadLibrary, extra-libraries should not matter at all, so we could leave it empty then.

The latter option seems to be the only way to do the fallback-based approach mentioned in my previous comment. Could give this a try on Windows/Mac OS X? I can try Linux/Windows for myself, but I'm currently a bit busy and the next Haskell Platform release seems to be coming up soon, so I could use any help I can get.

Interesting. If we could avoid mentioning either glut32 or freeglut in extra-libraries, that just might work. I'll give it a try later today when I'm on my Windows machine.

That worked! I updated the PR with the necessary changes.
Unfortunately, I don't think this kind of approach would work for the Unix-like OSes, since HsGLUT.c references several symbols from the GLUT library (e.g., glutStrokeRoman).

Nice! I just tested things on Windows 10 with the 64bit freeglut DLL from Transmission Zero, and it worked out of the box. I just changed the order, so we try to load freeglut first, see f28dd1b44e36fa2a809feab189f648cdeda62042.
I'll try to see if get some time to test the fix proposed in issue #21 (specify the filename in dlopen) on Linux and if there is a way to get rid of extra-libraries there (the font handle chaos in GLUT really makes me cry! :cry:). Can somebody test this on Mac OS X (if the same fix works and if we somehow can get rid of the frameworks line)?

This commit appears to successfully remove the need for extra-libraries: glut on Linux. (I also tested on Windows to make sure it still works.)
I don't own a Mac, so that's still an issue...

Hm, maybe OS X isn't as tricky as it looks. It appears that Apple recommends just using dlopen/dlsym nowadays, and some OpenGL code has already switched over. Perhaps we could use the same code for Linux and OS X, but using dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); on OS X instead?

I've cherry-picked your Linux change and polished it a bit. I works on my Ubuntu 15.10, both with compiled examples and with ghci. I'll double-check later if it still works on Windows.
Regarding Mac OS X: I am not 100% sure what to pass to dlopen for GLUT, perhaps "/System/Library/Frameworks/GLUT.framework/Versions/Current/GLUT"? Not sure, some input from a Mac guru would be helpful here. I can try if I can test this for myself, but I use my MacBook 99% for Ubuntu only, :wink: so there is basically no development stuff on it for the Mac side.

FYI: I've just released a new version (<IP_ADDRESS>) to Hackage. Linux works fine (compiled/interpreted), Windows is untested (but hopefully unchanged, I'll do some testing later), and Mac OS X might work, but it's totally untested. Let's see how this works out...

Looking at the GHC source, it looks like the places that it looks for libraries on OS X are /System/Library/Frameworks/<lib>.framework/<lib> and /Library/Frameworks/<lib>.framework/<lib>. I don't know if GLUT is ever installed to the latter location in practice, though, so I don't know if it's necessary to look there.

I've used the former path (see https://github.com/haskell-opengl/GLUT/blob/e3f9bd20fe8e7aac901e0fb6030f5511cbd1745c/cbits/HsGLUT.c#L52), but perhaps I should fall back to the second (non-/System) path if the first one failed.
The thing I was initially unsure about is: What to open? After some googling around it seems to be the case that opening the framework part is the way to go, as this is the public API. Directly opening some foo.dylib seems to access some internal API, at least that's my understanding of what I read.

OK, I've finally found some official documentation about the framework paths, and my initial guess seems to be correct. Nevertheless, I've released yet another, hopefully final version <IP_ADDRESS> which searches the public path (/Library/Frameworks/...) first, just in case if somebody wants to put some other stuff there.
Things work on Windows and Linux, both in compiled and in interpreted form, I would just need somebody to test on Mac OS X.

On Debian Jessie I had to do this to get Haskell GLUT-using programs to work:
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libglut.so.3 libglut.so

I think freeglut3 is the package that provides libglut.so.3, but I'm not sure.

Instead of doing the symbolic link by hand, installing the freeglut3-dev package should fix things on Jessie, see https://packages.debian.org/de/jessie/amd64/freeglut3-dev/filelist.
Hmmm, having to install a -dev package just for running programs doesn't look right. I'm not sure which packages exactly provide an unversioned .so on the various distros, I'll have to investigate... But as usual: Hints/proposals are highly appreciated.

Although this is an old thread, just FYI: a386914280dbc7e027e8ebbfe07774cde697e38d  should have fixed all issues in this thread. The GLUT package now tries to dynamically load freeglut/libfreeglut/glut32 DLLs on Windows, libglut.so/libglut.so.3 on Linux and public/system GLUT frameworks on Mac OS X.


How to create table border

I working on a project where i want to change the table border color, width can anyone help on this
Regards
Sathish

https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/python-pptx/UTkdemIZICw/bAKOVAmkAwAJ


How to specify that headers must be regenerated.

I've have a GitHub app which uses a jwt that can expire. Ultimaitely, I generate an installation access token that can also expire and I am trying to use ghapi with that installation access toekn.
I was hoping that I could subclass GhApi.__call__ to dynamically generate my access token, but this does not seem to work.
jwtm = JwtManager(app_id, private_key)
iatm = IatManager(jwtm)
token = iatm.token(installation_id)
gh_host = baseurl()

class GhApi(ghapi_all.GhApi):
    def __call__(self, path, verb=None, headers=None, route=None, query=None, data=None):
        headers = headers or {}
        headers.update(iatm.headers(installation_id))
        super().__call__(path, verb, headers, route, query, data)

api = GhApi(
    owner=owner,
    repo=repo,
    token=token,
    debug=debug,
    limit_cb=limit_cb,
    gh_host=gh_host,
)

IatManager.headers() will generate a new jwt token whenever it is expired and then will use this to generate an access token for the specified installation id.   The headers it generates look like this:
In [5]: iatm.headers(2)
Out[5]:
{'Authorization': 'token ghs_randomstuffhere',
 'Accept': 'application/vnd.github.v3+json'}

The reason that this did not work is that ultimately GhApi.__call__ is not what was called. Rather it was some lower level thing.  Any suggestion on how I can use ghapi for a long-running GitHub app where the headers need to be dynamically updated in time?

I guess I could just recreate the api from time to time....seems a bit clunky, though functional.


[FEATURE] Display error messages in pop up messages instead of tabs

Is your feature request related to a problem?
Error messages opening in new tabs are very obtrusive.
Describe the solution you'd like
I suggest to replace them with pop up messages like on this example. For detailed description of a problem, the pop up could have a button labeled e.g. "Show details" that would open the same tab with description like it is done now.

@all-contributors please add @nawordar for ideas

@nawordar this has been implemented in v3.13.2.


fix: redirect curl verbose output to file, cat on failure

What type of PR is this?
We use curl -v to get verbose output on curl execution. However, it also generates a lot of noise and makes debugging VHD logs difficult. This PR pipes the curl -v output to a file and only displays it on failure.

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Requirements:

[ ] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
none

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 62.022%

Totals

Change from base Build<PHONE_NUMBER>:
0%

Covered Lines:
2546

Relevant Lines:
4105

💛  - Coveralls


Read Only Logic

Logic to determine if field is read only (applies only when field is read-write).
Exemple:
format := {expression} [{logic} {expression}]
expression := @{field1}@{operand}{value} or @{field1}@{operand}{value}
logic := {|}|{&}
value := strings or numbers
logic operators := AND or OR with the previous result from left to right
operand := eq{=}, gt{>}, le{<}, not{~^!}

I'm not sure what to do with this proposal @khanfouf. Can you explain in more detail. Maybe a concrete usecase?

I assume the author found a workaround since there was no sign of him and won't be angry if I close this issue :)


added whois servers for .co.za, .org.za, .gov.za, .durban, .capetown,…

Added the whois servers for co.za, org.za, gov.za, .durban, joburg, .capetown. Also added parsing of the gov.za whois response.

are you able to resolve the merge conflicts?

Closing due to inactivity


Router should not depend on the size in blob properties for puts

This is required to support callers that do not know the length of the data being put in advance.
This actually needs a bit of work in the router. Since the size was readily available before, it used this information to help determine a few things in advance, such as whether the object is going to be composite or not, how big the metadata chunk array should be, and so on.
The router does not have to depend on this though, as the metadata chunk is only put at the end and that is the only chunk into which the BlobProperties (with a valid size) needs to go.

Being fixed in #540
@pnarayanan: Please close when this is done.


⚠ Bofrost.at has degraded performance

In 47ad744, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1112 ms

Resolved: Bofrost.at performance has improved in f673225 after 10 minutes.


Post OTel Q&A video to YouTube

[x] Post video from shared folder to OTel YouTube channel
[x] Promote on socials

Video link: https://youtu.be/KR8j11FECgc


Fixes import on Windows when determining files to be excluded

use DIRECTORY_SEPARATOR instead of '/'

Thank you @epalmans

same this commit


Rename Explore docs to Get Started and point to GettingStarted.md

Once gettingstarted.md #142 is done, formatted properly we should use it as a main call to action, pointing people towards actually running things and giving it a try, and learning about SV2 via docs could be a secondary call to action.

Hi @pavlenex can you please assign this to me and explain a bit about the issue!

Hey @hi-malik

There's this button that needs to redirect to the gettingstarted.md once #142 is done.
This issue is low-priority and should be done only after #142 and #145 are done.
Theoretically you can do a PR, but we need #142 and #145 before we can merge it in.

Now, I got it what you want is: I have to rename this Explore Documentation to Get Started and when someone click on it, it will forward to GettingStarted.md!

I'm right?

Correct, but will be merged only once we do #142 which adds that page, and also #145 #146  which makes that page readable, because right now it's messed up.

Alright, @pavlenex assign this to me & I will make the necessary changes and after that, I will push it and whenever the task got completed merge the pull request for #144


NTR: [Protein-pyrophosphorylation activity]

Hi GO,
I would need a new GO term for "Protein-pyrophosphorylation activity", a long sought enzyme that was identified recently (PMID:36603579).
Thanks
Sylvain
Description: Protein-pyrophosphorylation activity
Category: Molecular function
Definition: Catalysis of the reaction: protein serine phosphate + inositol 5-triphosphate pentakisphosphate = protein serine diphosphate + inositol 5-diphosphate pentakisphosphate
Xref
PMID:36603579
Rhea:64104
EC=2.7.4.-
child of
GO:0016776 phosphotransferase activity, phosphate group as acceptor

+[Term]
+id: GO:0141090
+name: protein serine pyrophosphatase activity
+namespace: molecular_function
+def: "Catalysis of the reaction: protein phospho-serine + inositol 5-triphosphate pentakisphosphate = protein diphospho-serine + inositol 5-diphosphate pentakisphosphate." [PMID:36603579, RHEA:64104]
+xref: RHEA:64104
+is_a: GO:0016462 ! pyrophosphatase activity
+property_value: term_tracker_item "https://github.com/geneontology/go-ontology/issues/25934" xsd:anyURI
+created_by: pg
+creation_date: 2023-08-21T07:53:21Z
+

Hi @sylvainpoux
I did a bit different from what you requested:

parent: GO:0016462 ! pyrophosphatase activity
did not add the partial EC
Please let me know if this is not OK for you.

Thanks, Pascale

Hi @pgaudet,
Many thanks!
Sylvain

Hi @sylvainpoux @pgaudet

the paper describes this enzyme as a "pyrophosphorylase" rather than a "pyrophosphatase", ie. a phosphorylation (kinase, ie transferase) activity rather than a phosphatase (hydrolase) activity.  Looking at RHEA:64104, that seems to be true from the perspective of the protein entity.

I agree the partial EC shouldn't be added, but the suggestion of EC:2.7.4.- (= Phosphotransferases with a phosphate group as acceptor) is consistent with the previous point

So:

[ ] change name to "protein serine pyrophosphorylase activity"

[ ] change parent to "GO:0016776 phosphotransferase activity, phosphate group as acceptor (EC:2.7.4.-)

??

I have just revisited what I wrote to @sylvainpoux and it was maybe not clear.
The enzyme is not a phosphatase and phosphatases removes phosphates from substrates.
It is not a phosphorylase either, as these uses inorganic phosphate as the subtrate.
So I would call this enzyme a phosphotransferase.


Translate the permissions and buttons text

Can you please add the option to Translate the permissions and buttons text?
I have highlighted the texts that I wish to translate with you help:

Thank you!

I have notice that I can extend the Pktharindu\NovaPermissions\Nova\Role in your role resource and fix this issue without change the plugin.
Thanks!

Can you explain how to fix this problem with translation?


IP Address

Hi, I would like to mask IP Address in TextFormField. The following code is partially written and does not work. Please advice.
final controller = new MaskedTextController(mask: '#.#.#.#',
    translator: {
      '#': new RegExp(r'^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$')
    });
...

For each value, the number should be between 0-255.

Hi,
This will not work.
Thinking in this case: If the user puts 1 2 the mask should be 1.2 or 12.?
This is a custom mask intelligence that is not possible with any custom masks.
For now, I will add a label for improvement. It's a good idea to have some specific masks. It's in the roadmap.
Thanks for report and sorry for not solve you issue =/

@benhurott Thank you so much for your reply!

any solution for ip address mask

any update? is now 2022


Not linked from left navigation

This page isn't linked from left navigation, which discourages discoverability of this page.  I got here from a direct link elsewhere.

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

ID: f75d2b5a-bc14-e0f3-1269-716383939212
Version Independent ID: 879c8636-ab9a-0440-039a-f3eac8d41a1f
Content: Secure external sharing in SharePoint Online
Content Source: SharePoint/SharePointOnline/what-s-new-in-sharing-in-targeted-release.md
Service: sharepoint-online
GitHub Login: @MikePlumleyMSFT
Microsoft Alias: mikeplum

Hi. We really appreciate your efforts to improve Microsoft Docs, I will look into this issue and add the link you suggest. Thank you.

I have added a link on the  External Sharing Overview page and am consulting with my team about adding a link in the left navigation.

@nenonix - the person that can provide guidance on where to put the article in the TOC (left nav) is @MikePlumleyMSFT --- it might be a situation where it shouldn't be in the TOC but I am not sure. @fredericklin - thanks for this catch and opening the issue.
@nenonix - to put the link in the left nav TOC I believe it is the toc.md file that is in the same directory as this file.. here is a link: https://github.com/MicrosoftDocs/OfficeDocs-SharePoint/blob/live/SharePoint/SharePointOnline/toc.md

Correct, this article should not be in the TOC. It is scheduled to be retired in the next few months. The information therein will be moved to a different article.

Thanks for clarification! Let's close this issue out.

@Mike-Ubezzi-MSFT I'm confused; If this is retired in the next few months, Is the ad-hoc external recipient implementation going away?

I think what @MikePlumleyMSFT said was that the information is being moved to a different article which is why this article isn't in the TOC.  Usually what happens at that point is a redirect from this article would automatically send people to the new article. So links in blogs and things still work to get the relevant content.

@fredericklin, no, we're just reorganizing the content. This article was migrated from another site and isn't well integrated with our other sharing admin content. Once we've found a better home for the information, the current URL will redirect to the new location.


How add background Image for label of markLine

Current I handled label of markLine as here:
{
            symbol: "none",
            lineStyle:{
              opacity:0.5,
              color: {
                type: 'linear',
                colorStops: [{
                    offset: 0, color: 'white'
                }]
            }},
            yAxis: lastRecord[0],
            label:{
              color:'black',
              fontSize:17,
              backgroundColor:'white',
              formatter:function(obj){
                return Helper._formatMoney(obj.data.yAxis)
              }
            }
}

How add background Image for the label ? this is an example from other chart libraries.

You could configure like series.label.backgroundColor.
Although markerLine.label.backgroundColor is missing in the documentation, it still works.

Thanks, it worked


Conflict correction with ESlint

Conflict correction with ESlint
Labels

bug

About
It is necessary to find what is conflicting with ESlint so that it can correct syntax errors and leave the code all organized and standardized

User Story

Checking conflicting files / settings
Syntax check error
Keep the code organized and standardized among everyone on the team

Discussion

Hi Lineu, what is the node version you are using locally?

13.12.0


[Features]Loot

Request to add
Loot map items and NPC only include Notable and Godly.

What do you mean loot map items and npc? Collect everything from them? Toybox already has it.


feat(ansible): playbook scanning; allow Ansible scanning for both YAML and YML files

Is your feature request related to a problem? Please describe.
Many of our Ansible-based repos use the YML file extension for our ansible files and these are not recognized by Kics Ansible scanning. I have experimented with kics and found that when I change one (or more) playbook or task files from YML to YAML, kics may or may not understand these as Ansible (I haven't found a pattern for what triggers Ansible scanning -- on the surface it appears that when I change a task file from YML to YAML, kics has a higher probability to pick up the remaining files as Ansible).
Describe the solution you'd like
When specifying the scan type of Ansible, I would like kics to scan the repo and all subsequent YML files (or YAML if mixed with YML file extensions) as Ansible. Essentially, when explicitly specifying Ansible; that is what kics should scan as.
Describe alternatives you've considered
I considered renaming all playbook and task files from YML to YAML file extension names but I'd prefer not to (and ultimately decided against it).
Another alternative might be to have the file extension configurable; keep the default/current behavior but have a config flag to allow explicit filename extension values.
Additional context
The kics documentation is fairly clear that it only supports YAML files for Ansible scanning. What I found interesting was that I was able to nudge kics to sometimes scan YML files as Ansible (as mentioned above, I did not find the exact pattern that triggered it).

I'll just add that .yml is something of a standard in Ansible. It's the suggested name in their documentation and it's all through their examples. I think it's safe to conclude then, .yml is a "first class" requirement for scanning Ansible. If Kics happens to work with .yaml then that's great, but likely a secondary requirement.
I've also just found that with Kics 2.1.3 any # kics-scan ignore variations are entirely ignored if the file is called .yml. Rename it to .yaml and Kics starts 'seeing' the ignore comments.
I can't replicate any difference in actual scan results between .yml and .yaml files, although given the above, it seems different logic is being applied depending on the file extension, so there's at least a risk that Ansible scanning is, in practice, not doing what people expect. That smells like a bug, but it would be resolved more completely by this feature request.


"403 (Forbidden)" errors on Roderick on the Line podcast?

For some reason, the Roderick on the Line podcast feed always gives me 403 (Forbidden) errors when trying to download episodes using podcast-dl.
However the enclosure links download just fine when pasting them into the browser Location bar, or downloading the enclosure link using something like wget
This is the only feed (out of around 25) that I have this issue on.
The podcast feed is here: http://feeds.feedburner.com/RoderickOnTheLine
Example output from podcast-dl 9.3.3 on macOS:
Downloading: Roderick on the Line
Roderick on the Line
Merlin Mann's frank & candid weekly phone call with John Roderick of The Long Winters

Starting download of 517 episodes

Ep. 533: "Busty Trainfails" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 532: "My Umbrella Stand" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 531: "A Perfect Bead" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 530: "Something Else" | Download exists locally. Skipping...
Ep. 529: "Not Everything is Everything" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 528: "The Biggest Indoor Building in the World" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 527: "The Calm Cousins" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 526: "Some Nice of These" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 525: "The Penury of the Scots" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 524: "Dinner's at Five" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 523: "A Grocer You Haven't Met Yet" | Download exists locally. Skipping...
Ep. 522: "Cafeteria Californian" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 521: "Keep the Nickel" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 520: "Seven Minutes in Mexico" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 519: "Even Doves Have Pride" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 518: "Aspics of Me" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 517: "Sundown Acres" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 516: "Gambling Pocket" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 515: "Existential Plasticity" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 514: "Q.R. Crabs" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 513: "Mayor Jabberwocky" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 512: "American Horoscope" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 511: "A Horse of a Different Cat" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 510: "Dr. Pole" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 509: "A Dirty Rectangle on the Wall" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 508: "A Collerary of Bastiks" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 507: "Haunted House of a Mind" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 506: "The Shame Police" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 505: "Steamin' John & the Rebel" | Download exists locally. Skipping...
Ep. 504: "Mt. Florida" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 503: "A Still Period" | Download exists locally. Skipping...
Ep. 502: "Dr. Guy" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 501: "The Doors of Jazz" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 500: "Dr. Labyrinth, I Presume?" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 499: "A Ziggurat of Grievance" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 498: "The Jimmy Carter of Jerusalem" | Error downloading episode: HTTPError: Response code 403 (Forbidden)
Ep. 497: "Where the Grocery Stores Are" | Error downloading episode: HTTPError: Response code 403 (Forbidden)

Thank you for the report! Looks like that feed blocks a check run before the download starts — the next version should handle is just fine!
https://github.com/lightpohl/podcast-dl/releases/tag/v9.3.4


blueprint needs changing

form 2.0 has not been around for a while, as a matter of fact we're on version 4.0, and gpm won't install freshdesk, due to this dependency

@smeierzubiesen I merged your PR. Do I need to tag a new release?

@smeierzubiesen Ok, just did. Can you tell me if you see the new version now? (Maybe clear caches to be sure.)

after having cleared caches, still the same result
(simply deleting the contents of cache/gpm/ should be enough, surely??)
even when I ./bin/grav cache the result is the same

Hmm yeah I see that the latest version is 1.0.0 when I search for "freshdesk" on here. Haha I can't figure out how to publish a release on GPM...

i've been looking for that answer myself a little while now lol

right ok, lol, i shall check again in a little while

ok, good news, after again clearing the gpm caches, the new version 1.0.1 is now public and working


Kernel mem domain add api fixes

It looks like the internal api function for adding a partition to a mem-domain does not follow the "z_" prefix compliance. Also, the documentation seems not to reflect the functionality.
The PR fixes this, along with some typos in arch/x86/mmu.h.

Still no auto-review-requests for code-owners, AFAICS @nashif

Still no auto-review-requests for code-owners, AFAICS @nashif

still no idea what the issue is.


Pass code block to fixer prompt, not the raw LLM response (#259)

Passing the raw response can confuse LLM when it contains more text than the code block, which occurred on Gemini 1.5.
Also, Gemini 1.5's response structure seems to be different from code-bison-32k.
This PR does three things:

Make the response parser compatible with both models.
Pass the code block in response to LLM fixer, not the raw response.
More instructions in the code-fixing prompt to avoid common mistakes.

Merging this as it is cherry-picked from #259.

/gcbrun skip


fix(dva-core): register the model without affecting itself

Close #1493, #1305

Coverage increased (+0.1%) to 70.536% when pulling 667fca8283e2451eb7927ecbc5130aafac83fe8c on fix/model into b211dd4a8e2967f3dd6bb162177f7cf8cf21c74f on master.

Coverage increased (+0.1%) to 70.536% when pulling 667fca8283e2451eb7927ecbc5130aafac83fe8c on fix/model into b211dd4a8e2967f3dd6bb162177f7cf8cf21c74f on master.


Add custom comment character?

I use snakemake with this syntax file: https://bitbucket.org/snakemake/snakemake/raw/master/misc/vim/syntax/snakemake.vim
The file is basically python, with some modifications. My vimrc contains:
au BufNewFile,BufRead Snakefile set syntax=snakemake
au FileType snakemake let Comment="#"
let NERDSpaceDelims=1
let g:NERDCustomDelimiters = {
      \ 'py' : { 'left': '#' },
      \ 'snakemake' : { 'left': '#' },
      \ 'sshconfig' : { 'left': '#' },
      \ 'sshdconfig': { 'left': '#' }
      \ }
map <Leader>cv <plug>NERDCommenterToggle

Comments starting with '#' are correctly formatted as comments by vim with this setup.
When editing Snakefile files, <Leader>cv still results in /* <comment> */
Any ideas?

Modifying nerdcommenter/plugin/NERD_commenter.vim to contain 'snakemake' : { 'left': '#' } also fails. The ugly C comments still are used.

By default, no filetype is associated with Snakefiles. The custom comment settings do work when it is specified manually, e.g.:
au BufNewFile,BufRead Snakefile set filetype=snakemake
au BufNewFile,BufRead *.snakefile set filetype=snakemake

Even though VIM does not have an upstream filetype defined for this yet it seems pretty obvious that snakemake will be the name if/when it does. I've gone ahead and added support of of the box in this plugin.
Note that this will not work unless you set the filetype yourself. You can either do that with an autocommand as @khughitt points out, or my recommendation would be to use something like vim-snakemake that detects the filetype and adds syntax highlighting.

Great! Thanks for adding support. And good call on the plugin :+1:


Translation of comments

Hi there,
thanks for your great work! I want to enable translation of the ticket comments. I found the option "HELPDESK_TRANSLATE_TICKET_COMMENTS = true" in settings.py, but it does not seem to have an effect. Is it supposed to be working that easily?
Do you have a hint for me, what I do wrong?
Thanks in advance!

I believe it should be that easy, but the translation code is also an older part of the code base that I'm not sure has been as well-tested as we update for Python3 and newer versions of Django. It uses a third-party translation (Google Translate, specifically) so its entirely possible that something changed on Google's end that makes it not work for us. If you investigate and fix it, please feel free to submit a pull request back. Otherwise I'll mark it as a bug and try to look at it when I have time though it may be lower priority, I'm not sure how many people use the feature and honestly machine translation isn't very accurate anyway :-)

Hi, thanks for the fast reply! After a little bit of looking it up, it looks for me as if google did change a lot - your widget does not seem to be supported anymore.
I found the google cloud translate API, which basically requires you to have an active google cloud account with a valid key. I think about trying it out in a local build and will post results here, if that is ok with you?
Machine translation is at least a little bit better than the alternative - no communication at all, so I would love to see it working.
Thanks again, all the best,
Jens

If you try out google cloud translate and get it working, let me know or better yet, submit a PR with the changes to get it working again. I'm happy to merge it if that's a useful feature.


refactor: split structure by experiment type in AppBio Quantstudio Design and Anlysis

split structure by experiment type in AppBio Quantstudio Design and Anlysis
Up to this point the logic of the different experiment types is implemented using if statments
This PR intend to implement a generic structure from which each experiment type can inherit to implement their specific logic.

The idea of this PR is just to change the structure of the adapter, not its functionality, so there is no need to update the tests
The new json file comes from the PR https://github.com/Benchling-Open-Source/allotropy/pull/584 in which a new experiment type is added to the structure


Scheduler bounces LiveActions between delayed and policy-delayed

SUMMARY
I noticed this when debugging another problem and wanted to say something in case this behavior wasn't intended.
When there are executions that are delayed by a policy, the st2scheduler is constantly flipping them between policy-delayed and delayed state. Each state change is accumulated in the LiveAction instance and causes fairly large objects, especially if executions are delayed for a long period of time (large backlog).
ISSUE TYPE

Bug Report
Feature Idea

STACKSTORM VERSION
$ st2 --version
st2 3.0, on Python 2.7.5

OS / ENVIRONMENT / INSTALL METHOD
CentOS 7.6
Puppet-st2

STEPS TO REPRODUCE
Create the following policy `/opt/stackstorm/packs/default/policies/core_local_concurrency.yaml
pack: default
name: core.local.concurrency
description: Limits the concurrent executions for core.local
enabled: true
resource_ref: core.local
policy_type: action.concurrency
parameters:
  action: delay
  threshold: 10

Run the following script to kick off a bunch of core.local excutions
#!/bin/bash
for NUM in `seq -w 0 250`; do
  st2 action execute core.local cmd='sleep 120' timeout=180
done

Tail the st2scheduler logs
tail -f /var/log/st2/st2scheduler.log

ACTUAL RESULTS
2019-05-01 15:02:59,673<PHONE_NUMBER>94096 INFO handler [-] Scheduling liveaction: 5cc9ec569387ef586c0c82c3 (queue_item_id=5cc9ec569387ef58ba380e73) (queue_item_id='5cc9ec569387ef58ba380e73',liveaction_id='5cc9ec569387ef586c0c82c3')
2019-05-01 15:02:59,711<PHONE_NUMBER>94096 INFO policies [-] Applying policy "default.core.local.concurrency" (action.concurrency) for liveaction "5cc9ec569387ef586c0c82c3".
2019-05-01 15:02:59,848<PHONE_NUMBER>94096 AUDIT action [-] The status of action execution is changed from delayed to policy-delayed. <LiveAction.id=5cc9ec569387ef586c0c82c3, ActionExecution.id=5cc9ec569387ef586c0c82c4> (liveaction_db={'status': 'policy-delayed', 'runner_info': {}, 'workflow_execution': None, 'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, 'action_is_workflow': False, 'start_timestamp': '2019-05-01 18:58:30.534541+00:00', 'delay': None, 'callback': {}, 'task_execution': None, 'notify': None, 'result': {}, 'context': {u'user': u'st2admin', u'pack': u'core'}, 'action': u'core.local', 'id': '5cc9ec569387ef586c0c82c3', 'end_timestamp': None},action_execution_db={'status': u'policy-delayed', 'start_timestamp': '2019-05-01 18:58:30.534541+00:00', 'web_url': u'https://stackstorm.domain.tld#/history/5cc9ec569387ef586c0c82c4/general', 'log': [{u'status': u'requested', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 30, 550000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 40, 199000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 40, 370000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 55, 539000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 55, 781000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 14, 435000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 14, 762000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 38, 182000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 38, 475000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 5, 460000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 5, 955000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 34, 537000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 34, 650000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 3, 703000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 3, 919000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 33, 355000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 33, 639000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 3, 76000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 3, 286000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 31, 627000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 31, 774000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 59, 814000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb4139f090>)}], 'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, 'trigger_type': {}, 'runner': {u'runner_module': u'local_shell_command_runner', u'uid': u'runner_type:local-shell-cmd', u'runner_package': u'local_runner', u'enabled': True, u'name': u'local-shell-cmd', u'output_schema': {}, u'runner_parameters': {u'sudo': {u'default': False, u'type': u'boolean', u'description': u'The command will be executed with sudo.'}, u'sudo_password': {u'default': None, u'secret': '********', u'required': False, u'type': u'string', u'description': u'Sudo password. To be used when paswordless sudo is not allowed.'}, u'env': {u'type': u'object', u'description': u'Environment variables which will be available to the command(e.g. key1=val1,key2=val2)'}, u'cmd': {u'type': u'string', u'description': u'Arbitrary Linux command to be executed on the host.'}, u'kwarg_op': {u'default': u'--', u'type': u'string', u'description': u'Operator to use in front of keyword args i.e. "--" or "-".'}, u'timeout': {u'default': 60, u'type': u'integer', u'description': u"Action timeout in seconds. Action will get killed if it doesn't finish in timeout seconds."}, u'cwd': {u'type': u'string', u'description': u'Working directory where the command will be executed in'}}, u'id': u'59b7d5e6a814c02c97e8a96a', u'description': u'A runner to execute local actions as a fixed user.'}, 'trigger_instance': {}, 'rule': {}, 'children': [], 'delay': None, 'task_execution': None, 'trigger': {}, 'parent': None, 'result': {}, 'context': {u'user': u'st2admin', u'pack': u'core'}, 'workflow_execution': None, 'action': {u'notify': {}, u'name': u'local', u'runner_type': u'local-shell-cmd', u'tags': [], u'description': u'Action that executes an arbitrary Linux command on the localhost.', u'enabled': True, u'entry_point': u'', u'metadata_file': u'actions/local.yaml', u'output_schema': {}, u'uid': u'action:core:local', u'parameters': {u'cmd': {u'required': True, u'type': u'string', u'description': u'Arbitrary Linux command to be executed on the local host.'}, u'sudo': {u'immutable': True}}, u'ref': u'core.local', u'id': u'59b7d5e6a814c02c97e8a97f', u'pack': u'core'}, 'liveaction': {u'runner_info': {}, u'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, u'action_is_workflow': False, u'callback': {}, u'action': u'core.local', u'id': u'5cc9ec569387ef586c0c82c3'}, 'id': '5cc9ec569387ef586c0c82c4', 'end_timestamp': None})
2019-05-01 15:02:59,923<PHONE_NUMBER>94096 INFO action [-] The status of action execution is changed from delayed to policy-delayed. <LiveAction.id=5cc9ec569387ef586c0c82c3, ActionExecution.id=5cc9ec569387ef586c0c82c4>
2019-05-01 15:02:59,924<PHONE_NUMBER>94096 INFO handler [-] Liveaction (5cc9ec569387ef586c0c82c3) Status Pre-Run: policy-delayed (5cc9ec569387ef58ba380e73) (liveaction_status='policy-delayed',queue_item_id='5cc9ec569387ef58ba380e73',liveaction_id='5cc9ec569387ef586c0c82c3')
2019-05-01 15:02:59,983<PHONE_NUMBER>94096 AUDIT action [-] The status of action execution is changed from policy-delayed to delayed. <LiveAction.id=5cc9ec569387ef586c0c82c3, ActionExecution.id=5cc9ec569387ef586c0c82c4> (liveaction_db={'status': 'delayed', 'runner_info': {}, 'workflow_execution': None, 'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, 'action_is_workflow': False, 'start_timestamp': '2019-05-01 18:58:30.534541+00:00', 'delay': None, 'callback': {}, 'task_execution': None, 'notify': None, 'result': {}, 'context': {u'user': u'st2admin', u'pack': u'core'}, 'action': u'core.local', 'id': '5cc9ec569387ef586c0c82c3', 'end_timestamp': None},action_execution_db={'status': u'delayed', 'start_timestamp': '2019-05-01 18:58:30.534541+00:00', 'web_url': u'https://stackstorm.domain.tld/#/history/5cc9ec569387ef586c0c82c4/general', 'log': [{u'status': u'requested', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 30, 550000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 40, 199000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 40, 370000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 55, 539000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 58, 55, 781000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 14, 435000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 14, 762000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 38, 182000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 18, 59, 38, 475000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 5, 460000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 5, 955000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 34, 537000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 0, 34, 650000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 3, 703000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 3, 919000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 33, 355000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 1, 33, 639000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 3, 76000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 3, 286000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 31, 627000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 31, 774000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'policy-delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 59, 814000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}, {u'status': u'delayed', u'timestamp': datetime.datetime(2019, 5, 1, 19, 2, 59, 965000, tzinfo=<bson.tz_util.FixedOffset object at 0x7feb411bc350>)}], 'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, 'trigger_type': {}, 'runner': {u'runner_module': u'local_shell_command_runner', u'uid': u'runner_type:local-shell-cmd', u'runner_package': u'local_runner', u'enabled': True, u'name': u'local-shell-cmd', u'output_schema': {}, u'runner_parameters': {u'sudo': {u'default': False, u'type': u'boolean', u'description': u'The command will be executed with sudo.'}, u'sudo_password': {u'default': None, u'secret': '********', u'required': False, u'type': u'string', u'description': u'Sudo password. To be used when paswordless sudo is not allowed.'}, u'env': {u'type': u'object', u'description': u'Environment variables which will be available to the command(e.g. key1=val1,key2=val2)'}, u'cmd': {u'type': u'string', u'description': u'Arbitrary Linux command to be executed on the host.'}, u'kwarg_op': {u'default': u'--', u'type': u'string', u'description': u'Operator to use in front of keyword args i.e. "--" or "-".'}, u'timeout': {u'default': 60, u'type': u'integer', u'description': u"Action timeout in seconds. Action will get killed if it doesn't finish in timeout seconds."}, u'cwd': {u'type': u'string', u'description': u'Working directory where the command will be executed in'}}, u'id': u'59b7d5e6a814c02c97e8a96a', u'description': u'A runner to execute local actions as a fixed user.'}, 'trigger_instance': {}, 'rule': {}, 'children': [], 'delay': None, 'task_execution': None, 'trigger': {}, 'parent': None, 'result': {}, 'context': {u'user': u'st2admin', u'pack': u'core'}, 'workflow_execution': None, 'action': {u'notify': {}, u'name': u'local', u'runner_type': u'local-shell-cmd', u'tags': [], u'description': u'Action that executes an arbitrary Linux command on the localhost.', u'enabled': True, u'entry_point': u'', u'metadata_file': u'actions/local.yaml', u'output_schema': {}, u'uid': u'action:core:local', u'parameters': {u'cmd': {u'required': True, u'type': u'string', u'description': u'Arbitrary Linux command to be executed on the local host.'}, u'sudo': {u'immutable': True}}, u'ref': u'core.local', u'id': u'59b7d5e6a814c02c97e8a97f', u'pack': u'core'}, 'liveaction': {u'runner_info': {}, u'parameters': {u'cmd': u'sleep 120', u'timeout': 180}, u'action_is_workflow': False, u'callback': {}, u'action': u'core.local', u'id': u'5cc9ec569387ef586c0c82c3'}, 'id': '5cc9ec569387ef586c0c82c4', 'end_timestamp': None})

Thanks for reporting this.
This indeed looks like a bug / race.
@m4coder will you have time to have a look this / next week (since you are the last person who worked on that and probably have the most context , otherwise I can have a look as well).

@m4dcoder ^^ (@Kami mistyped your name above)

This is not a race. It's more of an annoying behavior. We introduced policy-delayed when we refactored the scheduler. An action execution goes to policy-delayed when the concurrency policy enforce delay for the execution. When the scheduler sees the policy enforcement, it delays the execution. In this case, the execution are being delayed and rescheduled and delayed again by policy. We can refactor the scheduler/policies to reduce and silence the effect.

This is not a bug either to be precise.  Is it performing the way it's suppose to?  Did the concurrency policy delayed the action execution?  The behavior of having many status change recorded in the object can be categorized as annoying.

@m4dcoder i found this behavior when debugging an issue where a bunch of our actions were stuck in a delayed state. I haven't able to create steps to reproduce that issue, but noticed that constantly reading/writing these actions from the database in this "busy loop" was probably not helping anything.

I was able to reproduce this issue, at least the flipping back and forth between policy-delayed and delayed status part.
Even if the end result and policies work correctly, this flipping back and forth is not desired, especially because on each of the state change we need to update execution object (log attribute on it) and that's very wasteful. It also causes unnecessary growing of the Execution object.
Example output:
st2 execution get  5cd14ac40761292469c559aa --attr log
log: - status: requested
  timestamp: '2019-05-07T09:07:16.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:16.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:16.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:18.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:18.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:20.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:20.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:22.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:22.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:24.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:24.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:26.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:26.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:28.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:28.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:30.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:30.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:32.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:32.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:34.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:34.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:36.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:36.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:38.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:38.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:40.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:40.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:42.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:42.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:44.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:44.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:46.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:46.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:48.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:48.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:50.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:50.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:52.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:52.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:54.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:54.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:56.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:56.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:07:58.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:07:59.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:00.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:00.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:02.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:02.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:04.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:05.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:07.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:07.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:09.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:09.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:11.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:11.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:13.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:13.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:16.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:16.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:18.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:18.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:20.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:20.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:23.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:23.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:25.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:25.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:27.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:27.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:29.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:29.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:31.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:31.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:33.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:34.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:36.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:36.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:38.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:38.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:40.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:41.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:43.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:43.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:45.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:45.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:47.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:48.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:50.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:50.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:52.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:52.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:55.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:55.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:08:57.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:08:58.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:00.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:00.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:02.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:02.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:05.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:05.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:07.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:08.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:10.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:10.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:13.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:13.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:15.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:15.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:17.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:18.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:20.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:20.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:22.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:23.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:25.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:26.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:28.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:29.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:31.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:31.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:33.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:33.000000Z'
- status: policy-delayed
  timestamp: '2019-05-07T09:09:36.000000Z'
- status: delayed
  timestamp: '2019-05-07T09:09:36.000000Z'
...

It could cause very massive execution objects for executions which are delayed for longer time periods (it flips status back and forth around every two seconds which is the scheduler interval).
And it also generates tons of (unnecessary) log traffic in st2scheduler.


Allow choosing own server.

https://gitlab.com/fdroid/fdroiddata/-/merge_requests/14928#note_1885460538

I'm not sure if this is useful for anyone, as I don't know of any other hosted instance besides kitsu.io.
Also, you would have to specify your own Algolia endpoint or I would have to add a second search implementation that falls back to the Kitsu API text filter (https://kitsu.io/api/edge/anime?filter[text]=some query).
I'll leave the issue open for now until the f-droid MR is resolved. But I think it's fine if the app is flagged with NonFreeNet.

I'm not sure if this is useful for anyone, as I don't know of any other hosted instance besides kitsu.io.
Also, you would have to specify your own Algolia endpoint or I would have to add a second search implementation that falls back to the Kitsu API text filter (https://kitsu.io/api/edge/anime?filter[text]=some query).
I'll leave the issue open for now until the f-droid MR is resolved. But I think it's fine if the app is flagged with NonFreeNet.

Hopefully this will not be a problem anymore in the future as the lead developer of Kitsu is changing lots of third party stuff to use in-house alternatives (switching from elasticsearch and algolia to typesense, get-Stream for a now WIP alternative).

https://github.com/Drumber/Kitsune/issues/38#issuecomment-2088520098

@shomykohai, is https://github.com/hummingbird-me/kitsu-mobile/issues/493#issuecomment-2088413141 what you're referring to?

IIRC Emma said a while ago in https://discord.com/channels/459452478673649665/459819241068167208 that she plans on replacing some stuff on the backend to cut off costs so she can pay another dev so stuff will go faster. Just have to wait for stuff like switching from json:API to graphql and revamping of the frontend to be done first surely, especially because the new mobile app as far as I know will share components and stuff like that with the web front end

https://github.com/Drumber/Kitsune/issues/38#issuecomment-2088520098

@shomykohai, is https://github.com/hummingbird-me/kitsu-mobile/issues/493#issuecomment-2088413141 what you're referring to?

IIRC Emma said a while ago in https://discord.com/channels/459452478673649665/459819241068167208 that she plans on replacing some stuff on the backend to cut off costs so she can pay another dev so stuff will go faster. Just have to wait for stuff like switching from json:API to graphql and revamping of the frontend to be done first surely, especially because the new mobile app as far as I know will share components and stuff like that with the web front end

yes!


Store match history

Created by eugene (Eugene Raether)

to specify, this ticket is about storing match information for advanced player statistics and should include all player actions and their results (with the exception of the actual words guessed and clues given). For example in a round where the cluegiver gives a 'word 5' clue, i would like to have stored the number of words the cluegiver intended to have guessed (5) and the number of correct guesses by the guessing team. Additionally match-wide I would like to keep track of number of wins and losses as well as number of clues needed to win (assuming asesino doesn't figure in). Any other stats that might be interesting you can add as well!

In addition to high-level statistics it might be equally interesting to simply store every user action taken during a game, including chat messages.  This would also help when moderating abuse.

Won't fix.  Out of scope.


fix: add environment default URL in the spec

/deploy renku=feat-jupyter-free-sessions amalthea-sessions=fix-authproxy-cli renku-ui=andrea/jupyter-free-build renku-gateway=fix-pass-cookie-to-data-service extra-values=amalthea-sessions.deployCrd=false #notest

You can access the deployment of this PR at https://renku-ci-ds-506.dev.renku.ch

it works as expected, thanks for fixing it!

Superseded by https://github.com/SwissDataScienceCenter/renku-data-services/pull/514.
It was easier to cherry-pick the 3 commits from this PR in a new branch than to rebase this.


Individual store data for server side sessions

Is there currently any way to use Reflux stores/actions server side (node+express) and have individual data in the stores per session user? Using the same store code, but the data in the store is individual per session?
The use case is a React frontend app (also using Reflux), different users connect to the backend api, and in the express routes, the users need to work on their own data in the stores.

In order to clean up the issue tracker I have to close down all questions. Please use proper communications channels for questions about reflux, such as:

StackOverflow with the refluxjs tag
#reflux channel on Reactiflux Slack group. Sign up here for an account.


Get webview cookies (including HttpOnly)

This is crucial for authenticating with a WebView. The ability to get the cookies will let you do further requests with the http plugin.

Any way around this?

Any update?

Up for this.
I need this to fetch httponly cookies via webview for my application.

need it

+1, this is weird it's not supported already

@LexSwed
Please try https://pub.dev/packages/webview_cookie_manager

Up for this.
I need this to fetch httponly cookies via webview for my application. Edit: Currently working for android but not iOS

It happened to me as well. It was working on Android but not on iOS.
Works now after changing the domain format on the cookie. Instead of setting https://my-domain.com/ as the domain on the cookie, I set it simply my-domain.com (no https:// suffix) and now works on both Android and iOS.

Hello,
ATM the plugin is in 0.4.0 version

it has no getAllCookies() method
and the getCookie() method do a await evalJavascript('document.cookie');
So we cannot get the http-only cookies

When and for which version will the getAllCookies() method will be available in the plugin please ?
thanks.

How do you set the domain?

I'm trying to handle Cloudflare challenges which unfortunately store the success of the challenge in a httpOnly cookie.
I tried now different packages that deal with cookies but none of them was able to access that cloud flare httpOnly cookie.

@escamoteur having the same issue here, did you figure out a workaroud?

@wolf-coder I switched to another webview package flutter_inappwebview:

I also need this functionality. Would a PR implementing WebViewCookieManager.getAllCookies be welcome?


fix(apps/prod/tekton): merge Kustomization tekton-results-setup into tekton-setup

Signed-off-by: wuhuizuo<EMAIL_ADDRESS>

/approve


Add Android Studio to WinUtil for Enhanced Development Support

Is your feature request related to a problem? Please describe.
I’d like to see WinUtil support Android development setups, particularly with Android Studio, as currently, setting up an Android development environment on Windows can be time-consuming and requires multiple configurations.
Describe the solution you'd like
Integrate Android Studio into WinUtil, providing a streamlined installation and setup process. This feature could automate installing Android Studio, configuring necessary SDKs, and setting up the Android Virtual Device (AVD) Manager to save developers time.
Describe alternatives you've considered
Alternatives include using Android Studio's official installer or third-party scripts, but these options lack the convenience and integration that a WinUtil feature would provide for a cohesive setup experience.
Additional context
Adding this feature would make WinUtil more appealing for Android developers using Windows, potentially increasing its user base.

We are not accepting any application requests for now, given that the Install section is quite bloated

/close


Fix(vax): reconnect to antidote in case of failure

When the pool perceives a connection is dead, the connection
is removed and the checkout goes to the next; Initialization
of a new connection is scheduled.
If fail at connecting, sleep for backoff before failing;
Disconnections are only perceived at connection checkout time

Some extra things:

Now, connections are started under a dynamic supervisor. This is important because it helps on termination and avoid zombie processes.
Even with a backoff, if the pool is large enough there may be a lot of connections attempting at the same time, this can be solved with a rate limiting feature


Contents are randomly displayed mirrored

Might be related to https://github.com/mozilla/pdf.js/issues/10400
I'm using
var viewport = page.getViewport({
                scale: scale
            });

I will add more details later when I have the pdf.
Attach (recommended) or Link to PDF file here:
Configuration:

Web browser and its version:
Operating system and its version:
PDF.js version:
Is a browser extension:

Steps to reproduce the problem:
1.
2.
What is the expected behavior? (add screenshot)
What went wrong? (add screenshot)
Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):

For now there are no details for us to work with since the template is empty and no PDF file or example code is available. Closing for now, but we can definitely reopen once all information is present.


MIDI.js does not process tempo events correctly

As an example, see http://www.piano-midi.de/midis/debussy/deb_clai.mid and compare with the synthesized audio output from either TiMidity++ or Fluidsynth.
This may be an issue with one of the dependent libraries.

See also issue #134.


web assembly instantiate Issue with threejs demo

Hi I get an issue after loaded xxx.wasm file, i just try to use the demo in my application(in react/iframe environment, it is not iframe container issue), if anyone know what cause the issue and how to fix it?
I used the UMD style instead of ESM building. I Install three@135 and web-ifc-three@121 in my project for rollup package bundle.
Threejs IFC demo: https://threejs.org/examples/?q=ifc#webgl_loader_ifc
Errors:

History
1 - After change xxxx.wasm file path to my local env instead of remote http value, the previous error is gone. But still have some other issue, maybe it is my mac m1 issue only, any ideas?

After change xxxx.wasm file path to my local env instead of remote http value, the previous error is gone. But still have some other issue, maybe it is my mac m1 issue only, any ideas?

Finally, I disable render it in IFrame, it indeed showing up, cheers!!!
So, it is the main issue only is loading the web-ifc.wasm from my local path instead of path https://threejs.org/examples/jsm/loaders/ifc/web-ifc.wasm

I have the same error but I'm not using iframes. I'm using vite.


error: npm run build:prerender

I'm submitting a...

[ ] Bug report

In package

[ ] @ng-toolkit/universal

Current behavior
everything works well when creating initial new angular project with CLI. But when i add components + modules + lazy loaded module, prerender build does not work anymore.
Expected behavior
Build prerender to be working with angular 8 web app.
Minimal reproduction of the problem with instructions
step 1) npm run build:prerender
step 2) output error:

fs.js:114
    throw err;
    ^

Error: ENOENT: no such file or directory, open 'src/./app/./core-routing.module.ts'
    at Object.openSync (fs.js:443:3)
    at Object.readFileSync (fs.js:343:35)
    at identifiers.forEach.identifier (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ssr\dist\prerender.js:129207:42)
    at Array.forEach ()
    at findRoutes (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ssr\dist\prerender.js:129206:21)
    at identifiers.forEach.identifier (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ssr\dist\prerender.js:129207:28)
    at Array.forEach ()
    at findRoutes (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ssr\dist\prerender.js:129206:21)
    at identifiers.forEach.identifier (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ssr\dist\prerender.js:129207:28)
    at Array.forEach ()
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build:prerender: `npm run build:prod && node dist/prerender.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build:prerender script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\****\AppData\Roaming\npm-cache\_logs\2020-01-07T06_47_22_870Z-debug.log

This is my lazy loaded module where it seems to have a problem finding the file:

export const routes: Routes = [
  { path: '', pathMatch: 'full', redirectTo: 'coming-soon' },
  {
    path: 'coming-soon',
    loadChildren: () => import('./core/core.module').then(m => m.CoreModule)
  },
];

It looks like the webpack is fetching the complete path './core/core.module' instead of 'core/core.module' and is doing the same with './app' instead of 'app'
Environment
My package.json

  "private": true,
  "dependencies": {
    "@angular/animations": "~8.2.4",
    "@angular/common": "~8.2.4",
    "@angular/compiler": "~8.2.4",
    "@angular/core": "~8.2.4",
    "@angular/forms": "~8.2.4",
    "@angular/platform-browser": "~8.2.4",
    "@angular/platform-browser-dynamic": "~8.2.4",
    "@angular/platform-server": "~8.2.4",
    "@angular/router": "~8.2.4",
    "@bugsnag/js": "^6.5.0",
    "@ng-toolkit/universal": "^7.1.2",
    "@nguniversal/common": "0.0.0",
    "@nguniversal/express-engine": "0.0.0",
    "@nguniversal/module-map-ngfactory-loader": "0.0.0",
    "angular-particle": "^1.0.4",
    "core-js": "^3.6.2",
    "domino": "^2.1.3",
    "express": "^4.15.2",
    "ngx-quicklink": "^0.2.0",
    "parallax-js": "^3.1.0",
    "rxjs": "~6.4.0",
    "tslib": "^1.10.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.803.2",
    "@angular/cli": "~8.3.2",
    "@angular/compiler-cli": "~8.2.4",
    "@angular/language-service": "~8.2.4",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "~5.4.0",
    "ts-loader": "^5.2.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.5.3",
    "webpack-cli": "^3.1.0"
  }

Update to latest version of @ng-toolkit/universal (should be 8.0.3).

I get the following error with @ng-toolkit/universal (should be 8.0.3).

fs.js:114
    throw err;
    ^

Error: ENOENT: no such file or directory, open<EMAIL_ADDRESS>    at Object.openSync (fs.js:443:3)
    at Object.readFileSync (fs.js:343:35)
    at Module. (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ng-ssr\dist\prerender.js:2846:29)
    at __webpack_require__ (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ng-ssr\dist\prerender.js:21:30)
    at C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ng-ssr\dist\prerender.js:85:18
    at Object. (C:\Users\sgtra\Desktop\assia\appWorkspace\WEBSITE\akcws02\artkauric-ng-ssr\dist\prerender.js:88:10)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build:prerender: `npm run build:prod && node dist/prerender.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build:prerender script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\sgtra\AppData\Roaming\npm-cache\_logs\2020-01-08T12_56_43_865Z-debug.log

Good to know, it is related to the prerendering script as this isn't working right now.
Please copy the content of this prerender file from my working sample repo.

Using version 8.0.3 and copied the mentioned files from working sample repo.
Lazy loaded modules are giving this error:

Is it related to this "it is related to the prerendering script as this isn't working right now" or something else?

Adding:
with the above changes, the ssr command npm run serve:ssr fails with this:
server.app.listen(port, () => {
^
TypeError: Cannot read property 'listen' of undefined

Can you use 8.1.0 version instead? :D

sure thing, I'll test it. :)


improvements to defaultLink

I see in #4 that you fixed the name of defaultLinkMulti. May I suggest a few additions to defaultLink and friends:
gs1:defaultLink a rdf:Property, owl:ObjectProperty,
   owl:FunctionalProperty ; # to emphasize there's only one, as opposed to defaultLinkMulti

gs1:defaultLink%2A
  vs:term_status "withdrawn" ; # belt...
  owl:deprecated true . # ...and suspenders

gs1:defaultLinkMulti says:

"A set of 'default links' that may be differentiated by information in the HTTP request headers sent to a resolver to enable a better match than the single default link."
It would be nice to explain how that differentiation can happen, eg by linking to the appropriate section of the DigitalLink standards

The appropriate section is the "Resolving GS1 Digital Link URIs" chapter/section, chapter 7 of https://www.gs1.org/docs/Digital-Link/GS1_Digital_link_Standard_i1.1.pdf but a separate document for v1.2, not yet ratified or published.
The mechanism to select a specific link type (e.g. gs1:masterData) is that linkType=gs1:masterData etc. is specified within the URI query string of the Web request.

Ok, so in addition to the above code, I propose this:
gs1:defaultLinkMulti
  rdfs:comment """A set of 'default links' that may be differentiated by information sent to a resolver to enable a better match than the single defaultLink.
The differentiation is based on the HTTP query parameter "linkType" as specified in the GS1 Digital Link standard chapter 7 "Resolving GS1 Digital Link URIs".
Eg "?linkType=gs1:masterData" will cause GS1 Master Data about the item to be returned.""";
  rdfs:seeAlso <https://www.gs1.org/docs/Digital-Link/GS1_Digital_link_Standard_i1.1.pdf>.

@mgh128 I think we got confused. https://www.gs1.org/voc/?show=linktypes does list https://www.gs1.org/voc/defaultLinkMulti as one of the link types.
So I think the resolution for this type cannot happen by ?linkType but must happen by HTTP headers, as the current definition says.
The question is what are these headers?


IMO there should definitely be some discussion on this. I don't want to get too specific before actually seeing the audit, but - in general there's two important things I think need to be focused on:

It shouldn't be discouraging to get stalled by putting a block in an input..
Or by being stalled by not being able to put a block in an input.

You know, low floor, high ceiling :)
(Again, IMO -) I think the best way to see what's discouraging is to, well, do playtests. Let people try sticking reporters in weird places. See if being able to is stalling, or discouraging. Try another playtest in which these are much more rigid; one where most (if not all) dropdown inputs aren't droppable.
What makes sense to limit at first may well not be the best choice. I imagine it's most important to see what's confusing in practice. For example, when teaching kids how to use variables, would they be stalled by dropping a variable into the first input of "set (..) to"? Certainly it seems like they could be, but it still feels like it warrants a try.
It's worth taking a look at LLK/scratch-vm#709, btw; two relevant things:

We had a long conversation about this today after a play test. We believe it is important for some blocks to have non-droppable menus to avoid confusion and error states. (from @thisandagain)

Can this be a feature that advanced users are allowed to disable? It's a pain to manually edit JSON (from @MegaApuTurkUltra)

What I'm most hoping for (I hope I'm not being rude?) is that, alongside each recommended change in the audit, an explanation is given (e.g. "touching (..) should be non-droppable because..."), and that these are also practiced - I don't know the procedure for playtests, but I think it would make sense to have a time or two where people are given a sheet of the new droppable and non-droppable inputs, for them to explore and discuss?

@towerofnix - I appreciate response. I agree, we do not want to discourage people from trying new things and tinkering, but we also want to set people up for a good experience.
There are some inputs that if they accept blocks it's not conceptually clear to the creator what will happen. In some cases that can be desired, but for people are new and who are learning how blocks work that can result in unexpected behavior or doing nothing. That confusion can create false expectations about how the majority of blocks inputs work or worse discourage the creator as they think they have made an error.
We have been trying everything that we are developing in workshops with people on a regular basis and we have seen this confusion.
All that being said, we are not making any block inputs that are droppable in 2.0 not droppable in 3.0.

@carljbowman Thanks. It's definitely awesome to see you do playtest everything (which I should have figured from the start, considering you've always playtested everything else too).
Relatedly - a recent example of someone wanting to drop a block inside of the "key pressed?" block, so that they could easily make a custom text input ("repeat until this string is typed").

Overview
This simply compares the current block implementations in 3.0 with their 2.0 counterparts. For the 3.0 Preview we should make sure these 3.0 is in sync with 2.0 blocks.
Some blocks, like Video Sensing, are not implemented in 3.0 but are tracked as apart of the 2.0 lexicon.
Non-Droppable
2.0 Left and Current 3.0 on the right
Orange bands to indicate differences that need to be resolved.

[ ] current time - should not be droppable
[ ] key pressed? - should not be droppable

Droppable
2.0 Left and Current 3.0 on the right
Orange bands to indicate differences that need to be resolved.

[ ] broadcast message - should be droppable
[ ] broadcast message and wait - should be droppable

Non-Droppable & Droppable
2.0 Left and Current 3.0 on the right
Orange bands to indicate differences that need to be resolved.

[ ] property of thing - (for lack of a better name, see below) - the property field should not be droppable

Thanks @carljbowman !

Regarding the "property of thing" block, I'd definitely prefer to keep the property field droppable. The whole discussion in https://github.com/LLK/scratch-blocks/issues/573#issuecomment-270948989 about adding "myself" to the sprites list was to allow for dynamically getting variables by name without hacked blocks, and making property non-droppable would make that moot.

@carljbowman @ericrosenbaum Moving to January milestone. I think we should consider resolving this a blocker for the preview release.


Add new style zsh completion

Add _rbenv's location to $fpath

Zsh compinit users will need to "compinit" after "$(rbenv init -)".  There's no getting around that.

Why can't rbenv init - print a call to compinit for evaluation by the shell?

Users may want to call compinit with different arguments.


Change LOGVx to LOG

Taking over the torch from #170
Breakdown of the regex used for the replacement:
Match portion
LOGV\d\((?<log_level>.*?),\s*(?:F?\(?(?<fmt_str>\".*?\")\)?|(?<fmt_tern>.*?\?.*?\s:\s*.*?))(?<extra_args>,.*?)??\);

Where the important groups are:

<log_level> ($1), <fmt_str> ($2), <fmt_tern> ($3), <extra_args> ($4)

Matches F() macros, but not in a group and thus are not carried over to the replacement
Matches ternaries in the string format field, but doesn't replace them. I've fixed those in a manual update

Replacement portion:
LOG($1, $2$3$4);

Just uses the groups as described above

You can use the following website breakdown to get a deeper understanding of what is happening, as well as the test cases that I used:

https://regex101.com/r/XMdaQa/1
https://www.debuggex.com/r/JBylBw2bmj4Uoux4

You can verify the changes by:
git checkout 8a1741d5860^ # Check out 1 commit before mass replacement
 # Echo commit message to file, cutting out everything before the embedded bash script
git log --format=%B -n 1 8a1741d5860 |tail -n +4 > regex.sh
chmod +x regex.sh && ./regex.sh # Run the script
git diff 8a1741d5860 -- # Show that the current changes are identical to the commit

I also added DEBUG_LEVEL to matrix_build.py to ensure that these kind of changes will be able to be compiled

I would really go with INFO(...) (and DEBUG(...) which adds DEBUG_VERBOSE to the flags) instead of LOG(...).

Appears to be some weirdness with clang-format and BraceWrapping::AfterEnum https://reviews.llvm.org/D93938
My local version:
$ clang-format --version
clang-format version 13.0.1

GitHub Actions version:
"--clang-format-executable" "/clang-format/clang-format12"


Update Gemfile

Is there a reason you're looking to add a rails specific dependency to this gem?

Is there a reason you're looking to add a rails specific dependency to this gem?

Yes, I have detected a vulnerability present in the code.

Well the gem you are looking to add is a rails specific gem that configures secure CSRF token callbacks in omniauth for Rails framework apps. It does not resolve any CVE currently present in the latest release of OmniAuth.

Alright, I ended up updating just in case, I decided to rely on the Dependbot I added to my Github for the forks I do, get it?

Well the gem you are looking to add is a rails specific gem that configures secure CSRF token callbacks in omniauth for Rails framework apps. It does not resolve any CVE currently present in the latest release of OmniAuth.


🐛 Error while install vision camera

What were you trying to do?
I want to install vision camera
Reproduceable Code
No response
What happened instead?
[!] Unable to find a specification for React-callinvoker depended upon by VisionCamera
You have either:

out-of-date source repos which you can update with pod repo update or with pod install --repo-update.
mistyped the name or version.
not added the source repo that hosts the Podspec to your Podfile.

Relevant log output
No response
Device
iphoneSE2 ios14
VisionCamera Version
2.12.0
Additional information

[ ] I am using Expo
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar issues in this repository and found none.

System:
OS: macOS 11.3.1
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 227.40 MB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 12.13.0 - /usr/local/bin/node
Yarn: 1.22.17 - /usr/local/bin/yarn
npm: 6.12.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.11.2 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.2, iOS 15.2, macOS 12.1, tvOS 15.2, watchOS 8.3
Android SDK:
API Levels: 23, 26, 27, 28, 29, 30
Build Tools: 28.0.3, 29.0.2, 29.0.3
System Images: android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-30 | Google Play Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: 4.0 AI-193.69<IP_ADDRESS>26763
Xcode: 13.2.1/13C100 - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_241 - /usr/bin/javac
Python: 2.7.16 - /usr/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 16.11.0 => 16.11.0
react-native: 0.62.3 => 0.62.3
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found

VisionCamera is not supported on React Native 0.63 or below.

Nice to state that in the getting started docs.

but its not work in 0.70.1 also


headsetcontrol: init at 2.6

Motivation for this change
Tool to control certain aspects of USB-connected headsets on Linux.
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Could you rebase this? I can merge afterwards.

@IvarWithoutBones rebase done