Fix staticcheck issues

Hi!
After running staticcheck on the project, it funds a few errors:
Deprecated

internal/tokenutil/tokenutil.go:16:19: jwt.StandardClaims is deprecated: Use RegisteredClaims instead for a forward-compatible way to access registered claims in a struct.  (SA1019)
internal/tokenutil/tokenutil.go:31:19: jwt.StandardClaims is deprecated: Use RegisteredClaims instead for a forward-compatible way to access registered claims in a struct.  (SA1019)

Unused

mongo/mongo.go:76:6: type nullawareDecoder is unused (U1000)
mongo/mongo.go:81:28: func (*nullawareDecoder).DecodeValue is unused (U1000)

Formatting

internal/tokenutil/tokenutil.go:46:16: error strings should not be capitalized (ST1005)
internal/tokenutil/tokenutil.go:59:16: error strings should not be capitalized (ST1005)
internal/tokenutil/tokenutil.go:71:14: error strings should not be capitalized (ST1005)

This PR will fix them, hopefully :)

Thanks for this PR, I shall review, test everything and then proceed.

This PR should be approved!


Smartypants isn’t too smart about quotes

In words like don't and 'cause the straight quote should be converted to an apostrophe (right single curly quote).
Right now in a sentence like I won't do it 'cause I don't want to. the first ' gets converted to a left single quote, the second one to a right single quote and the third is unchanged which is wrong.

Update: Since #178, that sample sentence now translates to I won’t do it ‘cause I don’t want to.  So it's correct in the middle of a word, but incorrect in 'cause.
Relatedly, I came here to report that [JavaScript](https://en.wikipedia.org/wiki/JavaScript)'s formats into JavaScript‘s which is also the wrong apostrophe.  I'm not quite sure why, given the current regex... is it being treated as at the beginning of line in this case?

I see this in a lot of editors and renderers...even MS Word and Apple Pages I have to open the glyph selector to do that. Only online editor I've seen get it right is Medium.
#27
Closing as stale and merged.


Nesting forms, complex data structures

I was wondering if there is a possibility of nesting forms to create complex data structures or if there is an easy way to implement that?
If the Form itself would implement the same interface as the Form element, we could nest them indefinitely and create complex hierarchical data structures with validation. Or maybe creating a special Input field is the way to go...
I tried around a little bit with creating my own Input element with sub elements, but that does not work because I don't have access to the validation rules in an external component.
For now I created a mapping function which can handle names like entity[property] and returns the value correctly, but that is not as nice, because all the nodes have to be inside the main form component. Also I cannot add validation rules and a sub form, like when I want to make a complete address required.
When trying to create reusable form partials I get the error:
Uncaught Error: Form Mixin requires component to be nested in a Form
I was thinking about something like that (simplified draft):
First create reusable form:
var AddressForm = React.createClass({
[...]
render: function(){
    return (
        <Formsy.Form {...this.props}>
             <input name="street"/>
             <input name="zip"/>
             <input name="city"/>
        </Formsy.Form>
    );
}
});

And then reuse that form as a field:
 <Formsy.Form>
   <input name="name"/>
   <input name="otherProperty"/>
   <AddressForm name="address"/>
</Formsy.Form>

Basically what I am trying to get from the form as a value is a complex data structure like that:
{
    name: 'Someclient',
    otherProperty: 123,
    address: {
        street: 'xyz',
        zip: 'xyz',
        city: 'xyz'
    }
}

Any thoughts on what's the best way to approach that? I think it would be a really great feature, I'd be happy to help implementing.

Nice! that would be very handy.
The other thing that might also work is keypaths so the input name describes the data structure.
<input name="address.street"/>
Both approaches would be very handy in different situations.

I like this idea, but #121 and this are separate issues.

Hi guys and thanks for the discussion!
When React 0.14 is out, with the new context handling I think we could do something like this
var AddressForm = React.createClass({
[...]
render: function(){
    return (
        <Formsy.Form {...this.props}>
             <input name="street"/>
             <input name="zip"/>
             <input name="city"/>
        </Formsy.Form>
    );
}
});

 <Formsy.Form>
   <input name="name"/>
   <input name="otherProperty"/>
   <AddressForm name="address" extended/>
</Formsy.Form>

So the idea here is that the extended prop would be passed into the sub Formsy.Form, causing Formsy to return a plain DIV instead of a FORM. That way you could easily include forms in forms. But we depend on the context change to make the sub elements work I believe. I will do some tests tomorrow to verify if current context implementation can make things a bit easier for us.
But would this useful?

@christianalfoni taht sounds good, for now I'm just using #121 to refer to each nested structure, but it would be nice to have some sort of simple context change so I could just say 'everything below here assumes this context by default' kind of like Handlebars.js's with thing

Here's my quick hack to get nesting working that transforms . paths. It's very quick so probably needs some optimizations before inclusion. If you want I can polish it and create a PR.
    for (let k in model) {
      if (k.indexOf(".") >= 0) {
        let parts = k.split(".")
        let cur = model
        for (let part of parts.slice(0, -1)) {
          if (cur[part] === undefined) {
            cur[part] = {}
          }
          cur = cur[part]
        }
        cur[parts[parts.length-1]] = model[k]
        delete model[k]
      }
    }

Thank @ntucker !
@christianalfoni can you please look at it? nesting forms are really useful in many many scenario...

Cool, let me put this in on release today. Getting to work now :-)

FYI: trying to figure out how to work with arrays now. My sample code doesn't work with them currently, though I'm not sure this library is built for it at all given you can't hold state externally.

Here is a mapping function I wrote to support object and array values. It has a dependency on lodash atm.
Not tested much yet, but could be used as an idea:
    /**
     * Maps the input values into a complex object
     * Notation for value names:
     *
     * myobject[property]
     * myobject[test][] -> array value
     * myobject[nestedobject][otherproperty]
     *
     * @param {Array} inputs
     * @return {Object}
     */
    mapInputsToValue: function(inputs){
        var values = {};
        _.each(inputs, function(value, key){
            var currentIndex = 0;
            var objectPath = [];
            // Iterate through the whole part of the obejct
            var foundPosition = key.indexOf(']', currentIndex);

            // We have simple value
            if (foundPosition === -1){
                values[key] = value;
            } else {
                // Add complex object
                var openingBracket = key.indexOf('[');
                if (openingBracket <= 0){
                    throw new Error('Invalid name for input field: ' + key);
                } else {
                    objectPath.push(key.substring(0, openingBracket));
                }

                // We have object property
                while (foundPosition !== -1){
                    // Get current attribute name
                    var attributeName = _.last(key.substring(0, foundPosition).split('['));
                    objectPath.push(attributeName);

                    foundPosition = key.indexOf(']', foundPosition + 1);
                }

                // Get object property
                var obj = values;
                for (var i = 0; i < objectPath.length - 1; i++) {
                    var n = objectPath[i];
                    if (n in obj) {
                        obj = obj[n];
                    } else {
                        obj[n] = {};
                        obj = obj[n];
                    }
                }
                obj[objectPath[objectPath.length - 1]] = value;
            }
        });
        return values;
    }

There are a few node modules that do this already. Maybe they might be
useful?
https://www.npmjs.com/package/key-path
On 22 May 2015 at 21:49, ivome<EMAIL_ADDRESS>wrote:

Here is a mapping function I wrote to support object and array values. It
has a dependency on lodash atm.
Not tested much yet, but could be used as an idea:
/**     * Maps the input values into a complex object     * Notation for value names:     *     * myobject[property]     * myobject[test][] -> array value     * myobject[nestedobject][otherproperty]     *     * @param {Array} inputs     * @return {Object}     */
mapInputsToValue: function(inputs){
    var values = {};
    _.each(inputs, function(value, key){
        var currentIndex = 0;
        var objectPath = [];
        // Iterate through the whole part of the obejct
        var foundPosition = key.indexOf(']', currentIndex);

        // We have simple value
        if (foundPosition === -1){
            values[key] = value;
        } else {
            // Add complex object
            var openingBracket = key.indexOf('[');
            if (openingBracket <= 0){
                throw new Error('Invalid name for input field: ' + key);
            } else {
                objectPath.push(key.substring(0, openingBracket));
            }

            // We have object property
            while (foundPosition !== -1){
                // Get current attribute name
                var attributeName = _.last(key.substring(0, foundPosition).split('['));
                objectPath.push(attributeName);

                foundPosition = key.indexOf(']', foundPosition + 1);
            }

            // Get object property
            var obj = values;
            for (var i = 0; i < objectPath.length - 1; i++) {
                var n = objectPath[i];
                if (n in obj) {
                    obj = obj[n];
                } else {
                    obj[n] = {};
                    obj = obj[n];
                }
            }
            obj[objectPath[objectPath.length - 1]] = value;
        }
    });
    return values;
}

—
Reply to this email directly or view it on GitHub
https://github.com/christianalfoni/formsy-react/issues/120#issuecomment-104641730
.

Hi guys,
Are you referring to using other string values? Have now implemented:
<input name="address.street"/> => {address: { street: 'value' } }

This is the code btw:
      return Object.keys(this.model).reduce(function (mappedModel, key) {

        var keyArray = key.split('.');
        while (keyArray.length) {
          mappedModel[keyArray.shift()] = keyArray.length ? {} : this.model[key];
        }

        return mappedModel;

      }.bind(this), {});

Just closing it for now as any more complex implementation has to be next version. Want to get new version out today :-)

this won't work on arrays I don't think

