Integrate Clinic Finder with CM App

Thanks for creating an issue! Please fill out this form so we can be sure to have all the information we need, and to minimize back and forth.

What are we trying to do?
Integrate Clinic Finder with the CM App so CM's can find the closest or cheapest clinic for their PT based on location and gestation limit.

How could we solve this issue? (Not knowing is okay!)
Needs UX exploration on the Abortion Info>Clinic Details Section

https://sandbox.dcabortionfund.org/clinicfinder

cc @vtmeghan @alisonnjones

Hi @eheintzelman, here are my thoughts:
It's going to vary by state.  DC is pretty straight forward, and Maryland is too.  But Virginia is big and diverse and we also look at sending patients to North Carolina depending on LMP and location, so VA Line CMs would use it more than others.
I would look up clinics when a patient hadn't yet set an appointment or if I thought there might be a less expensive or NAF clinic available.  Knowing if a clinic was accessible by public transportation can be key in the DMV.  It might also be helpful to those case managers (like me) who are challenged geographically in finding the right clinics in Virginia.

So, I think this would also be used a ton by trainee CMs - one of the biggest things we hear from trainees after their first shift is that they feel like they don't have a good handle on which clinics to refer patients to. I think all new-ish CMs would be very likely to use this, especially as they cover new lines for the first time and are unfamiliar with the clinics.
I agree with @NerdyGirl537 that VA line CMs would be a lot more likely to use it, because of the size of the state and the fact that large swaths of VA don't have easily accessible clinics.
I think the total number is upwards of 25 clinics, when including nearby states like NC/NJ/NY.

It looks like current active clinics in DCAF's list comes to 43 locations, and just from eyeballing states about 20 of those are usable by deeper Virginia (stuff in GA, NC, TN as well as VA proper).

Here is a first take on a solution.
Clinic finder integration on Abortion Info>Clinic Details Section:
A shaded box below the clinic selection dropdown, indicating it is an optional tool.  We will need to collect zip code info, since this is not entered anywhere else in the system. NAF checkbox is integrated into the tool.

CM selects the 'Find Clinics' button and is taken to the results page. CMs can toggle between closest clinics and most affordable clinics.

Qs

Will CMs want to enter the gestational age manually (as is the case in the current sandbox version)? I didn't include it since I figure it can be pulled from the patient summary section. On the other hand, maybe CMs would want to play around with the tool to see how results change if a patient waits several weeks longer for the procedure?
Public transport info would be helpful for DMV CMs.  But can this information be maintained in the clinic database?
How many clinics should show up in the results? We want to provide enough options but not too many that would overwhelm the CM.  I'm suggesting 5 to start.

This looks really solid, @eheintzelman ! Love the feel and the way you divide up the information here.

Gestational age is a great flag. My thinking is that we preload a pair of drop downs with the current gestational age and let CMs adjust it if they want to see how results would change. What are your thoughts @eheintzelman ?
Public transit is a lovely idea. That said, I think I'd want to know a little more about how CMs use this before we start bolting stuff on. My inclination is to punt on this and revisit this question after we have some information about what CMs wish the tool did.
Result count: I think 5 is great! Let's assume that as a default.

Great work @eheintzelman ! I think that the results can show up within the gray box, rather than on a new page. Agree with preloading the gestational age but also allowing them to edit. 5 results is great.

Good suggestion on preloading the gestational age and making it editable.  Fine to punt on the public transit issue.
I'll wire up a solution incorporating @mebates suggestion for a gray box that can expand vertically.

Here are a few wires incorporating the box overlay approach.  These are wireframes only (limited styling!). I included a screenshot of daria in the background to get an idea of how it fits in.
Food for thought:
1 - Do we want the search results to continuously update as a CM changes the inputs, or do we require the CMs to hit 'search' (or 'apply') to see new results?
2 - Include column for NAF in the search results? @NerdyGirl537 @lwaldsc

3 - Another option, moving the closest/most affordable toggle to the search results.

Oh my god Eva this looks so great!
Yes, definitely always include NAF funding in anything regarding clinics.

Thanks Lisa!  About NAF Funding - is this typically a black and white type of situation, where a CM says, 'yes definitely need NAF funding on this one,' or 'no don't need it here.'
Or is it just one of several factors that a CM would weigh when deciding what clinic to recommend? I'm imagining a situation where one clinic is cheaper but doesn't accept NAF; another one is more expensive and does accept NAF.  In the end, the cost is about the same to the patient.

Yes. That's baaaaaaaaaaaaasically how it works. Almost all of the time,
you'll want to shoot for a NAF clinic because they can offer a lot more
funding than we can. The only time you wouldn't is if the geography just
isn't right and the amount of time and money a patient would spend on
travel wouldn't make it worth it.

It looks like this is basically ready for development, which is REALLY exciting. I'll spec it out into discrete parts soon and then we can start having engineering hammer on it.
We might cheat a little bit on the gray box and just have it expand down rather than overlay, but I think everything in here looks good to me and very doable.
Going to have to dust off the clinic finder gem I think!

Looks great! I agree with Colin that it can be a section that expands down. Probably will work best at the full width of that section too (covering the left to right edges of 'clinic details'). Thank you Eva!

Thanks for all the quick feedback!  Here are the revised wires with the box taking up the full width and a few other changes.

