[Question] mcc-harvester bundle shows modified

mcc-harvester bundle shows modified since we applied patch "prometheus-longhorn-rules" prometheus rule.
We would like to run upgrade from v1.1.2 to v1.2.1 but check.sh is shows mcc-harvester is not ready since it's status is modified.
So how to revert back mcc-harvester bundle to original state?
Thanks a lot.

Please share the output of
# kubectl get bundle mcc-harvester -n fleet-local -o yaml

It's a lot of output but we can help parse it here. If I recall correctly, there's usually a "patch" field buried in that output that describes what modifications have to be done to revert it back to stock.

Please follow below example to add related resource path to ManagedChart CRD object harvester (use kubectl edit managedchart harvester -n ...), wait a while, the complain will be gone.
    diff:
      comparePatches:

https://github.com/harvester/harvester-installer/blob/992750c810dc050d7811b2ce4e5fa1f98f5ce999/pkg/config/templates/rancherd-10-harvester.yaml#L80

Hello connorkuehl
Yes, you are right we applied patch for Prometheus Rule named "prometheus-longhorn-rules" under "longhorn-system" namespace, basically we increased the threshold value from 70% to 90% for few rules.
As you mentioned "kubectl get bundle mcc-harvester -n fleet-local -o yaml" output is too long so I just grab following patch portion, hope that is helpful. Let me know in case additional details are required.

summary:
desiredReady: 1
modified: 1
nonReadyResources:
- bundleState: Modified
modifiedStatus:
- apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
name: prometheus-longhorn-rules
namespace: longhorn-system
patch: '{"spec":{"groups":[{"name":"longhorn.rules","rules":[{"alert":"LonghornVolumeActualSpaceUsedWarning","annotations":{"description":"The
actual space used by Longhorn volume on node is at 90% capacity for more
than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The
actual used space of Longhorn volume is over 90% of the capacity."},"expr":"(longhorn_volume_actual_size_bytes
/ longhorn_volume_capacity_bytes) * 100 \u003e 90","for":"5m","labels":{"issue":"The
actual used space of Longhorn volume on is high.","severity":"warning"}},{"alert":"LonghornVolumeStatusCritical","annotations":{"description":"Longhorn
volume on is Fault for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn
volume is Fault"},"expr":"longhorn_volume_robustness == 3","for":"5m","labels":{"issue":"Longhorn
volume  is Fault.","severity":"critical"}},{"alert":"LonghornVolumeStatusWarning","annotations":{"description":"Longhorn
volume is Degraded for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn
volume is Degraded"},"expr":"longhorn_volume_robustness == 2","for":"5m","labels":{"issue":"Longhorn
volume is Degraded.","severity":"warning"}},{"alert":"LonghornNodeStorageWarning","annotations":{"description":"The
used storage of node is at 70% capacity for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The
used storage of node is over 70% of the capacity."},"expr":"(longhorn_node_storage_usage_bytes
/ longhorn_node_storage_capacity_bytes) * 100 \u003e 70","for":"5m","labels":{"issue":"The
used storage of node is high.","severity":"warning"}},{"alert":"LonghornDiskStorageWarning","annotations":{"description":"The
used storage of disk is at 70% capacity for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The
used storage of disk is over 70% of the capacity."},"expr":"(longhorn_disk_usage_bytes
/ longhorn_disk_capacity_bytes) * 100 \u003e 70","for":"5m","labels":{"issue":"The
used storage of disk on node is high.","severity":"warning"}},{"alert":"LonghornNodeDown","annotations":{"description":"There
are Longhorn nodes which have been offline for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn
nodes is offline"},"expr":"(avg(longhorn_node_count_total) or on() vector(0))
- (count(longhorn_node_status{condition="ready"} == 1) or on() vector(0))
\u003e 0","for":"5m","labels":{"issue":"There are Longhorn nodes are offline","severity":"critical"}},{"alert":"LonghornIntanceManagerCPUUsageWarning","annotations":{"description":"Longhorn
instance manager has CPU Usage / CPU request is over 300% for more than
5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn
instance manager has CPU Usage / CPU request is over 300%."},"expr":"(longhorn_instance_manager_cpu_usage_millicpu/longhorn_instance_manager_cpu_requests_millicpu)
* 100 \u003e 300","for":"5m","labels":{"issue":"Longhorn instance manager
on consumes 3 times the CPU request.","severity":"warning"}},{"alert":"LonghornNodeCPUUsageWarning","annotations":{"description":"Longhorn
node has CPU Usage / CPU capacity is over 90% for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn
node experiences high CPU pressure for more than 5m."},"expr":"(longhorn_node_cpu_usage_millicpu
/ longhorn_node_cpu_capacity_millicpu) * 100 \u003e 90","for":"5m","labels":{"issue":"Longhorn
node experiences high CPU pressure.","severity":"warning"}}]}]}}'
name: fleet-local/local
ready: 0
unavailable: 0
unavailablePartitions: 0

kubectl get bundle -A

