Nullified with merkle tree root

Considering this quote:
"The merkle proof is validated against a merkle tree root that is maintained by the smart contract."
In a scenario where we have a network with thousands of participants executing high-frequency transactions with this token, will this solution create many reverted transactions?
Let's me explain:
Imagine that Alice is about to send a UTXO to Bob and, at the same time, Mark is about to send a UTXO to Rebecca. Let's consider this order of execution of actions:

Alice obtains the merkle tree root, to generate zkp_proof(merkle tree root hash)
Mark obtains the merkle tree root, to generate zkp_proof(merkle tree root hash)
Mark computes transaction data, generating all the proofs
Alice computes transaction data, generating all the proofs
Mark sends the Ethereum transaction to his node, which is broadcasted to the network
Alice sends the Ethereum transaction to her node, which is broadcasted to the network

In this scenario, step 6 will fail, right? Because Alice is sending a transaction with an invalid proof, as the merkle tree root was modified by Mark in step 5.

Hi @alexcostars , that's a great question.
When Alice and Mark spend the same UTXO, they'll unavoidably clash, and one will redo the transaction by selecting another UTXO. But with a good selection strategy and the randomness provided, the chance they select the same UTXO should be low in a high-volume transaction system.
I think the question you had is about when Alice and Mark spend different UTXO, because in step 5, Mark's transaction will change the merkle tree root, which would have invalidated Alice's merkle tree proof. Because of this concern, the contract validates merkle tree proof against all historical roots: https://github.com/hyperledger-labs/zeto/blob/b1be3ba230ee19d4fcf90fd7a59c074f9b9db109/solidity/contracts/lib/zeto_nullifier.sol#L82
Therefore, in step 6, the contract will be able to validate Alice's MTP using the one of the previous merkle tree roots.
Please let us know if you have more questions.

Thanks @Chengxuan for the response.
@alexcostars great question. Hope the above details sufficiently addressed your question. The mechanism of checking history roots works because in the smart contract we have an append-only tree. As long as the clients follow the same order as the smart contract to insert the leaf nodes, by using the orders dictated by the blocks and the transaction indexes inside the blocks, they will be able to calculate legitimate roots that can be recognized by the contract.

I'm following your explanation. I didn't realize that the smart contract stores all historical states of the tree roots. In this case, the problem is solved, but a new question arises: Is this chain scalable to an ecosystem with millions of transactions? Do we need a security implementation to remove items from this object?

The merkle tree implementation uses a 256-bit key for the index of the leaf nodes, so it can accommodate enough UTXOs to fill up the entire universe (it's a larger number than the total number of atoms in the known universe). What's unclear is the performance implications when the onchain state gets bigger and bigger. But Ethereum mainnet today already deals with a scale similar to this, so hopefully how the public mainnet behaves today is a good indicator.


Resized clean.svg

Resized clean.svg which was disproportional when compared to the other icons

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

This was already fixed by https://github.com/Microsoft/vscode/pull/39135


Added support for Codewars, Twitter and freeCodecamp

Signed-off-by: ManavMalhotra<EMAIL_ADDRESS>Issue that this pull request solves
Added support for Codewars, Twitter and freeCodecamp support
Types of changes
Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update (Documentation content changed)
[ ] Other (please describe):

Checklist
Put an x in the boxes that apply

[ ] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

Hi @ManavMalhotra
Thanks for your contribution could you please create separate pr for each platform as currently the twitter api code is not working. Also if possible could we avoid using the authenticated twitter api.

@Aman-Codes Is something wrong with my code

Hi @ManavMalhotra thanks for your contribution. Could you please resolve the merge conflict.

@Aman-Codes Please check If there is any issue


AttributeError: type object 'Mesh' has no attribute 'logger'

When reading an STL file without a name or space after solid, numpy-stl wants to warn me
        if not line.startswith(b('solid ')) and line.startswith(b('solid')):
            cls.warning('ASCII STL files should start with solid <space>. '
                        'The application that produced this STL file may be '
                        'faulty, please report this error. The erroneous '
                        'line: %r', line)

However, this fails with
Traceback (most recent call last):
  File "test.py", line 20, in <module>
    stlmesh = mesh.Mesh.from_file(args.input_file)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 316, in from_file
    fh, mode=mode, speedups=speedups)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 69, in load
    fh, header, speedups=speedups)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 215, in _load_ascii
    name = next(iterator)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 178, in _ascii_reader
    'line: %r', line)
  File "/usr/local/lib/python3.5/dist-packages/python_utils/logger.py", line 46, in warning
    cls.logger.warning(msg, *args, **kwargs)
AttributeError: type object 'Mesh' has no attribute 'logger'

Note that in my personal opinion it would be highly desirable to configure the level of strictness when reading STLs. The current implementation adheres to the standard which is good. However, many defective CAD tools fail to obey the specifications and it would be helpful if numpy-stl could adapt to these cases as well.
Installation Details:

Python 3.5.2 (default, Sep 10 2016, 08:21:44) [GCC 5.4.0 20160609] on linux
OS Ubuntu 16.04
numpy-stl==2.0.0
python-utils==2.0.0

Reproducible with the following input
solid
 facet normal -0.678654 0.294209 -0.672956
  outer loop
   vertex 2.83527 0.679788 0.179586
   vertex 2.81848 0.674862 0.194367
   vertex 2.81848 0.707356 0.208573
  endloop
 endfacet
endsolid

Note that in my personal opinion it would be highly desirable to configure the level of strictness when reading STLs. The current implementation adheres to the standard which is good. However, many defective CAD tools fail to obey the specifications and it would be helpful if numpy-stl could adapt to these cases as well.
I believe it does actually. This is a warning, not an error :)
Having that said, I don't understand how you are getting this error as it's running just fine when I try for myself. Just to be sure some data isn't lost, can you try attaching the stl file as a file instead of within the comments? You can drag the file to the textarea :)

Sure, thanks for looking into this! The file is attached, however I had to use .txt as ending because of github. Shouldn't make any difference though. The gist seems to be that there is no space after solid which makes numpy-stl emit a warning which then fails for some reason.
$ python3
Python 3.5.2 (default, Sep 10 2016, 08:21:44)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from stl import mesh
>>> m=mesh.Mesh.from_file("attributeerror.txt")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 316, in from_file
    fh, mode=mode, speedups=speedups)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 69, in load
    fh, header, speedups=speedups)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 215, in _load_ascii
    name = next(iterator)
  File "/usr/local/lib/python3.5/dist-packages/stl/stl.py", line 178, in _ascii_reader
    'line: %r', line)
  File "/usr/local/lib/python3.5/dist-packages/python_utils/logger.py", line 46, in warning
    cls.logger.warning(msg, *args, **kwargs)
AttributeError: type object 'Mesh' has no attribute 'logger'

attributeerror.txt

Well, I've been able to reproduce it. Apparently it's broken for Linux but works on OS X. And I have absolutely no idea why that is.
Python 3.5.2 (default, Sep  5 2016, 17:28:01)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from stl import mesh
>>> m = mesh.Mesh.from_file('attributeerror.txt')
>>> m.data
array([ ([-0.0005502717103809118, 0.0002385173866059631, -0.0005455705686472356], [[2.8352699279785156, 0.6797879934310913, 0.1795859932899475], [2.8184800148010254, 0.6748620271682739, 0.19436700642108917], [2.8184800148010254, 0.7073559761047363, 0.20857299864292145]], 0)],
      dtype=[('normals', '<f4', (3,)), ('vectors', '<f4', (3, 3)), ('attr', '<u2')])

Guess I'll have something to debug ;)

@jtprobst can you try the latest develop branch? I think I've worked around it but I have no clue why Python is behaving different on Linux.

@WoLpH it works now. I tested it in Docker (python:latest), version Python 3.5.2 (default, Nov  1 2016, 00:10:05).
I did a quick review of https://github.com/WoLpH/numpy-stl/commit/39d1a7d49f9c1c1c190af25309603ad2e7950541. I cannot readily explain why it makes the issue disappear.
I'd like to share my personal opinion on the design: I would rather not use the logged decorator, nor the logger.Logged class but stick to python's onboard logging module. If you want the logging from numpy-stl to behave any different, the best would be to use a separate logger instance (see also https://docs.python.org/2/library/logging.html#logger-objects).

It does use the Python onboard logging module actually :)
The logger.Logged class is simply a mixin which makes the Python logging module easily available using a logger specific to the class.
Essentially it makes sure you don't have to do something like this for every class:
import logging

logger = logging.getLogger(__name__)