I moved the NAF checkbox and most affordable/closest toggle to the search results section. My thinking is to keep the CM input as quick and easy as possible. Just enter the zip code and boom, there are the results. Set the default to 'closest' with the NAF box checked (based on Lisa's comment that CMs are typically looking for a clinic that accepts NAF).  Is this feasible from a technical standpoint?

This has enough runway that I think we can call it a proper frontend task now. It'll require some changes to the clinic_finder gem as well and some form adjustment, but for now I think I just want @eheintzelman 's designs recreated.

whip up a new partial for the form part as app/views/clinicfinders/_form.html.erb. hardcoding stuff is fine, bonus for using bootstrap_form_for and pointing it at the url for clinicfinders
whip up a new partial for the results part as app/views/clinicfinders/_results.html.erb. hardcoding stuff is fine!
Put them under where the 'Show only NAF clinics` checkbox in the Abortion Information partial is
The gray doesn't necessarily have to overlay, a slidedown is fine

There's some backend stuff we'll need to do here too, but I think having a frontend proof of concept gets a lot of the tougher work on this out of the way quick.

Starting to take a look at this tonight!

On Mon, Aug 7, 2017 at 8:22 PM, Rae<EMAIL_ADDRESS>wrote:

Starting to take a look at this tonight!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/DCAFEngineering/dcaf_case_management/issues/978#issuecomment-320815610,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AKFqsOBhQPJEjgf273y--KDsQdck2IW-ks5sV6pjgaJpZM4MzkaK
.


If kapp can never connect to remote cluster it can never delete App CR

Recreate:
Create a kubeconfig that is valid but points to an invalid endpoint (like api.example.com).  On first deployment you will get something similar to this:
Status:
  Conditions:
    Message:  Deploying: exit status 1
    Status:   True
    Type:     ReconcileFailed
  Deploy:
    Error:       Deploying: exit status 1
    Exit Code:   1
    Finished:    true
    Started At:  2020-07-04T12:08:10Z
    Stderr:      kapp: Error: Creating app:
  Post https://api.example.com:6443/api/v1/namespaces/kube-system/configmaps: dial tcp <IP_ADDRESS>:6443: i/o timeout
    Stdout:      Target cluster 'https://api.example.com:6443'
    Updated At:  2020-07-04T12:09:10Z
  Fetch:
    Exit Code:           0
    Started At:          2020-07-04T12:08:10Z
    Updated At:          2020-07-04T12:08:10Z
  Friendly Description:  Reconcile failed: Deploying: exit status 1
  Inspect:
    Error:      Inspecting: exit status 1
    Exit Code:  1
    Stderr:     kapp: Error: Getting app:
  Get https://api.example.com:6443/api/v1/namespaces/kube-system/configmaps/a-postcreate-ctrl: dial tcp <IP_ADDRESS>:6443: i/o timeout
    Stdout:             Target cluster 'https://api.example.com:6443'
    Updated At:         2020-07-04T12:10:11Z
  Observed Generation:  1
  Template:
    Exit Code:   0
    Updated At:  2020-07-04T12:08:10Z

App CR will not sit around indefinitely, because it cannot ever get the status of the app.

@voor do you think we should try to track if we ever got far enough to deploy, and if not, "fast forward" deletion automatically. in case we did get far enough, im not sure we can do much aside from offering a way to configure a spec.cluster.unreachable=true (or something like that) to let kapp-controller know to "fast forward" deletion.

If you combined those that would probably cover the common scenarios, right?

If it never worked, just delete it because there's nothing to clean up.
If it did work successfully once a long time ago, but the cluster is now completely unreachable, allow user intervention by allowing deletion of an App CR with spec.cluster.unreachable=true

Hey @voor, we are currently working on a feature to allow noop deletion of an app here #141. Do you think this would solve this use case as well?

Yes, although we've also gotten into a habit of just removing the finalizer and deleting the App CR.

I am going to close this in favor of #141 then. Thanks!


Subrouters

Describe the feature
(Taken from the Javaline 4 wishlist issue) I would love to see the ability to use the path router function where it prefixes routes automatically without having to use the static route functions. Ideally this would mean splitting the router functions off into an interface and allowing us to pass around the sub router object.
Additional context
My current theory would be that we end up with a Router interface, that both the Javalin class and a new SubRouter class implement.
You would then have 2 methods on the Router interface you implement: path(String) -> Router and a path(String,Consumer) -> void
The Router that gets created is always a SubRouter that contains the path of the current router (or / in the case of the Javalin class)
This way you can use it all in the one place with the Javalin object (via the consumer route) if you can’t use the static methods (maybe you have multiple Javalin instances for whatever reason) or create the SubRouter and give it to another object to manage routes on (say you're creating a portal/dashboard api with plug-in support)

Thanks for your issue and PR @theminecoder! We currently have another PR which will probably give you a few conflicts: https://github.com/tipsy/javalin/pull/831, but it shouldn't be too bad.
Your PR adds 670 lines of code, where 240 lines are tests. This is a pretty large amount of code, so I will have to clearly understand problem this solves.
The current Javalin#routes call sets a temporary static Javalin instance, which is cleared at the end of the call.
When you say  if you can’t use the static methods (maybe you have multiple Javalin instances for whatever reason), do you mean in case you spawn multiple threads that spawn multiple different Javalin instances that call routes at the same time?
This is a niche case which would be simple to detect and fix (~10 lines of code?), so I think the PR will have to solve something more than that.

The idea is to be able do to what the api builder does but without having to resort to static methods (which are icky). As noted in the issue as well, this provides a nice secure way to hand out route creation in a plug-in based system where you want to enforce each plug-in having its own router namespace/prefix.

Could you be a bit more elaborate than "icky" ? This isn't a static method in the sense that there is one global static Javalin instance Javalin#get(route), this is a static method like Util.get(javalin, route).

@theminecoder do you still want to pursue this?

Don't you think we should provide a possibility to create such a thing as plugin rather than replacing the current implementation 🤔 I mean I speak from a position of being user that already uses custom implementation of routing provided as a plugin and I feel it's the right way to do such things.

@dzikoysk personally I don't see the need for this, but if a proposed "router" abstraction could help simplify the code I'm in favor of it.
The current PR isn't it IMO, so I'm asking because we should either close it + the issue  or discuss a different approach.

@tipsy possible to move the order of the handler from path, handler, accessRole to path, accessRole, handler
this will allow cleaner lambdas in kotlin since the handler will be the last

@asad-awadia if you are adding roles, it's recommended to extract your handler to a function (instead of keeping it a lambda).
That being said, you can easily make your own static method or extension function which has the handler last :)

Not much is happening here, so I will close the issue.


Updated windows.md

Change Summary
I added some more shortcuts and made some changes in appearance of keyboard shortcuts.
Fix #215
General

[x] This Pull Request is all my own work. (You'll be blacklisted if you are caught for plagiarism.)
[x] I've read CONTRIBUTING.md
[x] I've made some valid changes to the CheatSheet, and they are not just minor changes.

Changes

[x] I've read and followed the Solution Template

@aryankashyap7 can you please review this.

Ok @Dhravya, I got your point but as I mentioned in the issue that I just wanted to change the appearance of command prompt commands.


Not all tools load .owl files

TopBraid Composer does not load .owl files.   This is bad for our clients (e.g. Platts) who may wish to use gist files. It is also a hassle for any of us (me in particular) who wish to load files into TBC.  I suggest that we use .rdf if we use rdf/xml and .ttl for turtle.

Do all tools load .rdf files?
They technically are XML files so should they have a .xml extension?

The spec recommends use of ".rdf".
Protege seems to treat .rdf and .xml differently. With the .rdf format not using other local files to import. Seems odd.

Do all tools load .rdf files?

They should. It is an anomly that TBC prevents it.

They technically are XML files so should they have a .xml extension?

Never once have I seen an owl file in rdf-xml syntax with an .xml extension.  We have always used .owl or .ttl. I started using .rdf with FIBO, since that is what they used.  I also like to use TBC from time to time.
From: Jamie-SA<EMAIL_ADDRESS>Sent: Wednesday, 13 November, 2019 11:38
To: semanticarts/gist<EMAIL_ADDRESS>Cc: Michael Uschold<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [semanticarts/gist] Not all tools load .owl files (#121)
Do all tools load .rdf files?
They technically are XML files so should they have a .xml extension?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/semanticarts/gist/issues/121?email_source=notifications&email_token=ACSHHSI4FXQL2OIZKJB37UDQTRJSPA5CNFSM4JL3Q34KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED7L2MA#issuecomment-553565488, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACSHHSLHJLZXWVPRLCJADYTQTRJSPANCNFSM4JL3Q34A.

Duplicates #129.


Add option to turn off colorful outputs

Hi @svanoort
Sorry for the delay to do it, this PR will close the issue #130.

Can one of the admins verify this patch?

@svanoort thanks for merge.


Some images have duplicate incorrectly decoded unicode tags

Description

Some media with non-ascii characters in tags that were ingested a long time ago has duplicate tags: one with a correct utf-8 letter and one with an incorrectly escaped sequence.
Reproduction

Go to https://api.openverse.engineering/v1/images/ab5150da-5d83-47ec-ad66-bf08dcfef78f/ (or https://search-production.openverse.engineering/image/ab5150da-5d83-47ec-ad66-bf08dcfef78f for the frontend view)

Look at the tags list.

See error: There are many unreadable tags, many of which are duplicated. For example, "arapça" with a ç with a cedilla, and arapu00e7a, where that character was replaced with an incorrectly escaped ç as u00e7 (this is the unicode code point for this letter, without the \ control character)
This is the way they are saved in the catalog:
{"name": "arapça", "provider": "flickr"}, {"name": "arapu00e7a", "provider": "flickr"},

Screenshots

Tags displayed on the frontend:

Additional context

I think we also had the same problem for other details such as title and description, but most of them were fixed when re-ingested. When we upsert the tags, we add all the tags that are different from the ones already saved. And since the new tag appears different than the mangled one, both were saved.
This item has a non-mangled title and mangled and non-mangled tags, which suggests that the titles were fixed, and the tags were simply added to:
https://api.openverse.engineering/v1/images/829eb0a7-3ce8-44ca-8194-4a78757a88aa/
There is also an error of over-correction of the unicode decoding error.  Instead of removing the backslash before u, the backslash is escaped by another backslash, so arapu00e7a becomes arap\\u00e7a.
On the frontend, we compensate for this problem for title, creator and tag name in decode-string: https://github.com/WordPress/openverse-frontend/blob/26fb744449cbe4c25b895c75fad57ab2646b1737/src/utils/decode-data.ts

We may be able to do some analysis on the tags to determine the provider or range of dates this is limited to!

This will be solved by https://github.com/WordPress/openverse/issues/4452 and there are no ways to address this that do not run into the exact same problems of "inferring" unescaped unicode as exist for that issue. I do not believe there is anything unique to do for this issue aside from just continuing the work on https://github.com/WordPress/openverse/issues/4452.

I have seen this and will respond to this discussion when I have time!


Minor error message improvement

Issue
if you try migrating, did not provide an account,  eth.accounts[0] is locked, you get the following message:
Error: account is locked
Expected Behavior
It would be nicer to mention which one is eth.accounts[0] as it may vary depending on the client used. For instance, eth.accounts[0] may not be the same address on parity or geth. While the user can figure it out, having the address in the message would help.

I close this issue, the error message is from web3.


chore(dep): Update composer-concerto dependency to 0.70.3

Coverage remained the same at 99.119% when pulling 007693076ca197d98dd76b33a4679db0c27c1269 on mttrbrts-patch-2 into 5abbcc41104dd523fdccd1b826a166f79d7ff7d3 on master.


fix(list): resolve title on pagination query

Fixes a bug where title was not returned on the graphql entity for paginated savedItems

Plan Result (list-api-cdk)
CI link
:warning: Resource Deletion will happen
This plan contains resource delete operation. Please check the plan result very carefully!
Plan: 2 to add, 0 to change, 1 to destroy.

Create

local_file.application_ecs_service_appspec_94386B9C

Replace

aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4

Change Result (Click me)

  # aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4 must be replaced
-/+ resource "aws_ecs_task_definition" "application_ecs_service_ecs-task_461CC9D4" {
      ~ arn                      = "arn:aws:ecs:us-east-1:996905175585:task-definition/ListAPI-Prod:925" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-1:996905175585:task-definition/ListAPI-Prod" -> (known after apply)
      ~ container_definitions    = jsonencode(
          ~ [
              ~ {
                  ~ image                  = "996905175585.dkr.ecr.us-east-1.amazonaws.com/listapi-prod-app:31186a484817854cb1f5643ed63c845c2975e0af" -> "996905175585.dkr.ecr.us-east-1.amazonaws.com/listapi-prod-app:015f32a59146615c8fe87fe46a5e3983aaa0f55f"
                    name                   = "app"
                  ~ portMappings           = [
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                    ]
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name                   = "aws-otel-collector"
                  ~ portMappings           = [
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                    ]
                    # (10 unchanged attributes hidden)
                },
            ] # forces replacement
        )
      ~ id                       = "ListAPI-Prod" -> (known after apply)
      ~ revision                 = 925 -> (known after apply)
        tags                     = {
            "environment" = "Prod"
            "service"     = "ListAPI"
        }
        # (9 unchanged attributes hidden)
    }

  # local_file.application_ecs_service_appspec_94386B9C will be created
  + resource "local_file" "application_ecs_service_appspec_94386B9C" {
      + content              = (known after apply)
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "appspec.json"
      + id                   = (known after apply)
    }

Plan: 2 to add, 0 to change, 1 to destroy.

:white_check_mark: Apply Succeeded (list-api-cdk)
CI link
Apply complete! Resources: 2 added, 0 changed, 1 destroyed.
 Resource actions are indicated with the following symbols:
  + create
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4 must be replaced
-/+ resource "aws_ecs_task_definition" "application_ecs_service_ecs-task_461CC9D4" {
      ~ arn                      = "arn:aws:ecs:us-east-1:996905175585:task-definition/ListAPI-Prod:925" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-1:996905175585:task-definition/ListAPI-Prod" -> (known after apply)
      ~ container_definitions    = jsonencode(
          ~ [
              ~ {
                  ~ image                  = "996905175585.dkr.ecr.us-east-1.amazonaws.com/listapi-prod-app:31186a484817854cb1f5643ed63c845c2975e0af" -> "996905175585.dkr.ecr.us-east-1.amazonaws.com/listapi-prod-app:6e3a47a3813c44fa7277f43f47e128a133e5092b"
                    name                   = "app"
                  ~ portMappings           = [
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                    ]
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name                   = "aws-otel-collector"
                  ~ portMappings           = [
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                      ~ {
                          - protocol      = "tcp"
                            # (2 unchanged attributes hidden)
                        },
                    ]
                    # (10 unchanged attributes hidden)
                },
            ] # forces replacement
        )
      ~ id                       = "ListAPI-Prod" -> (known after apply)
      ~ revision                 = 925 -> (known after apply)
        tags                     = {
            "environment" = "Prod"
            "service"     = "ListAPI"
        }
        # (9 unchanged attributes hidden)
    }

  # local_file.application_ecs_service_appspec_94386B9C will be created
  + resource "local_file" "application_ecs_service_appspec_94386B9C" {
      + content              = (known after apply)
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "appspec.json"
      + id                   = (known after apply)
    }

Plan: 2 to add, 0 to change, 1 to destroy.
aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4: Destroying... [id=ListAPI-Prod]
aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4: Destruction complete after 0s
aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4: Creating...
aws_ecs_task_definition.application_ecs_service_ecs-task_461CC9D4: Creation complete after 0s [id=ListAPI-Prod]
local_file.application_ecs_service_appspec_94386B9C: Creating...
local_file.application_ecs_service_appspec_94386B9C: Creation complete after 0s [id=9bce7c3035eafa5892798fe31041cc0c0df2229f]

Apply complete! Resources: 2 added, 0 changed, 1 destroyed.


vi-mode plugin - normal mode indicator is missing.

Hello, I've tried several themes and even terminals but I can't seem to find any that displays an indicator for vi-mode plugin's normal mode.
Am I misunderstanding here something?
Edit: after going through several random themes I finally found one that actually works, it's avit, so it seem to be theme issue.

Yeah, this is normal. Most themes do not include a vi mode indicator. You can get a partial listing of those that do by looking for themes that use vi_mode_prompt_info.
[~/.oh-my-zsh/themes on ⇄ master]
$ grep -l vi_mode_prompt_info *
avit.zsh-theme
flazz.zsh-theme
[~/.oh-my-zsh/themes on ⇄ master]
$

You can add a vi mode indicator to other themes by making a custom variant of them.

vi-mode sets an indicator with $RPS1 if it is not set by a theme. In other words, as long as you have the vi-mode plugin enabled and a theme that doesn't do something with RPS1 or RPROMPT you should get the setting from vi-mode which is a set of three red left chevrons.


Fixed translation for count of reviews into Ukrainian for the offer list #1976

Fixed the issue of translating the count of reviews into Ukrainian for the offer list page [ Close #1976 ]

Before changing
After changing

✅


getContract type issue after wagmi/core 2.6.1 update

Describe the bug
contract.read is not available on contract even if we pass public client in getContract.
Link to Minimal Reproducible Example
https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgcwKYwMIQHYygQwGMYAaOVKQgJgAYBBAI2DIAsYYw4BfOAMyggg4AcgBuwVCGEBuAFChIsRCnQYANhNxlCUVPhios2XsGRk0MAOr41a1RtRa4MAJ5hUcIyeTc+AocIAAgDu+MggwAD0hNCowvLg0PBIIPjA2NjoZADOqJAa+L78giLiktEsadjZMgmKyXDpAFaoxKgAJkX+IiFhEdE4mcTQNXKydvAxxqYAXJ443mOyU95wALxwOnoGXqYAFAiycMeblenZcwDaqemZpHC5+cD4ALokRydTQzAjV82tBnaB2c+CgFjmwhA6HwAFl8NkANbCbgASjeH2OeHw1XqF0QGJOx2uVTuADpgO0XnM2Bw9ij3oTCZdHhACuTKdT2GA6QyTlx3lwUbJljhsvBQrZ7Jp4Bt8KFgPALNZJZgHLg9itTGRDoTCGdsABJdpzACMApRYymYs2OCxxHWKkwtoIxAOBPw7XaumyeOENAAHgAxABCdAAzABOE1UDD4GgAFk98YArAAOQip+Nh1BUACiuZoqYjADYAOy8DAJ3hh5OliPUYS8474JhzCjUehMJubNUwOY6xnHCUTObDqWOUgEwlgACuDA0hDmFnU0o1Cy1yj1VSNptR3f5wsFltF8Gw+ChDrlaUmzqIMFJug9pLPULpwqtrNQpLUEGQewABi+qBzAAJAgQFcP+KJAA
Steps To Reproduce
see errors in playground.
Wagmi Version
2.6.1
Viem Version
2.5.0
TypeScript Version
5.3.3
Check existing issues

[X] I checked there isn't already an issue for the bug I encountered.

Anything else?
It works with inferred config type, but I need to use predefined config type as its common variable & is being returned from service class. & it was working with previous (2.6.0) version. Full inferred config type is very long & not viewable in IDE, so I can't copy full type. need some shorter type.

The issue is you are setting config's type to Config so getClient returns Client<...> | undefined. You either need to let TypeScript infer config's type or check that the result of getClient isn't undefined.
TypeScript Playground
- let config: Config;

+ const config = createConfig({

Why can getClient return undefined in this situation? Since config is of type Config, we can't check that chainId is valid, thus we return undefined to account for this ambiguity.
const config: Config = createConfig({
  chains: [mainnet, sepolia],
  transports: {
    [mainnet.id]: http(),
    [sepolia.id]: http(),
  },
})

const client = getClient(config, { chainId: 69_420 })
//        ^? const client: Client<...> | undefined

Ok thanks, will check if client is defined.


[Bug] [PlutusExe] Fixed looping 'plc example -a'

plc example -a was trying really hard to produce something that doesn't evaluate to Failure, but we have a test that always contains division by zero...
This PR allows plc example to generate a term that evaluates to Failure.

Thanks!


Update proposal-template.md

Good evening,
this is the proposal to enter the Hyperledger Labs with our IBAN Portability project (FORFIRM's team). To date we have developed the REST API code and we would like to develop the second version in Hyperledger Fabric.
Pending feedback, best regards

It appears that you missed this step:
Fill out the Proposal Template and save it into the labs subdirectory under the name of your lab, such as mynewlab.md. It is expected that your lab repository will have the same name so keep that in mind.

You need to copy the proposal-template.md to a new file under the labs subdirectory, and then fill it out.
In addition, you missed the DCO sign-off that is required. Provide the -s option to git commit.
I recommend closing this PR and doing another PR.

Federica, do you need help to do what Tracy suggests above? If so reach out to me and I can. But we do need  DCO sign-off

Federica,
If you are planning to contribute already existing code, the DCO (or developer certificate of origin) says that either you have the right to contribute the code or the people who authored the code are giving you permissions, so that we have provenance on the code; see https://developercertificate.org/. As Tracy says above using the -s option with the command line git commit will take care of this. In addition the suggestion she gave is to close this PR and re-open another PR with your proposal template , following the directions that she has given above. Once that is done and the PR is approved, you can prove with your git url that you are under hyperledger labs.
Best,
Vipin

@FedeCune : You can also see the information under https://github.com/hyperledger-labs/hyperledger-labs.github.io/pull/42/checks that will give you the command-line options to fix the DCO issue on your branch. You will also need to ensure that you are creating a new file and not modifying the existing template file.

Please re-open as required


Please make themes GDPR compliant

Really like these themes, but currently cannot use them as they contain Google Analytics tracking. According to a ruling in the The Court of Justice of the European Union (CJEU) in November 2019, "analytics and tracking" is considered non-necessary cookies and so requires opt-in consent from the user before setting any cookies. Would therefore like this feature to be configurable in site settings to avoid breaking the law.

It seems that this is already implemented, sorry for the confusion.
{% if site.google_analytics %}

The opt-in consent bar doesn't actually show up.


How do I change the delimiter in variables' names?

In the generated LESS stylesheet, I get something like this:
// ...
@mysprite-x: 0px;
@mysprite-y: 0px;
// ...

And I want an underscore for all variables, not a dash, like this:
// ...
@mysprite_x: 0px;
@mysprite_y: 0px;
// ...

There are lots of customisation and template options, but I can't find one for the "delimiter"? We are on windows and the underscore is used for constants (and so our build/CI tools complain!).
So in other words, how to I adapt this from less.template.mustache:
{{#items}}
@{{name}}-name: {{name}};
@{{name}}-x: {{px.x}};
@{{name}}-y: {{px.y}};
@{{name}}-offset-x: {{px.offset_x}};
@{{name}}-offset-y: {{px.offset_y}};
@{{name}}-width: {{px.width}};
@{{name}}-height: {{px.height}};
// etc

Actually, I'm not sure if this is a question for this project, or the main gulp.spritesmith project?...

This is the proper location as it's used by most projects on top of spritesmith (e.g. grunt-spritesmith). We will need to think about this further because we should add functionality that also supports camelCase, TitleCase, and any other potential casing. My gut reaction is to leverage underscore.string somehow.
http://epeli.github.io/underscore.string/
For the interim, you can use a custom template via cssTemplate in gulp.spritesmith.
https://github.com/twolfson/gulp.spritesmith/tree/2.5.1#spritesmithparams

I wrote a post-build script to edit the less files... ugly but works for now.
Your way's better though. Hope there will be an option for this sometime in the future.

Alright, we have added in support for altering variable names via underscore.string. This was released in<EMAIL_ADDRESS>and will be released in grunt-spritesmith/gulp.spritesmith shortly.
For your usage, you will want:
// In your `gulpfile.js`
/* imgName, cssName, ... */
cssOpts: {
  variableNameTransforms: ['underscored']
}

This has been temporarily reverted in the latest verions of grunt-spritesmith/gulp.spritesmith as I introduced it as a minor version which broke existing usages. It can still be accessed via
<EMAIL_ADDRESS>or<EMAIL_ADDRESS>There should be a major release shortly (once I get these HTTP fixtures back in) which adds it back.

This has been re-introduced in<EMAIL_ADDRESS><EMAIL_ADDRESS>and<EMAIL_ADDRESS>Thanks for your patience =)

@twolfson This works great, thanks!
...And so many options, awesome!


smoke_catalina_hot_mode_dev_cycle__benchmark hotRestartMillisecondsToFrame regression

Maybe the engine roll https://github.com/flutter/flutter/pull/55906 or https://github.com/flutter/flutter/pull/55919.

The benchmark went down today. To make the redness less flaky, I rebaselined the threshold and I'm going to close this now.


Games crash on unc0ver ios 14.2

when i enable the tweak on a game it will crash on launch even with the set fps on first touch disabled.
device: iphone 11
ios build: 14.2
jailbreak: unc0ver 6.0.1

tried alot of unity games and only one doesnt crash so maybe it's not unc0ver and some incompatibility with the unity version that games use

What is the names of crashed games.

MiniDayz2, Guns n spurs, crazy Bikers 3, Gunshot City

I tested Gunshot City and found it doesn't export Application.targetFrameRate . Unfortunately this tweak can't work without it. I think other games may be the same.

the callbackFramerateChange:(int) ?

More specifically, this tweak works by searching and hooking UnityEngine.Application::set_targetFrameRate.

going to close this issue then you can reopen it if you want to


Microsoft Authenticator

Hello,
it would be great if 2fa is possbile with Microsoft authenticator app. I've tried that already but it seems not to work.
Best Wishes
Sascha

I don' know that. But I tried to use the Microsoft Authenticator app for configuring 2fa. And the generated codes semms not to work.

Let me try 😊

Yes, it's working :)

Closing :)


No syntax highlighting in ES6 class definition Symbol.iterator method in JavaScript

In a JavaScript ES6 class definition, if defining a method using the bracket syntax for the method name, such as [Symbol.iterator](), the contents of the method is not syntax hightlighted.

In fact, this seems to be a problem with the way the grammar tries to find a "method" name to highlight. If a method call is the first thing inside the bracket method's body, it gets colored according to the rules of methods:

Fixed by #257


Image to PDF Page Size Issue

Since the watermark can be deleted even if flattened, I am converting the watermarked PDF to an image and then back to PDF.  The problem is that I cannot control the page size.  The source document is 8.5x11 (Letter).
Fill Page stretches the source document into A4.
Maintain Aspect Ratios crops part of the page and adds white bars at the top in order to fit the source document into A4.
Fit Page to Image maintains the aspect ratio of a letter page however the output is 35.42 inches by 45.82 inches.  I receive the same result if I drag the PNG files into Foxit.  The PNG files were created using StirlingPDF to Image using the default of 300 dpi.
For all three options, it would be ideal to be able to specify the dimensions of the PDF output.  The usual choices will be either Letter or A4 however other sizes, and even custom sizes, might be desirable for some use cases.
As a further feature request, it would be nice to specify global defaults since, in North America, metric paper sizes, although much better, are very hard to find and are very rarely used.
I am running the alpha Docker container with the following digest: sha256:5327c72ff21727812e3841ab3592fc999022d7c2307b00be4dc767234bed55b0

V2 will have the option to customize the page size of the PDF.

No problem! V2 is currently under development and has a decently long way to go. You can view the development in the v2/v2-wip branch and in the project roadmap.

We ahve other issue tickets raised regarding inconsistent page sizing across tools, this will be taken up in those


Add talent solution library

We need a phpunit.xml.dist file, and perhaps a system test/system test config?

I added the phpunit config (would we be able to get the addition of that included in the google-cloud CLI tool?).
As for the System tests, since this is alpha we can follow up with those a bit later.


Improve .gitignore

This reorganizes the .gitignore file to make it more readable and removes redundant entries.
bin/current_version.txt is now ignored as it's generated automatically by SHADERed on startup.

Looks very nice - thanks!


Feature Request: Groups

Would be handy to have a groups field in the table. Then you can group items together as a single roll result with multiple items in the group to be shown in chat.
This is handy e.g. for creating a mixed encounter, like 1d4 Orcs + an Orc Captain

it can be done by having the overlapping ranges
have 2 table rows where the they both have for example 1-2 as range, when a 1 is rolled, both results are selected.
It is the foundryVTT way of doing this, I prefer to keep it the way it is done in vanilla foundry when the feature is already present.

it can be done by having the overlapping ranges
have 2 table rows where the they both have for example 1-2 as range, when a 1 is rolled, both results are selected.
It is the foundryVTT way of doing this, I prefer to keep it the way it is done in vanilla foundry when the feature is already present.


toonlib 1.0.2 has requirement requests==2.13.0, but you'll have requests 2.20.0 which is incompatible.

Home Assistant release with the issue:

0.81.2
Last working Home Assistant release (if known):
0.81.1?
Operating environment (Hass.io/Docker/Windows/etc.):

Virtual env
Component/platform:

https://www.home-assistant.io/components/toon/
Description of problem:
Incompatibel dependancy
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Traceback (if applicable):

Additional information:

Upstream issue: https://github.com/costastf/toonlib/issues/6


accessing user email

can someone tell me where the user data are stored after logging in? or how can I access it? - I'd like to send email to users ...
Sorry, I'm new to php!
Thanks

The email address would be in your "members" table in the MySQL database.
On Mon, Sep 18, 2017 at 3:39 PM, ld17<EMAIL_ADDRESS>wrote:

can someone tell me where the user data are stored after logging in? or
how can I access it? - I'd like to send email to users ...
Sorry, I'm new to php!
Thanks
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/fethica/PHP-Login/issues/118, or mute the thread
https://github.com/notifications/unsubscribe-auth/AH24Ah4gs40A3cFkbSBFZzw1KxFensIoks5sjsbzgaJpZM4PbbBo
.

solved, thank you! $_SESSION['username']; what i needed


Move CQL short circuit optimizations

changeset also includes updating the spark code path to use the OptimizedCqlLibraryReader.
I went back and for on where to put this code, but ultimately just put it into its own project as to not to have to include all of cohort-engine in cohort-evaluator.
Open to alternative names for the module if you don't like cohort-cql-optimizations.
References

WFFHCOHORT-638
CI run
CD run

Renamed to cql-engine-addons (98211fe)


Phpcbf path is not defined

Description
Was trying to setup drupal standard for phpcbf so I've made a new global install of it with composer. After entering the new path in the executable, running beautify result in "error path is not defined".
Input Before Beautification
Not relevant
Expected Output
Not relevant
Actual Output
Not relevant
Steps to Reproduce
composer global require drupal/coder
composer global require dealerdirect/phpcodesniffer-composer-installer

Setting up path to phpcbf in atom beautify settings
Optionally setting up phpcbf standard to Drupal,DrupalPractice (neither works with PEAR).
Debug
Here is a link to the debug.md Gist: https://gist.github.com/Aporie/2e43838a1a2d1af321dd44487862e97c
Checklist
I have:

[ ] Tried uninstalling and reinstalling Atom Beautify to ensure it installed properly
[X] Reloaded (or restarted) Atom to ensure it is not a caching issue
[X] Searched through existing Atom Beautify Issues at https://github.com/Glavin001/atom-beautify/issues
so I know this is not a duplicate issue
[X] Filled out the Input, Expected, and Actual sections above or have edited/removed them in a way that fully describes the issue.
[X] Generated debugging information by executing Atom Beautify: Help Debug Editor command in Atom and added link for debug.md Gist to this issue

@Aporie I see the specific issue with the path, that definitely needs to be fixed.  But it looks like you are installing it globally.  Can you try running phpcs and/or phpcbf from the terminal (just get the version or something) and see if it runs?  If so, you probably don't even need the paths there.

Hi @szeck87,
No I haven't installed it globally (and I don't really want to) :
$ phpcbf -i
bash: phpcbf: command not found...
Install package 'php-pear-PHP-CodeSniffer' to provide command 'phpcbf'? [N/y]

Whereas :
$ .config/composer/vendor/squizlabs/php_codesniffer/scripts/phpcbf -i
The installed coding standards are PEAR, PSR2, Squiz, MySource, Zend, PSR1, PHPCS, DrupalPractice and Drupal

I've tested your PR and it did the trick :) thanks.

Fixed with v0.32.5.


Document WNConfig

Description
configurableNavigation in XMonad.Layout.WindowNavigation uses an opaque type WNConfig and provides three undocumented functions to create WNConfig values. Provide some documentation for them, so it at least makes some kind of sense.
Closes #748.
Checklist

[x] I've read CONTRIBUTING.md

[x] I've considered how to best test these changes (property, unit,
manually, ...) and concluded: doc change

[n/a] I updated the CHANGES.md file

Also document the default value.

Also, I'd just put this directly into master because it's just a doc change, but I still don't trust my Haddock markup skills.

Uh. @slotThe, this failed an OrgMode test for some reason? I didn't even touch that.

Lol.  Consider it unrelated, I will take a look at the X.P.OrgMode tests tomorrow

@geekosaur should be fixed by c701a75002bf7f089732a59c23360153d1178e1c


Code generation for Enums

I would like to know if we can change the way code is generated for Enums, so it is more helpful and inclusive without changing the functionality of the said code.
Current:
module Request.Graphql.Enum.JobStatus exposing (..)

import Json.Decode as Decode exposing (Decoder)

{-|

  - Submitted -
  - Started -
  - Finished -
  - Pausing -
  - Paused -
  - Cancelled -
  - Failed -
-}
type JobStatus
    = Submitted
    | Started
    | Finished
    | Pausing
    | Paused
    | Cancelled
    | Failed

decoder : Decoder JobStatus
decoder =
    Decode.string
        |> Decode.andThen
            (\string ->
                case string of
                    "SUBMITTED" ->
                        Decode.succeed Submitted

                    "STARTED" ->
                        Decode.succeed Started

                    "FINISHED" ->
                        Decode.succeed Finished

                    "PAUSING" ->
                        Decode.succeed Pausing

                    "PAUSED" ->
                        Decode.succeed Paused

                    "CANCELLED" ->
                        Decode.succeed Cancelled

                    "FAILED" ->
                        Decode.succeed Failed

                    _ ->
                        Decode.fail ("Invalid JobStatus type, " ++ string ++ " try re-running the graphqelm CLI ")
            )

{-| Convert from the union type representating the Enum to a string that the GraphQL server will recognize.
-}
toString : JobStatus -> String
toString enum =
    case enum of
        Submitted ->
            "SUBMITTED"

        Started ->
            "STARTED"

        Finished ->
            "FINISHED"

        Pausing ->
            "PAUSING"

        Paused ->
            "PAUSED"

        Cancelled ->
            "CANCELLED"

        Failed ->
            "FAILED"

Proposed:
type JobStatus
    = Submitted
    | Started
    | Finished
    | Pausing
    | Paused
    | Cancelled
    | Failed

typeMap : List ( String, JobStatus )
typeMap =
    [ ( "SUBMITTED", Submitted )
    , ( "STARTED", Started )
    , ( "FINISHED", Finished )
    , ( "PAUSING", Pausing )
    , ( "PAUSED", Paused )
    , ( "CANCELLED", Cancelled )
    , ( "FAILED", Failed )
    ]

allStatus : List JobStatus
allStatus =
    List.map Tuple.second typeMap

decoder : Decoder JobStatus
decoder =
    mapDecoder typeMap

{-| Convert from the union type representating the Enum to a string that the GraphQL server will recognize.
-}
toString : JobStatus -> String
toString =
    typeMapToString typeMap

-- Generic Helpers, usually in their own module

mapDecoder : List ( String, a ) -> Decoder a
mapDecoder allPairs =
    let
        findIn pairs str =
            case pairs of
                ( k, v ) :: rest ->
                    if k == str then
                        Decode.succeed v
                    else
                        findIn rest str

                [] ->
                    Decode.fail (str ++ " is an invalid key")
    in
    Decode.string |> Decode.andThen (findIn allPairs)

typeMapToString : List ( String, a ) -> a -> String
typeMapToString allPairs key =
    List.filterMap
        (\( k, v ) ->
            if v == key then
                Just k
            else
                Nothing
        )
        allPairs
        |> List.head
        |> Maybe.withDefault "Serialization Failed"

This was inspired by this post on reddit.

Hey @BinaryHexer, thanks for the discussion. I like to drive all features based on a concrete need, could you describe how you would use the added code here for your specific use case? It seems to me that this module is attempting to abstract away the low-level details of how to serialize/de-serialize Enums between Elm-GraphQL. So I think it might actually be undesireable to open up low-level details of serialization since the goal is to abstract his away. I’m open to ideas if I’m missing a specific use case where this would be helpful, though! Thanks!

So I completely understand your hesitation to rush in and add more features and bloat this library unnecessarily, but humor me.
For example what I have here is an enum that is used both as part of the (graphQL) Input and also as part of the returned record.
In the absence of the proposed extra functions, the only option is to implement themselves by hand, which means you have to start caring about keeping them in Sync, etc and I think the objective of this library is to abstract away all the concerns related to writing type safe and correct GraphQL code by just pointing at the correct graphQL endpoint or schema.
If you feel that such defaults are too much, can I propose some sort of flag like -generate-extra-helpers for the graphqelm tool, so that those who want it can have it and at the same time it does not generate too much extra code for those who do not want it.
I think most users of your library would appreciate that there is an option to get such extra helper functions for free if they want it.

Hey @BinaryHexer If I’m understanding you correctly, the functionality you’re describing is already abstracted away by Graphqelm so there is no need to do the low-level work of serializes/deserializing Enums at any point. In fact, the way Graphqelm is structured it would be impossible to do that, Graphqelm completely handles serializing/deserializing Enums before you send a request/as soon as you receive data.
I’m not at a computer right now so I can’t give you an Ellie example, but try building the following request using either the Ellie example in the README or the StarWars.elm file in the examples folder as a starting point and I think you’ll see what I mean:
{
  hero(episode: JEDI) { name }
}

You’ll notice that when you build this using Graphqelm, you’re not sending a String, but instead you pass the argument as an Episode union value. So there’s no serialization needed. So there’s no place that you’ll need the low-level serialization/de-serialization logic.
Try that exercise and see if that makes sense! Cheers!

Hi @BinaryHexer, is my message making sense? Let me know if you need clarification. I'm going to close this issue for now, but if it turns out that I missed something, feel free to re-open this. I'm happy to discuss this more if you have other thoughts. Thanks!


app crash: Cannot read property 'users' of undefined

First of all, thanks for creating this application. It's exactly what I was looking for. However I run into an error. When connecting to my local dev database, everything is OK. However when I try to connect to an external database, which is created on my VPS using dokku, the app crashes with the following error:
/adminMongo/node_modules/mongodb/lib/utils.js:98
    process.nextTick(function() { throw err; });
                                  ^

TypeError: Cannot read property 'users' of undefined
    at /adminMongo/routes/index.js:56:55
    at get_db_list (/adminMongo/routes/index.js:864:9)
    at /adminMongo/routes/index.js:51:25
    at /adminMongo/routes/index.js:902:13
    at /adminMongo/node_modules/mongojs/lib/database.js:121:5
    at /adminMongo/node_modules/mongojs/lib/database.js:113:7
    at handleCallback (/adminMongo/node_modules/mongodb/lib/utils.js:96:12)
    at /adminMongo/node_modules/mongodb/lib/cursor.js:851:16
    at handleCallback (/adminMongo/node_modules/mongodb-core/lib/cursor.js:244:5)
    at setCursorDeadAndNotified (/adminMongo/node_modules/mongodb-core/lib/cursor.js:553:3)

when I use the following connection string in terminal using mongo shell, I do get a connection:
mongo <IP>:<PORT>/<DB> -u <USER> -p <PASS>

I'm using the following connection string in adminMongo
mongodb://<USER>:<PASS>@<IP>:<PORT>/<DB>

The database version I'm connecting to is 3.0.6
Any ideas what might go wrong? Thanks in advance

Thanks for the positive feedback and the bug report. The issue looks to be user permissions related. adminMongo is trying to run "{ usersInfo: 1 }" to get a list of all users. Are you able to run this form the shell?
Regardless, I have a feeling I will need to make a change for user accounts without permissions to list all users of a given DB.

Thanks for the quick reply. When I run the command from shell:
db.runCommand({usersInfo:1})
{
	"ok" : 0,
	"errmsg" : "not authorized on XXX to execute command { usersInfo: 1.0 }",
	"code" : 13
}

So I think it's indeed a permission issue.

Great. Are you able to run db.getUser("userid") from shell to determine what user roles are assigned to your account? I'm trying to replicate the permissions.

If I replace userid with the actual user id specified in the connection string, I will get a response in the following format:
db.getUser("<USER>")

returns
"_id" : "<DB.USER >",
	"user" : "< USER >",
	"db" : "<DB>",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "< DB>"
		}
	]

Thanks. This has been fixed in 2cbb188c52f483ff9abc7a3e850518f417a20847.
Please keep raising any issues you come across.


Optimize GitHub action

Currently a GitHub action builds release files for commits in master and for each pull request.
Somehow this causes some spam in the PRs

Can we optimize the GH action?

That's basically a message for each browser release, Chrome, Firefox, Opera.


[Plugins] Google Sign In - Consent Screen Keeps Loading

I want to run the example provided with the google_sign_in package. Therefore I setup a project on firebase and the google developer console, enabled the People API, filled out the required information on the OAuth Consent Screen and finally updated the google-services.json.
When I try to login I don't receive any exception, however the consent screen keeps on loading forever.

Can you please provide debug log

Which one? There was none related to the call to signIn

@surr34 Please provide your flutter doctor -v output.

After doing some more investigations it seems not to be related to flutter, I experience the same issues with a native android app.

@surr34 Can you please provide us the information how to solve it.


Improve error messages for invalid index and require errors in API calls

Fixes #28, also improves other API call errors.
Laundry list of tasks:

[x] Add more verbose errors for index API calls
[x] Add more verbose errors for duk_require_xxx() API calls
[x] Add duk_require_function() and duk_require_callable() to API
[x] Improve Array.prototype.forEach() error message by using duk_require_callable()
[x] Add surrounding parentheses for tval summary of a pointer to ensure NULL pointer is distinguishable from a null value ((null) vs null)
[ ] Remove unused strings
[ ] Fix warnings
[ ] Check verbose errors
[ ] Check paranoid errors
[ ] Check minimal errors
[x] Check if shared helper/macros could be used to reduce code duplication
[x] Paranoid messages should not summarize values, use type names instead
[x] Code footprint difference, minimize (started from close to +1,5kB)
[x] Testcase fixes and additions
[x] Releases

Future work notes:

Non-verbose error messages are currently defined in code but don't make it into error objects when DUK_USE_VERBOSE_ERRORS is not set (not any longer anyway). For low memory targets it'd actually be useful to distinguish between "no error messages" and "very spartan messages". For the latter one could use e.g. "unexpected type" for all type-related errors etc. Non-verbose errors could use a bit of cleanup.
Invalid index error message for DUK_INVALID_INDEX refers to index -2147483648 which is not ideal, and the constant is also potentially platform specific.

The number of FIXMEs (and therefore index checks) is alarming.  Could at least some of those be consolidated?

I can look into that in this pull.
For the index validation functions, there are 4 or so of them (duk_validate_index() etc). I tried using a shared helper for them at some point, but couldn't get the generated code to come out as good. Because these are used quite a lot, it matters that the output is as good as possible, and the current forms seemed to work best.
For the other calls, like duk_require_null(), the best error message depends on the context so if a shared helper was used it would at least need to have a vararg input for the message. Also the helper would not really be much help if it just replaced a DUK_ERROR() call with a helper call. Perhaps a macro could be used to generate the bodies for duk_require_xxx(), to also cover most of the other parts. That'd reduce duplication a bit, at the cost of readability.
Further, it's important that the DUK_ERROR() call happen on a separate line for each underlying error; if the error throw site is shared, the __FILE__ and __LINE__ values would point to the helper which is much less useful. That's why inlining a shared helper is not good, while a macro works reasonably.
But, I'll try to see what can be done.

Right now errors look like:
TypeError: null not pointer at value stack index -3

I think it'd be better to start the error message with the expected type directly ("pointer" here):
TypeError: pointer required at value stack index -3, found null
TypeError: pointer required, found null at value stack index -3

Suggestions for better wording?
Is "value stack index -3" too verbose? Would "index -3" be OK? Example:
TypeError: pointer required at index -3, found null
TypeError: pointer required, found null at index -3

Or perhaps even:
TypeError: pointer required @-3, found null
TypeError: pointer required, found null @-3

Suggestions welcome :)

The error message could also either indicate the offending type or the offending value:
TypeError: pointer required at index -3, found "foobar"  // summarize offending value
TypeError: pointer required, found string at index -3    // show offending type only

I think I prefer these:
TypeError: pointer required, found null (at index -3)
TypeError: pointer required, found null (at value stack index -3)

The value stack index is the least informative to an end user so it should probably be last in the message.

Generally speaking this error won't be triggered by Ecmascript code alone, it indicates a bug in either the application or Duktape itself.  So the specific message is less important than for, say, a noncallable error.
I agree "value stack index" is too verbose though.  Honestly I would probably drop the "at" also, leaving:
pointer required, found null (index -3)

Hmm, I'm not sure what you mean, but these error messages are not necessarily related to bugs? It's quite OK to say:
const char *my_msg = duk_require_string(ctx, 0);

and if the argument is not a string, get one of these error messages.
For me "index" would also be enough, but it might maybe be confused with an array index, at least if operating on an array.

For example:
((o) Duktape 1.3.99 (v1.3.0-270-g7ac6bd1-dirty)
duk> require(new ArrayBuffer())
TypeError: string required, found [object ArrayBuffer] (index 0)
	duk_api_stack.c:1252
	require  native strict preventsyield
	global input:1 preventsyield

The error message above would actually make more sense if it indicated "arg 1", but the value stack index doesn't necessarily refer to arguments and can also be negative, etc.

Oh, sorry for the confusion, I was getting these mixed up with "invalid index". :)
Hm, maybe split the difference and say "stack index"?  I just think if you make it too verbose the index starts to dominate the error message, regardless of its positioning.

"stack index" works for me; I was also considering "vs index" which is somewhat technical. But making sense of the index requires understanding of what a value stack is anyway, so perhaps that'd be OK.
The index related errors are distinct, but they can also be thrown out in argument error situations even without an application/Duktape bug. For example, a called function may want to ensure that a certain index exists (= is provided by caller) for a required argument.

For me at least, "vs index" would be confusing, since I normally just say "the stack" in reference to the Duktape valstack--I only tend to qualify it if I need to differentiate between it and, say, the callstack.
Maybe that's just me though.

Yeah, "stack" is understandable for a developer using the API. But these errors may also be shown to end users etc who have never heard of the concept. So they will either ignore the stack index or incorrectly assume it refers to some array index or something ;)

Concrete example of the best suggestion so far:
((o) Duktape 1.3.99 (v1.3.0-271-g596cac5-dirty)
duk> Duktape.enc(Duktape.Pointer('dummy'), {foo:'bar'})
TypeError: string required, found 0x1841060 (stack index 0)
	duk_api_stack.c:1460
	enc  native strict preventsyield
	global input:1 preventsyield

In 1.3.0 that would produce:
((o) Duktape 1.3.0 (v1.2.0-614-g57bdc8c)
duk> Duktape.enc(Duktape.Pointer('dummy'), {foo:'bar'})
TypeError: unexpected type
	duk_api_stack.c:1432
	enc  native strict preventsyield
	global input:1 preventsyield

I like that, with the value shown.  That'll help when debugging, to find when something weird is passed to a function.
Definitely a big improvement over "unexpected type" :-)

Price in code footprint is >1kB so far :neckbeard:

On the other hand, maybe include the type with the value?  (e.g. "found number 812"). Since the value is string coerced, the type could potentially be ambiguous.

Wow, why so much overhead?

The "summarization" results should not be ambiguous: strings are quoted etc. For example:

If the value is undefined, the summary is undefined
If the value is the string "undefined" the summary is 'undefined'.

There are a lot of error strings that get added, e.g.:
buffer required, found %s (stack index %ld)
string required, found %s (stack index %ld)
compiledfunction required, found %s (stack index %ld)
regexp required, found %s (stack index %ld)
thread required, found %s (stack index %ld)
nativefunction required, found %s (stack index %ld)
undefined required, found %s (stack index %ld)
null required, found %s (stack index %ld)
boolean required, found %s (stack index %ld)
number required, found %s (stack index %ld)
pointer required, found %s (stack index %ld)
heapobject required, found %s (stack index %ld)

These alone are ~0.5kB. Then there's additional plumbing for making helper calls to convey the expected types, etc.

I could refactor the code to avoid full format strings and build the message from smaller parts, not sure if that leads to a better result though.

I tried to test this branch, but it didn't compile:
duk_api_stack.c(481): error C2065: 'index': undeclared identifier (compiling source file ..\src\duktape.c)
duk_api_stack.c(878): error C2065: 'index': undeclared identifier (compiling source file ..\src\duktape.c)

Yeah the branch is still in progress and I haven't pushed all local changes yet. I'll push an update in a few minutes.

Ok, hopefully compiles now - but just to be sure, the branch is not yet complete :)

Thanks, I knew it wasn't complete but wanted to test it out anyway.

Oh, crud, this breaks my custom error augmentation - minisphere automatically checks for error messages of the form "not XXX" (with exclusions for, e.g. "not callable") and calls Duktape.act() to get the correct filename and line number for a failed duk_require_xxx().  As C has no native regex support, the check will be more complicated once this makes it to master.

That's one price of the Ecmascript error model: the sub-typing is very simple which is nice in many ways, but error messages play a more prominent role. And since one cannot rely on any specific message contents, there's no reliable way to programmatically distinguish errors unless the throw site is using a custom Error subclass specifically.

Some notes on "blame" handling in #454.

Testcase expect strings are now fixed for API calls and tests now pass. I'll try to get this merged tomorrow.

Why the distinction between "is function" and "is callable" anyway?

IsCallable is defined in E5 Section 9.11, returning true for any object with a [[Call]] internal method. For standard objects it's equivalent to being a Function. There might be some object types in the future which can be called but are not (e.g. from inheritance perspective) Function instances. That's the reasoning anyway.
In any case, duk_is_callable() and duk_is_function() were already present before this branch.

Full Proxy support will actually probably make a distinction between the two methods, for a callable Proxy:

typeof will be function, as it is required to be function whenever the target implements [[Call]]
The Proxy is callable, so duk_is_callable() will be true
However, from a strict C API typing perspective duk_is_function() would, at least currently, be false because the value is not a Function object (Ecmascript function, C function, or a bound function)

It may be necessary to change the API semantics slightly when callable Proxies are implemented though.

Anoither difference is also that it would be possible to have a function which had [[Construct]], i.e. you could new Foo(), but didn't have [[Call]], i.e. you couldn't Foo().
This may seem a bit pointless, but it'd sometimes be useful to define a function which could only be used as a constructor and attempt to call it as a normal function would automatically TypeError. For example, some of the typed array bindings require this behavior but since there's no way to prevent those calls automatically, the bindings need to check the call style explicitly (using duk_is_constructor_call()).
If this separation was made (so that you could create such functions), it'd also nice to have duk_is_constructable() which would then be different from duk_is_callable().

Okay, that all makes a lot more sense now.
I knew the distinction was already there before, I just wanted some clarification on it and this seemed like a good place to ask about it.

Well don't know how much sense it makes, it'll probably need revisiting later on. The reason duk_is_callable() exists is partially because I originally implemented all the specification algorithms regardless of whether they were needed or not, and things like Proxy were not in the picture then.
By the way, if there was a Function object which couldn't be called normally - in specification terms it didn't have [[Call]] internal method - the specification would require that typeof of such a function be object instead of function, even if the function was callable as a constructor... :)