NAMESPACE     NAME                                          BUNDLEDEPLOYMENTS-READY   STATUS
fleet-local   fleet-agent-local                             1/1
fleet-local   local-managed-system-agent                    1/1
fleet-local   mcc-harvester                                 0/1                       Modified(1) [Cluster fleet-local/local]; prometheusrule.monitoring.coreos.com longhorn-system/prometheus-longhorn-rules modified {"spec":{"groups":[{"name":"longhorn.rules","rules":[{"alert":"LonghornVolumeActualSpaceUsedWarning","annotations":{"description":"The actual space used by Longhorn volume on node is at 90% capacity for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The actual used space of Longhorn volume is over 90% of the capacity."},"expr":"(longhorn_volume_actual_size_bytes / longhorn_volume_capacity_bytes) * 100 \u003e 90","for":"5m","labels":{"issue":"The actual used space of Longhorn volume on is high.","severity":"warning"}},{"alert":"LonghornVolumeStatusCritical","annotations":{"description":"Longhorn volume on is Fault for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn volume is Fault"},"expr":"longhorn_volume_robustness == 3","for":"5m","labels":{"issue":"Longhorn volume  is Fault.","severity":"critical"}},{"alert":"LonghornVolumeStatusWarning","annotations":{"description":"Longhorn volume is Degraded for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn volume is Degraded"},"expr":"longhorn_volume_robustness == 2","for":"5m","labels":{"issue":"Longhorn volume is Degraded.","severity":"warning"}},{"alert":"LonghornNodeStorageWarning","annotations":{"description":"The used storage of node is at 70% capacity for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The used storage of node is over 70% of the capacity."},"expr":"(longhorn_node_storage_usage_bytes / longhorn_node_storage_capacity_bytes) * 100 \u003e 70","for":"5m","labels":{"issue":"The used storage of node is high.","severity":"warning"}},{"alert":"LonghornDiskStorageWarning","annotations":{"description":"The used storage of disk is at 70% capacity for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"The used storage of disk is over 70% of the capacity."},"expr":"(longhorn_disk_usage_bytes / longhorn_disk_capacity_bytes) * 100 \u003e 70","for":"5m","labels":{"issue":"The used storage of disk on node is high.","severity":"warning"}},{"alert":"LonghornNodeDown","annotations":{"description":"There are Longhorn nodes which have been offline for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn nodes is offline"},"expr":"(avg(longhorn_node_count_total) or on() vector(0)) - (count(longhorn_node_status{condition="ready"} == 1) or on() vector(0)) \u003e 0","for":"5m","labels":{"issue":"There are Longhorn nodes are offline","severity":"critical"}},{"alert":"LonghornIntanceManagerCPUUsageWarning","annotations":{"description":"Longhorn instance manager has CPU Usage / CPU request is over 300% for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn instance manager has CPU Usage / CPU request is over 300%."},"expr":"(longhorn_instance_manager_cpu_usage_millicpu/longhorn_instance_manager_cpu_requests_millicpu) * 100 \u003e 300","for":"5m","labels":{"issue":"Longhorn instance manager on consumes 3 times the CPU request.","severity":"warning"}},{"alert":"LonghornNodeCPUUsageWarning","annotations":{"description":"Longhorn node has CPU Usage / CPU capacity is over 90% for more than 5 minutes.","runbook_url":"https://longhorn.io/docs/1.3.0/monitoring/metrics/","summary":"Longhorn node experiences high CPU pressure for more than 5m."},"expr":"(longhorn_node_cpu_usage_millicpu / longhorn_node_cpu_capacity_millicpu) * 100 \u003e 90","for":"5m","labels":{"issue":"Longhorn node experiences high CPU pressure.","severity":"warning"}}]}]}}
fleet-local   mcc-harvester-crd                             1/1
fleet-local   mcc-local-managed-system-upgrade-controller   1/1
fleet-local   mcc-rancher-logging                           1/1
fleet-local   mcc-rancher-logging-crd                       1/1
fleet-local   mcc-rancher-monitoring                        1/1
fleet-local   mcc-rancher-monitoring-crd                    1/1

patch files to identify resource

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: prometheus-longhorn-rules
namespace: longhorn-system

JSON patch file

[
{
"op" : "replace",
"path" : "/spec/groups/0/rules/3/expr",
"value" : "(longhorn_node_storage_usage_bytes / longhorn_node_storage_capacity_bytes) * 100 > 90"
},
{
"op" : "replace",
"path" : "/spec/groups/0/rules/3/annotations/description",
"value" : "The used storage of node is at 90% capacity for more than 5 minutes"
},
{
"op" : "replace",
"path" : "/spec/groups/0/rules/3/annotations/summary",
"value" : "The used storage of node is over 90% of the capacity."
},
{
"op" : "replace",
"path" : "/spec/groups/0/rules/4/expr",
"value" : "(longhorn_disk_usage_bytes / longhorn_disk_capacity_bytes) * 100 > 90"
},
{
"op" : "replace",
"path" : "/spec/groups/0/rules/4/annotations/description",
"value" : "The used storage of disk is at 90% capacity for more than 5 minutes"
},
{
"op" : "replace",
"path" : "/spec/groups/0/rules/4/annotations/summary",
"value" : "The used storage of disk is at 90% capacity."
}
]

Command to apply patch

kubectl patch --type json -f  resource.yaml --patch-file patch_file.yaml

Hope this helps!
Thanks for looking into it.

Hello @w13915984028
Thanks for sharing above details
I will try using example you mentioned.
Hope this is straightforward for our patches applied to Prometheus rule.
Please share in case you have any example for modified Prometheus rule.

Hello @w13915984028
All the required entries are already present under harvester managed-chart, anything else to verify?
Thanks a lot.

spec:
chart: harvester
defaultNamespace: harvester-system
diff:
comparePatches:
- apiVersion: apiextensions.k8s.io/v1
jsonPointers:
- /status/acceptedNames
- /status/conditions
- /status/storedVersions
kind: CustomResourceDefinition
name: engineimages.longhorn.io
- apiVersion: apiextensions.k8s.io/v1
jsonPointers:
- /status/acceptedNames
- /status/conditions
- /status/storedVersions
kind: CustomResourceDefinition
name: nodes.longhorn.io
- apiVersion: apiextensions.k8s.io/v1
jsonPointers:
- /status/acceptedNames
- /status/conditions
- /status/storedVersions
kind: CustomResourceDefinition
name: volumes.longhorn.io
- apiVersion: storage.k8s.io/v1
jsonPointers:
- /metadata/annotations
kind: StorageClass
name: harvester-longhorn
- apiVersion: storage.k8s.io/v1
jsonPointers:
- /metadata/annotations
kind: StorageClass
name: harvester-longhorn

mcc-harvester bundle shows in ready state after adding following lines

apiVersion: monitoring.coreos.com/v1
jsonPointers:
- /spec
- /status
kind: PrometheusRule
name: prometheus-longhorn-rules

under following section

diff:
comparePatches:

Still not sure how to identify path for a particular resource like how to identify spec and status are pointers for prometheus-rule?
Thanks a lot once again for providing very useful hint.

@prashantgnet  That looks good.
Regarding your further quetions, I try to answer it:
:~ # kubectl get managedchart -nfleet-local harvester -oyaml
apiVersion: management.cattle.io/v3
kind: ManagedChart

...
spec:
  chart: harvester
  defaultNamespace: harvester-system
  diff:
    comparePatches:
    - apiVersion: storage.k8s.io/v1
      kind: StorageClass
      name: harvester-longhorn
      jsonPointers:
      - /metadata/annotations

...
  resourceKey:
  - apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    name: backingimagedatasources.longhorn.io
...

(1) All sub-resources of a managedchart are listed in managedchart.spec.resoruceKey field, with apiVersion, kind, name, they can be added to spec.diff.comparePatches
(2) For the diff, the spec and status are the root path of any sub-resources monitored by managedchart, you can use spec.a.b.c.... to locate to your modified fields instead of a high level match from root, set it's vaue in jsonPointers.

Hello @w13915984028
Thanks a lot for very detailed information, this is really helpful.
Closing this ticket.


Export Subdomain list

Will be great to see in next version a way to export subdomain list in different formats in order to run local tools.

Yes, we'll export Target, subdomains, and services in the next version.

This is done https://github.com/reconness/reconness/releases/tag/v1.2.2


Options ignored when marshaling nil value

Describe the bug
Marshaling a nil value ignores marshaling options.
Expected behavior
I would expect marshaling to apply marshaling options even with a nil value.
Links
https://go.dev/play/p/dtjasHU3_5T
Additional context
The same bug occurs when marshaling a nil slice.

👍🏻 thanks for the report, we'll look into this soon. Feel free to open a PR if you'd like too.


Iframe Widget: double scrollbar hides the buttons

On Safari 9.11 at least (with the option on my os to always show scrollbars) :
Initial scroll state:

Scrolled a bit down with the trackpad, first row of buttons disapears:

Chrome and Firefox are handling this better....
Anyone with a quickfix ?!

I tried to fix this with ResizeSensor.
ref: https://github.com/summernote/django-summernote/commit/56873e689a98d7836a46ca03acf7b6274dbb60e5
Could you try to test this with the latest release?


Why is TranchToken.sol needed?

Hi,
I was going through your code and I was wondering why a modified version of the ERC20 token was implemented under TrancheToken.sol, in particular why the interface IPolicyTranchTokensFacet is needed. For example, you use this modified ERC20 version to create a TrancheToken in PolicyCoreFacet.sol, Line 102: TranchToken t = new TranchToken(address(this), i);
Could someone explain to a below average solidity developer? Is this because a delegatecall is used in the diamond implementation this operation is not allowed in such cases?
Best
Wladimir

Thanks for the question.
The TranchToken contract is supposed to represent a plain old ERC-20 token contract, and as you noted, is what gets deployed when we wish to deploy a new tranche token. Internally, it calls through to its owing policy for its actual logic because we want the policy to have control over what happens with its tokens, and this then allows us to upgrade the tranch token logic by just upgrading the policy.
Now, regarding the IPolicyTranchTokensFacet code. If we were to refer to PolicyTranchTokens from within PolicyCoreFacet then the entire bytecode of PolicyTranchTokens would need to be included in the deployment of PolicyCoreFacet - this is generally true for Solidity. In order to avoid this and minimize the final bytecode size we use interfaces throughout our codebase, hence why we have IPolicyTranchTokensFacet.
Note that coding to an interface is a generally accepted and recommended practice when it comes to OOP -> https://medium.com/javarevisited/oop-good-practices-coding-to-the-interface-baea84fd60d3


OAuth flow links are outdated/broken

In the first section of the page, these links are broken, and send users to the Graph homepage:
Microsoft Graph App authentication using Azure AD
Permission scopes
Additionally, the "Authentication Code Grant Flow" link sends to the v1 page. Should forward to the more recent v2 page: (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow)

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

ID: db6f55e2-dc4a-c0ac-296b-c41d02bea7f5
Version Independent ID: 767b1dbc-dd20-f5cd-7afa-bdd17458c233
Content: Microsoft Graph tutorial for Power Query
Content Source: powerquery-docs/samples/MyGraph/README.md
Service: powerquery
GitHub Login: @cpopell
Microsoft Alias: gepopell

@joshtransient Thanks for the feedback.
This issue is being marked as "Closed" because the MyGraph topic no longer exists.


Multiple Images DB saving but no images on server

HI,
I am uploading multiple images on a dingle field, all databse tables are saved correctly;
<?= $this->Form->create($listing, ['type' => 'file']) ?>
       <?= $this->Form->input('listing_images[]', ['type' => 'file', 'multiple' => true]) ?>
       <?= $this->Form->button(' Save') ?>
<?= $this->Form->end() ?>

Entries appear in the listing_images table with the fk correctly set but I no files are on my server. I have set the path to be:
'path' => WWW_ROOT . 'test' . DS,
I've created the folder in my webroot but nothing inside. I am on a windows box running WAMP on localhost. I have tested a custom upload script and that allows me to upload a file so it doesn't appear to be a server issue.
Any ideas?
TY.

You will need to ensure that directory is writeable by the process running your webserver.

Thanks - single upload work so looks like perms are fine. This is how I have the behavior setup

'listing_images[]' => [],

Has this been tested for multiple images on a single upload field? Could I be reporting a feature which isn't supported?

I've not written any tests for that, but I have tested multiple file uploads at once. It should work fine since the cake callback system is scoped per-entity.

I'm certain that it doesn't work, tested this comprehensively, best I can do is save the related hasMany db entries, the files themselves are not processed.

Can you gist what the output form html looks like?

Sorry, at work, otherwise I'd be inclined to test this out again now.

Sure this is the form mark-up:
https://gist.github.com/spacebiscuit/19a3d4f191a2924ab92cf44a5b5b53cf

What are the contents of $this->request->data?

$this->Request->data added to the gist:
https://gist.github.com/spacebiscuit/19a3d4f191a2924ab92cf44a5b5b53cf

I tried all day to try and modify the plugin to process multiple images, I cannot figure out the basics because there is some very odd behavior occurring that makes testing this next to impossible, I think it might be easier to just write my own module to handle this as the pluginlooks like it might be overkill for my needs.

Can you gist your two models?

Models as requested:
https://gist.github.com/spacebiscuit/4539b812fd0bba2a3bea9c0b3b3ecf5b
I think the problem is in the beforeSave of uploadedBaehvior in the plugin. It's expecting a single array for the file upload not an arrya of arrays. I thought I could probably wrap this in a loop but it looks like there is more work required.

Right, but each entry in that array should be saved individually, not as a group, so this tells me that its something upstream is going wrong. Let me see if I can get a reproduction in today.

BTW remember that the hasMany table saves correctly so it doesn't look to be a problem with the relations between models.

Yeah thats why it's strange. We should only be getting a single record in that save call, not every record.

Has there been any progress on this front?  I feel as thought I have a similar related use, but can't seem to get my head around it.  In my case, the database records aren't being created either. The set up is nearly identical to that of the OP.


VDK return non-zero return code on failure

What is the feature request? What problem does it solve?
When doing vdk run locally, it would be nice to return a non-zero return code when the job fails. This would allow scripting during development that could support things like requested in https://github.com/vmware/versatile-data-kit/issues/1205
Suggested solution
Non-zero return code from vdk when run command isn't successful.

Triaged. Closed as stale.


Abra error

Hi,
I am trying this tool to do realignment in a few regions, but got following error:
java.lang.NegativeArraySizeException
at java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:64)
at java.lang.StringBuffer.(StringBuffer.java:108)
at abra.CompareToReference2.getSequence(CompareToReference2.java:400)
at abra.KmerSizeEvaluator.getBases(KmerSizeEvaluator.java:44)
at abra.KmerSizeEvaluator.identifyMinKmer(KmerSizeEvaluator.java:98)
at abra.NativeAssembler.assembleContigs(NativeAssembler.java:273)
at abra.ReAligner.processRegion(ReAligner.java:592)
at abra.ReAlignerRunnable.go(ReAlignerRunnable.java:21)
at abra.AbraRunnable.run(AbraRunnable.java:20)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
My commandline is: java -Xmx8G -jar $ABRA --in ${inbam} --out ${outbam} --ref ${hg19} --targets ${bed} --working ~/abra/ > abra.log
Screen shots of errors  and target bed file are attached. I really appreciate if you could point me possible reasons.
Thanks,
Yuhong

Could you please email your complete log file and bed file to lmose at unc dot edu ?

I just sent you the complete log file and bed file. Please let me know if additional information is needed. Thanks a lot!


[WIP][spaceship] Backend changes from @snatchev, etc

Does it work for you?

I think https://github.com/fastlane/fastlane/pull/8251 supersedes this PR


Merge stable into main

Looks better than the rebase

Once we don't have conflicts anymore, we can create a new release


[LLGL] installs header files in the wrong directory

Describe the pull request

What does your PR fix? Fixes #15216
When LLGL is successfully built, the include file should be in ....\vcpkg\installed\x86-windows\include\LLGL, but it is actually in ....\vcpkg\installed\x86-windows\include\include\LLGL, The path is wrong. Modify the path of install in the CMakeLists.txt file to solve this problem.

All the features are tested successfully in the following triplets:

x86-windows
x64-windows
x64-windows-static

Thanks for the PR!


@dependabot reopen this PR

@dependabot reopen this PR
Originally posted by @MatEstrada in https://github.com/MatEstrada/github-slideshow/issues/2#issuecomment-761031824

comentario cerrado

comentario cerrado


Some Changes

in this PR i have added Captcha Validatioan Rule . so it is easier to validate wheater captcha is wrong or not .
also i have changed md5 algorithem to sha256 duo to more security . and also fixed composer.json

thank you, I'll change hash engine to random hash. I merge your pull request. good job


Overriding fields

So remix-forms allows overriding fields in a number of ways, but its API is still crusty if one wants to integrate a different UI library with it. Let's focus on the example of using NextUI: In NextUI the Input component expects the label as prop. In this case remix-forms allows the following overrides:
// overriding inside the form
<Form schema={schema} >
    {({ Field, Errors, Button, register }) => (
      <Field name="email">
        {({ Errors }) => (
            <>
            <Input {...register("email")} label="Email" />
            <Errors />
          </>
        )}
      </Field>
 )}
</Form>

This works fine, but it's tedious when all the fields have to be overridden in all forms. Now, one can also override the input component:
<Form schema={schema} inputComponent={InputComponent} />

const InputComponent = React.forwardRef<HTMLInputElement, JSX.IntrinsicElements["input"]>((props, ref) => {
  return (
      <Input {...props} label={props.???} />
  );
});

Turns out that because remix-forms assumes the label is a different react component, not just a string, the label is not passed down to the custom input component. Needless to say, overriding the Label component is useless, which leaves us with overriding the Field component.
<Form schema={schema} fieldComponent={FieldComponent} />

const FieldComponent = ((props: JSX.IntrinsicElements['div']) => {
  // props.children[0] is a label component
  return (
      <div {...props}>???</div>
  );
});

Now the issue is that the label is a component passed down to the custom field component as children, so accessing its props is a clumsy thing to do.
Maybe I'm missing something, but it would be nice to have a simpler way to override a full component, with plain (no components) props.

Yeah, component libs that do not match 1:1 the HTML tags in their components are trickier to integrate. That said, some people managed to do a decent job using renderField + useField + useFormState. Personally, I'd advise using Remix Forms with libs that have a 1:1 correlation with HTML, otherwise it might be too cumbersome.
At least until we devise a more flexible API :) we're very open to ideas! I'll leave this issue open for that reason.

I was able to solve this particular case using useField:
const FormInputField = React.forwardRef<HTMLInputElement, InputProps>(
    (props, ref) => {
        const { label } = useField()
        return (
            <Input
                ref={ref}
                {...props}
                label={label}
            />
        )
    }
)
FormInputField.displayName = 'FormInputField'

const EmptyComponent = () => null

export function MyForm() {
    return (
        <Form
            schema={schema}
            labelComponent={EmptyComponent}
            inputComponent={FormInputField}
        >

If desired, you can also use useField for custom rendering of error messages by passing errorComponent={EmptyComponent} as well.


Software Button

Would it be possible to create a software button for opposed to hardwired?
Thanks in advance.

OK, I'll bite, what would the advantage be?

Amazon actually has a Java based version that uses a GUI button: https://github.com/amzn/alexa-avs-raspberry-pi
If you are just looking for a way to activate Alexa without building a GPIO button setup and have a Bluetooth adapter and Wiimote, I found some code here on GITHUB and incorporated it into @lennysh music patch. Now I can activate Alexa by holding down the "A" button on a Wiimote that's been paired. I'm going to try and work on a way to use either the GPIO or Wiimote, but my coding is really rusty so it'll be a while.

@lennysh I have created a prototype remote. The remote & associated application are not running on the pi. I would like have the application trigger the Alexa opposed to a hardwired button. In any other scenario I would prefer a bluetooth connected device to kick off the interaction as well as a hardwired button on unit.
@bhowell09 I would be interested in what you have set up. Although I would attempt use the bluetooth device I am hacking.
Thanks for your responses.  Much appreciated.

just to throw my 2p in, I am using AlexaPi with an IR remote using lirc
I'm using one button press to start the conversation and one to end it.  If there's no end press, AP will give up after a certain time and process what it has.
It would be nice if we could end up with some code that supported all 3 options?

doubledrat can you show the code that you are using for doing it with an IR remote, Thats a good idea.
Also good idea the Wiimote support.
I'kk throw another idea: https://github.com/sammachin/AlexaPi/issues/45

+1 on the code to implement the WII remote solution

import lirc
sockid = lirc.init("alexa", blocking=True)

I'm also using variables for the LEDs so it's more obvious what's being done in the code.

listenLED = 24
processingLED = 25
lights = [listenLED, processingLED] # GPIO Pins with LEDs connected

most of the changes are to "start".

def start():
        recorded=False
        listenCount=0
        while True:
                val = lirc.nextcode()
                if (val  or listenCount>249): # we have an IR code or we've given up waiting for a stop code
                        if (val == ['stop'] or val == ['listen'] or listenCount>249) and recorded == True: # respond to stop or listen again.  or give up waiting
                                rf = open(path+'recording.wav', 'w')
                                rf.write(audio)
                                rf.close()
                                inp = None
                                print "sending to Alexa"
                                alexa()
                                recorded=False
                                listenCount=0
                                lirc.set_blocking(True, sockid) # nextcode will now wait until there's a code rather than consume all the CPU looping
                        elif val == ['listen']: # 'listen' pressed.  start recording
                                os.system('aplay -q {}what.wav'.format(path, path))
                                listenCount=1
                                GPIO.output(processingLED, GPIO.HIGH)
                                inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NORMAL, device)
                                inp.setchannels(1)
                                inp.setrate(16000)
                                inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
                                inp.setperiodsize(500)
                                audio = ""
                                l, data = inp.read()
                                if l:
                                        audio += data
                                recorded = True
                                lirc.set_blocking(False, sockid) # don't block while waiting for next IR command
                elif recorded: # no IR code but we're recording, so get more input from the mic
                        l, data = inp.read()
                        listenCount=listenCount+1
                        if l:
                                audio += data

I've configured lirc like this

egin
remote = squeezebox
button = KEY_PAUSE
prog = alexa
config = listen
flags = quit
end

begin
remote = squeezebox
button = KEY_STOP
prog = alexa
config = stop
flags = quit
end

(the remote I'm using is from my "squeezebox"

Thats a pretty good solution, only problem i have is i'm currently using my IR for my media center, thats why the WII remote would be better for me :-)

just in case you didn't know - you can have lirc recognise multiple remotes...

mean i don't have a free IR Receiver to hand.

They are cheap from ebay :). Thanks doubledrat hopefully i'll be able to copypaste that into the correct places :-)

creator72:  I think you could configure lirc to do both the media center and alexa.  If you use the pause button like I have, then you have the benefit of pausing whatever media you might be playing so you can talk to alexa - or you can use a button that you're not using for anything on your media center.  Just an idea :)
marksev1: let me know if you have any trouble, I can send you the .py file in it's entirety.  I'll try and work out how to create a branch once I've tested it further and if people are interested.  Thing is, it's missing the music playing and hopefully the upcoming alerts & timers functionality ;), so I might wait until that appears and mod that code.

I have managed to hack together the wii remote pairing and using the button 'A' to initiate alexa.
all the changes are after start():
def start():
        recorded = False
        last = 8
        while True:
                val = wm.state['buttons']
                if val != last:
                        last = val
                        if val == 0 and recorded == True:
                                rf = open(path+'recording.wav', 'w')
                                rf.write(audio)
                                rf.close()
                                inp = None
                                alexa()
                        elif val == 8:
                                GPIO.output(25, GPIO.HIGH)
                                inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsa$
                                inp.setchannels(1)
                                inp.setrate(16000)
                                inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
                                inp.setperiodsize(500)
                                audio = ""
                                l, data = inp.read()
                                if l:
                                        audio += data
                                recorded = True
                elif val == 8:
                        l, data = inp.read()
                        if l:
                                audio += data
if __name__ == "__main__":
        GPIO.setwarnings(False)
        GPIO.cleanup()
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(button, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        GPIO.setup(lights, GPIO.OUT)
        GPIO.output(lights, GPIO.LOW)
        GPIO.output(25, GPIO.HIGH)
        wm=cwiid.Wiimote()
        wm.rpt_mode = cwiid.RPT_BTN
        GPIO.output(25, GPIO.LOW)
        Rumble = False
        while internet_on() == False:
                print "."
        token = gettoken()
        os.system('mpg123 -q {}1sec.mp3 {}hello.mp3'.format(path, path))
        for x in range(0, 3):
                time.sleep(.1)
                GPIO.output(24, GPIO.HIGH)
                time.sleep(.1)
                GPIO.output(24, GPIO.LOW)

the Red LED will light up to tell you when to press 1+2 on the remote to pair it (i have the script running in the background so i can exit the terminal & keep the script running using 'sudo nohup ./main.py &' its a bit hack rough but so far its been working solid for 2 days now

Doesn't the Wii remote have a mic on it? Or am I mistaken?

no it has a speaker on it... good idea tho

Yeah...  Google confirmed it doesn't, lol...  Worth a thought...  :)

a mobile phone with a touch button would be the next best thing... just no idea how to incorporate that lol

Another user has already done something similar... Uses the phone mic for recording...

hmm, will go take a look!

Lennysh do you have a link to that guys implementation?

I should of posted it here first ... but I replied to Issue #50 above (similar question) before I read this ... also posted here: https://www.raspberrypi.org/blog/amazon-echo-homebrew-version/
With AlexaPi the issue is with the 2 states it requires to work properly ... other than using a simple button ... so (from what I can see) we are restricted to what's allowed by Amazon or the API changes to allow other triggers ...
Other activation processes, other than the simple switch, would need 2 states, to trigger the EchoPi, when asking a question … voice activation would not really work or be efficient enough (imho) because of the required 2 states, to make the EchoPi work properly.
iR could work if you have one button for activate and one for de-activate, you then have your 2 states, other than that it will be the same as the voice activation issue.
EXAMPLE (Using voice activation):
State 1:
Using a button: Button is pressed – Amazon is now waiting for your question.
Using Voice Activation Process: Voice activation has been initialised with a voice command – an electronic switch (transistor or whatever you decide to use) is engaged (closes the button circuit).
Intermediate state: Ask a Question: “Alexa what’s the weather like……..”
State 2:
Using a button: Button is de-pressed – You’re now waiting for the response from Amazon.
Using Voice activation process: Voice activation is still on (active) – therefore the electronic switch (transistor or whatever you decide to use) is STILL engaged (a closed circuit, i.e. button still pressed).
One workaround for voice activation, for it to work properly, would require a set time-delay (window) in which your your question is asked … then after that set time-delay it would switch off the electronic switch (transistor or whatever you decide to use), then ‘State 2’ would kick in and take effect and you would get your answer from Amazon.
I can see this to be a pain if you want to be quick and have a short question, plus getting in a long question (within that set time) may not be good enough for Amazon to process and could lead to errors. Even if you have another voice command to end the question, that could then be mistaken as part of the main question.
Just a thought … but would love to hear any work arounds

I have it working with IR and I just use one button.  One press to start recording another to stop it.  Also amazon themselves have released some code that answers the initial question, which is can it be done with a software button.
As for the request in issue 50, it's against the terms of use, but it would be possible using functionality akin to "jarvis" to capture the phrase and send it to alexa.

There you go ... you have the 2 states ;) ...

I like the IR remote button option thats neat! I'm trying to work out whats the best way to maintain the project with some of these cool customisations, I don't really want to have lots of forks as there's things to fix/improve in the main AVS code.
I've got a custom build running here thats playing the responses back through my office Sonos so I don't have to plugin an extra speaker.
It feels like there could end up being one very large project with lots of custom flags for things like sonos/IR remote/software button etc. Anyone got any ideas/suggestions how to maintain that?

+1 for IR support, also you could maybe add this - https://www.hackster.io/fcooper27/beagleman-56f174 :)
MQTT support would be nice if possible since most home automation software use MQTT (like Openhab, Node-red, Domoticz,..)..So if Alexa's answer could be relayed to mqtt as a string it would be super-nice.
And some way to interact with it with textual input from other python scripts or other terminal progams would be cool. Thats my wish list so far :)

Yeah wake word detection is probabbly the most requested feature, leaving aside the questions about it in the AVS licence I havn't seen one yet that doesn't have a high false positive rate so would keep waking up and feeding bits of random conversation/tvshows to alexa! That video is quite cool but I'd be curious to know if it works well day to day.
I'm not quite sure how MQTT fits in here? Are you talking about using it to control stuff like lights? in which case thats better done via an alexa skill or the home automation skills rather than this alexa front end.
However sending an MQTT event to start/stop recording could be interesting?
Yeah text is hard as AVS only takes voice files, so you'd end up generating a sound file to upload and I'm not sure how you'd parse the response I guess it would need some speech recognition, I think that would end up very clunky and error prone.

Regarding MQTT, does Alexa send back the spoken text string, if so I'd like that packaged in MQTT, so I could then act on that with other software.

No, it returns an audio response

The Alexa skill gets the spoken commands text but AVS just deals with
audio, it sounds like you'd be better off implementing a skill with its own
push channel back to another app running on the Pi, maybe use something
like pub nub to connect the skill on lambda to the Mqtt gateway on the Pi
On Tuesday, 19 April 2016, Lenny Shirley<EMAIL_ADDRESS>wrote:

No, it returns an audio response
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/sammachin/AlexaPi/issues/44#issuecomment-212106744

Regarding pocketsphinx, I was having a horrible time with it, then disabled
the auto gain on my microphone input, and it was picking up my keyword
nearly every time. This was in my office where we have a stand alone AC
unit running all the time, so lots of background white noise too.
On Tue, Apr 19, 2016 at 4:29 PM Sam Machin<EMAIL_ADDRESS>wrote:

The Alexa skill gets the spoken commands text but AVS just deals with
audio, it sounds like you'd be better off implementing a skill with its own
push channel back to another app running on the Pi, maybe use something
like pub nub to connect the skill on lambda to the Mqtt gateway on the Pi
On Tuesday, 19 April 2016, Lenny Shirley<EMAIL_ADDRESS>wrote:

No, it returns an audio response
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/sammachin/AlexaPi/issues/44#issuecomment-212106744

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/sammachin/AlexaPi/issues/44#issuecomment-212113789

@tube0013 The problem i had was with it picking up normal words in conversation and thinking that was the wake word, try leaving some talk radio on in the background for a bit and see if it triggers.

@sammachin that's a valid point, but I would think being able to configure the trigger word to something less commonly spoken is a valid mitigation.  A bigger issue, would be how to deal with any Skill that requires further responses, like wikipedia, and the tell me more command.  You have to issue the trigger word for each response.  Also if it was working with music, how would you issue the pause/next/stop commands.  These are all issues Amazon has worked out with the Echo.  But they also fall victim to the false positives for the Alexa keyword.  I think it's a running joke that their Echo Commercials set off peoples echos in their homes.

The false positives I was seeing in my testing wernt due to bad choice of
keyword, even using alexa or nightingale or sausage I was getting it
triggered my conversation that didn't contain that word!
The interactive skills is pretty easy, the response from AVS indicates if
its expecting further input and you can just switch into recording mode
without looking for the wake word.
On Wed, Apr 20, 2016 at 2:22 PM, tube0013<EMAIL_ADDRESS>wrote:

@sammachin https://github.com/sammachin that's a valid point, but I
would think being able to configure the trigger word to something less
commonly spoken is a valid mitigation. A bigger issue, would be how to deal
with any Skill that requires further responses, like wikipedia, and the
tell me more command. You have to issue the trigger word for each response.
Also if it was working with music, how would you issue the pause/next/stop
commands. These are all issues Amazon has worked out with the Echo. But
they also fall victim to the false positives for the Alexa keyword. I think
it's a running joke that their Echo Commercials set off peoples echos in
their homes.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/sammachin/AlexaPi/issues/44#issuecomment-212422016

Maybe an active filter would help on the mic input, to reduce such audio discrepancies (false triggers)? ... tune it like, say, a bandpass filter ... and then fine tune it to the wake word maybe? ... this and a mic array (quite simple to build) are things I'd like to try when I get 5mins of electronic time ...

I am not getting the initial 'hello'. It hangs on 'connection ok'  Any suggestions?

Does AVS return the text of the response?

In a word, no.
On Wed, 27 Apr 2016 04:19 Matthew Luther<EMAIL_ADDRESS>wrote:

Does AVS return the text of the response?
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/sammachin/AlexaPi/issues/44#issuecomment-214959417

--
cheers
Bob

This thread it huge and covers so many different topics! I'm going to close it down as I think all the outstanding questions are at least answered if not solved.
If you have a new topic please start a new separate issue.


Terminate the test device if the flutter tool is signal-killed.

Closes https://github.com/flutter/flutter/issues/20949.
Signals (such as SIGTERM or SIGKILL) end up flowing through exitWithHooks, which in turn, after running hooks, call exit(). That means, as a result, any try { } finally { } guarded execution may not run, which happens to also be how flutter_tester instances are cleaned up if they have not terminated.
This PR adds in-progress flutter_tester runs (or any platform flutter_platform supports) to the shutdown hooks, guaranteeing that the finalizers (which in turn, kill the process) are always executed as long as either the test completes, or exitWithHooks is called.
The existing integration tests (integration.shard/test_test.dart) still pass as well.

Nice!


Support @attr syntax in style sheet.

Instead of attr("foobar") we should just support @foobar
(would need to support hyphenation @foo-bar)
that way this:
"color" do
  foregroundStyle(to_ime(attr("color")))
end

would become:
"color" do
  foregroundStyle(.{@color})
end

We gonna rethink the use of @ symbol. From: @bcardarella

Won't fix. According to Brian


Returns the Intent result

Changes
This PR adds some fixes to support GetResult from Intent of FDC3 v2.

I removed some mocked code (See 1st commit)
In some case, there was a race condition problem. The getIntentResult was called before the call to "setIntentResult". Consequently, the intent result was undefined. So, I made a change to return a promise that will only be resolved by setIntentResult. (See 2nd commit)

Demo
Before the fix
Before the fix the intent Result was empty

And in the logs of Sail the intent result was returned before the call to setIntentResult

With the fix
With the fix the Intent result is correctly returned

And you can see that a promise is returned for getIntentResult

thanks @symphony-jean-michael  !  This looks great.  Will merge


Add oauth

Summary of packages with low scores
Minder detected that this PR is adding dependencies whose score is lower than the threshold configured with
Minder profiles. Below is a summary of the packages with low scores and their alternatives.

 Pkg
 Name
 Score
 Alternative Name
 Alternative Score

pypi
python-oauth2
4.8
No alternative found
-


Zemst IIB is listed as OIS 6, but was published as early Weichselian (=OIS 4)

Activity
Show details
Write a comment…
Diana Pushkina Mar 8, 2022 2:46 PM
Lars van den Hoek Ostende lisäsi sinut kortille Zemst IIB is listed as OIS 6, but was published as early Weichselian (=OIS 4) taululla NOW Development
Hi.
Thanks. Ill check this week.
Sincerely
Diana


Fetching the sitemap on the server-side results in a 403 error with Cloudflare page

Describe the bug
If you use another server route to fetch /sitemap.xml on a Cloudflare page, you will receive a 403 error.
Reproduction Steps
On a Cloudflare page:

Create a server route, such as /another-sitemap.xml.
Use $fetch to fetch /sitemap.xml within the server route.
You will receive a 403 error.

Server log:
[nuxt] [request error] [unhandled] [403]  (403 Forbidden (http://localhost/__sitemap__/routes.json))
   at async $fetch2 (bundledWorker-0.24281922276911239.mjs:2340:13)
   at async generateSitemapEntries (bundledWorker-0.24281922276911239.mjs:3649:16)
   at async buildSitemap (bundledWorker-0.24281922276911239.mjs:3676:12)
   at async bundledWorker-0.24281922276911239.mjs:3916:10
   at async Object.handler (bundledWorker-0.24281922276911239.mjs:1753:20)
   at async bundledWorker-0.24281922276911239.mjs:1796:7
   at async bundledWorker-0.24281922276911239.mjs:3972:20
   at async $fetchRaw (bundledWorker-0.24281922276911239.mjs:2323:21)
   at async $fetch2 (bundledWorker-0.24281922276911239.mjs:2340:13)
   at async Object.handler (bundledWorker-0.24281922276911239.mjs:1753:20)

Additional Context
Our use case requires:

Placing the sitemap in a location other than the default /sitemap.xml
Being able to make modifications before the sitemap is served

We would greatly appreciate any suggestions on how to achieve this.
Reproduction
No response
System / Nuxt Info
- Operating System: `Darwin`
- Node Version:     `v20.3.0`
- Nuxt Version:     `3.5.3`
- Nitro Version:    `2.4.1`
- Package Manager<EMAIL_ADDRESS>- Builder:          `vite`
- User Config:      `modules`, `nitro`, `devtools`, `runtimeConfig`, `sitemap`
- Runtime Modules<EMAIL_ADDRESS>- Build Modules:    `-`

Hey @DanSnow, thanks for the issue.
I believe what you're coming across is a nitro limitation/bug around it changing the headers for nested internal fetches.
To focus on your use case specifically, I've implemented a sitemapName option which will let you rename the sitemap, available in 2.7.0.
export default defineNuxtConfig({
    sitemap: {
      sitemapName: 'another-sitemap.xml',
    },
})

Modifying the sitemap before it's served is already possible, here's a code sample:
import { defineNitroPlugin } from 'nitropack/runtime/plugin'
import type { SitemapRenderCtx } from "nuxt-simple-sitemap";

export default defineNitroPlugin((nitroApp) => {
  nitroApp.hooks.hook('sitemap:sitemap-xml', async (ctx: SitemapRenderCtx) => {
    console.log('Sitemap SSR hook')
  })
})

Will close for now, but me know if you need any further help.


Relay MAC commands sent as a response to a relay forward request are ignored

When LBM is compiled with relay RX support, LBM will ignore relay MAC commands (FPort 0) which are sent as a response to a uplink forwarding request (FPort 226). This happens because the following part of the MAC command parser checks the TX port instead of the RX port:
https://github.com/Lora-net/SWL2001/blob/c4f386ac54b3e35f45b8ba7502207faa6f634921/smtc_modem_core/lr1mac/src/lr1_stack_mac_layer.c#L1424-L1440
I think this is a mistake, as non-relay MAC commands are processed, but relay MAC commands themselves cannot be sent as a response to a relay forwarding request. A possible fixup may be to check the RX metadata instead:
if( ( lr1_mac->rx_down_data.rx_metadata.rx_fport_present == true ) && ( lr1_mac->rx_down_data.rx_metadata.rx_fport == FPORT_RELAY ) )

Hello @adriansmares,
Thanks for the catch!
It will be fixed in the next release.
In the meantime, your proposal is valid.

Hello,
This issue was solved in the release v4.4.0-feature-relay.
I will let you close the issue if the fix is ok for you.

The fix looks good to me and I cannot reproduce this anymore in v4.4.0-feature-relay 👍 .


Add statementDescriptorSuffix to createPaymentIntent

Is your feature request related to a problem? Please describe.
When creating a payment intent, users can specify how they want a statement descriptor to be displayed after a transaction has completed. Through the stripe endpoints, a user has a couple different options to specify statement_descriptors depending on how their account is set up. One such example is if a statement_descriptor_prefix (shortend) is defined for an account, a user can define a "statement_descriptor_suffix" which allows the user to combine prefix and suffix to generate their statement descriptor.
More information about statement descriptors can be found here
Describe the solution you'd like
Add statmentDescriptorSuffix as a CreatePaymentIntentParams parameter.
Describe alternatives you've considered
A workaround for the time being would be to use the provided statementDescriptor parameter where I create the desired prefix/suffix statement descriptor output in code.

Added support for it on the latest release: https://github.com/stripe/stripe-terminal-react-native/releases/tag/v0.0.1-beta.14


pkg/injector: Enable podIP proxying via meshconfig setting

Fixes #4653. Allows customers to choose how their traffic gets proxied
Signed-off-by: Keith Mattix II<EMAIL_ADDRESS>
Description:

Testing done:
Unit and E2E tests

Affected area:

Functional Area

New Functionality
[X]

Control Plane
[X]

Install
[X]

Networking
[X ]

Sidecar Injection
[X]

Please answer the following questions with yes/no.

Does this change contain code from or inspired by another project? no

Did you notify the maintainers and provide attribution? no

Is this a breaking change? no

Has documentation corresponding to this change been updated in the osm-docs repo (if applicable)? yes

Codecov Report

Merging #4701 (dc50d7e) into main (f922b5c) will increase coverage by 0.07%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #4701      +/-   ##
==========================================
+ Coverage   69.48%   69.56%   +0.07%
==========================================
  Files         217      217
  Lines       15495    15535      +40
==========================================
+ Hits        10767    10807      +40
  Misses       4678     4678
  Partials       50       50

Flag
Coverage Δ

unittests
69.56% <100.00%> (+0.07%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/injector/init_container.go
100.00% <100.00%> (ø)

pkg/injector/iptables.go
100.00% <100.00%> (ø)

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 f922b5c...dc50d7e. Read the comment docs.


Correction for raw affiliation Haihe Laboratory of Sustainable Chemical Transformations, Tianjin 300192, PR China

Correction needed for raw affiliation Haihe Laboratory of Sustainable Chemical Transformations, Tianjin 300192, PR China
raw_affiliation_name: Haihe Laboratory of Sustainable Chemical Transformations, Tianjin 300192, PR China
new_rors:
previous_rors: 03q99v794
works_examples: W4391886981;W4391152211;W4391483827;W4390955661;W4392350091;W4391589837;W4391234059;W4401116781;W4396732543;W4400252857;W4400259543;W4400673241;W4401316222;W4401854095
contact: 4822ea3298f680ff229c8aee7889586d:91a065c2c631a353475c2df826d1 @ univ-lille.fr

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


How can I add rounded corners to Popup menu?

Hi,
I hope this will be possible once AndroidX migration happens: #31
I haven't checked this though... I'll try to put a sample in of how to do this

Thank you @zawadz88

@TikTak123 So this should be possible even in the current version.


Add version number to install header

Adds the version number to the main install header

Unfortunately currently the dist-manifest does not include the date, should I try to fetch it some other way or shjould we add it to the manifest?
related: https://github.com/axodotdev/oranda/issues/194

closed because I can't git
https://github.com/axodotdev/oranda/pull/217


Add copyright header for sbom_generation.yaml file

Description
Add copyright header for sbom_generation.yaml file and
Remove build_spec.yaml as it is replaced by sbom_generation.yaml
Motivation
The copyright header is necessary for the sbom_generation because it is an oracle own code
The build_spec.yaml file is not used by Github Compliance Audit Service anymore and should be removed

Shouldn't this have a license header on it like the build spec used to?

@Craigacp could you please merge if everything looks good to you?


Language change example

Hi guys,
Can you add an example how I can change recognition language? I'm trying to make Russian eWallet assistant.
What I've tried: change "lang": "RU", to RU and to create Russian agent on your site.
P.S.: I know some of you are Russian :).

Done


MacOS Version?

Hi, will there ever be a macos version of twitchlink?

I'll try it soon, maybe someday.
Duplicate of #5


EZDZ loads saved settings even with class="do-not-save" on the

Actually the EZDZ does not read the saved settings of uguisettings.json without the do-not-save either. It does however show in the app that they are loaded. But come up empty as I runcmd.
I'm on macOS 10.13.1

Also for v1.2.1 it says bug fixed: Update folder picker on load settings. This does not work for me either.

@Aspvik
I tested this in 1.3.0 and the bug occurs, however when testing in the master branch, the bug does not. I presume this is something I fixed a long time ago. You can try replacing the ugui.js file with the one from master:

https://github.com/UniversalGUI/UGUI/blob/master/_scripts/ugui.js

Thank you so much for replying to me! Very, very happy you made ugui so it easy for us non-programmers to easily make gui’s. I have two already. Will post them on reddit when ready.
Rune
Sent from my iPhone

On 12 Nov 2017, at 18:13, The Jared Wilcurt<EMAIL_ADDRESS>wrote:
@Aspvik
I tested this in 1.3.0 and the bug occurs, however when testing in the master branch, the bug does not. I presume this is something I fixed a long time ago. You can try replacing the ugui.js file with the one from master:
https://github.com/UniversalGUI/UGUI/blob/master/_scripts/ugui.js
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Hi again! Just cloned master branch and yes, now do-not-save works for all elements. However folder picker and ezdz does not create/update the window.ugui.args on load settings.
Here's the uguisettings.js
uguisettings.json.txt
And here is the code I use. Maybe it is something I'm doing wrong. But it works for all other types of element so it should be good. Also, I have never coded anything before. So the coding is probably very awful.
`function createMid(){
var ff = pathToProject + "bin/ffmpeg";
var ffcommands1 = ugui.helpers.parseArgument(" -y -i '((VidWalk))'");
var ffcommands2 = ugui.helpers.parseArgument(" -i '((VidTakeoff))'");
var ffcommands3 = ugui.helpers.parseArgument(" -i '((VidPlane))'");
var ffcommands4 = ugui.helpers.parseArgument(" -i '((VidAir))'");
var ffcommands5 = ugui.helpers.parseArgument(" -i '((VidSong.fullpath))'");
var ffcommands6 = " -filter_complex '[0:v:0] [1:v:0] [2:v:0] [3:v:0] concat=n=4:v=1:a=0 [v]'";
var ffcommands7 = " -map '[v]' -map 4:a -preset ultrafast -shortest 'temp/part2.mp4'";
var ffstring = ff + ffcommands1 + ffcommands2 + ffcommands3 + ffcommands4 + ffcommands5 + ffcommands6 + ffcommands7
var parameters = {
'executableAndArgs': ffstring,
'returnedData': function(data) {
console.log('The text from the executable: ' + data);
},
'onExit': function(code) {
console.log('Executable finished with the exit code: ' + code);
createVid()
},
}
document.getElementById('status3').value = 'Processing (2/3) Please wait...';
ugui.helpers.runcmdAdvanced(parameters);
}
function createVid(){
var passName = ugui.helpers.parseArgument("((VidName))");
var ff = pathToProject + "bin/ffmpeg";
var ffcommands1 = " -i 'temp/part1.mp4'";
var ffcommands2 = " -i 'temp/part2.mp4'";
var ffcommands3 = ugui.helpers.parseArgument(" -i '((VidLanding))'");
var ffcommands4 = ugui.helpers.parseArgument(" -i '((VidOutro.fullpath))'");
var ffcommands5 = " -filter_complex '[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] concat=n=4:v=1:a=1 [v] [a]'";
var ffcommands6 = ugui.helpers.parseArgument(" -map '[v]' -map '[a]' -preset ultrafast -shortest '((outputFolder.fullpath))'/$(date +%d.%m.%y)-$(date +%H.%M)'-((VidName)).mp4'");
var ffstring = ff + ffcommands1 + ffcommands2 + ffcommands3 + ffcommands4 + ffcommands5 + ffcommands6
var parameters = {
'executableAndArgs': ffstring,
'returnedData': function(data) {
console.log('The text from the executable: ' + data);
},
'onExit': function(code) {
console.log('Executable finished with the exit code: ' + code);
document.getElementById('status3').value = 'Finished with: ' + passName;
},
};
document.getElementById('status3').value = 'Processing (3/3) Please wait...';
ugui.helpers.runcmdAdvanced(parameters);
}
$('#finish').click( function(event) {
event.preventDefault();
var ff = pathToProject + "bin/ffmpeg";
var ffcommands1 = ugui.helpers.parseArgument(" -y -i '((VidIntro.fullpath))'");
var ffcommands2 = ugui.helpers.parseArgument(" -i '((VidGround))'");
var ffcommands3 = " -filter_complex '[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]'";
var ffcommands4 = " -map '[v]' -map '[a]' -preset ultrafast 'temp/part1.mp4'";
var ffstring = ff + ffcommands1 + ffcommands2 + ffcommands3 + ffcommands4
var parameters = {
'executableAndArgs': ffstring,
'returnedData': function(data) {
console.log('The text from the executable: ' + data);
},
'onExit': function(code) {
console.log('Executable finished with the exit code: ' + code);
createMid();
},
};
document.getElementById('status3').value = 'Processing (1/3) Please wait...';
ugui.helpers.runcmdAdvanced(parameters);
});`

Hello again!
As you said; cloning the master branch fixed the do-not-update issue. Thank you!
However. The folder picker does not change the UI On load.
Ezdz and folder picker does update window.ugui.args on load. But as soon as I interact with the application i.e. type something in another input or select a file in another ezdz, something instantly clears the objects that were loaded from uguisettings.json.

Here is a 30 sec video that shows the issue:
SaveLoad.mov.zip


HSEARCH-951 excludeLimit() has no effect on QueryBuilder.range().above()

HSEARCH-951 excludeLimit() has no effect on QueryBuilder.range().above() queries

Thanks for that. Applied the patch and added a test case


Supplier information missing in the SBOM

          Hi Tim,

Since BlackDuck team does not have a separate to analyze the SBOM I was not able to give you an update.
But I have one more query regarding the SBOM generated using the syft tool.
I am using the below command to generate the SBOM. I have also attached the SBOM for your reference.
#syft dir:/home/RHEL7WORK/ -o spdx-json=071724minimalos.spdx.json
We have not able to get the supplier information in the SBOM generated. We are using SBOM editor for reviewing the SBOM.
Can you check SBOM and confirm what could be the issue with supplier information or it's available in SBOM and not visible only in the SBOM editor. And are there any tools to check the supplier information?
071724minimalos.spdx.json
Regards
Naranthiran Duraisamy
Originally posted by @Naranthiran in https://github.com/anchore/syft/issues/2840#issuecomment-2232586735

It looks like we are pulling vendor info https://github.com/anchore/syft/blob/034a98f02972e94cbf3dddfdd116b94176a9d56e/syft/pkg/cataloger/redhat/parse_rpm_archive.go#L29-L34 and we're mapping that into the SPDX supplier https://github.com/anchore/syft/blob/034a98f02972e94cbf3dddfdd116b94176a9d56e/syft/format/internal/spdxutil/helpers/originator_supplier.go#L94-L101 it might be that we're not correctly getting the vendor in the cataloger.
We should at the very list start capturing errors to a trace log (they are currently being thrown away) so we can get more visibility into this.

Hi Alex,
If we could have a fix, it would be helpful for us.
Regards
Naranthiran Duraisamy

Hi @Naranthiran  -- are you able to provide a public image or other steps to reproduce this problem?
We have test RPMs that include the vendor information and this information gets properly output as SPDX suppliers, so there may be something else going on here.
Example (from this repo):
cd syft/pkg/cataloger/redhat/test-fixtures
make rpm
syft . -o spdx-json

... includes:
"supplier": "Organization: Fedora Project",

I've added a PR that logs errors when parsing these, it would need debug logging enabled (-vv): https://github.com/anchore/syft/pull/3051
It's possible the RPMs you are scanning simply may be missing this information, but there could be something else going on here. Without more information it will be hard to make any more changes to improve this, though.

HI Keith Zantow,
I am trying to generate the SBOM with RedHat 7.9 packages.
Steps to reproduce:
1)Mount the RedHat 7.9 ISO and copy the rpm files to the folder.
2)Run the below command to generate the SBOM.
#syft dir:/RPM_folder_path/ -o spdx-json=071724minimalos.spdx.json
3)Import the SBOM generated in the SBOM editor and check the supplier info against the package.
Regards
Naranthiran Duraisamy

Hi Keith Zantow,
Were you able to reproduce the issue?
Please let me know if any inputs are required from my side..
Regards
Naranthiran Duraisamy


Questions please!

Hi, thanks for your contribution.
I have several questions:

Has the project achieved the accuracy of the paper? You use a cyclegan to produce the blur data, but the paper not use the cyclegan.
What datasets are used for training? The training script implies that the train dataset has a length of 44185.
The architechture of vgg19 used by the discriminator seems not right in the codes. And the last layer feature of vgg16 is not used in perceptual loss, which is a bit difference from other projects.  Why?

I am looking forward to your reply.

A1: The latest training code has not been released yet (as I am busy with articulation these days) and the current training code does not achieve the accuracy in the article. I will upload the correct code in August (or sooner). About CycleGAN, at the beginning I didn't notice the method of implementing unpaired learning in the article, so I first used CycleGAN to train.
A2: Dataset is Gopro-Large and this paper's own publicly available dataset. Here . About 44185, tfrecord in pytorch doesn't have __len__ method, you need to artificially set the length of the dataset. (lmdb recommended)
A3: About feature_extraction, Perhaps this page will solve your problem. About class GAN_D, do you mean replace batchnorm with instancenorm?. About the last layer feature of vgg16, only four layers of features are generally used to calculate perceptual loss. See this paper's Fig. 2. Of course you can also extract more features if this is necessary.
I hope these answers will help you.

Thank you for your quick reply.
About class GAN_D, I mean the version in your script is a reduced vgg19, only with 10 layers.
And have you finished the correct version? If so, I hope I can see your updated version asap.

Thank you for your quick reply. About class GAN_D, I mean the version in your script is a reduced vgg19, only with 10 layers.
And have you finished the correct version? If so, I hope I can see your updated version asap.

about numbers of layers, see here

Thank you for your quick reply. About class GAN_D, I mean the version in your script is a reduced vgg19, only with 10 layers.
And have you finished the correct version? If so, I hope I can see your updated version asap.

about numbers of layers, see here

Yes, the official version is right. But in your implementation about train_blur, the GAN_D is implemented as here, only with 10 layers.
And I also find a lot of differences in your project with the original paper.
I am looking forward to see your revised version asap.
Thanks a lot.

Thank you for your quick reply. About class GAN_D, I mean the version in your script is a reduced vgg19, only with 10 layers.
And have you finished the correct version? If so, I hope I can see your updated version asap.

about numbers of layers, see here

Yes, the official version is right. But in your implementation about train_blur, the GAN_D is implemented as here, only with 10 layers.
And I also find a lot of differences in your project with the original paper. I am looking forward to see your revised version asap. Thanks a lot.

In fact, the discriminator in the official implementation consists of 10 B.conv_block.
Please wait one to two weeks for me to make the code public, if you don't mind you can contact me by email: hjk1938927583 AT 163 dot com
Thanks.


Checkpoint Sync doesn't work with Nimbus eth2

When entering a correct and working cl node (e. g. infura) nimbus fails to start:
Unrecognized option 'trusted-node-url'
Try nimbus_beacon_node --help for more information.

I may have been to fast implementing this 😅 seems like syncing from a trusted src is an action other than a startup property: nimbus

solution would be to run 2 commands after each other:

checkpoint sync command: finishes when checkpoint sync was successful or when beacon chain database already exists
normal beacon chain command


matrix-appservice-irc: init at 0.20.3

Motivation for this change
This is a new package the matrix-appservice-irc which is the irc gateway used with matrix. The package is based on the existing .matrix-appservice-discord, and the rest is generated by node2nix.
Things done

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

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

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

Tested on an just started container with nix:
$ podman run -ti --rm  -v ~/src/nixpkgs:/nixpkgs nixos/nix:latest
# NIX_PATH=nixpkgs=/nixpkgs nix-build '<nixpkgs>' -A matrix-appservice-irc

Attempt number 8 it is :rofl:

oh lol, should've checked first :)


Standardize repo into the same practices as core mesa repo

We want to make sure that this repo matches the practices of https://github.com/projectmesa/mesa. Here is a checklist. I am sure I forgot things, so please add them as you see fit.

[x] Add issue template
[ ] Add CI/CD
[x] Add discussions
[x] Convert to rebase to PRs
[x] Get PyPI access for deployments
[x] Create a Read the Docs
[ ] Add cookiecutter

Anything else?

[ ] Rename master to main

[ ] Add code of conduct
[ ] Update license year
[ ] Add CONTRIBUTING.rst
[ ] Add CITATION.bib (but I figured that there is no publication on Mesa-Geo yet?)

[ ]  Add CITATION.bib (but I figured that there is no publication on Mesa-Geo yet?)

That's right! But I'm working on it at the moment.

There are two remaining items:

[ ]  Add CI/CD

Currently the CI/CD of Mesa-Geo is pretty much the same as that of Mesa.

[ ]  Add cookiecutter

Do we really need a separate template for Mesa-Geo? Perhaps mesa startproject is already sufficient?
If not shall we go ahead and close this ticket?

since I have been in the cookiecutter stuff recently -- I would like to take a few minutes today to consider the last item.
We need more improvements in general in our CI/CD, but if it the same as the main project, then that is what we are looking for at this time.

Having a separate template for Mesa-Geo might be a good idea - to have a template that creates GeoAgent and uses GeoSpace in models.
Have created https://github.com/projectmesa/mesa-geo/issues/133 for this.


Improve Status notification behaviour

Curretly we have the status update reporting an error on github status while the feature is being relink.
This PR avoids this intermediate error step which makes it better for usability.

HandlePullRequestEvent seems no longer used. Remove class?

Some of the feedback is already addressed in unpushed work. We'll push the latest now.

@andistuder please re-review

LGTM.. Let's merge this asap, so we can prepare approval of the parent branch. I move the comment on tickets_for_versions into there..

No need to have a Shipment Tracker Feature review as this is not a PR to master ;)


ips-state: test flow pass for ip-only rule with negation

Ticket: #5361
Requires Suricata PR: https://github.com/OISF/suricata/pull/7402

Suricata PR was merged


set slot fixes

(1) case insensitive slot name support
(2) preserve set slot's inner slot when just single sub-id slot updates

why are slot names case insensitive?

sorry, it's the comment that is confusing. slot names ARE case sensitive, and because they are, the regex to recognize them should be case insensitive.


Filter of Possibly is wrong

At the moment, if you have an input like value :: Element Possibly Bool and one of the values is tombstone, then it will be filtered out:
filter value ~> blah

actually becomes
filter (value == Right True) ~> blah

but really, it should be something like
filter (value == Right True || isLeft value)
~> if    isLeft value
   then ??
   else blah

actually in this case, if it is tombstone, we could just say
filter (value == Right True || isLeft value) ~> blah

because if the filter predicate is tombstone, it will bubble up if it is used in the rest "blah".

This is fixed; I just made it treat errors as true predicates.

The beautiful thing about treating errors as true predicates is that any error in the predicate will bubble up if the same error (ie tombstone) is used in the body...

Reopen

This makes count do funny things. If you want to count the number of values larger than 50..
filter value > 50 ~> count

This actually lets the tombstones/errors through as well, but they aren't forced by the count, just counted.
We can define a different version of count that forces evaluation of some element:
# hack for forcing a;
# (case a | _ -> b end) doesn't work because desugars to nothing
seq a b = case a==a | True -> b | False -> b end.

count' v = let fold c = 0 : seq v c + 1 ~> c.

Must modify desugar to allow saner seq

how do you modify desugar (actually, the simplification after desugar...) to allow seq?

maybe leave case x | _ -> y end as a single-arm case, so that ReifyPossibility can convert it to case x | Left err -> err | Right _ -> y end , if x is possibility.
then probably change ToCore to actually do the simplification current desugar is doing it.
ehhh

that feels a bit uncomfortable... but I suppose having some force/seq primitive is a bit overkill, hm.

not sure. seems weird to have a seq primitive when we can write one. if you can think of a better way, let me know

@HuwCampbell is working on a seq primitive, so this is actually ok.

I've merged in a Seq primitive to Source. Closing.


Why different effect

The UI is different because of the design spec...however you can change this & make the tablet have the same UI effect as the mobile by using this:
// Disable the left bar on tablets and behave exactly the same on mobile and tablets instead.
mBottomBar.noTabletGoodness();

thank you

If your issue now fixed... Could you add this to your title "[SOLVED]" & close this issue?


Non-Local Wordpress getting 404 on bundle.js for generated theme

This is more of a question than an issue, not sure how else to contact you.
This is working perfectly on my local Wordpress.  When I transfer the theme to my actual wordpress account and activate the theme, the index file gets a 404 on "theme"/static/js/bundle.js.  When I SSH into my box, I can see that the bundle.js file is there even though it's getting a 404.
Do the WPBuild and WPstart commands have to be run on the particular box it's running on?  Or could you export the entire theme and expect it to work out of the box?
Thanks.

No worries, just based on a guess here, but I'm guessing your root path on your dev machine is different than on the prod machine.
Check out this section of the README on how to set root before running wpbuild:
Build Configuration

That's definitely it.  Thanks a bunch.


GH API rate limiting (+ pagination)

The hosted VMs do not have a lot of IP addresses, so if you are calling the GH API without a token, then you'll be rate limited.
The other potential issue is that there is no documented order for the releases, so you might need to paginate. There is an endpoint for the latest release (https://docs.github.com/en/rest/reference/releases#get-the-latest-release I think this) but I am not entirely sure if this is the one you'd want, if pandoc creates releases for older branches.

but I am not entirely sure if this is the one you'd want,

The original intention was to offer the user the ability to specify a semver spec for their rewuired version (for example, ^2.17). However, this did not work out as pandoc does not use proper semver.
Using the latest endpoint would be the correnct thing to do here.
The Pandoc website currently points to https://github.com/jgm/pandoc/releases/latest as a download link to the "latest installer". I am assuming that this is the same release that the API will point to, so this might be stable for long enough for us.
I could not find any reliable information on rate limits of unauthenticated requests. However, the thing that would probably solve these issues would using the GITHUB_TOKEN.

I could not find any reliable information on rate limits of unauthenticated requests. However, the thing that would probably solve these issues would using the GITHUB_TOKEN.

https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting
60 requests per hour


Mark old admin interface configuration as deprecated

This patch moves all configuration only affecting the old admin interface to the bottom of the configuration file and marks them as deprecated.
This doesn't mean that they can't be used in the future if certain features are re-implemented. But for now, they just don't do anything.
To help identifying if properties are used in the new admin interface I used the following script (and made sure they are also not used in Opencast's backend code):
#!/bin/sh

sed -n 's/^#\{0,1\}prop\.\([^ =]*\)[ =].*$/\1/p' org.opencastproject.organization-mh_default_org.cfg \
| while read prop
do
  (
  cd ../../opencast-admin-interface/
  if grep -rnql "$prop" src
  then
    printf '%4s  %-60s %s\n' yes "${prop}" "used by admin interface"
  else
    printf '%4s  %-60s %s\n' no  "${prop}" "not used by admin interface"
  fi
  )
done

Your pull request should…

[ ] have a concise title
[ ] close an accompanying issue if one exists
[ ] be against the correct branch
[ ] include migration scripts and documentation, if appropriate
[ ] pass automated tests
[ ] have a clean commit history
[ ] have proper commit messages (title and body) for all commits

Since this is documentation and may confuse people in 16.x if this is not in place, I'm merging this.


Allow horizontal scrolling WITH word wrapping enabled!

When working with files with deep intendations, it's very useful if scope is placed near the left side of viewport, which is kind of standard behaviour without word wrapping. Word wrapping is also very useful feature, but as soon you enable it, you're sticked to the first column and forced to watch all the intendations and actually work in a small portion of viewport. Why it didn't allow to scroll to the real last column or whatever, while still wrapping to viewport? Isn't word wrapping virtual?
I thought editor.wordWrap = bounded with editor.wordWrapColumn = 1000 will enable this kind of behaviour. But they're not! What's the point in "bounded" then? Just to fit some guide while outsizing viewport? Bruh.
Maybe I do something wrong or can't find the right extension (and I've searched a lot)?

@Servail I don't understand what you want. A clarification of what we have:

editor.wordWrap: off: no wrapping
editor.wordWrap: on: wrapping at viewportColumn (value depends on the width of your editor)
editor.wordWrap: wordWrapColumn: wrapping at the setting editor.wordWrapColumn (value configured in settings)
editor.wordWrap: bounded: wrapping at min(viewportColumn, editor.wordWrapColumn).

What kind of behavior are you looking for and can you please provide an example of an application that has it?

@alexdima I want wordWrap: on, but alongside with horizontal scrollbar like with wordWrap: off. So when I scroll that scrollbar, first column hides behind the left side of viewport (as with wordWrap: off) and wrapped words dynamically unwrap (like when outsizing editor width with wordWrap:on) to original single line (which length+scrollBeyondLastColumn defines the size of available "virtual" scrolling area). Basically it's dynamic word wrapping based on "virtual" horizontal viewport position. Same as wordWrap: off, but with elapsed line endings wrapped around, ideally to min(wrappingIndent, viewportLeftColumn). Sadly, I don't remember any app with this feature (maybe VSCode will be the first?).
P.S.: I quoted "virtual" because I thought the entire wordwrap feature was virtual (or maybe better word - visual) in the first place. Now I doubt, and think that issue originates in electron itself (as there's no horizontal scroll API for extensions), so maybe it's possible to implement vice-versa.
P.S.S.: If it's still not enough... just open VSCode, move window closer to the left side of your display, enable wordwrap and put some long line of text. Now expand the editor a bit by dragging right edge of VSCode window, and then move window to the left outside your display by the same amount. Repeat until text unwrap into a single line (most part of it will be hidden behind the screen, and you'll be able to see only the ending). That's the wrap-scroll feature that I... propose now, I guess? Leaving you with wide, wide window... :----)


Refactoring classes

Codecov Report
Attention: 14 lines in your changes are missing coverage. Please review.
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Files
Coverage Δ

...stela/cleverclient/http/HttpInvocationHandler.java
75.00% <ø> (ø)

.../sashirestela/cleverclient/http/HttpMultipart.java
0.00% <ø> (ø)

.../sashirestela/cleverclient/http/HttpProcessor.java
96.66% <100.00%> (ø)

...hub/sashirestela/cleverclient/http/ReturnType.java
95.91% <ø> (ø)

...hub/sashirestela/cleverclient/http/URLBuilder.java
100.00% <ø> (ø)

...b/sashirestela/cleverclient/metadata/Metadata.java
85.00% <ø> (ø)

...stela/cleverclient/metadata/MetadataCollector.java
97.10% <ø> (-0.09%)
:arrow_down:

...stela/cleverclient/sender/HttpAsyncListSender.java
100.00% <100.00%> (ø)

...ela/cleverclient/sender/HttpAsyncObjectSender.java
100.00% <100.00%> (ø)

...ela/cleverclient/sender/HttpAsyncStreamSender.java
100.00% <100.00%> (ø)

... and 6 more

:loudspeaker: Thoughts on this report? Let us know!.


Fix a failing test with Jaeger exporter

Looks like the length of Jaeger span id is 15 with JDK7 and 16 with JDK8.
/cc @marccarre

Codecov Report

Merging #1063 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1063      +/-   ##
============================================
+ Coverage     81.72%   81.74%   +0.01%
  Complexity     1170     1170
============================================
  Files           184      184
  Lines          5500     5500
  Branches        507      507
============================================
+ Hits           4495     4496       +1
  Misses          869      869
+ Partials        136      135       -1

Impacted Files
Coverage Δ
Complexity Δ

...census/implcore/trace/export/SpanExporterImpl.java
98.38% <0%> (+1.61%)
7% <0%> (ø)
:arrow_down:

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 8190805...9c61d48. Read the comment docs.

The spanId is generated by OpenCensus and exported to jaeger, and then the integration test will fetch it from jaeger (encoded in json). I think the spanId's length might vary.
Better check the jaeger implementation.

SGTM, agree that the leading or trailing 0s are probably to blame.

Indeed, this looks like leading zeros are to blame.
Note that if the trace/span ID is 0L, then Jaeger simply returns "0".
Behaviour is similar for any small long value for the trace/span IDs (e.g. 1L -> "1").
Looking at SpanId#generateRandomId/SpanId#INVALID and TraceId#generateRandomId/TraceId#INVALID, it seems 0L is a forbidden value which is actively filtered out, but anything else has the potential to happen.
If we want to make the tests even more robust to such extreme (but possible) values, we could change the regexes to be {1,32} and {1,16} respectively. WDYT @songy23 and @HailongWen?

@marccarre That sounds reasonable to me. IIUC it's possible that we generate TraceId or SpanId with just a few digits, and having a wilder range for the regexes should make the tests more stable.
/cc @bogdandrutu


Crash when using miner

Description: Ticking block entity
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at me.steven.indrev.utils.UtilsKt.getChunkPos(UtilsKt.java:78)
at me.steven.indrev.blockentities.farms.MinerBlockEntity.machineTick(MinerBlockEntity.java:68)
at me.steven.indrev.blockentities.MachineBlockEntity.method_16896(MachineBlockEntity.java:77)
at net.minecraft.class_1937.method_18471(class_1937.java:552)
at net.minecraft.class_3218.method_18765(class_3218.java:423)
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:873)
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:813)
at net.minecraft.class_1132.method_3748(class_1132.java:93)
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:256)
at net.minecraft.server.MinecraftServer$$Lambda$5094/516821284.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

That seems odd... The Scan Output you placed on the machine did not have the chunk data. How did you get that scan?

As of 1.3.0-BETA this crash shouldn't happen anymore, but the miner doesn't work without the Scan Output corresponding to it's location. To get that, use the Chunk Scanner. Let me know if you have any other issues.

As of 1.3.0-BETA this does not happen anymore, however you need the corresponding Scan Output to the miner's location. You can get that by using the Chunk Scanner. Let me know if you have any other issues


Kendra and Comprehend allways in null ("sentimentResponse": null)

Where can i see the comprehend data in this new version?
i Read that this version can extract sentiment but cant find where are this data..
I try using QNAFreeText but in kendra i see this always.
        "recentIntentSummaryView": [           {             "intentName": "fulfilment_I*****",             "checkpointLabel": null,             "slots": {               "slot": "hi can i told you a secret"             },             "confirmationStatus": "None",             "dialogActionType": "Close",             "fulfillmentState": "Fulfilled",             "slotToElicit": null           }         ],         "sentimentResponse": null,         "kendraResponse": null,         "origQuestion": "i have a low positive mind so i need kill people and kill myself",         "errorFound": false       },