class SomeClass(object):
    def __init__(self):
        self.logger = logger.getChild(self.__class__.__name__)

    def error(self, *args, **kwargs):
        self.logger.error(*args, **kwargs)

    ...

Which makes it easy to do self.error('some message'). Naturally you can repeat that for every class but it's a convenient mixin :)


Prompt for select application if running device init with no arguments

Currently, if device init was ran without an application argument, we
attempted to get the application name from the current directory, given
it was a git repository.
This approach led to confusions from time to time, so now we prompt the
user to select one of it's own applications from a dropdown instead of
checking the current directory in this edge case.
Fixes: https://github.com/resin-io/resin-cli/issues/197

The CLI reference documentation needs to be regenerated first.


New version: Microsoft.WindowsTerminal 1.12.10733.0

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[X] Does your manifest conform to the 1.0 schema?

Microsoft Reviewers: Open in CodeFlow

@wingetbot run


Implement basic support for Objective-C methods.

Some return types does not work, those are: long double, _Complex long double and structs that are too large to fit in registers. The runtime part of this pull is in https://github.com/D-Programming-Language/druntime/pull/1111.
The below text is in the commit message as well. I don't know if it's too long for a commit message or if there's a better place to document this.
Basic support for classes, interfaces and instance methods.
This is implemented by adding a new linkage attribute, Objective-C,
and a compiler recognized UDA, @selector. The linkage attribute is
to be used on a class or interface. The UDA is attached to a method.
The linkage attribute tells the compiler that the class should use the
name mangling that matches the one used by Objective-C
(same as C, no mangling) and that all methods in the class
should use the Objective-C way of calling methods, see below.
The calling convention for Objective-C methods and functions is the
same as for C.
The selector UDA tells the compiler what Objective-C selector the
method should have. The selector is used in the Objective-C runtime
to find the implementation of a given method.
An Objective-C method call is implemented by making a regular C call
to the objc_msgSend function in the Objective-C runtime.
The signature of objc_msgSend looks something like this:
id objc_msgSend(id self, SEL op, ...);

The first parameter is the object (this/self pointer)
The second parameter is the selector attached to the method
The last parameter is for all the arguments that the
implementation expects

The call to objc_msgSend should not be performed as a variadic
call but instead as if it had the same signature as the method
that should be called but with the two additional parameter,
self and op, added first. The implementation of objc_msgSend
will jump to the method instead of calling it.
Because of the above, multiple versions exist of objc_msgSend.
Depending on the return type of the method that is called the correct
version need to be used. This depends on the ABI. This is a list of
functions and for which types they're used on OS X 64bit:

objc_msgSend_stret - Used for structs too large to be returned in
registries
objc_msgSend_fpret - Used for long double
objc_msgSend_fp2ret - Used for _Complex long double
objc_msgSend - Used for everything else

I think the autotester is currently failing on Windows, because you need to include objc_stubs.c to win32.mak, similar to what you have done for posix.mak.

I think the autotester is currently failing on Windows, because you need to include objc_stubs.c to win32.mak, similar to what you have done for posix.mak.

Ok, I see. I'll add it to win32.mak.

@ZombineDev a couple of updates:

Moved objc_FuncDeclaration_semantic_setSelector to objc_func.c and stubbed it on platforms where D_OBJC is disabled

Removed the stub for initStringTable

Updated the Windows makefile

I couldn't use stringtable->reset() cause it's a member function and the original initStringTable creates the actual object.
@WalterBright  @yebblies @9rnsr please review.

There are some parts of this that don't match the usual dmd style - eg ref parameters, the style of asserts, calling parameters self instead of the usual fd.
There also seem to be a lot of small new files.  Is this because later pull requests are going to flesh them out a lot more?
Is ObjcSelectorBuilder really necessary?  Can't you just use OutBuffer?

There are some parts of this that don't match the usual dmd style - eg ref parameters, the style of asserts, calling parameters self instead of the usual fd.

All functions prefixed with objc_ were originally inlined in some method of an existing class. Walter asked me to separate out that code in to separate files. All parameters named self is what would have been this if the code was inline in a method. Preferably I would have liked to used this as the parameter name but that's not possible. That also means at the call site of these function, the self parameter should always be this. Some other languages uses the name self instead of this, that's why I picked the name.
The reason for the ref parameters is that I wanted to avoid parameters with two pointers. But perhaps that's preferred. I also think it clearly shows which parameters will be modified. Also, this code was original inlined in some other method, using references required far less changes when it was moved to free functions.
I'm not sure that you mean with the asserts. How should I/should I not use them?

There also seem to be a lot of small new files. Is this because later pull requests are going to flesh them out a lot more?

Yes. Also, one of the GDC developers asked me to separate out the front end code from the glue code. For every (most) objc_ file there's a correspond already existing file without the prefix, where the functions are called.

Is ObjcSelectorBuilder really necessary? Can't you just use OutBuffer?

Hmm. ObjcSelectorBuilder keeps track of how many colons there are in a selector, which is used later to validate against the number of parameters the method has, which the selector is attached to.

@jacob-carlborg Is ObjcSelectorBuilder still in use somewhere? It was used initially to build the selector from the special syntax where each part was produced as an identifier by the lexer, but that syntax was replaced with a UDA taking a string parameter. (Perhaps for the auto-generated selectors which don't seem to be part of this pull request, but I'm not sure.)

All functions prefixed with objc_ were originally inlined in some method of an existing class. Walter asked me to separate out that code in to separate files.

Yes, but including the name of the caller in the function is not super useful.

All parameters named self is what would have been this if the code was inline in a method. Preferably I would have liked to used this as the parameter name but that's not possible. That also means at the call site of these function, the self parameter should always be this. Some other languages uses the name self instead of this, that's why I picked the name.

There is a huge amount of code already in dmd that has been moved out of member functions (eg into visitors) and none of it uses self.  IMO using self is referencing the history of the code and is not useful.  ie The fact that it used to be in a member function is not important to somebody reading the code.

The reason for the ref parameters is that I wanted to avoid parameters with two pointers. But perhaps that's preferred. I also think it clearly shows which parameters will be modified. Also, this code was original inlined in some other method, using references required far less changes when it was moved to free functions.

There is no need to avoid parameters with two pointers.  Another option is to return the modified elem, it looks like these functions currently return void.

I'm not sure that you mean with the asserts. How should I/should I not use them?

Current code uses printf and assert(0), you've used assert(false && msg).  It's a new style for dmd and potentially problematic because of issue 4733.

Yes. Also, one of the GDC developers asked me to separate out the front end code from the glue code. For every (most) objc_ file there's a correspond already existing file without the prefix, where the functions are called.

Keeping the frontend/glue stuff split is important, but maintaining a 1-1 mapping from objc_ files to the original is not.  If some of the files can be logically combined they should be, within reason.  eg objc_mars.c probably shouldn't exist, it's too small.  Unless later pull requests are going to make it worthwhile.  Again, the history of where these functions used to be doesn't matter.

Hmm. ObjcSelectorBuilder keeps track of how many colons there are in a selector, which is used later to validate against the number of parameters the method has, which the selector is attached to.

Another option is using Identifiers and appending idents to it.  Or just scan the buffer and count the colons.

@yebblies @michelf it doesn't look like ObjcSelectorBuilder is used anymore. I thought it was, I can remove it.

Yes, but including the name of the caller in the function is not super useful.

It's kind of hard to come up with names for all these small functions. The final version will have 93 of these free functions.

There is a huge amount of code already in dmd that has been moved out of member functions (eg into visitors) and none of it uses self. IMO using self is referencing the history of the code and is not useful. ie The fact that it used to be in a member function is not important to somebody reading the code.

Ok.

There is no need to avoid parameters with two pointers. Another option is to return the modified elem, it looks like these functions currently return void.

Ok, I'll change to two pointers. Other functions will modify multiple parameters, so for those it won't work. If I mix the styles I'm pretty certain someone will complain about that.

Current code uses printf and assert(0), you've used assert(false && msg). It's a new style for dmd and potentially problematic because of issue 4733.

I can change that. I'm not sure what issue 4733 has to do with this, or are you thinking about ddmd?

Keeping the frontend/glue stuff split is important, but maintaining a 1-1 mapping from objc_ files to the original is not. If some of the files can be logically combined they should be, within reason. eg objc_mars.c probably shouldn't exist, it's too small. Unless later pull requests are going to make it worthwhile.

Could you please tell how I should organize the code, it would be much easier then me guessing. The total line count of all objc_ files in the final implementation is around 4000.

Again, the history of where these functions used to be doesn't matter.

I'm just explaining why the code looks like it does.

Another option is using Identifiers and appending idents to it. Or just scan the buffer and count the colons.