Interesting, so this means according to ES spec, testing whether typeof f === "function" is exactly equivalent to asking if f is callable.  That's good to know for writing polyfills.

The size difference is roughly the same still. It's probably caused by the error call sites; with verbose errors they need to push a format string, potentially format a duk_tval using a function call etc. For example, the error call path for duk_require_lstring() is:
  4174a7:       89 ee                   mov    %ebp,%esi
  4174a9:       48 89 df                mov    %rbx,%rdi
  4174ac:       e8 5f a7 fe ff          callq  401c10 <duk_push_string_readable>
  4174b1:       48 89 6c 24 08          mov    %rbp,0x8(%rsp)
  4174b6:       48 89 04 24             mov    %rax,(%rsp)
  4174ba:       41 b9 56 f0 42 00       mov    $0x42f056,%r9d
  4174c0:       41 b8 02 f6 42 00       mov    $0x42f602,%r8d
  4174c6:       b9 69 00 00 00          mov    $0x69,%ecx
  4174cb:       48 89 da                mov    %rbx,%rdx
  4174ce:       be fa 04 00 00          mov    $0x4fa,%esi
  4174d3:       bf 62 ee 42 00          mov    $0x42ee62,%edi
  4174d8:       31 c0                   xor    %eax,%eax
  4174da:       e8 ba 42 ff ff          callq  40b799 <duk_err_handle_error>

