text:
Express session not saving/persisting once deployed

Description of the issue
I've followed the Build a basic prototype using the Prototype Kit tutorial and everything is working as expected locally. Form data is persisted from question 1 through to the check answers page.
However, once the prototype is deployed (deployed as a node.js app to a Azure app service) the answer provided in question 1 isn't displayed on the check answers page, it seems the form data isn't being persisted and the answer is lost. Occasionally the value is persisted but a 'force refresh' and the value disappears.
One difference, not sure if it is relevant, but locally I run on: http://localhost:3000but when deployed I'm accessing via https://www..... Could there be an issue with HTTP versus HTTPS
I should say we aren't trying to use the prototype kit as a production service, just deploy to an external url to allow for user research sessions so it would be nice to keep the 'production' features like password entry and hiding of 'Manage prototype' link.
Update:
I've found that switching the NODE_ENV value to development has 'fixed' the issue and form data submitted for question 1 is shown on the check answers page.
Steps to reproduce the issue

Deploy to Azure app service, using defaults for node.js application
Add an environment variable where the name is NODE_ENV, and the value is production
Add another environment variable where the name is PASSWORD, and the value is whatever password you want
Visit url for deployed application, and complete question 1
View check answers page, answer is not displayed

Actual vs expected behaviour
Check answers page should display the answer to question 1 when deployed to Azure app service, instead the check answers page does not display the answer entered for question 1.
Environment (where applicable)
Linux

Operating system: OS X
Browser: Chrome/Edge
Browser version: 112
GOV.UK Prototype Kit version: 13.6.0

I've found that switching the NODE_ENV value  to development has 'fixed' the issue and form data submitted for question 1 is shown on the check answers page.

@moodledan do you know what command is starting the kit on Azure? It should be npm start

@joelanman Noticed there isn't a startup command specified 🤦
Have now set the startup command, npm start but doesn't seem to resolve the bug.

There isn't a great deal to the config of the app:

Rather than npm start should it be npm serve as per package.json?
E.g.
  "scripts": {
    "dev": "govuk-prototype-kit dev",
    "serve": "govuk-prototype-kit serve",
    "start": "govuk-prototype-kit start"
  },

@joelanman sorry struggling with logs at the moment, will try a little later.