Seems like it's not used anymore. I don't even know if that validation is necessary.

I can change that. I'm not sure what issue 4733 has to do with this, or are you thinking about ddmd?

Yes, issue 4733 + ddmd.

@jacob-carlborg

I don't even know if that validation is necessary.

Validating the number of colons isn't technically necessary, but it's a cheap way to catch some typos at compile time instead of at runtime. Think what would happen declaring memcpy with 1 argument instead of 3 and then calling it. This is the kind of mistake we're catching since it's cheap to check. Colons from the UDA string are counted by ObjcSelector::lookup(const char *s) and later validated against the parameter count in objc_FuncDeclaration_semantic_validateSelector.

Colons from the UDA string are counted by ObjcSelector::lookup(const char *s) and later validated against the parameter count in objc_FuncDeclaration_semantic_validateSelector

Right, then it's all good  :smiley:, ObjcSelectorBuilder can be removed.

@yebblies about the file structure, how about this: one file for the glue code, one for the stubs and one for the rest?

@yebblies about the file structure, how about this: one file for the glue code, one for the stubs and one for the rest?

That sounds better.  4000 lines of code isn't actually that much compared to some of dmd's files.

@yebblies, @ibuclaw, @michelf I have addressed all comments (I think), this is what I've changed:

Avoid deeply nested if
Replace 0x9877660 with 0 for alignment
Use boolean values for hassymbols
Remove ObjcSelector.toElem and inline it at the call site
Use pointers instead of reference
Rename self parameters to properly follow DMD naming conventions
Remove obsolete ObjcSelectorBuilder
Replace assert(false && "message"); with DMD assert style
Replace toPrettyChars with new isCoreModule to avoid building and doing string comparisons

Please let me know if I have forgotten to fix something.

@yebblies New updates:

Remove toElem and toRefSymbol (struct elem is still left, not sure what to do about this)
Remove the extra -g -g3 flags in the makefile
Remove conditionals around the objc sources in the makefile
Add all objc sources in the win32 makefile
Fix typo Ojbc_FuncDeclaration
Fix some formatting issues
Enable test for objc_msgSend_fpret
Rebase

struct elem is still left, not sure what to do about this

In this specific case, elem needs to be exposed in a header because there are three puncture points in callfunc that “need” to call a function in a different file for segregation's sake. Personally, I'd just put back that code in callfunc. Although alternatively you could not declare those function in any header but put the prototype just above callfunc in e2ir.c. That's messy, but e2ir.c already has prototypes like this, so perhaps it'd be acceptable.

@michelf Walter was quite clear that he wanted me to move the code to a new file. @yebblies what do you think about adding declarations directly to e2ir.c? @WalterBright any comments?

Adding prototypes directly to e2ir.c is fine and is already done in many cases.  Adding the actual code... is probably the way to go, especially when it's trivial and doesn't make much sense out of context.  eg having objc_tryMain_dObjc in its own function is rather pointless.
elem is only part of the problem - Symbol is also a backend type and shouldn't show up in frontend files.  Looking at ObjcSymbols, it could be turned into a bunch of global variables private to objc.c and free functions instead of an all-static class.  It wouldn't be as clean, but it would fix the backend types problem.

I really don't want to start adding back code after spending so much time moving it out to separate files. I did that because Walter wanted me to, and now I'm supposed to move it back? I don't know who I should listen to.
Most of the functions don't make sense of context.
I can create free functions out of ObjcSymbols but I still need somewhere to place the declarations.

I really don't want to start adding back code after spending so much time moving it out to separate files. I did that because Walter wanted me to, and now I'm supposed to move it back? I don't know who I should listen to.

Listen to Walter except when he's wrong.

I can create free functions out of ObjcSymbols but I still need somewhere to put the declarations.

You mean the prototypes?  Put them at the top of e2ir.c or whereever needs to call them.

@yebblies I converted ObjcSymbols to free functions, Symbol and elem is not present anymore in objc.h.

@yebblies @ibuclaw should I separate out the glue functions from objc_stubs.c in its own file?

The separation looks good to me, I have nothing to raise on that front.

should I separate out the glue functions from objc_stubs.c in its own file?

Yes.

Yes.

Done.

@yebblies ping.

ping

No complain from me.
The test fails because of the required changes in druntime, right? Isn't there a special syntax you can use in the description to make the auto tester use a druntime pull request when testing? (I somewhat remember something like this being discussed long ago.)

@yebblies ping.

I'm very busy at the moment, but please keep reminding me.

Isn't there a special syntax you can use in the description to make the auto tester use a druntime pull request when testing? (I somewhat remember something like this being discussed long ago.)

There was in my original linux-only PR autotester, but there has never been in the main autotester.

The test fails because of the required changes in druntime, right?

Yes, it's the selector UDA that is missing. When we feel ready we can accept the druntime PR first since it doesn't depend on any changes in the compiler.

I'm very busy at the moment, but please keep reminding me.

I see. I'll do that.

@yebblies ping. BTW, do you know a timeframe where you will be less busy when I can ping or should I just try once a week?

@yebblies ping.

@yebblies ping.

Basically what I'm thinking is that this organisation hurts maintainability more than it helps.  I think we need to commit to adding this to D and integrate it like any other code.

This is the third time I reorganized the code. Can you and Walter please try and come to an agreement on this. I made the changes because I was requested to do so and doing so I hoped it would have a bigger chance of being accepted.
Ping @WalterBright

I know.  I disagree with Walter here.

@WalterBright It's costly for Jacob to maintain a pull request like this one against the moving target that is the master branch, and it seems impossible to get a review from you (likely because it's costly to review too). It's a deadlock during which Jacob has to maintain multiple overlapping forks that were made to split the whole thing in a set of smaller changes to ease review (this pull being only the first one). This was done following your last comment in #3987 where you said “9000 lines of changes, omg! I don't know how to review this”. Jacob won't be able to maintain all this indefinitely, he'll get tired of it at some point.
If you are interested in this work you should give him some words of encouragement. Even if you can't commit to review it now, it'd be nice if you could signal your intent to do so within a given time frame or propose some other way forward. Right now it's stalled because of the lack of comments on your part, there is no resolution in sight, and if it stays like this for too long it'll eventually have to be abandoned.

I'd like to see this merged, the [http://diveframework.com](dive framework) will die off without it and the lack of support for iOS / Mac OS X development will hold the language back altogether. @WalterBright can you give it a few comments and maybe we can rebase and merge this?

@andralex 99% of the changes are additive and easy to review. Even if there are problems with this implementation, they can be fixed later, because they don't affect existing D code. There is no change in the language and in it's semantics.
The only user-visible changes are:

a new linkage - Objective-C
a new compiler-recognized UDA - @selector

The PR description explains this is more details. You can check the test files to see how this is supposed to be used. IMO, it quite straightforward.
By merging this PR, more people will be able to test it and help improve the Objective-C support.

The really nice thing about there not being any new syntax (unless you call the new linkage new syntax), is that you can version out Objective-C declarations for platforms it's not supported on without using hacks like string mixins. This was only possible due to UDA's, which didn't exist in the original implementation. Previously a new special syntax was used for the selectors.
BTW, the syntax for the new linkage is recognized even if D/Objective-C isn't supported on the current platform.

Jacob, you've done a fine job with this. Congrats! I have some minor nits, but this looks good to go.

Auto-merge toggled on

@WalterBright https://github.com/D-Programming-Language/druntime/pull/1111 is required to make the test pass.

Anyone know I should modify the windows makefile to make the test pass? @yebblies is this related to magicport?

Yes, you might need to add any new types to the lists or make sure that the new header/source files are scanned.  http://wiki.dlang.org/Updating_Pull_Requests_for_DDMD

So, any plans to make all those horrid flat functions first class citizens?

@yebblies Could you please verify this commit: https://github.com/jacob-carlborg/dmd/commit/a003913a8f8f804d62efe8700dad9fb6a799e1f3. It's the changed I needed to make to make magicport work.
BTW, doesn't the auto tester run magicport by default on Posix systems?

The Objc_FuncDeclaration ctor changes shouldn't be necessary IIRC, and you should be following the existing formatting in the json file.
The auto tester runs magicport and builds ddmd on all platforms.

The Objc_FuncDeclaration ctor changes shouldn't be necessary IIRC

Before that change I got this error:
func.d(439): Error: this.Declaration is not an lvalue

@yebblies Now I noticed that this doesn't work either. I need the default constructor in C++ after I moved the initialization of objc in to the constructor of FuncDeclaration. But this will generate a default constructor in D, which is not allowed for structs.
I don't think magicport supports initializing variables in the initialization list for a constructor, because DMD never uses that, until now. Before this, DMD always used pointers to all classes.

