MatTable sample code - expected exception (There is no registered service of type 'System.Net.Http.HttpClient'), but what is the solution?

I am attempting to use the sample paginator code for MatTable (WASM).
This piece of code won't run and results in There is no registered service of type 'System.Net.Http.HttpClient'
I found all the threads on this exception, dating back almost 12 months.
Except for "MatTable expects a HttpClient" I have not seen the exact way of doing that.
Please advise what @usings or @injects I need to make this work?
`

Name
Price
Horsepower

@context.Name
@String.Format("${0:f2}", @context.Price)
@context.Horsepower

    @code
    {

        public class Car
        {
            public string Name { get; set; }
            public double Price { get; set; }
            public int Horsepower { get; set; }

            public Car(string name, double price, int horsepower)
            {
                Name = name;
                Price = price;
                Horsepower = horsepower;
            }
        }

        Car[] cars = new[]
        {
            new Car("Volkswagen Golf", 10000, 220),
            new Car("Volkswagen Passat", 11000, 240),
            new Car("Volkswagen Polo", 12000, 110),
            new Car("Ford Focus", 13000, 200),
            new Car("Ford Fiesta", 14000, 160),
            new Car("Ford Fusion", 15000, 260),
            new Car("Ford Mondeo", 16000, 120),
        };

    }`

@wvmstr Hello!
The MatTable has an @inject attribute and is trying to inject a HttpClient from the DI container. The error you get means that the container could not provide an HttpClient to inject and fails.
To make this work: Register how you want HttpClient's to be resolved in your Program.cs. Check out docs on microsoft: https://docs.microsoft.com/en-us/aspnet/core/blazor/call-web-api?view=aspnetcore-3.1
However, I personally don't like that there such dependencies in the framework - but that's another discussion I guess (Have not personally used the table)

@lindespang Hey!
The page now looks like this, still get the same error message
`@page "/matpage"
@using System.Net.Http
@inject HttpClient Http
MatPage

Name
Price
Horsepower

@context.Name
@String.Format("${0:f2}", @context.Price)
@context.Horsepower

`

@wvmstr What you are doing now is simply trying to inject the HttpClient again, but the problem is that no http client is registered in the container. When you are injecting stuff you can only inject things that are registered
Try this in your Program.cs (assuming you are trying to call an api on your host)
builder.Services.AddScoped(sp =>
    new HttpClient
    {
        BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
    });

Ahhh...... I see.
Got myself into a hole.
My Program.cs has this:
builder.Services.AddHttpClient("ServerAPI", client =>             {                 client.BaseAddress = new Uri(@"https://localhost:44393/");                 client.DefaultRequestHeaders.Add("Accept", "application/json");             });
In my razor page:
@inject IHttpClientFactory ClientFactory
and
var httpClient = ClientFactory.CreateClient("ServerAPI");  usernames = await httpClient.GetFromJsonAsync<UserName[]>("api/usernames");
Thanks for clearing that up for me!

@wvmstr No problems great you solved it!


Provide a functional default implementation of register in Endpoints

Provide a functional default implementation of register in Endpoints
Description
Provide a functional default implementation of register(to routes: RoutesBuilder) for an Endpoint to enable Corvus Users to write composable Endpoints without the need to write a register(to routes: RoutesBuilder) function
Related Issue
#7
How Has This Been Tested?
Ran the test suite
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@bmikaili The SwiftLint error is fixed 👍


Setting dt for mujoco env

Hey,
I am interested in experimenting with different time discretization for mujoco and fell on your repo. To create mujoco environment like HalfCheetah you pass the parameter dt direclty. I am assuming you made changes to the gym package. Would you be able to share those changes ?
Thank you!
Pierre

Hey @pierthodo !
Yes, we modified the mujoco environments. I have just pushed my forked version of OpenAI Gym : github.com/leonardblier/gym
For now, the way I did it is not very clean: I've created one new XML configuration file for every dt and every environment, so only some dt are available. You can add other time discretization by following the same method.

That's great thanks !


mounting the squid log directory onto the host machine for debugging.

Fixes #53

@dirk-thomas can you take a quick look?

If it works and the logs are readable on the host machine after a run it looks good to me.

Tested on the build slave.


Binary tree to DLL

Title: Binary tree to DLL
About: Aim is to create project to convert a binary tree to a doubly linked list in place following in-order
Name: Pushpit Jain
Label: Feature Request
Assignee: ''

Define You:

[x] DevIncept Participant
[ ] Contributor

Is your feature request related to a problem? Please describe.
This is called flattening a binary tree used to convert data stored in a tree to a 1d data structure. The challenge is to do it in-place while following the in-order traversal.

Describe the solution you'd like...
I will use the python class to create a nodes for the binary tree / dll, and the left and right pointers in nodes are to be used as previous and next pointers in converted DLL.
Please assign me this issue under Devincept21

Issue assigned. @pushpit-J19


users

add first name last night for register
maybe Male or Female
have username be light blue /pink

labeling as enhancement only

closing. if this project gets updated then ill use this for a v2 version


gf_Carousel Cannot read property 'Symbol(dartx.round)' of null

