[fix] emberAfCopyString should accept size_t size[TE4]

Problem
emberAfCopyString accepts uint8_t currently, however we should be able to pass longer buffer to emberAfCopyString.
Change overview
- void emberAfCopyString(uint8_t * dest, const uint8_t * src, uint8_t size);
+ void emberAfCopyString(uint8_t * dest, const uint8_t * src, size_t size);

Testing
Manaully tested.
This actually fixed the issue that lighting app will return empty string for some fields.
Run lighting app with this PR:
chip-device-ctrl > zclread Basic VendorName 1 0 0
[1625810123.223412][2381993:2381993] CHIP:IN: Marking old secure session for device 0x0000000000000001 as expired
[1625810123.223448][2381993:2381993] CHIP:CTL: OnConnectionExpired was called for unknown device, ignoring it.
[1625810123.223466][2381993:2381993] CHIP:IN: New secure session created for device 0x0000000000000001, key 0!!
[1625810123.223547][2381993:2381993] CHIP:DMG: SendReadRequest: Client[0] [ INIT]
[1625810123.223640][2381993:2381993] CHIP:IN: Secure message was encrypted: Msg ID 6
[1625810123.223652][2381993:2381993] CHIP:IN: Encrypted message 0x1094fb8 from 0x000000000001B669 to 0x0000000000000001 of type 2 and protocolId 5 on exchange 39021.
[1625810123.223665][2381993:2381993] CHIP:IN: Sending msg 0x1094fb8 to 0x0000000000000001 at utc time: 360074982 msec
[1625810123.223675][2381993:2381993] CHIP:IN: Sending secure msg on generic transport
[1625810123.223760][2381993:2381993] CHIP:IN: Secure msg send status No Error
[1625810123.223787][2381993:2381993] CHIP:DMG: Client[0] moving to [AwaitingResponse]
[1625810123.225107][2381993:2382000] CHIP:IN: Secure transport received message destined to fabric 0, node 0x000000000001B669. Key ID 1
[1625810123.225175][2381993:2382000] CHIP:EM: Received message of type 5 and protocolId 5 on exchange 39021
[1625810123.225212][2381993:2382000] CHIP:EM: Rxd Ack; Removing MsgId:00000006 from Retrans Table
[1625810123.225230][2381993:2382000] CHIP:EM: Removed CHIP MsgId:00000006 from RetransTable
[1625810123.225272][2381993:2382000] CHIP:DMG: ReportData =
[1625810123.225291][2381993:2382000] CHIP:DMG: {
[1625810123.225308][2381993:2382000] CHIP:DMG:  AttributeDataList =
[1625810123.225327][2381993:2382000] CHIP:DMG:  [
[1625810123.225344][2381993:2382000] CHIP:DMG:          AttributeDataElement =
[1625810123.225364][2381993:2382000] CHIP:DMG:          {
[1625810123.225383][2381993:2382000] CHIP:DMG:                  AttributePath =
[1625810123.225408][2381993:2382000] CHIP:DMG:                  {
[1625810123.225432][2381993:2382000] CHIP:DMG:                          NodeId = 0x1,
[1625810123.225451][2381993:2382000] CHIP:DMG:                          EndpointId = 0x0,
[1625810123.225490][2381993:2382000] CHIP:DMG:                          ClusterId = 0x28,
[1625810123.225509][2381993:2382000] CHIP:DMG:                          FieldTag = 0x1,
[1625810123.225526][2381993:2382000] CHIP:DMG:                  }
[1625810123.225548][2381993:2382000] CHIP:DMG:
[1625810123.225570][2381993:2382000] CHIP:DMG:                  Data = "TEST_VENDOR",
[1625810123.225590][2381993:2382000] CHIP:DMG:                  DataElementVersion = 0x0,
[1625810123.225609][2381993:2382000] CHIP:DMG:          },
[1625810123.225632][2381993:2382000] CHIP:DMG:
[1625810123.225650][2381993:2382000] CHIP:DMG:  ],
[1625810123.225672][2381993:2382000] CHIP:DMG:
[1625810123.225688][2381993:2382000] CHIP:DMG: }
[1625810123.225735][2381993:2382000] CHIP:ZCL: ReadAttributesResponse:
[1625810123.225751][2381993:2382000] CHIP:ZCL:   ClusterId: 0x0028
[1625810123.225770][2381993:2382000] CHIP:ZCL:   attributeId: 0x0001
[1625810123.225786][2381993:2382000] CHIP:ZCL:   status: Success                (0x0000)
[1625810123.225803][2381993:2382000] CHIP:ZCL:   attribute TLV Type: 0x0c
[1625810123.225822][2381993:2382000] CHIP:ZCL:   value: TEST_VENDOR
[1625810123.225850][2381993:2382000] CHIP:ZCL:   attributeValue: (span of length 11)  84 69 83 84 95 86 69 78 68 79 82
[1625810123.225953][2381993:2382000] CHIP:EM: Sending Standalone Ack for MsgId:00000004
[1625810123.226001][2381993:2382000] CHIP:IN: Secure message was encrypted: Msg ID 7
[1625810123.226023][2381993:2382000] CHIP:IN: Encrypted message 0x7fad5affc248 from 0x000000000001B669 to 0x0000000000000001 of type 16 and protocolId 0 on exchange 39021.
[1625810123.226050][2381993:2382000] CHIP:IN: Sending msg 0x7fad5affc248 to 0x0000000000000001 at utc time: 360074985 msec
[1625810123.226071][2381993:2382000] CHIP:IN: Sending secure msg on generic transport
chip-device-ctrl > [1625810123.226154][2381993:2382000] CHIP:IN: Secure msg send status No Error
[1625810123.226176][2381993:2382000] CHIP:EM: Flushed pending ack for MsgId:00000004
[1625810123.226195][2381993:2382000] CHIP:DMG: Client[0] moving to [INIT]
[1625810123.226213][2381993:2382000] CHIP:DMG: Client[0] moving to [UNINIT]

I have previously tried to add unit tests for ember and failed - at that time recursive includes (ember lib including gen files) prevented me from creating a library to build tests upon.

This actually fixed the issue that lighting app will return empty string for some fields.

Because the buffersize we pass in to typeSensitiveMemCopy overflows uint8_t? But shouldn't the real fix then be in the casting in that function? Because passing a size larger than uint8_t to emberAfCopyString doesn't necessarily make sense as things stand, because the callee will never copy more than uint8_ts-count of bytes.... Unless we just want to make that param size_t or something like that in general?
In any case, if this affects app behavior in an observable way, it sounds like we should be able to add CI for it. Can the problem be reproduced with all-clusters-app, or just with lighing-app?

Agreed.  The current behavior is:

destination buffer can be any size (large or small)
copied strings will be (silently) truncated if destination size is too small

If we're going to retain that behavior, size_t makes more sense to me.  Isn't the bigger problem the silent truncation though?  Is that actually what we want?

I have previously tried to add unit tests for ember and failed

Isn't the bigger problem the silent truncation though? Is that actually what we want?

@vivien-apple has been looking into that a bit recently, I think...

removing the "TE4 cherrypick" label, while waiting for CSG's validation that it's needed.
Cherrypicking time is nearly over anyway.

This actually fixed the issue that lighting app will return empty string for some fields.

Because the buffersize we pass in to typeSensitiveMemCopy overflows uint8_t? But shouldn't the real fix then be in the casting in that function? Because passing a size larger than uint8_t to emberAfCopyString doesn't necessarily make sense as things stand, because the callee will never copy more than uint8_ts-count of bytes.... Unless we just want to make that param size_t or something like that in general?
In any case, if this affects app behavior in an observable way, it sounds like we should be able to add CI for it. Can the problem be reproduced with all-clusters-app, or just with lighing-app?

Yes, we should add more tests between different apps -- I would suggest a follow up.
Changed uint16_t -> size_t for emberAfCopyString

Yes, we should add more tests between different apps -- I would suggest a follow up.