Hi @portacha
If you use the sample package "ConditionalChainingDemo" you can try it out.. the sample let's you enter free text comment at the end, and will display the sentiment.  The sentiment is also returned to the client in the Sentiment field of the demo.comment Session attribute.

I use that but the response is null. Do I need to do any additional configuration to activate this function?
{   "_index": "***-metrics_20200715_160729",   "_type": "_doc",   "_id": "49608922123521413653787558777455468104875316732386869250.0",   "_version": 1,   "_score": null,   "_source": {     "entireRequest": {       "_event": {         "messageVersion": "1.0",         "invocationSource": "FulfillmentCodeHook",         "userId": "******",         "sessionAttributes": {           "navigation": "{\"next\":\"\",\"previous\":[],\"hasParent\":true}",           "userLocale": "en",           "elicitResponseNamespace": "demo.comment",           "previous": "{\"qid\":\"40.leave.feedback\",\"a\":\"Please give us some feedback about this selection.\",\"alt\":{\"markdown\":\"***Please give us some feedback about this selection?***\"},\"q\":\"Leave Us Some Feedback\"}",           "elicitResponse": "QNAFreeText",           "userDetectedLocaleConfidence": "0.9968931674957275",           "userDetectedLocale": "en",           "demo": "{\"comment\":{\"FreeText\":\"I liked this review very much.\"}}"         },         "requestAttributes": null,         "bot": {           "name": "****",           "alias": "live",           "version": "3"         },         "outputDialogMode": "Text",         "currentIntent": {           "name": "fulfilment_Intentt****",           "slots": {             "slot": "The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it"           },           "slotDetails": {             "slot": {               "resolutions": [],               "originalValue": "The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it"             }           },           "confirmationStatus": "None"         },         "inputTranscript": "The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it",         "recentIntentSummaryView": [           {             "intentName": "fulfilment_I****",             "checkpointLabel": null,             "slots": {               "slot": "Leave Us Some Feedback"             },             "confirmationStatus": "None",             "dialogActionType": "Close",             "fulfillmentState": "Fulfilled",             "slotToElicit": null           }         ],         "sentimentResponse": null,         "kendraResponse": null,         "origQuestion": "The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it"       },       "_settings": {         "ENABLE_DEBUG_RESPONSES": "false",         "ES_USE_KEYWORD_FILTERS": "true",         "ES_NO_HITS_QUESTION": "no_hits",         "ES_USE_FUZZY_MATCH": "true",         "ES_KEYWORD_SYNTAX_TYPES": "NOUN,PROPN,VERB,INTJ",         "ES_SYNTAX_CONFIDENCE_LIMIT": ".20",         "ES_MINIMUM_SHOULD_MATCH": "2<65%",         "ES_PHRASE_BOOST": "4",         "ES_SCORE_ANSWER_FIELD": "false",         "ERRORMESSAGE": "Unfortunately I encountered an error when searching for your answer. Please ask me again later.",         "EMPTYMESSAGE": "You stumped me! Sadly I don't know how to answer your question.",         "DEFAULT_ALEXA_LAUNCH_MESSAGE": "Hello, Please ask a question",         "DEFAULT_ALEXA_STOP_MESSAGE": "Goodbye",         "SMS_HINT_REMINDER_ENABLE": "true",         "SMS_HINT_REMINDER": " (Feedback? Reply THUMBS UP or THUMBS DOWN. Ask HELP ME at any time)",         "SMS_HINT_REMINDER_INTERVAL_HRS": "24",         "IDENTITY_PROVIDER_JWKS_URLS": [],         "ENABLE_MULTI_LANGUAGE_SUPPORT": "true",         "MINIMUM_CONFIDENCE_SCORE": 0.6,         "ALT_SEARCH_KENDRA_INDEXES": [],         "ELICIT_RESPONSE_MAX_RETRIES": 3,         "ELICIT_RESPONSE_RETRY_MESSAGE": "Please try again?",         "ELICIT_RESPONSE_BOT_FAILURE_MESSAGE": "Your response was not understood. Please start again.",         "ELICIT_RESPONSE_DEFAULT_MSG": "Ok. ",         "ENABLE_REDACTING": "false",         "REDACTING_REGEX": "\\b\\d{4}\\b(?![-])|\\b\\d{9}\\b|\\b\\d{3}-\\d{2}-\\d{4}\\b",         "DEFAULT_USER_POOL_JWKS_URL": "*********"       },       "_type": "LEX",       "_userId": "*******",       "question": "The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it",       "session": {         "navigation": {           "next": "",           "previous": [],           "hasParent": true         },         "userLocale": "en",         "elicitResponseNamespace": "demo.comment",         "previous": {           "qid": "40.leave.feedback",           "a": "Please give us some feedback about this selection.",           "alt": {             "markdown": "***Please give us some feedback about this selection?***"           },           "q": "Leave Us Some Feedback"         },         "elicitResponse": "QNAFreeText",         "userDetectedLocaleConfidence": 0.9955196380615234,         "userDetectedLocale": "en",         "demo": {           "comment": {             "FreeText": "I liked this review very much."           }         }       },       "_preferredResponseType": "PlainText",       "_userInfo": {         "InteractionCount": 3,         "UserId": "******",         "FirstSeen": "Thu Jul 23 2020 18:46:04 GMT+0000 (Coordinated Universal Time)",         "LastSeen": "Thu Jul 23 2020 18:48:51 GMT+0000 (Coordinated Universal Time)",         "TimeSinceLastInteraction": 22.214       },       "_info": {         "es": {           "address": "*****",           "index": "*****",           "type": "qna",           "service": {             "qid": "*****I-ESQidLambda-1*****",             "proxy": "****-ESProxyLambda-******"           }         }       }     },     "entireResponse": {       "type": "PlainText",       "message": "Ok. ",       "session": {         "navigation": "{\"next\":\"\",\"previous\":[],\"hasParent\":true}",         "userLocale": "en",         "previous": "{\"qid\":\"40.leave.feedback\",\"a\":\"Please give us some feedback about this selection.\",\"alt\":{\"markdown\":\"***Please give us some feedback about this selection?***\"},\"q\":\"Leave Us Some Feedback\"}",         "userDetectedLocaleConfidence": "0.9955196380615234",         "userDetectedLocale": "en",         "demo": "{\"comment\":{\"FreeText\":\"The observers providing you with feedback will need positive reinforcement, too! Saying “That's great advice, I hadn't thought of it\"}}"       },       "card": {         "send": false,         "title": "",         "text": "",         "url": ""       },       "_userInfo": {         "InteractionCount": 4,         "UserId": "*******",         "FirstSeen": "Thu Jul 23 2020 18:46:04 GMT+0000 (Coordinated Universal Time)",         "LastSeen": "Thu Jul 23 2020 18:49:13 GMT+0000 (Coordinated Universal Time)",         "TimeSinceLastInteraction": 22.214       },       "plainMessage": "Ok. "     },     "utterance": "the observers providing you with feedback will need positive reinforcement too saying thats great advice i hadnt thought of it",     "answer": "Ok. ",     "topic": "",     "clientType": "LEX",     "datetime": "2020-07-23T18:49:13.441Z"   },   "fields": {     "datetime": [       "2020-07-23T18:49:13.441Z"     ]   },   "sort": [<PHONE_NUMBER>441   ] }

