No Audio Packets. Only Heartbeat

On FreeSWITCH Version 1.10.10-release-24-4cb05e7f4a~64bit (-release-24-4cb05e7f4a 64bit)
I'm getting the heartbeat from mod_audio_stream but no audio packets on the receiving websocket app. Doesnt appear to be working with 1.10.10-release-24. I've tried changing all the settings (mono/stereo, 8k/16k) but no luck. Any ideas?
sudo tcpdump -i any -nn port 7771
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
06:46:29.890446 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [S], seq<PHONE_NUMBER>, win 43690, options [mss 65495,nop,nop,sackOK,nop,wscale 10], length 0
06:46:29.890461 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [S.], seq<PHONE_NUMBER>, ack<PHONE_NUMBER>, win 43690, options [mss 65495,nop,nop,sackOK,nop,wscale 10], length 0
06:46:29.890474 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 1, win 43, length 0
06:46:29.890531 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 1:323, ack 1, win 43, length 322
06:46:29.893616 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [P.], seq 1:204, ack 323, win 43, length 203
06:46:29.893629 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 204, win 43, length 0
06:46:29.894008 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 323:338, ack 204, win 43, length 15
06:46:29.894182 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 338:373, ack 204, win 43, length 35
06:46:29.894826 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [.], ack 373, win 43, length 0
06:46:29.895811 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [P.], seq 204:235, ack 373, win 43, length 31
06:46:29.937700 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 235, win 43, length 0
06:46:30.895021 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 373:408, ack 235, win 43, length 35
06:46:30.896297 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [P.], seq 235:266, ack 408, win 43, length 31
06:46:30.896318 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 266, win 43, length 0
06:46:31.895423 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 408:443, ack 266, win 43, length 35
06:46:31.895903 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [P.], seq 266:297, ack 443, win 43, length 31
06:46:31.895922 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 297, win 43, length 0
06:46:32.896035 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 443:478, ack 297, win 43, length 35
06:46:32.896517 IP <IP_ADDRESS>.7771 > <IP_ADDRESS>.31478: Flags [P.], seq 297:328, ack 478, win 43, length 31
06:46:32.896537 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [.], ack 328, win 43, length 0
06:46:33.896645 IP <IP_ADDRESS>.31478 > <IP_ADDRESS>.7771: Flags [P.], seq 478:513, ack 328, win 43, length 3
Receiving APP
2023-11-12 06:46:29.894 - DEBUG - [MainThread] read_frame() - < TEXT 'testing11111' [9 bytes]
2023-11-12 06:46:29.895 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::0' [text, 29 bytes]
2023-11-12 06:46:29.895 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::0' [text, 29 bytes]
2023-11-12 06:46:29.896 - INFO - [MainThread] websocket_server() - Received packet: 9 bytes.
2023-11-12 06:46:30.895 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::1' [text, 29 bytes]
2023-11-12 06:46:30.895 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::1' [text, 29 bytes]
2023-11-12 06:46:31.895 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::2' [text, 29 bytes]
2023-11-12 06:46:31.895 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::2' [text, 29 bytes]
2023-11-12 06:46:32.896 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::3' [text, 29 bytes]
2023-11-12 06:46:32.896 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::3' [text, 29 bytes]
2023-11-12 06:46:33.896 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::4' [text, 29 bytes]
2023-11-12 06:46:33.897 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::4' [text, 29 bytes]
2023-11-12 06:46:34.897 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::5' [text, 29 bytes]
2023-11-12 06:46:34.897 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::5' [text, 29 bytes]
2023-11-12 06:46:35.898 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::6' [text, 29 bytes]
2023-11-12 06:46:35.898 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::6' [text, 29 bytes]
2023-11-12 06:46:36.248 - INFO - [MonitoringThread] _monitor_and_restart_process() - Event processor process is alive...
2023-11-12 06:46:36.898 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::7' [text, 29 bytes]
2023-11-12 06:46:36.898 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::7' [text, 29 bytes]
2023-11-12 06:46:37.899 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::8' [text, 29 bytes]
2023-11-12 06:46:37.899 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::8' [text, 29 bytes]
2023-11-12 06:46:38.899 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::9' [text, 29 bytes]
2023-11-12 06:46:38.899 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::9' [text, 29 bytes]
2023-11-12 06:46:39.900 - DEBUG - [MainThread] read_frame() - < PING 'ixwebsocket::heartbeat::1s::10' [text, 30 bytes]
2023-11-12 06:46:39.900 - DEBUG - [MainThread] write_frame_sync() - > PONG 'ixwebsocket::heartbeat::1s::10' [text, 30 bytes]
2023-11-12 06:46:39.972 - DEBUG - [MainThread] read_frame() - < CLOSE 1000 (OK) Normal closure [16 bytes]
2023-11-12 06:46:29.885577 98.37% [DEBUG] mod_audio_stream.c:144 mod_audio_stream cmd: 5f2c514d-7cfb-4017-ae7c-616003327cd6 start ws://<IP_ADDRESS>:7771/?channel_uuid=5f2c514d-7cfb-4017-ae7c-616003327cd6 stereo 16k testing11111
2023-11-12 06:46:29.885577 98.37% [DEBUG] mod_audio_stream.c:75 calling stream_session_init.
2023-11-12 06:46:29.885577 98.37% [DEBUG] audio_streamer_glue.cpp:252 (5f2c514d-7cfb-4017-ae7c-616003327cd6) resampling from 8000 to 16000
2023-11-12 06:46:29.885577 98.37% [DEBUG] audio_streamer_glue.cpp:263 (5f2c514d-7cfb-4017-ae7c-616003327cd6) stream_data_init
2023-11-12 06:46:29.885577 98.37% [DEBUG] mod_audio_stream.c:81 adding bug.
2023-11-12 06:46:29.885577 98.37% [DEBUG] switch_core_media_bug.c:976 Attaching BUG to<EMAIL_ADDRESS>2023-11-12 06:46:29.885577 98.37% [DEBUG] mod_audio_stream.c:85 setting bug private data.
2023-11-12 06:46:29.885577 98.37% [DEBUG] mod_audio_stream.c:88 exiting start_capture.
2023-11-12 06:46:29.885577 98.37% [DEBUG] switch_cpp.cpp:1465 uuid_audio_stream Response: +OK Success
2023-11-12 06:46:29.885577 98.37% [DEBUG] switch_cpp.cpp:1465 uuid_audio_stream Response: +OK Success
2023-11-12 06:46:29.885577 98.37% [DEBUG] audio_streamer_glue.cpp:110 sending initial metadata mike11111
2023-11-12 06:46:29.925582 98.37% [DEBUG] switch_core_io.c:448 Setting BUG Codec PCMU:0

Is there any audio on the channel? Media bug will be triggered when there is a media on the channel, and looks to me there is actually no audio on the channel to be streamed.
Since default call is in mono 8k, in this case you're resampling it to stereo 16k. That's perfectly fine if that's what you need, but I'd expect speex resampler to be activated and I don't see it working among the debug lines. Definitely there is no audio and that's why there are no audio packets at the endpoint.

@amigniter yes there is audio on the channel. I can hear audio on both legs of the call.

Have the same issue. Happens when sip client send re-invite after initial invite is accepted. not much is updated in the second invite:

SDP/owner/session_version
SDP/media_attr: sendrecv ->sendonly
SDP/media_description: added media_format ITU-T G.722

When there is no re-invite, everything works fine.

We are working on it, trying to find out why there are no packets sent (want to fully reproduce it). If there is a bug it will be solved definitely.