Describe the bug
Cannot read property 'Symbol(dartx.round)' of null
at page_view.PageController.new.nextPage (http://localhost:60166/packages/flutter/src/widgets/page_view.dart.lib.js:330:42)
at http://localhost:60166/packages/getwidget/components/carousel/gf_carousel.dart.lib.js:1031:38

We have updated our package so install new version and let us know if you have any issues.

Hi,
After upgrading and Flutter Clean.
Same Problem


[Node.js SDK, LUIS] How to replace a Dialog with new Entities?

I have a multi-turn dialog using LUIS as recognizer with two waterfalls for this Intent:
self.bot.dialog(Intent.Type.PlayIntent,
        [
          self.GetSongDialogWaterfall,
          self.PlaySongDialogWaterfall

        ]).triggerAction({
          matches: Intent.Type.PlayIntent
        }).cancelAction('CancelIntent', "Ok.", {
          matches: /^(cancel|nevermind)/i
        });

where I have the two waterfall GetSongDialogWaterfall = function (session, args, next) and the latter is PlaySongDialogWaterfall = function (session, results, next).
Now, I'm trying to implement a logic similar to the flow depicted in the docs here, but slightly differently from there, since in my use case the utterance has two or mode Entities, so the Bot as as soon as does not find some of them like for those two:
entities.artistName = BotBuilder.EntityRecognizer.findEntity(args.intent.entities, Entity.Type.ArtistName);
entities.songTitle = BotBuilder.EntityRecognizer.findEntity(args.intent.entities, Entity.Type.SongTitle);

Should try to re-prompt the user to get the missing one like:
if ( Util.empty(entities.songTitle) ) { //Entity.Type.SongTitle
    BotBuilder.Prompts.text(session, self.getLocalizedString('RESPONSE_NOSONGTITLE'));
}

At this point the waterfall should goes to the second function in the list i.e. PlaySongDialogWaterfall, and here I should check the condition that (1) I have the song to be played or (2) the bot has got in the response some missing Intent like here:
if ( !Util.empty(session.userData.song) ) { // got a song then play
//...
} else if (!Util.empty(results.response) ) { // got a response
  //@TODO: replace dialog with the right `Intent` values
 }

So in the case of (2) I have got back from the user a string for the songTitle in the results.response object this time, and I would like to submit the previous waterfall in this Intent -  hence the GetSongDialogWaterfall waterfall, in order that this time I can process the args with success having all the needed values so that this time:
if ( Util.empty(entities.songTitle) ) { //Entity.Type.SongTitle
    BotBuilder.Prompts.text(session, self.getLocalizedString('RESPONSE_NOSONGTITLE'));
} else {
 // find the song...
}

But I don't understand how to use the replaceDialog method, that in the above examples is something like
// Repeat the dialog
session.replaceDialog(MyIntent, { reprompt: true });

to handle the Entities values in the response to be provided to the first waterfall as input.

Can you please let us know if the issue still persists?

@fanidamj hello, thanks for your reply, at this time I cannot be sure, because I have changed how the waterfall works. I will have a look, thanks.


Integrate docker-compose setup into CI integration test

Following #273, we should replace the python script setup for our integration tests with the new docker images.
The build stage already produces the necessary image for the integration tests.

Closing, solved in the duplicate issue #860


[$1000] Web -  Inconsistent error messages text on wrong magic code

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:
Action Performed:

Signout if you are logged in
Enter an email > continue
Enter wrong magic code
Login
Go to contact methods
Add an email > verify
Enter wrong magic code

Expected Result:
same error message
Actual Result:
Inconsistent error messages text on wrong magic code
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/a0f6fb15-a5e1-40b6-8410-5b4769b4489d
https://github.com/Expensify/App/assets/93399543/9d39325a-dc6a-4e63-b348-29da8bf35cac
Expensify/Expensify Issue URL:
Issue reported by: @chiragxarora
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1688221719614829
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0150dd5082869ecc1c
Upwork Job ID:<PHONE_NUMBER>517607424
Last Price Increase: 2023-07-01

Proposal
Please re-state the problem that we are trying to solve in this issue.
inconsistent error message on incorrect magic code
What is the root cause of that problem?
Root cause of the issue is the different error messages being passed from backend. When user enters an incorrect code while signing in, different error message comes from backend, when wrong code on secondary login, different error message.
What changes do you think we should make in order to solve the problem?
We should make the error message consistent on backend, we should pick one error message out of two and use it on both flows.
We should use the one which says "incorrect magic code, please try again or request a new one" because other message mentioning code expiry doesn't make much sense

Results

### What alternative solutions did you explore? (Optional)
None

Agree this is expected: "incorrect magic code, please try again or request a new one"

@chiragxarora  Could you provide references for your proposal? https://github.com/Expensify/App/issues/22017#issuecomment-1615943468
From code I could see places where we are setting the magic code error locally. Gentle suggestion would be to provide references and more information in proposal, so that we don't have to assume certain parts of proposal.

I think backend should change the error message, because right now it is showing what backend is sending in error
https://github.com/Expensify/App/blob/c614ed94a61ff37c248828a33f0f147cdb0a2143/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js#L168

We have a fresh proposal for you to review @abdulrahuman5196

@MitchExpensify
In the signin page we show This magic code is invalid or has expired, please request a new code and try again which is got from backend
In contact verification page we show Failed to validate contact method with given magic code. Please request a new code and try again. which is shown with local data.
Which one should be the right one to maintain consistency? Based on that we can make the change.

This is expected: "Incorrect magic code, please try again or request a new one"

I think this has been fixed, error message while verifying contact method has been replaced by a more appropriate message.

The text is changed but still inconsistent as per the OP. Correct me if wrong. @MitchExpensify

Can you tell when that new text was introduced @abdulrahuman5196 ? curious to see that

friendly bump @abdulrahuman5196

No overdue, Melvin!

Thank you! Yes I agree this is the expected text

Confirmed this is the expected text. As such, do any of the existing proposals sound good to you @abdulrahuman5196 ?

Reviewing this now

On @chiragxarora 's proposal here https://github.com/Expensify/App/issues/22017#issuecomment-1616463336
There is one major issue - currently backend error messages are not translated. I think that could have been the historical reason of showing local error in terms for secondary validation and not for signin (Because signin is not expected to be translated AFAIK). So If we relay on backend error, we won't be able to shown translated content in secondary verification page.

@HezekielT 's proposal here https://github.com/Expensify/App/issues/22017#issuecomment-1617841843 looks good and works well. Since we are already showing the local error message, we can update it to have consistency.
🎀 👀 🎀
C+ Reviewed
cc: @MitchExpensify

@MitchExpensify @abdulrahuman5196 sorry if this was already discussed, but should we perhaps figure out what the final copy should be before making the update? Otherwise somebody can change one of them and we'll be back to square one
I briefly looked at the PR that introduced this copy (cc @Beamanator @aldo-expensify) and I couldn't find a linked issue with the Waiting for Copy label -- again, I took a quick look, so I could've missed it.

I guess we can also move forward with the proposal, since part of the checklist is to make an issue with the Waiting for Copy label to finalize the copy, but since it sounds like this message was updated recently, I think we should go a step further than "it's inconsistent, therefore it's a bug".
I actually find the copies to be appropriate for the different cases/flows

I figured this was the expected text seeing as its taken from the most prominent real estate (Sign in) so if it is wrong I would think it would have been noticed by now. Is that solid enough reasoning to move forward with or do we need to get a label on this do you think @cead22 ?

I think that's reasonable. However, I think if we simply update this using this reasoning, then nothing stops the next person from thinking this text is wrong, it's the same as in the sign in page, but this is a different flow, which is also reasonable. And then we'll just continue creating PRs to update this over and over
I think we should discuss in product or with marketing such that when the next person thinks this is wrong, and finds the last PR that updated it, they can also find the slack discussion where this was agreed on, which should either settle it, or they can re-start the discussion to change it again

@chiragxarora yes, but I may have missed the point you were trying to make. Can you perhaps clarify? I think my previous comment still stands

firstly, we should remove/replace the errorField from the failure data and let the onyx use the error message received from backend while validating code

I agree with this, but we need to figure out what to do with the other message first, and I'm proposing we discuss what we want these messages to be moving forward, instead of simply changing them to be consistent even though the error messages make sense for the both flows

Agree on the concern @cead22 . I am assuming @MitchExpensify confirmed for this question. https://github.com/Expensify/App/issues/22017#issuecomment-1627395700.
We could check again from product if the confirmation is correct to be safe @MitchExpensify ?

Ah yes, that makes sense, and I think it's in line with what I commented here

@cead22 Just checking back. I assume we are waiting on product comeback.
On another note. from your comment

firstly, we should remove/replace the errorField from the failure data and let the onyx use the error message received from backend while validating code

I agree with this, but we need to figure out what to do with the other message first, and I'm proposing we discuss what we want these messages to be moving forward, instead of simply changing them to be consistent even though the error messages make sense for the both flows

I was not inclined to this because, backend error messages don't have translation as of now. It is not a problem for login page, but will be in secondary verification, if we remove current onyx error and rely on backend error message, we would regress the translation capability in secondary verification page.
If people unknowingly changing the text is the concern means, we could add a comment mentioning a similar text is used in login page and some information and we can say change both places if required.

@cead22 is better placed to help out with the technical considerations here 👍

@MitchExpensify we're waiting for you to lead this product discussion, not on anything technical

Ah got it! Thanks @cead22
This seems be essentially be a copy issue so I'm applying the Waiting for Copy label.
@LLPeckham - what do you think is the best copy for all cases whenever
In the signin page we show "This magic code is invalid or has expired, please request a new code and try again"
In contact verification page we show "Failed to validate contact method with given magic code. Please request a new code and try again"
Both make sense but we need to decide which is best for both cases so we don't keep changing them endlessly. Thanks!

Got it. @MitchExpensify - Question: would this error code also show up if someone entered a code just incorrectly? It seems like we basically want to decide on a blanket error message for any time a code is either invalid or entered incorrectly? LMK if that is what we're trying to figure out here, because if so, I agree we should just have one standard error message. Thoughts on something like: "Incorrect or invalid magic code. Please try again or request a new code."
With "This magic code is invalid or has expired, please request a new code and try again." invalid = expired, but doesn't cover the case where it's just incorrect, so I like saying it's either entered wrong or invalid altogether and the next steps for the user is to either try again or request a new code.
What do ya think?

Both make sense but we need to decide which is best for both cases so we don't keep changing them endlessly. Thanks!

To clarify, having different messages for different flows -- specially if they make sense for their respective flow, imo, is also an option

"Incorrect or invalid magic code. Please try again or request a new code."

This sounds good to me @LLPeckham !

@cead22 got it. So either I'd recommend one message per flow, which is if I'm understanding correctly:

Flow 1 - When a user is trying to validate a contact method and uses an invalid/incorrect code. So the message would be: Failed to validate contact method with given magic code. Please try again or request a new code.

Flow 2 - When a user is at the sign in page and uses an invalid/incorrect code. So the message would be: "Incorrect or invalid magic code. Please try again or request a new code."

Or just use the blanket code for both: Incorrect or invalid magic code. Please try again or request a new code.
I'm open to both if you think it makes sense to have 2 separate messages for the different scenarios (cc @MitchExpensify @cead22), but that's the copy I'd recomend for either case!

I think we should just go with one message for this error code, so I'd suggest sticking with: Incorrect or invalid magic code. Please try again or request a new code.

Thanks!
@abdulrahuman5196 I think we're ready to move forward, do you still think @HezekielT 's proposal is the one to go with?

Yeah. I still think, @HezekielT 's proposal here https://github.com/Expensify/App/issues/22017#issuecomment-1617841843 looks good and works well. We also need translation for the new string.
We also need to update the backend error message separately on server. @cead22
🎀 👀 🎀
C+ Reviewed

I think we should just go with one message for this error code, so I'd suggest sticking with: Incorrect or invalid magic code. Please try again or request a new code.

@LLPeckham If possible could you also provide the required translation for the new string?

Asked for translation here, will report back

Bumped the thread in Slack for the translation

Translation here:  Código mágico incorrecto o no válido. Inténtalo de nuevo o solicita otro código.

We also need to update the backend error message separately on server. @cead22

@abdulrahuman5196 I can take care of this part (or ask an internal engineering to do it). What's the API call that's returning the error message we need to update?

The proposal is complete because we only expect front end changes in the proposal, or at least that's my understanding. If you feel differently, I think you should feel encouraged to start a discussion about this in #expensfy-open-source, but I don't think it's worth changing this decision after having selected a proposal and having a PR submitted

Payment summary:
Reporting: @chiragxarora $250
C: @HezekielT $1500
C+: @abdulrahuman5196 $1500

The PR that introduced the bug has been identified. Link to the PR:
The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

Not a regression. We have made the error message consistent.

Determine if we should create a regression test for this bug.
If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Regression test needs to be added. But can only be added after backend fix is also done. So we can add regression test part of that.
@MitchExpensify / @cead22  Could you kindly create separate issue for backend string update if required?

@MitchExpensify / @cead22 Could you kindly create separate issue for backend string update if required?

Is this update required do you think?

Reporting: @chiragxarora $250 - Paid and contract ended
C: @HezekielT $1500 - Please accept the Upwork offer 👍
C+: @abdulrahuman5196 $1500 - Paid and contract ended

Thanks @HezekielT , Paid and contract ended 👍

Is this update required do you think? @cead22

Not really since the PR to fix the backend message is already merged and deployed. @abdulrahuman5196 given that can you  add the regression test now?

Regression test:

Go to login
Enter your email address and click continue.
Add incorrect magic codes in the magic code inputs.
Verify that an error messages that says Incorrect or invalid magic code. Please try again or request a new code. is displayed.
Now enter the correct magic code and login.
Navigate to Settings => Profile => Contact methods
Click on New contact method.
Enter your email and click on Add option.
From Contact methods options click on Please verify this contact method.
Add incorrect magic codes in the magic code inputs.
Verify that an error messages that says Incorrect or invalid magic code. Please try again or request a new code. is displayed.
Change the language to Spanish.
Repeat step 10 and 11.
Verify that an error messages that says Código mágico incorrecto o no válido. Inténtalo de nuevo o solicita otro código. is displayed in spanish.

@cead22 @MitchExpensify

Added the test request. Thanks all! Closing


settings: Fix push notifications tooltip being shown incorrectly.

We were showing the push notifications tooltip in user default
settings section even if the notifications were configured on the
server.
The bug was becasue the setting value was undefined for the template
used for user default settings section, so this PR fixes the bug
by correctly passing the settings value to relevant template file.
Fixes #21602.

Merged and backported to the 5.x branch, thanks!


Support for ignore unknown fields in target structs during deserialization

Adds support for ignoring undeclared fields in a struct to be deserialized into.
Minor expansion to @RGafiyatullin pull request to allow Record and Map values to be deserialised from JsonValues too.
An example of usage can be seen in test_unknown_struct_field

@ali2992 I am terribly sorry, I managed to miss this PR for such a long time... :(
Are you still interested into landing this feature? I am trying to budget my time on this project and trying to avoid to review PRs which lost interest from the submitter.
If so, unfortunately the code changed quite a bit in the last months, so there are some conflicts to fix, too.

Hello! As of today, I am stepping down as a maintainer of this library for a while (see #174). Please ping @flavray from now on.
Thanks again for your contribution :)

Hello! As of today, I am stepping down as a maintainer of this library for a while (see #174). Please ping @flavray from now on.
Thanks again for your contribution :)


Hashmap: use faster hashing than hashof

The user should be able to provide the desired hash function

See: https://probablydance.com/2018/05/28/a-new-fast-hash-table-in-response-to-googles-new-fast-hash-table/


Entity viewer gene view sidebar

Type

[ ] Bug fix
[ ] New feature
[x] Improvement to existing feature

Related JIRA Issue(s)
https://www.ebi.ac.uk/panda/jira/browse/ENSWBSITES-544
Description

Created the container and presentation components to draw the sidebar contents for gene view using mock data stored locally.
Created ExternalLink shared component

Views affected
Entity Viewer - > Gene view
Other effects

[ ] I have checked any requirements for Google Analytics
[ ] I have created any required tests
[ ] The PR has as its final commit a WASM/JS update commit if any Rust files were updated.

General concern: species for which sidebar data is unavailable (Plasmodium falciparum, Human grch37, Caenorhabditis elegans) now show error in Entity Viewer. Somewhere some check for data availability is missing.

General concern: species for which sidebar data is unavailable (Plasmodium falciparum, Human grch37, Caenorhabditis elegans) now show error in Entity Viewer. Somewhere some check for data availability is missing.

Added some checks to prevent the error and display "No data to display" instead.

Another general remark (sorry). Could you please check your styles with Andrea? In the sidebar for genome browser, most text elements have a font size of 12px; here, they have a size of 14px.

Another general remark (sorry). Could you please check your styles with Andrea? In the sidebar for genome browser, most text elements have a font size of 12px; here, they have a size of 14px.

These are now updated.


Strange behavior

First, thank you for this package. Lately I have experimented strange behavior when reading a feather file. I'am sorry I can't reproduce easily the problem since it seems to be random. But I have managed to get a screenshot that illustrate the problem.
As you can see here, I start with a clean state of R Studio. Then I run the same chunk of code 3 times. The first two times, I get an error on the gather suggesting that the feather file was not read correctly (duplicated identifiers are different). On the 3rd time, the feather file seem the be read correctly.

I also found that the number of read lines are not consistent. In the first screenshot, when I read 4573 observations, whereas in the following screenshot I only read 2356 observations.

I know this is not the ideal to debug, but do you have an idea?
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Linux Mint 18.3

Matrix products: default
BLAS/LAPACK: /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/lib/intel64_lin/libmkl_rt.so

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C               LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8
 [6] LC_MESSAGES=en_CA.UTF-8    LC_PAPER=en_CA.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
 [1] ggpmisc_0.2.16     feather_0.3.1      forcats_0.3.0      stringr_1.3.0      dplyr_0.7.4        purrr_0.2.4        readr_1.1.1
 [8] tidyr_0.8.0        tibble_1.4.2       ggplot2_<IP_ADDRESS>00 tidyverse_1.2.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.16      cellranger_1.1.0  pillar_1.2.2      compiler_3.4.4    plyr_1.8.4        bindr_0.1.1       tools_3.4.4
 [8] lubridate_1.7.4   jsonlite_1.5      nlme_3.1-137      gtable_0.2.0      lattice_0.20-35   pkgconfig_2.0.1   rlang_<IP_ADDRESS>01
[15] psych_<IP_ADDRESS>     cli_1.0.0         rstudioapi_0.7    yaml_2.1.19       parallel_3.4.4    haven_1.1.1       bindrcpp_0.2.2
[22] withr_2.1.2       xml2_1.2.0        httr_1.3.1        hms_0.4.2         grid_3.4.4        glue_1.2.0        R6_2.2.2
[29] readxl_1.1.0      foreign_0.8-70    modelr_0.1.1      reshape2_1.4.3    magrittr_1.5      scales_<IP_ADDRESS>00 rvest_0.3.2
[36] assertthat_0.2.0  mnormt_1.5-5      colorspace_1.3-2  stringi_1.1.7     lazyeval_0.2.1    munsell_0.4.3     broom_0.4.4
[43] crayon_1.3.4

Do you know why that is? Curious

I am not sure. I know it caused very strange behaviour in R. See my SO question here:
https://stackoverflow.com/questions/50135927/mkl-libraries-r-and-ggplot2


Rework some test projects to use the "foo" default

Generally that means either switching "foo" and "bar" around (reversing
the arrow), or it means push "foo" to "bar" (and sometimes "bar" to
"baz", etc..) to free up "foo".
For trivia that leaves 80/1222 outliers, therefore 93.4% of test
project use the default. :)
Refs #5746

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

Wow this is way larger than I thought it would be, thanks so much for doing this!
@bors: r+

:pushpin: Commit f8c9928cc1672b46d37adc6b99b0f8e1bafa2aab has been approved by alexcrichton

:hourglass: Testing commit f8c9928cc1672b46d37adc6b99b0f8e1bafa2aab with merge 207c2cb14d55181f47058a17cb58d5a5f6a0c040...

:sunny: Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 207c2cb14d55181f47058a17cb58d5a5f6a0c040 to master...


Entity method toObject() not inferring type from entity props

Thanks for this great libs.
I tried to learn DDD using this library and your example in this repo: https://github.com/4lessandrodev/ddd-app/blob/main/src/modules/product/domain/test/product.aggregate.spec.ts
In your example repo (version 3.5.1) it can be seen that the toObject() method returns the correct type

and it doesn't work in version 3.6.2 and I have to manually input the generic parameter to get the correct type

Thank you

hey @dayatwork thanks for reporting...
I updated the sample to new version and It keep working. Could you show what the create "factory" method was defined? it returns the your class type? typing is applied dynamically according to the return and to be correctly inferred it needs to return an instance with the same type as the inferred class.
Example:
	class Product extends Entity<Props> {
		private constructor(props: Props) {
			super(props);
		}

                public static create(props: Props): Result<Product> {
			return Ok(new Product(props));
		}
	}

In the example the method create return a type Result<Product>


Undertow 1.3.0.Beta3

Windows Build 1674 is now running using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6

Linux Build 2143 is now running using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6

Core - Full Integration Build 1275 is now running using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6

Windows Build 1674 outcome was SUCCESS using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6
Summary: Tests passed: 3372, ignored: 63 Build time: 0:33:19

Linux Build 2143 outcome was SUCCESS using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6
Summary: Tests passed: 3372, ignored: 63 Build time: 0:35:32

Core - Full Integration Build 1275 outcome was SUCCESS using a merge of 3bb3cb33ef2d27d434a3008825344ed3eada17b6
Summary: Tests passed: 2910, ignored: 372 Build time: 0:47:58


SFP_UI_win10_x64_net7.zip Malicious File h!ml file (Not HTML)

This download contains a trojan, and is not a false-positive.
The non-net version doesn't have this file and runs without issues.
https://imgur.com/a/7y15BSg

It's a false positive.


To remove /v1/notify-embedding-status-changes from the management fc-port of few forwardings

As per our ApplicationPattern concept , management fc-port manages the creation or deletion of an output fc-port.
As per the specification , "ApplicationWhichWantsToGetNotifiedAboutEmbeddingStatusChanges" subscribes for the /v1/notify-embedding-status-changes.
In the configuration file , this API /v1/notify-embedding-status-changes ro-2-1-0-op-s-is-013 is listed as a management port for the following forwardings ,

TypeApprovalCausesRequestForEmbedding
example output fcport : ro-2-1-0-op-c-im-tar-2-0-1-000(/v1/embed-yourself)

ApprovingApplicationCausesPreparingTheEmbedding.RequestForOldRelease
example output fcport : ro-2-1-0-op-c-im-----008(/v1/inform-about-preceding-release)

ApprovingApplicationCausesPreparingTheEmbedding.RequestForUpdatingNewReleaseClient
example output fcport : ro-2-1-0-op-c-im-----009(/v1/update-client-of-subsequent-release)

ApprovingApplicationCausesPreparingTheEmbedding.RequestForEmbedding
example output fcport : ro-2-1-0-op-c-im-----000(/v1/embed-yourself)

Proposal :
SInce this service /v1/notify-embedding-status-changes will not initiate creating the ouput fc-ports for the above mentioned forwardings , it shall be removed from the management fc-ports.

Related Issue : https://github.com/openBackhaul/RegistryOffice/issues/531

1.:
Both occurrences of TypeApprovalCausesRequestForEmbedding have been deleted from OAS, CONFIGfile and ForwardingList according to RO issue#538
2. + 3. + 4.:
RO://v1/notify-embedding-status-changes has been replaced by RO://v1/register-application as fc-port-update management in the ForwardingList. As management ports are listed just once in the CONFIGfile, no second fc-port got created for RO://v1/register-application, but the fc-port for RO://v1/notify-embedding-status-changes just removed.


Feature - IJ-159 Wellbeing Services

New Entities
I've introduced 2 new entities: wellbeing services and metrics services (which acts as a join table for wellbeing services and wellbeing metrics). The ERD for Wellbeing Assessments on LucidChart has been updated to reflect these table and can also be seen here:

Team Members
From a team members perspective there are now 2 new buttons on the dashboard, the first allows them to consider new wellbeing services which includes that services name, a descriptions, a link and connections between that service and the metrics.
Dashboard

Wellbeing Services Index

Wellbeing Services New/Edit Form

The second button allows the team members to view the Wellbeing Metrics, currently I haven't added in the add/delete functionality as Include UK have told us these metrics are unlikely to change however they can inline edit them in case they feel the naming needs to be adjusted.
Wellbeing Metrics Index

Wellbeing Metrics Inline Editing

Users
From the users perspective they can now click on the My Support button on the dashboard and they'll see an index page of all the wellbeing services which is using the exact same markup as the team members view (sans controls).

When a user adjusts their score for a wellbeing metric this will now trigger the services that are linked to said metric to appear in the left-hand 'Your Services' section with a fade animation.
https://user-images.githubusercontent.com/6815945/116555314-261f3c80-a8f4-11eb-9a7f-7862bdcdff63.mov
Additional Info
I've also added in a 'Coming Soon' controller that is linked to the buttons on the dashboard for which we aren't going to implement functionality as yet, when a user clicks these buttons now they are simply redirected back to the dashboard and shown a coming soon message.
Lastly I'm aware there are UI improvements that can be made but I've not been provided with any sort of reference for what this UI should look like nor are any of us experts on UI/UX (me especially!) so if those are the sorts of changes being suggested please do just go ahead and make them yourself.

@garethdandrews;
Updates to the wellbeing service form illustrated below.
Desktop:

Mobile:


Allow rendering of React components without using a generator function (just direct React Component)

When using Redux, the main component exposed to the API is a function that returns a React component. This PR allows rendering of simple React components. The more advanced functionality of using a generator function is essential for tools like redux and react-router.
In the dummy app, along with App component (that uses Redux), ServerApp and ClientApp now also export a simple React component, HelloWorld. The component can be rendered by the client or using server side rendering, as demonstrated in the index page.
To test, run the dummy app and export some components with and without Redux, in both client an server apps.

@josiasds Let's get this wrapped up. I want to push this to rubygems ASAP! Lots of people ready to use this! :+1: :-)

@justin808 Ready!

See #20


pull request for e2e test at 12/06/2016 20:56:01

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[Ultracube] Crash when selecting Steam

I'm using the mod ultracube and get a crash in Factory planner when I'm selecting steam.

I have the same error with a similar but slightly different error message:

Thanks for the reports, this is a duplicate of #240 so we'll centralize discussion there.


MX Master 3 mouse buttong being overridden to LMETA + TAB

RUST_LOG=trace sudo -E target/debug/fukomaster
 2024-11-16T08:53:47.397Z TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE
 2024-11-16T08:53:47.397Z TRACE notify::inotify > adding inotify watch: /dev/input
 2024-11-16T08:53:47.397Z INFO  fukomaster      > Watching "/dev/input" for device changes
 2024-11-16T08:53:47.397Z INFO  fukomaster::swipe > Creating virtual trackpad
 2024-11-16T08:53:47.397Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: CREATE, cookie: 0, name: Some("event20") }
 2024-11-16T08:53:47.397Z DEBUG fukomaster        > "/dev/input/event20" created
 2024-11-16T08:53:47.397Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: ATTRIB, cookie: 0, name: Some("event20") }
 2024-11-16T08:53:47.599Z INFO  fukomaster::swipe > Created virtual trackpad
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe >   sys path = "/sys/devices/virtual/input/input61"
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe >   dev node = "/dev/input/event20"
 2024-11-16T08:53:47.600Z DEBUG fukomaster::swipe > Will not track "/dev/input/mice": file name does not start with "event"
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945742336), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "Lid Switch" ("/dev/input/event0")
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945778688), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "Sleep Button" ("/dev/input/event1")
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945779840), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "Power Button" ("/dev/input/event2")
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945768704), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "AT Translated Set 2 keyboard" ("/dev/input/event3")
 2024-11-16T08:53:47.600Z DEBUG fukomaster::swipe > Will not track "/dev/input/by-path": file name does not start with "event"
 2024-11-16T08:53:47.600Z DEBUG fukomaster::swipe > Will not track "/dev/input/mouse0": file name does not start with "event"
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945784576), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "FTCS0038:00 2808:0106 Mouse" ("/dev/input/event4")
 2024-11-16T08:53:47.600Z DEBUG fukomaster::swipe > Will not track "/dev/input/mouse1": file name does not start with "event"
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945789440), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "FTCS0038:00 2808:0106 Touchpad" ("/dev/input/event5")
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945790720), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "Video Bus" ("/dev/input/event6")
 2024-11-16T08:53:47.600Z TRACE mio::poll         > registering event source with poller: token=Token(94430945780992), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.600Z INFO  fukomaster::swipe > Tracking "Intel HID events" ("/dev/input/event7")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945782144), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "Intel HID 5 button array" ("/dev/input/event8")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945783296), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "Ideapad extra buttons" ("/dev/input/event9")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945798656), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "PC Speaker" ("/dev/input/event10")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945799936), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH Mic" ("/dev/input/event11")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945801216), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH Headphone" ("/dev/input/event12")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945802368), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH HDMI/DP,pcm=3" ("/dev/input/event13")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945792000), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH HDMI/DP,pcm=7" ("/dev/input/event14")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945792896), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH HDMI/DP,pcm=8" ("/dev/input/event15")
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945794304), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "HDA Intel PCH HDMI/DP,pcm=9" ("/dev/input/event16")
 2024-11-16T08:53:47.601Z DEBUG fukomaster::swipe > Will not track "/dev/input/mouse2": file name does not start with "event"
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945795968), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "Logitech MX Master3 Mac" ("/dev/input/event17")
 2024-11-16T08:53:47.601Z DEBUG fukomaster::swipe > Will not track "/dev/input/mouse3": file name does not start with "event"
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945796352), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "Logitech MX Keys Mac" ("/dev/input/event18")
 2024-11-16T08:53:47.601Z DEBUG fukomaster::swipe > Will not track "/dev/input/by-id": file name does not start with "event"
 2024-11-16T08:53:47.601Z TRACE mio::poll         > registering event source with poller: token=Token(94430945818624), interests=READABLE | WRITABLE
 2024-11-16T08:53:47.601Z INFO  fukomaster::swipe > Tracking "PBP (AVRCP)" ("/dev/input/event19")
 2024-11-16T08:53:47.601Z DEBUG fukomaster::swipe > Will not track "/dev/input/event20": this is our own virtual device
 2024-11-16T08:53:47.791Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: ATTRIB, cookie: 0, name: Some("event20") }
 2024-11-16T08:53:47.792Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: ATTRIB, cookie: 0, name: Some("event20") }
 2024-11-16T08:53:47.796Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: CLOSE_WRITE, cookie: 0, name: Some("event20") }
 2024-11-16T08:53:48.198Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event19") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event18") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event17") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event3") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event8") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event7") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event9") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event1") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event2") }
 2024-11-16T08:53:48.199Z TRACE notify::inotify   > inotify event: Event { wd: WatchDescriptor { id: 1, fd: (Weak) }, mask: MODIFY, cookie: 0, name: Some("event6") }