I respectfully disagree, unless the tests are a lot of work to add (which it doesn't seem like they should be if all-clusters-app shows the problem too).  This is fixing an app-visible bug, we have an existing harness for exercising such things, it's easy to add tests to this harness, tests should be added with the fix if possible.  Why would we not add the tests here?

which it doesn't seem like they should be if all-clusters-app shows the problem too

Ah, but it does not, because ATTRIBUTE_LARGEST there is not 257 like it is in lighting-app; it's 1001, which leads to different behavior inside emberAfCopyString.
Alright, that's a good enough reason to sort out tests in a followup....


Blank notebooks do not use current interpreter as the default kernel

All in the same workspace with Auto start turned on

Ensure workspace has interpreter 1

Open and run NB1 with kernel1 (kernel == interpreter, it is something different)

Run, save notebook and close VS Code

Reopen VS Code

Open and run NB1 with kernel2 (kernel <> interpreter, it is something different)

Save and close VS Code

Now open NB1, this has kernel2

Confirm it is kernel 2

Run the NB2, and confirm kerne is kernel2.

Now create a blank notebook, the default kernel should be the current interpreter however it is kernel2.
I.e. we're using the kernel information from the connection

Validated.


[BUG] - Possible corruption of datum by CLI

Internal/External
Internal
Area
cardano-cli - Tx with datum.
Summary
Originally this bug was opened in cardano-db-sync repository:
https://github.com/input-output-hk/cardano-db-sync/issues/1214
The observed errors could be caused by a CLI issue. It looks like Tx is created with the wrong Datum and db-sync does the correct thing of extracting the bytes as they are.
The test is defined here:
https://github.com/input-output-hk/cardano-node-tests/blob/master/cardano_node_tests/tests/test_plutus_v2_spend_raw.py#L375
it fails with:
>       assert (
            db_cbor_hex == orig_cbor_hex
        ), "Datum bytes in db-sync doesn't correspond to the original datum"
E       AssertionError: Datum bytes in db-sync doesn't correspond to the original datum
E       assert 'd8799f41ffd8799fd8799fd8799fd8799f581cc279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775affd8799fd8799fd8799f581c121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0ffffffffd87a80ffd87a80ff1a002625a0d8799fd879801a000f4240d8799f1a000fa92effffff' == 'd8798441ffd87982d87982d87982d87981581cc279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775ad87981d87981d87981581c121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0d87a80d87a801a002625a0d87983d879801a000f4240d879811a000fa92e'

We use https://github.com/input-output-hk/cardano-node-tests/blob/8baf63e9e4c66c02c903f9e[…]e8/cardano_node_tests/tests/data/plutus/typed-finite.datum.cbor which is the datum used in the original reports 1 and 2.
We use this to create the Tx:
cardano-cli transaction build-raw --fee 219173 --out-file test_datum_bytes_in_dbsync_ci0_lnh_step1_tx.body --tx-in "d41022da83eef84dd9b9616f4ab5060b5471546aa94139132a885ac257715ec9#0" --tx-out "addr_test1wqag3rt979nep9g2wtdwu8mr4gz6m4kjdpp5zp705km8wys6t2kla+2400250" --tx-out-inline-datum-cbor-file cardano_node_tests/tests/data/plutus/typed-finite.datum.cbor --tx-out "addr_test1vq2ymsu4ahfnnvwe9nz748rcra5r3ykxse7xlgsqkyzc3wg5njxz7+2000000" --tx-out "addr_test1vzpz9xpkwqra8jtcs2ucy3lgzcwyc8wv8nn0q8fk0eujdpqkqj3ac+2995380577" --babbage-era

We then check that the original datum and datum in db-sync produce the same hash:
cardano-cli transaction hash-script-data --script-data-cbor-file cardano_node_tests/tests/data/plutus/typed-finite.datum.cbor
cardano-cli transaction hash-script-data --script-data-cbor-file test_datum_bytes_in_dbsync_ci0_lnh_db_datum.cbor

which it does, so there is clearly some pre-processing done in the CLI. Then we check if the bytes in db-sync match the original datum, which it does not.
Even though the bytes don't match, the hash do match, according to CLI:
$ cardano-cli transaction hash-script-data --script-data-cbor-file original.cbor
53af3173e58b420b9a2c638278668ee76c6d7d78ebf7b1aee09038fbd67762b5

$ cardano-cli transaction hash-script-data --script-data-cbor-file dbsync.cbor
53af3173e58b420b9a2c638278668ee76c6d7d78ebf7b1aee09038fbd67762b5

Files attached (added txt extension because GH blocked the upload)
original_cbor.txt
dbsync_cbor.txt
@kderme wrote unit tests for this that fail without the fix https://github.com/input-output-hk/cardano-db-sync/pull/1255 and create the tx programmaticaly, without cli.
System info (please complete the following information):

Node version 1.35.3
CLI version  1.35.3

The initial version uses fixed length arrays, whilst the dbsync version uses variable length arrays with explicit "stop" markers. The data contained in both is identical.
I haven't looked to much further into why this happens, but my assumption is that the underlying CBOR library being used wants to make streaming data possible and therefore uses variable length arrays everywhere when serialising data to CBOR.
Personally, I don't think this is a "real" bug with the CLI. This is morally equivalent to you supplying {"foo": "bar"} and it storing  {"foo":"bar"}.

Personally, I don't think this is a "real" bug with the CLI. This is morally equivalent to you supplying {"foo": "bar"} and it storing {"foo":"bar"}.

Actually, perhaps it is a real issue. Let me see how much work is involved to fix it.

whilst the dbsync version uses variable length arrays with explicit "stop" markers

after the fix db-sync does no serialization, it uses the bytes as they come from the wire.
On the other end, cli should do no serialization as weill, when dealing with CBOR file inputs. It should get the bytes as they come from the file. Otherwise, even though the Datum is the same, it can cause hash mismatches from that the user expects.

I came across this bug in building a transaction with cardano-cli. In order to sign a plutus transaction with a hardware device like ledger, the cbor MUST be canonical. cardano-hw-cli will decline to sign it if it is not.
A transaction built by cardano-cli will produce a variable length array no matter what.
{
        5: [
            [0, 2, 122_0([]), [3366240_2, 907580139_2]],
            [
                1,
                0,
                121_0([_
                    h'3ab25c853f0f188f43b34b2df5cb98737a4de7e19028ec9d1a414a55',
                    5,
                    h'4e45574d5f',
                ]),
                [5312215_2,<PHONE_NUMBER>_2],
            ],
        ],
    }

The underscore represents a variable length array.
The json datum file that produced this is
{
  "constructor": 0,
  "fields": [
    {
      "bytes": "3ab25c853f0f188f43b34b2df5cb98737a4de7e19028ec9d1a414a55"
    },
    {
      "int": 5
    },
    {
      "bytes": "4e45574d5f"
    }
  ]
}

To get around this and have cardano-cli use a fixed-length array so I can sign the transaction with a ledger hardware device, I attempted to pass in the data as cbor with --tx-out-inline-datum-cbor-file data/next_datum.cbor
Even in this circumstance, cardano-cli manipulated my input data and creates an indeterminate-length array in the final transaction.

Here's the reference bug I opened on the VacuumLabs side. Basically, either IOG or VL needs to fix it. Either IOG needs to output canonical cbor that the VL code will choose to leave alone, or the VL code needs to be smarter and ignore any un-canonical cbor outside of the txBody.
Either way, this is frustrating as a user stuck between two companies. This isn't the first time we've had a disconnect between them over canonical cbor in transactions.
https://github.com/vacuumlabs/cardano-hw-cli/issues/155


added Failure result

I think it might make sense for the result of an individual piece of work to return either a "good" or "bad" results object.  I think Exceptions are enough for some failure reasons (out of disk space, incomplete inputs, unsuitable compute environment) but by returning more than just an exception, you could make the chemistry failures a lot more useful.
It could be that we can make the ok() method below just an attribute of a single Result class, since the schema for a ProtocolUnitResult is fairly loose/nonexistant.  I'm undecided if there's value in having two schema, one for results and one for error introspection.
One annoyance of first class errors is we'd have to teach schedulers how to identify these so they correctly interrupt a dependency chain.  I think there's probably a class of errors that we don't swallow and pass onto the scheduler directly, and it can probably have a good crack at rerunning them, and there's probably a class of chemistry errors which are fatal.

Hello @richardjgowers! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file gufe/protocols/results.py:

Line 82:80: E501 line too long (90 > 79 characters)

@dotsdl worth thinking about how we want to capture errors

Reviewing now!

@richardjgowers I've given this a play and made some changes, and also added a test illustrating usage. I think this may give us all we need for passing back useful failure data to ResultServer within a ProtocolDAGFailure, so long as we can serialize anything that gets packed into an exception by a failed ProtocolUnit._execute call.
I really like having distinct ProtocolUnitFailure and ProtocolDAGFailure classes as failure-oriented subclasses of ProtocolUnitResult and ProtocolDAGResult, respectively. I think this gives us a lot more flexibility than other approaches we might take for encoding failure.
Happy to elaborate further if needed.

thanks @dotsdl !


Getting a nan softmax loss

I followed the instructions and started training on the Squad Dataset. It started off well but then the loss became a nan. What could be the possible reason and how can I correct it ?
`657/1474 [============>.................] - ETA: 6417s - loss: 4.8018 - span_begin_softmax_loss: 2.5148 - span_end_softmax_loss: 2.2870 - span_begin_softmax_acc: 0.3892 - span_end_softmax_acc: 0.4372
658/1474 [============>.................] - ETA: 6406s - loss: 4.8008 - span_begin_softmax_loss: 2.5144 - span_end_softmax_loss: 2.2864 - span_begin_softmax_acc: 0.3892 - span_end_softmax_acc: 0.4371
659/1474 [============>.................] - ETA: 6404s - loss: 4.8027 - span_begin_softmax_loss: 2.5155 - span_end_softmax_loss: 2.2872 - span_begin_softmax_acc: 0.3890 - span_end_softmax_acc: 0.4371
660/1474 [============>.................] - ETA: 6390s - loss: 4.8010 - span_begin_softmax_loss: 2.5145 - span_end_softmax_loss: 2.2865 - span_begin_softmax_acc: 0.3892 - span_end_softmax_acc: 0.4372
661/1474 [============>.................] - ETA: 6388s - loss: 4.8017 - span_begin_softmax_loss: 2.5152 - span_end_softmax_loss: 2.2865 - span_begin_softmax_acc: 0.3892 - span_end_softmax_acc: 0.4372
662/1474 [============>.................] - ETA: 6377s - loss: nan - span_begin_softmax_loss: nan - span_end_softmax_loss: nan - span_begin_softmax_acc: 0.3886 - span_end_softmax_acc: 0.4365`

Hi, DeepQA is depreciated and not being actively maintained, so we aren't going to be able to help you, sorry. You might like to try https://github.com/allenai/allennlp, the version of it that we wrote in Pytorch.


validator-nu: fix version output and modernize package

Description of changes

As noted in my comment on #294774 the reported version by vnu does not match the version from the derivation. This PR seeks to remedy that.
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Last force push is only to rebase the PR changes onto master so that the PR applies cleanly.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/1566

Thanks for the helpful review comments and for merging, @NickCao, very much appreciated! 🙂


PLS: number of selected axes

Did you keep only the number of PLS axes explaining 99% of variance? (as for abcrf)
-> just to check = could not find this info

Precisely: 99% of the best explained variance of all axis, which is, if I'm not mistaken, the last axis explained variance. Should I mention it in the README?

OK thanks.
Yes please mention it in the readme
Note: not clear what you mean by "the last axis explained variance"
---> n is the number of PLS axes (from axis 1 to axis n) that all together explain 99% of the variance in the training dataset.

Actually I do the same thing as this (plsPercentageYVar) :
      pls.fit <- plsr(formula=formula, data=data, scale=TRUE, ncomp=ncomp)
      percentYVar <- 100*drop(R2(pls.fit, estimate="train", intercept=FALSE)$val)
      percentYvar_max <- percentYVar[ncomp]
      pVarPls <- plsPercentageYVar*percentYvar_max
      if(min(percentYVar) > pVarPls){
        nComp_sel <- 1
        warning("plsPercentageYVar might be too small, only 1 PLS component will be added.")
      } else {
        nComp_sel <- max(which(percentYVar<=pVarPls))
      }
      pVarPlsExplainedBynComp_sel <- percentYVar[nComp_sel]

The "99% explained variance" is computed a posteriori, and requires the computation of all axis, which could be time and memory intensive in very high dimensional setup.
May I suggest the following heuristic in the pls computing loop for axis :

if the 10 last axis didn't each incrementally improve the explained variance by much than the (0.01)/(the_number_of_remaining_axis) we stop the loop.
As the explained variance wrt the axis number is clearly a concave, we're can safely infer than we're already above the 99% setting.
What do you think?

I added the latex formula giving more details on the PLS components selection heuristic.

PLS: pbl if too many summary statistics
When you have say 10000 summary stats this means that you should compute 10000 PLS axis sets of values...which is quite time consuming, and retaining too many PLS axis at the end might be somewhat counterproductive.. In practice I compute A MAXIMUM of 1000 PLS axis values and retain only the PLS axes that explain 99% of the total variance of the 1000 PLS axes).
I may had to do that because my R algo for PLS was slow: may be your own algo is much more efficient...but in anycase there is not much gain to retain too many PLS axes, hence the trick I propose.
Jean-Michel any comment about that ?
I hope I am "clear".