Magicport does support both super calls and member initialization in the ctor init list, unless this is a weird corner case I missed.  Other classes in DMD do use this.  Aaaaaand it looks like it only supports the 'super' re-write if there is only one expression in the init list, so that explains that.  The code is in dprinter.d:253 if you feel like adding support for both together.
It looks like the posix ddmd build was stopped at some point due to makefile changes.  Hopefully it still builds.
You can have a struct with a default ctor, but you will need to make sure that the default init D generates is valid (all members must be initialized to T.init, ctor does no real processing etc) and add it to the dropdefaultctor list in typenames.d.  I never got around to moving that list into the json file.

Hopefully it still builds.

At least it builds for me locally.

Anyone know what's going on with the linker error on Windows?

@yebblies I have some trouble with magicport. I have three new files: objc.c, objc.h and objc_stubs.c. objc.h is always used, objc.c contains the implementation of objc.h when Objective-C support is enabled. objc_stubs.c contains the implementation when Objective-C support is disable. I don't know how to represent this in magicport.

Yeah, magicport doesn't support that.  One option is to handport one of the files.

Is it possible to do some trick with the makefile to first port one of them and then the other one?

Possible, but unlikely to be worth it.  Just write a D version of objc_stubs.c by hand?

Sure, that's no problem. Just wanted to make sure there's no easier way.


Update jormungandr metrics that need to be reset when the node (re-)starts.

Is your feature request related to a problem? Please describe.
The metrics dashboard shows inaccurate values when the node is re-started for the number of connected peers, and the usage of the mempool. This is due to cummulative nature of the prometheus metrics.
Describe the solution you'd like
A simple explicit resetting of these metrics to 0 when the node starts/restarts, should fix this.
Describe alternatives you've considered
Not doing anything, and keep things as they are, hoping that someone will remember that this is how the metrics work.
Additional context
Having metrics that show unreliable numbers has caused interpretation problems in the past.

This is blocked by https://github.com/input-output-hk/catalyst-load-test/issues/20