which is 51 bytes. There are about 20 call sites like this, which amounts to 1kB of code; add strings to that and it pretty much explains the difference.
I'll try to see if I could put the majority of that call site into a helper. Even so, each call site will need to pass at the minimum the following to the helper for the call site to be properly identified:

__FILE__
__LINE__
Offending index, possibly offending tv pointer
Expected type name

Maybe call sites could be 50% of their current size, but not much less. Ignoring __FILE__ and __LINE__ would be possible. What would be lost is the reference to Duktape internal file/line in the traceback (which is often useful at least when figuring out ultimate error causes).

Okay, with that helper change applied the difference is now +656 bytes over master. This is pretty reasonable I think, and I think it'd be possible to shave several kilobytes of footprint by applying this approach elsewhere too. That's a matter for a separate pull though :)

I think I'll move the "require type at index" error macro stuff into the generic error headers and helpers, and then add more helpers there in a follow up pull to reduce error call site size.

Couldn't resist the temptation to test what the impact for the helpers would be - by converting all DUK_ERR_API_ERROR throws into helper calls (which saves one argument per call site, the error type), around 150 bytes are saved.

Ok, so the final difference to master (with the API error change included), is +352 bytes.

I won't do any actual code changes in this pull anymore, but just remove obvious warnings and go through all the config combinations to see errors come out reasonably in each. This would then be ready for merging.