Tured out that something was making it be LMETA + TAB. Can you link to your Solaar settings? I was able to workaround by mapping the gesture button to middle mouse click, and then using middle mouse as my 3 finger swipe

Here are my Solaar settings. My code shouldn't be starting any keypresses other than the touchpad gesture, and it especially shouldn't be triggering two keypresses at once. Maybe something else is mapping your mouse buttons to another button?

I think Solaar is definitely doing it, as it stops if I kill solaar. Solaar registers a keyboard device and seems to take over, not matter what I do to the settings. That how I discovered that if a remap my gesture button to middle mouse click that it will allow that

Here's what is looks like in wev
[14:     wl_keyboard] modifiers: serial: 0; group: 16
                      depressed: 00002040: Mod4 Super
                      latched: 00000000
                      locked: 00000010: Mod2
[13:      wl_pointer] leave: surface: 3
[13:      wl_pointer] frame
[14:     wl_keyboard] leave: serial: 53622; surface: 3
[10:    xdg_toplevel] configure: width: 640; height: 1673
[09:     xdg_surface] configure: serial: 8870

So I have to override it to something else for it to work

You can check:

Key/Button Actions and Key/Button Diversion for Middle Button is set to default

Key/Button Actions and Key/Button Diversion for Mouse Gesture Button is set to default