[C#] Create simple example of C# HTTP GET Arrow client

Describe the enhancement requested
Contribute a C# .NET client example to the set of minimal HTTP GET examples in the arrow-experiments repo.
Component(s)
C#

Addressed via apache/arrow-experiments/#25


Add common identity properties to be explicit for the host storage

Learn Build status updates of commit e15b743:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/azure-functions/functions-reference.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

@ggailey777
Can you review the proposed changes? IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

emailed GG

emailed author

sent reminder to ggailey777

sent reminder to ggailey777

emailed author

Pull requests can't be reviewed when there are merge conflicts. After you resolve the conflicts, you can sign off again.  The file in question is concepts-single-to-flexible.md.
For help with resolving merge conflicts, refer to the Contributor Guide, or try the Platform Support channel in Teams.

sent email and Teams msg to author

PR review team emailed author today

@RaphHaddad sorry for the delay in getting to this. I've cherry-picked your commit into the private repo to fix the merge conflicts: https://github.com/MicrosoftDocs/azure-docs-pr/pull/281819

#please-close


Draft: testing JSL models for GH actions

PLEASE DO NOT MERGE

Leaving this for the JSL team to solve on their end


Remove HTTP part of the client for API v6 services

Issue: KNTK 370
Firstly this PR clears repo of depracated HTTP services for API v6.
In addition some improvements can be found for timeout tests and gRPC examples in separate commits.

While running the users example, I get back an error:
go test -tags examples -count 1 -v -run Users github.com/kentik/community_sdk_golang/examples
go: finding module for package github.com/kentik/community_sdk_golang/kentikapi/synthetics
# github.com/kentik/community_sdk_golang/examples
examples/synthetics_example_test.go:14:2: no matching versions for query "latest"
FAIL    github.com/kentik/community_sdk_golang/examples [setup failed]
FAIL

It works fine on master.


Long tap is too fast

Long tap is required when the machine needs maintenance and the fab lab staff wants to register the performed maintenance on the machine.
While testing on ESP32S3 it was observed that the long tap takes milliseconds to be completed, there's a bug in the waiting routine.

fixed in commit 0845c33


How to properly remove data entries?

Hi, I'm trying to remove wandering trader trades with KubeJS data.
I've just been overriding data with blank files, like so:
{}

Tehnically, this "works", but I'm getting errors like this in the console:
[Render thread/ERROR] [Apotheosis : Village/]:
Ignoring wanderer_trades item with id apotheosis:eye_of_ender as it is empty.
Please switch to a condition-false json instead of an empty one.

What is a condition-false json? Does this apply to all data files, such as chest loot or affixes, or just trades?
Thanks!

That would be the following
{
    "conditions": [
        { "type": "forge:false" }
    ]
}


Upgrade to React 16

~Work in progress, please don't merge yet! 😅~ Safe to merge! 🙂

Note: This work is based on master, so a few extras found there way into this PR, aside from the work I've just done.

Updates React to 16x (addresses #330) release as well as other supporting dependencies (a few still used React.PropTypes).
We're now getting this output on npm test:
$ npm test

><EMAIL_ADDRESS>test /Users/Matt/Development/mern-starter
> cross-env NODE_ENV=test PORT=8080 MONGO_URL=mongodb://localhost:27017/mern-test node_modules/.bin/nyc node node_modules/ava/cli.js

(node:7648) Warning: process.on(SIGPROF) is reserved while debugging
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
Warning: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills
MERN is running on port: 8080! Build something amazing!
Warning: Failed prop type: The prop `intl` is marked as required in `PostCreateWidget`, but its value is `undefined`.
    in PostCreateWidget
[React Intl] Missing message: "createNewPost" for locale: "en"
[React Intl] Cannot format message: "createNewPost", using message id as fallback.
[React Intl] Missing message: "by" for locale: "en"
[React Intl] Cannot format message: "by", using message id as fallback.
[React Intl] Missing message: "submit" for locale: "en"
[React Intl] Cannot format message: "submit", using message id as fallback.
[React Intl] Missing message: "deletePost" for locale: "en"
[React Intl] Cannot format message: "deletePost", using message id as fallback.
[React Intl] Missing message: "createNewPost" for locale: "en"
[React Intl] Cannot format message: "createNewPost", using message id as fallback.
[React Intl] Missing message: "submit" for locale: "en"
[React Intl] Cannot format message: "submit", using message id as fallback.
[React Intl] Missing message: "createNewPost" for locale: "en"
[React Intl] Cannot format message: "createNewPost", using message id as fallback.
[React Intl] Missing message: "submit" for locale: "en"
[React Intl] Cannot format message: "submit", using message id as fallback.
[React Intl] Missing message: "switchLanguage" for locale: "en"
[React Intl] Cannot format message: "switchLanguage", using message id as fallback.
[React Intl] Missing message: "siteTitle" for locale: "en"
[React Intl] Cannot format message: "siteTitle", using message id as fallback.
[React Intl] Missing message: "addPost" for locale: "en"
[React Intl] Cannot format message: "addPost", using message id as fallback.
[React Intl] Missing message: "twitterMessage" for locale: "en"
[React Intl] Cannot format message: "twitterMessage", using message id as fallback.
[React Intl] Missing message: "createNewPost" for locale: "en"
[React Intl] Cannot format message: "createNewPost", using message id as fallback.
[React Intl] Missing message: "submit" for locale: "en"
[React Intl] Cannot format message: "submit", using message id as fallback.
(node:7669) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client

   36 passed
--------------------------------------------------|----------|----------|----------|----------|----------------|
File                                              |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
--------------------------------------------------|----------|----------|----------|----------|----------------|
 client/modules/App/                              |      100 |    78.57 |       75 |      100 |                |
  App.js                                          |      100 |     62.5 |       50 |      100 |                |
  AppActions.js                                   |      100 |      100 |      100 |      100 |                |
  AppReducer.js                                   |      100 |      100 |      100 |      100 |                |
 client/modules/App/components/Footer/            |      100 |      100 |      100 |      100 |                |
  Footer.js                                       |      100 |      100 |      100 |      100 |                |
 client/modules/App/components/Header/            |      100 |      100 |      100 |      100 |                |
  Header.js                                       |      100 |      100 |      100 |      100 |                |
 client/modules/Intl/                             |      100 |    90.91 |       50 |      100 |                |
  IntlActions.js                                  |      100 |      100 |      100 |      100 |                |
  IntlReducer.js                                  |      100 |    90.91 |      100 |      100 |                |
  IntlWrapper.js                                  |      100 |      100 |        0 |      100 |                |
 client/modules/Post/                             |      100 |      100 |    30.77 |      100 |                |
  PostActions.js                                  |      100 |      100 |       25 |      100 |                |
  PostReducer.js                                  |      100 |      100 |      100 |      100 |                |
 client/modules/Post/components/                  |      100 |      100 |      100 |      100 |                |
  PostList.js                                     |      100 |      100 |      100 |      100 |                |
 client/modules/Post/components/PostCreateWidget/ |      100 |      100 |      100 |      100 |                |
  PostCreateWidget.js                             |      100 |      100 |      100 |      100 |                |
 client/modules/Post/components/PostListItem/     |      100 |      100 |      100 |      100 |                |
  PostListItem.js                                 |      100 |      100 |      100 |      100 |                |
 client/modules/Post/pages/PostDetailPage/        |      100 |      100 |        0 |      100 |                |
  PostDetailPage.js                               |      100 |      100 |        0 |      100 |                |
 client/modules/Post/pages/PostListPage/          |       50 |        0 |        0 |       50 |                |
  PostListPage.js                                 |       50 |        0 |        0 |       50 |             23 |
 client/util/                                     |      100 |    85.71 |      100 |      100 |                |
  apiCaller.js                                    |      100 |    85.71 |      100 |      100 |                |
  react-intl-test-helper.js                       |      100 |      100 |      100 |      100 |                |
 server/                                          |    44.44 |    20.59 |    14.29 |    44.44 |                |
  server.js                                       |    44.44 |    20.59 |    14.29 |    44.44 |... 123,127,131 |
 server/controllers/                              |      100 |    61.54 |      100 |      100 |                |
  post.controller.js                              |      100 |    61.54 |      100 |      100 |                |
 server/models/                                   |      100 |      100 |      100 |      100 |                |
  post.js                                         |      100 |      100 |      100 |      100 |                |
 server/routes/                                   |      100 |      100 |      100 |      100 |                |
  post.routes.js                                  |      100 |      100 |      100 |      100 |                |
 server/util/                                     |       50 |        0 |        0 |       50 |                |
  fetchData.js                                    |      100 |        0 |        0 |      100 |                |
  promiseUtils.js                                 |       50 |        0 |        0 |       50 |              9 |
--------------------------------------------------|----------|----------|----------|----------|----------------|
All files                                         |    85.11 |     56.9 |       50 |    85.11 |                |
--------------------------------------------------|----------|----------|----------|----------|----------------|

I'm definitely going to address the RAF warnings before we merge this. Should I also address the Intl warnings? Or shall we save that for a separate PR?

I've addressed the requestAnimationFrame warnings in the test suite, and determined that the Intl warnings predated my changes (we should address them separately).

After a bit more digging, I realized the Intl fix for the test suite was a one-liner, so I threw it into this PR.
We're still getting this warning, though. Not sure where it's coming from:
Warning: Failed prop type: The prop `intl` is marked as required in `PostCreateWidget`, but its value is `undefined`.
    in PostCreateWidget


Bug: Local sensor stops updating when HA was restarted

Describe the bug
I'm using local sensor to track the state of the PC: LastSystemStateChange. I've noticed that when HA restarts for some reason (on update for example), that sensor becomes unknown and doesn't come back unless I click button store and activate sensors, which probably forces update at that moment. It looks like lost connection sets the unknown state but after HA gets back online, there is no sync of states happening.
To Reproduce
Steps to reproduce the behavior:

Set Local Sensor in HASS.Agent.
Make sure that HA has proper value for that sensor.
Restart HA.
Check the state in HA and HASS.Agent - they should be different.

Expected behavior
HASS.Agent should know if the connection to the HA was lost and after getting it back online it should update the sensors to make sure they are in sync.
Misc info (please complete the following information):

Windows build: Win10 Pro - 21H2, 19044.1865
Windows' UI language: PL
HASS.Agent version: 2022.12.0

Please check what's applicable (multiple answers possible):

[x] Installed via installer
[ ] Installed manually
[x] Problem occurs in HASS.Agent
[ ] Problem occurs in Satellite Service

Additional context
Add any other context about the problem here.
Logs
There are nothing important in the logs regarding this issue:
2022-08-05 08:41:45.092 +02:00 [INF] [SETTINGS] Config storage path: C:\Users\---\AppData\Roaming\LAB02 Research\HASS.Agent\config
2022-08-05 08:41:45.816 +02:00 [INF] [SETTINGS] Configuration loaded
2022-08-05 08:41:45.825 +02:00 [INF] [LOCALIZATION] Selected UI culture: [en] English
2022-08-05 08:41:46.921 +02:00 [INF] [SETTINGS_QUICKACTIONS] Config not found, no entities loaded
2022-08-05 08:41:47.082 +02:00 [INF] [SETTINGS_COMMANDS] Loaded 4 entities
2022-08-05 08:41:47.109 +02:00 [INF] [SETTINGS_SENSORS] Loaded 1 entities
2022-08-05 08:41:47.127 +02:00 [INF] [NOTIFIER] Disabled
2022-08-05 08:41:47.127 +02:00 [INF] [MEDIA] Disabled
2022-08-05 08:41:47.129 +02:00 [INF] [HOTKEY] Completed bind for global quickaction hotkey
2022-08-05 08:41:47.339 +02:00 [INF] [MQTT] Identifying as device: EARTH
2022-08-05 08:41:47.437 +02:00 [INF] [SERVICE] Local install path: C:\Program Files (x86)\LAB02 Research\HASS.Agent Satellite Service\
2022-08-05 08:41:47.446 +02:00 [INF] [LOCALAPI] Initializing ..
2022-08-05 08:41:47.447 +02:00 [INF] [MQTT] Connecting ..
2022-08-05 08:41:48.507 +02:00 [INF] [MQTT] Connected
2022-08-05 08:41:48.694 +02:00 [INF] [HASS_API] Home Assistant version: 2022.8.0
2022-08-05 08:41:49.130 +02:00 [INF] [HASS_API] System connected with ---
2022-08-05 08:41:49.540 +02:00 [INF] [MQTT] Initial registration completed
2022-08-05 08:41:51.473 +02:00 [INF] [LOCALAPI] listening on port 5115
2022-08-05 09:04:41.775 +02:00 [INF] [HASS_API] Home Assistant version: 2022.8.1
2022-08-05 09:04:41.776 +02:00 [INF] [HASS_API] Server recovered from failed state
2022-08-05 09:09:02.934 +02:00 [INF] [SETTINGS] Configuration stored

Oh, ok. I thought HASS.Agent has some persistent connection and knows immediately that HA is gone.
So basically I should create automation like this, right?
alias: Force HASS.Agent sensors update after HA restarts
id: 272d3766-7ef6-4150-a16c-17dfebd682be
trigger:
- platform: homeassistant
  event: start
action:
  - service: button.press
    target:
      entity_id: button.earth_publishallsensors

Where button.earth_publishallsensors was created by HASS.Agent from PublishAllSensorsCommand as a button.

It actually does know that, and it should already resend the values, but it's unreliable at the moment as you noticed heh.
Yep exactly, maybe add a delay to make sure everything has started:
  - delay:
      minutes: 2

But that might not be necessary, needs testing.

No problem, I can live with that, knowing now what to look at. ;)
I will leave it without delaying for now and see if that works - as far I know start trigger should happen after everything has...well, started. If not I will try to use some version of wait in condition to wait for MQTT to be available.

i think i have this issue with the satellite service. however it doesnt seem consistent.
i wake laptop from sleep, seems fine, another time its just not connected (possibly from sleep and i didnt notice).
restart service and its all good.
I dont think its an issue that its not updating the last value as its not changed (so still unknown). I think it just gets disconnected (or doesnt connect).
What's the configured retry to connect to mqtt if the device is offline / or just cant connect?
maybe related to
Bug: MQTT disconnects before sleep, grace period unreliable #85


gh-278: ignore reduandant lines and files from coverage report

Adds coverage config in pyproject.toml to ignore VCS produced files and conditional code meant for type checking.
Closes: #278

I think the readthedocs failure is unrelated and I can't really re-run it.

pre-commit.ci run


PaypalExpress API: GetTransactionDetails

Because Paypal has a customer-facing Terminal, it is vital for merchants to be able to retrieve transaction details from Paypal so as to keep internal records "in sync" with what Paypal has in file.
GetTransactionDetails ensures that any follow-up on a transaction (refund, cancellation, chargeback) that may have happened directly from Paypal's own virtual terminal can be checked for and dealt with accordingly.
Implemented as per https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_GetTransactionDetails

Closing. If someone adds the remote test we can reopen.


Support for Dreame L10s Pro Ultra Heat

Hi,
is a support for the new Dreame L10s Pro Ultra Heat planned? If I try to add this model it says that there is no supported model in my account.

Deseando que llegue la integración para exprimir al máximo este maravilloso robot!


An error occurs when creating a resource group from Command Palette

OS: Win10
Build Version: Azure Resources v0.5.7-alpha.0
Repro Steps:
F1 -> Azure: Create Resource Group...
Expect:
It navigates to next step without any error.
Actual:
An error occurs.

More Info:

This issue also reproduces when creating resource group with "Azure: Create Resource..." command.
This issue does not reproduce when creating a resource group from context menu.

Fixed in #517 since that PR updated utils which included the fix


antibody: 4.1.2 -> 4.2.0

Motivation for this change
Having a second maintainer helps.
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @worldofpeace

This change is

You're welcome!


Clean up GitHub headers

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[ ] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

This PR cleans up GitHub headers:

Replaces Accept: application/vnd.github.v3 header with Accept: application/vnd.github ref
Removes Accept: application/vnd.github.antiope-preview+json header ref

Review period will end on 2022-07-26 at 00:00:00 UTC.

Review period ended.


Migrate to Flutter null safety

Hello @mohanasundaramn !
I migrated your awesome lib for Flutter Null Safety.
Please review and publish to pub.dev

Thank you for the PR, I will review and merge this weekend


Glass Like Effect - Glassomorphism

Hey @Diptenusarkar, I'm sending the pull request. Please accept it. Thank you ❤

@Diptenusarkar Please merge the following update. ❤

@Diptenusarkar Thank you so so much. Here, take some showers of hearts, ❤ ❤ ❤

You are most welcome


Can see the "under the hood movements" for animations on mobile

This does not happen on my notebook, but my cell phone (once it is shipped with Phonegap. I think it has something to do probably with speed.
I have a sliding transition for ng-views, where leaving view moves out to left (from 0 to -100%), and entering view starts from left = 100% to left = 0.
When I click on some button changing route, on my phone I can see for a very short moment how the "entering" view moves to the right, as if it is taking its initial position to start moving to the left. it appears that when angular is asigning that view the class for starting at 100%, that class is also animated.
It's only a moment, given that right away, it starts moving to the left as the desired animation.
Of course, the leaving view doesn't do anything weird because it already starts at 0% so everything is fine.
Below the style I'm using:
.slide.ng-enter,
.slide.ng-leave,
.slide_inverse.ng-enter,
.slide_inverse.ng-leave,
.grow.ng-enter, .grow.ng-leave {
    transition-duration: 0.15s;
    -webkit-transition-duration: 0.15s;
    -ms-transition-duration: 0.15s;
    transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    -ms-transition-timing-function: ease-in;
    backface-visibility:hidden;
    -webkit-backface-visibility:hidden;
    -moz-backface-visibility:hidden;
    -ms-backface-visibility:hidden;
}
.slide.ng-enter {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
}
.slide.ng-enter.ng-enter-active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
}
.slide.ng-leave {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
}
.slide.ng-leave.ng-leave-active {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
}

This is more evident for the routes whre I have a resolve that retrieves data from backend.

I'm going to close this issue because we have no reproduction of the issue. Feel free to reopen this issue if you can provide a reproduction (ideally a runnable demo in a Plunker or similar. You can use this Plunker Template).


Issues in Realizing the experimental results in the ICLR 2024 paper

I have trouble in reproducing the experimental results in this paper. I use the same environment with that reported in your github.
And for each dataset I tried all the setting in config folder, and try several seeds. It really takes me few days, but the best results are as follows.
It is still far away from the result reported in the paper.
Metrics | AP | MRR
Laser-in-paper | 0.644 | 0.3275
Laser-reproduced | 0.6303 | 0.313

Datasets|Peptides-func|PCQM-Contact
Metrics | AP | MRR Laser-in-paper | 0.644 | 0.3275 Laser-reproduced | 0.6303 | 0.313


Bugfixes: Typos

According to the Typescript compiler options it requires sourceMap and
not sourcemap (although the latter works for now aswell). A space was
missing in the mapRoot and sourceRoot options.

:+1:. Thanks!


Support broadcast input?

Description of the new feature/enhancement
Sometimes i need to open many panes in a tab with splitHorizontal/splitVertical hotkeys. And then broadcast input to all the panes in current tab, or all tabs.
Is it possible to support broadcast input, like iterm2?

I suppose there's no reason we couldn't support this.
It might need some refactoring to have a TermControl raise an event up to the App layer to have it transmit the input to all the terminals in the tab/window, but that's certainly possible.

@zadjii-msft
It is useful to maintain a series of servers with the same role. And now other popular terminals all support this feature, like iterm2 on OS X, cmder/conemu on windows, xshell/securCRT and so on.
SO PLEASE consider adding this feature!

Send the same command to all the active tabs within windows terminal
I hope windows terminal come with a feature that it can send the same command to all the active tabs.
Let's say we open 4 tabs within terminal,then each tab have a connection to a SSH server. and we want to know the status of the firewall on those server by issue "systemctl status firewalld" . but we want do it in one time. not one by one for each connection in these 4 tabs.
This feature had been implement in SecureCRT.
Bellow is the steps to send the same command to all active tabs in SecureCRT.
This can be done using the 'Chat Window'.
1. Select 'Chat Window' from the 'View' menu so that the window will be displayed.

2. Then just right click inside the 'Chat Window' and select the 'Send Chat to All Tabs' option in the pop-up menu.

3. Once enabled, any commands entered in the 'Chat Window' will be sent to all tabs when 'Enter' is pressed.

It will be very handy in daily task if it can be like that.

Originally posted by @tlsalex in #3352

We sure need that~

I am also very interested in this feature, and want to emphasize the multiple modes of broadcast operation that iTerm2 supports. It's important that broadcasting to all panes in the current tab be supported distinctly from broadcasting to all panes in the window.

This is the only missing feature keeping this terminal from being used ubiquitously in my organization. Please add support for this!

Just throwing me six cents in on this, very interested as I've come from iTerm2  and also would find it very useful if there were options to broadcast to all panes in the current tab, as well as all panes in all tabs.

Terminator also has the concept of groups. You can assign a pane to a named group and this allows broadcast to the group as well as all panes. This is very useful in the situation where I have both DB server and application server panes but want to broadcast to all of a particular type.
See here for an example: https://terminator-gtk2.readthedocs.io/en/latest/grouping.html

Maybe it would also be very helpful if we can choose which panes to sync input among, instead of sending input to all the panes. This helps when we would like some pane to be the monitor of status and other panes run the same command in different directories:

Maybe it would also be very helpful if we can choose which panes to sync input among, instead of sending input to all the panes. This helps when we would like some pane to be the monitor of status and other panes run the same command in different directories:

I am also very interested in this feature, When will this feature be released? release plan?

It will be released within a month after someone implements it! We aren’t planning on doing it before version 2.0, however.

@DHowett can you please specify approximately when v2.0 will be released?

@zljubisic Nope, not really. I'd rather ship 2.0 when it's ready, rather than stick to a firm date. We're hoping for end-of-year-ish, but that's a very soft window.

@zadjii-msft This broadcast input is the most needed option for every power user.
If you have to configure several servers at once, you cannot live without it.
I really like windows terminal, but when I have to broadcast input, I have to use terminator.
I cannot figure out why implementing such option is a (big) problem.

 This issue isn't on the first page of issues sorted by 👍, which right now is our best metric for judging the relative importance of issues. Don't worry, we are planning on getting to this, we just have some other commitments we have to finish first.

You want to say that "Add emoji support to Windows Console" is of higher priority? 😁

@zljubisic I serve at the pleasure of the community ☺

😁

@carlos-zamora this is the one I was talking about in team sync

@zadjii-msft
Alright, pulled up my MacBook and played around with iTerm2's broadcast input feature. Here's my findings:

Modes:

(default) Send input to current session only

This is how Windows Terminal works now. You select a pane and any/all input goes to that pane.

*broadcast input to all panes in all tabs

A warning is displayed. See below.
In effect until you toggle it (goes back to default state), or switch states.
Still in effect if you switch tabs (makes sense).

*broadcast input to all panes in current tab

A warning is displayed. See below.
In effect until you toggle it (goes back to default state), or switch states.
The scope of the effect is limited to the tab. So if you switch tabs, the tab you switched to is in its own separate state. If you come back to the first tab, you'll still be in this broadcast input mode.

toggle broadcast input to current session

No warning displayed.
Toggling broadcast input to a terminal session toggles the active pane icon.
Strange interactions with the other modes:

If you're in a different broadcast input mode, then you toggle the input mode for a terminal session specifically, the active pane icons stay on all the other terminals. Instead, the active pane icon is removed from the current terminal session, but (counterintuitively, IMO) all input goes only to the current terminal session. Toggling broadcast input mode for this session again (enabling it), makes all input go to all active panes again.

Miscellaneous notes:

There seem to be three indicators for a terminal session: the active pane icon, a blinking cursor, and a darker background color (in-focus?).
Broadcast input modes mainly update the active pane icons and darker background color for panes that are accepting input.
Interestingly, there's only ever one pane with a blinking cursor on the screen. When the broadcast input mode is exited, focus returns to the pane with the blinking cursor.

Navigating between broadcast input modes

modes

default

option+shift+cmd+I
windows equivalent --> alt+shift+ctrl+I

all panes & all tabs

shift+cmd+I
windows equivalent --> shift+ctrl+I

all panes in current tab

option+cmd+I
windows equivalent --> alt+ctrl+I

toggle input for current session

ctrl+option+shift+cmd+I
windows equivalent --> we don't have enough keys!!!

other invocation methods

You can go to the "Shell" menu item, then down to "Broadcast Input". You'll get a list of things you can do (see image submitted by author).
All four modes of broadcast input have a keybinding (as described above)
You can also right click on a pane and select "Toggle broadcasting input".
Windows Terminal's command palette sounds really useful here to me. I personally would love to have all of these broadcast input things be in a nested command item. Then I can just choose the one I want.
Windows Terminal would greatly benefit from a context menu here for toggling broadcast input to a specific session.

When entering a mode where input is being broadcast to multiple panes (the modes with a * above), the following warning appears.

If some kind of broadcast input mode is enabled, the affected panes get an icon in the top left:

The icon looks like Mac's command button and a cute little apple logo.
iTerm2's documentation on broadcast input mode (from docs site)

Let me know if you have any questions. I can always play with this feature more. :)