But how could it be an array? <MyInput name=""/> it is always a string?

The structure could be an array, and y ou need to refer to that in name.
i.e.,
{nav_items: [{a:b, c:d}, {a:f, c:g}]}
PS) This doesn't seem to be called with onChange event? currentValues seesm unaltered

Sorry, but I do not understand how the name of an input could lead to that structure? As I understand this you want to do this:
<Formsy.Form>
  <MyInput name="foo"/>
  <MyInput name="address.street"/>
  <MyInput name="address.postCode"/>
</Formsy.Form>

Which leads to this structure:
{
  foo: 'value',
  address: {
    street: 'value',
    postCode: 'value'
  }
}

How would you structure the inputs to give a structure that would require arrays?

That's exactly my point. This doesn't allow working with a very common use case. Even tcomb-form has built in list support ableit with a terrible UI and convoluted api.

Please describe "list support". I do not understand what a "list" is in regards of naming an input? Would be great with an example of a FORM and how that translates to:
{nav_items: [{a:b, c:d}, {a:f, c:g}]}

How does this form look like?

http://gcanti.github.io/resources/tcomb-form/playground/playground.html select 'lists' in the dropdown on the left

I suggest for Array structures:
Multiple inputs with the same name are supported - their extracted data will always be contained in an Array when they have some submittable data, with the exception of a group of radio buttons all having the same name, which will return the selected value only.

I'd like to add my voice on the array issue.
The syntax could be something like this:
< MyInput name="addresses[0]" value="123 Some Street" />
< MyInput name="addresses[1]" value="456 Different Street" />

So right now that results in this kind of data:
{
    "addresses[0]": "123 Some Street",
    "addresses[1]": "456 Different Street"
}

It would be better if it added the data as an array like this:
{"addresses":["123 Some Street","456 Different Street"]}

And of course the primary use case for something like this would be to add a series of objects to an array with something like this:
< MyInput name={"addresses[" + index + "]"} />

It isn't the most convenient syntax to write in this case, so maybe there is a better way of writing it. But that's my idea for how this could be implemented.

Upon further research, it looks like the jQuery ajax function I am using to post data to the server expects associative data and parses it into a hierarchical JSON object.
The syntax is like this:
< MyInput name="addresses[0][street]" value="Some Street"/>
< MyInput name="addresses[1][street]" value="Different Street"/>

which resolves to:
{
    addresses:
        ["street": "123 Some Street",
        "street": "456 Different Street"]
}

Hopefully this is helpful to those trying to get hierarchical forms working with arrays - and possibly the development of this project.

Hi guys,
sorry for late reply. I think it makes sense to conform the name syntax to application/x-www-form-urlencoded type of data, which is like you describe @chrbala.
Tried finding a good lib for this, but there does not seem to exist any? But we can sure build it. So does everybody feel comfortable with:
< MyInput name="addresses[0][street]" value="Some Street"/>
< MyInput name="addresses[1][street]" value="Different Street"/>

{
    addresses:
        ["street": "123 Some Street",
        "street": "456 Different Street"]
}

Do you mean?
< MyInput name="addresses[0][street]" value="Some Street"/>
< MyInput name="addresses[1][street]" value="Different Street"/>

{
    addresses:
        [{"street": "123 Some Street"},
        {"street": "456 Different Street"}]
}

Yes, sorry, of course. Copy/paste error :-)

Ah, yeah, I did mean that. I edited my above post to reflect that.

me too,heh

I'm dealing w/ the same data structure for nested objects (rails api). I built a Formsy form that handles formatting of the data quite well. The following is not pretty, nor well-tested, but it handles nested objects (at least one-level deep) just fine, and minimizes the amount of boilerplate you have to write.
My lib:
var React = require('react')
var Formsy = require('formsy-react');

export class FormFor extends React.Component {

  constructor(props) {
    super(props)
    this.formatChild = this.formatChild.bind(this)
  }

  formatChild(child) {
    if (typeof child == 'string') {
      return child
    }

    let entityName = this.props.entity

    if (child.props.fields_for) {
      child.props.entity = this.props.entity
      return child
    }
    if (!_.isEmpty(child.props.name)) {
      child.props.field_name = child.props.name
      if (child.props.name.match(/[\d*]/g)) {
        child.props.name = [entityName, child.props.name].join('')
      } else {
        child.props.name = [entityName, '[', child.props.name, ']'].join('')
      }
    }
    if (child.props.children) {
      child.props.children = React.Children.map(child.props.children, this.formatChild)
    }
    return child
  }

  render() {
    let children = React.Children.map( this.props.children, this.formatChild )
    return (
      <Formsy.Form {...this.props}>
        { children }
      </Formsy.Form>
    )
  }

}

And then in your render method:
        <FormFor
          entity="patient"
          onValidSubmit={this.submit.bind(this)}
          onValid={this.enableButton.bind(this)}
          onInvalid={this.disableButton.bind(this)}>
                  <TextInput
                    wrapperClass="col-md-3"
                    name="first_name"
                    label="First name:"
                    value={ this.props.patient.first_name }
                    required />
     </FormFor>

A nested object component might look like so:
import { attributesPrefixer } from 'helpers/forms_helper'
var HiddenInput = require('components/ui/forms/hidden_input_component')
var TextInput = require('components/ui/forms/text_input_component')
var CheckboxInput = require('components/ui/forms/checkbox_input_component')
var classNames = require('classnames')

function patientPhoneNumberFieldsTemplate(field_group,i) {

  function handleRemove(i,event) {
    event.preventDefault()
    Vanda.flux.getActions('CaseManagerPatient').removePhoneNumber(i)
  }

  function prefixer(index,name) {
    return attributesPrefixer('phone_numbers', index, name)
  }

  let classes = classNames({
    'row': true,
    'inset-row': true,
    'hide': field_group.mark_for_destroy
  })

  return (
    <div className={classes} key={i}>
      <TextInput
        wrapperClass="col-md-3"
        name={ prefixer(i,'title') }
        label="Title:"
        placeholder="Mobile, Work, etc."
        value={ field_group.title } />

      <TextInput
        wrapperClass="col-md-3"
        name={ prefixer(i,'value') }
        label="Number:"
        value={ field_group.value } />

      <CheckboxInput
        wrapperClass="col-md-3"
        name={ prefixer(i, 'is_primary') }
        label="Primary number:"
        value={ field_group.is_primary } />

      <HiddenInput
        name={ prefixer(i, 'id') }
        value={ field_group.id } />

      <button className="btn btn-danger" onClick={ handleRemove.bind(null,i) }>Remove</button>
    </div>
  )
}

export function patientPhoneNumberFields(fields) {
  let fields = fields.map( patientPhoneNumberFieldsTemplate )

  return (
    { fields }
  )
}

And that super-handy attributesPrefixer up there looks like this:
  attributesPrefixer(attributes_name,index,name) {
    return '[' + attributes_name + '_attributes][' + index + '][' + name + ']'
  },

THE PAYOFF
You get the naming convention you need to submit the form:
<input name="patient[first_name]" type="text" class="form-control" value="Testing" data-reactid=".0.$=11:<IP_ADDRESS>.1.$=1$=010=20:0.$=1$=011=20:0.$=1$=010=20:0.1:0">

Some nested inputs, out of context:
<input name="patient[addresses_attributes][0][id]" type="hidden" value="81822" data-reactid=".0.$=11:<IP_ADDRESS>.1.$=1$=010=20:0.$=1$=015=20:0.$=1$=011=02$fields=020=02$0=2$0:$0.$=1$=011=20:0">

<input name="patient[addresses_attributes][0][title]" type="text" class="form-control" placeholder="Home, Work, etc." value="23" data-reactid=".0.$=11:<IP_ADDRESS>.1.$=1$=010=20:0.$=1$=015=20:0.$=1$=011=02$fields=020=02$0=2$0:$0.$=1$=012=20:0.$=1$=010=20:0.1:0">

<input name="patient[addresses_attributes][0][city]" type="text" class="form-control" value="mala" data-reactid=".0.$=11:<IP_ADDRESS>.1.$=1$=010=20:0.$=1$=015=20:0.$=1$=011=02$fields=020=02$0=2$0:$0.$=1$=014=20:0.$=1$=010=20:0.1:0">

Etc.
Again, suits my needs, is not a solution, but maybe this helps. Happy to answer questions.

Okay, this is now implemented, using the separate project: https://github.com/christianalfoni/form-data-to-object. Using it as a hard dependency as it is unlikely you need it for something else...

Sorry, I am not sure if this was addressed in this issue but can I now do something like this to take advantage of "sub-validation"?
var AddressForm = React.createClass({
[...]
addValidAddress:function(){
   const value = this.getValue();
   value.push(this.model());
   this.setValue(value);
}
render: function(){
    return (
        <Formsy.Form {...this.props} onValidSubmit={::this.addValidAddress}>
             <input name="street"/>
             <input name="zip"/>
             <input name="city"/>
        </Formsy.Form>
    );
}
});
 <Formsy.Form>
   <input name="name"/>
   <input name="otherProperty"/>
   <AddressForm name="address"/>
</Formsy.Form>

@dsteinbach you can not nesting forms:
http://www.w3.org/TR/2011/WD-html5-20110525/forms.html#the-form-element

Content model:
Flow content, but with no form element descendants.

@Semigradsky Nested form could be displayed as div, then we could check whether part of a form is valid or not - this functionality is present in many form libraries, including Angular and Redux Form and it is implemented without any violation of HTML5 spec.