Verbose errors:
$ ./duk tests/ecmascript/test-dev-api-verbose-error-messages-gh441.js
TypeError: string required, found none (stack index 0)
TypeError: string required, found undefined (stack index 0)
TypeError: string required, found null (stack index 0)
TypeError: string required, found true (stack index 0)
TypeError: string required, found false (stack index 0)
TypeError: string required, found 123 (stack index 0)
TypeError: string required, found [object Object] (stack index 0)
TypeError: string required, found [object Array] (stack index 0)
TypeError: string required, found [object Function] (stack index 0)
TypeError: string required, found (PTR) (stack index 0)
TypeError: string required, found [buffer:4] (stack index 0)
TypeError: string required, found [object Pointer] (stack index 0)
TypeError: string required, found [object Buffer] (stack index 0)
TypeError: object required, found '' (stack index 0)
TypeError: object required, found 'foo' (stack index 0)
TypeError: object required, found 'foo<4660>' (stack index 0)
TypeError: object required, found 'foobarfoobar\x00foobarfoobar<51966>foobar...' (stack index 0)
TypeError: RegExp required, found 123 (stack index -1)

Paranoid errors:
$ ./duk tests/ecmascript/test-dev-api-verbose-error-messages-gh441.js
TypeError: string required, found none (stack index 0)
TypeError: string required, found undefined (stack index 0)
TypeError: string required, found null (stack index 0)
TypeError: string required, found boolean (stack index 0)
TypeError: string required, found boolean (stack index 0)
TypeError: string required, found number (stack index 0)
TypeError: string required, found object (stack index 0)
TypeError: string required, found object (stack index 0)
TypeError: string required, found object (stack index 0)
TypeError: string required, found pointer (stack index 0)
TypeError: string required, found buffer (stack index 0)
TypeError: string required, found object (stack index 0)
TypeError: string required, found object (stack index 0)
TypeError: object required, found string (stack index 0)
TypeError: object required, found string (stack index 0)
TypeError: object required, found string (stack index 0)
TypeError: object required, found string (stack index 0)
TypeError: RegExp required, found number (stack index -1)