I have resolved by issue by changing a configuration of free switch:
sendolny from the client side sets call to onhold on FS side (very useful post https://nickvsnetworking.com/sip-hold-with-rfc6337/). When a call it in HELD state, nothing is forwarded to the WebSocket channel - I see lots of RTP arriving, but on WebSocket side are only some keepalives. When a call is in ACTIVE state everything works fine.
Was able to overcome this by setting rtp_disable_hold=true variable. after this variable is set, a call is never moved to a HELD state and stays in ACTIVE state regardless of media_attribute value received. Simply added <action application="set" data="rtp_disable_hold=true" /> in a dialplan. not sure this is a best approach, but it works for me.

@alex-at-voxsmart I wish that worked for me too. In my case the call is not held as I see the media attribute "a=sendrecv"


Update Package.json

Updated spotify-uri to latest version 3.0.2

This is not necessary since ~ already means "use the latest patch version"


fix: 67 depth of field and outline effect

@alvarosabu Can you help me with the outline effect? I can't get it to show something. If you can't get it to work easily I suggest removing it from the library as it doesn't really give any value to the users when it is so frustrating to use.

No worries I will take a look


[Perf] Rewrite getAllChannelsAndPrograms to use Kysely

This slows down server startup and all subsequent runs of UpdateXmlTvTask because when there are huge channels. It can take 10s+ to execute this query...insanity.

Fixed in 44d9e3bf753192ed04baf55a55d1d35adf8fe595


[Feature] Does mmdetection support pytorch 2.0?

What's the feature?
support pytorch 2.0
pytorch 2.0 is official released. Does mmdetection support pytorch 2.0 (officially announced by pytorch that 2.0 is 100% backward compatible by definition.)
Any other context?
No response

The dev-3.x and 3.x branch supports pytorch 2.0

Isn't torch fully backwards compatible so 2.0 is supported without any additional needed? https://pytorch.org/blog/pytorch-2.0-release/#:~:text=Summary%3A-,torch.,100%25%20backward%20compatible%20by%20definition.


Version 0.0.4 doesn't work on Photon

I've used version 0.0.2 of the Adafruit DHT library on my Photon for a long time without issue. I recently tried to update to version 0.0.4. I discovered that 0.0.4 works (for the most part) with the Xenon, but not with the Photon. On the Photon, 0.0.4 is not able to read from the DHT. Reverting back to 0.0.2 resolved the issue.

Oct 2021.  Does not work on Photon for me either.


Getting WebSocket is closed before the connection is established in production setup

Hi, my action cable is working just fine on development, but when I configure it for production using an nginx reverse proxy, I get the repeated message in my browser that the webSocket is closed before the connection is established.
I believe my nginx reverse proxy is working properly, as I am getting access.log entries and no error.log entries. When kill my cable server (using puma) the nginx error.log tells me it could not proxy. All the connection info being logged is correct; it is redirecting port 81 to my cable server on localhost.
2015/12/07 15:27:56 [error] 12984#0: *1556 connect() failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS>, server: localhost, request: "GET / HTTP/1.1", upstream: "http://<IP_ADDRESS>:28080/", host: "ia.scrum-masters.com:81"

I have configured nginx to pass along the upgrade headers.
    location / {
        proxy_pass http://cable;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

This could be a CORS issue I suppose, but I can't seem to debug it to confirm.  Puma is not logging anything on my cable server (executed using bundle exec puma -p 28080 cable/config.ru) as per the README.
Any help to troubleshoot would be much appreciated!

I had a similar issue, did you set the allowed_request_origins? It doesn't cause an issue in development mode because it defaults to allowing localhost when in development.
I made a pull request with updates to the documentation about this, which has some more detail: https://github.com/rails/actioncable/pull/126

This looks promising; I will play with it. QQ: what should the origin be in the case of an nginx reverse proxy? My server domain name? Localhost on the inbound port (81) ?
Browser --> NGINX:81 --> AC running on localhost:28080
Thanks!

The domain name.

That did the trick!! Many thanks, and :+1:  on this pull request!
For others with this problem reading this, all I did was create an initializer config/cable.rb containing:
ActionCable.server.config.allowed_request_origins = %w( http://my-domain.com  )

Now off to layer SSL onto the reverse proxy ...

I have a similar issue, but my AC server is set up in app, instead of standalone. I have an initializer that sets the allowed_request_origins and can verify it is set if I do a rails console to check the value. However I'm still getting a 404. Is it possible because it's in app and not standalone?

@rushingfitness I mounted it in routes.rb. I actually raised, and later self-answered, some questions about it on SO: http://stackoverflow.com/questions/32322652/configuring-nginx-to-proxy-thin-and-rails-actioncable
Maybe that would be the more appropriate place for this continuing this conversation, so that we don't clog up the issues board here.

Your SO thread was very helpful to me, and I posted my thoughts there about server separation and SSL proxying

Would be great to collect a FAQ and include links to that SO article. If anyone wants to work on that, please open a PR.

My issue was actually a combination of Heroku & Cloudflare. Had to buy an ssl cert and point to a subdomain that didn't use CF's proxy. PITA, but now it works perfectly.

Would be great if you could write a tutorial based on the issues you hit. I'm sure you're not alone. Thanks!

@dhh should I do any tutorial about this issue I also faced: https://github.com/rails/actioncable/pull/124

Not sure I fully follow what the issue is there. Assigned to @lifo to take
a look.
On Fri, Dec 11, 2015 at 4:54 PM, Jordan Rushing<EMAIL_ADDRESS>wrote:

@dhh https://github.com/dhh should I do any tutorial about this issue I
also faced: #124 https://github.com/rails/actioncable/pull/124
—
Reply to this email directly or view it on GitHub
https://github.com/rails/actioncable/issues/131#issuecomment-163972543.


Path to Record Collection

In protocol administration make a big note that the Path to Record Collection must be unique across the system and should be formatted e.g. <external_data_source_name><protocol_name>.

@njackson2012


Patent protection

It would be helpful to clarify in the readme whether or not the 3D and 4D simplex noise functions use the implementation covered by Perlin's U.S. Patent 6,867,776.

The header doesn't mention it because I honestly don't know.
I am not a lawyer, and I am vehemently opposed to software patents because
I see them have a chilling effect on innovation, in direct contradiction to
the purpose of patents, but the implementation is probably similar enough
to Ken Perlin's version that a patent lawyer could find infringement. The
hash and the gradients are different and unique to our implementation, but
the simplex grid and the interpolation kernels are the same.
This could possibly be worked around, but it would still be a gray zone.
Lawyers' interpretations of legal documents describing technology in
circumspect and intentionally vague and obfuscated terms never make much
sense to me.
It hurts to say it, but with the recent overreach and preposterous
proliferation of patent troll lawsuits, I would advise caution. You might
want to have a chat with a patent lawyer and perhaps send a licensing
request to the patent holder, whoever that might be after the circus around
Nokia the past few years.
/Stefan Gustavson
On 26 Feb 2017 14:54, "cypherdare"<EMAIL_ADDRESS>wrote:
It would be helpful to clarify in the readme whether or not the 3D and 4D
simplex noise functions use the implementation covered by Perlin's U.S.
Patent 6,867,776.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/stegu/webgl-noise/issues/4, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAplaiU5QVj46hEFbYrDFR55H2WBp-TRks5rgYP8gaJpZM4MMY8h
.

The aforementioned patent, now owned by a patent troll company named "Wsou Investments LLC", will expire in 2022, so this entire patent debacle will soon, finally, be a moot point.
Since I first saw this patent, I am convinced that it would fall flat on its face if it was challenged for validity by any competent party, but it would be prohibitilvely expensive to prove that in court.
Just to give you an idea of how ridiculous the patent is, below is the "summary of the invention" in legalese.  As with all software patents granted during the time period when US patent law explicitly disallowed patents on algorithms and computer programs "as such", this is an algorithm described in obfuscated legalese by a patent lawyer, trying desperately to pretend that it comprises patentable subject matter.
Incidentally, the summary is even fundamentally wrong in the only case where it goes into any specifics. The texture does have visible grid artifacts, just less visible than the classic Perlin noise algorithm, and not axis-aligned with the extrinsic (x,y,z) coordinate grid.

SUMMARY OF THE INVENTION
The present invention pertains to an apparatus for generating an image. The apparatus comprises a computer. The apparatus comprises a display connected to the computer upon which images from the computer appear. The apparatus comprises a mechanism for producing images with texture that do not have visible grid artifacts, the producing mechanism disposed in the computer.
The present invention pertains to a method for generating images. The method comprises the steps of producing the images with texture that do not have visible grid artifacts with the computer. There is the step of displaying the images on a display. Preferably, there is the step of introducing information into the computer from which the images are produced.
"Preferably, there is the step of introducing information into the computer from which the images are produced." What does that even mean? Gobbledygook. Sheesh.

Keeping this issue open at least until the sad and ugly patent expires.

Now counting the days until the patent expires. If software patents are to be allowed (and I strongly oppose the very idea), a duration of 20 years is much too long.

I would like to remind You this issue can be finally closed! Happy days.

Thanks for the reminder. Good riddance. My hope is that patent trolls everywhere turn to stone by exposure to sunlight instead of being allowed to leech on real innovators, and that we will find a way to stop large corporations from using irrelevant or overreaching patents to unjustly bully small competitors into submission.
Closing the issue with a sour aftertaste. Simplex noise was a great idea that has been held back for decades by that truly ugly patent.


breach_depressions_least_cost: Add comment about rising pit cells

The current documentation didn't specify that each pit cell is rised to the elevation of the lowest neighbour minus the value of flat_increment. It's good to know because it means there is no need to fill these pits beforehand to avoid excessive breach depth.
Just a tought, but maybe this preprocessing should be optional. I would always leave it on, but maybe someone else would prefer to turn it off if its pits are true pits...

Looks good.


helm repo up not working with helm-gcs

Example:
→ helm gcs push staging-model-template-0-1-0.tgz bi-staging --force

→ helm repo up
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bi-staging" chart repository
Update Complete. ⎈Happy Helming!⎈

→ helm fetch bi-staging/staging-model-template-0-1-0
Error: chart "staging-model-template-0-1-0" matching  not found in bi-staging index. (try 'helm repo update'): no chart name found

→ helm gcs push staging-model-template-0-1-0.tgz bi-staging
Error: chart staging-model-template-0-1-0 already indexed. Use --force to still upload the chart

→ helm search repo  bi-staging
No results found

See - it is indexed when you try to push, but it is not when you try to fetch/update/search.
When viewing the GCS bucket, the .tgz is there, along with an index.yaml as follows:
Note: Just for privacy on a public post, I removed the digest variable and changed the bucket name to gs://HIDDEN. The information is correct on the real bucket
apiVersion: v1
entries:
  staging-model-template:
  - apiVersion: v2
    appVersion: 0-1-0
    created: "2020-09-29T12:14:32.763916-05:00"
    description: Model description goes here
    icon: https://i.imgur.com/lc9OKZr.png
    name: staging-model-template
    type: application
    urls:
    - gs://HIDDEN/staging-model-template-0-1-0.tgz
    version: 0-1-0
generated: "2020-09-29T12:14:32.763918-05:00"

Is this a caching issue related to #44 ? What is happening to cause this? How would it be resolved?

We see the same problem. Some push fail for no apparent reasons. Any idea?


Stateless service not executing when deployed

I am trying to determine why the code for my minimalist Service Fabric stateless service does not run. (I initially asked about this on Stack Overflow but received no responses, so I thought I would try here.) I am puzzled because I am using the Visual Studio template, with no code added other than logging code that would allow me to confirm that the stateless service code is executing. (Eventually, I have code that executes a long calculation that I will place there.) I am also using the Visual Studio dialog that automatically creates a cluster in my Azure account.
I created the Service Fabric stateless service using .Net Core, using the provided templates in Visual Studio 2019. The logging works properly when deployed locally; not only can I see the log messages generated by my code in the Diagnostic Events window, but they are also visible through the Azure portal on my Application Insights account. This leads me to think that I have logging set up correctly and that the problem relates to how I am using Service Fabric. (I also tried removing the logging code and instead creating an Azure blob; this also works locally only, furthering my suspicion that the problem is not with the logging code.)
When I deploy to a cluster, I do not receive the log messages generated by my code. I do see the general log messages associated with cluster setup, including a message indicating that RunAsync was invoked on each node; I have exported the query producing these messages here. Moreover, I attempted to debug the cluster by attaching the debugger. Once this was complete (approximately 30 minutes after initially publishing), I attached the debugger. There was no process with the name of my stateless service (e.g., SFStateless.exe). I have looked at the log files created in the automatically created storage account, and nothing seemingly explanatory appears.
A repro is here.
I will point out a few highlights here.
The following is my RunAsync overload. As you can see, it substantially follows the template but includes an endless loop that catches all exceptions, so I would think that it should never stop running.
    protected override async Task RunAsync(CancellationToken cancellationToken)
    {
        long iterations = 0;

        string nodeID = Context?.NodeContext?.NodeName ?? "N/A";

        while (true)
        {
            try
            {
                ServiceEventSource.Current.ServiceMessage(this.Context, $"{nodeID}: RunAsync loop {++iterations}");

                await Task.Delay(30_000);
            }
            catch (Exception ex)
            {
                try
                {
                    ServiceEventSource.Current.ServiceMessage(this.Context, $"{nodeID}: Exception {ex.Message}" );
                }
                catch
                {

                }
            }
        }
    }

Second, my eventFlowConfig.json is set up as follows (and is located in SFStateless\PackageRoot\Config):
{
  "inputs": [
    {
      "type": "EventSource",
      "sources": [
        { "providerName": "Microsoft-ServiceFabric-Services" },
        { "providerName": "Microsoft-ServiceFabric-Actors" },
        // (replace the following value with your service's ServiceEventSource name)
        { "providerName": "MyCompany-SFApp-SFStateless" }
      ]
    }
  ],
  "filters": [
    {
      "type": "drop",
      "include": "Level == Verbose"
    }
  ],
  "outputs": [
    {
      "type": "ApplicationInsights",
      "instrumentationKey": "[I have this set correctly in my code, but am omitting the key from this code sample]"
    }
  ],
  "schemaVersion": "2016-08-11"
}

Meanwhile, I added a using statement to Program.cs to set up the diagnostics pipeline (enclosing all of the boilerplate code):
using (var diagnosticsPipeline = ServiceFabricDiagnosticPipelineFactory.CreatePipeline("MyCompany-SFApp-SFStateless"))

I have created the cluster and published the Stateless app in Visual Studio by right clicking on the SFApp service fabric project and then choosing the Create New Cluster menu option. The cluster does get created and deployed without any apparent errors. It just doesn't seem to run my code.

When I opened the solution, I got a message that I didn't have Net.Core 3 preview installed. So I downgraded it to 2.2 to run.
I'm not particularly familiar with the requirements here, but could it be that there needs to be a Net.Core 3 Runtime installed, and that's why it's not coming up?
You should check the Windows Event Log on the cluster VMs for errors, that's usually a good place to start in case of "silent" failures.
I'd also highly recommend to honor the RunAsync cancellation token, but that's not the reason of your issue.
BTW, your instrumentation key is in the repo ;)

Thank you @tuhland. I did try changing the target framework to netcoreapp2.1 (and just tried again), and I had the same problem. I was able to run the code locally, but was not able to deploy.
I left the instrumentation key for now (and am monitoring usage) so that I could confirm whether someone successfully gets this to work. I can see that someone was able to run the stateless service locally (as I was), and that the cluster continues to run locally on a machine in Germany. But it does not appear that anyone has executed the code within a cluster, since then the node ID would be something other than "0". Meanwhile, I have found nothing interesting on the logs automatically placed in the cluster storage account.
I will point out one thing that I do think is a bit strange related to my use of .Net Core and perhaps is part of the problem: When creating a Service Fabric application under Visual Studio 2019, after choosing Service Fabric, the next screen asks for what version of the .Net Framework to target. (See attached image

.) A version must be selected (and I left this as is). Then, there is a new screen where one can choose to have a .Net Core Stateless Service (and on my machines, .Net Core 3.0 was automatically selected as the appropriate version). So, the service fabric project is .Net Framework, while the stateless service is .Net Core. Again, this is just following the Visual Studio wizard for creating a new project. However, it is a different behavior than the walkthrough says will occur. The walkthrough does not show the screen asking for a .Net Framework version.

The local deployment is mine. Since you ignore the cancellation token, it‘s a bit harder to stop it. But I‘ll kill it tomorrow.
Did you RDP into the cluster VMs to look at the Event Log there?

This is an excellent suggestion. I was eventually able to do this. (For the reference of anyone else who may be interested in using RDP into a Service Fabric instance, this page is helpful. In addition, as discussed here, when deploying the cluster, you should select an operating system with a graphical interface, such as Windows Server 2016 - DataCenter.)
The seemingly most relevant error that I received was:

Unhandled exception occurred:System.OperationCanceledException: The operation was canceled. at Microsoft.Azure.ServiceFabric.Extension.Core.NodeBootstrapAgent.d__92.MoveNext()

(Incidentally, the reason that I ignore the OperationCanceledException is solely because I want to make sure that the node continues to run for purposes of debugging this problem. Originally, I did not ignore the exception.) One second earlier, the following warning appeared:

ERROR: System.OperationCanceledException: The operation was canceled.
at System.Threading.CancellationToken.ThrowOperationCanceledException()
at Microsoft.Azure.ServiceFabric.Extension.Core.AzureConfigFileParser.d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.ServiceFabric.Extension.Core.NodeBootstrapAgent.d__97.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.ServiceFabric.Extension.Core.NodeBootstrapAgent.d__92.MoveNext()

These might be relevant. But this discussion suggests that this is a transient error that may be ignored.
Looking specifically at Service Fabric events, nothing seemed especially relevant. The most interesting thing seemed to be the following warning appearing numerous times:

Unsafe upgrade detected: VoterCount=1

And there was this error, probably irrelevant:

Kernel crash upload is configured but failed to get kernel crash dump folder.


Update quickstart.md

Why:
Closes [issue link]

What's being changed (if available, include any code snippets, screenshots, or gifs):

Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

I am Lerner and I just tried.

@AmareshMuddebihal Thank you for opening a PR, but we are not going to accept this change 💛
Please take a look at our help wanted section to find open issues you can work on.
Thank you for your interest in improving GitHub Docs! :sparkling_heart:


fix "getting started" example in README

Hi @mousetraps, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Sara Itani). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;


New collections created through Robomongo do not show up on Parse Dashboard.

I have an iOS App using Parse Server on Heroku. Reading or writing from my collections works well.
However, new collections created via Robomongo cannot be viewed via Parse Dashboard 1.0.13 because creating a collection outside the Parse Dashboard doesn't create the needed metadata, i.e. the _SCHEMA collection.
Steps to Reproduce:

Create new collection via Robomongo
New collection is not visible in Parse Dashboard

Thank you!

You can fix this by creating the class through the dashboard first, or by inserting the metadata manually.


Feature/ai door electricute for real

About the PR

Why / Balance

Technical details

Media

Requirements

[ ] I have read and am following the Pull Request and Changelog Guidelines.
[ ] I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog

Hype

Headphone warning for the Airhorn when electrifying the door. Ouch. My only complaints are the sound made when electrifying the door, why a airhorn? I also still don't like the sound for Emergency access either. Just my 2 cents.

Headphone warning for the Airhorn when electrifying the door. Ouch. My only complaints are the sound made when electrifying the door, why a airhorn? I also still don't like the sound for Emergency access either. Just my 2 cents.

Its mostly due to the quality of the clips, i believe

Personally I don't think electrifying a door should make a sound, especially one like that.  EA could have a sound, but that one doesn't sound great. Works as a placeholder at least.

there is a hidden feature - it plays sounds ONLY to AI.

Updated media with cool (and more up to date) video from ScarKy0


IAM API Accounts Management Export Primary / Secondary fixes

See Denise's email regarding different account types

Done


view call doesn't work on betanet

On betanet, because the account register.near doesn't exist, a view call will fail if --accountId is not specified. The reason is this line will default to use register.near if no account is specified and the user hasn't logged in yet. https://github.com/near/near-shell/blob/95c0c5e33fb5af9d9f319a00858c4a0759c50c2c/index.js#L51 While it is easy to fix this by creating register.near, I think we shouldn't rely on the existence of some account on every network. Furthermore, there is no reason that an account id has to be provided here. It seems rather an issue with how API is structured in near-api-js (I am not quite sure why viewFunction has to be a method on account).

To reproduce, try the following with NODE_ENV=betanet:
near view unknown.test get_owner_id '{}'

[I] ➜ NODE_ENV=betanet bin/near view unknown.test get_owner_id '{}'
Using options: {
  networkId: 'betanet',
  nodeUrl: 'https://rpc.betanet.near.org',
  contractName: 'unknown.test',
  walletUrl: 'https://wallet.betanet.near.org',
  helperUrl: 'https://helper.betanet.near.org',
  methodName: 'get_owner_id',
  args: '{}',
  initialBalance: null
}
View call: unknown.test.get_owner_id({})
'rich-guy.betanet'

@bowenwang1996 looks like fix works fine


chart.data.datasets.data is showing in the chart.data.labels

Expected behavior
It´s a line chart with 2 lines.
It´s receiving data that consists in [{"Date":"value1","VoltsMin":"0.70","VoltsMax":"1.09"}]. I´m using the row() function to extract the information.
When the page is loaded, the information is put in place by the steps below:
chart.data.labels = DateChart;
chart.data.datasets[0].data= VoltsMinChart;
chart.data.datasets[1].data = VoltsMaxChart;
chart.update();
When the steps above are loaded, the chart shows the information correctly.
Current behavior
The rest of the information to display after the page is loaded, is done by the push() method, like below:
chart.data.labels.push(DateChart);
chart.data.datasets[0].data.push(VoltsMinChart);
chart.data.datasets[1].data.push(VoltsMaxChart);
chart.update();
The steps above will show the information partially uncorrected.
The lines do show up, but the are 2 more labels without lines, one is presenting the value of "VoltsMinChart" and the other is presenting the value of "VoltsMaxChart". These 2 variables are for the lines, not the labels.
Reproducible sample
     Wemos    Controlador Voltagem do Sistema      Informações do Sistema Voltagem em tempo real: V  Voltagem de travagem configurada: V     Clicar para desbloquar as opções abaixo!    Introduzir nova voltagem de travagem pretendida: V  O valor apresentado é dividido por 100. (Ex: 5050 : 100 = 50.50v)
Optional extra steps/info to reproduce
The code that is dealing with the chart updates is shown below. It´s triggered by a websocket message that is received, that begins with the letter "l".
socket.onmessage = () => {
//console.log("On Message = " + event.data)
let dataReceived = event.data;
if (event.data[0] == "v") {
dataReceived = dataReceived.substring(1);
console.log("v = " + dataReceived)
document.getElementById("VoltReal").textContent = dataReceived;
} else if (event.data[0] == "l") {   //  <------------- STARTS HERE, THE REST ABOVE IS NOT PROCESSED BY THE CHART.UPDATE()
dataReceived = dataReceived.substring(1);
console.log("On event = " + dataReceived)
const json = JSON.parse(dataReceived);
DateChart = json.map(row => row.Date);
VoltsMinChart = json.map(row => row.VoltsMin);
VoltsMaxChart = json.map(row => row.VoltsMax);
console.log("DateChart =" + DateChart);
chart.data.labels.push(DateChart);
chart.data.datasets[0].data.push(VoltsMinChart);
chart.data.datasets[1].data.push(VoltsMaxChart);
chart.update();

}else{}
Possible solution
It works properly with chart.js 2.8 and below. But those are very old builds.
Context
chart.data.datasets.data is showing in the chart.data.labels
chart.js version
4.4
Browser name and version
Chrome 118
Link to your project
No response

When I look in the datasets I don't see any labels, can you add a jsfiddle or codepen with a reproducible sample?
https://jsfiddle.net/29sngvmL/

I´ve fixed the issue without using "push()". Thanks anyways.


Demo examples are completely broken

The examples on the demo site appear to be completely broken.  See the following:
http://codef0rmer.github.io/angular-dragdrop/#/sortable

@cquillen2003: Thanks for noticing it. It's because JS being served from http instead of https.

Thank you!  That was fast.


supporting mobile platform page validation

@mach6 i will update this PR, as soon as #315 is done.

@alizelzele #315 is now merged.

@mach6 ready to go ;)

@alizelzele merged .. thanks! also, fyi I don't think this change will require a doc update.


Menu bar is not loading if you don't enter a username in to the signup screen

I made an async error when I rewired the context service, and I managed to allow the menu bar to disappear if someone somehow doesn't have a username set up

Requires username to be returned in request to /api/user

Related to https://github.com/almighty/almighty-core/issues/735

Username will be returned by /api/user when the following PR is merged https://github.com/almighty/almighty-core/pull/692

almighty/almighty-core#692 has been merged - username is now available in JSON returned by /api/user

Details: http://swagger.goa.design/?url=github.com%2Falmighty%2Falmighty-core%2Fdesign#!/user/user_show


:fireworks: Updates maintenance/license year to 2024

Proposed Changes
Happy New Year 🍾

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (39f8029) 100.00% compared to head (b923943) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #68   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            6         6
  Lines          237       237
  Branches        41        41
=========================================
  Hits           237       237

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


TypeError: Cannot read property 'bind' of undefined

Thanks for developing this hubot package!
I downloaded it today for the very first time and wanted to create the following toy example:
HubotCron = require 'hubot-cronjob'

module.exports = (robot) ->
  # monday to friday, 11am
  pattern = '0 11 * * 1-5'
  timezone = 'Europe/Berlin'
  fn = ->
    robot.messageRoom 'testing', "Hey guys!"
  new HubotCron pattern, timezone, fn

But this throws the following error:
[Tue Sep 06 2016 12:53:16 GMT+0200 (CEST)] ERROR Error loading scripts from npm package - TypeError: Cannot read property 'bind' of undefined
  at HubotCron (/home/hubot/bot/node_modules/hubot-cronjob/src/cronjob.coffee:11:20, <js>:12:59)
  at Robot.loadExternalScripts (/home/hubot/bot/node_modules/hubot/src/robot.coffee:401:11, <js>:272:39)
  at /home/hubot/bot/node_modules/hubot/bin/hubot:152:11, <js>:159:26
  at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:445:3)