netdb: When set a dns nameserver which already exists, retrun OK

Summary
We consider the setting successful when the nameserver we set already exists.
Impact
If the nameserver is exists, when we set the nameserver,  return OK, not the -EEXIST.
Testing
Use the netlib_set_ipv6dnsaddr interface to set the same dns nameserver twice or more,
we will always get OK.

Seems ok to me! Just a question: how to fix the issue when the resolve.conf is with incorrect DNS and that function returns -EEXIST ?

Seems ok to me! Just a question: how to fix the issue when the resolve.conf is with incorrect DNS and that function returns -EEXIST ?

-EEXIT is returned by dns_check_nameserver:
https://github.com/apache/nuttx/pull/10894/files#diff-f7e175a6df47260b6555d76db0be18df75e63880f73f620d1a6a54b3cb52196eL98
dns_foreach_nameserver doesn't check the duplication.


Propagate proxy environment variables into project clone container

What does this PR do?
Propagate proxy settings into the project clone container
What issues does this PR fix or reference?
Closes https://github.com/devfile/devworkspace-operator/issues/1066
Is it tested? How?
Test that any proxy settings are propagated into the project-clone container, and that cloning a project works correctly with a proxy configured.
PR Checklist

[ ] E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)

[ ] v8-devworkspace-operator-e2e: DevWorkspace e2e test
[ ] v8-che-happy-path: Happy path for verification integration with Che

/retest


Unable to fetch key vault values through azure app config in spring boot app.

Issue Desc
We need to fetch key vault secret values provided as a key reference in azure app config
We are able to fetch values present in app config but not the key references to key vault  secrets.
Platform :
Spring boot
OS : windows (running app locally)
eclipse
java 1.8
Setup instructions followed:

https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-spring-boot
https://github.com/saragluna/demo-appconfiguration-kv

dependencies :

com.microsoft.azure
azure-keyvault-secrets-spring-boot-starter
2.3.2
runtime

com.microsoft.azure
spring-cloud-azure-appconfiguration-config-web

1.2.7

com.azure
azure-core

bootstrap.properties  in resource folder
Values are provided as vm arguments at startup time.
spring.cloud.azure.appconfiguration.stores[0].connection-string=${endpoint app config}
azure.keyvault.enabled=true
azure.keyvault.uri=${key vault url}
azure.keyvault.client-id=${service principal client-id}
azure.keyvault.client-key=${service principal secret key}
azure.keyvault.tenant-id=${service principal tenant-id}
Exceptions trace :
java.lang.RuntimeException: Max retries 3 times exceeded. Error Details: connect timed out
at com.azure.core.http.policy.RetryPolicy.lambda$attemptAsync$1(RetryPolicy.java:119) ~[azure-core-1.6.0.jar:na]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:88) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:165) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:165) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:185) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:251) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:251) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:251) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onError(FluxPeekFuseable.java:545) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onError(FluxPeekFuseable.java:545) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.Operators.error(Operators.java:196) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:134) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoSingle$SingleSubscriber.onComplete(MonoSingle.java:171) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2346) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribeInner(MonoFlatMapMany.java:143) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:182) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:162) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:156) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:431) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:514) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at reactor.netty.resources.PooledConnectionProvider$DisposableAcquire.onStateChange(PooledConnectionProvider.java:536) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at reactor.netty.resources.PooledConnectionProvider$PooledConnection.onStateChange(PooledConnectionProvider.java:427) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:562) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:96) ~[reactor-netty-0.9.8.RELEASE.jar:0.9.8.RELEASE]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:425) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1518) ~[netty-handler-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1279) ~[netty-handler-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1316) ~[netty-handler-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.50.Final.jar:4.1.50.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.50.Final.jar:4.1.50.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.50.Final.jar:4.1.50.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.50.Final.jar:4.1.50.Final]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_252]
Suppressed: java.lang.Exception: #block terminated with an error
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:139) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.Mono.block(Mono.java:1703) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at com.microsoft.azure.spring.cloud.config.stores.KeyVaultClient.getSecret(KeyVaultClient.java:98) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at com.microsoft.azure.spring.cloud.config.AppConfigurationPropertySource.getKeyVaultEntry(AppConfigurationPropertySource.java:180) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at com.microsoft.azure.spring.cloud.config.AppConfigurationPropertySource.initProperties(AppConfigurationPropertySource.java:131) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at com.microsoft.azure.spring.cloud.config.AppConfigurationPropertySourceLocator.create(AppConfigurationPropertySourceLocator.java:222) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at com.microsoft.azure.spring.cloud.config.AppConfigurationPropertySourceLocator.addPropertySource(AppConfigurationPropertySourceLocator.java:150) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at com.microsoft.azure.spring.cloud.config.AppConfigurationPropertySourceLocator.locate(AppConfigurationPropertySourceLocator.java:101) ~[spring-cloud-azure-appconfiguration-config-1.2.7.jar:1.2.7]
at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:98) ~[spring-cloud-context-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at com.kcc.control_tower.Application.main(Application.java:39) [classes/:na]
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_252]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_252]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_252]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_252]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_252]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_252]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_252]
at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_252]
at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_252]
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[na:1.8.0_252]
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[na:1.8.0_252]
at sun.net.www.http.HttpClient.(HttpClient.java:242) ~[na:1.8.0_252]
at sun.net.www.http.HttpClient.New(HttpClient.java:339) ~[na:1.8.0_252]
at sun.net.www.http.HttpClient.New(HttpClient.java:357) ~[na:1.8.0_252]
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226) ~[na:1.8.0_252]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162) ~[na:1.8.0_252]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) ~[na:1.8.0_252]
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990) ~[na:1.8.0_252]
at com.azure.identity.implementation.IdentityClient.lambda$checkIMDSAvailable$14(IdentityClient.java:462) ~[azure-identity-1.0.4.jar:na]
at reactor.core.publisher.MonoCallable.call(MonoCallable.java:91) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:126) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE]
... 55 common frames omitted

@oceansv It looks like your setup to use the key vault library, but not key vault with App Configuration. App Configuration doesn't depend on that key vault library for authentication. Please see: https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-spring-boot which uses Environment Variables for authentication or see https://github.com/microsoft/spring-cloud-azure/tree/master/spring-cloud-azure-starters/spring-cloud-starter-azure-appconfiguration-config#client-builder-customization for using other authentication methods.

@mrm9084  I started with approach only but was getting , exception java.lang.IllegalArgumentException: More than 1 Conncetion method was set for connecting to App Configuration. at....  .Also  mentioned in the second comment of thread : https://github.com/Azure/AppConfiguration/issues/306. In this thread as per the suggestion by "sarlguna"  and sample code  https://github.com/saragluna/demo-appconfiguration-kv. I changed it the  approach u are seeing

@oceansv That is because if you are using the service principle then you don't need the connection string. Change
spring.cloud.azure.appconfiguration.stores[0].connection-string=${endpoint app config}

to be
spring.cloud.azure.appconfiguration.stores[0].endpoint=<Your Endpoint>

see step 2. https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-spring-boot#update-your-code-to-use-a-key-vault-reference

@mrm9084  My bad. Thanks, that was helpful. Just some side questions before closing it if u can help me  1) approach used in tutorial , secret, client id, tenantid , endpoint these are need to be provided as vm argument to the app?  2) This approach is suppose ca be used in prod?  As mentioned in https://docs.microsoft.com/en-us/azure/key-vault/general/authentication instead of secret key , certificate approach is to be used in prod , is that is the case do we have some spring boot examples with certificate approach.

@oceansv

That is the only default approach without using any code. If you use this https://github.com/microsoft/spring-cloud-azure/tree/master/spring-cloud-azure-starters/spring-cloud-starter-azure-appconfiguration-config#client-builder-customization you can use any authentication method you want.
There are no examples, but if you want to use a certificate use the client builder and build using a ClientCertificateCredential. See: https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/identity/azure-identity#key-concepts for supported methods.

@mrm9084 Just noticed , that when secret (value)is getting changed it is not reflecting in the app until some value in app config is not changed with this approach . Is this expected?

@oceansv Yes, the client side only knows about the reference value, so we will never know the value or if it changed. We suggest the used of a watch key, which can be configured. This will allow you to update multiple values and then allow the refresh to be triggered. This could stop a case of a partially updated configuration.

@mrm9084 Please correct me if my understanding is correct or not 1) client only monitor the changes at app config values , so any changes happened at the key vault values cant be tracked and there is no way of tracking them and get reflected in app? 2)  if any change happens at key vault all the values are retrieved including key vault values (so this time will get latest version) 3) By default how does client fetch the changes does it poll with regular interval?

The client monitors the etag value in the config store, as that isn't changing when a key vault item is updated no update will happen locally.
Not sure one you mean by this. If any changes in noticed by the client, then all key vault values will be updated that are in the Spring Refresh scope.
At present we poll to see if a value is changed by looking at the latest etag value. By default this is every 30s which is configurable. We we detect any change a refresh event will be triggered in Spring. We will be releasing a push refresh method soon, it is currently in the SNAPSHOT version. NOTE: This currently only supports single instance applications. It will be updated to work across multiple instances but we are still ironing that out. Also note the SNAPSHOT version has many breaking changes planed for a larger release.