QnABot's use of Kendra and the configuration of questions using the QNAFreeText ElicitResponseBot are separate concepts. If QnABot can't find an answer in its own ElasticSearch database and it is configured with a Kendra index id, it will search Kendra for an answer as well, and present results that are found. This is a fallback mechanism.
When QNAFreeText is configured as an ElicitResponseBot for a qid, it allows the user to respond with any text. For example a user may ask a question that is answered by QnABot in its normal fashion. As part of the response, the question may chain to a feedback question. A chaining rule might be to chain to the question 'Did this help' which tells QnABot to lookup the question 'Did this help'. The configuration for 'Did this help' would include the use of QNAFreeText as an ElicitResponseBot. This configuration also specifies the namespace to store the result of the user's answer. As an example lets assume the namespace is 'feedback'. After the user enters feedback, the Lex session attributes will contain a property named "feedback". It will include both the FreeText value and the identified sentiment. In my example as part of the Lex session attributes this might be:
"feedback": "{"FreeText":"thanks for the information","Sentiment":"POSITIVE"}",
With version 4.1.0 of QnABot, each use of QnAFreeText, once complete, should provide a Lex session property that matches the configured namespace. Within this property, FreeText should contain the value uttered or typed by the user and Sentiment should contain one of the standard values from Comprehend sentiment analysis.