Any ideas on fixing this?

Hi, so I just tried to copy paste this and it works well for me. Can you post version of node, coffee-script, hubot, and hubot-cronjob you are using? Also, is this OSX or Linux or Windows? Maybe the full project source would help so I can reproduce the error.

I'm seeing this also.
node = 5.12.0
coffee = 1.6.3
hubot = 2.19.0
hubot-cronjob = 0.2.2
This is inside a Docker image ((phusion baseimage 0.9.18)[https://github.com/phusion/baseimage-docker/tree/rel-0.9.18], which is based on Ubuntu 14.04 LTS).

Any ideas here?

Cannot reproduce: https://github.com/PavelVanecek/hubot-cronjob-issue3-troubleshooting
Running both on host and in a container works for me. If you show me the failing code I can see what is wrong, until then: no ideas.

I had the same issue because I had listed "hubot-cronjob" in the external-scripts.json file. Removing it solved the problem.

Thanks @MrTrustor !
That fixes the problem :)


Added ability to set Capabilities and custom Firefox profile using Configuration.

As per this request I added the ability to set Desired Capabilities using Configuration class:
DesiredCapabilities myCapabilities = new DesiredCapabilities();
myCapabilities.setCapability("someCapability", "value");
Configuration.capabilities.set(myCapabilities);

You can also add a custom profile to your capabilities:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("intl.accept_languages", "de, en, en-us");
myCapabilities.setCapability(FirefoxDriver.PROFILE, profile);

This way your custom profile will override the default profile Selenide passes to the FirefoxDriver. If no profile is passed to the custom capabilities, the default Selenide profile will be used.

Changes Unknown when pulling 9fd8c76bd701d17a72550c5423ddc295dbb3513a on ostap-oleksyn:configuration_capabilities into ** on codeborne:master**.

Current coverage is 58.17% (diff: 25.00%)

No coverage report found for master at 453759b.

Powered by Codecov. Last update 453759b...9fd8c76

@ostap-oleksyn why Configuration.capabilities is ThreadLocal, thought all other fields in Configuration are not? Shouldn't we keep consistency?..

I don’t we need this any more, as since 4.2 the SystemProperties „capabilites.*“ are transformed in DesiredCapability - automatically.
There is some point to include also FirefoxProfile and ChromeOptions to have complete configuration in hand. I will do it in 4.3 or perhaps even in 4.2.1 as it is a small fix.
There are too many arbitary capabilites nowadays, that is why I don’t want to put some of the in Configuration.
And in the most cases, I want independent tests, that I would tweek with SystemProperties more than with Configuration Parameters.

Am 05.01.2017 um 20:44 schrieb Ostap Oleksyn<EMAIL_ADDRESS>As per this request https://github.com/codeborne/selenide/issues/444 I added the ability to set Desired Capabilities using Configuration class:
DesiredCapabilities myCapabilities = new DesiredCapabilities();
myCapabilities.setCapability("someCapability", "value");
Configuration.capabilities.set(myCapabilities);
You can also add a custom profile to your capabilities:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("intl.accept_languages", "de, en, en-us");
myCapabilities.setCapability(FirefoxDriver.PROFILE, profile);
This way your custom profile will override the default profile Selenide passes to the FirefoxDriver. If no profile is passed to the custom capabilities, the default Selenide profile will be used.
You can view, comment on, or merge this pull request online at:
https://github.com/codeborne/selenide/pull/449 https://github.com/codeborne/selenide/pull/449
Commit Summary
added possibility to add capabilities through Configuration
added javadoc
added ability to override default firefox profile
fixed javadoc
File Changes
M src/main/java/com/codeborne/selenide/Configuration.java https://github.com/codeborne/selenide/pull/449/files#diff-0 (12)
M src/main/java/com/codeborne/selenide/webdriver/WebDriverFactory.java https://github.com/codeborne/selenide/pull/449/files#diff-1 (17)
M src/test/java/com/codeborne/selenide/webdriver/WebDriverFactoryTest.java https://github.com/codeborne/selenide/pull/449/files#diff-2 (15)
Patch Links:
https://github.com/codeborne/selenide/pull/449.patch https://github.com/codeborne/selenide/pull/449.patch
https://github.com/codeborne/selenide/pull/449.diff https://github.com/codeborne/selenide/pull/449.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/codeborne/selenide/pull/449, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQ4YDmz5l9wVYbi4tN-q83hf4yMyF7Uks5rPUg3gaJpZM4LcDcX.

@asolntsev I just decided to make it thread safe in case someone would need to set different capabilities in different threads while running tests in parallel(I think it would be nice to make all configurations thread safe in the future). This can be changed if that's an issue.
@vinogradoff I know about SystemProperties „capabilites.*“, but using SystemProperties you can only set capabilities that have String as a value. There are capabilities that accept boolean as a value, for example acceptSslCerts. So if you try to set that capability like this:
@Test
public void test() {
    System.setProperty("capabilities.acceptSslCerts", "false");
    open("https://google.com.ua");
}

you will get an exception:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

	at org.openqa.selenium.firefox.FirefoxDriver.populateProfile(FirefoxDriver.java:183)
	at org.openqa.selenium.firefox.FirefoxDriver.extractProfile(FirefoxDriver.java:168)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:135)
	at com.codeborne.selenide.webdriver.WebDriverFactory.createFirefoxDriver(WebDriverFactory.java:127)
	at com.codeborne.selenide.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:47)
	at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.createDriver(WebDriverThreadLocalContainer.java:240)
	at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.getAndCheckWebDriver(WebDriverThreadLocalContainer.java:113)
	at com.codeborne.selenide.WebDriverRunner.getAndCheckWebDriver(WebDriverRunner.java:136)
	at com.codeborne.selenide.impl.Navigator.navigateToAbsoluteUrl(Navigator.java:68)
	at com.codeborne.selenide.impl.Navigator.open(Navigator.java:31)
	at com.codeborne.selenide.Selenide.open(Selenide.java:81)
	at com.codeborne.selenide.Selenide.open(Selenide.java:55)
	at com.codeborne.selenide.webdriver.Tst.test(Tst.java:12)
	...