@mrm9084  Does App Config retrieval is the first things happens when spring boot starts.  I mean i need to create a spring component or configuration only when a property has value true.  eg @ConditionalOnExpression(value = "${module.enabled} and ${module.submodule.enabled}"), but this will expect the properties retieved from azure app config is present n spring boot environment before this  component (where condition is placed) is evaluated. So my question is 1) properties retrieval and getting placed in environment is first thing happens when project starts , this behavior will remain consistent   in upcoming client library as well?

@oceansv

The configuration library pulls in configuration during the spring boot startup period. In all cases I have seen we load before @Conditionals besides there own even in other dependency libraries. This will stay true in future libraries.
This is planed to be changed in the next major release where we are planning on moving it to the store level. Though we can take input on that at this time. Example:

spring.cloud.azure.appconfiguration.stores[0].enabled=false

Sort of. What causes a refresh is a Spring refresh event. This reloads all configurations and generates new refreshable bean objects. You could use an ApplicationListener to listen for the event, but this will just tell you that it is triggered not that the new configurations are loaded. Depending on what you are trying to accomplish you could modify a set method in one of your configurations to do something besides just setting the configuration, but that is a little hacky.

Happy to answer any questions you have.

@mrm9084  I was facing issue with properties refresh i have tried to summarize the whole issue in new thread .
https://github.com/Azure/AppConfiguration/issues/384

@oceansv are you good with closing this issue and continuing the conversation in the new issue.

@mrm9084 Yes thanks for the help in this thread


Add 'Check amalgamation' workflow

Add a workflow that checks if the sources have been amalgamated and leaves a comment directing to the Contribution Guidelines if they are not.

Coverage remained the same at 100.0% when pulling 36023cd4f5e38657ce8b17fe294cd527b753c07f on falbrechtskirchinger:check-amlgamation into a92ccafd2c7709243451e947a21ad08203273483 on nlohmann:develop.

@nlohmann The check_amalgamation.yml workflow should be excluded from the required checks for merging and enabled for first-time contributors.
We still need ci_test_amalgamation, which can be updated in a PR, where this workflow cannot.

@nlohmann After the pending PR touching workflows and cmake/ci.cmake, I'd like to convert some of the code duplicated in Makefiles/CMake/workflows into CMake scripts (i.e., cmake -P).
Meanwhile, this is ready to be reviewed and merged. Additional GitHub setting changes are required to make this work as intended (see https://github.com/nlohmann/json/pull/3693#issuecomment-1210242057).


[Select] Menu is moving to the right side in a drawer

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
The open menu should touch the select and should not move to the right side.
Current Behavior 😯
If I use the property container on the Select Component, then the open Menu moves to an complete different place, if this menu is open.
I need to use the container property, because the select is used in a ClickAwayListener-Container.
Steps to Reproduce 🕹
Take a look at this sandbox to reproduce the issue. You can open the chrome debugger tool verify the issue. The complete checkbox gets moved out of the drawer and the open menu will be displayed.
https://codesandbox.io/s/eager-visvesvaraya-nwtt1

Tech
Version

Material-UI
see Codesandbox

React
latest

Browser
latest Chrome

@oliviertassinari Do you have an idea how to fix it? :)

Did you try the disablePortal prop or the onClose callback instead of changing the container?

@oliviertassinari yes, I already tried it :/
I think I cannot always use container={this}. I just can use it in a ClickAwayListener context and if I am not in a ClickAwayListener context, then I have to unset the container to default.

As you can see in this sandbox: https://codesandbox.io/s/et2q4

@ffjanhoeck Thanks for the reproduction. Do you have an idea of what's wrong? (I won't have time to look into this problem)

Hmm, the first reproduction seems to work for me

@joshwooding You are right :o But I don't know why, I didn't changed anything :D

@joshwooding But great to see, that the other codesandbox has a working example :D

Could it be an update of the library that fixed it? What should we do here? Your use case sounds too advanced to justify us diving into the problem. Could you share the context in more detail? What's your inital objective?

I'm closing.


Issue #46 Populate inventory data

Issue #46
In this pull request, I wrote a python script that I placed under django_server folder that is triggered one time once the server runs. The file is triggered from the file  django_server/urls.py because this file is initialized once when the server starts.
Along with the file in the same directory, i inserted the CSV containing the dummyData.
This pyscript will be responsible of:

Creating a connection to the db using pymongo
Creating a collection that will hold the data populated from the csv which is named with what django refers to in the format of "appname_modelname" so its "inventory_item_item" (This is what django would have called it if we generated it using "python manage.py migrate".
So in order to later create views that will interact with it we must respect this convention.

On top of that I created an app called inventory_item responsible of holding the operations that we do on the items:

I created an API endpoint responsible for retrieving the items
For now i'm returning all the fields but this can be modified upon request because it is not yet clear what we want to return to the user

Codecov Report

Merging #156 (e1666b4) into master (e26c847) will increase coverage by 0.39%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #156      +/-   ##
==========================================
+ Coverage   96.88%   97.27%   +0.39%
==========================================
  Files          14       21       +7
  Lines         417      477      +60
==========================================
+ Hits          404      464      +60
  Misses         13       13

Impacted Files
Coverage Δ

server/inventory_item/admin.py
100.00% <100.00%> (ø)

server/inventory_item/migrations/0001_initial.py
100.00% <100.00%> (ø)

server/inventory_item/models.py
100.00% <100.00%> (ø)

server/inventory_item/serializers.py
100.00% <100.00%> (ø)

server/inventory_item/tests.py
100.00% <100.00%> (ø)

server/inventory_item/urls.py
100.00% <100.00%> (ø)

server/inventory_item/views.py
100.00% <100.00%> (ø)

... and 4 more

Continue to review full report at Codecov.

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

Everything looks good, but weren't we planning to do have the model be dynamic depending on what the collection contains in the DB?


Decode transaction preview

What is this feature about? (1 sentence)
This will display decoded transaction info when interacting with contracts, including interaction with Safe apps.
Why is it needed? What is the value? For whom do we build it?

This is directly connected to the problem area "No decoded transaction details when creating a transaction" on our roadmap. It was identified as top priority.
As a user, I want to know what a Safe Transaction does, before initiating it so that I don't sign anything wrong.
Currently we only decode transaction information for transactions in the transaction list and when triggering a custom transaction via ABI.

When initiating Safe App interactions, tx data is displayed in encoded form only.

High-level overview of the feature

Decode transaction information in the transaction preview modals, including the ones for the Safe app.
There is a lot of custom logic for decoding transactions. It probably makes sense to let the backend handle that.
Let's limit complexity by e.g. not decoding nested Multisends but rather just 1 level.

Misc

Oct 1, Tobi: Update entire epic description
Oct 30, Tobi: Update title and text after learning this applies not only to Safe app txs
Kick off doc: https://docs.google.com/document/d/1G4AttQUc8nlWimfqiVLqdozpnZ3tljVzwt32yzFU7Fg/edit#

I think none of the Safe apps does just a simple ERC20 token transfer, if I'm not mistaken. Only if you add a transfer call via the tx builder.
What a lot of Safe apps do though is first calling ERC20 approve - so I think that would be better suited as a first step.

To decode all contract interactions where backend has the ABI, we need a new backend endpoint

@Uxio0 do you think is it possible to expose in a new endpoint the logic you are using to decode TXs?
So I could consume that endpoint with the array of TX a Safe-App want to send.

@nicosampler I could expose the ABIs, but there's a lot of custom logic for decoding (multisend, nested transactions...).

 Decode transaction data during tx creation flow (Safe Apps / Contract interactions)

 Decode transaction data during tx creation flow (Safe Apps / Contract interactions)

The first layout option would be to divide the popup into 2 columns and show selected transaction decoding in the right column.

When there are many transactions this part should scroll:

The second option is to only show the number of transactions, all details are hidden into a separate view, you can open them one by one.

+1 to option 1

IMO I prefer the second option, it will be also scrollable right?

Thanks for the proposals!
Here are my thoughts:
Option 1:

I like that bigger modal
I think we don't take advantage of that bigger modal since the decoded data is quite cramped on the side.
Also, currently the act that I see tx1,tx2, etc. bring no advantage. If available, could we display the destination and function name there? Similar to how we do it on mobile?

I think that scrolling would be fine.

Option 2:

I think these subpages on the modal could also work. It's similar to the tx details on mobile actually.
I'm not the biggest fan of the accordion components. I would rather open another sub page for a specific tx since there could be quite some tx data to display.

General thoughts:

I would love if there's still a way to inspect the raw tx data. (Like we do e.g. here)
I think we should try to take advantage of the full modal width somehow. I like how we currently show decoded data in the contract interaction flow

Safe app tx can also consist of just a single tx without a multisend, i.e. it would be similar to a simple contract interaction.

Let me know if this makes sense or you need more clarification on what I mean. Also let me know in case you need more input, happy to do a session together with you!

As discussed with @fernandomg we propose this approach:
UI:
Using both #1 and #2 + Tobi's approach mixed

First the user will see something like this
Then if he expands a multiSend transaction he will look a modal with a list of transactions
In case he expands a normal transaction he will see something around this
In case a multiSend transaction contains more multiSend transactions the behaviour will be repeated from step 2) until the user reaches a normal transaction and will be able to see it like 3)

1
2
3

Backend/Decoded data:

The endpoint we need would be something like this:

POST /decodeData
{
 "hexData": "0x."
}