Ok I understand now, then we should add a max number of PLS axis argument and provide a safe default?
Anyway, what do you think about my suggested heuristic : stop when we got no gain since ten computed pls axis in explained variance much than 1% over the number of remaining statistics ? We should get a tractable number of selected pls axis, no?

I like your heuristic very much as it should work (tractable numver of pls axes) with potentially all type of datasets !
Please confirm that it is clean with Jean-Michel (I am optimistic about that) and just keep this implementation.

Tests on the project "Estim_param_final_S17_no_moustache_new" (that you now have):
Note: >11000 summary stats
I tried different configurations (nTree, nTrain) with EstimParam but could not get PLS on any of them.
I could get PLS computation using abcrf on R when limiting to a maximum of 500 PLS components.
Ccl: your heuristic might have some problems in some cases. Please see with Jean-Michel how to improve your heuristic approach which has the great advantage of not having to compute all PLS axes.

See my comment on the other issue, I just tested the new PLS selection system :
[fradav@pc-fradav plsfail]$ ../abcranger/build/EstimParam -t 500 --parameter ra7 --chosenscen 1 --ntrain 1000 --ntest 100
///////////////////////////////////////// read headers
read headers done.
///////////////////////////////////////// read reftable
read reftable done.
Selecting only 145 pls components.
  expectation     variance  quant. 0.05  quant. 0.50  quant. 0.95
     0.396813     0.002338     0.260191     0.378018     0.590976

Test statistics
                MSE : 0.00201164
               NMSE : 0.00659256
               MMAE : 0.0490657
            mean CI : 0.268061
   mean relative CI : 0.723401
          median CI : 0.268061
 median relative CI : 0.723401

As a side note : when compiled with multithreaded MKL (the static binary I release and you're using isn't), the PLS computing is several times shorter. Even if the loop is sequential and can't be parallelized, the linear algebra related to the computation of one PLS component still could from multithreaded linear algebra.

Even keeping the last ten gain in explained variances isn't necessary, we just need the last gain. I'm awaiting a proper validation from a statistical point of view, stay tuned.

Eventually, it boils down to proove this :

where :

 is a constant which depends on the data
,
, and  is the th explained variance of the th component.

Bad news : it comptely depends on the data. Sometimes we even may have increase in component explained variance.

Nice efforts: I am unfortunately unable to help in an efficient way for this pbl of selecting a sensible subset of PLS axes...sorry about that...I guess this might be a job for magic Jean-Michel!

We'll stay with this heuristic for now


PublishFile: fix render function violation

Issue

Per doc:

A React component should not cause side effects in other components during rendering.

I didn't fully test this as I don't have a high bit-rate file, but the errors are no longer present.

Should try with bad file, and ensure message goes away when selecting a good file.

There are a few more two-way binding state ... those might cause issues too, but this one is the obvious low-hanging fruit

Confirmed it sitll works with high bitrate files, but doesn't fix the crash.
If I comment out updatefileinfo here, it does. Tried various combinations of the useeffect params, but didn't seem to help.
  useEffect(() => {
    if (!filePath || filePath === '') {
      setCurrentFile('');
      setOversized(false);
      setOverMaxBitrate(false);
      //updateFileInfo(0, 0, false);
    } else if (typeof filePath !== 'string') {
      // Update currentFile file
      if (filePath.name !== currentFile && filePath.path !== currentFile) {
        handleFileChange(filePath);
      }
    }
  }, [filePath, currentFile, handleFileChange, updateFileInfo]);

There are actually 2 errors report in the Slack chat.

"Cannot update a component from inside..."

The first commit addressed this, but wasn't the root-cause for the infinite loop.

"Maximum update depth exceeded"

This is a generic message, and the specific one that I saw was about an useEffect having wrong dependency. It happens to be the same effect reported by Tom above, so I think we are seeing the same thing now.
The second commit addresses this :crossed_fingers:

It's a huge component with a few wrappers, so there might be more violations, but taking the minimal approach for now to reduce testing.

Tested ok here, pushing!


.github: Update the lint job to use the lint Makefile target

Update the lint GHA workflow job to use the lint Makefile target to ensure that both local/CI environments use the same entrypoint and version of golangci-lint.
Signed-off-by: timflannagan<EMAIL_ADDRESS>

Okay that's definitely a fairly significant performance regression. Looks like some light caching is needed.
/hold

Looking at https://github.com/golangci/golangci-lint-action#how-to-use, we should be fine to simply cache the build and module paths without sacrificing CI runtimes.

Looks like caching those build/module paths worked.
/hold cancel


feature: prevent dropped files, use path

When file is dragged into context, do not navigate to file (which could be regarded a bug, as is) instead use path to file in current line (as feature)
Fixes: https://github.com/zeit/hyperterm/issues/110
Make use of https://github.com/electron/electron/pull/931

I suggest the following: instead of introducing the side effect directly in the component, dispatch an action whose name indicates what's happening.
In this case, it would be something like dispatch(draggedFile).
That action can then have an effect of dispatching another action: for this new default behavior, a PTY write.
For inspiration, look at what we do when we receive a data action. The incoming data from the pty can result in an actual write, or the navigation to that URL:
https://github.com/zeit/hyperterm/blob/master/app/lib/actions/sessions.js#L63
Similarly, in this case the default effect would be SESSION_PTY_DATA, but if we do it this way, plugins can later capture the original action and invoke our effect and potential others! For example, they could render the image in the browser, or something like that.
Furthermore, with this we maintain the components as simple as possible.

Thanks a lot for the great idea. This is something that should ship in the core for sure.