Solaar version - I'm on 1.1.13

Your configured rules

Other than that, if the issue goes away when Solaar is closed, then it sounds like Solaar is doing something weird. Does this only happen when fukomaster and Solaar are both open? Or just Solaar?


refactor: preserve underlines while hashing and decrease hashing length

📝 Description
We wanted to keep the last className of the same CSS property passed to a component and remove the other ones. So we decided to use a different method than cx that does this for us, we developed a method like tailwind-merge but for PandaCSS.
The algorithm was based on splitting className by _ and then keeping the last className of a CSS property and removing the others.
So the bottleneck was that the algorithm was useless while we activated hash on production because all _ became hashed as well!
⛳ Current behavior (updates)
The hashing had been done regardless of the _ between the className.
🚀 New behavior
the className is split based on _ and then hash each part of it separately.
I also decreased the length of the hash strings since we now have two hash strings per class that are joined together at the end.
💣 Is this a breaking change (Yes/No):
No. hashing is an internal process and the end-user should not change anything manually.
📝 Additional Information

I'm confused. Is the cx supposed to keep the last className of a CSS property and remove the others?
(Related to #1131 and !1195)
It doesn't work as expected!

Yeah cx doesn't work as expected
  // Logs: text_red text_blue text_green
  console.log(
    cx(
      css({
        color: 'red',
      }),
      css({
        color: 'blue',
      }),
      'text_green',
    ),
  );

Yeah cx doesn't work as expected
  // Logs: text_red text_blue text_green
  console.log(
    cx(
      css({
        color: 'red',
      }),
      css({
        color: 'blue',
      }),
      'text_green',
    ),
  );

this approach has been discarded in favor of css.raw a while ago
https://github.com/chakra-ui/panda/blob/main/CHANGELOG.md#changed-15
https://panda-css.com/docs/concepts/merging-styles

you might be interested in https://github.com/brendon1555/panda-cx-deduplicator to do it with cx only

@astahmer
This MR resolves this issue:

yeah I understood that part, this PR seems fine to me, I just wanted to clarify that cx isn't expected to smartly merge things 🙏

I'm curious tho, is there anything that prevents you from passing the style object in those components rather than directly setting the className ? or is just a preference

@astahmer thanks for understanding and evaluating applied changes.

If we want to pass objects down, then we should introduce new prop per component to accept such that object.
Seems weird and kinda non-standard to me.
I always prefer sticking to standard solutions. But it worth talking about in our team. We discuss it.

If we want to pass objects down, then we should introduce new prop per component to accept such that object.

fwiw: as shown here, the css prop will always automatically be extracted (without the need for css.raw wrapping the style object passed)
the styled factory already handles this kind of merging, as shown here
that being said, I understand wanting to stay close to standard className, again just pointing out that those things can be handled with Panda

We don't use styled. But the css prop looks great to me.
Thanks for introducing it.

This looks interesting @theMasix.
Discussed this PR with @astahmer. I'm a bit cautious about introducing this to the codebase just for the convenience of merging styles.
Panda was designed to merge styles via the css prop or css function. I recommend using this approach instead of a custom-built tailwind-merge function, which adds extra runtime overhead and JS bundle. This feels like forcing Panda to work like Tailwind or Tailwind Merge. These are two different solutions.
const Demo = (props) => {
   return <div {...props} className={css({ bg : "red.300" }, props.css)} />
}

The fact that this increases the hash length for every user is quite concerning. If you can find a way to shorten the hash further and keep it between 5-6 characters as we had before, we can consider moving forward with this proposal.

@segunadebayo What's your idea about changing the behavior using a hash option flag?

At this point, we can’t accept any new flags. We trying to avoid bloating the config with flags.
These things are easy to add but ridiculously hard to remove in the future.

I think one of the issues that may occur while using the css prop is the thing that writing memorized components become hard.
Imagine a component that has only primitive props. The only prop that has not primitive type is css. Then if we want to wrap the component using memo function, we should handle the css manually and it's a big cons for this solution.
What's your idea about this issue? @segunadebayo


Support for SPM

I failed to add SPM support for this project, but sounds like that was just due to lack of effort. Numerous people have mentioned that a separate target for the ObjC stuff will work.

Hooray this is now fixed!


Update to PDK 2.6.0

This update also updates the PDK template used.
The information PDK gave me while updating:
pdk (INFO): This module is currently pinned to version 2.5.0 of the default template. If you would like to update your module to the latest version of the template, please run `pdk update --template-ref 2.7.1`.
pdk (INFO): Updating genv-auditd using the template at https://github.com/puppetlabs/pdk-templates, from tags/2.5.0 to 2.5.0@366fa32

Did run pdk update --template-ref 2.7.1 as mentioned. All tests did run fine for me after that.

Thanks @Phil-Friderici 👍


stats_list is keyed off of long-text description instead of the more logical hash ID

Hello,
This is more of a pain point related to the design of the API rather than a question. Here is a snippet from my Python REPL:
>>> stats = sc.stats_list(list='valid_cryptic_looking_id_of_actual_list',date='2015-03-31')
>>> stats.get_body()['error']
99
>>> stats = sc.stats_list(list='long_text_description_of_that_same_list',date='2015-03-31')
>>> stats.get_body().keys()
[u'spam_loss_count', u'passive_count', u'source_count', u'lists_remove_count', u'email_count', u'optout_loss_count', u'count_time', u'disengaged_count', u'list', u'active_count', u'lists_count', u'dormant_count', u'signup_month', u'optout_count', u'engaged_count', u'spam_count', u'lists_signup_count', u'new_count', u'day', u'hardbounce_count']

I can use the API as it is but this is a suboptimal setup for a non-versioned API dealing with UTF-8 content, in my opinion.
Is there a way to make the API call with the guaranteed-to-be-ASCII hash ID instead of the long-text description?
Also, would you be open to versioning the API?

As far as I know, anything related to list calls will only deal with the name of the list. The ID at this moment is only used internally.
In the future the API will be updated to support versioning, and other nice things, but I will certainly make your request known to the organization to support list ID.

Also if you are having issues with unicode using our client, please inform  us.

@dserban can this issue be closed out?

Before we do that, can you at least mark this issue as wontfix or as "ASCII ID support is on the roadmap for the next release" or something else that is just as clearly defined?
For context, I'm extracting stats data from the API in order to feed it into a data warehouse for integration.
As such data quality is of the essence.
My greatest concern is that my Python client program won't be able to distinguish between "there is no data behind this combination of list_name+calendar_day" and a silent failure due to my incomplete understanding of the intricacies of Python's implementation of UTF-8.
Being able to retrieve data by ASCII ID would completely solve my problem.
Thanks and please close the issue as soon as a clear decision was made as to the roadmap issue.

http://nedbatchelder.com/blog/201203/pragmatic_unicode.html is a good guide to understand unicode.
Some main takeaways. Unicode is not UTF-8, it's the definition of characters that make up symbols, foreign letters, and so on. The way you can represent unicode characters can be encoded is via UTF-8, UTF-16, and so on.
The problem you're having is actually related to your JSON library not being C optimized. You should make sure when you install simplejson that the C module is actually compiled. If it is not compiled, all JSON strings are converted into a dictionary that have unicode strings for all strings (which is technically correct since JSON is defined as being Unicode UTF-8). If the C module is used, only strings that have unicode strings will be proper unicode strings in Python 2 and ASCII strings are str, and thus you will avoid having to deal with string/unicode issues.

Thank you for taking the time to clarify.
Closing.


Ctl command status certificate: Add secret output

What this PR does / why we need it:
Adds output about the Secret resource for status certificate command.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
Please do test it out on your own Certificates.
Release note:

Add output about the Secret resource for `status certificate` command

/kind feature
/area ctl

/approve
/lgtm
Thanks!

/approve


Hibernate error when having more tables in the same DB used by Kogito - Table is not mapped

Describe the bug
It seems is not possible to have additional tables (not only Kogito's one) in the DB persistence. There is an Hibernate error: "message":"org.hibernate.hql.internal.ast.QuerySyntaxException - XXXX is not mapped".
Expected behavior
It should be possible to have other DB tables in the same DB used by Kogito.
Actual behavior
Error is thrown
How to Reproduce?
1-Create some table in Kogito's persistence (PostgreSQL in my case).
2-Error is thrown when trying to create a new process ("message":"org.hibernate.hql.internal.ast.QuerySyntaxException - XXX is not mapped"
Output of uname -a or ver
Linux Ubuntu
Output of java -version
11
GraalVM version (if different from Java)
No response
Kogito version or git rev (or at least Quarkus version if you are using Kogito via Quarkus platform BOM)
1.24
Build tool (ie. output of mvnw --version or gradlew --version)
No response
Additional information
No response

Closing, I think isn't related to Kogito.


I do not know what caused the build to fail.

I make restfulapi with dotnet core 2.0 in visual studio 2017 and tested it with minishift. However, the build fails.
Is there a way to use the service with the git address, as in this example?
I also refer to the following example. But the build fails.
https://blog.openshift.com/announcing-net-core-2-0-support-openshift/
The git address you are trying to build. I do not know what caused the build to fail.
https://github.com/kyunggyuyeol/apitest

Hi @kyunggyuyeol
Can you clarify how you're interacting with minishift? And did you add the imagestream at https://github.com/redhat-developer/s2i-dotnetcore.
And, just to add, I cloned and built your linked project in the same container that minishift should be using, and it seemed to build fine. That would point me to making sure that minishift is configured correctly to build your project.

@kyunggyuyeol Just checking in to see if you have an update to this issue.


[docs] Add missing packages to index + ui-core/getting-started pages

Bundle size will be reported once CircleCI build #458 finishes.

  Generated by :no_entry_sign: dangerJS against 9dc7afb71f04783ae3b664fad1c88e52e782d02d


Failed: Network error when trying to connect to an endpoint via hubcaps on valid links

Currently using the latest lychee action 1.4.0 and shows Failed: Network error when trying to connect to an endpoint via hubcaps on valid github links

Sorry,
due to a race condition in the pipeline, we pushed an older version of lychee (0.8.2) to the 0.9.0 tag.
The new release binaries didn't exist yet, causing the binary to use old ones.
This is fixed now and the image got pushed again. Update the image sha accordingly.
Can you try again by using v1.4.1?

It's okay!
Just run the action using 1.4.1 and there are so many 429 errors with GitHub links.
Now working:
✗ [429] https://github.com/allegroai/trains/blob/master/docs/trains.conf#L3 | Network error: Too Many Requests
✗ [429] https://github.com/allegroai/trains/issues/239 | Network error: Too Many Requests
Working:
✔ [200] https://github.com/allegroai/clearml/tree/master/examples
✔ [200] https://github.com/allegroai/clearml/tree/master/examples/frameworks/ignite

Okay checking your pipeline again I can see that you're testing a lot of Github links and you run into the rate limiting (even though you set a token; the limit is 1000 requests/hour).
You can try to exclude some Github links with --exclude github.com/allegroai/clearml/whatever and reduce the concurrency with --max-concurrency 5 or so (default is 128).
There is no way to delay requests. Instead, we plan to have per-site request limiting with https://github.com/lycheeverse/lychee/issues/36 in the future.

You could also split up the run into two invocations of lychee and add a sleep in-between, but I would only try that if the above doesn't help.

Thanks a lot.


Rdar 30851899 bridging pch mergemodule mismatch swift 4.0 branch

Explanation: Fix a bridging PCH crash caused by a clang bug
Scope: Causes failure-to-compile (appears as a deserialization error) unless user disables bridging PCH. Triggered by legal-but-clumsy misconfiguration in workspace, seemingly as-performed by cocoapods in unknown number of cases. Might be quite widespread.
Radar: 30851899
Risk: relatively low, it's not even clear to me that a user can detect it in C/ObjC, and it only makes an under-defined corner case of the module system a bit more-deterministic; it's just a corner-case that swift happens to hit when importing definitions from a nest of header symlinks, as produced by cocoapods.
Testing: Swift has a pending test for it https://github.com/apple/swift/pull/10658 ; at the clang level, it can't easily be checked in ObjC, but the misbehaviour can trigget an assertion in clang, which there's an accompanying test for here.

@swift-ci please test


Revert "Add snow provider to host os config doc (#6273)"

This reverts commit 5982fb6534b9a75790f0353818ec904d263e9fcd.
Issue #, if available:
Description of changes:
Testing (if applicable):
Documentation added/planned (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm

/approve


Use primary key but not required for triples templates #145

This change reflects a change in heart -- if there's no primary key specified, we don't want to generate a unique subject IRI unless the model has a primary key.

Looks good to merge @grechaw


address transform bug in advi

fixes a bug @fritzo noticed in ADVI. adds a test that would have caught it.

@martinjankowiak may I merge once tests pass?

fine by me
On Mar 21, 2018 9:49 PM, "Fritz Obermeyer"<EMAIL_ADDRESS>wrote:

@martinjankowiak https://github.com/martinjankowiak may I merge once
tests pass?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/uber/pyro/pull/914#issuecomment-375178842, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVFMghOr4rdbThoBxpIYMpZ8GGGY1il0ks5tgy1JgaJpZM4S2TWY
.


Update ClinVar parsing script to meet new specifications

This PR includes three small changes in the ClinVar parsing script based on the updates mentioned in #84

Replaced semicolon(';') with pipe('|') as the seperating character for phenotypes and RCV
Added a check to remove '-' entries in the PhenotypeList column
Added a check to skip rows that contain more than 5 phenotypes

Closes #84
A working deployment of this PR is available here: https://trait-curation-pr-94.herokuapp.com/traits/

Looks good to me, thanks!


First map UX is confusing

I've now taught three CartoDB workshops since the new wizard-like interface for new users has been implemented. Unfortunately it seems to be really confusing to users.
1

This small wall of text is well intentioned but has some issues:

They don't know what "your dashboard is" (the thing underneath doesn't say "dashboard" anywhere, and the fact that it has a big scrolling map is super confusing)
Once this text is gone, it never comes back.
Letters in circles are not intuitive - especially the other message which has a C in a circle (which looks like a copyright symbol).

Suggestion: shorten this text and make it permanently sit in the place where the map is, as long as you don't have any maps. It should basically just say "Drag a spreadsheet here."
2

The next screen is confusing again:

They just clicked "new map", why do they need to click "create new map"? This seems pointless and mildly annoying.
It's really easy to think that the six boxes at the bottom are specialised wizards - the "or start with a video tutorial" is too subtle. I still accidentally go for one of the boxes sometimes. They should look like videos, not wizards.

3

Now, this is the worst. The most likely thing (IMHO) a user wants to do here (at least, my users) is upload a spreadsheet. And yet that target is so hard to find: it's the non-button "Connect dataset" link towards the left. So:

The really tempting "Create empty map" link takes you to, well, an empty map - and then it's really hard to know what to do.
Also, they've just clicked "new map", then "create new map", so "create empty map" feels pretty much like the right thing to do. "empty" doesn't sound too different from "new".
Where's the friendly "drag a dataset here" right when they need it?
It also just flows badly. So far they clicked bottom right, then top right, and now the have to go left? Ugh.

4

At the next screen, they're a bit confused again. The "Data file" thing at the top looks very clickable, but it's not. Then there's a big inviting text box, which isn't what they want either. And eventually they see "Select a file".
5

Then finally, a couple of users got completely stuck here. They'd selected their dataset file, and they just waited. One thought the computer was broken.
1.It's not obvious why they need to click "Connect dataset".
2. And remember, "Connect dataset" was the exact phrase they clicked on previously to start the process of choosing a file to upload - it doesn't feel right to click that same phrase to finish the procedure.
3. It's a long distance from the filename they just uploaded, and doesn't seem connected at all.
Suggest labelling the button "Finish" or "Done" if it needs to be there at all.

Hi @stevage thanks so much for your feedback. So valuable.

Thanks for the sharing your concerns, @stevage.
Besides the feedback UX related feedback, I was wondering which browser and OS did you use when you took the first capture? The font is wrong and I'm not sure if it's a bug or just that it wasn't fully loaded when you took the image.

Sorry, I was just playing around with an extension that changes default fonts on web pages. I disabled it for the rest of the screenshots. Sorry for the confusion.
I'm on OSX/Chrome. Workshop participants vary quite a lot.

For completeness I'll also criticise this page that comes up between step 2 and 3 above.

First, the copywriting just isn't good enough. Some very non-idiomatic English here ("on the Data Library", "Thinking on"). Also, what's with the comma at the top ("Create a new map,")?
Here's the confusing copyright symbol.
Overall, this page is not helpful. Having text flash up that tells you what will happen in the future, or options that are about to be available to you - and then disappears, never to return - only helps the rare user that actually reads and absorbs text the first time they see it. The line "You can also start from scratch" without a decent explanation of how you do that is a bit useless.

Overall, it looks like the purpose of this page is to explain three ways to get started. So I just just having those three ways much easier to find in the next page. Currently that page has the perfect placeholder:

You have not connected any datasets yet
Start with one of the following datasets from the data library.

It would be an instant improvement, IMHO, to get rid of this screen, and replace the text on the following one:

Creating your first map
If you have a spreadsheet, drag it here.
To create data from scratch, click "Create empty map"
Or choose a dataset from the Data Library below.

Hi @stevage Fixing all this stuff in different issues. Thanks so much for reporting! :) This is very valuable. Do you have cartodb tshirts already? :)
cc/ @iriberri

Also @csobier so you are aware


iris grid partition selector can only display 1000 paritions

from deephaven import empty_table
t = empty_table(15000).update(["x = i", "y = i"]).partition_by(["x"])

Viewing multiple years of a daily partitioned table can easily exceed the 1000 item limit. The partition select is limited by us to 1000 items for performance. (And is capped by the browser at 10000 in chrome).
We should switch the selector to use the spectrum select which is virtualized and can handle a much higher number of rows (hundreds of thousands).

Should use the Picker component from @deephaven/jsapi-components.


Enable DNSSEC

Which Cloudflare product does this pertain to?
DNS
Existing documentation URL(s)
https://developers.cloudflare.com/dns/dnssec/#enable-dnssec
What changes are you suggesting?
Need Tutorial how add or Enable DNSSEC on Hostinger (hosting company)
Additional information
No response

Howdy @isihussain, looks like you can find that info at https://support.hostinger.com/articles/3667267-how-to-use-dnssec-records-at-hostinger (adding in the attached PR).


Update waas-restart.md

Fixed a few typos

@jdeckerms,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


removed ssh agent forwarding

Which issue this PR addresses:
everything in title

Fixes
What this PR does / why we need it:
removes agent forwarding from the ssh proxy. Ask me on slack if you have questions regarding it

Test plan for issue:
should be covered by existing tests

Is there any documentation that needs to be updated for this PR?

Will this affect our ability to ssh to worker nodes from master nodes, or to ssh from one node to another in general?

@dem4gus yes

@facchettos Hey there. Please see my review on the JIRA task.


Better define dependency versions of romanesco and girder

See #259 for more details than you want.
Some details:

We should more clearly pin to a Girder version, and define this in our docs, our travis and have this as the default girder_version in our site.yml for ansible
We should do similar for Romanesco, but that will additionally depend on Romanesco having versions that are tied to Girder and further on whatever changes (i.e. split b/w the Girder plugin part and the python package part) are in Romanesco's future

I would add we should have a general policy of making sure Minerva always works on the most recent release of all of its dependencies, including Girder.  To go with this, we should set up a nightly dashboard that tests against the latest versions on PyPI.  I can set this up on my machine the same as I did for Girder.

related to https://github.com/Kitware/minerva/issues/276

Closed by #302.


MongoDB config

I'm likely missing something, but after following the README, my index page reads "Page view count: No database configured". Should there be an additional step that takes advantage of template/nodejs-mongodb.json?
This was my hacky work-around:
oc new-app centos/mongodb-26-centos7 -e MONGODB_USER=admin,MONGODB_DATABASE=mongo_db,MONGODB_PASSWORD=secret,MONGODB_ADMIN_PASSWORD=super-secret
Followed by:
oc new-app https://github.com/openshift/nodejs-ex -l name=myapp -e MONGO_URL=mongodb://admin:secret@<IP_ADDRESS>:27017/mongo_db

yeah, we should have some additional doc that either suggests the steps you figured out on your own (nice work!) to add a DB manually, or points people to the template which will set everything up for them.

Cool, I updated my fork of the readme with the steps I took if it helps. https://github.com/brennv/nodejs-ex

@brennv Please submit PR with changes so we can merge in here

you can also use new-app with openshift/template/nodejs.json or nodejs-mongodb.json example. but that's not exactly mentioned anywhere in the README.

@sspieche PR submitted.
@PI-Victor I agree. Demo template processing instructions would be very helpful -- I'd be happy to add it, but I'm unclear on how to utilize the template files. Reading the docs here. Would that look something like:
oc process -f <filename> | oc create -f -

@brennv sorry for not being specific! yes, after you clone this repo oc new-app -f /path/to/nodejs-mongodb.json it will take care of the rest for you. good job on the PR!

@PI-Victor Thank you! I understand now -- I missed the forest for the trees. :) I'll work it into the PR now.