Minimal errors:
$ ./duk tests/ecmascript/test-dev-api-verbose-error-messages-gh441.js
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105
TypeError: 105

Only 352 bytes, nice.  Believe me, I know how much of a hit 1kb is for limited memory environments--I still remember my DOS days with only ~400kb on average of usable RAM. :)


Wasm shared heap

[X] add WAMR_BUILD_SHARED_HEAP and WASM_ENABLE_SHARED_HEAP

[ ] add wamrc --enable-shared-heap

[ ] consider the behavior of import memory in multi-module feature

[ ] adapt address conversion/validation
aot code boundary check
wasm_runtime_invoke_native
wasm_runtime_invoke_native_raw
wasm_runtime_validate_app_addr
wasm_runtime_addr_app_to_native
wasm_runtime_addr_native_to_app
wasm_runtime_validate_native_addr

[ ] interpreter/fast-jit do boundary check
classic interp mode
fast interp mode
jit

[X] Support setting shared heap’s size and shared heap’s alloc options in RuntimeInitArgs for wasm_runtime_full_init

[ ] Add check in load module, default memory’s max_memory_size should be no larger than 4G-shared_heap_size, if not, reduce it to 4G-shared_heap_size

[X] Add API wasm_runtime_shared_malloc/wasm_runtime_shared_free

[X] App allocates memory from shared heap with API shared_malloc/shared_free
example

            #include <stdio.h>
            #include <stdlib.h>
            extern void *shared_malloc(int size);
            extern void shared_free(void *ptr);
            int main()
            {
	            int *pa = (int *)malloc(4);
	            *pa = 4;
	            printf("pa value is %d\n", *pa);
	            free(pa);
	            int *ps = (int *)shared_malloc(4);
	            *ps = 5;
	            printf("ps value is %d\n", *ps);
	            shared_free(ps);
            }

If wasm shared heap is enable, should the boundary check keep enabled ? In the following code, if bounds checks is disabled, should we return the offset directly or judge the addr is in shared heap?
In function wasm_runtime_addr_native_to_app
    if (bounds_checks) {
        if (memory_inst->memory_data <= addr && addr < memory_inst->memory_data_end) {
            ret = (uint64)(addr - memory_inst->memory_data);
            SHARED_MEMORY_UNLOCK(memory_inst);
            return ret;
        }
    }
    /* If bounds checks is disabled, return the offset directly */
    else if (addr != NULL) {
        ret = (uint64)(addr - memory_inst->memory_data);
        SHARED_MEMORY_UNLOCK(memory_inst);
        return ret;
    }