Thanks for the hints. Will apply latest Monday.
On 17 Jul 2016 00:46, "Guillermo Rauch"<EMAIL_ADDRESS>wrote:

Thanks a lot for the great idea. This is something that should ship in the
core for sure.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zeit/hyperterm/pull/171#issuecomment-233154990, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADuBJP8ZpFasU-WPqXQ_AeZV2WXdyLq8ks5qWV9hgaJpZM4JODd2
.

@rauchg @eljefedelrodeodeljefe - this was actually the very first thing that happened to me after I downloaded and ran Hyperterm! I typed cd and dropped a folder from Finder into the window, but Electron just navigated to that directory (blank screen, may have been a directory listing with black text on black or something). Hope it gets merged!

@developit will definitely merge this

Hi there,
I've merged this with the latest master branch and tested it out. Looking good so far, there's a few issues:

[ ] When dragging a folder or file to the window, it adds the text to the terminal, but if you press enter it doesn't actually execute/run it.
[ ] Files containing spaces show up as %20

Let me know if you need any help, @lordgiotto said he'd be willing to lend a hand too.
Cheers,
James

Can be closed since #559 was merged.

Closing due to #559 being merged with the same functionality

Drag and drop between Finder version 10.14.4 and Hyper 3.0.0-canary.8 (canary) doesn't work (no path is printed neither added to the prompt).


Update vocabularies to use language maps