Added instructions on building from templates. Cleaned-up the outline to demonstrate the flexibility of oc new-app. Thanks all -- very cool stuff. https://github.com/openshift/nodejs-ex/pull/40/files

https://github.com/openshift/nodejs-ex/pull/44


Reconfigure CG scanning for arcade-extensions repository

Currently Component Governance (CG) for this repository is set up to scan its codeql pipeline, which is also explicitly configured to not run CG scans as of https://github.com/dotnet/arcade-extensions/commit/978978349c09007c8aafa49f7a53aae90f8d0cf4
This has resulted in the repo's pipelines not being scanned since October 2022. We should enable scanning for the CI builds that ocurr on every change, and remove the tracking for the codeql pipeline.

Release Note Category

[ ] Feature changes/additions
[ ] Bug fixes
[ ] Internal Infrastructure Improvements

Release Note Description

The newest run was scanned, and it even got rid of 2 outstanding alerts for the repo.


elixir: 1.15.7 -> 1.16.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/elixir-lang/elixir/releases.
meta.description for elixir is: A functional, meta-programming aware language built on top of the Erlang VM
meta.homepage for elixir is: https://elixir-lang.org/
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.16.0 with grep in /nix/store/84mb29phzyfvjhn9rb6piygilbn4m6cs-elixir-1.16.0
found 1.16.0 in filename of file in /nix/store/84mb29phzyfvjhn9rb6piygilbn4m6cs-elixir-1.16.0

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