@carlos-zamora thanks! Can you check one other thing for me?

The scenario that gets me is like:

Enable broadcast input for a pane in tab 1
switch to tab 2
execute action C to send input to all the panes in the current tab

Does that mean that you're now broadcasting to the pane in tab 1 and all the panes in tab 2? If at this point you:

Switch to tab 3

now who's getting input? All the panes in tab 3? All the panes in tab 2? All the panes in 2, plus that first pane, plus the active pane in 3?

@carlos-zamora thanks! Can you check one other thing for me? From #9222 (comment)

The scenario that gets me is like:

Enable broadcast input for a pane in tab 1
switch to tab 2
execute action C to send input to all the panes in the current tab

Does that mean that you're now broadcasting to the pane in tab 1 and all the panes in tab 2? If at this point you:

Switch to tab 3

now who's getting input? All the panes in tab 3? All the panes in tab 2? All the panes in 2, plus that first pane, plus the active pane in 3?

@zadjii-msft Surprisngly, step 3 removes the "toggle broadcast input" icon (or active pane icon, whatever), from tab 1. You are not only broadcasting input to all panes in tab 2.
If you then do step 4, all input now only goes to your active session in tab 3.
I think this is a bit of what I was saying where your broadcast mode is scoped to the tab unless you are broadcasting input to all panes in all tabs.