Thanks for the showing the issue with boolean capabliity!
The design of Capability sucks :)
I will look if it is typical for Capability true/false to be booelan (I am afraid - not).
We can always solve it with like capabilites.boolean.acceptSslCerts - but it looks ugly.

Am 06.01.2017 um 09:32 schrieb Ostap Oleksyn<EMAIL_ADDRESS>@asolntsev https://github.com/asolntsev I just decided to make it thread safe in case someone would need to set different capabilities in different threads while running tests in parallel(I think it would be nice to make all configurations thread safe in the future). This can be changed if that's an issue.
@vinogradoff https://github.com/vinogradoff I know about SystemProperties „capabilites.*“, but using SystemProperties you can only set capabilities that have String as a value. There are capabilities that accept boolean as a value, for example acceptSslCerts. So if you try to set that capability like this:
@Test
public void test() {
System.setProperty("capabilities.acceptSslCerts", "false");
open("https://google.com.ua");
}
you will get an exception:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
at org.openqa.selenium.firefox.FirefoxDriver.populateProfile(FirefoxDriver.java:183)
at org.openqa.selenium.firefox.FirefoxDriver.extractProfile(FirefoxDriver.java:168)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:135)
at com.codeborne.selenide.webdriver.WebDriverFactory.createFirefoxDriver(WebDriverFactory.java:127)
at com.codeborne.selenide.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:47)
at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.createDriver(WebDriverThreadLocalContainer.java:240)
at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.getAndCheckWebDriver(WebDriverThreadLocalContainer.java:113)
at com.codeborne.selenide.WebDriverRunner.getAndCheckWebDriver(WebDriverRunner.java:136)
at com.codeborne.selenide.impl.Navigator.navigateToAbsoluteUrl(Navigator.java:68)
at com.codeborne.selenide.impl.Navigator.open(Navigator.java:31)
at com.codeborne.selenide.Selenide.open(Selenide.java:81)
at com.codeborne.selenide.Selenide.open(Selenide.java:55)
at com.codeborne.selenide.webdriver.Tst.test(Tst.java:12)
...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/codeborne/selenide/pull/449#issuecomment-270855948, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQ4YCagR2owoQ4ooc50-cMDpZHaKuLdks5rPfwNgaJpZM4LcDcX.