Would u mind giving us, the community, a quick introduction about:

What's shared heap?
What kind of questions does shared heap try to answer?
Is there any other options? And why we choose shared heap?

@WenLY1 Many people may not know the background and the design details of the shared heap, I submitted issue #3546 to try to illustrate that, suggest you to post tasks in that issue to track and discuss instead.


added rough documentation

Fow now I just implemented the documentation in some classes and in Proton.Util just the half. I just updated the docblock in couple of files, but nothing in the code itself.
If you run npm run doc and open the index.html in ./build/docs/ it will look like this.
Should I continue this implementation of documentation, or should I stop - it depends now on you :)

great


Problems with Lumen 5.7

Hi!
I have some problems with your function Bridge::start()
At line 97 you have this: $this->_kernel->terminate($request, $response);
With this line my roadrunner service doesn't response anything after first request.
When I commented line 97 at Bridge.php everything become normal and works fine

Hi!
Thank you for your issue and sorry for the long answer.
I will add fix for Lumen.

Hi!
Will you fix that issue?


Web Application Log files fail to write

Cookbook version
2.3.4
Chef-client version
Chef Development Kit Version: 0.16.28
chef-client version: 12.12.15
Platform Details
CentOS Linux release 7.2.1511 (Core)
Scenario:
If a web application doesn't specify an absolute path for a log file, log4j will write to the current directory. With CentOS 7, log4j is attempting to write the file to the root folder and does not have permission.
Steps to Reproduce:
On CentOS 7, Web application with log4j configuration similar to:
log4j.appender.LOGFILE.File=web_app.log
Expected Result:
The web_app.log file is written to the tomcat install log path
Actual Result:
The /var/log/messages file shows an error similar to:
Jan 18 14:02:07 localhost catalina.sh: log4j:ERROR setFile(null,true) call failed.
Jan 18 14:02:07 localhost catalina.sh: java.io.FileNotFoundException: web_app.log (Permission denied)
Jan 18 14:02:07 localhost catalina.sh: at java.io.FileOutputStream.open0(Native Method)
Jan 18 14:02:07 localhost catalina.sh: at java.io.FileOutputStream.open(FileOutputStream.java:270)
Jan 18 14:02:07 localhost catalina.sh: at java.io.FileOutputStream.(FileOutputStream.java:213)
Jan 18 14:02:07 localhost catalina.sh: at java.io.FileOutputStream.(FileOutputStream.java:133)
Jan 18 14:02:07 localhost catalina.sh: at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
Jan 18 14:02:07 localhost catalina.sh: at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
...
Suggested Solution:
Add WorkingDirectory to  templates/init_systemd.erb as follows:
Systemd unit file for tomcat_<%= @instance %>
[Unit]
Description=<%= @instance %> Apache Tomcat Application
After=syslog.target network.target
[Service]
Type=simple
<% @env_vars.each do |h| -%>
<% h.each_pair do |k,v| -%>
Environment="<%= k -%>=<%= v %>"
<% end -%>
<% end -%>
WorkingDirectory=<%= @install_path %>/logs
ExecStart=<%= @install_path %>/bin/catalina.sh run
ExecStop=<%= @install_path %>/bin/catalina.sh stop
Restart=on-failure
RestartSec=2
User=<%= @user %>
Group=<%= @group %>
[Install]
WantedBy=multi-user.target

Hi,
Sous-Chefs have just taken over this cookbook and are currently baselining issues, if you think this issue is still relevant please re-open it
Thanks!


Bump pwaqi to 1.4 to fix a typo in the underlying library.

Description:
Version of the underlying pwaqi library was updated to 1.4 to fix an issue leading to UnboundLocalError (thanks to @bepcyc).
Checklist:
If the code communicates with devices, web services, or third-party tools:

[x] Local tests with tox run successfully. [travis|https://travis-ci.org/valentinalexeev/home-assistant/builds/197588568]
[x] New dependencies have been added to the REQUIREMENTS variable ([example][ex-requir]).
[x] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.

Hi @valentinalexeev,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!


Logger

What
Create a logger file pkg/logger.config.go. Here we will implement to logger for out Config Package.

This Issue is blocked by #1


organize regex handling

plan for handling the variety in regular expression dialects in Juttle
@dmajda this is on our 1.0 roadmap, please fill in details.

I don’t think this is relevant anymore — it’s vestige from the old days. We just use JavaScript regexp syntax in filter expressions. The adapters can either implement it or (as would be much more common) reject it.


Support tiny_skia

Necessary for running Zed.
trap at Instance { def: Item(DefId(1:14541 ~ core[60d0]::core_arch::x86::sse2::_mm_cvtps_epi32)), args: [] } (_ZN4core9core_arch3x864sse215_mm_cvtps_epi3217h3438074ff2a744e2E): llvm.x86.sse2.cvtps2dq

I'd be interested in attempting this issue, although I would probably need some handholding. I do not have any significant experience with assembly, but have contributed to some larger Rust projects before (Axum), and I've been following the compiler for a while.

I'm currently trying to completely rework the way vendor intrinsics are implemented. I don't know if it will work out yet, but to avoid your work going to waste if it works out, you may want to hold off working on this until either the rework gets merged (and these intrinsics are like immediately available) or it becomes clear that my idea doesn't work out after all.

Sounds good, I appreciate the response :)
Let me know if you need someone to do grunt work, I'm happy to oblige

Thanks for the offer. I'm not quite sure what a good first issue for rustc_codegen_cranelift would be though. If you want to help, maybe contribute to Cranelift? A couple of issues that would either directly help cg_clif or make development of cg_clif a bit easier are: https://github.com/bytecodealliance/wasmtime/issues/2827, https://github.com/bytecodealliance/wasmtime/issues/8600 and https://github.com/bytecodealliance/wasmtime/issues/8694. If you want to pick up any of these issues please comment there (or at https://bytecodealliance.zulipchat.com/) to keep this issue a bit tidier.


fix: add operating system to translate prompt

This fixes the translate prompt for non-macOS operating systems.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report
Attention: Patch coverage is 0% with 12 lines in your changes missing coverage. Please review.

Project coverage is 16.39%. Comparing base (77f5000) to head (5a0d91c).

Files with missing lines
Patch %
Lines

crates/q_cli/src/cli/translate.rs
0.00%
12 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #148   +/-   ##
=======================================
  Coverage   16.39%   16.39%
=======================================
  Files        1467     1467
  Lines      129229   129238    +9
=======================================
+ Hits        21187    21189    +2
- Misses     108042   108049    +7

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


PhpBrew connection timeout

Output
phpbrew ext install xdebug
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.
For example, to install memcached extension for php7, use:
phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

CurlKit\CurlException: (28) Resolving timed out after 10524 milliseconds
Trace:
0) CurlKit\CurlDownloader->request('https://pecl.php.net/rest/r/xdebug/stable.txt')
1) PhpBrew\Extension\Provider\PeclProvider->getPackageXml('xdebug', 'stable')
2) PhpBrew\Extension\Provider\PeclProvider->buildPackageDownloadUrl('stable')
3) PhpBrew\Extension\ExtensionDownloader->download(PhpBrew\Extension\Provider\PeclProvider, 'stable')
4) PhpBrew\Command\ExtensionCommand\InstallCommand->execute('xdebug')
5) call_user_func_array([PhpBrew\Command\ExtensionCommand\InstallCommand, 'execute'], ['xdebug'])
6) CLIFramework\CommandBase->executeWrapper(['xdebug'])
7) CLIFramework\Application->run(['/usr/local/bin/phpbrew', 'ext', 'install', 'xdebug'])
8) PhpBrew\Console->runWithTry(['/usr/local/bin/phpbrew', 'ext', 'install', 'xdebug'])
9) require('phar:///usr/local/bin/phpbrew/scripts/phpbrew-emb.php')

Expected Result
No exceptions
Command
phpbrew ext install xdebug
Platform
OS:
 Ubuntu 14.04

Running PHP:
5.5.9 and 7.0.6
I don't know what happens with curl but, I don't have connectivity problems

pecl site sometimes down?
Serginho<EMAIL_ADDRESS>於 2016年5月6日 星期五寫道：

Output
phpbrew ext install xdebug
Warning: Some extension won't be able to be built with php7. If the
extension
supports php7 in another branch or new major version, you will need to
specify
the branch name or version name explicitly.
For example, to install memcached extension for php7, use:
phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl
CurlKit\CurlException: (28) Resolving timed out after 10524 milliseconds
Trace:

CurlKit\CurlDownloader->request('https://pecl.php.net/rest/r/xdebug/stable.txt')
PhpBrew\Extension\Provider\PeclProvider->getPackageXml('xdebug', 'stable')
PhpBrew\Extension\Provider\PeclProvider->buildPackageDownloadUrl('stable')
PhpBrew\Extension\ExtensionDownloader->download(PhpBrew\Extension\Provider\PeclProvider, 'stable')
PhpBrew\Command\ExtensionCommand\InstallCommand->execute('xdebug')
call_user_func_array([PhpBrew\Command\ExtensionCommand\InstallCommand, 'execute'], ['xdebug'])
CLIFramework\CommandBase->executeWrapper(['xdebug'])
CLIFramework\Application->run(['/usr/local/bin/phpbrew', 'ext', 'install', 'xdebug'])
PhpBrew\Console->runWithTry(['/usr/local/bin/phpbrew', 'ext', 'install', 'xdebug'])
require('phar:///usr/local/bin/phpbrew/scripts/phpbrew-emb.php')

Expected Result
No exceptions
Command
phpbrew ext install xdebug
Platform
OS:
Ubuntu 14.04
Running PHP:
5.5.9 and 7.0.6
I don't know what happens with curl but, I don't have connectivity problems
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/phpbrew/phpbrew/issues/726

Not sure why you have this timeout, I can't reproduce this.

phpbrew ext install xdebug                                                                                !12180
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.

For example, to install memcached extension for php7, use:

    phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

Downloading http://pecl.php.net/get/xdebug-2.4.0.tgz via curl extension
[==================================================================] 258.62/258.62KB 100%
===> Extracting to /Users/c9s/.phpbrew/build/7.0/ext...
===> Installing xdebug extension...
Log stored at: /Users/c9s/.phpbrew/build/7.0/ext/xdebug/build.log
Changing directory to /Users/c9s/.phpbrew/build/7.0/ext/xdebug
===> Phpize...
===> Configuring...
===> Building...
===> Running make all: /opt/local/bin/gmake -C '/Users/c9s/.phpbrew/build/7.0/ext/xdebug' 'all'  >> '/Users/c9s/.phpbrew/build/7.0/ext/xdebug/build.log' 2>&1
===> Installing...
===> Running make install: /opt/local/bin/gmake -C '/Users/c9s/.phpbrew/build/7.0/ext/xdebug' 'install'  >> '/Users/c9s/.phpbrew/build/7.0/ext/xdebug/build.log' 2>&1
===> Extension is installed.
===> Creating config file /Users/c9s/.phpbrew/php/7.0/var/db/xdebug.ini.disabled
===> Enabling extension xdebug
[*] xdebug extension is enabled.
Done.