The response should be like this (based on how the client gateway it's working now)
type Response = {
 txData: DecodedTransaction
}

The types are:
type Params = {
  name: string;
  type: string;
  value: string;
}

type DataDecoded = {
  method: string;
  params: Params[];
}

type DecodedTransaction = {
  hexData: string;
  dataDecoded: DataDecoded | DecodedTransaction[]; // dataDecoded will be DecodedTransaction[] for isMultiSend === true
  isMultisend: boolean;
}

We expect that the decodification will go for the first level, in case there are nested multiSend transactions it won't return dataDecoded value, just hexData so we can ask for decoded data later in case we need it

cc @tschubotz @rmeissner @Uxio0 @dasanra @pablofullana

cc @jpalvarezl <- responsible for client gateway implementations

cc @posthnikova about the UI flow feedback

I used @Agupane's example with some changes after Tobi's comments. The first step is a list of actions, details are in a separate view.

The list inside the first view could scroll, action details could also scroll:

If available, could we display the destination and function name there?

@tschubotz Yes, done.

I think we don't take advantage of that bigger modal since the decoded data is quite cramped on the
side.

Big modal only looks good when there are 2 columns, otherwise the line of text is too long, it's hard to read.

Safe app tx can also consist of just a single tx without a multisend, i.e. it would be similar to a simple
contract interaction.

Yes, I thought non-multisend transactions don't change.

I would love if there's still a way to inspect the raw tx data

Full data could be very long, I would prefer to expand it with 'Show more' link.

We expect that the decodification will go for the first level

@Agupane Then in your example step 2 wouldn't exist, we show step 3 with hex data.

Hi, @posthnikova thanks for the feedback! I´m just curious about this:
@Agupane Then in your example step 2 wouldn't exist, we show step 3 with hex data.
What happens if some transaction inside a multiSend transaction is also a multiSend? with the approach we suggested with @fernandomg it should be a kind of recursive behavior that would let the user also decode nested multiSend transactions but with the new proposed UI it won't be possible right?, please correct me if I'm wrong

What happens if some transaction inside a multiSend transaction is also a multiSend?

The spec says we only decode 1 level. But according to your approach it will look like this.

Personally I find this confusing from the UI, as it was not immediately clear to me that the 2 multisend actions are on the same level as the other 3 (different background color, no blockies, no action).

The spec says we only decode 1 level. But according to your approach it will look like this.

Yes exactly, for example, we have one multiSend transaction (let's call it X) that contains for example 3 inner transactions:

safeTransferFrom
changeMasterCopy
another multiSend -> lets call it Y

When we ask the backend to decode the transaction X we will get that information (the three inner transactions) but the transaction Y won't be decoded to avoid overprocessing on the backend. We will only get the hash of it so if the user decides to see the details of that transaction we will ask the backend for it on demand. That's what I said "the decodification will for the first level".

Different question: how do the different dialogs overlay each other? (e.g. does the one with the list of tx closes when going deeper, or is it just a different UI state of the same dialog, or does it overlay the other dialog)

@rmeissner Would that work for you?

@Agupane Thanks for clarification. So it could have multiple levels:

Different question: how do the different dialogs overlay each other?

This is the same modal, no overlays, you just go back and forth.

@posthnikova yes I prefer this UI :) thank you very much (also thanks for clearifying the modal behaviour)

Thanks for the screens! I like them

Yes, I thought non-multisend transactions don't change.

We don't have generic tx decoding for non-multisend txs currently though. Do I understand your comment correctly that you wouldjust reuse this?
If so, then we would need just some small changes like: Adding the Safe app name on top.

In case there are many actions, would there we a scroll?

We don't have generic tx decoding for non-multisend txs currently though. Do I understand your
comment correctly that you wouldjust reuse this?

@tschubotz Yes, I meant this screen. This is weird that contract interactions don't have a Safe name in the header while all other tx types have it.

In case there are many actions, would there we a scroll?

Yes, when there are more than 5 actions the list scrolls. Popup with details could also scroll.

@tschubotz Yes, I meant this screen.

Nice, then let's reuse it.

This is weird that contract interactions don't have a Safe name in the header while all other tx types have it.

What do you mean? They all look similar to me 🤔

One more comment to:

I think the destination ("to"/recipient) should be displayed on the detail screen as well. Would it be reuse the styles from the generic contract interaction screen? That way, the styles could be reused.

What do you mean? They all look similar to me

@tschubotz Weird, sometimes there's no Safe address on the review step https://prnt.sc/zutsmo. I've no idea why.

I think the destination ("to"/recipient) should be displayed on the detail screen as well.

There is a recipient in the designs, you were looking at a scrolling view.

Would it be reuse the styles from the generic contract interaction screen? That way, the styles could
be reused.

I'm not sure which styles to reuse. The same info is shown differently in different places. In tx details for decoded data a recipient is shown as 'Send 0 ETH to...'.

The same information in contract interaction popups (non-multisend) is shown as 'Recipient ..., Value 0 ETH'.

In multisend popups it says 'Transaction n' and 0 ETH.

I was thinking maybe use the 'Send 0 ETH to...' format for all these cases so it's more aligned with tx details and mobile app.

So current contract interaction (non-multisend) popup styles need to be updated.

@tschubotz Weird, sometimes there's no Safe address on the review step https://prnt.sc/zutsmo. I've no idea why.

I found it: When doing a contract interaction with ABI, then it's missing (your screenshot). When doing a contract interaction with raw tx data, then it's all good (my screenshot) 💡  lol, nice catch. I think this should all look nicely with the header, as  you suggested.

There is a recipient in the designs, you were looking at a scrolling view.

Make sense, thanks!

I'm not sure which styles to reuse. The same info is shown differently in different places. In tx details for decoded data a recipient is shown as 'Send 0 ETH to...'.

I was thinking maybe use the 'Send 0 ETH to...' format for all these cases so it's more aligned with tx details and mobile app.

Yes, I think this makes most sense. The tx details was never worked on, so I wouldn't take them as reference (and fix them in #1887).

So current contract interaction (non-multisend) popup styles need to be updated.

I think that's okay. I think the goal of this ticket should be to align the review screens, not matter from where the tx was started.

Changes after quick user tests: https://invis.io/EY108QA8Q3XK
What's been done:
• Recipient added to the parent transaction
• Undecoded data moved up, show how many bytes, don't expand, there's a copy button
• There will be no second level multisends, show contract interaction with action 'multisend' instead. Inside 'multisend' action there's undecoded data.
• Removed identicons in the actions list, show tx type 'contract interaction' instead.
Contract interaction (non-multisend): https://invis.io/EY108QA8Q3XK#/445629652_Contract_Interaction_-Review-1272px
Actions list scroll: https://invis.io/EY108QA8Q3XK#/445629655_Transaction_Builder_-Scroll-1272px
All types of parameters:

Thanks! I think this looks nice.
Could you add a case where we are not able to decode one of the actions, please?
I would assume:

On the list, it could just be a "contract interaction" without any function name.
On the details view we would just see Eth amount, target address and data (not the actual data, just the length and the copy button, just like on the other screens)

About the Multisend inside a Multisend: With our current interface, it's impossible to create such a multisend inside a multisend. The reason for this is quite technical. We don't allow users of the interface and Safe apps to create so called "delegate calls". The reason for that in turn was security. You can do a lot of harm with them. So it needs to be clear in the interface when a delegate call happens and hence we just left it out for simplicity.
I think it's good to have this kept in mind when designing, but I would take the multisend inside the multisend out of the screens for zeplin just to be clear about it.
(I have to check if there is a theoretical option to create such real nested multisends via the API)

Could you add a case where we are not able to decode one of the actions, please?

@tschubotz On mobile we decided to show 'Action #' in the list and details https://github.com/gnosis/safe/wiki/Transaction-decoding-v2%3A-design-decisions#4-what-to-show-when-method-is-not-available

About the Multisend inside a Multisend: With our current interface, it's impossible to create such a
multisend inside a multisend.

True, I was confused by examples on Slack https://gnosisinc.slack.com/archives/CSPB31JHW/p1613742762004400, they are actually not nested. It will show as contract interaction with action name 'multisend', the details look like this https://invis.io/EY108QA8Q3XK#/445185688_Multisend_1st_Level_1272px_.

@lukasschor @tschubotz Currently we have 2 types of nested transactions:

Multisend transactions
Calls to Gnosis Safe execTransaction (so there's a Safe transaction inside a Safe transaction)

Should we keep decoding calls to execTransaction?

Should we keep decoding calls to execTransaction for this feature?

You the data part of exec transaction?
I would say not for this feature since this would be a special handling of Safe txs. The clients don't use this, so no need to have it in the backend. What do you think?

You the data part of exec transaction?

I mean, when you run a Safe tx that calls another Safe execTransaction the inner tx is also decoded (it's an special case coded in the tx decoder). I don't have any problem returning it, as it's already done, but I can remove it if it's confusing. I would return it, I think having more information should not harm.
This case would apply, for example, when one Safe 1 is owner of other Safe 2 and calls executeTransaction of the Safe 2

Ah, it already done. In that case, I'd return it, I don't think it's confusing.
Not sure if @dasanra @fernandomg @Agupane @rmeissner see this differently.

I agree, lets keep all the data, we can discard it in the UI if we consider it's not necessary.

For testing this, https://rmeissner.github.io/transaction-templates/ could come in handy.
Example json: https://github.com/rmeissner/transaction-templates/blob/main/templates/easy_auction.json
cc @liliya-soroka @francovenica


misc/cgo: testso fails when repo is not on OS volume

On one of my (less used) machines, I have my hard drive partitioned into multiple OS volumes and one data volume. The Go repo is on the data volume. As a result, misc/cgo/testso fails:
##### ../misc/cgo/testso
# command-line-arguments
/Volumes/Data/src/go/pkg/tool/darwin_amd64/link: /Volumes/Data/src/go/pkg/tool/darwin_amd64/link: rename(/var/folders/pp/0010hzld5b12h_92j5th082r0000gn/T/go-link-294538680/go.combined, main.exe) failed: rename /var/folders/pp/0010hzld5b12h_92j5th082r0000gn/T/go-link-294538680/go.combined main.exe: cross-device link
2015/07/11 21:06:03 Failed: exit status 2

This is in Darwin-specific code introduced originally in https://go-review.googlesource.com/10284.  It calls os.Rename but needs to fall back to copying.
CC @ribrdb


[🐞] Qwik fails to prefetch leading to input delay

Which component is affected?
Qwik Runtime
Describe the bug
I have been running into this issue since around v0.18.0 and have spent maybe 20+ hours trying to work out what has been going on.
Qwik fails to preload the Javascript which leads to an interaction delay. This only occurs on the first load. It works perfectly fine after the service worker has cached the file. I have provided a reproduction which shows the issue.
preview.preload-3fv.pages.dev
Reproduction
https://github.com/EamonHeffernan/qwik-prefetch-issue
Steps to reproduce
pnpm install
pnpm build
pnpm run deploy
Once deployed, click the green square. This will load instantly as it should. Wait for any preloading to occur, press the red button. There will be a delay as javascript is fetched from the server to display the text.
System Info
System:
    OS: Linux 5.10 Ubuntu 22.04.1 LTS 22.04.1 LTS (Jammy Jellyfish)
    CPU: (16) x64 AMD Ryzen 7 3700X 8-Core Processor
    Memory: 10.02 GB / 12.42 GB
    Container: Yes
    Shell: 5.1.16 - /bin/bash
  Binaries:
    Node: 19.8.1 - /usr/bin/node
    Yarn: 1.22.19 - /usr/bin/yarn
    npm: 9.5.1 - /usr/bin/npm
  npmPackages:
    @builder.io/qwik: ^1.1.0 => 1.1.0
    @builder.io/qwik-city: ^1.1.0 => 1.1.0
    undici: 5.22.0 => 5.22.0
    vite: 4.3.5 => 4.3.5

Additional Information
No response

Same issue here
There's a slight delay when handling on click events on buttons.

Same issue here
There's a slight delay when handling on click events on buttons.

I often have very noticeable delays of up to a second.

Again have this issue, any updates?

This still occurs in the latest version of Qwik, v1.2. I've updated the demo to the latest version https://3741894d.preload-3fv.pages.dev/

I'm not seeing this delay... Is it still reproducing for you?
Video shows no delay
https://github.com/BuilderIO/qwik/assets/6682981/725cbfe7-e8d6-4ea4-8a21-d1850e298747

There will always be corner cases like this. This is why it is handled with Qwik-Insights https://qwik.builder.io/docs/labs/insights/
Not sure there is anything to do with this other than to suggest you use Qwik Insights?

I can confirm this is still an issue in the latest version v1.5.5
I did a prod bundle build and ran preview to test how it goes vs dev (which I knew was going to load the kitchen sink for hot loading purposes), it's better, but still not where it should be. If simulating Australian mobile network speeds I see a 2+ second delay between the first click event and the corresponding action taking place when browser cache has been cleared.
My temp solution has been to add a nasty pure CSS spinner onto the Navigation menu which imo is just so silly to have to do for a framework called "Qwik". However at least till this is fixed it lets users know something is being worked on (a.k.a a waterfall of unused code is being downloaded .. because it was never prefetched when the page first loaded).
Hopefully a fix for this is on the way 🙏 It looks like it was working at one point in the past.

That's the reason I stopped using qwik, if you set Slow 4g and visit https://qwikui.com/docs/styled/checkbox/ for the first time, opening a menu will take ~3 seconds, interacting with any button or checkbox ~1 second, this is just unusable and will ruing first user impression of any website build with qwik.


fix: language tweaks to README

The main purpose of this PR is to generate a new image to test Smarter Shepherd in staging.
- What I did
Minor tweaks to language and ordering of README.
- How to verify it
I'm monitoring the staging0001 Shepherd logs
- Description for the changelog
fix: language tweaks to README

checks re-running after merge from trunk


BazQuz Instragram Feeds

When viewing Instagram feeds via the BazQux service in NewNewsWire 6.0.2 no images appear. Example screenshot included below.

Please delete/remove this post. I have since discovered Instagram is not officially supported by this service. Thanks.


[working] root OLED C9 (possibly others too) with newest Firmware (05.30.10 - 9/28/2022 )

After trying basically everything on the web to downgrade & root my tv I finally found a working solution here (just translate with ur browser):
Guide
If someone needs help - just ask :)

Since everything is working with the 05.30.10 Firmware I didn't attemp any downgrades.
I've posted the same Guide@rootmytv where are several people u may ask.
https://github.com/RootMyTV/RootMyTV.github.io/issues/85

Wow, this was the only thing that worked for me thank you!
Confirming this works on LG 49SM9000PLA with Firmware version 5.30.10

Tested working on a LG UK6400PLF on Firmware version 05.50.10


406 Error for Uploads on Associated Model

You get a 406 error when you have:

two models connected by a has_many association (Book and Authors)
the model belonging to the parent model has an upload field (Author.avatar)
uploads are handled via Carrierwave

do the following:

go to the form to create a new record (Add new Book)
add an instance of a has_many association (Add a new Author)
attach a file (select a file for Author.avatar)
submit the form

You get a '406 Not Acceptable' error and the record fails to be created.

Very strange answer.. In console log, I see
Parameters: {"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>nil}}}}}}}}}}}}}}, "model_name"=>"<my model name>"}

if I upload image through popup and has_many association


@JuliaRegistrator register

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/74579
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.1 -m "<description of version>" ccca442eb7c9df70e25d45bf3ca2b17f053a8e1a
git push origin v0.1.1

Also, note the warning: This looks like a new registration that registers version 0.1.1.
Ideally, you should register an initial release with 0.0.1, 0.1.0 or 1.0.0 version numbers
This can be safely ignored. However, if you want to fix this you can do so. Call register() again after making the fix. This will update the Pull request.


extraction mode: adding level to environment in unquote_universe

There seems to be a discrepancy in how unquote_level is instantiated in extraction mode and in template-coq (live-coq) mode.
The extraction mode implementation is here and looks like:
  let unquote_level (trm : Univ0.Level.t) : Univ.Level.t =
    match trm with
    | Univ0.Level.Coq_lProp -> Univ.Level.prop
    | Univ0.Level.Coq_lSet -> Univ.Level.set
    | Univ0.Level.Level s ->
      let s = unquote_string s in
      let comps = CString.split '.' s in
      let last, dp = CList.sep_last comps in
      let dp = DirPath.make (List.map Id.of_string comps) in
      let idx = int_of_string last in
      Univ.Level.make dp idx
    | Univ0.Level.Var n -> Univ.Level.var (unquote_int n)

Clearly from the types, it does not thread the environment (Evd. evar_map).
In contrast, the template-coq version, implemented here, threads the environment and makes a non-trivial change to it (the tLevel case calls get_level which can add a universe to the environment):
let get_level evm s =
  if CString.string_contains ~where:s ~what:"." then
    match List.rev (CString.split '.' s) with
    | [] -> CErrors.anomaly (str"Invalid universe name " ++ str s ++ str".")
    | n :: dp ->
       let num = int_of_string n in
       let dp = DirPath.make (List.map Id.of_string dp) in
       let l = Univ.Level.make dp num in
       try
         let evm = Evd.add_global_univ evm l in
         if !strict_unquote_universe_mode then
           CErrors.user_err ~hdr:"unquote_level" (str ("Level "^s^" is not a declared level and you are in Strict Unquote Universe Mode."))
         else (Feedback.msg_info (str"Fresh universe " ++ Level.pr l ++ str" was added to the context.");
               evm, l)
       with
       | UGraph.AlreadyDeclared -> evm, l
  else
    try
      evm, Evd.universe_of_name evm (Id.of_string s)
    with Not_found ->
         try
           let univ, k = Nametab.locate_universe (Libnames.qualid_of_string s) in
           evm, Univ.Level.make univ k
         with Not_found ->
           CErrors.user_err ~hdr:"unquote_level" (str ("Level "^s^" is not a declared level."))

let unquote_level evm trm (* of type level *) : Evd.evar_map * Univ.Level.t =
  let (h,args) = app_full trm [] in
  if Constr.equal h lProp then
    match args with
    | [] -> evm, Univ.Level.prop
    | _ -> bad_term_verb trm "unquote_level"
  else if Constr.equal h lSet then
    match args with
    | [] -> evm, Univ.Level.set
    | _ -> bad_term_verb trm "unquote_level"
  else if Constr.equal h tLevel then
    match args with
    | s :: [] -> debug (fun () -> str "Unquoting level " ++ pr_constr trm);
                 get_level evm (unquote_string s)
    | _ -> bad_term_verb trm "unquote_level"
  else if Constr.equal h tLevelVar then
    match args with
    | l :: [] -> evm, Univ.Level.var (unquote_nat l)
    | _ -> bad_term_verb trm "unquote_level"
  else
    not_supported_verb trm "unquote_level"

Should the extraction version be fixed to thread/update the context in a similar way?

They should definitely do the same thing.

Yes it should do the same. It might be reasonable to have a strict mode of unquoting  where universes cannot be created as well, ensuring reproducible results

To be clear, it should be the second version used in ‘live-coq’


Bun support

Add support for bun
If you create a new rails project with "--main --javascript bun"
you end up with a yarn.lock and not a bun.lockb file.  This is
because turbo-rails and stimuls are installed with yarn.

thanks @rubys. Not sure the commit 97ed657 should be part of this PR as it is a different subject

Oops, sorry about that.  Fixed!

See also https://github.com/hotwired/stimulus-rails/pull/125


"io.kestra.plugin.fs.ssh.Command" not giving output in var variable

Expected Behavior
when we run below code the output of ls should be displayed on the output section, but that is not happening. I am using docker image kestra/kestra:latest-full
id: "command"
type: "io.kestra.plugin.fs.ssh.Command"
host: localhost
port: "22"
authMethod: PASSWORD
username: foo
password: pass
commands: ['ls']
Actual Behaviour
When we run a flow with type: "io.kestra.plugin.fs.ssh.Command" , what ever command it run the output should be stored on the var variable and display in the output section
Steps To Reproduce
create a flow suing below blueprint and when you run its not giving proper output
id: "command"
type: "io.kestra.plugin.fs.ssh.Command"
host: localhost
port: "22"
authMethod: PASSWORD
username: foo
password: pass
commands: ['ls']
Environment Information

Kestra Version: 0.16.1
Plugin version: io.kestra.plugin.fs.ssh.Command
Operating System (OS / Docker / Kubernetes):  Amazon Linux release 2023.4.20240401 (Amazon Linux) / Docker Server Version: 25.0.3
Java Version (If not docker):

Example flow
No response

The io.kestra.plugin.fs.ssh.Command standard output will not be added as task outputs but as task logs.
To create a task output you need to se the special lg format so that Kestra can extract the output from the logs, see https://kestra.io/docs/developer-guide/scripts/outputs-metrics#shell


Can not configure native project

Hi, I tried to install this vision export. but I could not configure a generate the project.
I sucesfully followed steps 1 - 7.
But when I hit "configure" button, there is no EIGEN3_INCLUDE_DIR entry.

Although I added this entry, it did not configure properly, so I yould not generate the project.
Versions:
Cmake: 3.10.0-rc1
Eigen3: f562a193118d

It's because msbuild.exe is not in your PATH environment variable. One way to resolve this is to run cmake .. -D EIGEN3_INCLUDE_DIR=(your eigen path) in a Developer Command Prompt for Visual Studio.

I add the "msbuild.exe" in my "PATH" environment variable. But I still met the same problem...

I can see, thanks. I added bin directory with MSBuild.exe to PATH variable, but now I'm stuggling with MSBuild version.
I figured out I don't have Visual studio 2017 installed, so correct version of MSBuild is missing on my PC. Hoing to install it now, I hope it'll work after that.

I use the command line to build the project successfully, just as @JiamingSuen

I created pull request which should fix this my misunderstanding.


feat: add PanelHeading component

Types of Changes
What types of changes does your code introduce? Put an x in all the boxes that apply:

[ ] Bug fix (non-breaking change which fixes an issue, please reference the issue id)
[ ] New feature (non-breaking change which adds functionality, make sure to open an associated issue first)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] My change requires a change to the documentation
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[ ] All new and existing tests passed

Description
[Place a meaningful description here.]

:tada: This PR is included in version 5.5.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 5.5.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


feat: use of official express engine

fix #6

Updated express engine to beta 2

The only issue still left is that with @nguniversal/express-engine, the ngOnBootstrap method is not called in app.server.module.ts.


Add pipenv and poetry check to djangotest

Make sure these boxes are checked before submitting your pull request:

[ x] Add fixtures and spec when implementing or updating a test runner
[ x] Update the README accordingly
[ x] Update the Vim documentation in doc/test.txt

Updated with the spec, though I have to admit I'm going to be relying on some kind of CI test runner here coz I can't take the detour to setup ruby atm

Is there any updates?


Rename core entries to eliminate confusing references to register addresses.

Over time the repo accrued two confusing references to register "addresses":

CoreRegister.ADDRESS and
CoreRegisterAddress.

These "addresses" are not similar (one is a memory mapped address, and the other is just a number), and with 64-bit changes, this difference became rather confusing.
I renamed core::CoreRegisterAddress to core::RegisterLocation, and core::CoreRegister to core::MemoryMappedRegister.

I think it's a good idea to clarify these names.
I'm not so sure about CoreRegisterNumber. For ARM, that might be a good name, but for RISCV it sounds a bit confusing to me. The reason is that when I hear register number, I think of numbers from 0 - 31, for the registers x0 etc. However, to read the value of register x0 you need to read a CSR (Control and Status Register) with address 0x1000.
I think we should try to clarify if internal addresses (like 0x1000) or the more user-facing "numbers" like x0 are meant.

@Tiwalun  ...

I'm not so sure about CoreRegisterNumber.

I struggled with that one also. I think it makes sense to use the same reference for both Arm and Risc-V. The difference is really that Arm has fewer, but even Risc-V has only 4096 register slots. What they have in common is that these are not memory addresses like other mapped memory addresses we use to read data from the core.

I think we should try to clarify if internal addresses (like 0x1000) or the more user-facing "numbers" like x0 are meant.
For me, x0 is more of a name than a number. Kinda like r0, or pc, and these are already captured in RegisterDescription::name

Do you have a suggestion?

@noppej - regardless of where we land on the final naming this is definitely easier for me to read / parse compared to what is in the mainline right now.  The changes look good to me.

'RegisterId' sounds like a great choice to me :)

RegisterId works for me.


Getting error when calling archival_memory_insert

For query tasks I have MemGPT configured and working properly using an API key with https://openrouter.ai/
In this configuration, each time it tries to call archival_memory_insert, MemGPT fails saying the openai API key is not valid.
My questions are:

Why an API key (OpenAI key or any other api key) would be required when saving some locally available data (from the context of the conversation) to a local database?
Considering that MemGPT already works (for questions->answers) with the API key from https://openrouter.ai/ why, only for saving calling archival_memory_insert, it tries to use an API key from another vendor (OpenAI) which seems not be related with the main system setup (via https://openrouter.ai/)

Because it's calling openai api to get embeddings for the text to save

Can't this be done locally without any network call?
OpenAI embeddings are closed source under a paywall only? This means all other Ollama openai API compatible local providers still need an OpenAI key and pay OpenAI when using local models (just for embeddings)?

If you want to run embedings locally, we recommend using Ollama https://docs.letta.com/models/ollama

Thank you for all your help.
Just by selecting embedding provider: local + pip install pymemgpt[local] did the trick with openrouter.ai
I do not use Ollama.


ERROR: readlink /var/lib/docker/overlay2: invalid argument

Hello. I run a new version of docker4drupal on Windows10.
And I got an error
ERROR: readlink /var/lib/docker/overlay2: invalid argument
Please take a look for log:
http://prntscr.com/ei59y7

What is your version of Docker?

Also try to docker-compose stop, docker-compose rm then docker-compose up -d.

ou for your quick reply.
Unfortunately it doesn't helps.
http://i.prntscr.com/6c6bae9827064cf2b4a14070c0b82a0e.png
Here is my configuration:
$ docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:40:59 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 07:52:04 2017
 OS/Arch:      linux/amd64
 Experimental: true

$ docker info
Containers: 5
 Running: 0
 Paused: 0
 Stopped: 5
Images: 12
Server Version: 17.03.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 977c511eda0925a723debdc94d09459af49d082a
runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.12-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 973.8 MiB
Name: moby
ID: J2JB:DONB:NUSP:XONW:YMAT:AN2M:DMX6:NQ5J:J7RI:47GJ:4ZPF:JADG
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 13
 Goroutines: 22
 System Time: 2017-03-10T14:27:32.9617215Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 <IP_ADDRESS>/8
Live Restore Enabled: false

@andrewgorokhovets your image might be corrupt. I had the same error and rebuilding the offending image (which I found running each image one by one using docker run) fixed the issue.

Same issue for me on OS X El Capitan.
In my case, I first got the following:
$ docker-compose up
...
WARNING: Image for service MYSERVICE was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating MYSERVICE_1
Attaching to MYSERVICE_1
Unexpected API error for MYSERVICE_1 (HTTP code 500)
Response body:
dial unix /Users/fabriziocucci/Library/Containers/com.docker.docker/Data/*00000003.00000948: connect: connection refused

Then all subsequent docker-compose up resulted in:
$ docker-compose up
ERROR: readlink /var/lib/docker/overlay2: invalid argument

@zekus solution worked for me!
My Docker version:
$ docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/amd64
 Experimental: true

My Docker info:
$ docker info
Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 43
Server Version: 17.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: N/A (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.13-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.952 GiB
Name: moby
ID: 5IC4:SG37:ISSX:XZQR:IA32:G6NL:EDDW:RUBQ:2FUH:F4M7:DAUW:ZPCE
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 17
 Goroutines: 28
 System Time: 2017-05-07T14:22:57.047340831Z
 EventsListeners: 1
Username: fabriziocucci
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 <IP_ADDRESS>/8
Live Restore Enabled: false

Closing because it's not d4d issue.

@zekus Thanks, your solutions works.

@zekus Thanks for your help!

@zekus the --no-cache flag did it for me 👌

@andrewgorokhovets your image might be corrupt. I had the same error and rebuilding the offending image (which I found running each image one by one using docker run) fixed the issue.
To recap:

docker-compose run <service_name> one service at the time until you find the broken one
docker-compose build --no-cache <broken_service_name>

hope it helps.

not work for me :(


Add physical infra types for discovery

This pull request impĺements a method to return ems_physical_infra discovery types available.
So far, the only type to be supported is Lenovo XCLarity Administrator.

@miq-bot add_label providers/physical-infrastructure


Very nice collection!

Thanks for such a great initiative to collect these!
I have a few small questions.
1, One could add authors to the single papers maybe?
2. One could maybe do this slightly generic collecting e.g. BibTeX entries, or in a yaml file with the category attached and render that on a homepage in the long run? Just an idea, if you want to keep this a simple md file that is also fine.
I can add a few papers in the area nonsmooth/constraint the next few days.

Thank you for the great suggestions! The authors and bibtex info could be added in the long run. Currently I prefer it to be concise as more papers are still being added.
For the nonsmooth/constraint area, feel free to add any papers! Thank you!


Switch all test pipelines to use rpmrepo repositories and use mpp

Update to address Tom's comments and fix CI. There's one open quesion — please don't merge before it's answered.

Just a heads up: this is colliding with #515. Since this actually fixes the test, it should go in, I think.

Pushed to add clarifications to the messages of the commits changing the zipl and kernel-cmdline stages, as discussed with @gicmo earlier today.


support for deferred error propagation

What this PR does / why we need it:
A typical problem is to handle errors provided by deferred functions, for example Close().
Another scenario is the need to wrap all errors provided in a function with a common context description.
The errors package now provides a function PropagateError/f, which can be used to solve both problems.
If takes an optional error context, which will be used to wrap a potential error returned by the calling function. Additionally it is possible to add a function providing an error. This error, if present is composed with an error provided by the function return when called as deferred function.
Example:
func() (efferr error) {
  ...
  defer errors.PropagateErrorf(&efferr, stream.Close, "error context")
  ...
  return err
}

This error providing function may be the Finalize() method of a utils.Finalizer.
This is now directly supported by the Finalizer.
Example:
func() (efferr error) {
  var finalize utils.Finalizer
  ...
  defer finalize.FinalizeWithErrorPropagationf(&efferr, "error context")
  ...
  finalize.Close(stream)
  ...
  return err
}

For more variants see the tests in the errors and utils package.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Release note:

Why not use re-assignment of a deferred error? Or just return multiple errors? Something like:
func test() (err error) {
	defer func() {
		if tmpErr := doSomething(); tmpErr != nil {
			err = tmpErr
		}
	}()

	err = doSomethingElse()

	return err
}

Or append to an error list.

@Skarlso, overwriting an error would loose the original error (of interest). But what I'm doing is exactly your second proposal,
returning an error list.

@Skarlso, overwriting an error would loose the original error (of interest).

Sure, it depends on if you are more interested in the finalizer failing or not. If not at all, log the failure and move on.

But what I'm doing is exactly your second proposal, returning an error list.

Well, technically, you are hiding the error list inside a parameter which is handled as output. That is usually not considered a good way of handling return values. This is typically done by unmarshallers or kube client which sets an output value. Usually, a more straightforward way would be to expose this behaviour. But 🤷♂ :).

Hmm. I' not sure, what you mean with overwriting an output (here errror)  is usually not considered a good way. You have to do it, if you want to handle and return a deferred error. I found examples exactly explaining this mechanism. If you don't want to bundle the errors (occurs only, if the method as well as the finializers will fail), you don't need to use this function and do it according to your special needs. It is just some convenience function, which provides a standard error handling, which is now easy to consume, without the need of complex boiler plate.
The problem with the vanished error during the signing process is just such a case, the error occurs during a The Close of the component version and should be reported.

You have to do it, if you want to handle and return a deferred error

You don't have to. But you can. :) Anyways, this is fine; I just wanted to know what was behind it.


403 forbidden all of a sudden

Getting this for some reason:
Connecting to codeload.github.com (codeload.github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2023-08-[28](https://github.com/ApeWorX/ape/actions/runs/6002250247/job/16278221146?pr=1634#step:6:29) 15:51:39 ERROR 403: Forbidden.

As an aside, I noticed I am getting this on normal wget requests as well, and even when using py-geth install, so I think something may have changed either with GitHub serves or the Geth repo, I am not sure.

Hmm never mind, this actually works here, I was seeing this elsewhere


updated SkillRetrieval description

I got a report where SkillRetrieval tool is chosen over ModifyScript tool, when the goal is to actually modify simulation scripts (just 5 lines of code).
Looks like mdagent 'misunderstands' what both tools are for, so I opened this PR to address this. Changing tool descriptions may be all it takes, but if it doesn't, we may consider renaming tools as well.

@Jgmedina95 when you have time, can you test this with your prompts for RDF procedure?
While it doesn't contain packmol changes yet (other PR), the goal is that it chooses ModifySimulationScript more frequently now.


False positive for RemoveLine when using #if directive

I've just ran across a weird auto-correction and lint warning when I tried to provide iOS-only modifiers in a SwiftUI view. When running the lint command in Xcode, the warnings look like this:

And when running the corrections, swift-format corrects my code to this (which is ugly IMO):

I also couldn't find a configuration option to turn these warnings off, too. Both RemoveLine and Indentation are false positives in my opinion and I couldn't find either of these rules in the config file.
Also, disabling the Indentation didn't work, this still shows a violation:
.navigationBarTitle(L10n.Timer.EditSummaryScreen.title)  // swift-format-ignore: Indentation

By the way, I'm not sure if just reporting issues with a normal title is the correct approach here. The GitHub  organization doesn't seem to have an issue template yet (with things like "steps to reproduce", "expected state" etc.). It feels weird being the first reporting an issue without the [SR...] prefix after the migration from JIRA. 😅

This issue was reported during my regular Open Source live stream on Twitch. Follow me there to support my work!

This should be fixed by https://github.com/apple/swift-format/pull/383 once it's merged.


SUCCESSFULLY ENHANCED THE WHY JOIN US SECTION AND MADE IT INTERACTIVE AND MEANINGFULL

SOLVED ISSUE: #211
ENHANCING AND DESIGNING THE PROFFESSIONAL AND MEANINGFUL "WHY JOIN US" SECTION.
### 📋 Description
This PR enhances the "Why Join Us" section by making it more interactive, visually appealing, and contextually meaningful. The changes focus on improving the card presentation by adding purpose-driven content and making the section more engaging through advanced hover effects, attractive fonts, and scaling effects. The goal is to elevate the user experience and highlight the importance of the section.
### 🔨 Changes Made
Added attractive and meaningful content to the cards, enhancing the purpose of the "Why Join Us" section.
Enhanced the main title with a very attractive font and a smooth hover effect that reveals an underline from left to right, improving interactivity.
Applied consistent font styling across the entire section to make it more cohesive and appealing.
Added advanced hover effects to the cards that make them scale up slightly and highlight the focus, providing an engaging and dynamic user experience.
Improved the overall UI and interactivity of the section.
### ✅ Checklist
Before submitting the PR, please make sure you have completed the following:
✅I have followed all the guidelines mentioned in CONTRIBUTING.md.
✅My code follows the style guidelines of this project.
✅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 (if applicable).
✅I have tested it locally and it works fine.
Any dependent changes have been merged and published in downstream modules.
🏷 Types of Changes
What type of changes does your code introduce? (Check all that apply)
Bug fix (non-breaking change which fixes an issue) 🐛
✅New feature (non-breaking change which adds functionality) ✨
✅UI enhancement (non-breaking change which enhances UI) 🎨
☐Documentation update 📚
Fixes #211
📸 Screenshots (if applicable)
https://github.com/user-attachments/assets/c91c7add-d958-4618-ab58-c1969599716c

Thank you for contributing to Research Nexus! We look forward to reviewing your PR and getting it merged!

SIR I HAD SUCCESSFULLY SOLVED THE ISSUE AND TAKE THAT SECTION TO THE NEXT LEVEL BY MADE IT INTERACTIVE AND ATTRACTIVE.

HOPE YOU WILL DEFINATELY., @Harshdev098

Sorry but not satisfied with it


Remove unnecessary tests reports destination

Kind of change

[ ] Bug fix
[X] New non-breaking feature
[ ] New breaking feature
[ ] Documentation update
[ ] Build improvement

Description
What is the goal of this pull request?
Simplify Gradle configuration removing an unnecessary configuration, see #1188 for details
How does it achieve that?
Just removes it, no other changes are necessary, reports path in CI still match.
Are there any alternative ways to implement this?
No :thinking:
Are there any implications of this pull request? Anything a user must know?
No
Issue
If this PR fixes an open issue, please add a line of the form:
Fixes #1188
Release notes
This is an internal change, I don't think it's worth adding to changelog.

Waiting (draft) until the JUnit 5 PR is merged, I suspect there will be conflicts.

Waiting (draft) until the JUnit 5 PR is merged, I suspect there will be conflicts.

I stand corrected, no issues at all :smile:

Nice! Thank you!


Private DNS Zones Support

Second PR to include changes from #33 since the git history was a bit mangled, but essentially just the same changes as #30 with the added refactors to the e2e testing framework from #33.

Looks like devenv/scripts/command_invoke_with_output.sh is empty?

Looks like devenv/scripts/command_invoke_with_output.sh is empty?

diff was just a chmod, but the file itself isn't empty. weird that Github classifies it that way.