4 package rebuild(s)

First fifty rebuilds by attrpath
elixir
elixir-ls
elixir_1_15
mobilizon

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/84mb29phzyfvjhn9rb6piygilbn4m6cs-elixir-1.16.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A elixir https://github.com/r-ryantm/nixpkgs/archive/baabcb9a246ff652b5455dd6d1f7474de9ce8add.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/baabcb9a246ff652b5455dd6d1f7474de9ce8add#elixir

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/84mb29phzyfvjhn9rb6piygilbn4m6cs-elixir-1.16.0
ls -la /nix/store/84mb29phzyfvjhn9rb6piygilbn4m6cs-elixir-1.16.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package failed to build:

elixir-ls

2 packages built:

elixir
mobilizon

Maintainer pings
cc @ankhers @Br1ght0ne @DianaOlympos @gleber @happysalada @minijackson @yurrriq for testing.

putting this as draft so that this doesn't get opened again.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/elixir-lang/elixir/releases.
meta.description for elixir is: A functional, meta-programming aware language built on top of the Erlang VM
meta.homepage for elixir is: https://elixir-lang.org/
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.16.1 with grep in /nix/store/xhyga2rr1ck72vpz4v4vj9hfd1cwnlwv-elixir-1.16.1
found 1.16.1 in filename of file in /nix/store/xhyga2rr1ck72vpz4v4vj9hfd1cwnlwv-elixir-1.16.1

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