Resolving timed out usually happens when you have a network problem, especially the DNS problem.
try ping pecl.php.net to see if your network is ok.

My internet connection is quite fast. I've tried several days and always have the same problem.
I'm alsolutely sure that's a curl problem. For example, the exception says this:
0) CurlKit\CurlDownloader->request('https://pecl.php.net/rest/r/xdebug/stable.txt')
If I copy the url and use the browser, there's no problem.

By the way. I've tried at work and at home. Diferent connection and the same problem.
If I executed phpbrew install php-7.0.6 and the exception is thrown. I copied the link, downloaded the file from the browser and put it into distfiles folder. After that I executed the command again and it works cause the php version had already downloaded

Ok maybe some server disallowed curl request, could you try that link with curl command?

Btw I updated the curlkit with user agent string, it might happen when user agent string is not set.

well, if you believe there is something wrong with the curl, you can use other downloader such as wget.
see https://github.com/phpbrew/phpbrew#installing-extension-with-specific-downloader for more details

If I execute this: phpbrew install php-7.0.6 --downloader wget
I get the same error: CurlKit Exception.... That's an weird behavior...
I've tried in another home connection and everything works properly... I have to check at work again in order to looking for dns issues... Although, I'm absolutely sure that if I execute in a shell >wget [some url] works properly... so... I have no idea what the heck is going on.

Does curl https://pecl.php.net/rest/r/xdebug/stable.txt work for you?

The command should be phpbrew install  --downloader wget php-7.0.6. since variant names are after the argument (version name).

If I execute phpbrew install --downloader wget php-7.0.6 works properly with wget, but not with extensions, in the following code when I execute the command with wget, phpbrew returns a curl exception. How is it posible?
phpbrew ext install --downloader wget xdebug
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.

For example, to install memcached extension for php7, use:

    phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

CurlKit\CurlException: (28) Resolving timed out after 10522 milliseconds
Trace:

    0) CurlKit\CurlDownloader->request('https://pecl.php.net/rest/r/xdebug/stable.txt')
    1) PhpBrew\Extension\Provider\PeclProvider->getPackageXml('xdebug', 'stable')
    2) PhpBrew\Extension\Provider\PeclProvider->buildPackageDownloadUrl('stable')
    3) PhpBrew\Extension\ExtensionDownloader->download(PhpBrew\Extension\Provider\PeclProvider, 'stable')
    4) PhpBrew\Command\ExtensionCommand\InstallCommand->execute('xdebug')
    5) call_user_func_array([PhpBrew\Command\ExtensionCommand\InstallCommand, 'execute'], ['xdebug'])
    6) CLIFramework\CommandBase->executeWrapper(['xdebug'])
    7) CLIFramework\Application->run(['/usr/local/bin/phpbrew', 'ext', 'install', '--downloader', 'wget', 'xdebug'])
    8) PhpBrew\Console->runWithTry(['/usr/local/bin/phpbrew', 'ext', 'install', '--downloader', 'wget', 'xdebug'])
    9) require('phar:///usr/local/bin/phpbrew/scripts/phpbrew-emb.php')

It's because pecl installer requires curl to query the pecl site API.
The downloader is only used for downloading the dist  file
Serginho<EMAIL_ADDRESS>於 2016年5月9日 星期一寫道：

If I execute phpbrew install --downloader wget php-7.0.6 works properly
with wget, but not with extensions, in the following code when I execute
the command with wget, phpbrew returns a curl exception. How is it posible?
phpbrew ext install --downloader wget xdebug
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.
For example, to install memcached extension for php7, use:
phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

CurlKit\CurlException: (28) Resolving timed out after 10522 milliseconds
Trace:
0) CurlKit\CurlDownloader->request('https://pecl.php.net/rest/r/xdebug/stable.txt')
1) PhpBrew\Extension\Provider\PeclProvider->getPackageXml('xdebug', 'stable')
2) PhpBrew\Extension\Provider\PeclProvider->buildPackageDownloadUrl('stable')
3) PhpBrew\Extension\ExtensionDownloader->download(PhpBrew\Extension\Provider\PeclProvider, 'stable')
4) PhpBrew\Command\ExtensionCommand\InstallCommand->execute('xdebug')
5) call_user_func_array([PhpBrew\Command\ExtensionCommand\InstallCommand, 'execute'], ['xdebug'])
6) CLIFramework\CommandBase->executeWrapper(['xdebug'])
7) CLIFramework\Application->run(['/usr/local/bin/phpbrew', 'ext', 'install', '--downloader', 'wget', 'xdebug'])
8) PhpBrew\Console->runWithTry(['/usr/local/bin/phpbrew', 'ext', 'install', '--downloader', 'wget', 'xdebug'])
9) require('phar:///usr/local/bin/phpbrew/scripts/phpbrew-emb.php')

—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/phpbrew/phpbrew/issues/726#issuecomment-217809096

from version 1.21.6, it allows you to fetch pecl info via downloader other than curl. try phpbrew self-update first and then install xdebug

I've downloaded the last version with your fix, and here is the log:
`phpbrew ext install --downloader wget php_curl                                                                                255 ↵
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.
For example, to install memcached extension for php7, use:
phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

Found --downloader option, try to use wget as default downloader.
Downloading https://pecl.php.net/rest/r/php_curl/stable.txt via wget command
AVISO: el «timestamping» no hace nada cuando se combina con
la opción -O. Consulte el manual para más detalles.
--2016-05-13 11:52:51--  https://pecl.php.net/rest/r/php_curl/stable.txt
Resolviendo pecl.php.net (pecl.php.net)... <IP_ADDRESS>
Conectando con pecl.php.net (pecl.php.net)[<IP_ADDRESS>]:443... conectado.
Petición HTTP enviada, esperando respuesta... 404 Not Found
2016-05-13 11:53:06 ERROR 404: Not Found.
Error: Command failed: wget --no-check-certificate -c  -N -O "/tmp/phpbrew_447ziW" "https://pecl.php.net/rest/r/php_curl/stable.txt" returns:
PHP Notice:  Undefined variable: configureOptions in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
Notice: Undefined variable: configureOptions in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
PHP Warning:  join(): Invalid arguments passed in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
Warning: join(): Invalid arguments passed in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
Configure options: `

curl cannot be installed via pecl (which phpbrew ext install does), you have to include it when you compile php (see https://secure.php.net/manual/en/curl.installation.php)
or you can try this answer: http://serverfault.com/questions/208360/how-do-i-enable-curl-support-for-php-5-3-3
remember to use your php source path (default to ~/.phpbrew/build/php-<version>/ext/curl) to repalce the first line.

Same error for phpbrew ext install pdo_pgsql
Warning: Some extension won't be able to be built with php7. If the extension
supports php7 in another branch or new major version, you will need to specify
the branch name or version name explicitly.

For example, to install memcached extension for php7, use:

    phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl

===> Installing pdo_sqlite extension...
Log stored at: /home/travelflag3/.phpbrew/build/php-7.0.6/ext/pdo_sqlite/build.log
Changing directory to /home/travelflag3/.phpbrew/build/php-7.0.6/ext/pdo_sqlite
===> Phpize...
===> Configuring...
Error: Command failed: ./configure --with-php-config=/home/travelflag3/.phpbrew/php/php-7.0.6/bin/php-config >> /home/travelflag3/.phpbrew/build/php-7.0.6/ext/pdo_sqlite/build.log 2>&1 returns:
PHP Notice:  Undefined variable: configureOptions in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134

Notice: Undefined variable: configureOptions in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
PHP Warning:  join(): Invalid arguments passed in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134

Warning: join(): Invalid arguments passed in phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php on line 134
Configure options: ```

@Serginho plz open a new issue, and paste your log (/home/travelflag3/.phpbrew/build/php-7.0.6/ext/pdo_sqlite/build.log).


MenuCollectionScreen - Item search bar should be static

On the InSelectList, the item search bar shouldn't scroll so the user can search from anywhere on the list.

Fixed and also fixed modal collection screen


dua doesn't write "DeletionDate" field in .trashinfo files

Seems like dua doesn't write "DeletionDate" field in .trashinfo files. Some other tools uses this field. In my case gtrash (app for manage trashcan) shows me warnings related to files moved to trash using dua.

Thanks for letting me know!
I have created a new release with a more recent version of the trash crate. Maybe that improves the issue.
If not, please reopen the issue there as that's what dua uses to put items into the trash. Thank you.


Switch to build manylinux2014 wheels

manylinux1 reached EOL and manylinux2010 is based on CentOS 6 (EOL). See https://github.com/pypa/manylinux for the differences.
xref. https://github.com/galaxyproject/starforge-recipes/pull/46#issuecomment-494792808

Rather than put any effort into Starforge, I think we probably ought to switch to cibuildwheel. The only issue I am aware of is that cibuildwheel is mainly designed for one project per repo (for projects to build the wheels for their package to upload to PyPI) whereas that will be fairly cumbersome and unwieldy for us. I am not sure how difficult/possible it would be to make a single repo building multiple projects using cibuildwheel.

@natefoo I agree, I think we could work on the idea proposed in https://github.com/pypa/cibuildwheel/issues/597 and rework/recreate this repo as cibuildwheel recipes.


Basic tailwind integration

Adding taliwind and using it for all previous inline styles and some other fixes.
Should fix https://github.com/flathub/website/issues/300 and https://github.com/flathub/website/issues/310
Some things:

Changes paddings and font sizes slightly
Lists need to marked up (via a class) as lists, if we want bullets. (https://tailwindcss.com/docs/preflight) Not really a problem, but might be something we need to fix for release notes.
This doesn't touch colors for now
This also slightly changes how the spinner works, hopefully for the better (I still think it's to much choice)

Shadows are also slightly different

I think we want buyin from @barthalion as he basically blocked it last time.
@sorin-davidoi  would this help fix #300 ?

I think we want buyin from @barthalion as he basically blocked it last time.

I don't remember the details and I don't particularly care as long as it looks good to everyone.

Turns out I misremembered, sorry @barthalion
https://github.com/flathub/frontend/issues/3#issuecomment-946896611
Turns out I meant @bilelmoussaoui

@sorin-davidoi would this help fix https://github.com/flathub/website/issues/300 ?

I think so, as it removes all the inline styles.