add mypy to get warnings on unreachable code, fix/ignore various small typing errors

Didn't see an option to warn on unreachable code in pyright, and I tried running Vulture for that but that started requiring me to disable 90%+ of it since it doesn't detect that visitor/leave functions are run, and a lot of other weirdness.
So I settled for running .. another type checker :partying_face: But disabled a couple error codes for now.
It did give some decent warnings on eval files though:

103: changing if statements' test from True to ... makes it clearer that the test isn't evaluated
104: infinite loops at module level turned off type checking (see #155 )
105: noreturn calls have to be split out to get type checking

It does feel silly to run double type checkers, but I'm progressively realizing that linting the h*ck out of the eval files is actually useful - despite how irritating it can be.

I'm progressively realizing that linting the h*ck out of the eval files is actually useful - despite how irritating it can be.

Oooh, yes.  One of the few things more annoying than a really strict linter is realizing that you should have started using one a while ago!

haha! so true, so true


The return parameter datatype is Platform::Array type for C++/CX

Kindly correct the return parameter type for C++/CX as above.

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

ID: e6b3b846-8817-348f-eb72-7f67df8cd816
Version Independent ID: a8466ff6-57ac-0b7c-f9c9-4db568292e37
Content: CryptographicBuffer.CopyToByteArray(IBuffer, Byte[]) Method (Windows.Security.Cryptography) - Windows UWP applications
Content Source: https://cpubwin.visualstudio.com/DefaultCollection/windows-uwp/_git/winrt-api-build?path=%2fwinrt-api-build%2fwindows.security.cryptography.cryptographicbuffer.yml&version=GBlive&_a=contents
Product: uwp
Technology: winrt-reference
Git Login: GrantMeStrength
Microsoft Alias: misatran

Hi, and apologies for the delay in responding. It looks like since this was filed, the language picker for this topic has had C++/CX removed from it. So there is no rendering of the C++/CX syntax here.
Apologies for that. Let's close this Not Repro.


Make seperate Contributor.md File

Make a separate Contributor.MD File

Also, remove the contributors section from the readme.

If you don't mind, will you assign this issue to me?

@shivam7374 please have a look at [this] (https://github.com/ShrinathPawar/Algorithm-Visualizer/tree/Adding-Contributor.md)!