4 package rebuild(s)

First fifty rebuilds by attrpath
elixir
elixir-ls
elixir_1_15
mobilizon

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xhyga2rr1ck72vpz4v4vj9hfd1cwnlwv-elixir-1.16.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A elixir https://github.com/r-ryantm/nixpkgs/archive/b7c419a82f68a5b7cbb0fe3b7df7815b83046bc6.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/b7c419a82f68a5b7cbb0fe3b7df7815b83046bc6#elixir

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xhyga2rr1ck72vpz4v4vj9hfd1cwnlwv-elixir-1.16.1
ls -la /nix/store/xhyga2rr1ck72vpz4v4vj9hfd1cwnlwv-elixir-1.16.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package failed to build:

elixir-ls

2 packages built:

elixir
mobilizon

Maintainer pings
cc @ankhers @Br1ght0ne @DianaOlympos @gleber @happysalada @minijackson @yurrriq for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/elixir-lang/elixir/releases.
meta.description for elixir is: A functional, meta-programming aware language built on top of the Erlang VM
meta.homepage for elixir is: https://elixir-lang.org/
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.16.2 with grep in /nix/store/z2l1r8hvp71jafihagqxazxdxw9p8xnw-elixir-1.16.2
found 1.16.2 in filename of file in /nix/store/z2l1r8hvp71jafihagqxazxdxw9p8xnw-elixir-1.16.2

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath
elixir
elixir-ls
elixir_1_15
mix2nix
mobilizon

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/z2l1r8hvp71jafihagqxazxdxw9p8xnw-elixir-1.16.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A elixir https://github.com/r-ryantm/nixpkgs/archive/0edf0161dbbeacac3b5a57b535036e2652365fcb.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/0edf0161dbbeacac3b5a57b535036e2652365fcb#elixir

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/z2l1r8hvp71jafihagqxazxdxw9p8xnw-elixir-1.16.2
ls -la /nix/store/z2l1r8hvp71jafihagqxazxdxw9p8xnw-elixir-1.16.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package failed to build:

elixir-ls

3 packages built:

elixir
mix2nix
mobilizon

Maintainer pings
cc @ankhers @Br1ght0ne @DianaOlympos @gleber @happysalada @minijackson @yurrriq for testing.

It looks like we still have elixir-ls failing to build, so we wont be able to merge this for now.

Done in #299592.


Issues sending a message

Hi there, thanks for doing all the hard work finding this out and putting it all in this repo!
I'm having an issue sending a message and am unable to find out what I'm doing wrong.
I used this: https://github.com/sigalor/whatsapp-web-reveng/issues/63#issue-334408304 and the golang library from @Rhymen as a reference (https://github.com/Rhymen/go-whatsapp).
The serialization I'm using is the whatsapp_binary_writer.py included in this project.
These are the steps I'm taking:

Create a new WebMessageInfo proto object with the following fields set:

key.fromMe = true
key.remoteJid = remoteJid
key.id = 10 byte hex code (I've also tried 32 bytes)
messageTimestamp = unix time now
status = 1
message.conversation = content of message

Serialize this WebMessageInfo
Create the object ["action", { "type": "relay", "epoch": "1" }, [ [ "message", None, <serializedWebMessageInfo> ] ]] and pass it through whatsappWriteBinary
create a tag with getTimeStamp
create a HMAC SHA265 hash of the object created with the macKey
AES encrypt the object created with the encKey
send the following message: <tag>,<0x16><0x00><hashed><encrypted>

I don't get any response from WA, so it's hard for me to find out what exactly goes wrong. @Rhymen or @sigalor have you encountered this? And if so; could you help me in the right direction?
Thanks so much!

Hi, thanks a lot for your question! Your WebMessageInfo and the binary message containing it both look perfectly fine.
The only thing that comes directly to my mind: in your third but last point, which data are you calculating the hash on? The WhatsApp Web servers expect the HMAC SHA256 of the encrypted data here.

Hi there,
I think you need to AES 256 CBC encrypt the message before you calculate the hash. If you check out the section Validating and decrypting messages in the README.md of this repository you can see, that the hash, to validate the message, is calculated with the cipher and not the decrypted message.
You can see the go code in this file.
cipher, err := cbc.Encrypt(wac.session.EncKey, b)
if err != nil {
	return err
}

h := hmac.New(sha256.New, wac.session.MacKey)
h.Write(cipher)
hash := h.Sum(nil)

Are you sure that you didn't get any reply from whatsapp? I pretty sure that you receive a 401 status code over the websocket (messageTag is the id of the message), if the hash is incorrect.

Hi @sigalor. That is correct. I was calculating the hash based on the actual object and not on the encrypted data. I have changed this, hoping to fix this, but unfortunately it still doesn't work (still no reply). I am using the HMAC SHA256 and AES functions provided by your repo. Could this have something to do with it?

Okay guys, sorry for the late response. But the reason why I wasn't getting any response was pretty trivial; I had to pass ABNF.OPCODE_BINARY to the websocket library. Pretty obvious but I didn't know that, haha.
Okay so now I'm back to a { 'status': 401 } error. This could be anything, right? I'm just going to keep on searching, but if you guys have any hints for me, that would be great!

Another update. I messed up the padding (set it to 0's instead of padding length). After changing this everything works correctly! Thanks so much for your help @sigalor and @Rhymen

@pkeuter would you mind sharing your solution, please?
This is what I have so far in whatsapp.py. I have all the individual elements, but now I have no idea how assemble the final obkect <tag>,<0x16><0x00><hashed><encrypted> and how to finally send the message (which function to call passing the final object?):
from whatsapp_defines import WATags, WASingleByteTokens, WADoubleByteTokens, WAWebMessageInfo;
from Crypto import Random
import binascii
import calendar
from whatsapp_binary_writer import whatsappWriteBinary

	def sendMessage(self):
		# https://github.com/sigalor/whatsapp-web-reveng/issues/65
		# https://github.com/sigalor/whatsapp-web-reveng/issues/63
		messageId = binascii.hexlify(Random.get_random_bytes(10))
		d = datetime.datetime.utcnow()

		info = WAWebMessageInfo.encode({
			"key": {
				"fromMe": True,
				"remoteJid"<EMAIL_ADDRESS>				"id": messageId
			},
			"messageTimestamp": calendar.timegm(d.utctimetuple()),
			"status": 1,
			"message": {
				"conversation": "My Text Message"
			}
		})

		binaryNode = whatsappWriteBinary([
			"action",
			{
				"type": "relay",
				"epoch": "1"
			},
			[
				[
					"message",
					None,
					info
				]
			]
		])

		messageTag = str(getTimestamp())

		finalCipher = AESEncrypt(self.loginInfo["key"]["encKey"], binaryNode)
		finalHash = HmacSha256(self.loginInfo["key"]["macKey"], finalCipher)

Hi @alfredbaudisch. The final object should be binary. I was using Python3 in this example so you might have to change some things, but what you did looks correct, except for this missing part:
bytes(WAMetrics.MESSAGE.to_bytes(1, byteorder='big')) + \
            bytes([0x80]) + hashed + encrypted
self.activeWs.send(toSend, websocket.ABNF.OPCODE_BINARY)

Please let me know if you had any luck adding this :)

@pkeuter thank you!!! In 2.7 I had to write as below and it worked, messages are being sent correctly :100:
def to_bytes(n, length, endianess='big'):
    h = '%x' % n
    s = ('0'*(len(h) % 2) + h).zfill(length*2).decode('hex')
    return s if endianess == 'big' else s[::-1]

toSend = bytearray(messageTag) + bytearray(",") + bytearray(to_bytes(WAMetrics.MESSAGE, 1)) +  bytearray([0x80]) + finalHash + finalCipher
self.activeWs.send(toSend, websocket.ABNF.OPCODE_BINARY)

Hi,
I am trying to send messages but I always get {'status':400}
The code I am using is similar to @alfredbaudisch .
I've tried to look up what status 400 means but coulnd't find anything.

Hi,
So after trying some changes I now get {'status':401}.
I've been looking at @Rhymen repo and I think i am following the same strategy, but my knowledge of Go is zero (although I learned some while investigating the repo) so there are many lines that I don't fully understand.
In python I have the following code:
def sendMessage(self,number):
		messageId = binascii.hexlify(Random.get_random_bytes(10)).upper()
		messageTimestamp = str(time.time()).split(".")[0]
		messageParams = {
			"key": {
				"fromMe": True,
				"remoteJid"<EMAIL_ADDRESS>				"id": messageId
			},
			"messageTimestamp": messageTimestamp,
			"status": 1,
			"message": {
				"conversation": "Test message"
			}
		}
		msgProto = WAWebMessageInfo.encode(messageParams)
		msgData = [
			"action",
			{
				"type": "relay",
				"epoch": str(self.msgCount)
			},
			[
				[
					"message",
					None,
					msgProto
				]
			]
		]
		binMsg = whatsappWriteBinary(msgData)
		messageTag = str(getTimestamp())
		encryptedMessage = AESEncrypt(self.loginInfo["key"]["encKey"], binMsg)
		messageHash = HmacSha256(self.loginInfo["key"]["macKey"], encryptedMessage)
		metrics = bytes(WAMetrics.MESSAGE)
		flag = bytes(WAFlags.IGNORE)
		payload = bytes(messageTag + "," ) + metrics + flag  + messageHash + encryptedMessage
		print("--- SENDING MSG TO "+number+" --- "+ messageTag);
		self.msgCount = self.msgCount+1
		self.messageQueue[messageTag] = { "desc": "_send"};
		self.ws.send(payload, websocket.ABNF.OPCODE_BINARY)

In #69 it is stated that the ID must start with 3EB0, is it necessary?
The flag value, I am getting it from WAFlags.IGNORE (In the Go repo I think it gets that value)
I will keep looking at the Go repo, but if someone could give me any hint it would be appreciated.

#69
I am still getting {'status':401} with below piece of code:
    def sendMessage(self, number,text):
        messageId = "3EB0"+binascii.hexlify(Random.get_random_bytes(8)).upper()
        messageTag = str(getTimestamp())
        messageParams = {"key":{"fromMe":True,"remoteJid":number+"@s.whatsapp.net","id":messageId},"messageTimestamp":getTimestamp(),"status":1,"message":{"conversation":text}}
        msgData = ["action", {"type": "relay", "epoch": str(self.messageSentCount)}, [["message", None, WAWebMessageInfo.encode(messageParams)]]]
        encryptedMessage=WhatsAppEncrypt(self.loginInfo["key"]["encKey"],self.loginInfo["key"]["macKey"],whatsappWriteBinary(msgData))
        payload = bytearray(messageTag) + bytearray(",") + bytearray(to_bytes(WAMetrics.MESSAGE, 1)) +  bytearray([0x80]) + encryptedMessage
        eprint(payload)
        self.messageSentCount=self.messageSentCount+1
        self.messageQueue[messageTag] = {"desc": "__sending"}
        self.activeWs.send(payload, websocket.ABNF.OPCODE_BINARY)

How can we structure payload correctly  ?

Hi!
I can't send text messages with the code in the repository
`
          messageId = "3EB0"+binascii.hexlify(Random.get_random_bytes(8)).upper();
	messageTag = str(getTimestamp());
	messageParams = {"key": {"fromMe": True, "remoteJid": number +<EMAIL_ADDRESS>"id": messageId},"messageTimestamp": getTimestamp(), "status": 1, "message": {"conversation": text}}
	eprint(messageParams);
	msgData = ["action", {"type": "relay", "epoch": str(self.messageSentCount)},[["message", None, WAWebMessageInfo.encode(messageParams)]]]
	encryptedMessage = WhatsAppEncrypt(self.loginInfo["key"]["encKey"], self.loginInfo["key"]["macKey"],whatsappWriteBinary(msgData))
	payload = bytearray(messageId) + bytearray(",") + bytearray(to_bytes(WAMetrics.MESSAGE, 1)) + bytearray([0x80]) + encryptedMessage
	self.messageSentCount = self.messageSentCount + 1;
	self.messageQueue[messageId] = {"desc": "__sending"};
	self.activeWs.send(payload, websocket.ABNF.OPCODE_BINARY);

`
I need to do anything else?

Hey @alfredbaudisch , can you share your solution?

@sthales I don't have it here anymore and I didn't move forward in using any of this, sorry :(

send message still working with u my friend? @pkeuter