@vinogradoff You can see the list of Firefox capabilities and their values types here.


Add topic for "cst"

Please confirm this pull request meets the following requirements:

[x] I followed the contributing guidelines: https://github.com/github/explore/blob/main/CONTRIBUTING.md.
[x] I am not the sole author or employee of a company who created the topic or collection I'm changing.

Which change are you proposing?

[ ] Suggesting edits to an existing topic or collection
[x] Curating a new topic or collection
[ ] Something that does not neatly fit into the binary options above

Editing an existing topic or collection
I'm suggesting these edits to an existing topic or collection:

[ ] Image (and my file is *.png, square, dimensions 288x288, size <= 75 kB)
[x] Content (and my changes are in index.md)

Since there's already a topic for abstract syntax trees, it seems only logical to have that for concrete one's as well.

Curating a new topic or collection

[x] I've formatted my changes as a new folder directory, named for the topic or collection as it appears in the URL on GitHub (e.g. https://github.com/topics/[NAME] or https://github.com/collections/[NAME])
[ ] My folder contains a *.png image (if applicable) and index.md
[x] All required fields in my index.md conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

Since there's already a topic for abstract syntax trees, it seems only logical to have that for concrete one's as well.

Something that does not neatly fit into the binary options above

[ ] My suggested edits are not about an existing topic or collection, or at least not a single one
[ ] My suggested edits are not about curating a new topic or collection, or at least not a single one
[x] My suggested edits conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.

Failed check will be fixed by #3834


Exit with a non-zero return code when finding

Discussed in https://github.com/mercedes-benz/sechub/discussions/2827

Originally posted by fty4 January 17, 2024
Hi there,
I was wondering why the SecHub scan will exit with a non-zero return code when a RED finding was found.
See this quote from the documentation:

The SecHub client will exit with a non-zero return code per default only at a RED traffic light, but you can also configure the client to do this on color YELLOW.

IMHO this should not be the case.
The scan itself was successfully and therefore the return code should also be successfully.
When a wrong config was passed a non-zero return code would be fine but not if the report of the scan has a finding.
Even if the GH action scan will be continued (fail-job-with-findings input) an error will appear in the workflow log:
  RED alert - security vulnerabilities identified (critical or high)
Error: Exit code: 1

This should be prevented because the scan itself was successfully.
Code
https://github.com/mercedes-benz/sechub/blob/d2c7ba0c5853422d32c2641a54c7111db8111f42/github-actions/scan/src/main.ts#L60-L62
https://github.com/mercedes-benz/sechub/blob/d2c7ba0c5853422d32c2641a54c7111db8111f42/github-actions/shared/src/log-helper.ts#L9-L16

At the beginning of SecHub we made a survey and interviews.
Most be people wanted to have a breaking build (synchronous) some people wanted an asynchronous scan.
SecHub can do both ways: asynchronous and synchronous.
To have a breaking build because of RED findings at synchronnous we used the exit code 1. If there appears an unexpected error, we have dedicated, other exit codes.
Asynchronous scan shall NOT break the build - no matter if there is a RED finding or not .
It just triggers a scan and you can later check the result.
But the GH action for SecHub does currently only support synchronous scanning.

The problem I am facing is that the action throws errors which is not the desired state:

Wouldn't that be a good configuration option to have an option when the exit code will not be zero?
Please use mention next time if you move an discussion or similar - was really confused why the discussion tab was missing.

We could add this to the client - the default would be as before, but with an option the client could not fail (if wanted)...

Hi @de-jcup
@fty4 mentioned that he is using the Github Action.
As documented in https://github.com/mercedes-benz/sechub/tree/develop/github-actions/scan
there is a parameter fail-job-with-findings which can simply set to false.
When using the SecHub client and the CI pipeline shall not fail, then one can simply add || true which will result always in return code 0.
Example: sechub scan || true
Thus I would not recommend a new parameter for the client.


[FEATURE] Move from Cypress to Playwright

Description
Currently the tests are written in Cypress with Cucumber, however these need to be moved to Playwright (similar to the Finder project)
http://playwright.dev

Warning
this is for the nextjs branch

Note
You don't need to do all the tests, different people can do individual tests in a new PR

Screenshots
No response
Additional information
No response

Hey Eddie 🙋🏻♂ is no one is on this issue, I would be happy to do it.
I've been meaning to play around with Playwright, and this seems like a good opportunity.
Thanks and cool project 👍🏻

Hi Peter, sure sounds great 👍

Eddie,
Okay I went and joined the EddieHub so I should be good to go with the Org and the assignment 👍🏻
I'll go ahead and start planning this one out.
Thanks

Thanks @petercr , please create the issue for the test you will do, and we can assign that to you - this issue is an epic and won't be assigned as it is too big

Thanks Eddie 🙌🏻 yeah this does seem like it might be a little big for just one issue/PR.
Then I'd have to think of if you wanted me to squash the 18 commits in that PR... 😂
I will just open an issue for a specific test and make a PR for that issue 👍🏻

Eddie,
It looks like there is an implementation of Cucumber and Playwright together already on GitHub && NPM.
Link to the cucumber-playwright repo
There is the possibility that we could port all of the existing cypress tests written in cucumber and just switch out cypress for playwright.  Instead of re-writing all the tests.
Is that something you would be interested in, or would you rather go the route of re-writing the tests from scratch?
Either way works 👍
Thanks

Thanks Peter for doing that research. The community were not keen on Cucumber, so we decided to rewrite using vanilla Playwrght

Awesome 👍🏻 cucumber looks great...
but if you are used to writing tests in JS/TS it does seems like an extra step.
If you can write the tests, you probably should write the tests 😂
Thanks for all the info 🙌🏻

I am going to close this epic, there are still more tests to be written though


Saving notebook files with Ctrl+S in a Codespace is unresponsive or doesn't work

Repro Steps:

Open a notebook file in a new codespace.
Make an edit to the notebook file.
Try and save the notebook file using the shorthand (Ctrl + S)

The following was shown after many attempts of saving:

It could be an intermittent connection issue with the Codespace.

Saving isn't handled by the jupyter extension, but by VS code itself

The file cannot be saved due to a Canceled error. The Canceled error is thrown when the connection to the remote server is lost. So in this case, the root problem is the fact that you became disconnected. There are multiple reasons why you would become disconnected: wifi lost, a tab was left open for a very long time, etc.
Do you encounter often that you get disconnected? Do you have some repro steps?

This was a brand new Codespace I'd created. I waited for the initial environment setup to complete before opening the notebook file and attempting an edit. My tab wasn't open for very long and I wasn't aware that I was in a disconnected state (no feedback) when I tried to save the file.

My tab wasn't open for very long and I wasn't aware that I was in a disconnected state (no feedback) when I tried to save the file.

Disconnection can take up to 40-50s to be detected. We send pings every few seconds from the client to the server and if 20s elapse without a server message we begin reconnecting. We have received feedback that for many people prompting after 20s with a blocking dialog is too son (e.g. people using 4G in a train). So we have decided that when we first realize we have lost connectivity (20s elapse without a server message), we will reconnect silently.  If a further 20-30s elapse without being able to reconnect, then we show the blocking dialog. If reconnection succeeds, we don't interrupt the user further. So it is by design that it is possible to save a file (press ctrl+s) when being disconnected, but before the blocking dialog appears.
But in your case, it was even worse: reconnection did not work at all and you got prompted to Reload the window. This might indicate that the codespace went down, or the server process went down inside the codespace. Are you able to reproduce this?