@joelanman This might explain it:
2023-04-18T12:48:51.343515251Z: [ERROR]  Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.344315217Z: [ERROR]  Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.361257313Z: [ERROR]  Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.381197455Z: [ERROR]  Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.382235341Z: [ERROR]  Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.444051933Z: [INFO]  [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.456177732Z: [INFO]  [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.464225495Z: [INFO]  [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.473991399Z: [INFO]  [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'
2023-04-18T12:48:51.523111346Z: [INFO]  [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/LgGI6dYEYhZtQfYijs_reZmCm22yFZaW.json'

More investigation, seems the sessions are being created successfully on the server in /home/site/wwwroot/.tmp/sessions/ as expected. Values are being saved to the session file as JSON, as expected.
Then, at some point, the app creates a new session:

User visits url https://example.com
A cookie is created on client (url decoded cookie value = s:ZdK2k943cvxyvA8Wh7ozYkfs7jFxLrXA.mCzeqM7yqzn9F+xya9fFuHpi1qP+e1yl3B5YmSjAuSM)
A session is created on the server (ZdK2k943cvxyvA8Wh7ozYkfs7jFxLrXA.json which contains the cookie session data and matches the cookie value on the client)
User click's the 'Start' button on the start page of my prototype, user navigates to the question 1 page
The cookie previously created has changed, the cookie value is now s:1pWTaCNcEf5PSui5DyYHccOxDZj9vuK4.xkN7i2V/DqK1WAz97WDDKhvPqMeWfJmEZsxR/1zTVWY and there is a new session file created on the server
User answers question and presses continue
Check answer page loads, the answer is not displayed
Check cookie value, the cookie value has changed again: s:HyaBGTODC2kB9UQ2InxFbdXl0OGyATLO.eHHzdC++NwVyItOCI/1iFVDQqhaVXCJ5GD23zrQHwgk and there is a new session file on the server.

Seems the session is being created on each page load or refresh, so answers are saved but in a session that isn't persisted.

thanks for the detailed investigation! We'll have a look at and get back to you

@joelanman tried a different deployment setup this morning, instead of deploying from Azure DevOps Git repo I deployed directly from VSCODE locally. Previously, above, I'd setup the deployment manually through the Azure Portal and linking the deployment to an ADO project and git repo.
So far it looks like this deployment has worked and sessions are persisted, answers remembered - as per local experience. So I'm leaning towards deployment config being the issue - I just can't immediately see a difference.
I still see these errors about file/directory not open, as per the previous deployment setup so its not this causing my issues AFAIK:

2023-04-20T09:58:17.256857534Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.270857175Z Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.278977147Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.289149312Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.347800696Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.356502794Z Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.357671448Z Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.376447807Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'
2023-04-20T09:58:17.386854783Z [session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open '/home/site/wwwroot/.tmp/sessions/sVnqakoPynVTGi5aHgoDqJ0vfwe5NbZv.json'

I'm not seeing any errors in the logs relating to 'Failure to load request ...' so that could be an indicator of the root cause.
I'll cross check the 2 environments and see if I can find a difference.

@joelanman suggest we close this issue, the issue seems to be with the automated/automatic settings configured by Azure and the difference in configuring that deployment from VS Code or from the Azure Portal - Deployment Centre.
Deploying from VS Code to a new node.js application service works as expected and sessions are persisted.
Deploying from Azure via the Deployment Centre, not using a pipeline, and using the default settings Azure provides based on package.json will deploy successfully but sessions will not be persisted. The session cookie is re-created each time the user session is refreshed from the browser so session data isn't persisted.
In the logs you'll see an error similar to:
Failed to forward request to http://XXX.XXX.XXX.X:8080. Encountered a System.Net.Http.HttpRequestException exception after 51.697ms with message: An error occurred while sending the request.. Check application logs to verify the application is properly handling HTTP traffic.

Ideally I'll learn how pipelines work and follow a slightly more advanced setup to resolve this properly, but for now the manual deployment from VS Code works. I could now configure an automated deployment from Azure, and skip VS Code, as now that the app service is setup correctly the deployment from Azure works correctly.

thanks for your detailed investigation!

authors: joelanman moodledan

repo: alphagov/govuk-prototype-kit


text:
Only configure Sendfile for public asset requests from Asset Manager

Previously we were setting the X-Sendfile-Type & X-Accel-Mapping request headers in all requests proxied from Nginx to the Rails app. However, these headers only need to be set for the /media/* (Mainstream) and /government/uploads/* (Whitehall) URL paths, because these are the only routes which ever make use of the Sendfile behaviour.
In the not too distant future, we're planning to change the Rails app to proxy all these public asset requests to S3, like public Mainstream asset requests already are in production. At this point, it will be possible to remove both this new Nginx location block and the related internal location block.
My initial motivation for doing this was to solve a problem with alphagov/asset-manager#267 in which the Rails app proxies public asset requests to fake S3 URLs served by the Rails app. Having the Sendfile-related headers set for the latter requests was problematic for serving the fake S3 URLs.
Note that I have introduced a bit of duplication in the new Nginx location block (in the proxy_pass statement). I did try referencing the existing named location block @app, but I couldn't get this to work. However, given that the amount of duplication is minimal, there is already duplication like this in the Nginx config, and the location block should be going away in the not too distant future, I'm happy to leave it like this.

@chrislo:
Thanks for reviewing.

A small thing - the #267 in the PR / commit message auto-links to the wrong issue (I think it should link to alphagov/asset-manager#267) in the GH interface.

You are correct. I will correct the commit note and force-push as well as updating the PR description.

I've checked that this change has been automatically applied to integration and I checked that I can request an existing asset both served from NFS and proxied to S3:
Asset served from NFS via Nginx
deploy@integration-backend-1:/var/apps/asset-manager$ curl -s -v "https://assets-origin.integration.publishing.service.gov.uk/media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg" >/dev/null
* Hostname was NOT found in DNS cache
*   Trying 10.1.1.254...
* Connected to assets-origin.integration.publishing.service.gov.uk (10.1.1.254) port 443 (#0)
* [... SSL handshake ...]
> GET /media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg HTTP/1.1
> User-Agent: curl/7.35.0
> Host: assets-origin.integration.publishing.service.gov.uk
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx is not blacklisted
< Accept-Ranges: bytes
< Access-Control-Allow-Headers: origin, authorization
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Cache-Control: max-age=86400, public
< Connection: close
< Content-Disposition: inline; filename="120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
< Content-Length: 212880
< Content-Type: image/jpeg
< Date: Mon, 23 Oct 2017 13:41:33 GMT
< ETag: "513a0ef9-33f90"
< GOVUK-Asset-Manager-File-Store: NFS
< Last-Modified: Fri, 08 Mar 2013 16:16:57 GMT
< Server: nginx
< Strict-Transport-Security: max-age=31536000
< X-Frame-Options: DENY
<
{ [data not shown]
* Closing connection 0
* SSLv3, TLS alert, Client hello (1):
} [data not shown]

Asset proxied to S3 NFS via Nginx
deploy@integration-backend-1:/var/apps/asset-manager$ curl -s -v "https://assets-origin.integration.publishing.service.gov.uk/media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg?proxy_to_s3_via_nginx=true" >/dev/null
* Hostname was NOT found in DNS cache
*   Trying 10.1.1.254...
* Connected to assets-origin.integration.publishing.service.gov.uk (10.1.1.254) port 443 (#0)
* [... SSL handshake ...]
> GET /media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg?proxy_to_s3_via_nginx=true HTTP/1.1
> User-Agent: curl/7.35.0
> Host: assets-origin.integration.publishing.service.gov.uk
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx is not blacklisted
< Accept-Ranges: bytes
< Access-Control-Allow-Headers: origin, authorization
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Cache-Control: max-age=86400, public
< Connection: close
< Content-Disposition: inline; filename="120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
< Content-Length: 212880
< Content-Type: image/jpeg
< Date: Mon, 23 Oct 2017 13:42:36 GMT
< ETag: "513a0ef9-33f90"
< GOVUK-Asset-Manager-File-Store: S3
< Last-Modified: Fri, 08 Mar 2013 16:16:57 GMT
< Server: nginx
< Strict-Transport-Security: max-age=31536000
< X-Frame-Options: DENY
< x-amz-meta-md5-hexdigest: 1d80d9959949837e1204bf5d8730d607
<
{ [data not shown]
* Closing connection 0
* SSLv3, TLS alert, Client hello (1):
} [data not shown]

Both of these look as if they are working OK.

release_19505 (which includes this change) was deployed to staging at ~15:30 today and will've been applied by ~16:00. I made a request for an asset on staging before and after the change as follows and all appears to be well.
Before change
$ curl -s -v "https://assets-origin.staging.publishing.service.gov.uk/media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg" >/dev/null
*   Trying 195.225.216.146...
* TCP_NODELAY set
* Connected to assets-origin.staging.publishing.service.gov.uk (195.225.216.146) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.staging.publishing.service.gov.uk
* Server certificate: Gandi Standard SSL CA 2
* Server certificate: USERTrust RSA Certification Authority
> GET /media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg HTTP/1.1
> Host: assets-origin.staging.publishing.service.gov.uk
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Access-Control-Allow-Headers: origin, authorization
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Cache-Control: max-age=86400, public
< Connection: close
< Content-Disposition: inline; filename="120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
< Content-Length: 212880
< Content-Type: image/jpeg
< Date: Mon, 23 Oct 2017 14:18:33 GMT
< ETag: "513a0ef9-33f90"
< GOVUK-Asset-Manager-File-Store: NFS
< Last-Modified: Fri, 08 Mar 2013 16:16:57 GMT
< Server: nginx
< Strict-Transport-Security: max-age=31536000
< X-Frame-Options: DENY
<
{ [15793 bytes data]
* Closing connection 0

After change
$ curl -s -v "https://assets-origin.staging.publishing.service.gov.uk/media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg" >/dev/null
*   Trying 195.225.216.146...
* TCP_NODELAY set
* Connected to assets-origin.staging.publishing.service.gov.uk (195.225.216.146) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.staging.publishing.service.gov.uk
* Server certificate: Gandi Standard SSL CA 2
* Server certificate: USERTrust RSA Certification Authority
> GET /media/513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg HTTP/1.1
> Host: assets-origin.staging.publishing.service.gov.uk
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Access-Control-Allow-Headers: origin, authorization
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Cache-Control: max-age=86400, public
< Connection: close
< Content-Disposition: inline; filename="120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
< Content-Length: 212880
< Content-Type: image/jpeg
< Date: Mon, 23 Oct 2017 15:08:29 GMT
< ETag: "513a0ef9-33f90"
< GOVUK-Asset-Manager-File-Store: NFS
< Last-Modified: Fri, 08 Mar 2013 16:16:57 GMT
< Server: nginx
< Strict-Transport-Security: max-age=31536000
< X-Frame-Options: DENY
<
{ [15793 bytes data]
* Closing connection 0

The tests on staging are the most useful checks that nothing has gone awry, because I don't think there's currently a way to make a public request for an asset on production and have it served from NFS via Nginx, because the app is configured to proxy all Mainstream assets to S3 and there are no existing Whitehall assets (and I don't really want to create a dummy one just for testing).

source: gharchive/pull-request

repo: alphagov/govuk-puppet

license: mit

license_type: permissive

license_source: bigquery


text:
Clean up the Makefile

Using Godep requires that we build the app from within a correctly structured workspace.  This is primarily managed by the CI Jenkins job, and this change gives the option for placing the built binary somewhere specific.

:+1:

authors: gpeng timblair


text:
Inline SectionFactory into Section

This continues the process of removing unnecessary levels of indirection in the code.
The new Section.build method replaces SectionFactory#call.

@chrisroos: Thanks.
Merging.

repo: alphagov/manuals-publisher


text:
Downgrade error logs for all 400 responses

This tidies up the existing error handlers and stops us
getting error logs for unactionable scenarios.
Please review commit by commit.

I think your fourth commit is a contender to be fixed up in to the third commit

Good point. I've taken on board your comment about the strategy here and rewritten the commit message to explain it.

repo: alphagov/notifications-template-preview

license: MIT

license_source: github-api


text:
[#114308641] Insert pre-generated/purchased public certificates

#114308641 Insert public-facing certs into Pipeline
What
We need to have some way to inject the certs and corresponding private keys that tenants and the public will use into an environment.
These certs, for the apps wildcard and the CF endpoints that tenants use, will be signed by a CA, so the process looks a bit different in comparison to the ones generated inside the pipeline. Outside the pipeline we'll be creating a key, generating a CSR and getting the signed cert outside our pipeline.
The operator deploying the environment might not have access and permissions to read the keys, so we decided to split the process to upload the certificates to AWS.
Dependencies
After merging this PR, the environments with specific certificates require some manual intervention to do the initial manual upload of the certificates.
Note that after merging the PR, we must run a manual intervention at least once to upload the certificates in CI, stage and prod. We must first answer these questions:

which certificates do we use for the time being, until we get the final certificates? (We can use the same ones that are now, the self-signed)
which password store do we store the password in?

How to review
The PR must be reviewed in this context:

I want to keep uploading self-signed generated certificates in development environments.
I want to be able to manually upload pregenerated certificates for non development environments (prod/stage)
I want to consume the purchased certificate from a password store like paas-pass (Note: The certificate store might change in the future)

How to test this:

Note: For testing it is not necessary to deploy all cloudfoundry, it is enough only run up to cf-terraform and check that the certificates have been generated properly.

To test:

Deploy your environment as usual, it should work (you can consider OK if it gets up to cf-deploy task)

Download the router certificates and store them in a paas-pass for testing:

DEPLOY_ENV=...
AWS_ACCOUNT=dev
aws s3 cp s3://${DEPLOY_ENV}-state/cf-certs.tar.gz /tmp --region eu-west-1
mkdir /tmp/cf-certs
tar -xvzf /tmp/cf-certs.tar.gz -C /tmp/cf-certs
paas-pass insert -m certs/${AWS_ACCOUNT}/${DEPLOY_ENV}/router_external.key < /tmp/cf-certs/router_external.key
paas-pass insert -m certs/${AWS_ACCOUNT}/${DEPLOY_ENV}/router_external.crt < /tmp/cf-certs/router_external.crt
 3. Try to upload these certificates manually:

     ```
make dev manually_upload_certs CERT_PASSWORD_STORE_DIR=~/.paas-pass

Run the deployment but setting SKIP_UPLOAD_GENERATED_CERTS=true:

SKIP_UPLOAD_GENERATED_CERTS=true BRANCH=$(git rev-parse --abbrev-ref HEAD) make dev pipelines DEPLOY_ENV=...
 5. Finally: Delete the deployment using `destroy-cloudfoundry`. It should delete the certificates.

 6. Follow the instructions in  `doc/non_dev_deployments.md` to upload the certs manually and rerun the deployment (with `SKIP_UPLOAD_GENERATED_CERTS=true` as mention before).

## Who can review

Anyone but @keymon or @mtekel

First the PR is marked as WIP :stuck_out_tongue:

Could you describe in the PR description or title why it's marked as "WIP"? Is it for people to start reviewing and comment on, but not merge? Or is it just for you/your pair's reference? If the latter, it might be best to close it until it's ready.

First the PR is marked as WIP :stuck_out_tongue:

Could you describe in the PR description or title why it's marked as "WIP"? Is it for people to start reviewing and comment on, but not merge? Or is it just for you/your pair's reference? If the latter, it might be best to close it until it's ready.

Sorry, my comment was more a joke than actually complaining about the comments from @alext. His comments were welcome! :smile:
I opened as WIP because:

In pair programming, both can update the PR message as we work, and we can prepare it meanwhile we finish testing.
We can get early comments from other coworkers
**If you close it, any git push -f will invalidate the PR and you need to open it again.

Other projects like terraform use and describe the "WIP" PR idea:

You are welcome to submit your pull request for commentary or review before it is fully completed. Please prefix the title of your pull request with "[WIP]" to indicate this. It's also a good idea to include specific questions or items you'd like feedback on.

I propose follow a similar schema.

@dcarley @alext do you want to keep the default password store pointing to ~/.paas-pass-high or do you want to not have a default and force the user specify the path?
See 4c21cd1

Another thing I like about WIP pull requests is the pattern described here where you can mute a conversation while in wip status, but still get notifications when the main PR comes in (assuming you update the PR title...)

I'm not sure whether this is in scope for this PR, but I'm not sure how this is going to work with the 2 different domain names that the router handles (the system and the apps one). While we're using self-signed certs, we have both wildcard domains in the cert. I'm not sure if it's easy/possible to buy a real cert with multiple wildcard domains in it.

I'm not sure whether this is in scope for this PR, but I'm not sure how this is going to work with the 2 different domain names that the router handles (the system and the apps one). While we're using self-signed certs, we have both wildcard domains in the cert. I'm not sure if it's easy/possible to buy a real cert with multiple wildcard domains in it.

I would say that is out of the scope for this story.

I propose follow a similar schema.

I'm :+1: for that. I asked because I want us to be explicit about what we expect from reviewers. I like the point in that quote about:

It's also a good idea to include specific questions or items you'd like feedback on.

We should only create "WIP" PRs if we are doing that and the thing that Tim linked to about notifications. Otherwise we're going to become blind to PRs that need attention and an assigned reviewer vs. those that don't.

I had to upgrade my Terraform before uploading the certificates would work, but after that, everything worked as expected... Merging.

I applied the manually_upload_certs with the self generate certificates in ci, stage and prod.

authors: alext dcarley jimconner keymon timmow

repo: alphagov/paas-cf


text:
[#117909253] Add shellcheck binary to the repo.

What
Installing shellcheck from debian sid is no longer working, and
resulting in dependency errors (eg https://travis-ci.org/alphagov/paas-cf/builds/124150110).
This adds a shellcheck linux binary to the repo, and updates Travis to
use it. This binary is extracted from the ubuntu wily package version 0.3.7-1.
How to review
Verify that the Travis build now passes
Who can review
Anyone but myself.

I think it is better to put it as a release as a temporary solution, because if not it will be in the git history, increasing the size of the project.

I've updated this to download from a Github release as suggested.

Is it worth making sure this is cached between builds?

Is it worth making sure this is cached between builds?

I don't think so as part of this PR. This is about getting the builds unblocked again, and I don't want to distract from that.  We're already downloading terraform and spruce each time without caching them.

Works and LGTM... merging.

authors: alext keymon timmow


text:
[#131377245] Add consul checks

What
Story: Check Consul cluster and agents
This covers the most critical:

Consul process
Consul server

It depends on PR https://github.com/alphagov/paas-datadog-for-cloudfoundry-boshrelease/pull/5
How to review

Deploy with ENABLE_DATADOG=true
Verify the Consul monitors have been created in Datadog
Connect to a Consul host, stop or kill Consul processes, stop datadog agent... and check the monitors are failing

How to merge

When ready, merge PR https://github.com/alphagov/paas-datadog-for-cloudfoundry-boshrelease/pull/5
Create and push tag 0.0.5 on paas-datadog-for-cloudfoundry-boshrelease master
Remove commit 2a99f98d36b82ac4835cc7ed0ac1e8cdc486d6cb in this branch
Merge this PR

Who can review
Not @combor or @paroxp

For the record, we noticed in review that the monitored was not working for brain/0.
We'll double check the deployment of the plugin config to make sure it arrives on the correct vms before rereviewing. Otherwise all works fine.

As far as I can see database, brain, cell, cc_bridge, route_emitter, access, nozzle have consul_agent but not datadog-consul. Can we say explicitly which should or shouldn't be monitored?

It seems like we run consul everywhere now (either agent or server), so why not use runtime config BOSH facility to add the datadog-consul job to all VMs like we use it to deploy metron agent?

Be aware that we will soon stop deploying metron_agent and consul_agent
everywhere and start using syslog-release instead.
On 19 October 2016 at 12:33, mtekel notifications@github.com wrote:

It seems like we run consul everywhere now (either agent or server), so
why not use runtime config BOSH facility to add the datadog-consul job to
all VMs like we use it to deploy metron agent?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/alphagov/paas-cf/pull/548#issuecomment-254787117, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AARF4F1Bwarm35rFiLkSR56vIcjuuQ-Qks5q1f_6gaJpZM4KXMSm
.

--
Regards
Hector Rivas | GDS / Multi-Cloud PaaS

Be aware that we will soon stop deploying metron_agent and consul_agent
everywhere and start using syslog-release instead.

Yes, that's the reason. We would like to be flexible when it comest to which host we deploy consul check to.

ready to merge, will do so tomorrow

authors: benhyland combor keymon mtekel paroxp


text:
DO NOT MERGE Remove feature flags

As we go into the post-election period we want to start with new style Policies. This commit removes all the code for the FeatureFlag and drop the table from the DB. Ticket.
DO NOT MERGE (especially you @elliotcm)

:(
:+1:

Closing until this can be merged.

So this will raise a whole heap of exceptions because it's dropping the feature_flags table - the migration will be run before the app code is reloaded, meaning that until the unicorn processes restart, there will be a whole heap of ActiveRecord exceptions because of the missing table. The table should not be dropped as part of this migration. It might be worth keeping the model and table around and just removing the flag checks themselves. That way no exceptions will be raised and we'll still have the FeatureFlag model for use in other future features.

authors: elliotcm tekin tommyp

repo: alphagov/policy-publisher


text:
Delete attachments

Functionality added to make use of the new delete asset endpoint, depends on https://github.com/alphagov/gds-api-adapters/pull/588
it currently looks like this:

this pr still needs an update for the gemfile, once the new version of gds-api-adaptors is live (version 36.2.0).
note: from the work on this story, it seems that attachments policy permissions aren't being used anywhere in the application. I'm not entirely sure why they're in the app at all.
Trello card

This looks good, still pointing at the older gds-api-adapters gem version hence the CI failure

authors: Seraphiana steventux

repo: alphagov/specialist-publisher-rebuild


text:
Speed up publishing

The intent of this PR is to get a big enough speed boost during the normal publishing flow to allow us to send to the draft publishing API and other services on every save instead of only on publish, and therefore allow easy previewing.
Changes
Only call the organisation API once when publishing.
We currently call the organisation API for the
manual and each section, but the organisation slug
used is the one from the manual, thus the response
is guaranteed to always be the same.
Avoid sending unchanged manual sections to publishing API.
This avoids a bunch of govspeak rendering and time
waiting on the API to respond.
Speed gains
The current time taken to publish a manual is around 1.5s per section, give or take.  This leads to documents like the open document format manual taking 32 seconds to publish (measured on the preview environment).
After this change (and after the first time each document is published) the time taken to publish any document is around 3 seconds plus 1 second per changed section.
https://trello.com/c/yP4BSFf3/284-speed-up-publishing-of-manuals

Looks good. I think we need a migration to set the exported_at date on all published manuals, so that the first update doesn't incur the cost of exporting everything.

We can do, though it would be no worse than it already is.

Well, I was talking about the impact when we enable exporting to content-preview on save. But fair enough, we can do the migration when we make that change.

With manuals we can just send the relevant bit of the manual to the API since the save button is either on the manual cover page or on each individual section.

authors: danielroseman elliotcm

repo: alphagov/specialist-publisher


text:
Bump govuk_publishing_components

Trello: https://trello.com/c/pATsfsuD/524-convert-finder-frontend-module-initialisers-in-livesearchjs-to-not-use-jquery
I've expedited this release because https://github.com/alphagov/finder-frontend/pull/2617 requires this change and I'd forgotten static needs to be also updated.

Actually, I got this wrong. This is needed to be expedited after all, so I'll close it and let dependabot do it's thing.

repo: alphagov/static


text:
Set path column to not null

Migration to ensure no more path nil values make it into the database
following bugfix #37.
cc @benilovj
Taiga

:+1:

authors: benilovj binaryberry

repo: alphagov/support-api


text:
Add subtype tracking to design system pages

Trello ticket link
What
Add document subtype tracking to pages which have been moved to the design system. Tracking is added to publications, news articles and speeches on the following pages:

Edit withdrawal message
Confirm unwithdraw
Bulk uploads
Add HTML attachment
Add file attachment
Add external attachment
Confirm unpublish
Confirm destroy
Confirm force publish

Why
This was requested by the performance analysis team to enable a more granular view of data associated with publications, news articles and speeches.
⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠

Should this be tested, seeing as there is some logic being added to the views?

Should I separate out some of the code into a partial (e.g. views/admin/tracking/_subtype_tracking.erb.html) to avoid reusing it?

Should I separate out some of the code into a partial (e.g. views/admin/tracking/_subtype_tracking.erb.html) to avoid reusing it?

I think that's a good idea! I think that you could just render the same template everywhere without having to remove the speech clause for attachment pages

@dnkrj I've refactored this if you want to take another look

authors: dnkrj jyoung-gds

repo: alphagov/whitehall


text:
stop application on focus lost stops i3status process too

I have following line
exec _i3-stop-application-on-unfocus.py "Pale moon" palemoon
works good. But sometimes it sends SIGSTOP signal to the processes, that have i3status in their name too.
So the system turns completely unusable out. This happens ~1-2 times/day. After changing to a terminal console and sending SIGCONT signals to the stopped processes, all works fine.

So. I think to find how to trigger the bug:

run the browser
run the script
run floating terminal window
focu on this floating terminal window
make it fullscreen with a shortcut
see that i3status was SIGSTOPped

So. I think to find how to trigger the bug:

run the browser
run the script
run floating terminal window
focu on this floating terminal window
make it fullscreen with a shortcut
see that i3status was SIGSTOPped

Oh. It seems to be deeply: https://github.com/i3/i3/issues/2280

Oh. It seems to be deeply: https://github.com/i3/i3/issues/2280

source: gharchive/issue


text:
Bash install script

This script does all the headless browser installing for you instead of having to run each command manually.
(If you remember, this was the part of the night where I was saying this was very "programmery")

Looks good to me.

repo: altereagle/blockforge


text:
Move LatLong and Ordinal logical type validation logic to LogicalType…

Pull Request Description:
Move LatLong and Ordinal logical type validation logic to LogicalType.validate methods #1305

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

authors: CLAassistant mingdavidqi

repo: alteryx/woodwork


text:
🛑 New1 is down

In c803744, New1 (https://google.com.ar) was down:

HTTP code: 502
Response time: 145 ms

Resolved: New1 is back up in 4669a77 after 31 minutes.

repo: alvaloper/monitoring


text:
Save bundle files with the .cjs extension

This makes sure the bundle files are interpreted as CommonJS and not ESM.
See error:
Error [ERR_REQUIRE_ESM***: require() of ES Module /app/assets/node-network-stubbing.bundle.js from /app/node_modules/@alwaysmeticulous/replayer/dist/replayer.js not supported.
node-network-stubbing.bundle.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead rename node-network-stubbing.bundle.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in /app/package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

Note: this may break for client with existing assets, but only until new bundle versions are published.

repo: alwaysmeticulous/meticulous-sdk

license: ISC


text:
🛑 zhibao.itove.com is down

In 188a76f, zhibao.itove.com (https://zhibao.itove.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: zhibao.itove.com is back up in 1630ea1.

repo: alzee/up


text:
🛑 Amagno API Documentation is down

In 423ce13, Amagno API Documentation (https://amagno.me/api/v2) was down:

HTTP code: 500
Response time: 1106 ms

Resolved: Amagno API Documentation is back up in bc5d217.

repo: amagno-io/upptime


text:
Incident details page with evidence?

As an enhanced version, maybe details view can be provided for each incident based on API data.
Sample response with evidence - https://api.846policebrutality.com/api/incidents/5e4b6c50-abf9-11ea-9699-279bedb1b82e?include=evidence
{
   "data":[
      {
         "id":"5e4b6c50-abf9-11ea-9699-279bedb1b82e",
         "pb_id":"pa-pittsburgh-2",
         "state":"Pennsylvania",
         "city":"Pittsburgh",
         "date":"2020-06-01T00:00:00.000000Z",
         "title":"Police fire tear gas and rubber bullets on peaceful assembly",
         "description":null,
         "links":[
            "https:\/\/www.reddit.com\/r\/pittsburgh\/comments\/guzshz\/police_declaring_an_unlawful_assembly_against_a\/",
            "https:\/\/www.facebook.com\/BenjaminKFerris\/posts\/3091613010894973",
            "https:\/\/twitter.com\/gautamyadav818\/status\/1267606317893550080"
         ],
         "data":null,
         "geocoding":{
            "lat":"40.4406248",
            "long":"-79.9958864"
         },
         "evidence":[
            {
               "id":"5e4b8bf0-abf9-11ea-820b-a915e35341e1",
               "incident_id":"5e4b6c50-abf9-11ea-9699-279bedb1b82e",
               "url":"https:\/\/www.reddit.com\/r\/pittsburgh\/comments\/guzshz\/police_declaring_an_unlawful_assembly_against_a\/",
               "video_status":"ok",
               "created_at":"2020-06-11T15:36:50.000000Z",
               "updated_at":"2020-06-11T15:38:00.000000Z",
               "video":[
                  {
                     "id":"1861a870-a873-11ea-9be8-7d2331b735fa",
                     "evidence_url":"https:\/\/www.reddit.com\/r\/pittsburgh\/comments\/guzshz\/police_declaring_an_unlawful_assembly_against_a\/",
                     "title":"Police declaring an unlawful assembly against a peaceful protest. Escalating the situation for no reason. From today",
                     "description":null,
                     "site":"Reddit",
                     "url":"https:\/\/www.reddit.com\/r\/pittsburgh\/comments\/guzshz\/police_declaring_an_unlawful_assembly_against_a\/",
                     "duration":"0.00",
                     "tags":[

                     ],
                     "thumbnail":null,
                     "streams":[
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_1080",
                           "format":"dash-VIDEO-1 - 608x1080",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d4028",
                           "audio_codec":"none",
                           "height":1080,
                           "width":608,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-1",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_720",
                           "format":"dash-VIDEO-2 - 404x720",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d401f",
                           "audio_codec":"none",
                           "height":720,
                           "width":404,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-2",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_480",
                           "format":"dash-VIDEO-3 - 270x480",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d401f",
                           "audio_codec":"none",
                           "height":480,
                           "width":270,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-3",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_360",
                           "format":"dash-VIDEO-4 - 202x360",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d401e",
                           "audio_codec":"none",
                           "height":360,
                           "width":202,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-4",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_240",
                           "format":"dash-VIDEO-5 - 134x240",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d401e",
                           "audio_codec":"none",
                           "height":240,
                           "width":134,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-5",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/DASH_96",
                           "format":"dash-VIDEO-6 - 54x96",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4d400d",
                           "audio_codec":"none",
                           "height":96,
                           "width":54,
                           "fps":30,
                           "fmt_id":"dash-VIDEO-6",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/v.redd.it\/udseo7e74f251\/audio",
                           "format":"dash-AUDIO-1 - audio only",
                           "format_note":"audio only, no video",
                           "extension":"m4a",
                           "video_codec":"none",
                           "audio_codec":"mp4a.40.2",
                           "height":null,
                           "width":null,
                           "fps":null,
                           "fmt_id":"dash-AUDIO-1",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":false,
                           "is_hd":false
                        }
                     ],
                     "created_at":"2020-06-07T03:58:07.000000Z",
                     "updated_at":"2020-06-07T03:58:07.000000Z"
                  }
               ]
            },
            {
               "id":"5e4baab0-abf9-11ea-89ca-b52ef1400108",
               "incident_id":"5e4b6c50-abf9-11ea-9699-279bedb1b82e",
               "url":"https:\/\/www.facebook.com\/BenjaminKFerris\/posts\/3091613010894973",
               "video_status":"ok",
               "created_at":"2020-06-11T15:36:50.000000Z",
               "updated_at":"2020-06-11T15:38:00.000000Z",
               "video":[
                  {
                     "id":"1a19f1b0-a873-11ea-b27a-d992aadca1f8",
                     "evidence_url":"https:\/\/www.facebook.com\/BenjaminKFerris\/posts\/3091613010894973",
                     "title":"This is not a riot.",
                     "description":null,
                     "site":"Facebook",
                     "url":"https:\/\/www.facebook.com\/BenjaminKFerris\/posts\/3091613010894973",
                     "duration":"0.00",
                     "tags":[

                     ],
                     "thumbnail":"https:\/\/scontent-dus1-1.xx.fbcdn.net\/v\/t15.5256-10\/100802547_3091613724228235_1198368705344438272_n.jpg?_nc_cat=111&_nc_sid=f2c4d5&_nc_ohc=rzvyI4mdQoAAX9gBx_a&_nc_ht=scontent-dus1-1.xx&oh=51e6bec27d1fa2a699a208e4bdff6e84&oe=5F009910",
                     "streams":[
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t42.9040-2\/101682724_617705055762700_6686501323745001472_n.mp4?_nc_cat=103&_nc_sid=985c63&efg=eyJybHIiOjk3MywicmxhIjo1MTIsInZlbmNvZGVfdGFnIjoic3ZlX3NkIn0%3D&_nc_ohc=5_UYJLeuT_sAX_Jb3uL&rl=973&vabr=541&_nc_ht=video-dus1-1.xx&oh=bfc5164e8f18a986c53bba2fc7b7ed4c&oe=5EDC856C",
                           "format":"dash_sd_src - unknown",
                           "format_note":"",
                           "extension":"mp4",
                           "fmt_id":"dash_sd_src",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t42.9040-2\/101682724_617705055762700_6686501323745001472_n.mp4?_nc_cat=103&_nc_sid=985c63&efg=eyJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&_nc_ohc=5_UYJLeuT_sAX_Jb3uL&_nc_ht=video-dus1-1.xx&oh=bfc5164e8f18a986c53bba2fc7b7ed4c&oe=5EDC856C",
                           "format":"dash_sd_src_no_ratelimit - unknown",
                           "format_note":"",
                           "extension":"mp4",
                           "fmt_id":"dash_sd_src_no_ratelimit",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.24130-2\/10000000_3498986686796581_8918889357952987812_n.mp4?_nc_cat=100&_nc_sid=985c63&efg=eyJ2ZW5jb2RlX3RhZyI6Im9lcF9oZCJ9&_nc_ohc=1Ko0BH3HEKwAX9hL0oI&_nc_ht=video-dus1-1.xx&oh=b1d6ca78d4686cf1079cba44d7590f60&oe=5F006609",
                           "format":"dash_hd_src - unknown",
                           "format_note":"",
                           "extension":"mp4",
                           "fmt_id":"dash_hd_src",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.25447-2\/10000000_3129018620521801_2923794735394972715_n.mp4?_nc_cat=109&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2hxMl9mcmFnXzJfdmlkZW8ifQ==&_nc_ohc=8cZTCWLFMr0AX-PGusR&_nc_ht=video-dus1-1.xx&oh=0432d3172765fbe763f2268aae3e3623&oe=5F01BACD",
                           "format":"v - 1280x720",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4D401F",
                           "audio_codec":"none",
                           "height":720,
                           "width":1280,
                           "fps":null,
                           "fmt_id":"873736379797897v",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.25447-2\/10000000_149438613305597_9068834334226225958_n.mp4?_nc_cat=100&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2hxNF9mcmFnXzJfdmlkZW8ifQ==&_nc_ohc=HWRf__RjEQ4AX8KL_qC&_nc_ht=video-dus1-1.xx&oh=5b077c044ddba587512df3c328d6c203&oe=5F012E86",
                           "format":"v - 852x480",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4D401F",
                           "audio_codec":"none",
                           "height":480,
                           "width":852,
                           "fps":null,
                           "fmt_id":"1713731935449963v",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.25447-2\/100998527_112307810332082_6260778437459121279_n.mp4?_nc_cat=101&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2hxMV9mcmFnXzJfdmlkZW8ifQ==&_nc_ohc=Q8DzqxRTXV8AX_XsuS2&_nc_ht=video-dus1-1.xx&oh=2c14028d990996ecfd099d5c39e69b6c&oe=5F01387C",
                           "format":"v - 640x360",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4D401E",
                           "audio_codec":"none",
                           "height":360,
                           "width":640,
                           "fps":null,
                           "fmt_id":"1704340183049691v",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.25447-2\/100409710_590959094859220_1628372651185974532_n.mp4?_nc_cat=103&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2xxMV9mcmFnXzJfdmlkZW8ifQ==&_nc_ohc=zBPsMD-3I60AX8sHqUq&_nc_ht=video-dus1-1.xx&oh=97f75d0fd3932c5e5f3cbe87cccda518&oe=5F033B56",
                           "format":"v - 426x240",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4D401E",
                           "audio_codec":"none",
                           "height":240,
                           "width":426,
                           "fps":null,
                           "fmt_id":"284927682661977v",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t39.25447-2\/100442904_2318252338477875_1194406806440393725_n.mp4?_nc_cat=103&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfb2VwX2xxMl9mcmFnXzJfdmlkZW8ifQ==&_nc_ohc=PqpkgzmmKbUAX8isEbQ&_nc_ht=video-dus1-1.xx&oh=c6ad330e32e3a0ff21133a09759ce0ad&oe=5F01671A",
                           "format":"v - 256x144",
                           "format_note":"video only, no audio",
                           "extension":"mp4",
                           "video_codec":"avc1.4D401E",
                           "audio_codec":"none",
                           "height":144,
                           "width":256,
                           "fps":null,
                           "fmt_id":"183260119684202v",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":false,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video-dus1-1.xx.fbcdn.net\/v\/t42.1790-2\/102829066_256888012051362_8010641321649766400_n.mp4?_nc_cat=111&_nc_sid=5aebc0&efg=eyJ2ZW5jb2RlX3RhZyI6ImRhc2hfdjRhdWRpb2ZvcnNvdXJjZXBpcGVsaW5lXzEyOF9jcmZfMjNfbWFpbl8zLjBfZnJhZ18yX2F1ZGlvIn0=&_nc_ohc=gwby5A78Ei0AX9hlt1b&_nc_ht=video-dus1-1.xx&oh=fc95d8e7a335760ee6ba5dcfe5aefd2e&oe=5EDC8EA4",
                           "format":"a - audio only",
                           "format_note":"audio only, no video",
                           "extension":"m4a",
                           "video_codec":"none",
                           "audio_codec":"mp4a.40.5",
                           "height":null,
                           "width":null,
                           "fps":null,
                           "fmt_id":"256888005384696a",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":false,
                           "is_hd":false
                        }
                     ],
                     "created_at":"2020-06-07T03:58:10.000000Z",
                     "updated_at":"2020-06-07T03:58:10.000000Z"
                  }
               ]
            },
            {
               "id":"5e4bc6a0-abf9-11ea-957f-8d5b5f6e1619",
               "incident_id":"5e4b6c50-abf9-11ea-9699-279bedb1b82e",
               "url":"https:\/\/twitter.com\/gautamyadav818\/status\/1267606317893550080",
               "video_status":"ok",
               "created_at":"2020-06-11T15:36:50.000000Z",
               "updated_at":"2020-06-11T15:38:00.000000Z",
               "video":[
                  {
                     "id":"1b7ddd00-a873-11ea-991e-f12458a61b73",
                     "evidence_url":"https:\/\/twitter.com\/gautamyadav818\/status\/1267606317893550080",
                     "title":"Gautam Yadav? - Protestors were chanting when the police came and started throwing tear gas. Not sure what made them do that. East Liberty #PittsburghProtest.",
                     "description":"Protestors were chanting when the police came and started throwing tear gas. Not sure what made them do that. East Liberty #PittsburghProtest. https:\/\/t.co\/qmSxYdV9ep",
                     "site":"Twitter",
                     "url":"https:\/\/twitter.com\/gautamyadav818\/status\/1267606317893550080",
                     "duration":"108.37",
                     "tags":[
                        "PittsburghProtest"
                     ],
                     "thumbnail":"https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1267606125001793546\/pu\/img\/rrN59ShEKIsdHR6L.jpg?name=orig",
                     "streams":[
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1267606125001793546\/pu\/vid\/960x544\/286k_WUhDJFWJ-O1.mp4?tag=10",
                           "format":"http-2176 - 960x544",
                           "format_note":"",
                           "extension":"mp4",
                           "height":544,
                           "width":960,
                           "fmt_id":"http-2176",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1267606125001793546\/pu\/vid\/634x360\/KhqdGYs6baUOo92J.mp4?tag=10",
                           "format":"http-832 - 634x360",
                           "format_note":"",
                           "extension":"mp4",
                           "height":360,
                           "width":634,
                           "fmt_id":"http-832",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1267606125001793546\/pu\/vid\/476x270\/ToJ49gJwcXDycXTC.mp4?tag=10",
                           "format":"http-256 - 476x270",
                           "format_note":"",
                           "extension":"mp4",
                           "height":270,
                           "width":476,
                           "fmt_id":"http-256",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        }
                     ],
                     "created_at":"2020-06-07T03:58:12.000000Z",
                     "updated_at":"2020-06-07T03:58:12.000000Z"
                  }
               ]
            }
         ]
      }
   ],
   "meta":{
      "about":[
         "8 minutes and 46 seconds is the length of time associated with the killing of George Floyd,",
         "who died in police custody after police officer Derek Chauvin knelt on his neck for roughly eight minutes.",
         "This repo provides and API and archives acts of assault by public servants to American Citizens during non-violent acts of protest."
      ],
      "more":[
         "\u2022 This project does not condone acts aggression of any parties",
         "\u2022 This project is meant to enable others to share their voice and stand-up against acts of violence by public servants",
         "\u2022 This project intends to fight censorship by encouraging all to get involved and mirror this data, download the media, and fight for progress",
         "\u2022 This project is not anti-police",
         "\u2022 This project is a public work dedicated to all of humanity, regardless of race, creed, or borders."
      ],
      "get_involved":{
         "reddit":"https:\/\/www.reddit.com\/r\/2020PoliceBrutality\/",
         "collaboration":"https:\/\/github.com\/2020PB\/police-brutality"
      }
   }
}

It looks like the video URLs are not that usable as the captured tokens are expired. (For example facebook URLs)

Closing as this is not that beneficial based on reason above.


text:
发现添加了缓存文件再打开游戏的设置会出现错误...

发现添加了缓存文件再打开游戏的设置会出现错误...
在此之前没添加缓存文件的时候没这样的事..
我把log发出来...
Unhandled Exception:
System.NotSupportedException: FontFamilyConverter cannot convert from System.String.
at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward)
at MS.Internal.Data.TargetDefaultValueConverter.Convert(Object o, Type type, Object parameter, CultureInfo culture)
at MS.Internal.Data.DynamicValueConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
at System.Windows.Controls.Primitives.Selector.VerifyEqual(Object knownValue, Type knownType, Object itemValue, DynamicValueConverter converter)
at System.Windows.Controls.Primitives.Selector.FindItemWithValue(Object value, Int32& index)
at System.Windows.Controls.Primitives.Selector.SelectItemWithValue(Object value)
at System.Windows.Controls.Primitives.Selector.OnItemsChanged(NotifyCollectionChangedEventArgs e)
at System.Windows.Controls.ItemsControl.OnItemCollectionChanged2(Object sender, NotifyCollectionChangedEventArgs e)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
at System.Windows.Controls.ItemCollection.OnViewCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
at System.Windows.WeakEventManager.ListenerList1.DeliverEvent(Object sender, EventArgs e, Type managerType)    at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)    at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)    at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)    at System.Windows.Data.ListCollectionView.RefreshOverride()    at System.Windows.Data.CollectionView.RefreshInternal()    at System.Windows.Data.CollectionView.Refresh()    at System.Windows.Data.CollectionView.EndDefer()    at System.Windows.Data.CollectionView.DeferHelper.Dispose()    at System.Windows.Controls.ItemCollection.SetCollectionView(CollectionView view)    at System.Windows.Controls.ItemCollection.SetItemsSource(IEnumerable value, Func2 GetSourceItem)
at System.Windows.Controls.ItemsControl.OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.Activate(Object item)
at System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt attempt)
at System.Windows.Data.BindingExpression.MS.Internal.Data.IDataBindEngineClient.AttachToContext(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Task.Run(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Run(Object arg)
at MS.Internal.Data.DataBindEngine.OnLayoutUpdated(Object sender, EventArgs e)
at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.Resize(ICompositionTarget resizedCompositionTarget)
at System.Windows.Interop.HwndTarget.OnResize()
at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

74945cf59b0e6cfbad6d0d75ef85bbb1e694ef36 已修复了这个 bug。再搞定一些东西就会放新版

authors: AkizoraMineko KodamaSakuno

repo: amatukaze/IntelligentNavalGun


text:
Automatically upconvert JS values when adding to DOM collections

When setting a field value in a Struct or inserting a value into a List or Sexpression, the API allows any JS value to be passed in. This means I can have a plain JS number in my Struct instead of a dom.Integer, for example.
We should either:

(Preferably) automatically upconvert JS values to Ion values when they're added to the DOM.
Throw an exception if the value being passed in isn't already a dom.Value subclass.

Doing the first option makes for a nicer dev experience:
let ionData = "{foo: 1, bar: 2}";
let myStruct = ion.load(ionData);

// === Setting a field on the `Struct` ===
// Current code:
myStruct["baz"] = ion.dom.Value.from(3);

// Code if we implement #1:
myStruct["baz"] = 3; // upconversion performed automatically

I think the code would look something like this:
if(!jsValue instanceOf dom.Value) {
   jsValue = dom.Value.from(jsValue);
}

and would need to be added to the set behavior for Structs . I believe doing this for the Sequence types would require adding a Proxy to the implementation to intercept/modify the [] behavior.

Fixed with #749

authors: desaikd zslayton

repo: amazon-ion/ion-js


text:
jiangying-AlibabaCloud-final

For final work!

LGTM,pls update the config file to add your work to the side bar.

LGTM,pls update the config file to add your work to the side bar.

ok,i'll figure it out how later

repo: amber-moe/technical-writing-assignments


text:
Add pipeline element that can send notifications about new available samples to interested parties. For example:

[ ] notify web app that new samples are available to show to users.
[ ] notify email alerting handler to process and forward image to user

Related resources:
https://www.pushpro.io/blog/pwa-push-notifications-for-progressive-web-apps
https://platform.ifttt.com/docs#3-describe-your-queries-triggers-and-actions

@muka posted a few relevant resources above as I'm digging deeper into the notifications feature design.
Current thinking is to introduce a trigger_notification parameter to the save_detections pipeline element. It will have three possible values: always, positive_only, negative_only. Meaning that a notification will be trigger every time a detection event is saved, or only when a positive event is detected or only when a negative is detected (e.g. when a positive detection is no longer ongoing).
I also thought about having a separate notification element, but since  a notification should be just the minimum information without revealing any privacy details, the user will have to be able to pull details from the edge device, which requires the saved event data.
Thoughts?

@muka  The shoutrrr project looks relevant. From the watchdog author. https://github.com/containrrr/shoutrrr

Great finding! Will look into those libraries. Planning to work over it on the next days

authors: ivelin muka

repo: ambianic/ambianic-edge


text:
AMB82-MINI compilation error.

Using the RTSP stream in the example...(StreamRTSPSingleVideoWithAudio)
macOS
Arduino 1.8.19
AmebaPro2 4.0.1-build20221222

'''
: fatal error: opening dependency file /dev/null.d: Operation not permitted
ResolveLibrary(opening dependency file /dev/null.d)compilation terminated.
-> candidates: []
exit status 1
'''

Dear @Oliver0804
First of all, the stable version of Arduino SDK is on our main branch, kindly noted that the dev branch is still under development.
Secondly, if you encounter any similar error in the downloaded main branch Arduino SDK, help build an empty example .ino first due to cached compiled data will cause the compilation to fail.
Thank you.

Closed. As there is no further issue.


text:
Fixes #13. Adds support for format styles

This PR fixes #13 by adding support for using format styles in addition to patterns.
It makes use of the builtin format styles in the JRE, so that a program can simply set what kind of date style it wants instead of specifying the exact pattern.
Fx. given the date 2018-01-01 12:00:00 The following outputs can be excepted for Locale 'da-DK':

${obj.format('LONG_DATE')} -> 1. januar 2018
${obj.format('MEDIUM_DATETIME')} -> 1. jan 2018 12:00:00
${obj.format('SHORT_TIME')} -> 12:00

@michaelkrog Sorry for not following up on this. Could I ask you to add some doc to the README file as well? After that I will merge and release this.

Hi @lazee.
Sorry.  Missed that notification. I'll add some docs now.

@michaelkrog Finally your code is merged and the release 1.3.0 should be available in the central repo within a day. Thank you for your code and patience :)

authors: lazee michaelkrog


text:
Decode: use unsafe []byte->string conversion for discarded value

For Decode's MLI4I, we invoke strconv.Atoi after string(*b)
which incurs a []byte->string allocation. The converted []byte->string
is discarded so anyways it is okay to use unsafe, as the string is
never used again. You can see the results at https://dashboard.github.orijtech.com/benchmark/dbb0fca65f644d95bcf8d0c8caafc601
Results:

time/op (ns/op)
Encoding/Decoding_2I-8	7.5ns ± 1%  6.7ns ± 0%  -10.36%	(p=0.000 n=10+9)
Encoding/Decoding_4E-8	8.8ns ± 0%  7.9ns ± 0%  -10.35%	(p=0.000 n=10+10)
Encoding/Decoding_A4E-8	38ns ± 1%   17ns ± 0%   -54.84%	(p=0.000 n=10+10)

allocs/op (B/op)
Encoding/Decoding_A4E-8	4.0B ± 0%   0	-100.00% (p=0.000 n=10+10)

allocs/op (N/op)
Encoding/Decoding_A4E-8	1.0 ± 0%    0	-100.00% (p=0.000 n=10+10)

Or visually

Problem Statement
What is the current behavior? Why and how does it need to change?
string(*b) incurs a []byte->string allocation yet the value will be discarded.
Description of Change
Please include a summary of the change and, if applicable, tag related issues, add code snippets or logs.
This change removes a []byte->string allocation
Breaking Change
Is this a breaking change?
No.
Caveats
Please list any caveats or special considerations for this change.
It uses unsafe, but the usage is isolated as we directly insert the converted string into strconv.Atoi, so this isn't  a caveat really. /cc @kirbyquerby @cuonglm @madflojo

@odeke-em thanks for opening this, sorry for the delay in comments. The change looks pretty clear and I see what you mean on the use of unsafe being pretty isolated.
I’ve not explored unsafe very much so let me do a bit of research on any downsides of using unsafe.
Thanks again for opening this.

@odeke-em thanks for opening this, sorry for the delay in comments. The change looks pretty clear and I see what you mean on the use of unsafe being pretty isolated.
I’ve not explored unsafe very much so let me do a bit of research on any downsides of using unsafe.
Thanks again for opening this.

No rush at all @madflojo, please take your time! I put it up so you can indeed explore trade-offs and benefits.

After going through it, I think I'm good with this change. Thanks @odeke-em!

authors: madflojo odeke-em

repo: americanexpress/simplemli


text:
Batch renaming files as sequential numbers when downloading them

Hello,
thank you for releasing AB Download Manager, it's a very good software. Would it be possible to implement the feature described in the title so the files are automatically renamed as sequential numbers when downloading them  ? (i.e   0001.(ext), 0002. (ext), 0003. (ext) and so on)
I think that DownThemAll! browser addon is the only one at the moment that can rename files as sequential numbers as I have described above and  the rename mask is 0(asterisk)idx(asterisk).(asterisk)ext(asterisk) (for some reason Github doesn't show the asterisk symbol)
Other renaming masks are described here  https://www.downthemall.org/howto/help/english-menu/renaming-mask/
In my opinion using a external download manager like AB Download Manager is more efficient than using a browser addon. Also DownThemAll! latest update is dated January 29, 2024 so it seems pretty abandoned. Furthermore on Google Chrome web store is written "This extension may soon no longer be supported because it doesn't follow best practices for Chrome extensions."
I'm cataloging my videogames library and I need to download the videogames' screenshots as 0001.jpg, 0002.jpg, 0003.jpg and so on from Gamepressure website. i.e for Frostpunk 2  from https://www.gamepressure.com/games/screenshots_list.asp?ID=21399 so a renaming mask field before starting the download would accomplish the task.
Just as example I attach a screenshot with DownThemAll! fields before starting a download.

@Revilak Hi there. thank you for suggestion. I was thinking about that
I think this is not related to a downloader. and also not used by majority of users, but instead it adds some complexity for them
because this option should be added in the Import list page (which all users interact with) and lots of people don't know what that is and how it works.
I think you should consider using PowerToys

Download all files that you need to a specific folder.
Open that folder in File Explorer
When you installed the Powertoys Utility you can see a Batch Rename option in the right click menu (which is whats you need)

Thanks for the hint.
Regards


text:
add private listings to create edit listing

add private listings to create edit listing

Passed on Latest.
On QuickView Details | Admin Tab
Edit Form
Submit form
STR-
Log on as aaronson (miniluv)
Submit a Listing with Private Listing Setting enabled.
Save and Publish
Log on as julia (miniluv) org steward
Go to All Listings / Ministry of Love Listings
RESULTS - Private Listing displays and has a "lock icon".
Open the Listing
QuickView Modal | Admin Tab displays lock icon.

Passed on Latest.

Need to wait for EDE.

Passed on Staging.

authors: akonsowski tdressel

repo: aml-development/ozp-center


text:
feat(listing): require feedback when deleting a listing

AMLOS-545
Description
I would like to capture the reason when an app steward deletes a listing by requiring the app steward to submit a reason during the deletion process.
Acceptance Criteria

include feedback form in the deletion process
require the app steward to provide feedback in order to complete the process

How to test code
Checkout delete_listing_feedback from ozp-center
Checkout delete_listing_feedback from ozp-backend
Test Scenario 1
Log in as bigbrother
Delete a listing via Listing Management
Ensure that you are required to enter a reason for deletion
Ensure that the reason displays in Listing Management > Recent Activity
Test Scenario 2
Log in as jones
Pend a listing for deletion
Log in as bigbrother
Go to Administration tab of listing
Approve listing for deletion
Ensure that you are required to enter a reason for deletion
Ensure that the reason displays in Listing Management > Recent Activity

:+1:
Checked the direct admin delete. Works as expected.
Checked the pending delete process. Works as expected.
Checked org steward. It worked for them too.

Test scenarios pass. Text was updated.
👍


text:
Use <= 0 not == 0 test for Inst_Countdown

This way, countdown will halt with non-integer operands.

Good catch! Thanks!

repo: amlalejini/SignalGP


text:
Add React-compatible update function to useMMKVStorage hook

See https://github.com/ammarahm-ed/react-native-mmkv-storage/issues/13#issuecomment-841727927 for the original mention that led to this issue being opened
Currently, the useMMKVStorage hook doesn't reflect the expectation of the "setter" portion of the React built-in state hooks. It's not documented that it should, but would provide convenience for developers implementing this package...
Ideally, we would be able to have a state change with a previous value provided, similarly to the React.useState hook for making sure value writes are happening without overwriting previous states:
React's API
const [value, setValue] = React.useState(0);
...
setValue((prev) => {
  // we have access to prev in here for making safe changes to the state
  return prev + 1
})

RN MMKV's API
const MMKV = new MMKVStorage.Loader().initialize();
const [value, setValue] = useMMKVStorage('counter', MMKV);
...
setValue(
  // cannot be a function that accepts previous state
)

To support this, the setValue function above must support a callback as a parameter for dynamically computing the next state.
Usage example:
const MMKV = new MMKVStorage.Loader().initialize();
const [value, setValue] = useMMKVStorage<number>('counter', MMKV);
...
setValue((prev) => {
  return prev === undefined ? 0 : prev + 1
})

Hey @SaltedBlowfish do you plan to work on sending a PR with this feature?

@SaltedBlowfish I have added support for setter. test it out on master so I can release the next version

@ammarahm-ed Sorry for the delay. I did plan on working on this but I'm traveling right now and ended up not having the time. I didn't realize you'd get to it so quickly. I won't be able to test it out for another week or so though.

@ammarahm-ed I ended up pulling your changes and resolving conflicts with my fork. See my PR here: https://github.com/ammarahm-ed/react-native-mmkv-storage/pull/103
I have not tested it yet (like I said I'm traveling right now).

Shipped in v0.5.9

authors: SaltedBlowfish ammarahm-ed

repo: ammarahm-ed/react-native-mmkv-storage


text:
[#186] Update framework for Sections 7, 8, 9, 10 of Design Document

Only first iteration - will add in the necessary info.

Conflicts


text:
Manually stop the client request

Hi,
I want to stop all the client request with 1s, if they not completed.
$client = new Amp\Artax\DefaultClient;
Is it possible ?

Please open issues regarding the HTTP client in https://github.com/amphp/artax, thanks!

authors: kelunik sajumani

repo: amphp/amp


text:
Possible Chrome bug again? Datepicker auto closes after focus is lost

Similar to issue #1138
The date picker is showing similar signs that were displayed in issue #1138 from March. When clicking on a input field to display the date picker in Chrome it opens and closes immediately. It seems as if focus needs to persist in order for the date picker to stay open. Perhaps a Chrome update?
We are using 3.6.0 after the previous Chrome bug cropped up.

Hi @purduekenny,
there were 4 bugfix / patch releases, the latest should fix this.
https://github.com/amsul/pickadate.js/releases/tag/3.6.4

Daniel, thanks for the quick response! I JUST looked at the releases before posting and only saw 3.6.0, I'm sorry for wasting your time. We'll update our files and I'll report back if that doesn't work. Have a great day.

authors: DanielRuf purduekenny


text:
Enhancing (Our Team) Section of About Us Page

I want to improve the (Our Team )Section of the About Us Page.
Right now all members of different teams are mixed up like web developers with management heads. So I want to create this team section more systematically to improve UI  and user experience.
For eg: Founders/ Co-Founder in a single row, Web Developers in another row so on...
Sample: -

Please assign this task to me under gssoc'23. I am well versed in frontend development tech stacks - react js, HTML, CSS, and javascript.

I'll create issue for contributing page like...please comment on that to get assigned thanks

I'll create issue for contributing page like...please comment on that to get assigned thanks
Ok, Please assign me this task.

@anmode,  I by mistake used my redundant GitHub id for requesting this task, @abhi03ruchi is my official GitHub Id through which I am contributing in Gssoc '23. Please assign this task to me via this id.

authors: abhi03ruchi abhiruchisarswat anmode


text:
Windows11: OpenOCD from MSDK cannot initialize the MAX32625PICO CMSIS-DAP

On my corporate managed Windows11 laptop, the OpenOCD from the MSDK installer will not open the MAX32625PICO CMSIS-DAP device.
On the same laptop, a VirtualBox VM that we attach the same PICO to as a USB device will work under OpenOCD and PyOCD
At this point I'm not sure if it's a general Windows 11 issue, or if it has to do with the corporate management of USB devices - long story short is I can't do any work with the MAX32690FTHR board until this is working.
I can work around it using a Linux laptop but ideally I would like to use a standard (if somewhat locked down) Windows11 device.
Debug: 87 298 semihosting_common.c:109 semihosting_common_init(): Debug: 88 345 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x2109:0x0813: Operation not supported or unimplemented on this platform Debug: 89 345 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x27c6:0x63ac: Access denied (insufficient permissions) Debug: 90 345 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x8087:0x0033: Operation not supported or unimplemented on this platform Debug: 91 361 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x8086:0x51ed: Operation not supported or unimplemented on this platform Debug: 92 361 cmsis_dap_usb_bulk.c:150 cmsis_dap_usb_open(): found product string of 0x0d28:0x0204 'DAPLink CMSIS-DAP' Debug: 93 371 cmsis_dap_usb_bulk.c:170 cmsis_dap_usb_open(): enumerating interfaces of 0x0d28:0x0204 Debug: 94 377 cmsis_dap_usb_bulk.c:237 cmsis_dap_usb_open(): skipping interface 0, endpoint[0] is not bulk out Debug: 95 377 cmsis_dap_usb_bulk.c:230 cmsis_dap_usb_open(): skipping interface 1, has only 1 endpoints Debug: 96 377 cmsis_dap_usb_bulk.c:276 cmsis_dap_usb_open(): skipping interface 2, class 10 subclass 0 protocol 0 Debug: 97 377 cmsis_dap_usb_bulk.c:217 cmsis_dap_usb_open(): found interface 3 string 'CMSIS-DAP v1' Debug: 98 393 cmsis_dap_usb_bulk.c:237 cmsis_dap_usb_open(): skipping interface 3, endpoint[0] is not bulk out Debug: 99 393 cmsis_dap_usb_bulk.c:217 cmsis_dap_usb_open(): found interface 4 string 'WebUSB: CMSIS-DAP' Debug: 100 393 cmsis_dap_usb_bulk.c:230 cmsis_dap_usb_open(): skipping interface 4, has only 0 endpoints Debug: 101 393 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x0c45:0x6d1f: Entity not found Debug: 102 408 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x8086:0x461e: Operation not supported or unimplemented on this platform Debug: 103 408 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x2109:0x2813: Operation not supported or unimplemented on this platform Debug: 104 408 cmsis_dap_usb_bulk.c:105 cmsis_dap_usb_open(): could not open device 0x0b95:0x1790: Operation not supported or unimplemented on this platform Error: 105 424 cmsis_dap.c:293 cmsis_dap_open(): unable to find a matching CMSIS-DAP device Debug: 106 424 command.c:544 run_command(): Command 'init' failed with error code -4

@rhempel I can confirm that our toolchain should work on Windows 11.  I have been using on my home machine successfully.
The error log seems like permission issues on the USB port.  You will need USB read/write access on the machine to connect to the PICO.  I suspect IT has locked this on your managed machine.  If you can write a file to a USB drive you should have equivalent permissions to connect to the PICO.
The "could not open device" messages are standard as OpenOCD iterates across all the USB devices it can find.  The device ID for the PICO is 0x0d28:0x0204, which it is finding successfully during the scan.  I've attached a log from my W11 machine for reference.
win11_connect_log.zip
They key errors in your log are

could not open device 0x27c6:0x63ac: Access denied (insufficient permissions) - indicating permission issues on a different USB device
Error: 105 424 cmsis_dap.c:293 cmsis_dap_open(): unable to find a matching CMSIS-DAP device - indicating OpenOCD failed to open the device.  This is the same message thrown if there's no PICO connected to your machine either.  Since the scan chain is at least iterating across the end-points I think this further confirms a USB permissions issue.

Thanks for the reply @Jake-Carter - I believe it does have something to do with permissions, but it's not read/write permissions on the USB drive. I have an IT-exception for this on my machine, and I can confirm that I am able to create, read, and modify files on the exposed USB drive for both the DAPLINK and MAINTENANCE modes of the PICO.
I understand how the enumeration scan works for OpenOCD and have looked at the AD fork of the source.
Is there a possibility of adding some additional diagnostic output for the -v option when OpenOCD tries an operation on the  0x0d28:0x0204 device? The enumeration works so there is some other operation failing when it tries to add it to the list of valid CMSIS-DAP devices.
By the way, the command line I am using to open the device is:
C:\MaximSDK\Tools\OpenOCD\openocd.exe   -f interface\cmsis-dap.cfg -f target\max32690.cfg -d

Hmm, generally if you can write to a USB drive you shouldn't have any issue with the PICO.
Here are my driver details (Device Manager -> View -> Devices by container -> DAPLink CMSIS-DSP)
Key drivers to check are DAPLINK and WebUSB: CMSIS-DAP.  Do these match?

The main difference is that I am missing:

HID compliant vendor-defined device
USB Input Device

The WebUSB driver I have is slightly different:

The Details.txt contents on my PICO are:
# DAPLink Firmware - see https://daplink.io
Build ID: v0257-51-gdb95667d (armcc)
Unique ID: 04161701d5b7c84700000000000000000000000097969906
HIC ID: 97969906
Auto Reset: 1
Automation allowed: 1
Overflow detection: 1
Incompatible image detection: 0
Page erasing: 1
Daplink Mode: Interface
Interface Version: 0259
Git SHA: db95667ddf740f77536239782e7b4273c90878cf
Local Mods: 0
USB Interfaces: MSD, CDC, HID, WebUSB
Interface CRC: 0x8ecdbe53
Remount count: 0
URL: http://www.analog.com/max32625pico

I have opened a ticket with our IT provider - there are some posts on the web that indicate CrowdStrike may be interfering with some USB endpoint devices. This kind of makes sense, so I'll follow up on this when I hear back ...

Still no update from out IT staff ...

@Jake-Carter UPDATE:
I have looked more closely at the startup logs and there IS one difference - your product string does not match the one I am getting from my PICO.
Here is what I get:
`Debug: 30 139 cmsis_dap_usb_bulk.c:150 cmsis_dap_usb_open(): found product string of 0x0d28:0x0204 'DAPLink CMSIS-DAP'
and you have this in your log
Debug: 96 145 cmsis_dap_usb_bulk.c:150 cmsis_dap_usb_open(): found product string of 0x0d28:0x0204 '**CMSIS-DAP v1**'
Two things - the line numbers don't match up, so maybe you have a different openocd.exe than what is in the MSDK download currently available
Second, the product string does not match, which means my MAX32625PICO probably has different firmware than yours.
Would you be able to point me to a link for the firmware in your PICO and possibly to a link to your openocd.exe (if different from the MSDK build)?

@Jake-Carter - just a follow up, would you be able to point me to a link for the firmware in your PICO?
None of the images PICO firmware repository give the USB Product string in the logs you have shared :-)

@Jake-Carter Here is a little more information from the USB Device Tree Viewer V4.4.3 running on my  Crowdstrike Falcon protected laptop. It looks like the HID descriptor is failing the read operation, which kind of explains why the PICO is not staying on the list of devices that can be opened by OpenOCD
`
---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03 (Interface 3)
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x06 (String Descriptor 6)
Language 0x0409         : "CMSIS-DAP"
Data (HexDump)           : 09 04 03 00 02 03 00 00 06                        .........
    ------------------- HID Descriptor --------------------

bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0100 (HID Version 1.00)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 00 01 00 01 22 21 00                        .!...."!.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0021 (33 bytes)
Error reading descriptor : ERROR_GEN_FAILURE (due to a obscure limitation of the Win32 USB API, see F1 Help)
    ----------------- Endpoint Descriptor -----------------

bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
    ----------------- Endpoint Descriptor -----------------

bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040 (64 bytes)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
`
The F1 Help offers this:

About HID descriptors
HID descriptors usually cannot be read. This is because they must be requested from the interface rather than the device but the IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION call doesn't offer the choice.
The parameters are ignored and filled by the USB stack:
MSDN says: "the USB stack ignores the value of bmRequest and inserts a value of 0x80 which indicates standard USB device request".
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/usbioctl/ns-usbioctl-_usb_descriptor_request
For most devices the result is an ERROR_GEN_FAILURE or ERROR_INVALID_PARAMETER.
But some devices return the HID descriptor anyway.

SOLVED! This turned out to be a lot of digging around and finally stumbling on the solution ...
As an embedded developer I have to support devices from multiple vendors - and that sometimes means installing vendor specific tools and drivers. In this case, I had an old vendor specific CMSIS-DAP v1 driver on my laptop, and this was causing the AD/MAX PICO to pick up the wrong driver.
The fix is relatively simple. Go into Device Manager on your Windows machine and choose "View By Driver". The look for ANY and ALL drivers with CMSIS or DAP in the name, right click, and then choose "Remove Driver"
When you have deleted all of them (and you may have dozens if not hundreds of .inf files) then plug in your MAX32625 PICO and you will be able to use OpenOCD to detect and use the device.
Sometimes you have to keep chewing on the bone ...

authors: Jake-Carter rhempel

repo: analogdevicesinc/msdk


text:
309 blog template generator

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/analogjs/analog/blob/main/CONTRIBUTING.md#-commit-message-guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

Which package are you modifying?

[ ] vite-plugin-angular
[ ] vite-plugin-nitro
[ ] astro-angular
[x] create-analog
[ ] router
[ ] platform
[ ] content
[ ] nx-plugin
[ ] trpc

What is the current behavior?
Adds a new option to build a new analog site with Angular 17 and a basic blog template.
Closes #309
What is the new behavior?
Generates a new site.  The home page redirects to /blog, where a list of content is displayed.  Clicking one of the content links takes the user to view the content of that blog post.
The styling is left very minimal to allow the developer to design their site how they'd like to.

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
I'd love to get feedback on this and if there is anything else that should be added!
[optional] What gif best describes this PR or how it makes you feel?

Thanks @BaronVonPerko!

authors: BaronVonPerko brandonroberts

repo: analogjs/analog


text:
I suggest not del the curl tool

this issue: https://github.com/anapsix/docker-alpine-java/issues/8

Thanks, but this repo is deprecated, and remains for reference only. See README.
I suggest using the images still available in Docker Hub (generated from this repo) as a base, adding curl, and whatever other tools you require

authors: anapsix junneyang

repo: anapsix/docker-alpine-java


text:
chore(trace-and-optimize): improve parsing animations

Closes #324
Closes #325

一旦これもfixとしてmergeします


text:
Group Assetのsub assetの情報は、Ctrl+Sするまで更新されない

          原因分かりました
          Ctrl+Sして保存するまでsub assetの情報が表に見えていませんでした

Originally posted by @Sayamame-beans in https://github.com/anatawa12/ContinuousAvatarUploader/pull/35#discussion_r1415108361
Unityの仕様かもしれませんが一応…

一応SaveAsset()呼び出せばいけるとは思うので修正試みるときにはそれやる


text:
Add get_mut support

I need it for https://github.com/fasterthanlime/rc-zip/pull/43 (I'll use a fork until this lands!)
Thanks for this crate ✨

I will cut a new patch release later today

authors: NobodyXu fasterthanlime


text:
elfcore.c: do not use sizeof with VLA

Expression sizeof(scratch) doesn't work properly when using --std=c++1y in g++ 4.9. It seems that in this mode g++ assumes it is a constant-time expression equal to sizeof(char) instead of substituting the run-time value of the variable-length array size, leading to the malformed core dump.
/cc: @anatol

Oops missed this pull request. It looks fine and its merged as https://github.com/anatol/google-coredumper/commit/e3f0f9ba3adb2682e8c8dc2186667eafe4d90271
sorry for the long delay.

authors: anatol zlobober

repo: anatol/google-coredumper


text:
Authorize endpoint: start on validation, error codes, etc.

Start testing authorization endpoint, fixing a few bugs as I go.

Is mostly the good. Just little naggy things/things requiring some discussion

authors: oswynb thsutton


text:
Add asdf support

What would you like to be added:
syft should add support for asdf. asdf is a generic package manager that can be used to install various tools. See https://github.com/asdf-vm/asdf
Why is this needed:
Using this syft may be able to capture versions of tools that are not currently captured by syft. Things like the version of python, ruby, node etc.
Additional context:

See https://github.com/asdf-vm/asdf-plugins for the full list of binaries supported by asdf.

This seems like a great idea -- we welcome PRs!

For anyone picking this up, it sounds like this would be a good fit for cataloging directories which look for declarations of packages and not container images which look for installations of packages.

I'll take a shot at this

repo: anchore/syft


text:
🛑 Open Movies is down

In e7066ad, Open Movies (https://openmovies.in) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Open Movies is back up in a7a7903 after 28 minutes.

repo: andanotherusername/upptime-test


text:
#140583907 Set up frontend environment

What does this PR do?
Setup environment for the frontend
Description of Task to be completed?
Configure webpack and babel
What are the relevant pivotal tracker stories?
#140583907

Coverage increased (+0.5%) to 81.818% when pulling 930b9a02c5bb5565f40a1ef9c920b7fc4ae4c89a on feature/140583907/Set-up-frontend-environment into 0b3cf4bd864caf54fabd76da5a031f50a155689b on develop.

authors: andela-pbirir coveralls


text:
Migrate to nvim-cmp

This should make this extension run on cmp. This repo will be renamed to cmp-tmux and rebased when cmp is ready.... is it ready ?! I can't really tell :man_shrugging:
New installation instructions
Breaking:

The option kind is no longer overridable
Version support will be inverted, so compe users will have to switch branch

Tasks:

[x] Update main branch README with notice
[x] Update new branch README instructions
[x] Remove obsolete 'kind' configuration
[x] Migrate source
[x] Migrate configuration
[x] Rebase (main -> compe, cmp -> main) and rename project when cmp goes out
[x] Add BREAKING commit message in main afterwards and switch info in README

Additional (maybe another PR for this):

[ ] Add better triggers now that this has a nicer API
[x] Is it possible to add menu hint like before ([tmux]) ? (https://github.com/hrsh7th/nvim-cmp/issues/98)
[x] Check if there's an internal dedupe? Doesn't really matter anymore by code change
[ ] Async task in cmp ?

A rebase causes packer (and maybe others) to seemly error out without any specific reason message, which I was not aware of... sorry if this caused any inconvenience in updating for anyone out there using this extension.

repo: andersevenrud/cmp-tmux