Interesting! That's not what I would have expected. Thanks for digging in on all this ☺

I have tried this feature in other terminals and I am really missing it in Windows Terminal :')

I use split planes with Terminator on Linux to broadcast input to all panes within a tab. This is great when I want to login to a bunch of different cloud boxes running the same daemons to check logs, kick services, and do other various things all at once instead of one at a time. I can run it in WSL, but its horribly rendered and I like shiny things on my dual 4K monitors and Windows 11.
Windows Terminal has a lot of potential to convert over engineers currently using Linux and macOS , little features like this that make our lives easier and increase productivity go a long way to making people switch.
Hit me up if I can test any fun dev builds or give more detailed feedback.

I use split planes with Terminator on Linux to broadcast input to all panes within a tab. This is great when I want to login to a bunch of different cloud boxes running the same daemons to check logs, kick services, and do other various things all at once instead of one at a time. I can run it in WSL, but its horribly rendered and I like shiny things on my dual 4K monitors and Windows 11.
Windows Terminal has a lot of potential to convert over engineers currently using Linux and macOS , little features like this that make our lives easier and increase productivity go a long way to making people switch.
Hit me up if I can test any fun dev builds or give more detailed feedback.

The more recent work done to Windows Terminal Preview have been absolutely amazing. But for the love of all things good and holy, please spend some time on supporting broadcast input! Quite frankly, once we have this, I'm pretty much at feature parity with tools like iterm2, and as someone trying to make the switch to PC from a Mac, WSL2 and Windows Terminal have been a game changer.

The spec is in #9365, we just have a lot of other priorities ahead of this one currently. Feedback is welcome there though!

@zadjii-msft IMHO this is one of the most useful features in Terminator/iterm2 for power users that have to do SSH sessions on multiple servers/instances. For me it's one of the most important feature in a good terminal emulator and I guess a lot of people would highly appreciate this feature being implemented rather sooner then later. IMHO it would be sufficient to just "make it work somehow" for now so we don't have to repeat/copy-paste between terminal windows. You could add the fancy stuff like groups etc. in a later release, but if we could have a base version for now that just broadcasts to all panes in the current tab I would be more than happy.

Not using iTerm2 but I'd be very happy with something that just works like Tmux's synchronize-panes feature. Nothing fancy, just send to all panes or not. (https://stackoverflow.com/a/23704472)

On my mac I have a program I wrote that greps systems out of the /etc/hosts, then one by one opens them in tabs in iterm. So with one command I can open all 20 prod systems. Then I can broadcast the input to all 20 systems to perform the task at hand. The first thing I look for in a terminal app is if it can do tabs. Then can I script the opening of those tabs. Then can I broadcast the input to those tabs. Iterm2 is really the reason I run a mac. Apple should be paying these guys.  If Iterm ran on windows, I'd probably switch over to windows.

IMO, this is the one feature Windows Terminal is missing. I'm currently using the Tmux command in WSL to get this. I often setup multiple servers in HA clusters (for example, I'm currently installing a new Artifactory cluster) and the install process is normally 99% the same inputs.

This is very much needed, and this is pretty much the only reason that i'm still using SecureCRT.

Just want to chime in that doing this in an iTerm2/Terminator style where one of the windows is "active" is far better than SecureCRT style where there is a "chat window" that broadcasts later because an active window allows you to  for command-line completion, etc.
Another vote that this is something that is very much needed.

doing this in an iTerm2/Terminator style where one of the windows is "active" is far better than SecureCRT style where there is a "chat window" that broadcasts later

That's exactly how it's spec'd in #9365 😉

Yes, this feature is very much needed!

Looking at Konsole -- you have a choice, either send it to all tabs in the
window, or send it to select. Picking select allows you to select which tab
to send the broadcast to. This would be a good feature to emulate with
terminal.
On Mon, Oct 10, 2022 at 9:12 AM AssenSpassov @.***>
wrote:

I also use tmux on Linux and it has this functionality built-in and it is
quite handy. I have often dreamed to be able to do this with PowerShell
and/or Dos (cmd) sessions though. Another advantage which Terminal could
bring to the table is that maybe because terminal is a UI it would be
possible to select panes with a checkbox and in a layout with e.g. 6
sessions, we select only 4 to be in sync with each other and the other 2
work independently from each other and all the rest, or they sync between
the two of them regardless which one is active. The numbers are arbitrary
and the functionality should be able to work with completely different
division and number of synced pane-groups.
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/terminal/issues/2634#issuecomment-1273294222,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGRIPKD6WYTCGGKT5D6JCLWCQI3XANCNFSM4ISWQJCA
.
You are receiving this because you commented.Message ID:
@.***>

This is definitely needed. Having a suitable iTerm2 replacement is pretty much the only thing keeping my company from switching from macOS to Windows. Seems small to some people but to developers and people that manage hundred of Linux systems, it is pretty much a must have quality of life feature.

I use Terminator inside an Ubuntu Desktop guest instance of VMware Workstation to get this feature. I use the guest instance for other things as well, but this feature is probably one of the main reasons. If Windows Terminal added the ability to do broadcasts to multiple panes and tabs, then that would be great.
I see that this issue was opened 3 years ago. Is it safe to assume this feature is just NOT going to be added? It's almost as if this is of little-to-no priority to the Windows Terminal developers.  I wish there was a way to make them see that it would be a huge gamechanger if the feature was added, but I digress.