Publishing a related crate

Hey there, I've recently started using Logos and really like it. In order to do nicer error handling for my parser, I've created a procedural macro which uses the token on a Logos enum to implement the Display trait automatically.
I would now like to publish this crate, but the obvious name of logos_display feels wrong because it seems to imply an official connection with the logos crate, even though there isn't. Do the maintainers of logos have any desires R.E. publishing third-party logos related crates?

Hello! Do you have some public repository on which we can see your crate?
And maybe some example usage of it? :-)

Quickly pushed it to https://github.com/Rafaeltheraven/logos_display, including a readme with examples.
There's no tests at the moment because I didn't feel like dealing with the proc_macro headache that entails :P

nice! How does it deal with regexes or multiple tokens for the same variant?

Explained in the README. If there is no token attribute, it just uses the name of the variant. If there are multiple tokens for the same variants they are concatenated with /. In all cases, you can use the override_display attribute to manually specify a string representation.

Then I'll probably stick to logos-display.
I considered support for regex attributes, but since the language a regex can accept is potentially infinite, the only representation that makes sense is just copy-pasting the regex itself. This is trivial as a default implementation, but it isn't very readable and I thought that using the variant name and override as needed would be the more common use-case (as it would just say I.E LitString as opposed to \$\(([^\)\\]|\\.)*\)).
I agree that a more modular approach to how concatenation works is a good idea though, which is partly why I haven't published the crate yet.

In my opinion, displaying the raw regex string is fine, as people are more likely to use it as a debugging tool.

I've published the crate with the name logos-display (https://crates.io/crates/logos-display) so I'll close this issue now.


💬 RFC: [Azure DevOps] Use entityRefs to Communicate With The Backend

🔖 Need
Currently the Azure DevOps backend and frontend API is has become a bit of a mess with various routes, subpaths, and query string parameters. This is causing it to be harder to build on new features and maintain the current ones.
Frontend AzureDevOpsApi: https://github.com/backstage/backstage/blob/fe2e15d4582a154b8ef208248b69ff81e52ed676/plugins/azure-devops/src/api/AzureDevOpsApi.ts#L39-L81
Backend router.ts: https://github.com/backstage/backstage/blob/fe2e15d4582a154b8ef208248b69ff81e52ed676/plugins/azure-devops-backend/src/service/router.ts#L57-L227
🎉 Proposal
I propose passing the entityRef from the frontend to the backend which would then look up the entity from the catalog and take the needed steps from there. Inspiration for this came from the Jira Dashboard's approach.
Frontend AzureDevOpsApi:
export interface AzureDevOpsApi {
  getRepoBuilds(
    entityRef: string
  ): Promise<{ items: RepoBuild[] }>;

  getGitTags(
    entityRef: string
  ): Promise<{ items: GitTag[] }>;

  getPullRequests(
    entityRef: string
  ): Promise<{ items: PullRequest[] }>;

  getDashboardPullRequests(
    entityRef: string
  ): Promise<DashboardPullRequest[]>;

  getAllTeams(): Promise<Team[]>;

  getUserTeamIds(userId: string): Promise<string[]>;

  getBuildRuns(
    entityRef: string
  ): Promise<{ items: BuildRun[] }>;

  getReadme(entityRef: string): Promise<Readme>;
}

Backend router.ts:
This:
router.get('/builds/:projectName/:repoId', async (req, res) => {
    const { projectName, repoId } = req.params;
    const top = req.query.top ? Number(req.query.top) : DEFAULT_TOP;
    const host = req.query.host?.toString();
    const org = req.query.org?.toString();
    const buildList = await azureDevOpsApi.getBuildList(
      projectName,
      repoId,
      top,
      host,
      org,
    );
    res.status(200).json(buildList);
  });

Could become this:
router.get('/builds/:entityRef', async (req, res) => {
    const { entityRef } = req.params;
    const entity = catalogApi.getEntityByRef(entityRef)
    const buildList = await azureDevOpsApi.getBuildList(
      entity
    );
    res.status(200).json(buildList);
  });

Note: some of the logic would be moved around and into the AzureDevOpsApi
〽 Alternatives
I'm not sure any alternatives. We could continue down the road we are going and things could end up being just be fine that way.
❌ Risks
I'm not aware of any other initiatives that would impact this. This aspect of the Azure DevOps plugin is pretty isolated.
👀 Have you spent some time to check if this RFC has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Once we settle on this and decided if it's the right direction I'm willing to do the work needed for this in the Spring (April-May).
@marleypowell @afscrome @deepan10 would like your thoughts on this? Am I making this a bigger deal then it needs to be?

The one drawback I can see with taking an entityRef is it now means that every call to the azure devops api will result in an additional database call to load the entity.  A single call doesn't matter much, but the volume could add up.  Maybe the core backstage team have a general thought about whether backends should take an entity ref (simple, but extra db load), or whether the client side should process the entity annotations and send them to a backend.
If the focus is to remove some of the duplication in the azure devops api code, I wonder if there are some other ways we can do this without needing to load the entity again on the server.
Off the top of my head, a couple of ideas - I'm not hugely familiar with this portion of the Azure Devops so if there's somethign small not lining up with your expectations, it is likely a mistake on my part.
Idea 1
One way could be to introduce a type for the common azure devops info, with a common method to extract it. e.g.
type RepoInfo = {
    host: String,
    org: String
    projectName: String,
    repoId: String
}

That would then leave the AzureDevOps api being more like:
export interface AzureDevOpsApi {
  getRepoBuilds(
    repoInfo: RepoInfo,
    options?: RepoBuildOptions,
  ): Promise<{items: RepoBuild[];}>;

  getGitTags(
    repoInfo: RepoInfo,
  ): Promise<{items: GitTag[]; }>;

  getPullRequests(
    repoInfo: RepoInfo,
    options?: PullRequestOptions,
  ): Promise<{items: PullRequest[];}>;

  getAllTeams(): Promise<Team[]>;

  getUserTeamIds(userId: string): Promise<string[]>;

  getBuildRuns(
    repoInfo: RepoInfo, //The RepoInfo here is a bit odd - it's only used for org and host, repo & project are ignored
    definitionName?: string,
    definitionProject?: string,
    options?: BuildRunOptions,
  ): Promise<{items: BuildRun[]; }>;

  getDashboardPullRequests(
    repoInfo: RepoInfo,
  ): Promise<DashboardPullRequest[]>;

  getReadme(opts: ReadmeConfig): Promise<Readme>;
}

The router could then look like:
router.get('/builds/:projectName/:repoId', async (req, res) => {
    const repoInfo = extractRepoInfo(req);
    const top = req.query.top ? Number(req.query.top) : DEFAULT_TOP;
    const buildList = await azureDevOpsApi.getBuildList(
      repoInfo
      top
    );
    res.status(200).json(buildList);
  });

// This function would be shared by all routers
function extractRepoInfo(req) : RepoInfo
{
    return {
        projectName: req.params.projectName,
        repoId: req.params.repoId,
        host: req.query.host?.toString(),
        org: req.query.org?.toString(),
    }
}

Idea 2
What if rather than having a single instance of AzureDevOpsApi, we instead had one per host/org.
export interface AzureDevOpsApi {
    constructor(
        host: string,
        org?: string
    )

    getRepoBuilds(
        project: string,
        repoId: string,
        options?: RepoBuildOptions,
    ): Promise<{ items: RepoBuild[]; }>;

    getGitTags(
        project: string,
        repoId: string,
    ): Promise<{ items: GitTag[]; }>;

    getPullRequests(
        project: string,
        repoId: string,
        options?: PullRequestOptions,
    ): Promise<{ items: PullRequest[]; }>;

    getAllTeams(): Promise<Team[]>;

    getUserTeamIds(userId: string): Promise<string[]>;

    getBuildRuns(
        project?: string,
        definition?: string,
        options?: BuildRunOptions,
    ): Promise<{ items: BuildRun[]; }>;

    getDashboardPullRequests(
        project: string,
        repoId: string,
    ): Promise<DashboardPullRequest[]>;

    getReadme(opts: ReadmeConfig): Promise<Readme>;
}

With the router being somethign like
router.get('/builds/:projectName/:repoId', async (req, res) => {
    const { projectName, repoId } = req.params;
    const top = req.query.top ? Number(req.query.top) : DEFAULT_TOP;
    const buildList = await getAzureDevopsApi(req).getBuildList(
      projectName,
      repoId,
      top
    );
    res.status(200).json(buildList);
  });

// This function would be shared by all routers
function getAzureDevopsApi(req) : AzureDevopsApi {
    return AzureDevopsApiFactory.get(
        req.query.host,
        req.query.org);
}

Having one `AzureDevopsApi` instance per host/org, could help to resolve the need to rebuild the WebApi you mentioned in https://github.com/backstage/backstage/pull/21796#issuecomment-1850676417