This is implemented in a6d073b6ac647645b7d9f5a6bd7f8688bb7378f6.
This updates numerous vocabularies to use a language-map representation for literal values, where appropriate.
Recent changes to the rdf gem (https://github.com/ruby-rdf/rdf/commit/9fb42b64d945f594c6af8a3cd9d503b9e7ccad2d) allow for the use of language-maps in term definitions, for example:
property :actor,
  comment: {en: "Subproperty of as:attributedTo that identifies the primary actor"},
  domain: "https://www.w3.org/ns/activitystreams#Activity”,

Generally this change is transparent, if you use a standard accessor such as RDF::Vocab::AS.actor.comment. But, if you rely on the underlying attribute mechanism such as `RDF::Vocab::AS.actor.attributes[:comment], you will now see the language-map representation (where ‘en’, if present, will always come first)
RDF::Vocab::AS.actor.comment #=> #<RDF::Literal:0x2b84("Subproperty of as:attributedTo that identifies the primary actor"@en)>

RDF::Vocab::AS.actor.attributes[:comment] #=> {en: "Subproperty of as:attributedTo that identifies the primary actor”}

While this affects many vocabulary definitions in rdf-vocab, it adds some long missing capability to the built-in vocabulary definitions.
Without objection, this will be released in version 3.2.1 in the coming days, but as it has the potential to affect some uses of the builtin vocabularies, I wanted to call it out specifically to this group.

cc/ @wu-lee

Released in 3.2.1


How to know is sms delivered or not?

Hi I like to get info is sms delivered or not. How to get that info?

We do offer Delivery Receipt confirmations. More information on the receipts can be found at https://developer.nexmo.com/messaging/sms/guides/delivery-receipts.
You will need to set up a Delivery Receipt webhook on your account to receive these notifications. If you log into Customer Dashboard and go under your account settings, you can set a URL that can accept the delivery receipts. We will then send a payload to that URL whenever a delivery receipt is issued from the provider.
Setting up the webhook is something that will need to be done in your application, however, as it is just incoming data. There is also no specific need for the SDK to receive or read this data.

Looks awesome! Tnx a loot @dragonmantank !

I have a problem, maybe someone has solution for it... When I send SMS it's faster get a response on webhooks then I write in local DB message-id. So can't get status again :) Can you have some idea?


allow passing isGlobal property to router

Looks good. Can you rebase from master and also add the new prop to flow types please?

Looks good. Can you rebase from master and also add the new prop to flow types please?

I added it here.src/types.js.flow, are there any other places?

I'm blind, sorry 🙈


Getting 404 not found on /api address

So I got my own server running, but then I found out I couldn't connect my VS Code Waka time plugin to it. Started seeing 404 page not found messages in ~/.wakatime.log, and when I tried to access the /api address but I get the same 404 response.
Thinking is a problem on my server setup, I tried creating an account on wakapi.dev, but even there I can't get things to work.  And https://wakapi.dev/api also gives me a 404 error.
The plugin in VS code keeps saying is working offline. This is what my .wakapi.cfg looks like:
[internal]
cli_version = v1.18.9
cli_version_last_modified = Tue, 06 Jul 2021 00:43:45 GMT
[settings]
debug = true
api_url = https://wakapi.dev/api
api_key = ********-****-****-****-************

I also noticed that the logs keep trying to use api.py, which I'm not sure if this has something to do with another issue having to do with hardcoded api urls found in older version of the wakatime cli, but this is what the latest VS Code plugin is using for me. I don't know how to get their latest golang cli
This is the output of the log, which keeps repeating every now and then, which means the cli is trying to connect, but it keeps repeating the 404 warning, I'm guessing:
{
  "now": "2021/07/31 22:20:28 -0500",
  "version": "13.0.7",
  "plugin": "vscode/1.58.2 vscode-wakatime/14.0.3",
  "time":<PHONE_NUMBER>.9304605,
  "caller": "wakatime/api.py",
  "lineno": 45,
  "file": "/home/alex/playground/index.ts",
  "level": "DEBUG",
  "message": "Sending heartbeats to api at https://wakapi.dev/api"
}

{
  "now": "2021/07/31 22:20:28 -0500",
  "version": "13.0.7",
  "plugin": "vscode/1.58.2 vscode-wakatime/14.0.3",
  "time":<PHONE_NUMBER>.9304605,
  "caller": "wakatime/api.py",
  "lineno": 51,
  "file": "/home/alex/playground/index.ts",
  "level": "DEBUG",
  "message": "[{'time':<PHONE_NUMBER>.9304605, 'entity': '/home/alex/playground/index.ts', 'type': 'file', 'category': None, 'is_write': False, 'project': 'playground', 'branch': 'main', 'language': 'TypeScript', 'dependencies': [], 'lines': 3, 'lineno': None, 'cursorpos': None, 'user_agent': 'wakatime/13.0.7 (Linux-5.4.72-microsoft-standard-WSL2-x86_64-with-glibc2.4) Python3.8.0.final.0 vscode/1.58.2 vscode-wakatime/14.0.3'}]"
}

{
  "now": "2021/07/31 22:20:28 -0500",
  "version": "13.0.7",
  "plugin": "vscode/1.58.2 vscode-wakatime/14.0.3",
  "time":<PHONE_NUMBER>.9304605,
  "caller": "wakatime/api.py",
  "lineno": 339,
  "file": "/home/alex/playground/index.ts",
  "level": "WARNING",
  "message": "{'response_code': 404, 'response_content': '404 page not found\\n'}"
}

#214 might help

Hi @AlexandroPerez! Firstly, the config file's name is supposed to be .wakatime.cfg instead of .wakapi.cfg. Apart from that, it seems like you are using the "legacy" Python-based WakaTime CLI (at version 13.0.7). In this case, please try to set api_url = https://wakapi.dev/api/heartbeats. Let me know if this helps.

Thanks @muety! That actually worked. About the file name, you're right is .wakatime.cfg, I miswrote it here.
Spent 2 days trying to get wakapi to work on a shared server (so no sudo) getting it to work with an nginx configuration in a separate namespace (no localhost), and then when I finally got it to work, it failed me with this, so was tired. I learned the hard way the difference between backend and frontend.
I left it running with sqlite, but since it's going to be used only by me I hope there are now drawbacks. Is possible to install mysql, but I don't know if there are any advantages to do it for only one user. Also, I was thinking of just graving a copy of the db file every now and then, and I've got a backup. What do you think? ,
I hope the VS Code plugin updates to the new CLI, and when it does I know what to change.
With these the issue can be closed, but should something be written on the README or docs about the way to deal with this if any plugin still uses the "legacy" wakatime cli?

Is possible to install mysql, but I don't know if there are any advantages to do it for only one user.

For a single-user instance I'd just stick with SQLite for the sake of simplicity. There won't be any noticeable performance drawbacks.

Also, I was thinking of just graving a copy of the db file every now and then, and I've got a backup. What do you think?

Absolutely recommendable!

I hope the VS Code plugin updates to the new CLI, and when it does I know what to change.

Actually, please try changing /api/heartbeats into /api/heartbeat, because then the stripping mentioned in https://github.com/muety/wakapi/issues/203#issuecomment-858009349 will take place, i.e. this API URL should work for legacy and new CLI version likewise.

[...] should something be written on the README or docs about the way to deal with this if any plugin still uses the "legacy" wakatime cli?

Fair point, I'll think about it as you're not the first one to face this issue.


Annotation is not working with new external-secret-operator

In old Kubernetes-external-secrets we can use annotations to filter the key as per NameSpace name and i have somehow modife it
externalsecrets.kubernetes-client.io/permitted-key-name: (/kes/({{ $key }}/.*
like this that only keys that included the same NameSpace name can be fetched inside the namespace, this option was very usefull to seperate the secrets as per namespace, but this annotation is not working with the New external-secret-operator.
https://github.com/external-secrets/kubernetes-external-secrets

Hi @sam-germany. This is feature was intentionally not ported from KES. The reasoning is that this type of control was needed on KES, but not on ESO (as the KES project only ran on one service account; while on ESO, since you can leverage multiple service accounts with it, the permissions for secret accessing is better handled at your provider access control).
if you really wish that feature, you can achieve it with gatekeeper or kyverno as well.

Hi @gusfcarvalho It will be very much helpful if you can privide me some documentation link that how i achive this feature as you explain using multiple service accounts and with the permissions for secret acessing per NameSapce.

You should see here: https://external-secrets.io/v0.8.1/introduction/overview/


Further BBC Sounds Icon mapping

Many thanks for mapping the BBC Sounds Icons.
I've mapped further icons that are in the deeper menus and made a couple of changes to closer match the BBC's icons.

Thanks for this. Could the BBC sounds icons not be given more generic names? e.g. BBCSoundsSearch.png -> search.png? That way icon mapping will apply to other apps to. It'd be nice if LMS provided a bunch of generic icons, and then Material would map those. What I'm waeary of is each new plugin having (e.g.) 20 plugin specific names for icons - which means Material has more processing to do.
Not a massive issue, but would be nicer.

Thanks for this. Could the BBC sounds icons not be given more generic names? e.g. BBCSoundsSearch.png -> search.png? That way icon mapping will apply to other apps to. It'd be nice if LMS provided a bunch of generic icons, and then Material would map those. What I'm waeary of is each new plugin having (e.g.) 20 plugin specific names for icons - which means Material has more processing to do.
Not a massive issue, but would be nicer.

Thanks for this. Could the BBC sounds icons not be given more generic names? e.g. BBCSoundsSearch.png -> search.png? That way icon mapping will apply to other apps to. It'd be nice if LMS provided a bunch of generic icons, and then Material would map those. What I'm waeary of is each new plugin having (e.g.) 20 plugin specific names for icons - which means Material has more processing to do.
Not a massive issue, but would be nicer.

Yes, agreed.   Maybe the answer is to have a naming standard that you support so Material can automatically pick the svg icon.
something like MTL_[matrial standard name].svg.   So "MTL_radio-tower.svg" would automatically get mapped to the radio-tower in the svg library?
I'm happy to make that change now rather than the hard coded mapping if you're happy with that?

Thanks for this. Could the BBC sounds icons not be given more generic names? e.g. BBCSoundsSearch.png -> search.png? That way icon mapping will apply to other apps to. It'd be nice if LMS provided a bunch of generic icons, and then Material would map those. What I'm waeary of is each new plugin having (e.g.) 20 plugin specific names for icons - which means Material has more processing to do.
Not a massive issue, but would be nicer.

Yes, agreed.   Maybe the answer is to have a naming standard that you support so Material can automatically pick the svg icon.
something like MTL_[matrial standard name].svg.   So "MTL_radio-tower.svg" would automatically get mapped to the radio-tower in the svg library?
I'm happy to make that change now rather than the hard coded mapping if you're happy with that?

Not sure it needs to be so meterial specific - after all other UIs may wish to map icons. Just that, if possible, the names should be generic - and match their purpose.

Not sure it needs to be so meterial specific - after all other UIs may wish to map icons. Just that, if possible, the names should be generic - and match their purpose.

So search.png, subscribe.png, latest.png, tracks.png, subscriptions.png, mymusic.png, etc.

So search.png, subscribe.png, latest.png, tracks.png, subscriptions.png, mymusic.png, etc.

...those were just examples, if you can think of better, then fine. Just not 'BBCSoundsxxxx.png' ;)

...those were just examples, if you can think of better, then fine. Just not 'BBCSoundsxxxx.png' ;)

So search.png, subscribe.png, latest.png, tracks.png, subscriptions.png, mymusic.png, etc.

Yes, I understood.  I was just trying to think of better solution. After all, these are BBC Sounds specific icons.  We just need to map onto the Material specific icons so that Material theming can occur.
Your suggested solution is to use generic names as the convention so that the mapping can occur, I'm suggesting we could put the onus on the plugin developer to use a naming convention so that Material could automatically map to its own icons that are already in its library.   That way you don't need to continually add in the mappings.
I'm not aware of any other controller that tries to do icon theming, so it would be transparent to everything else, and even if there was one, it wouldn't matter.
I've done a code change to my fork of material that looks for MTL_icon[name]_MTL_end in the image name and maps it into the library eg :
"folder/mymusic_MTL_icon_recent_actors_MTL_end.png"   would be mapped onto the "recent_actors" svg in the material library.
If you are interested in looking at that pull request I'll send it over?

So search.png, subscribe.png, latest.png, tracks.png, subscriptions.png, mymusic.png, etc.

Yes, I understood.  I was just trying to think of better solution. After all, these are BBC Sounds specific icons.  We just need to map onto the Material specific icons so that Material theming can occur.
Your suggested solution is to use generic names as the convention so that the mapping can occur, I'm suggesting we could put the onus on the plugin developer to use a naming convention so that Material could automatically map to its own icons that are already in its library.   That way you don't need to continually add in the mappings.
I'm not aware of any other controller that tries to do icon theming, so it would be transparent to everything else, and even if there was one, it wouldn't matter.
I've done a code change to my fork of material that looks for MTL_icon[name]_MTL_end in the image name and maps it into the library eg :
"folder/mymusic_MTL_icon_recent_actors_MTL_end.png"   would be mapped onto the "recent_actors" svg in the material library.
If you are interested in looking at that pull request I'll send it over?

Yeah, I'd be interested. I'm just weary of an tying things to any specific UI, etc.

Yeah, I'd be interested. I'm just weary of an tying things to any specific UI, etc.

Agreed that hard coding of plugin specific icon mapping is bad and an unnecessary workload on the maintainer.  We'll think of another way.

Agreed that hard coding of plugin specific icon mapping is bad and an unnecessary workload on the maintainer.  We'll think of another way.


playonlinux: fix crash on open file (GSettings)

Motivation for this change
Some installation scripts require the user to manually select a file. On KDE Plasma, the playonlinux binary will crash with the following error:
No GSettings schemas are installed on the system

Things done
Added the wrapGAppsHook to solve the issue, as per #108216.

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

LGTM

LGTM


Remove unreachable! from macros.rs

Currently rustfmt reaches unreaclable! when run against invalid macro defs:
macro_rules! foo {
    ($x:) => (),
}

thread 'main' panicked at 'internal error: entered unreachable code', src/macros.rs:690:18
note: Run with `RUST_BACKTRACE=1` for a backtrace.

There are 2 unreachable!() in macros.rs:
https://github.com/rust-lang-nursery/rustfmt/blob/2fbdedbf2fbf89bb00743e85c3b19cb765d6c1ad/src/macros.rs#L690
https://github.com/rust-lang-nursery/rustfmt/blob/2fbdedbf2fbf89bb00743e85c3b19cb765d6c1ad/src/macros.rs#L732
We need to remove them and handle errors properly.

I am interested in working on this issue. But I am not sure what is the precise meaning of "handle errors properly". When encountered the invalid cases, should rustfmt abort and print the error message or just leave the invalid part unchanged?

@codeworm96 Great, thank you!

When encountered the invalid cases, should rustfmt abort and print the error message or just leave the invalid part unchanged?

We want to leave the invalid part unchanged rather than aborting, and we need not print any error messages.
One direction would be changing the return type of MacroArgParser::parse to Option<Vec<ParsedMacroArg>> and making it return None when there are invalid input.

@topecongiro Thanks. I will have a try.


[Request] Perform check for presence of .rolls data before attempting to enrich chat message

On the following lines, a chat message may get enriched (_enrichRollTooltip) if the "dice-tooltip" style class is part of the message content. As currently written, I believe it assumes all messages with the dice-tooltip class were generated by a Roll.toMessage() style call, which always includes a .rolls element. Any chat message containing the "dice-tooltip" without a .rolls element can result in an error during the _enrichRollTooltip call.
https://github.com/foundryvtt/dnd5e/blob/9508709e861aa5f9da48d2c4745a7f771fff2e47/module/documents/chat-message.mjs#L251-L255
I have a use case where it would be great to leverage the 5e and system formatting styles, but I don't generate the chat card via a .toMessage() call - I'm aggregating a bunch of rolls to a single chat message and presenting them to be visibly similar to a single attack. The rolls leading up to this message wouldn't make sense to represent like a single combined roll, so I'd rather craft the chat card a little more manually but retaining the style for users and ease of maintenance.

If the 5e styles are meant to remain internal use only (e.g., not used by modules) please let me know and I'll create custom styles for the module to avoid the conflict.
If you'd like, I can propose a PR for the change, checking for the presence of .rolls or the 5e roll flag either in the code segment before the _enrichRollTooltip call, or within the _enrichRollTooltip method. Please let me know which branch would be the preferred base if so.

I've stumbled on the same issue and can confirm multiple similar usecases.

I'm having some trouble understanding this issue. Is there an example code snippet or example chat message that makes it clearer?

With a standard Roll.toMessage (i.e., await new Roll("1d20").toMessage();) then I believe the toMessage method incorprates that .rolls element in the chat before creating it. So this error only occurs when someone is deliberately building a custom message without a Roll, using the dice-tooltip class.
If I mock out a custom dice-tooltip class and all other downstream styles to bypass the check on line 253, we get the more expected output below for 3.x:

The above example is pretty superficial, but I encountered in maintaining the Mob Attack Tool module.  I'd like to keep a style closer to the standard Roll cards, re-using style classes to avoid mirroring with custom identical classes. In this instance, passing a stack of rolls to the card wouldn't be helpful, since the _enrichRollTooltip() call isn't meaningful for this use case.
If @Handyfon has also encountered this, it's possible other people are trying to use the dice-tooltip class outside of the normal Roll.toMessage workflow, and it may be non-obvious to others that right now using dice-tooltip implies the chat message needs to have a populated rolls element.
Hope that helps illustrate the issue, let me know if you need any other details.

I think I understand now, thank you for clarifying.


Use GitHub deployment status instead of comment test deployments

See commits. As per usual with these, I couldn't 100% test it beforehand. So it has to be merged and I will fix any bugs then.

For the record, there is still one suboptimal thing about all this: When a PR is closed/merged, the environment is not properly cleaned up. So this list will just grow: https://github.com/elan-ev/tobira/settings/environments
However, that's not really a problem. There is already an issue tracking this: https://github.com/bobheadxi/deployments/issues/118


Use new Tonic (Axum 0.7 and hyper 1.0)

Rebased on current master early.

1st attempt failed.
thread 'tokio-runtime-worker' panicked at /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/common/time.rs:37:17:
You must supply a timer.
Error: status: Unknown, message: "transport error", details: [], metadata: MetadataMap { headers: {} }

Caused by:
    0: transport error
    1: buffer's worker closed unexpectedly

failures:
    n1_cluster
    n1_exec_once
    n1_read
    n1_snapshot
    n1_write

I think connect_lazy is broken and http2_keep_alive_interval is broken too.
I am asking the developers about this bug in discord.


Allow updating chart dependencies when packaging a chart

At present when one runs helm package against a chart with entries in its requirements.yaml file but an empty charts directory (or even one partially populated), Helm fails with the following complaint:

Warning:  is in requirements.yaml but not in the charts/ directory!

It would be helpful to be able to tell Helm to acquire any missing dependencies before packaging, since packaging can't proceed without doing so anyway. Per discussion in the "helm" Slack channel, consider adding a flag to the helm package command that would first run the equivalent behavior of helm dependency update.
Such eager updating can't be the new default behavior without surprising long-time users who are already used to the manual dependency updating requirement.

The discussion in the slack channel basically suggested that we provide a helm package -u flag that would cause helm dep up to be run prior to the packaging logic.


DRILL-8260: Added Platforms (linux/amd64,linux/arm64) on Docker Build

DRILL-8260: added platforms (linux/amd64,linux/arm64) on docker build
Description
Added the following platforms in the build file from the hooks folder: linux/amd64 and linux/arm64
Documentation
Now Apache Drill Docker image is available for both linux/arm64 and linux/amd64
Testing
Built images locally

@ionutpopa Thanks for this.   Forgive the question as I'm not a Docker expert but do we need to add windows/amd64, and basically all other platforms that Drill should run on?

@cgivre IMHO we could keep only the linux platforms as the original docker works on Windows just fine.
But if we think about Drill as a software that we want to run on all platforms, maybe we need to add windows/amd64.
What do you think?

@ionutpopa
People do run Drill on Windows.... As long as it works for them, I'm fine with keeping it as is.   @jnturton Do you have an opinion on this?

The Linux container images will work for Windows users through WSL or Hyper-V which is how they must already be running most of their conatiners. Actually building on a Windows container base image would require deeper changes from us, I think, and someone would have to check the license to see whether we'd be free to redistribute the Microsoft binaries included as an Apache project.

The Linux container images will work for Windows users through WSL or Hyper-V which is how they must already be running most of their conatiners. Actually building on a Windows container base image would require deeper changes from us, I think, and someone would have to check the license to see whether we'd be free to redistribute the Microsoft binaries included as an Apache project.

In that case, LGTM +1

Marked as draft until we've triggered a test in Docker Hub (which I'll do).

@jnturton The ci/dockercloud-stage failed and when checking the details I saw {"error": "Our service is temporarily unavailable. We'll be back soon!"}, I guess that's fine?

@ionutpopa, below is what happened in Docker Hub.
2024-10-14T06:58:22Z Executing build hook...
2024-10-14T06:58:29Z ERROR: multiple platforms feature is currently not supported for docker driver. Please switch to a different driver (eg. "docker buildx create --use")

We can read up on and try docker buildx. I have only skimmed the Internet but it sounds like it might resemble
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64

I got a build going after putting docker buildx create --use back in. It appeared to make progress on two parallel builds but it got killed after running for 4 hours (see the final line below). We'll probably have to split things up differently and, given that Docker Hub access is required to see what does or doesn't work, I'll probably have to carry on with that in the 8260-arm64-image branch.
2024-10-18T12:06:49Z #21 1435.4 [output clipped, log limit 2MiB reached]
2024-10-18T12:15:35Z #21 ...
2024-10-18T12:15:35Z
2024-10-18T12:15:35Z #20 [linux/amd64 build 4/5] RUN mvn clean install -DskipTests
2024-10-18T12:15:35Z #20 DONE 1961.4s
2024-10-18T12:15:35Z
2024-10-18T12:15:35Z #22 [linux/amd64 build 5/5] RUN VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)  && mkdir /opt/drill  && mv distribution/target/apache-drill-${VERSION}/apache-drill-${VERSION}/* /opt/drill  && chmod -R +r /opt/drill
2024-10-18T12:15:56Z #22 DONE 20.9s
2024-10-18T12:15:56Z
2024-10-18T12:15:56Z #21 [linux/arm64 build 4/5] RUN mvn clean install -DskipTests
2024-10-18T12:15:57Z #21 ...
2024-10-18T12:15:57Z
2024-10-18T12:15:57Z #23 [linux/amd64 stage-1 3/3] COPY --from=build /opt/drill /opt/drill
2024-10-18T12:16:01Z #23 DONE 3.6s
2024-10-18T12:16:01Z
2024-10-18T12:16:01Z #21 [linux/arm64 build 4/5] RUN mvn clean install -DskipTests
2024-10-18T12:48:56Z #21 3962.5 Warning: Lookahead adequacy checking not being performed since option LOOKAHEAD is more than 1.  Set option FORCE_LA_CHECK to true to force checking.
2024-10-18T13:03:45Z The build was cancelled or exceeded the maximum execution time.


Add danish translation for man (vimdiff and vimtutor)

Thanks, I'll include them.  But use "_da" instead of ".da" to be consistent with the other files.


[loc]Request to Arabic (Saudi Arabia) (ar_SA)  language to Transifex VS Code project

We expect at least three language contributors sign up and product team sign off before adding new language to Transifex. Please vote by adding your Transifex account name here in this issue (request).
How to request guide: https://github.com/Microsoft/Localization/wiki/How-to-request-a-new-UI-language-for-VS-Code-project

VS Code itself does not have plan to enable bi-di support yet. So we won't enable any bi-di language in Transifex at this moment to avoid waste community member's time.
We record this message in request language wiki. See 3rd paragraph.

We don't have plan to enable additional language for VSCode in MLCP in near term. Hence close the request here.
New request should be logged in Localization Community Repo


Graphite Dashboard: Expanding Node In Tree View Doesn't Update Data

Data is only loaded from an initial selection of the metric type. Instead, the data for a specific node in a tree should be loaded when the specific node is expanded.
To Reproduce:

Select Tree Navigation Mode for Dashboard UI
Select Metric Type
Select category
Open root node in tree
Add new data under root node
Collapse Node
Expand Node
Observe new data is not present.

To Fix:

Reset loaded for node to false before expanding node.

Patch Below:
diff --git a/webapp/content/js/dashboard.js b/webapp/content/js/dashboard.js
index 7cdab82..08d480c 100644
--- a/webapp/content/js/dashboard.js
+++ b/webapp/content/js/dashboard.js
@@ -936,7 +936,12 @@ function metricTextSelectorShow(pattern) {

 function metricTreeSelectorNodeClicked (node, e) {
   if (!node.leaf) {
-    node.toggle();
+    if (node.expanded) {
+      node.collapse();
+    } else {
+      node.loaded = false;
+      node.expand();
+    }
     return;
   }

Please send us a pull request changing the code instead of putting it online in an issue. That way you get credit for if and it is much easier for us maintainers.


proto/orijtech: define per point data

Updates the protobuf definitions to have per point data that can then be used by the user interface.
Updates #14
Updates #16

@odeke-em @kirbyquerby how do we proceed on this, so I can update the frontend as well.

Thanks for the review @kirbyquerby! Updated with the AIP suggestions. @willpoint thanks for the ping! We are almost there, I've made some changes and regenerated the protobuf. Just another round of reviews!

Merging to unblock UI.


configure typescript next image

What does this PR do and why?
Provide a description of what this PR does. Link to any relevant GitHub issues, Notion tasks or Discord discussions.
Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] I have tested this PR in all supported browsers.
[ ] I have tested this PR in dark mode and light mode (if applicable).

Current dependencies on/for this PR:

main

PR #2026   👈

This comment was auto-generated by Graphite.


Fix broken headings in Markdown files

GitHub changed the way Markdown headings are parsed, so this change fixes it.
See bryant1410/readmesfix for more information.
Tackles bryant1410/readmesfix#1

My apologies. I only recently noticed the pull request and have already fixed the markdown headings. Thank you for noticing this though and letting me know.


Support for fidm.oidc.op.getMetadata

What does it do?
It's an endpoint that allows OP to pull the OP metadata which contains different endpoints such as authorize endpoint, token endpoint, userinfo endpoint, introspect endpoint and most importantly the JSON web keys.
Why do we need it?
It is necessary so that we are able to pull the latest jwks when validating id_token. It's stated in the document that it could change without prior notice so it would be better to get it from the source rather than having it offline.
Source: https://developers.gigya.com/display/GD/Validate+A+JWT+from+SAP+Customer+Data+Cloud

Public keys are subject to change without warning for security reasons. Recommended best practice is to check the keyid returned in the JWT header against the kid (Key ID) of the public key you have stored from accounts.getJWTPublicKey, or that you received from the OP, and if they do not match, you must update your public key using accounts.getJWTPublicKey or contacting the OP.

Workaround
As a workaround, I do:
gigya.request('fidm.oidc.op.getMetadata')

Note
This endpoint is not listed in the documentation for some reason.

#52

Hi @iBaryo, thanks for merging my request. :) May I know when I can expect the new npm version, please? Thank you.


Python file uses windows linefeeds

Hi,
the linux python file that is being created to attach the iscsi volume uses windows linefeeds instead of linux linefeeds.
Greetings
Klaas

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

ID: 142ddb2b-65ef-10f4-0e68-f9af6f0e3d52
Version Independent ID: 74e33ef9-9a43-8ae6-abbd-a84f1cf91a25
Content: Azure Backup: Recover files and folders from an Azure VM backup
Content Source: articles/backup/backup-azure-restore-files-from-vm.md
Service: backup
GitHub Login: @pvrk
Microsoft Alias: pullabhk

@Klaas- Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Does this result in failure in running the script? Please confirm.

I did not check that, I corrected it in vim before running it :) not sure if linux python likes windows linefeeds

@Klaas Hi, can you confirm whether this is still an issue? did the script run successfully with the windows linefeeds?

Please don't @ me about this issue.

Re: Please don't @ me about this issue - my apologies.
I'll close this for now since it doesn't seem to be an issue with the article itself. If you have any further comments let me know and I'll follow up. Thanks!

We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Add ASLLogCapture filter by process sender

Currently the ASLLogCapture captures all logs sent to ASL.
There's no way to filter by only the current process. This would be useful for example to capture logs outputted by 3rd party frameworks or the system using NSLog when running without a debugger attached.
Unfortunately since it captures everything right now, it is too verbose (and expensive) to be useful.

Closing this, since ASL has been replaced by os_log.


In the tile view, remove an empty three-dot-menu

Can't seem to find this menu. Is this still an issue?

already fixed


"File upload" question type: implement simple custom functionality

#404 is the main issue for this question type. This is some custom functionality we want to have in there:

Applicants can drag and drop files or upload them using the native file browser or camera
Applicants see previews of their already-uploaded files
Next to each preview is a delete button that lets applicants remove uploaded files

We also need to define a maximum allowed filesize.


remove LEAF_TYPEs for conifers

fixed in species.json

upgraded to species.json from develop and refixed the conifers.
Saw an exception after adding trees but I dont think this is related to this simple species.json change.
I'll add more details tomorrow.

ok, sure, @jgrenadier


Hyundai: mark less ECUs as logging

Needed for https://github.com/commaai/openpilot/pull/31969, we currently only log these ECUs. We should do a clean up of Hyundai's queries very soon. Removing engine and transmission would also clean up much of this, and it's so far not needed at all to identify the vehicles

Doing in https://github.com/commaai/openpilot/pull/31985, need to finish abs ECU now


TQEC class with Stim code ( Test version )

Uploading QEC examples ( Repetition code, Surface code )

I think it would be good if others are able to see this. I'll re-open and turn it into draft.

Stale.


Add favicon to sponsors page.

Currently the favicon is missing if a user navigates to the sponsors page.
https://syntax.fm/sponsor

Current meta component appears to be designed specifically for the "shows" page - it reads the currently playing episode and plugs that info into the various meta tag attributes:
      <meta name="viewport" content="width=device-width, initial-scale=1" />
      <meta charSet="utf-8" />
      <meta property="og:audio" content={show.url} />
      <meta property="og:audio:secure_url" content={show.url} />
      <meta property="og:audio:type" content="audio/mp3" />
      <meta property="og:type" content="music.song" />
      <meta property="og:title" content={`${show.title} — Syntax Podcast ${show.displayNumber}`} />
      <meta
        property="og:description"
        content="Full Stack Developers Wes Bos and Scott Tolinski dive deep into web development topics, explaining how they work and talking about their own experiences. They cover from JavaScript frameworks like React, to the latest advancements in CSS to simplifying web tooling."
      />
      <meta property="og:url" content={`${baseURL}/show/${show.displayNumber}/${slug(show.title)}`} />
      <meta property="og:image" content={`${baseURL}/static/syntax-banner.png`} />
      <link rel="shortcut icon" href={`${baseURL}/static/favicon.png`} />
      <title>
        {show.title} — Syntax Podcast {show.displayNumber}
      </title>
      <style dangerouslySetInnerHTML={{ __html: stylesheet.replace(/\n/g, '') }} />

I wonder if this code could be easily adapted to detect if it's being loaded into the sponsor page or if it warrants its own meta component (or if the meta information should simply be hard-coded in, since it is not dynamic as it is for the shows page).

I took a crack at this here: https://github.com/wesbos/Syntax/compare/master...brooksbecton:bug/sponsorMetaInfo
I had to be a little hacky because the conditional wanted one parent component, but I wasn't too sure on how to wrap meta tags.
Also, this assumes the the page title matches path of the page component (which I think is ok because NextJS, but this is my first time messing with it), but I'm not sure how embedded pages would work in the future with this approach.

This being Hacktober I decided to take a look at this. I pretty much used @brooksbecton's changes, except I used a fragment to wrap the meta tags and calculated the baseURL prop on the sponsor page rather than hard coding the value. Passing the page title as show.title is a little wonky, but probably OK as long as there's only one page other than index.


EDM-384: Use new query to retrieve the repository resource syncs

To obtain the RSs belonging to a repository, we were adding a label to the RS, and querying RSs based on this label.
The query would fail if the repository name is not a label (eg. it is longer than 63 characters).
Now we will use a dedicated query which is being added in https://github.com/flightctl/flightctl/pull/501
which allows us to query irrespective of the repository name.

@rawagner the backend PR was merged and I fixed the conflict issue, could you please review?


⚠ Bofrost.de has degraded performance

In 837ca9b, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1787 ms

Resolved: Bofrost.de performance has improved in e299b49 after 39 minutes.


WIP: Swarm Bee Integrations

This is working in progress notes on integrating with Swarm Bee. FYI @dixonsiu
The Idea
Storing and managing personal or organisation data can imply greater responsibilities:

On average, a user would not be able to technically sufficient running Personium for personal use
If need to consume the service, the data owner need to trust the hosting provider or a Personium data registry
The services provider need to ensure all operators would respect security procedures
The data owner need to find ways to migrate to another services provider with little efforts (competitiveness and interoperability)
The hosting proivider or Personium data registry has little to gain but taking more risks of being a provider

Storing sensitive information on the Swarm ethereum storage network could potentially simplify these concerns:

In personal data context, assume a publicly maintained network is available, the personal data will be replicated through the Swarm network without a centralised hosting provider. This potentially changes the role of Personium to a data processor and consent management role.
On local/personal node initialisation, a network account and passphrase are required to be created. Both account and passphrase are unique, must be owned by the data owners. If they are lost, unencrypted data maybe recoverable if the owner has the hash reference, but encrypted data will be lost.
Sensitive data can be encrypted via Swarm network, this means data encryption can be offloaded to Swarm storage layer
With a high level view, encrypted data are chunked/distributed and only can be decrypted at a local node (aka, with the correct account and passphrase presents). Now this is interesting, because potentially--once data is replicated over the network-- the data owner can easily switch hosting providers (with their own account/passphrase).
In the event of disaster of lost services or data, the network may provide data recovery capabilities (although not guaranteed).
Hosting are designed to reward providing popular content, this means the hosting provider could potentially have a commercial reason to serve data or host local swarm nodes for either business or personal use.
Enterprise can maintain a private swarm network to limit the data replication boundaries

Swarm Details
Swarm is a distributed & decentralised storage running on the ethereum network (although not the only one). There were two major versions of Swarm developed over time.
Since the information is very sparse, if you are looking for up-to-date references, make sure you refer to the following:

Swarm Bee: https://docs.ethswarm.org/
API References: https://docs.ethswarm.org/docs/api-reference/api-reference
Public Gateway: https://gateway.ethswarm.org/

Bee is a local node, just like Personium node, but local node file system will replicate data to the public gateway. The public gateway is used for demonstration purposes, but it is enough to demonstrate how replication works, test assumption and integration mechanisms.
I highly recommend run it with the binary bee to begin with, avoid using docker image at the start - because the volume mounting and network bridge can complicate things... The bee was built with golang, thus running the Swarm Bee node does not need to install any other dependencies.
Download binary based on the platform: https://github.com/ethersphere/bee/releases/tag/v0.1.0
Start Bee Node
Step 1: Create a bee-config.yaml file in project working directory (remember to fill a password for decryption key):
api-addr: :8083
bootnode:
- /dnsaddr/bootnode.ethswarm.org
config: ~/.bee.yaml
cors-allowed-origins: []
data-dir: ~/.bee
db-capacity: "500000"
debug-api-addr: :6060
debug-api-enable: false
global-pinning-enable: false
help: false
nat-addr: ""
network-id: "1"
p2p-addr: :7070
p2p-quic-enable: false
p2p-ws-enable: false
password: ""
password-file: ""
payment-threshold: "100000"
payment-tolerance: "10000"
tracing-enable: false
tracing-endpoint: <IP_ADDRESS>:6831
tracing-service-name: bee
verbosity: "5"
welcome-message: ""

Step 2: Start the Swarm Bee Node, and a service URL should be available at http://localhost:8083
bee start --config bee-config.yaml

Step 3: Upload file from local gateway
the gateway provides a standard http API compliance with OpenAPI 3 standard. After uploading the file, the API responses with a JSON containing Swarm file reference.
➜  curl -F<EMAIL_ADDRESS>http://localhost:8083/files

{"reference":"e535b67ecffefa437aae8c47f35a047d252e50e3cc34f2d5468c4abb862dbde0"}

with file upload encryption:
curl -H "swarm-encrypt: true" -F<EMAIL_ADDRESS>https://localhost:8083/files

# returning references containing both hash and encryption key
# e.g. 276ee82fffff32fe87f9a8cf6c7e798ccd039bb16c571258422bd049368ac45da is the hash
#          ece74a3c5b4e0858d28e0c8d3dfa508accfe50fcb004eb4bfd6f1f8b43da8b7 is the decryption key, ideally the data owner should keep the decryption key secured
{"reference":"276ee82fffff32fe87f9a8cf6c7e798ccd039bb16c571258422bd049368ac45daece74a3c5b4e0858d28e0c8d3dfa508accfe50fcb004eb4bfd6f1f8b43da8b7"}

The public gateway decryption is disabled, this means the data are replicated to the public gateway, but your data is won't allow decryption.
The reference can be used generate a HTTP gateway link on localhost:

http://localhost:8083/files/e535b67ecffefa437aae8c47f35a047d252e50e3cc34f2d5468c4abb862dbde0

or once the file is replicated over public gateway, the same reference is accessible via:

https://gateway.ethswarm.org/files/e535b67ecffefa437aae8c47f35a047d252e50e3cc34f2d5468c4abb862dbde0

Thank you. I will create a repository for this app.

The network-id value 1 would by default peering to the swarm public gateway. Interestingly, a user can potentially create their own private cluster. this is interesting because potentially a user can keep it private, but also allow them to switch storage/hosting provider when presenting the right identity/ownership.

Moving contents of this issue to https://github.com/personium/app-swarm


No ipv6 mirroring

Hi.
I have installed version 1.4.2 on a buffalo wzr-hp-g300nh, running  openwrt chaos calmer 15.05.1 (ar71xx-generic).
I can successfully mirror all ipv4 traffic from my br-lan interface, via TZSP to a remote server, but when I capture traffic on the remote server, I can't see any ipv6 traffic. My br-lan interface has ipv6 addresses, and I am successfully generating ipv6 traffic (ping6 ipv6.google.com).
How can I mirror ipv6 traffic?
Best Regards,
Jorge Santos

This was a suspected issue but thanks for confirming it. You can track progress via #52.


Develop

[ ] tests passed
[ ] all tests pass
[ ] science test figures
[ ] release test figures
[ ] ran uncrustify prior to final commit
[ ] ReleaseNotes entry

We are feature complete for VIC 5.1. There is still one more issue outstanding with the 5.1 Milestone
A few outstanding tasks before we can release:

[ ] Docs update - forcing units (@yixinmao)
[ ] Docs update - advertise MetSim (@arbennett)
[ ] Run science tests (@yixinmao, @dgergel)
[ ] Run release tests (@yixinmao, @dgergel)

cc @UW-Hydro/vic-developers, @tbohn, @wietsefranssen

@UW-Hydro/vic-developers - can we set a target date for this release?

@UW-Hydro/vic-developers would just after the new year be a reasonable time? Before that might not be ideal, since many people are traveling for the holidays.

What kinds of changes are you allowing at this point?  I've got my open PR (#723 ) that addresses 2 issues (#722, #759) and might possibly address 1-2 more (#749, #760)...  plus a few changes that aid in using my new veg parameters.


How to transfer the state of connection.

Please how can I pass the state of the connection between ViewControllers?

Can you provide more context? Because, I am not sure if knowing connection status without having the connection itself is useful. Regardless, the connection does not expose its status. You need to subscribe to events and you could track based on the events.

Thanks for responding.I found an alternative to what I was trying to achieve.


remove dep pinning, increase MSRV

I am hesitant to merge this cause it increase too much MSRV for no great benefit apart from fixing https://github.com/bitcoindevkit/bdk-cli/issues/85 which is an issue but only for WASM and only because the crate is unmantained and not a bug

with https://github.com/rust-bitcoin/rust-miniscript/pull/420 rust-miniscript would start using this crate with a 1.41.1


setRepeat doesn't update repeat count

3.17

Phaser Version: 3.17
Operating system:  macOS High Sierra
Browser:  Safari

Description
Your pooping mummy example online -- when I set the repeat count to 0 in the configuration object, then try setting it to -1 through "setRepeat" via the sprite.anims variable, nothing changes.
However, when change the repeat value by doing this: sprite.anims.animationManager.anims['walk'].repeat = -1
then the repeat works as expected.
Example Test Code
`var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: 800,
height: 600,
pixelArt: true,
scene: {
preload: preload,
create: create
}
};
var game = new Phaser.Game(config);
function preload ()
{
this.load.image('poo', 'assets/sprites/poo.png');
this.load.spritesheet('mummy', 'assets/animations/mummy37x45.png', { frameWidth: 37, frameHeight: 45 });
}
function create ()
{
var mummyAnimation = this.anims.create({
key: 'walk',
frames: this.anims.generateFrameNumbers('mummy'),
frameRate: 16,
repeat: 0
});
var sprite = this.add.sprite(50, 300, 'mummy').setScale(4);
sprite.anims.setRepeat(-1);
sprite.play('walk');   //here

this.tweens.add({
    targets: sprite,
    x: 750,
    duration: 8800,
    ease: 'Linear'
});

sprite.on('animationrepeat-walk', function () {

    var poop = this.add.image(sprite.x - 32, 300, 'poo').setScale(0.5);

    this.tweens.add({
        targets: poop,
        props: {
            x: {
                value: '-=64', ease: 'Power1'
            },
            y: {
                value: '+=50', ease: 'Bounce.easeOut'
            }
        },
        duration: 750
    });

}, this);

}
`
Thanks!

Thank you for submitting this issue. We have fixed this and the fix has been pushed to the master branch. It will be part of the next release. If you get time to build and test it for yourself we would appreciate that.

Just confirming -- tested and the fix works, thanks!
On Wed, Jul 3, 2019 at 10:34 AM Richard Davey<EMAIL_ADDRESS>wrote:

Closed #4553 https://github.com/photonstorm/phaser/issues/4553 via
deca3c9
https://github.com/photonstorm/phaser/commit/deca3c95a36bf3e649006053f2fc36eaa6b3c3ea
.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/photonstorm/phaser/issues/4553?email_source=notifications&email_token=AA2OC2SA56GS63KVFBW56KLP5S2H3A5CNFSM4HPJFVJKYY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOSJ7QNQQ#event-2457798338,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA2OC2R4WC2TH6KBHU5BJADP5S2H3ANCNFSM4HPJFVJA
.

--

Michael Greenhut
Writer, Game Developer, Clarion workshop graduate


luci-app-mwan3: Colons removed from input headers

Most OpenWrt applications do not have a colon in input headers.
This has been explained in #1566 as well.
This commit removes the said colons.

see #2097