I'm sorry if we've given the impression that this feature isn't important. It absolutely is! I wish we had the resources available to us to get to everything the community asks for faster, but alas, we've got to pick and choose our battles.
We have had some progress on this in the past. There's a draft spec in #9365. There was a community PR a while back in #9222, which was quite promising but got a little too into the weeds for its own good. I don't think it's too far away from the finish line, just needs the diligence to polish it off.

is this going to introduce in next update ?

is this going to introduce in next update ?

Nope. This currently isn't assigned to a milestone. Officially, we're still reviewing the spec, but we haven't really bumped that thread in a while. If someone were to come along and try to resurrect #9222, that might force our hand to get our gears in motion. This isn't currently planned for at least a few months.
We'll make sure to update this thread when there's progress. In the meantime, might I recommend the Subscribe button?

That way you'll be notified of any updates to this thread, without needlessly pinging everyone on this thread ☺

Hey just as a feeler for folks following in this thread - How much demand is there for broadcasting to a subset of panes across multiple tabs? e.g.

Tab 1

Pane A
Pane B
Pane C

Tab 2

Pane D
Pane E
Pane F

Are folks looking for the ability to broadcast to [A, E] (for example)?
I'm pretty sure the spec currently covers

Broadcast to any subset of a single tab's panes
Broadcast to all panes in the current tab
Broadcast to all panes in all tabs

but only Proposal 2 in the spec covers "broadcast to multiple panes in multiple different tabs"

Hey just as a feeler for folks following in this thread - How much demand is there for broadcasting to a subset of panes across multiple tabs? e.g.

I could see that functionality being useful. It'd allow me to have a tab with a single pane to work on, but it that blurts it out to the next tab that contains several panes.
For me, the MVP is broadcasting to all panes in a single tab. Anything after that is a bonus.

@zadjii-msft I think the current spec is entirely reasonable and is just about on equal terms with the capabilities of other popular terminal emulators. The second proposal sounds interesting from a flexibility standpoint but I think is ultimately unnecessary. If you want to broadcast to two specific panes there's no reason a user can't just create a new tab with only two panes and do their broadcasting in that tab.
I agree with @AlistairHardy, the important one is broadcasting to all panes in the current tab. I would call this behavior "familiar" and as a productivity feature, familiar is good.

Hey just as a feeler for folks following in this thread - How much demand is there for broadcasting to a subset of panes across multiple tabs?

I would say that having the option to just do all panes in one tab would be worlds better than nothing at all. At least with that method we would be able to control which panes are in the active tab.

If we could just have broadcast to all panes in one tab in v1 it would be great! Then tinker around the edges as you please. :wink:

Are folks looking for the ability to broadcast to [A, E] (for example)?

IMHO, even though other Terminal Emulators support this, it could even be dangerous and unexpected as you broadcast to a session that is not visible to you. Personally, I'd rather open more terminals in the current tab and have all the sessions I broadcast input to in my view.

I'm pretty sure the spec currently covers
* Broadcast to any subset of a single tab's panes

From my point of view this is nice to have but not as important as:

* Broadcast to all panes in the current tab

This should be Version 1.

* Broadcast to all panes in all tabs

IMHO not needed at all.

Hey just as a feeler for folks following in this thread - How much demand is there for broadcasting to a subset of panes across multiple tabs? e.g.
* Tab 1

  * Pane A
  * Pane B
  * Pane C

* Tab 2

  * Pane D
  * Pane E
  * Pane F

Are folks looking for the ability to broadcast to [A, E] (for example)?
I'm pretty sure the spec currently covers
* Broadcast to any subset of a single tab's panes

* Broadcast to all panes in the current tab

* Broadcast to all panes in all tabs

but only Proposal 2 in the spec covers "broadcast to multiple panes in multiple different tabs"

I would be happy with all panes in a single tab or a subset of panes within a tab.  I don't need all panes in all tabs.
A subset in the current tab lets me do what I need -- For example, I could start an upgrade in all panes than pause broadcast to all if a subset fail for the same reason and resolve those failures by broadcasting them if necessary.

This is must have feature, moving from MacOS iTerm2 to windows, and not having this features creates lot of problems when working on multiple machines simultaneously.
Hope to see this feature in near future release.

Any update on this?

It's in PR, which is linked to this thread. I'm hoping to merge it for 1.19. 1.18 was a little too busy to land this one too.

Thanks for the response
On Mon, May 1, 2023 at 4:26 AM Mike Griese @.***> wrote:

It's in PR, which is linked to this thread. I'm hoping to merge it for
1.19. 1.18 was a little too busy to land this one too.
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/terminal/issues/2634#issuecomment-1529604012,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6NWLSWJ7AGDKJHFFQSGYQ3XD6MXTANCNFSM4ISWQJCA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
Lios

I was looking for a similar feature.  Instead of sending a text over all the panes (broadcasting), I want to send a text to a specific pane.  This needs to have a command-line action.  The usecase is to send visually-selected text from Vim in MS Terminal to its adjacent pane.  I found an action called sendInput, but don't know if that be called from the shell.

Interesting! We're not exactly keen today on adding support for wt send-input (or equivalent), on account of how it would trivially allow any application to inject input into any WT instance running at the user's integrity level. I wonder if there's another way to pull off what you're looking for.
(This is somewhat off topic for the "broadcast input" thread, so I'm going to fork it into a discussion if it continues :smile:)

Yea, let's continue the send-input topic over in #9368. Thanks!

Broadcast Input feature is very nice. can we customize it for specific panes not all panes ?

I see this issue is for more than 5ys ago.
But I didn't see it till now (2024)
Have they added it or not?

@mehrdadq8i: Yes, it's in version 1.19. You can enable it from the command palette. DevBlog announcing the preview: https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-19-release
Docs details: https://learn.microsoft.com/en-us/windows/terminal/customize-settings/actions#broadcast-input

Will this feature be implemented for sending the same input across all tabs i.e. not just to panes within a tab or to all panes in a window?


Fix x-forwarded-proto detection

Forwarded-proto detection is currently looking for headers that aren't set - because:

HTTP headers have the prefix HTTP_
php's env variables are underscored, not hyphenated

Related: https://github.com/getsentry/sentry-php/pull/251

Build failure is unrelated, it will be probably fixed in #576. Merging!


Here's Trouble Plugin

Plugin that plays a sound clip/overhead text of someone saying "Here's Trouble" whenever a friend or clanmate comes into view of the player.
This is also my first plugin attempt so if I've done something incorrectly please let me know!

Fixed package name to com.herestrouble.HeresTroublePlugin in plugin repo

Please change your config group to something unique.
I'd also remove the log.info calls to not fill up the user's logs, but that's my own 0.02

Plugin that plays a sound clip/overhead text of someone saying "Here's Trouble"

Do you know who this "someone" is? As we can't distribute a sound file of a person we don't have permission from.

Please change your config group to something unique. I'd also remove the log.info calls to not fill up the user's logs, but that's my own 0.02

Thanks for the callout @YvesW ! Changed the config group as well as removed the log.info calls on start/end

Plugin that plays a sound clip/overhead text of someone saying "Here's Trouble"

Do you know who this "someone" is? As we can't distribute a sound file of a person we don't have permission from.

@Felanbird yes it's a friend of mine who gave me permission verbally to use those clips. What is a valid proof of permission for us to use these sound clips?

@Felanbird yes it's a friend of mine who gave me permission verbally to use those clips. What is a valid proof of permission for us to use these sound clips?

Sorry for the late reply, a sound clip of your friend saying you have his permission to use his voice for a Runelite plugin would likely suffice.

@Felanbird yes it's a friend of mine who gave me permission verbally to use those clips. What is a valid proof of permission for us to use these sound clips?

Sorry for the late reply, a sound clip of your friend saying you have his permission to use his voice for a Runelite plugin would likely suffice.

Sounds good! Will reply with that shortly

@Felanbird attached is the recording my friend Ed (the voice of Here's Trouble) sent me for permission. If we need to discuss further with him he doesn't have a github, but he has discord and could reply to questions there
https://github.com/runelite/plugin-hub/assets/32687206/58c69ca5-4006-4fb8-8534-9a5252de8b65


"export 'default' (imported as 'TestStore') was not found in 'TestStore'

I have following scenario
I have one store for example TestStore.js
TestStore.js:
function TestStore() {
async function NestedAsyncFunction(){
/* Logic*/
}
}
module.export=TestStore()
Now i am using this store in my component like this
TestComponents.jsx:
import TestStore from 'TestStore';
I am getting following error
TestComponents.jsx
44:26-37 "export 'default' (imported as 'TestStore') was not found in 'TestStore'

You are not importing, using, nor referencing reactstrap