@awanlin, I was thinking the same when we implemented the permission framework with azure-devops plugin. We are passing the entityRef to the backend to utilize the resource-based permission.
The setup has been implemented in azure-sites plugin, the only difference is it uses the catalogApi to get the entity to validate and perform start and stop. We are doing this way to avoid any possible threat of an external Azure App/Web application. So each backend call undergoes an API discoverApi call to get entity JSON by `entities/by-name/{kind}/{namespace}/{name}.
https://github.com/backstage/backstage/blob/36dbf7e6a161b8d7320e4ebc521cd00e58e1b79d/plugins/azure-sites-backend/src/service/router.ts#L76-L86
@afscrome I agree with you, we shouldn't overload the DB fetch, but again this approach will perform one more API call behind the scene.
Also, it would be cleaner and more secure to get the PRs/Pipeline/Tags just passing by the entityRef

Thanks for the feedback @afscrome, the performance hit is a valid concern, I would like to hear the maintainers thoughts on that 👍
I think my over all issue is that we are passing around a lot of small bits either in the route or as query string parameters and it feels hard to track it all across the various features. The code is pretty settled but each time I or we make changes it means trying to remember all the history of why and how things work. Using the entityRef would help simplify things. But also, adding more tests could be the other way to help with my core concern.

I like it! 👍 (the original proposal). Deferring to an entity lookup in the backend is the most flexible and preferred (if advanced) approach. You may want to forward the entityRef all the way to the AzureDevOpsApi though since that'll let you do the entity lookup with a minimal number of fields. Performance concerns can be addressed by introducing a data loader or short-term cache, if needed.


refactor to use workshop_type instead of workshop booleans

Signed-off-by: Adam Miller<EMAIL_ADDRESS>SUMMARY

refactor to use workshop_type instead of workshop booleans to make it easier to extend to new use cases

ISSUE TYPE

Feature Pull Request

COMPONENT NAME

provisioner/provision_lab.yml

can we switch this to the new devel branch so we can both work in there? just to be safe to make sure we don't mess anyone up, i am doing some fork lifting in there as well....

Thank you so much @maxamillion


Improve the tool strip renderer

The previous tool strip renderer generated by
ToolStrip Customizer for .NET WinForms has several drawbacks.
We need a better way to customize the tool strips to suite the color palette based themes.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

The following gaps are there,

[x] Colors do not come from the color palette. (Added the colors to palette.)
[x] Grips do not match VS style. (Used Microsoft reference code to fully customize them.)
[ ] Status bar highlights.
[ ] Text colors.
[ ] Check box rendering.
[ ] many others.

Luckily Microsoft reference code contains the code we need to fully customize such elements, so bit by bit the above gaps can be filled.

I won't finish the remaining tasks as they are quite time consuming. It would be great if any community member steps up.
The items can be implemented by analyzing how Microsoft renders the strip elements by default in ToolStripProfessionalRenderer and ToolStripRenderer. So ideally, VisualStudioToolStripRenderer should derive from [ToolStripRenderer] directly.

Close it now. Anyone who would like to work on it can send a pull request.

Related to #605


KMS Keys are not getting the stacks default tags

Hi,
KMS keys don't get tagged with cloudformation default tags:
aws:cloudformation:logical-id
aws:cloudformation:stack-name
aws:cloudformation:stack-id

This was reported here: https://github.com/aws-cloudformation/aws-cloudformation-coverage-roadmap/issues/193, but was closed, when it seems that it is not so.

@pplu I dont think this resource support CloudFormation stack-level tags with the prefix aws::.

@ammokhov : I'm opening this as an issue because I was expecting the KMS cloudformation provider to tag the KMS keys it creates with the aws:clouformation tags, that help identify what stack created which KMS key.

For example, the stack tags are propagated to S3 buckets for example and EC2 instances.
I just discovered today that the same is not true of KMS keys.
I don't see the resource provider code for those resources in the Github organization.
Do any of the published resource providers have an example of how to implement this?

Do any of the published resource providers have an example of how to implement this?

you mean aws prefixed tags or stack level tags? stack level tags are usually attached to stack and are provisioned to each individual resource that belongs to the stack (if supports tags) unless your execution role is missing correct permissions.

Do any of the published resource providers have an example of how to implement this?

you mean aws prefixed tags or stack level tags? stack level tags are usually attached to stack and are provisioned to each individual resource that belongs to the stack (if supports tags) unless your execution role is missing correct permissions.

I'm adding here (again) the details for this issue of #33:
Issue Description
To find the right CloudFormation Stack, where a AWS resource is defined/maintained, aws:cloudformation:* built-in tags are needed. This is an important function in day-to-day business.
Expected Behavior
Resources with type AWS::KMS::Key, which are managed as CloudFormations Stacks, should automatically receive the aws:cloudformation:* built-in tags / automatic default CFN AutoTags.
Once support CloudFormation Drift-Detection will be added via https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/1671, please handled by those automatic tags correctly (hence, aws:cloudformation:* tags are not a drift)
Observed Behavior
When you have an AWS::KMS::Key resource in your stack, it does not get the built-in tags assigned:

aws:cloudformation:stack-name
aws:cloudformation:logical-id
aws:cloudformation:stack-id

Test Cases
Example Templates: Deploy this Stack in one Region:
Resources:
  EncryptionKey:
    Type: 'AWS::KMS::Key'
    Properties:
      Description: TestKeyForTags
      EnableKeyRotation: true
      MultiRegion: true
      Enabled: true
      Tags:
        - Key: "Stack Name Not Default Tag"
          Value: !Ref AWS::StackName
      KeyPolicy:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              AWS: !Sub 'arn:${AWS::Partition}:iam::${AWS::AccountId}:root'
            Action:
              - 'kms:*'
            Resource: '*'

You will see on both Resources that aside from CloudFormation defined Tags, no other Tags are placed onto the Resources.
No tags aws:cloudformation:* are added to the resource (just the tags defined via Template-Resource-Level or via Stack-Level).
Links

https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/2077


REPL causes tab to become unresponsive on infinite loop in compiled code

Hey y'all—
Opening up the REPL and then typing or pasting the following:
var cbs = [];

for (let i=1; i++; i<5) {
  cbs.push(function() { return i; });
}

causes the tab to become unresponsive for me on both Chrome and FF. Sorry for lack of better test case and debugging info; the tab dying makes it hard to figure out what happened :/ I just idly wanted to see if let fixes for loop scope problems in ES6 and stumbled across this in the process.
Note that various permutations of this input don't trigger the problem, for example:
for (let i=1; i++; i<5) {
  cbs.push(function() { return i; });
}

var cbs = [];

is fine.

I think that the REPL is hanging due to the first example provided being an infinite loop.

Opening up the REPL and then typing or pasting the following:

var cbs = [];
>
for (let i=1; i++; i<5) {
    cbs.push(function() { return i; });
}

A possible solution would be to (somehow) include https://github.com/jsbin/loop-protect to try to prevent infinite loops from occuring.

oh wow sorry, you're right — i actually hadn't realized that the code actually gets run after being compiled. i suppose thats why its called a repl though 😆

i have no idea if its even possible or reasonable to fix this then

You can uncheck the evaluate checkbox to disable evaluation. Seeing as CodePen, JSBin, and other similar services seem to do this, I think it is possible for it to be done -- although perhaps out of scope of what the REPL is intended for.

yeah i also didn't realize i screwed up the loop since i havn't written js in ages 😅 if you want to close i think that would be totally reasonable

Considering code is generally assumed to be pure (not manipulating dom, etc) it could be run in a worker along with the babel syntax transform. Prevent long compilation/execution from freezing the editor, and it doesn't even need to have babel included on the repl page, as nice side effects.
If the worker doesn't respond after N amount of time, you can worker.terminate().

We can use https://github.com/fkling/astexplorer/blob/be1e07ed7d8ebf6453c95211734040f3375e43a8/src/TransformOutput.js#L21-L35 halting-problem/loop protect like mentioned if someone wants to PR

That is completely crazy and clever as hell
On Nov 11, 2016 8:17 AM, "Henry Zhu"<EMAIL_ADDRESS>wrote:

We can use https://github.com/fkling/astexplorer/blob/
be1e07ed7d8ebf6453c95211734040f3375e43a8/src/TransformOutput.js#L21-L35
halting-problem/loop protect like mentioned if someone wants to PR
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/babel/babel.github.io/issues/352#issuecomment-259955187,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABJFP92GoYpgO4ndFtlwguA9OVg7PfA_ks5q9GrVgaJpZM4FNJSZ
.


Exporting E2E keys in RiotX not working

When I export the E2E keys from the RiotX App it creates a new file in the downloads folder, but when I try to import the keys (either in RiotX or the desktop app) it fails with the message Trailer line not found.
When I check the generated file it looks like this:
-----BEGIN MEGOLM SESSION DATA-----
<about 28000 lines of base64 data with newline every second line>

It seems there is not corresponding -----END MEGOLM SESSION DATA-----.
I tried the workaround to add the -----BEGIN MEGOLM SESSION DATA----- line by hand, but that did not fix it and only changed the error to Authentication check failed: incorrect password?
The RiotX app is version 0.20.0 [40020002] (G-b2640)

Please open RiotX (which is now Element-Android) into this project: https://github.com/vector-im/element-android

@bmarty can you clarify what you mean by open RiotX into element-android?

@JustinTArthur he is asking you to file the issue here: https://github.com/vector-im/element-android/issues

Yes, sorry for the typo, I mean "Please open RiotX issues into Element Android project"


Library should target .NET Standard 2.1 and eliminate Newtonsoft dependency

Describe the bug
Library should target .NET Standard 2.1 and eliminate Newtonsoft dependency
Expected behavior
Library should target .NET Standard 2.1 and eliminate Newtonsoft dependency
Additional context
Microsoft is breaking the Newtonsoft dependency with .NET Standard 2.1 and so should libraries.

Hey thanks for opening this issue. I'm not sure how to solve this. The client uses net standard 2.0, but I do not see how 2.1 would solve the Netwonsoft issue? How the replacement should work?
I think there is no direct json in the standard. Sorry but I'm not a .Net expert could you elaborate on that?
I found this in the .net standard  FAQ

Why is JSON.NET not part of .NET Standard?
Today, one of the most popular libraries for dealing with JSON is JSON.NET. But by adding it to the .NET Standard we'd do the community a disservice. What matters is that the JSON support is widely available. And James, the author of JSON.NET, does a great job making sure that JSON.NET is available everywhere. His ability to do this successfully is a function of how hard it is for him to make changes. The best way to do this is by creating a library that targets .NET Standard because it can be updated independently from the standard itself and everyone immediately benefits.
Of course, this doesn't mean we can't or shouldn't provide some built-in JSON support. We've talked with James about this in the past and I believe there is a lot of opportunity for us to collaborate with him on an even more performant way to provide JSON support in .NET. However, we're very interested in doing this with him rather than just building "another" JSON.NET. We want a strong ecosystem for .NET, but this can only happen if we embrace libraries based on merit, rather than by who wrote it. That's what open source is all about.

Take a look at this https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#fast-built-in-json-support.  .NET Core 3 and .NET Standard 2.1 no longer depend on JSON.NET.

Actually I was thinking of dropping the usage of Newtonsoft.JSON for deserialization. It is only used in ActivatedJob and I'm not sure if this is really useful. I would like to keep this minimal as possible and then just return the variables as string (json).
What do you think?

I think that's a good compromise because you eliminate the dependency and you can still target Standard 2.0.


Limit Certain Permissions

Google has defined a set of permissions that they consider “dangerous”
and can only be used in an application under certain specific
circumstances and then only with special permission from Google. This is
enforced when an application is submitted to the Google Play Store, not
on a device.
This change causes these permissions to not be included in the MIT AI2
Companion. However it is controlled by the “limitPermissions()” flag in
the AppInventor features module. Change the return value to “false” to
give the Companion these permissions.
Change-Id: I0fa3b2e928e7aa53c70cd339f50ed11008fe1876

@ewpatton @SusanRatiLane @halatmit Note: A version of this change was used to build the Companion currently in the Play Store.


[Feature] Added Referrer for Facebook Messanger Adapter m.me links

Ref param as documented:
https://developers.facebook.com/docs/messenger-platform/discovery/m-me-links

 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.:x: sLedgem sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

@garypretty Can you take a look at this when you get a moment?


Update Storage versions after May 2022 patch releases.

API change check for com.azure.spring:spring-cloud-azure-core
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-core

API change check for com.azure.spring:spring-cloud-azure-service
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-service

API change check for com.azure.spring:spring-cloud-azure-trace-sleuth
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-trace-sleuth

API change check for com.azure.spring:spring-messaging-azure-storage-queue
API changes are not detected in this pull request for com.azure.spring:spring-messaging-azure-storage-queue

API change check for com.azure.spring:spring-cloud-azure-autoconfigure
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-autoconfigure

API change check for com.azure.spring:spring-cloud-azure-actuator
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-actuator

API change check for com.azure.spring:spring-cloud-azure-actuator-autoconfigure
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-actuator-autoconfigure

API change check for com.azure.spring:spring-cloud-azure-native-configuration
API changes are not detected in this pull request for com.azure.spring:spring-cloud-azure-native-configuration

API change check for com.azure:azure-storage-common
API changes are not detected in this pull request for com.azure:azure-storage-common

API change check for com.azure:azure-storage-blob
API changes are not detected in this pull request for com.azure:azure-storage-blob

API change check for com.azure:azure-storage-blob-batch
API changes are not detected in this pull request for com.azure:azure-storage-blob-batch

API change check for com.azure:azure-storage-blob-cryptography
API changes are not detected in this pull request for com.azure:azure-storage-blob-cryptography

API change check for com.azure:azure-storage-file-share
API changes are not detected in this pull request for com.azure:azure-storage-file-share

API change check for com.azure:azure-storage-file-datalake
API changes are not detected in this pull request for com.azure:azure-storage-file-datalake

API change check for com.azure:azure-storage-internal-avro
API changes are not detected in this pull request for com.azure:azure-storage-internal-avro

API change check for com.azure:azure-storage-queue
API changes are not detected in this pull request for com.azure:azure-storage-queue


K-combinator: There seems to be a mix-up between tap and always

The definition of a K-combinator is a -> b -> a
R.tap annotation is (a → *) → a → a
R.always annotation is a → (* → a), and the documentation says "This function is known as const, constant, or K (for K combinator) ..."

So:

R.tap is close, but it requires a function
R.always is not a K-combinator
An implementation of K that would remove the need of R.always and R.tap could be:

const K = (a, b) => {
  (b instanceof Function) && b(a);
  return a;
};

Here's the implementation of the K combinator in JavaScript:
//    K :: a -> b -> a
const K = a => b => a;

The second argument should be ignored.

Yes, which is what I wrote, but we could make a small extension to K and replace tap and always, especially since always is not a K.

tap is quite different from K, though:
//    tap :: (a -> b) -> a -> a
const tap = f => x => (f(x), x);

I'm not saying they are the same, just that tap and always could be combined with an extended version of K.
R.always and K not the same either, so the documentation for R.always should at least be changed.
Although tap is not exactly a K, it has been mentioned as K, e.g. by Reginald Braithwaite in his book JavaScript Allongé (https://leanpub.com/javascriptallongesix/read).

I think the documentation mentions K because:
R.always("a")("b"); //=> "a"
K("a")("b"); //=> "a"

An implementation of K that would remove the need of R.always and R.tap could be:

I don't think that would remove the need for R.always.  If a happens a function then a should not be invoked with b. b may not even be an argument that a accepts.

That could be, but it's not what the annotation says. One returns a function and the other returns a value of the same type as the first input value.

R.always can act as the K-combinator.  Perhaps we should change the signature of always  to
always :: a -> (b -> a)

But this is one of those cases where the * might make more sense, because in always, each of those is true for an arbitrary 'x'.
always(x)() === x //=> true
always(x)('foo') === x //=> true
always(x)('many', 'more', 'args', 'here') === x //=> true

Especially important is the nullary case, which is different from the K-combinator.  Because several of us use it that way, we've resisted replacing this with a more strict K.  Any usage of K can be replaced by always, but the reverse isn't necessarily true.
We can't change the signature to the usual Haskell simplification of (a -> b -> a) because in Ramda that implies that you could also call it with two arguments to get your original value back, which you can't:
always(x, 'foo') === x //=> false

An implementation of K that would remove the need of R.always and R.tap could be:

const K = (a, b) => {
  (b instanceof Function) && b(a);
  return a;
};

This doesn't comfortably cover either case.  Here's how I would expect to use them (never mind that the functions are nonsense):
const foobar = ifElse(equals('foo'), toUpper, always('BAR'))

const transform = pipe(
  pluck('foo'),
  tap(console.log),
  map('toUpper')
)

Although tap is not exactly a K, it has been mentioned as K, e.g. by Reginald Braithwaite in his book JavaScript Allongé (https://leanpub.com/javascriptallongesix/read).

I have a great deal of respect for Reg, and the first edition of that book was a major inspiration for Ramda.  But K and tap are too different.  The only reason for  tap is to enable side-effects in your programming, and the focus is on those side-effects.  K and always simply enable you to create a function that has a given fixed value as its result.


Check customisation

The customisation are not behaving as expected (or maybe I didn't understand), here the example:
POST /customisation
value:
{
	"customisation": {
		"wikipedia": [
			105942, 1499966, 4105431
		],
"lang": "fr",
		"texts": [
			"Place de la République, Hotel Moderne, vaste batisse où étaient logées les petites souris grises, d’autres disent « les Salamandres », jeunes allemandes en uniforme. Elles partent et elles ne pouvait emporter qu’un léger bagage à la main. Jetons aux combinards de Vichy et de Washington, en défi, une tête de traître."
		],
		"description": "customisation for the ww2 french liberation"
	}
}

name: ww2fr
But then when analysing the sentence:
Jetons aux combinards de Vichy et de Washington, en défi, une tête de traître.
Vichy is not recognised as Regime de Vichy but as Vichy the town, when in the customisation I have added the wikipedia id of the Regime de Vichy.

It's a very stupid bug, when processing the relatedness the entity in the context was ignored if it was exactly the same as the candidate to be disambiguated :/
So it practices it was doing the exact opposite of what is intended in this case.
Fixed in branch branch 0.3.0.

still to be tested when merged !

Maybe I'm missing something but the customisation doesn't seems to be used at all in the branch0.0.3.

This issue should now have been fixed. Need some thoughful testing.


Fixed error in translation of "Node"

[ ] I have read freeCodeCamp's contribution guidelines.
[ ] My pull request has a descriptive title (not a vague title like Update index.md)
[ ] My pull request targets the master branch of freeCodeCamp.
[ ] None of my changes are plagiarized from another source without proper attribution.
[ ] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[ ] My changes do not use shortened URLs or affiliate links.

Closes #XXXXX

LGTM 👍
Thanks for your contribution @NachoCoding, keep it up!


[Help] Notify if individual panel appears to not be producing

I have everything setup in HA and the graphs and everything are looking good.  Right now I have 36 panels (each with their own inverter), and I'm trying to determine how I can monitor and notify me if a panel does not seem to be producing.
The problem I can see is based on the device list and the json output (as well as looking on the website), I have 2 inverters producing 0W and one other producing much lower than the others (i.e. 30W compared to the others that are producing 280W).
Is there an easy way to look at the total solar produced in a day on a per panel basis and notify me if any are not working or much lower than the others?
I've had solar for 8 years and it has been working flawlessly but I don't see an easy way to do what I need without checking the data on a daily basis.

since the inverters are individually sensor'd on home assistant the better way might be to have an automation fire off a notification when it detects too much of a delta between panel sensors power readings?

I couldn't figure out a clean way to do this in HA, but I ended up writing a program in c# that takes a snapshot each night near the end of the day.
It logs the following to a database:

Per panel production
Home consumption for the day.

For each panel if the amount of power it produced compared to the average of all of the panels is less than half, it flags that panel.
It then sends me an email that shows the total production, each panels production, my consumption and how many panels are flagged for under-production


Add license file

As I couldn't find any license headers in the sources, and no license file has been supplied previously, I've taken the liberty to add one with @Grokzen details.

Coverage remained the same at 87.2% when pulling c03708e6af3071e322a121de9dec00ba18f3d0a0 on citation-file-format:license into e7fac6a5f5d27a472b206b896f684ee83650b5be on Grokzen:master.

Added a proper license file to the repo. Clsoing this as fixed.


Add photo showing how to line up debugger with Patch SM

I am probably going to get a debugger soon... If so, I will try to attach an image of the connection with my patch.init(), if that helps, too?

wait, i just found this:
https://forum.electro-smith.com/t/patch-init-and-stlinkv3/3222/9 - you could link that :)

A photo of the debugger lining up with Patch SM has been added.
https://github.com/electro-smith/DaisyWiki/wiki/1.-Setting-Up-Your-Development-Environment#4b-flashing-the-daisy-via-debug-probe