Official Ramda plugin for ESLint

I've been working on this project while Mathias Schreck was working in this one. We've talking about unifying our projects into one and mine currently satisfies the rules defined by him also. Under https://github.com/rung-tools/eslint-plugin-ramda, there is already :white_check_mark: 100% code coverage and some basic simplifications and a lot of ideas about Ramda refactoring that would be useful. We believe that having this as a centralized official code base for ESLint rules for Ramda would be good for the community, so, we want to open to discussion the possibility to have a repository inside :ram: organization called /eslint-plugin-ramda with that, and having this as the official plugin.
Thanks in advance!
Best regards from @haskellcamargo and @lo1tuma!

First, this is cool.
Second, I agree it makes sense to have a home under ramda org, my concern is: who would maintain it?

I would be proud to maintain the project, as long as I use Ramda all the time in my work, and everybody here where I work liked the feature. Also, maybe @lo1tuma too. Need to talk better to him.

This is great!
I'm currently studying compilers and have some ideas going on, so I do not bother in helping as a maintainer too.

I would love to help making this a successful eslint plugin and implementing some of the ideas we collected here.
Maybe also @gilligan, who implemented the first eslint-plugin-ramda rule with me, still has interest.

I would love to see this!  I'm with @buzzdecafe: so long as we have people interested in maintaining it, I think it would be great to include it inside the Ramda organization.

Having created the repository under :ram: organization, I can take care of moving the repository and @lo1tuma of publishing. There is, of course, documentation to do about everything. This we can do gradually.

I believe we have enough tests, rules and data for publishing the first release. @lo1tuma has access to eslint-plugin-ramda on npm. If possible, could somebody from :ram: organization create a repository give us initial access to continue the work?

@haskellcamargo:
I've just sent you an invite to become part of the Ramda team.  I believe once you accept that, you can initiate the transfer to Ramda.  When that's done, we can figure out who should be listed as collaborators.

@CrossEye could you please invite @lo1tuma too? He is the one who was working with me in the project and the owner of the eslint-plugin-ramda name. Thanks in advance!

i've added an eslint-plugin team, and invited @haskellcamargo and @lo1tuma

@cuchi: Would you like an invitation too?

@CrossEye sure, I would be happy to help.

Sent

@haskellcamargo I would like to help out where possible. Just let me know what the best way to help out would be. I think this would be an extremely helpful tool to have.

@mrosata we're still missing documentation for the current rules, configuration in some situations, scope resolving (for example, allow map and R.map) and rule suggestions. You can also contribute by suggesting simplifications and common patterns that could be caught by the linter or also implementing the autofix feature for some rules. If you want too, we can add you as a collaborator there and provide more details about the tasks! I'm very happy seeing community engaged! :smile:

I'm closing this issue for now. @mrosata, we'll be opening issues under the ramda-eslint-plugin with the possible tasks from where we can continue the discussion. Congrats for everyone here and let's make the world functional again!


GitHub Pages Outdated

The GitHub pages are outdated and haven't been updated recently.
Last update was July 2018.
Example:
http://googleapis.github.io/google-api-python-client/docs/dyn/drive_v3.html
(branch gh-pages)
APIs like Sheets should be included or this branch should be removed.

@grant Is there another place that hosts the Python docs?

@busunkim96 Not that I know of. I just reported the issue. I don't maintain the library.

Closed by #701


gdb breakpointing is relying on single stepping every instruction

Right now, in order to break on a specific function we are single stepping on every single instruction running in the VM and comparing the current PC to a list of breakpoints. This is extremely slow because the vcpu is exiting for every single instruction (although it works). Ideally, we could use some other technique:

mark the page as invalid so we only get exits on the page that includes the breakpoint (the instruction).
update the guest memory with some breakpoint instruction, so we get an exit just for the breaking instruction.
use some KVM API for this. There has to be some KVM api to break on a specific PC. Can't find it in the docs and QEMU does not seem to be using any. But there has to be something...

Fixed in #198.


CL needs unused function stripping

Consider: https://godbolt.org/g/XNvVyg - lots of EXTRN and unused code is generated.
@AndrewPardoe has some perl code that will help at: https://gist.github.com/AndrewPardoe/4f6770fee4853ccffb792e8f3e7951f1

Hey this is actually fixed the thing that @ubsan wrote for VC that evolved into the lib.f button. Just leaves some data, but all functions are eliminated. So I think we can close this old thing. ^^


Getting 415 error when sending via the API

Issue Summary
If I do the hello php code snippet with my API key, the email send without issue, but when I try and do this from within my application, I consistently get a 415 error. I've done headers_list() throughout the code and it always returns an empty array, so something else must be causing it to think it has the wrong header?
415
array (
  0 => 'HTTP/1.1 415 Unsupported Media Type
',
  1 => 'Server: nginx
',
  2 => 'Date: Wed, 22 Mar 2017 22:03:15 GMT
',
  3 => 'Content-Type: application/json
',
  4 => 'Content-Length: 92
',
  5 => 'Connection: keep-alive
',
  6 => 'X-Frame-Options: DENY
',
  7 => 'Access-Control-Allow-Origin: https://sendgrid.api-docs.io
',
  8 => 'Access-Control-Allow-Methods: POST
',
  9 => 'Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl
',
  10 => 'Access-Control-Max-Age: 600
',
  11 => 'X-No-CORS-Reason: https://sendgrid.com/docs/Classroom/Basics/API/cors.html
',
  12 => '
',
  13 => '',
)
'{"errors":[{"message":"Content-Type should be application/json.","field":null,"help":null}]}'

Technical details:

sendgrid-php Version: 5.4
PHP Version: 7.0

Sorry ... this was coder-error...

If anyone else is having this issue, make sure your API key doesn't (for whatever reason) have linebreaks at the end of it. In my case, I was reading creds from a repository-excluded file to test if my wrapper actually worked, and was puzzled when I kept getting a 415.

If you were to have a file like this:
.sendgrid: (notice the linebreak)
SG.**

and you used it like
$apiKey = file_get_contents('.sendgrid');
$sendgrid = new \SendGrid($apiKey);
$sendgrid->client->mail()->send()->post($message);

The raw HTTP request, sent by curl, would look like: (notice the linebreak)
POST /v3/mail/send
Host: api.sendgrid.com
Authorization: Bearer SG.**

User-Agent: sendgrid/*;php
Accept: application/json
Content-Type: application/json

This causes all the headers after the Authorization header to be treated as the message body and effectively ignored.
Hope I save someone a headache :smile:

Hi @AlbinoDrought,
Would you mind adding the trim fix to our docs via PR?


jdk8u x64 mac openj9 build hung waiting for node as no osx10.14 available

https://ci.adoptium.net/job/build-scripts/job/jobs/job/jdk8u/job/jdk8u-mac-x64-openj9/1480/console
15:14:09  [NODE SHIFT] MOVING INTO JENKINS NODE MATCHING LABELNAME macos10.14&&build&&mac&&x64...
[Pipeline] node
15:14:24  Still waiting to schedule task
15:14:24  ‘[build-macstadium-macos1014-x64-1](https://ci.adoptium.net/computer/build%2Dmacstadium%2Dmacos1014%2Dx64%2D1/)’ is offline

All 10.14 nodes were taken offline being replaced by Orka

@AdamBrousseau fyi, for Temurin we're now using Xcode11.7 on osx15


Module path should be "github.com/lensesio/lenses-go", not "github.com/landoop/lenses-go"

Background
Module path is inconsistent with go import path.
GO111MODULE=on, run go get github.com/lensesio/lenses-go@7ebcec6:
go: downloading github.com/lensesio/lenses-go v0.0.0-20200410145700-7ebcec68b64a
go: github.com/lensesio/lenses-go 7ebcec6 => v0.0.0-20200410145700-7ebcec68b64a
go get<EMAIL_ADDRESS>parsing go.mod:
        module declares its path as: github.com/landoop/lenses-go
                but was required as: github.com/lensesio/lenses-go

Solution
Fix the module path:

Rename the module path to "github.com/lensesio/lenses-go": https://github.com/lensesio/lenses-go/blob/master/go.mod#L1:

module github.com/lensesio/lenses-go
go 1.13
require (
	…
)

Warning the users not to use the module, get "github.com/lensesio/lenses-go" in GOPATH mode.

@deanlinaras  @stelispanagiotakis  Could you help me review this issue? Thx :p

I reckon we have to fix all imports too :thinking:

@KateGo520 have a look at https://github.com/lensesio/lenses-go/commit/b61b3b9047b61730b33ab8f5524aac4cb4c61386. I think it addresses all the issues that you raised.

Closing this ticket as this has been addressed with commit shared above. Thank you

@deanlinaras    Thank you for your reply. I see the commit. Thant helps a lot! Thank you for your contribution!


Deprecate pushState and replaceState for new push and replace

This builds on top of the updated CHANGES format per https://github.com/rackt/history/pull/167, because I wanted to call out new features separately from bug fixes.

Added a WIP with the deprecations. Still need to change the tests - thinking of putting together a codemod for that.

Looking good, @taion :+1: Just let me know when you're ready to merge.

Probably not today unless it's later \:
I was hoping to use JSCodeShift to update the tests, but I have to learn how to use JSCodeShift first.

I mean, not because there are so many tests that I can't update them by hand, more that I think JSCodeShift is super cool, and that it'd be nice to offer a codemod to our users.

@timdorr
Continuing from https://github.com/rackt/react-router/issues/2646#issuecomment-162240677, the "location descriptor" or "location spec" or whatever is slightly different enough that we'd avoid some confusion by calling it something else. There's no action or key attached to it, so it's not exactly the same.
One example of the difference is that when using queries, your "location descriptor" might look like:
{
  pathname: '/foo',
  query: { the: 'query' },
}

But the corresponding "location" is more like:
{
  pathname: '/foo',
  query: { the: 'query' },
  search: '?the=query',
  action: 'POP',
  key: 'asdf12',
}

It's really a shorthand object that is enough to describe or specify a location, but is not a location itself.

Got the codemod running: https://gist.github.com/taion/0b752445e86304f5f5c2
Doing final cleanups now, will update PR shortly.
What do we want to do with the transform? Ideally we'd ship it to users somehow.

PR updated. This is ready to go from my end, assuming we don't want to ship the transform with this package.
I'm really impressed with JSCodeShift. All the test updates on the 2nd commit were with JSCodeShift, except:

I manually backed out the change in BrowserHistory-test.js (I was too lazy to specifically omit window.history.pushState calls from the transform)
I moved the PUSH -> REPLACE logic from describePushState.js to describePush.js
The transform gave me double quotes instead of single quotes on string literals and I had to run npm run lint -- --fix to clean those up

Thanks @taion. I'll take a look.
On Sat, Dec 5, 2015 at 4:19 PM Jimmy Jia<EMAIL_ADDRESS>wrote:

PR updated. This is ready to go from my end, assuming we don't want to
ship the transform with this package.
I'm really impressed with JSCodeShift. All the test updates on the 2nd
commit were with JSCodeShift, except:

I manually backed out the change in BrowserHistory-test.js (I was
too lazy to specifically omit window.history.pushState calls from the
transform)
I moved the PUSH -> REPLACE logic from describePushState.js to
describePush.js
The transform gave me double quotes instead of single quotes on
string literals and I had to run npm run lint -- --fix to clean those
up

—
Reply to this email directly or view it on GitHub
https://github.com/rackt/history/pull/168#issuecomment-162259419.

You could drop it in the scripts folder. That's probably the best place for it. It's an optional thing anyways.

Sorry, had to manually update a few more tests. There were a few meant to intentionally cover pushState and replaceState that I restored to their old forms, and I had to update a few test descriptions as well.

@timdorr It's not a script per se, though - you can only run it through jscodeshift, so it's not especially helpful on its own.

Yeah, but you would run it once for automating the upgrade to this API version. That sounds script-y to me :smile:

Oh, I missed the "single quote" recast option. Well, ESLint fixed it for me anyway.
@timdorr I was thinking of using transforms/ instead, though - it's what the upstream codemod packages do: https://github.com/reactjs/react-codemod, https://github.com/cpojer/js-codemod/. They're set up as separate packages there, though.

Assuming we go forward with this PR as-is or in slightly modified form, I'm going to set up a rackt-codemod repo under this org, and distribute the codemod there.

I was just going to suggest this. If you don't mind, could you create separate folders for each repo that has codemods (just history for now)?

:+1: Will do.

@taion Looks like you're ready to merge here?

Yes, this is good to go from my end. Anything else I need to fix before we merge?

@taion Needs a rebase on master now.

Yup, done! Thanks.

Thanks, @taion. This turned out to be quite a bit of work!

It was fun, though, and the long-term API cleanup is going to be really sweet. Just need to fix createPath and createHref and deprecate createLocation.

Oh crud, the warnings for state without queryKey aren't there on push and replace for createHashHistory. Bah.


Allow yapf as the linter

"Yet Another Python Formater" allows more style choices when still sticking to the PEP8
If the project have a .style.yapf on the root, it can be assumed to use YAPF and use the file for configuration

Hi @alanjds !
I recently added flake8 as a linter in #115. yapf looks promising. It will definitely be a good enhancement.

Hi @alanjds We can add Ruff as it is the fastest linter out there.

Ruff is also great!
Yet YAPF gives better results imho. I would love to have Ruff with Yapf behaviors... someday.


DL4J + Keras import: Causal Conv1D support

DL4J causal conv1d support, and Keras causal conv1d support.
DL4J part is essentially done, remaining tasks:

keras import tests not yet passing
Validation for not using ConvolutionMode.Causal for conv2d/3d
Javadoc for ConvolutionMode

Fixes: https://github.com/eclipse/deeplearning4j/issues/7968
Fixes: https://github.com/eclipse/deeplearning4j/issues/7629
Also fixes some keras import bugs for NCW/channels_first format.
Considerably improves the conv1d import tests.
Also makes nIn inference for RNNs more robust for NCW/NWC cases.
https://github.com/KonduitAI/dl4j-test-resources/pull/11

Closed in favor of: https://github.com/KonduitAI/deeplearning4j/pull/107


while running Gprofiler

I modified Dockerfile below line
ENTRYPOINT [ "python3", "-m", "gprofiler", "--disable-pidns-check","--no-java"]

the file in gprofiler\client.py of APIClient class, but how can I resolve issue.

Hi @sridharchary , can you please try the latest version (1.2.27), and if the issue persists, run gProfiler with --curlify-requests which will log the sent requests, then post one request here and this will help me debug it on the backend :)

Closing this as it's old, feel free to reopen if the problem returns.


etcd: remove language about redirects

Fixes issue on etcd-dev, where etcd 2.x no longer requires curl to follow redirects, since these are handled internally by etcd.
cc: @joshix @ElijahCaine

LGTM


GitHub Actions not uploading artifacts for Electron application release

What happened:
When attempting to release the Electron application through GitHub Actions, no artifacts are being uploaded. The workflow executes, but the expected files are not available in the release.
What you expected to happen:
The GitHub Actions workflow should upload the required artifacts as part of the release process.
How to reproduce it (as minimally and precisely as possible):

Trigger the GitHub Actions workflow for the Electron application release.
Check the release on GitHub to see if any artifacts were uploaded.

Anything else we need to know?:
I have provided the GitHub Actions logs for your review: GitHub Actions Logs
Environment:

Operating system: ALL
Browser and version: ALL
CodePair version: v0.1.26

After #423 is merged, the artifacts are uploaded well. However, the application seems damaged.

Related to https://github.com/electron-userland/electron-builder/issues/7602.

If you want to distribute your application to other OSX users you have to sign it and to my knowledge there is no free alternative.


RC Test: Forces and Motion Basics 2.3.0-phetiorc.2

@samreid @jessegreenberg  so they know this is in the queue.
This issue is to replace #6 to catch a fix for RichText in scenery-phet.
This RC is from the same shas as https://github.com/phetsims/tasks/issues/868, so it should be done after testing the phet features. Here is the link to index.
Root Directory
Testing Matrix
If any new issues are found, please note them in https://github.com/phetsims/forces-and-motion-basics/issues/227 and reference this issue.
Parent issue for the design changes and implementation: https://github.com/phetsims/forces-and-motion-basics/issues/220
Here is the list of all the changes that have been added

All changes are in the "Net Force" screen
NetForceScreenView includes two new CartStopperNodes placed at a location which will stop movement of the cart.
The cart can move about twice as far along the screen since the stoppers are placed farther than the previous version allowed the cart to move.
The pullers stand up when the game is over
The speedometer was added to the center of the cart, showing speed of the moving cart
A "Speed" checkbox was added to the control panel, which toggles visibility of a speedometer

This issue replaces #6, closing that one and applying same labels and priority.

@phet-steele for phetsims/forces-and-motion-basics#235 we need new builds for 2.3 and 2.3-phetio from master so we need new RC's for both, sorry.  Closing this issue.


[HOLD #36071][$500] Chat - Chat is partially scrolled down when editing message

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

Version Number: 1.4-39-0
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:

Go to staging.new.expensify.com
Go to FAB > Request money
Create a manual request with receipt from any user
In 1:1 DM, send two messages
Right click on the latest message > Edit message
Click close button
Right click on the latest message > Edit message

Expected Result:
The chat is completely scrolled down to reveal the edit composer
Actual Result:
The chat is partially scrolled down to reveal the edit composer
Workaround:
Unknown
Platforms:

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

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/3529b476-8c6d-4354-a985-4e5bec44baa8
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01aa6de1a654051f75
Upwork Job ID:<PHONE_NUMBER>894945792
Last Price Increase: 2024-02-09

We think that this bug might be related to #vip-vsp
CC @quinthar

I'm going to see if I can get some help to look into this. If this is related to LiveMarkdown, then we should stop looking into it further because all those bugs are being addressed separately in https://github.com/Expensify/App/issues/36071.

https://github.com/Expensify/App/assets/30609178/101ddb18-4d55-483d-916c-276e35145f7c
I wasn't able to reproduce after reverting the Live markdown PR, so going to mark this off and hold onto it for tracking

Not a current bug, but being worked on as part of https://github.com/Expensify/App/issues/36071

Not a current bug, but being worked on as part of https://github.com/Expensify/App/issues/36071

I believe this is not happening anymore @thienlnam can we get someone to test it on staging & close this issue in case of it being fixed?

@thienlnam Unable to reproduce.
https://github.com/Expensify/App/assets/43996225/22e9c6e4-a7bc-4358-9c7a-dc3d2ff560ef

Sweet - thanks!


search bar not showing ends properly

not sure if this is intended but the search bar input form doesn't show the ends properly.  They seem to be cut off.

Hello @scrimpys
This is noted.
The fix will be done in the next release.
TY!

@scrimpys  is this issue still pending i want to work on it


How do codecs work on this project (video)

Hi,
I have an informational question... We are working on a SIP project, that also uses a webrtc card...
But if we use the HA android companion app, the video with h264 is not showing
If we do the same test on a chrome browser, the video is showing
I though that androids needs somekind of codec to be able to show the video?
But i now tested your component, and i see the video from my doorintercom without an issue... how do you make this work?
thnx in advance

I have not done anything special to support Android. There may be problems on some Android phones. This depends on the specific phone model. But if everything works on the same phone, you may be doing something wrong.

hey @TECH7Fox , can you maybe provide some more info here?

@AlexxIT  and @TECH7fox , i grabbed some logs, seems with this project somekind of decoded is engaged?
first log : SIP project => codec fails
second log : some decoder involved? see full log below this reply:
snap log:
12-22 09:43:54.795  4144  4321 I cr_MediaCodecBridge: create MediaCodec video decoder, mime video/avc
12-22 09:43:54.795  4144  4321 D MediaCodec:  name = video/avc
12-22 09:43:54.801  4144  4477 I OMXClient: IOmx service obtained
12-22 09:43:54.838  4144  4476 I MediaCodec: MediaCodec will operate in async mode
12-22 09:43:54.840  4144  4321 W MediaCodec: RETYR:0
12-22 09:43:54.840  4144  4476 I MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 4243457

Failed log (sip project):
12-20 16:18:12.571 31654 31654 D PhoneWindow: setNavigationBarColor: ff171717
12-20 16:18:12.612 31654 31870 D WebviewActivity: External bus {"type":"config/get","id":3}
12-20 16:18:12.614 31654 31654 D WebviewActivity: externalBus({"id":3,"type":"result","success":true,"result":{"hasSettingsScreen":true,"canWriteTag":true,"hasExoPlayer":true}});
12-20 16:18:12.654 31654 31654 D WebviewActivity: Callback null
12-20 16:18:12.655 31654 31654 D WebviewActivity: Color from webview is "rgb(23, 23, 23)-SPACER-rgb(23, 23, 23)"
12-20 16:18:12.655 31654 31654 D WebviewActivity: Color from webview is "rgb(23, 23, 23)-SPACER-rgb(23, 23, 23)"
12-20 16:18:12.655 31654 31699 D WebViewPresenterImpl: Try getting color from webview color "rgb(23, 23, 23)".
12-20 16:18:12.655 31654 31699 I WebViewPresenterImpl: Found color -15263977.
12-20 16:18:12.661 31654 31698 D WebViewPresenterImpl: Try getting color from webview color "rgb(23, 23, 23)".
12-20 16:18:12.662 31654 31698 I WebViewPresenterImpl: Found color -15263977.
12-20 16:18:12.662 31654 31654 D PhoneWindow: setNavigationBarColor: ff171717
12-20 16:18:14.398 31654 31870 D WebviewActivity: External bus {"type":"haptic","payload":{"hapticType":"light"},"id":4}
12-20 16:18:14.399 31654 31654 D WebviewActivity: Processing haptic tag for light
12-20 16:18:14.734 31654 31654 E SensorManager: registerListenerImpl sensorName:Game Rotation Vector  Wakeup,isWakeUpSensor:true,callingApp: io.homeassistant.companion.android,callingPid:31654,callingUid:10243
12-20 16:18:14.925 31654 31654 E SensorManager: unregisterListenerImpl sensorName:Game Rotation Vector  Wakeup,isWakeUpSensor:true,callingApp: io.homeassistant.companion.android,callingPid:31654,callingUid:10243
12-20 16:18:24.317 31654 31844 W VideoCapabilities: Unsupported mime image/vnd.android.heic
12-20 16:18:24.319 31654 31844 W VideoCapabilities: Unsupported mime video/divx
12-20 16:18:24.319 31654 31844 W VideoCapabilities: Unsupported mime video/divx4
12-20 16:18:24.321 31654 31844 W VideoCapabilities: Unrecognized profile/level 0/3 for video/mpeg2
12-20 16:18:24.321 31654 31844 W VideoCapabilities: Unrecognized profile/level 0/3 for video/mpeg2
12-20 16:18:24.322 31654 31844 W VideoCapabilities: Unsupported mime video/x-ms-wmv
12-20 16:18:24.387 31654 31774 I AudioManager: In isBluetoothScoOn(), calling application: io.homeassistant.companion.android
12-20 16:18:24.387 31654 31774 I AudioManager: In startbluetoothSco(), calling application: io.homeassistant.companion.android
12-20 16:18:24.396 31654 31774 I AudioManager: In isSpeakerphoneOn(), calling application: io.homeassistant.companion.android
12-20 16:18:24.400 31654 31774 I AudioManager: In setMode(), mode: 3, calling application: io.homeassistant.companion.android
12-20 16:18:24.447 31654 31774 I libOpenSLES: Emulating old channel mask behavior (ignoring positional mask 0x1, using default mask 0x10 based on channel count of 1)
12-20 16:18:24.461 31654 31774 I AudioRecord: createRecord_l(6553714): AUDIO_INPUT_FLAG_FAST successful; frameCount 0 -> 4096
12-20 16:18:24.464 31654 31654 E chromium: [ERROR:web_contents_delegate.cc(228)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
12-20 16:18:24.586 31654 31774 I AudioManager: In isBluetoothScoOn(), calling application: io.homeassistant.companion.android
12-20 16:18:24.586 31654 31774 E cr_media: Unable to stop BT SCO since it is already disabled
12-20 16:18:24.587 31654 31774 I AudioManager: In isSpeakerphoneOn(), calling application: io.homeassistant.companion.android
12-20 16:18:24.587 31654 31774 I AudioManager: In setMode(), mode: 0, calling application: io.homeassistant.companion.android
12-20 16:18:33.620 31654 31870 D WebviewActivity: External bus {"type":"config_screen/show","id":5}
12-20 16:18:33.640 31654 31654 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@d199e76

Succes log (webrtc project):
12-22 09:43:53.158  4144  4427 D WebviewActivity: External bus {"type":"haptic","payload":{"hapticType":"light"},"id":4}
12-22 09:43:53.164  4144  4144 D WebviewActivity: Processing haptic tag for light
12-22 09:43:53.414  4144  4144 E SensorManager: registerListenerImpl sensorName:Game Rotation Vector  Wakeup,isWakeUpSensor:true,callingApp: io.homeassistant.companion.android,callingPid:4144,callingUid:10243
12-22 09:43:53.476  4144  4144 E SensorManager: unregisterListenerImpl sensorName:Game Rotation Vector  Wakeup,isWakeUpSensor:true,callingApp: io.homeassistant.companion.android,callingPid:4144,callingUid:10243
12-22 09:43:53.687  4144  4403 W VideoCapabilities: Unsupported mime image/vnd.android.heic
12-22 09:43:53.689  4144  4403 W VideoCapabilities: Unsupported mime video/divx
12-22 09:43:53.689  4144  4403 W VideoCapabilities: Unsupported mime video/divx4
12-22 09:43:53.690  4144  4403 W VideoCapabilities: Unrecognized profile/level 0/3 for video/mpeg2
12-22 09:43:53.691  4144  4403 W VideoCapabilities: Unrecognized profile/level 0/3 for video/mpeg2
12-22 09:43:53.691  4144  4403 W VideoCapabilities: Unsupported mime video/x-ms-wmv
12-22 09:43:53.988  4144  4311 I AAudio  : AAudioStreamBuilder_openStream() called ----------------------------------------
12-22 09:43:53.988  4144  4311 I AudioStreamBuilder: rate   =  48000, channels  = 2, format   = 5, sharing = SH, dir = OUTPUT
12-22 09:43:53.988  4144  4311 I AudioStreamBuilder: device =      0, sessionId = -1, perfMode = 12, callback: ON with frames = 192
12-22 09:43:53.988  4144  4311 I AudioStreamBuilder: usage  =      1, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
12-22 09:43:53.988  4144  4311 D         : PlayerBase::PlayerBase()
12-22 09:43:53.988  4144  4311 D AudioStreamTrack: open(), request notificationFrames = -8, frameCount = 0
12-22 09:43:53.995  4144  4311 I AudioTrack: createTrack_l(0): AUDIO_OUTPUT_FLAG_FAST successful; frameCount 0 -> 1536
12-22 09:43:53.995  4144  4311 D AudioTrack: Uid 10243 AudioTrack::setVolume left 1.000000 right 1.000000
12-22 09:43:53.995  4144  4311 W AudioStreamTrack: open() flags changed from 0x00000104 to 0x00000004
12-22 09:43:53.996  4144  4311 I AAudio  : AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
12-22 09:43:53.997  4144  4311 D AAudio  : AAudioStream_requestStart(s#1) called --------------
12-22 09:43:53.997  4144  4311 D AudioTrack: ClientUid 10243 AudioTrack::start
12-22 09:43:54.006  4144  4311 D         : PlayerBase::start() from IPlayer
12-22 09:43:54.006  4144  4311 D AAudio  : AAudioStream_requestStart(s#1) returned 0 ---------
12-22 09:43:54.006  4144  4163 D AudioStreamLegacy: onAudioDeviceUpdate() devId 3 => 3
12-22 09:43:54.795  4144  4321 I cr_MediaCodecBridge: create MediaCodec video decoder, mime video/avc
12-22 09:43:54.795  4144  4321 D MediaCodec:  name = video/avc
12-22 09:43:54.801  4144  4477 I OMXClient: IOmx service obtained
12-22 09:43:54.838  4144  4476 I MediaCodec: MediaCodec will operate in async mode
12-22 09:43:54.840  4144  4321 W MediaCodec: RETYR:0
12-22 09:43:54.840  4144  4476 D SurfaceUtils: connecting to surface 0x7aed90d010, reason connectToSurface
12-22 09:43:54.840  4144  4476 I MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 4243457
12-22 09:43:54.840  4144  4476 D SurfaceUtils: disconnecting from surface 0x7aed90d010, reason connectToSurface(reconnect)
12-22 09:43:54.840  4144  4476 D SurfaceUtils: connecting to surface 0x7aed90d010, reason connectToSurface(reconnect)
12-22 09:43:54.843  4144  4477 I ExtendedACodec: setupVideoDecoder()
12-22 09:43:54.843  4144  4477 I ExtendedACodec: Decoder will be in frame by frame mode
12-22 09:43:54.857  4144  4477 D SurfaceUtils: set up nativeWindow 0x7aed90d010 for 640x480, color 0x7fa30c06, rotation 0, usage 0x20002900
12-22 09:43:54.862  4144  4477 W Gralloc3: allocator 3.x is not supported
12-22 09:43:54.873  4144  4477 D SurfaceUtils: set up nativeWindow 0x7aed90d010 for 704x576, color 0x7fa30c06, rotation 0, usage 0x20002900
12-22 09:43:54.883  4144  4402 D NdkImageReader: acquireImageLocked: Overriding buffer format YUV_420_888 to 0x7fa30c06.
12-22 09:43:54.888  4144  4321 I cr_MediaCodecBridge: create MediaCodec video decoder, mime video/avc
12-22 09:43:54.888  4144  4321 D MediaCodec:  name = video/avc
12-22 09:43:54.892  4144  4485 I OMXClient: IOmx service obtained
12-22 09:43:54.918  4144  4484 I MediaCodec: MediaCodec will operate in async mode
12-22 09:43:54.918  4144  4321 W MediaCodec: RETYR:0
12-22 09:43:54.918  4144  4484 D SurfaceUtils: connecting to surface 0x7aed90e010, reason connectToSurface
12-22 09:43:54.918  4144  4484 I MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 4243458
12-22 09:43:54.918  4144  4484 D SurfaceUtils: disconnecting from surface 0x7aed90e010, reason connectToSurface(reconnect)
12-22 09:43:54.918  4144  4484 D SurfaceUtils: connecting to surface 0x7aed90e010, reason connectToSurface(reconnect)
12-22 09:43:54.919  4144  4485 I ExtendedACodec: setupVideoDecoder()
12-22 09:43:54.920  4144  4485 I ExtendedACodec: Decoder will be in frame by frame mode
12-22 09:43:54.929  4144  4485 D SurfaceUtils: set up nativeWindow 0x7aed90e010 for 704x576, color 0x7fa30c06, rotation 0, usage 0x20002900
12-22 09:43:54.932  4144  4321 W cr_MediaCodecBridge: Releasing: OMX.qcom.video.decoder.avc
12-22 09:43:54.933  4144  4144 W AudioManager: Use of stream types is deprecated for operations other than volume control
12-22 09:43:54.933  4144  4144 W AudioManager: See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case
12-22 09:43:54.940  4144  4484 D SurfaceUtils: disconnecting from surface 0x7aed90e010, reason disconnectFromSurface
12-22 09:43:54.942  4144  4321 W cr_MediaCodecBridge: Codec released
12-22 09:43:54.950  4144  4402 E BufferQueueConsumer: disconnect by : io.homeassistant.companion.android my_pid = 4144
12-22 09:43:57.133  4144  4312 W cr_MediaCodecBridge: Releasing: OMX.qcom.video.decoder.avc
12-22 09:43:57.143  4144  4476 D SurfaceUtils: disconnecting from surface 0x7aed90d010, reason disconnectFromSurface
12-22 09:43:57.146  4144  4312 W cr_MediaCodecBridge: Codec released
12-22 09:43:57.163  4144  4470 W chromium: [WARNING:sync_reader.cc(187)] ASR: No room in socket buffer.: Broken pipe (32)
12-22 09:43:57.163  4144  4311 D AAudio  : AAudioStream_requestStop(s#1) called
12-22 09:43:57.163  4144  4311 D AudioTrack: ClientUid 10243 AudioTrack::stop
12-22 09:43:57.163  4144  4311 D AudioTrack: stop(5226): called with 149952 frames delivered
12-22 09:43:57.163  4144  4311 D         : PlayerBase::stop() from IPlayer
12-22 09:43:57.190  4144  4402 E BufferQueueConsumer: disconnect by : io.homeassistant.companion.android my_pid = 4144
12-22 09:43:58.478  4144  4427 D WebviewActivity: External bus {"type":"config_screen/show","id":5}
12-22 09:43:58.498  4144  4144 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@d9d8a52
12-22 09:43:58.521  4144  4144 D UrlRepository: Using external URL
12-22 09:43:58.523  4144  4144 I chatty  : uid=10243(io.homeassistant.companion.android) identical 2 lines
12-22 09:43:58.523  4144  4144 D UrlRepository: Using external URL
12-22 09:43:58.535  4144  4144 V FlingOptimizerScroller: FlingOptimizerOverScroller Init
12-22 09:43:58.541  4144  4144 V ViewRootImpl: The specified message queue synchronization  barrier token has not been posted or has already been removed
12-22 09:43:58.551  4144  4163 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@8e218e3[SettingsActivity]
12-22 09:43:58.605  4144  4144 W Choreographer: Already have a pending vsync event.  There should only be one at a time.
12-22 09:43:58.656  4144  4193 D SensorWorker: Updating all Sensors.
12-22 09:43:58.660  4144  4184 I WM-Processor: Moving WorkSpec (a8b95643-2f45-4e7f-90b9-f8bd37f7c2cc) to the foreground
12-22 09:43:58.676  4144  4144 I WM-SystemFgDispatcher: Started foreground service Intent { act=ACTION_START_FOREGROUND cmp=io.homeassistant.companion.android/androidx.work.impl.foreground.SystemForegroundService (has extras) }
12-22 09:43:58.812  4144  4191 D SensorReceiver: Nothing to update
12-22 09:43:58.813  4144  4397 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=a8b95643-2f45-4e7f-90b9-f8bd37f7c2cc, tags={ io.homeassistant.companion.android.sensors.SensorWorker } ]
12-22 09:43:58.815  4144  4144 I WM-SystemFgDispatcher: Stopping foreground service
12-22 09:44:02.164  4144  4311 D AAudio  : AAudioStream_close(s#1) called ---------------
12-22 09:44:02.165  4144  4311 D AudioTrack: ClientUid 10243 AudioTrack::stop
12-22 09:44:02.168  4144  4311 D AAudio  : AAudioStream_close(s#1) returned 0 ---------
12-22 09:44:02.814  4144  4193 D LogcatReader: Read logcat for pid 4144

I'm not video specialist. Try to find answers in parent project.
You can run it without Hass
https://github.com/deepch/RTSPtoWebRTC

Ok, thnx for this info, appreciated


Undo feature

Hello
I added an undo feature to the 2048 game, now users are able to undo from a given state until the original start state of the game.
-- Santhosh

This changes the git submodule which Is unnecessary. I'll update the reference myself. :)
Cheers.


[bug] Eurotronic Spirit devices failed inclusion

Version
Build/Run method

[x] Docker
[ ] PKG
[ ] Manually built (git clone - npm install - npm run build )

zwavejs2mqtt version: 1.1.0
zwavejs version: 6.1.3
Describe the bug
When adding multiple Eurotronic Spirit devices, some of them are included but not working and others fail to be included at all.
To Reproduce
Steps to reproduce the behavior:
I'm setting up a Z-Wave network from scratch using zwavejs2mqtt version 1.1.0 (tried also with 1.0.5), however not successfully.
Controller is the Aeotec Z-Stick Gen5+ (version supporting Raspberry Pi 4). The clients are all Eurotronic Spirit (supporting Z-Wave Plus).
By doing inclusion per software (zwavejs2mqtt) it seems as some devices are added correctly, whereas others are not managing to get included.
I ruled out a hardware issue, as inclusion with the controller stick itself (when not connected to software) is working fine. Problem if I do this, is that when connecting the stick to zwavejs2mqtt all devices are reported as dead - and logs indicate no reply to ping.
This is the routine I've tried:

Exclude each one of the devices with the controller stick itself
Reset the Eurotronic Spirit devices
Reset the controller stick
Connect the stick into the computer, create & start new zwavejs2mqtt container
Disable MQTT Gateway (I'm only interested on integration with Home Assistant)
Enable logging to file with "silly"  level both for zwavejs2mqtt and zwavejs
For each Eurotronic Spirit..
- Start secure inclusion in zwavejs2mqtt
- Start inclusion in Eurotronic Spirit device

As a result I get:

Controller stick is shown in device list, all good
1 device is shown as Alive, Securely connected, but without Device ID and marked as unknown manufacturer/product code
1 device is shown as Alive, not-securely connected, also without Device ID and marked as unknown manufacturer/product code
2 devices are not being included (timeout both on zwavejs2mqtt and on device)

Doing a node re-interview doesn't change anything.
Expected behavior
Be able to add Eurotronic Spirit devices via the web-based node inclusion, see them on the node list, and finally be able to integrate them with Home Assistant.
Additional context
See attached the corresponding logs:
zwavejs_1.log
zwavejs2mqtt.log

I'm seeing lot of
Timed out while waiting for a response from the node
I think this could be a netowrk/device issue?

While the driver asks for the securely supported commands, the node requuests a nonce twice in a row. This causes the first one to be invalidated (as the specifications mandate), but the device uses the invalid one to encrypt its response.
As a result, the request for secure commands times out and the interview continues without security - which leaves us with very little information to work with.
21:08:26.212 DRIVER « [Node 002] [REQ] [ApplicationCommand]
                      └─[SecurityCCNonceGet]

21:08:26.224 DRIVER » [Node 002] [REQ] [SendData]
                      │ transmit options: 0x05
                      │ callback id:      12
                      └─[SecurityCCNonceReport]
                          nonce: 0x2efae001a3343de4

21:08:26.241 DRIVER « [Node 002] [REQ] [ApplicationCommand]
                      └─[SecurityCCNonceGet]

21:08:26.318 DRIVER » [Node 002] [REQ] [SendData]
                      │ transmit options: 0x05
                      │ callback id:      13
                      └─[SecurityCCNonceReport]
                          nonce: 0x1aa277171a6e9d68

21:08:26.344 DRIVER   Dropping message with invalid data (Reason: Nonce 0x2e expired, cannot decode
                      security encapsulated command.):
                      0x012f0004000227988104edf07c3f59c09725b8dcb47048c207ef5ef574f6ff97aa27c56f432e
                      00d08c630f6ac227dd0032

21:08:36.218 CNTRLR   [Node 002] Timed out while waiting for a response from the node
21:08:36.219 CNTRLR   [Node 002] Querying securely supported commands timed out, skipping Security i
                      nterview...

I suggest you re-interview the device and hope it doesn't do that every time.

Thank you! With a node re-interview the device finally appeared correctly (Node 002).
For Node 003 it took like 10 re-interviews to finally get the the manufacturer/device detected. Errors appeared as:
- "Security bootstrapping failed, the node is included insecurely: a secure inclusion timer has elapsed"
- "Timed out while waiting for a response from the node",
-  Node replies to "CC version for Version" but other messages are either missing of with many messages back
- "ConfigurationCC: skipping interview because CC version is < 3 and there is no config file"
Now it appears as securely connected. Is that possible? I.e. after including a node, a re-interview can cause to switch to secure inclusion.
For Node 004 and Node 005:
- Not added when using zwave-js, but works out if done with the controller removed from the usb port using the inclusion by hardware
- There was no relevant log entry as the controller with zwave-js was unable to include
- After connecting the controller to usb again, it appears in the web-UI as dead  (however nodes show connected symbol on the HW display)it
- A day later I tried to re-interview them. There are several messages without apparent reply, but also actual responses to protocol info.
I assume it's not a coverage issue as it's about 10-15m distance with almost line-of-sight and the node map shows all devices with 1 hop.
Changing the command timeout to 60s seems not to work, e.g. pings are expired still after 10s (or does this setting change something else?).
In general it seems as nodes reply to protocol info but the following controller's ping is not replied. Any idea what can I check next?
Attached new logs with current status. The UI now looks as:

PS - any idea why when going to the web-UI, selecting two logs and pressing the download button one gets a "zwavejs2mqtt-store.xlsx" file? It's actually a ZIP file I can unzip and see the content.
zwavejs2mqtt.log
zwavejs_1.log

Hello,
updated today to zwave-js 6.2.0  // zwave2mqtt 1.1.1. This solves the issue. After a node re-interview all devices are properly detected, appearing alive and working.


Helm resource should be resilient to manual changes within a cluster

Current state:
When resources are deployed via HelmRelease each change, which is applied outside of git repository won't be reversed by reconciliation.
Steps to reproduce:

Execute flux bootstrap on a completely new cluster and point it to fork of flux2-kustomize-helm-example
Update apps/base/podinfo/release.yaml with the following values:

    hpa:
      enabled: true
      maxReplicas: 6

Wait for the reconciliation and ensure there are six pods running in podinfo namespace.
Execute command on the cluster kubectl patch hpa podinfo --patch '{"spec":{"maxReplicas":2}}'. After a while there should be two pods left.
Wait for the reconciliation to happen.
There are still only two pods running.

Expected state:
After reconciliation the state should be brought to the state provided by HelmRelease as it is done when using pure kustomize and flux.

Is there any way we can overcome this? Maybe I missed something from docs. We see a lot of benefits of using helm charts rather then kustomize, but current approach forces us to either ensure nobody is touching resources within clusters (meaning no access at all) or generate manifests for flux from helm charts via helm template command. The latter solution makes the process of deployment much more complex. What are your solutions here?

We are aware of this issue and it is tricky to resolve it. The main difficulty as I understand it is that Helm itself is not built for drift detection, as it provides features like Helm Hooks which can execute jobs that may alter the manifests after it is first reconciled to the cluster. I'm closing this as a duplicate, find the issue referenced below where much discussion has already taken place.
Duplicate of #186.


go/types: not enough arguments error message should be easier to skim

Another difference between gc and go/types where I believe gc ends up more readable:
go test -short
# regexp [regexp.test]
./regexp.go:197:20: not enough arguments in call to progMachine
	have (*syntax.Prog, *onePassProg)
	want (*Regexp, *syntax.Prog, *onePassProg)
# regexp
./regexp.go:197:21: cannot use prog (variable of type *regexp/syntax.Prog) as *Regexp value in argument to progMachine
./regexp.go:197:27: cannot use onepass (variable of type *onePassProg) as *regexp/syntax.Prog value in argument to progMachine
./regexp.go:197:34: too few arguments in call to progMachine
vet: typecheck failures

Slightly more involved than what we want to do this late in the cycle. Moving to 1.13.

This has been addressed in Go 1.18. Closing.


The first few seconds of no effect

The first few seconds of no effect.

I think it's typical behavior of speex


ESP32/ Arduino Uno: error: size of array 'data' is too large

Hi All,
Just a quick one. I am trying to compile the simple serial publisher in ros2arduino (version 0.2.1) with ROS2 dashing. I can successfully install and run the MicroXRCEAgent on my laptop however, am having trouble compiling the publisher example through Arduino IDE for an ESP32-based board with 32kb of flash memory.
The error is:
In file included from /home/tom/Arduino/libraries/ros2arduino/src/uxr/client/core/type/xrce_types.h:1:0,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/xrcedds/micro_xrce_dds/lib/include/uxr/client/core/session/session.h:25,
                 from /home/tom/Arduino/libraries/ros2arduino/src/uxr/client/core/session/session.h:1,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/xrcedds/micro_xrce_dds/lib/include/uxr/client/client.h:24,
                 from /home/tom/Arduino/libraries/ros2arduino/src/uxr/client/client.h:1,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/xrcedds/micro_xrce_dds/micro_xrce_dds.h:18,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/xrcedds/xrcedds.hpp:12,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/publisher.hpp:12,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2/ros2.hpp:12,
                 from /home/tom/Arduino/libraries/ros2arduino/src/ros2arduino.h:15,
                 from /home/tom/Arduino/libraries/ros2arduino/examples/publisher/publisher.ino:2:
/home/tom/Arduino/libraries/ros2arduino/src/ros2/xrcedds/micro_xrce_dds/lib/include/uxr/client/core/type/xrce_types.h:819:55: error: size of array 'data' is too large
     PackedSamples data[UXR_PACKED_SAMPLES_SEQUENCE_MAX];
                                                       ^

The README says >=32kb RAM, but can someone confirm this works on an Uno? If not, I would be happy to change boards to a MKR Zero if that is more recommended.
Thanks, Tom.

Silly question, my board only has 2k of RAM but 32kb of flash memory..

Silly question, my board only has 2k of RAM but 32kb of flash memory..

I did the same question, you provide the answer :+1:
Thank you!


Failed to download from any application

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting a bug unrelated to a specific site
[x] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Provide a description that is worded well enough to be understood
doesn't matter from where I copy a video to download the app keeps giving errors, uninstalling the app and reinstall it didn't help, I'm not using any type of custom DNS or Proxy or custom IP, none of that, and it's so random, sometimes it works just fine and the other times error code.
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
App version: 1.12.1 (11212)
Device information: Android 13 (API 33)
Supported ABIs: [arm64-v8a, armeabi-v7a, armeabi]
Yt-dlp version: 2024.05.27

URL: https://www.instagram.com/reel/C664MOBOj5T/?igsh=eHc2M2RzNnRub2o1
WARNING: [Instagram] C664MOBOj5T: General metadata extraction failed (some metadata might be missing).
WARNING: [Instagram] unable to extract shared data; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
WARNING: [Instagram] Main webpage is locked behind the login page. Retrying with embed webpage (some metadata might be missing).
WARNING: [Instagram] unable to extract additional data; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
ERROR: [Instagram] C664MOBOj5T: Requested content is not available, rate-limit reached or login required. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (instagram) to provide account credentials

Duplicate of #7165


expose a Route's match through HOCs

Currently, the match prop would need to be passed down to child props in order that they have access to it. This PR adds two higher-order components that, when used in tandem, will allow the match to be accessible through the context.
The matchProvider HOC wraps the component that will be rendered by a <Route> and makes the match available through the context. The withMatch HOC wraps a component that wants access to its parent <Route>'s match.
I just used the same HOC style as withHistory, so these might need to be modified for refs/statics for some users.
// wrap the component in a matchProvider that will make the match available
// through context
const App = (
  <BrowserRouter>

      <Route path='/foo' component={matchProvider(Foo)} />

  </BrowserRoute>
)

const Foo = () => (

    <FooNav />
    <FooRoutes />

)

// use withMatch to inject context.match as a prop
const FooNav = withMatch(({ match}) => (
   <Link to={`${match.url}/bar`}>Bar</Link>
))

const FooRoutes = withMatch(({ match }) => (
  <Route path={`${match.path}/bar`} component={Bar} />
))

This approach requires the user to specify that they want the match made available through the context, and could lead to issues with users that neglect to wrap a nested <Route>'s component in a matchProvider and end up accessing the match of a grandparent <Route>.
const App = () => (
  <BrowserRouter>

      <Route path='/foo' component={matchProvider(Foo)} />

  </BrowserRoute>
)

const Foo = () => (
  <Route path='/bar' component={Bar} />
)

const Bar = withMatch(({ match }) => (
  // match is that match from /foo
))

An alternative to this would be for either the Route to expose the context variable (it currently cannot because it is a functional component) or for createRouteElement to automatically wrap what it renders in a <MatchProvider match={props.match}> component.

Oh, and looking at the code agin, I neglected to export the HOCs from index.js. I wasn't really sure what the ideal file layout/component names were anyways, so if this is well met, I'm sure that other changes will be requested and I can resolve that issue then.

This is a great PR, thank you @pshrmn 👍
I like the symmetry of withMatch and withHistory. Both of them provide a way for nested components to get access to our props. The main difference is that withHistory gets around "the shouldComponentUpdate problem" via subscriptions, but withMatch does not. This means that components nested under another that uses shouldComponentUpdate => false won't get the new match when it changes.
In order to address this, we could either a) implement another subscription mechanism for match or b) possibly move the matching logic into our existing subscription model and just provide a single HOC that gives you both history and match.
But if we back up a little, I wonder how important it is that we provide a withMatch HOC at all. Seems like the main use case is generating relative <Link>s somewhere further down the hierarchy.

Access to match.url for relative links is the main reason that I was considering this for. I could also see some people wanting access to match.path for nested routes. I'm sure that someone could find a reason to want to access isExact or params, but neither of those was in mind when I wrote this.
// haven't tested this, but I think it would work assuming a "resolve"
// function exists
const RelativeRoute = withMatch(({ match, path, ...props }) => (
  <Route path={resolve(props.match.path, props.path)} {...props} />
))

Aside from resolving paths for <Link> and <Route>, manual navigation with custom components could also benefit from being able to access the match (this might be somewhere that match.params would be useful).
While I can't speak for others, I do think that a way to resolve pathnames without manual concatenation would be a desirable feature to include and access to the match is necessary for this. Perhaps it would be best to wait and gauge if there is more desire for a feature like this during the beta.
I wasn't thinking about the sCU problem, but that would need to be addressed. I think that a subscription model would be easy enough to implement. Considering the plan b that you listed, based on this @acdlite tweet, I'm not sure that a HOC with multiple context values would be ideal in the future.

Access to match.url for relative links is the main reason that I was considering this for. I could also see some people wanting access to match.path for nested routes.

Yep, you're right. We should probably address this.
@ryanflorence and I spent quite a while talking about this, and we wondered if we should just put match on context so that <Route> and <Link> could automatically resolve relative URLs. It might be slick to just say "if you use a relative path, it will automatically resolve relative to the current URL". But I think there may be a few use cases that ignores, so we thought it best to make it more explicit for now.
Random thought: maybe instead of providing withHistory we just call it withRouting and provide both the history and the match as props... ?

I do think that a way to resolve pathnames without manual concatenation would be a desirable feature to include

Related: see https://github.com/mjackson/resolve-pathname which history uses to resolve relative pathnames.

The one consideration with relative URLs is that when people use a relative path with React Router, they aren't necessarily the same thing as RFC 1808 relative paths.
For example, assume that the user is on the page /example/page. Per RFC 1808, the relative URL hello would resolve to /example/hello.

Hello resolves to Hello

However, with React Router, a relative pathname should most likely be resolved relative to its parent's path.  That would mean that hello resolves to /example/page/hello.
// match.path = '/example/page'
const Page = (props) => (

    <Link to='hello'>Hello</Link> resolves to <Link to={`${props.match.path}/hello`}>Hello</Link>

)

That is what the code in #4122 was doing. I left a number of comments in the PR, so it should be pretty easy to parse what is going on there (starting about here)

I added a subscriber model between matchProvider and withMatch. I am unsure why the Travid CI build errored out, but it doesn't appear to be from errors in the tests. :confused:
The more I have thought about it though, the more I think that it would be preferable to have <Route> always make match available through the context. A user cannot wrap the children prop as a function in a matchProvider HOC, so they would not be able to use withMatch with any of that component's children. Making it automatically available would also eliminate the parent/grandparent bug that I mentioned before.
Having a withRouting HOC that provides both the history and the match context values as props would be nice for navigation. I am uncertain if that @acdlite tweet implied that a component that grabs multiple context values is a bad idea (I don't think so), or just that provider components should only add one value to the context. If nothing else:
const withRouting = (component) => withHistory(withMatch(component))

Travis has been intermittent lately. Don't worry about it :)

Thanks for following up here, @pshrmn. I'd like to help you get this merged. We just need to be careful we're taking the right approach.

I added a subscriber model between matchProvider and withMatch.

If possible I'd like to avoid having 2 subscription mechanisms in the router. Having 1 is already going to cause us problems, I think, due to the fact that when our listeners fire we're outside React's batching model. Redux has had to deal with the same issue.

The more I have thought about it though, the more I think that it would be preferable to have  always make match available through the context.

This sounds reasonable to me too.
We could expose both history and match on context.router (a single value) to avoid having more than one thing on context. I'd be more comfortable with us claiming context.router anyway because we are "the router", not "the history". Our withRouting HOC could then provide both history and match as props.

Well, this suddenly touched more files than I originally intended thanks to the context changes, but I changed this to making a withRouting HOC (and managed to mess up my commits, but that's what rebasing PRs is for, right?)
There were some assumptions made that can easily be changed and more tests are necessary, but so far it seems to work correctly. The layout is pretty similar to what @ryanflorence had in the previous version of the alpha.

A <RoutingProvider> is used to add a router context variable. That variable includes the history and match.
A withRouting higher-order component injects the history and match variables. Note: Right now, match is actually injected as parentMatch. There is a overlapping variable name issue here because <Switch> injects a match variable into a <Route> as well, so I just used parentMatch as a placeholder.
The <Router> now renders a <RoutingProvider>, which in turns renders the router's children. The match value set here is null. Maybe it should be {path: '/', ...}, but that is a quick fix. I also made the <Router> a stateless functional component because it no longer has to add context variables.
When a <Route> is not rendering null, it wraps its children element in a <RoutingProvider>. This killed the mega ternary, my apologies.
I believe that having components that want access to the match subscribe to the history for changes is sufficient.

Added tentative support for <ServerRouter>.
In order to detect that it is a server render, I added an isServer boolean to the history object created by the <ServerRouter>. Might be more appropriate to attach it directly to context.router. <Redirect> checks that boolean to determine if the redirect should occur in cWM or cDM.

Up to this point I had been largely ignoring <ServerRouter> until I was sure the stuff in the core was good, but thanks for taking a look there as well, @pshrmn. Would you mind isolating the changes in this PR to only modify Core.js and we can take a look at <ServerRouter> and <Redirect> in a separate PR?

Er, at least let's exclude <ServerRouter> from this PR. <Redirect> will still need to know about the context changes.

@mjackson Undoing that now. I had changed <ServerRouter> because it was using the context.history API, but since its tests aren't being run that can wait.

Looking good, @pshrmn. One thing I'd like to do in this PR is get the examples up to date with the API changes. It's a good litmus test for how this stuff actually feels once we use it in various scenarios. Can you please give them a quick check as well? AFAICT the only thing that might break is if there were any examples that were expecting the history prop and/or were using withHistory.

Only one instance of withHistory that had to be changed (as well as an import in the webpack config). Also, that was my first time seeing the new documentation site, which looks really nice (I think that that was @ryanflorence's doing based on the commit log).
@mjackson Have you thought about the name collision issue for match at all? I think that is would be preferable if withRouter injected the match object as match (instead of the parentMatch I have it set to now), but that will require changing what <Switch> injects the known match as.

Have you thought about the name collision issue for match at all?

The <Route match> API was only meant for internal use only, because <Switch> is special and does the matching ahead of time so we can save a duplicate call to matchPath in the <Route>. So if any one of them has the weird name, it should be <Route> and not withRouter.
I'm going to go ahead and merge this. Thanks for all your work, @pshrmn! v4 is in a state of flux anyway, so it's ok if we still have some open-ended questions.

@mjackson Thanks for the help. Had I known that you would merge this so quickly I would have rebased earlier to get rid of all the miscellaneous changes that I made and then reverted.
I had also written a little withRouter.md API documentation for the website. I can submit a new PR with that if you'd like to take a look.

Ah, sorry @pshrmn. I should've given you the heads up. No worries though. The main goal at this point is to drive this branch forward so we can release a beta. We're just about there, I think.


Updated Pester Syntax in Writing Tests Guide

PR Summary

Modified the Pester syntax for the -Be assertion (instead of just Be) to reflect the preferred use per latest version of Pester.
Added an example showing use of -BeOfType to test the type of a variable.
Other minor changes for grammar.

PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[x] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[x] Not Applicable or can only be tested interactively
OR
[ ] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

You also have spelling issues.  I filed the following issue on the spelling tests: https://github.com/PowerShell/PowerShell/issues/8078

The PR is still failing the spelling check.  FYI, I'm out of the office for the next week and will be checking GitHub less frequently.

It's hard to tell from the spelling test output which specific words it's failing on, but to me it looks like in each case it's Pester domain-specific words like AfterEach and BeforeEach. The page doesn't currently mark each of these as inline code (that was true before my improvements) and I don't know if doing so would make them excluded from the spelling check and/or is necessary/desirable.
I'm pretty sure this PR has not introduced any new spelling mistakes, and I think it is an improvement on the previous version of this page, so my suggestion would be to merge it and iterate with further versions for other improvements.
If you can provide more specifics on spellings that you want edited however I'm happy to implement.

@markwragg Thanks for your contribution!


How to get the region information about MS Teams user in InstallationUpdate Activity

Our application is trying to capture the region of the MS Teams user when they install the bot in MS Teams instance. Is there a way to find out in which region user belongs to when user installs the bot?

Thanks for raising your query.
We will look into it and let you know the updates.

You can capture the locale of the Microsoft Teams user from turnContext class. You can retrieve it from turnContext.Activity.Locale.

turnContext.Activity.Locale provides the locale when user changes the language in MS Teams instance (for e.g. fr-FR) . and we are looking for a way to find the region (for e.g. APAC, AMEA etc. ) that MS Teams user is based in when user installs the bot?

Currently we cannot directly get the region. You can also refer to similar question here where they can get IP address and look for the region based on IP Address - https://learn.microsoft.com/en-us/answers/questions/1517391/location-of-users-accessing-the-bot.


Playlist::get panics if the playlist contains tracks from Local Files

Seems like SpotifyId::from_base62() can't handle tracks from local files, since it returns Err.
This leads to the unwrap() on the parse function called from Playlist::get (here) to cause a panic and crash my application with:
thread 'main' panicked at 'called 'Result::unwrap()' on an 'Err' value: SpotifyIdError', /home/rainbowcookie/.cargo/registry/src/github.com-1ecc6299db9ec823/librespot-metadata-0.2.0/src/lib.rs:296:54

It'd be nice for the error to be handled instead of just panicking. I don't know if handling local files is possible, but even just ignoring tracks whose SpotifyId returns Err would be a better stop-gag solution in my case.

Yeah, seems right. Do you know your way around Rust to submit a PR? I see more than one Rust project listed on your GitHub profile 😉

I can give it a spin. Would replacing
SpotifyId::from_base62(uri_parts[2]).unwrap()

with
if let Ok(id) = SpotifyId::from_base62(uri_parts[2]) {
  track
}

be good enough in your opinion? Not gonna lie, I've barely used map() (or most functions with iterators) in my time with Rust.

Try looking at filter_map :-)

I knew there had to be a nicer way 😅
Seems to work fine, will PR it. Thanks for the help guys!


Include scratch blocks port

I'm interested in porting ardublockly to scratch blocks (https://github.com/LLK/scratch-blocks) and create some simplifying blocks that abstract some of the common complexity. The goal is to make it usable by children and act as a way of learning to code.
Would this task fit in the project, or is it better to fork the project?

As far as I understand the code generator has been removed from Scratch Blocks, as that is taken care by the Scract VM, were you planning to have something following that model or reapply the generator to the blocks?

I think the easiest way would be to use the same generators as ardublockly. Sure it would be interesting to eventually add some kind of emulator, but since the process of uploading the code to the arduino to see the results is kind of easy you'll get quick feedback anyway.

Hi,
that's a very good idea, so good that someone has already created a project like this : http://kittenbot.cc/
Hope we could work all together on great project for kids.

Using Scracth VM doesn't really mean emulating an Arduino, but to implement the Arduino code generation in the "VM project", to then be passed to the IDE the same way Ardublockly does at the moment. With scratch there is a separation of concerns, so the blocks project is only responsible to provide the visual aspect, the Scrtach VM tracks the blocks and generates the AST, Scratch Render does the animation, Scratch GUI binds all the front end together, etc
I've been keeping an eye on Kittenbot, but unfortunately they haven't open sourced any of the Scratch changes, they have some repositories on GitHub only with readme files about the project.

Yeah, I was thinking that Scratch VM could be used to "emulate" some parts of an Arduino in the browser. For example, instead of animating x/y positions of a sprite you could animate the light of a led and have it display inside the browser. This is secondary though, the main point is just replacing the visuals with scratch blocks.

Quick note from the Blockly team, the top level language generators have been added back in to Scratch Blocks. There just aren't any block generators included for Scratch's blocks. Otherwise, code generation should still work exactly the same as in Blockly (file an issue if it doesn't!). =)


[Feature request] Add Android games as a platform

Hi, currently Android games are accessed through the apps menu and a convenient filter. However I think it'd be much nicer to have Android games shown as a system in the main view.

Duplicated issue:
https://github.com/magneticchen/Daijishou/issues/37


Vue3 Typescript breaks the webpack watcher

I have a vue3/symfony project and i started implementing typescript but i came across an issue that i cannot solve. For building assets i'm using webpack encore and when i start the watcher the assets are compiled just fine, but when i change anything in my .vue files ( even adding a blank space to force webpack to recompile ) i get this error:
TS2614: Module '"resources/ts/helpers"' has no exported member 'TestClass'. Did you mean to use 'import TestClass from "resources/ts/helpers"' instead?
TS2339: Property '__file' does not exist on type '{}'.
Important notes: if i do any kind of change ( even a blank space ) on the helper.ts the compilation is again succesfully.
This only happens to .ts files imported into .vue files. The .js or .vue(with or without typescript) files that i've imported are fine
helpers.ts:
export class TestClass {
      constructor(public test: string) {
      }
    }

Imported as import { TestClass } from "resources/ts/helpers";
tsconfig.json
 {
      "compilerOptions": {
        "target": "esnext",
        "module": "esnext",
        "noImplicitThis": true,
        "jsx": "preserve",
        "moduleResolution": "node",
        "esModuleInterop": true,
        "skipLibCheck": true,
        "lib": [
          "esnext",
          "dom",
          "dom.iterable",
          "scripthost"
        ],
        "baseUrl": ".",
        "paths": {
          "resources/*": [
            "resources/*"
          ]
        }
      },
      "include": [
        "resources/**/*.ts",
        "resources/**/*.tsx",
        "resources/**/*.vue",
      ],
      "exclude": [
        "node_modules"
      ]
    }

webpack.config.js:
const Encore = require('@symfony/webpack-encore');
    const path = require('path');
    const webpack = require('webpack');

    // Manually configure the runtime environment if not already configured yet by the "encore" command.
    // It's useful when you use tools that rely on webpack.config.js file.
    if (!Encore.isRuntimeEnvironmentConfigured()) {
      Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
    }

    Encore
      // directory where compiled assets will be stored
      .setOutputPath('public/build/')
      // public path used by the web server to access the output path
      .setPublicPath('/build')
      // only needed for CDN's or sub-directory deploy
      //.setManifestKeyPrefix('build/')
      .copyFiles({
        from: './resources/assets/media',
        to: 'media/[path][name].[ext]',
        pattern: /\.(png|jpg|jpeg|svg)$/
      })
      .copyFiles({
        from: './resources/assets/fonts',
        to: 'fonts/[path][name].[ext]',
        pattern: /\.(ttf)$/
      })
      /*
       * ENTRY CONFIG
       *
       * Add 1 entry for each "page" of your app
       * (including one that's included on every page - e.g. "app")
       *
       * Each entry will result in one JavaScript file (e.g. main.js)
       * and one CSS file (e.g. app.css) if you JavaScript imports CSS.
       */
      .addEntry('main', './resources/main.js')

      // When enabled, Webpack "splits" your files into smaller pieces for greater optimization.
      .splitEntryChunks()

      // will require an extra script tag for runtime.js
      // but, you probably want this, unless you're building a single-page app
      .enableSingleRuntimeChunk()

      /*
       * FEATURE CONFIG
       *
       * Enable & configure other features below. For a full
       * list of features, see:
       * https://symfony.com/doc/current/frontend.html#adding-more-features
       */
      .cleanupOutputBeforeBuild()
      .enableBuildNotifications()
      .enableSourceMaps(!Encore.isProduction())
      // enables hashed filenames (e.g. app.abc123.css)
      .enableVersioning(Encore.isProduction())

      // enables @babel/preset-env polyfills
      .configureBabel(() => {
      }, {
        useBuiltIns: 'usage',
        corejs: 3
      })

      // enables Sass/SCSS support
      .enableSassLoader()

      // enables Vue support
      .enableVueLoader(() => {
      }, {
        version: 3,
        runtimeCompilerBuild: false //if using only single file components, this is not needed (https://symfony.com/doc/current/frontend/encore/vuejs.html#runtime-compiler-build)

      })
      // uncomment if you use TypeScript
      .enableTypeScriptLoader()

      // uncomment if you're having problems with a jQuery plugin
      .autoProvidejQuery()
      .addAliases({
        'resources': path.resolve('./resources')
      })
    ;

    module.exports = Encore.getWebpackConfig();

package.json:
{
      "devDependencies": {
        "@symfony/webpack-encore": "^1.5.0",
        "@types/jquery": "^3.5.5",
        "@vue/compiler-sfc": "^3.0.2",
        "babel-core": "^7.0.0-bridge.0",
        "file-loader": "^6.0.0",
        "https-proxy-agent": "^2.2.1",
        "lorem-ipsum": "^2.0.3",
        "sass": "^1.32.13",
        "sass-loader": "^10.2.0",
        "ts-loader": "^8.3.0",
        "tslib": "^2.3.0",
        "vue-loader": "^16.5.0",
        "vue-template-compiler": "^2.6.12",
        "webpack-notifier": "^1.6.0"
      },
      "license": "UNLICENSED",
      "private": true,
      "scripts": {
        "dev-server": "encore dev-server",
        "dev": "encore dev",
        "watch": "encore dev --watch",
        "build": "encore production --progress"
      },
      "dependencies": {
        "@babel/polyfill": "^7.12.1",
        "@ckeditor/ckeditor5-build-classic": "^25.0.0",
        "@fortawesome/fontawesome-free": "^5.15.3",
        "@popperjs/core": "^2.5.4",
        "@tinymce/tinymce-vue": "^4.0.0",
        "@vee-validate/rules": "^4.2.4",
        "@vueform/multiselect": "^2.0.1",
        "axios": "^0.21.1",
        "bootstrap": "^5.0.2",
        "chart.js": "^2.9.4",
        "core-js": "^3.6.5",
        "dropzone": "^5.9.2",
        "element-plus": "^1.0.2-beta.36",
        "es6-promise": "^4.2.8",
        "inputmask": "^5.0.6",
        "jquery": "^3.5.1",
        "lodash": "^4.17.20",
        "nprogress": "^0.2.0",
        "perfect-scrollbar": "^1.5.0",
        "select2": "^4.0.13",
        "sweetalert2": "^10.10.0",
        "typescript": "^4.3.4",
        "vee-validate": "^4.5.0-alpha.2",
        "vue": "^3.0.7",
        "vue-inline-svg": "^3.0.0-beta.2",
        "vue-router": "^4.0.3",
        "vuex": "^4.0.0-rc.1",
        "yup": "^0.29.3"
      }
    }

P.S. I've posted this issue on webpack encore's repo first but they said they have no idea. I also posted it on SO but i got no answers and i'm out of options

Sorry, not related to webpack, it is typescript error, please use stackoverflow for questions


Signal handler to capture stack of all goroutines

It is often helpful to get a stack dump by sending SIGQUIT to a Go program (Ctrl+\ if attached with a terminal). Looking at blocked goroutines can help find live locks.
We could have a signal handler integration or other mechanism that would send a full stack trace to Sentry.

Any updates on this @rhcarvalho?

@l0nax, I have not put further thoughts into this, it was just an idea. Do you have a concrete use case?

It would be helpful for our current project to have a look over all go-routines.
Besides of that – we are currently working on it, because on Windows such core dumps aren't currently created – I'm unaware of the current support on sentry's side to show multiple Threads/Go-Routines.
We want, at least, to be able to upload those core dumps – but this is part of another issue.


Tips for building and contributing to the project

Hello!
I just started using this package and I'm wanting to dive deeper into how this is working and potentially contribute after learning more. Do you have any advice for building, running, and testing the project? I downloaded it and ran pnpm i with pnpm 9 and that went rather smoothly. Then I started the supabase instance and ran the tests in the projects. There were lots of failing tests so I wasn't sure if that was expected or I was still missing configuration.
I'm specifically getting this error when running tests:
Error: Failed to resolve entry for package "@supabase-cache-helpers/postgrest-core". The package may have incorrect main/module/exports specified in its package.json.

hey @colespencer1453, thanks for your interest in contributing to this library. Highly appreciated!
we are using pnpm v8 still, although despite the updated lockfile I dont think there will be any problems when using v9 instead.
The test require the dependencies to be built. I just added the missing task definition to turbo for this (https://github.com/psteinroe/supabase-cache-helpers/commit/2349efd40885b8366d96094f98a202f3c2fa4345). if you run the test without turbo, you need to run the build manually. I usually just run pnpm -w run build:packages. Note that if you do any update to a dependency (e.g. postgrest-core when you want to run postgrest-swr tests), you have to rebuild that package for the changes to take effect. Further, some integration tests require supabase to run. So it's always a good idea to run pnpm supabase start before working on the project.
Let me know if you encounter any further issues or if something else is unclear. I would also appreciate a contributors guide!

hey @colespencer1453, thanks for your interest in contributing to this library. Highly appreciated!
we are using pnpm v8 still, although despite the updated lockfile I dont think there will be any problems when using v9 instead.
The test require the dependencies to be built. I just added the missing task definition to turbo for this (2349efd). if you run the test without turbo, you need to run the build manually. I usually just run pnpm -w run build:packages. Note that if you do any update to a dependency (e.g. postgrest-core when you want to run postgrest-swr tests), you have to rebuild that package for the changes to take effect. Further, some integration tests require supabase to run. So it's always a good idea to run pnpm supabase start before working on the project.
Let me know if you encounter any further issues or if something else is unclear. I would also appreciate a contributors guide!

@psteinroe I think I'm making progress, but still struggling to run the tests specifically for postgrest-react-query. If I cd to the folder for it and run pnpm test all of the tests fail. If I run pnpm test from the root then it runs tests for @supabase-cache-helpers/storage-core:test: and all of them are passing. I'm not familiar with turbo so I'm probably missing something here. I have the supabase db up and running without issue.

@psteinroe looks like the main issue here was the supabase config.toml file had an empty array for schemas exposed in the api. Is this intentional?
[api]
# Port to use for the API URL.
port = 54321
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
# endpoints. public and storage are always included.
schemas = []
# Extra schemas to add to the search_path of every request.
extra_search_path = ["extensions"]
# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
# for accidental or malicious requests.
max_rows = 1000

it is, public and storage are always exposed. What errors do you get?

I get the schema must be one of the following "The schema must be one of the following:  with a blank list. When adding public to the array of schemas this error is resolved and most tests are passing.

that is indeed weird! Are you using the supabase cli version declared in the repo?

All I see in the repo is "supabase":"latest" in the package.json. I upgraded my cli to latest and I"m still getting the same thing.

 Also wasn't using pnpm supabase so was using latest cli version. Version in the project appears to be 1.183.5.


How to set flush interval?

I found it's not quick enough to see logs in cloudwatch. how to set flush interval?

@zhaoyao91 I know it's been a while, but did you ever find a way to set the interval?

I found that you can set flush_interval on any output buffer in fluentd: https://docs.fluentd.org/v1.0/articles/output-plugin-overview#buffering/retrying-parameters
example:
<match *>
    ...
    <store>
        ...
        flush_interval 10s
    </store>
</match>

Akin to https://github.com/uken/fluent-plugin-elasticsearch/issues/348?

Yes, it's no the plugin that has to support flush_interval and flush_mode, that is handled by fluntd.

The solution is https://github.com/fluent-plugins-nursery/fluent-plugin-cloudwatch-logs/issues/86#issuecomment-398275619.
Yep, it is similar to  https://github.com/uken/fluent-plugin-elasticsearch/issues/348.


Add board definition for Melopero Shake RP2040

We created the board header files for the upcoming Melopero Shake RP2040, a development board based on the RP2040 microcontroller.

Sorry we fixed the name of the header


Finished ion-compare basic mode

Description:
This pr finished ion-compare basic mode and based on https://github.com/cheqianh/ion-java/pull/2
I will make another pull request for equivs/non-equivs/equivs-timeline modes separately.
The compare function convert ion-stream or event-stream files to event structure lists and compare the lists.
Note:

I worked on compare part and process part in parallel, so I didn't refactor some functions that show up in both files. I'll refactor them after done ion-compare and ion-process. I've already make a file for refactor functions which is called IonJavaTestUtil.java. (or other name)

The signature of compare is:
compare(CompareContext compareContext,  boolean writeReport, int startI, int endI, int startJ, int endJ)
compareContext
CompareContext stores eventStream(ArrayList<Event>),
writeReport
WriteReport is for deciding weather writing content to the report or not. There are 2 ways to use compare function: one is Comparing eventStream and write a comparisonReport, and the second way is using it as a helper function that simply Compare two eventStreams. So writeReport is false if we just want to compare two random eventStreams.
int startI, int endI
These 2 numbers represent the range of the left hand eventStream that going to be compared.
int startJ, int endJ
These 2 numbers represent the range of the right hand eventStream that going to be compared.
For example:
StartI, endI are 1,3. startJ and endJ are 2,4. It means we are going to compare sublist of the left eventStream in index 1-3 to sublist of the right hand eventStream in index 2-4.

  isSameStruct method which compares 2 structs has similar arguments.

To compare if 2 structs are same. I scan the first struct and Store each field in a hashMap(key is fieldName and value is a list of pairs which each pair represents the index of the range that this field shows in the eventStream), then I go through the second struct and check if each element shows up in the hashMap: if it's found then remove this data from the map, otherwise return false.

Test

Embedde stream
List, sexp and other scalar value
Struct, nested struct
Mixed of above

Thank you for the code review! I'll make small commits for each features now.
The above commits worked on issues from pr2. (First one finished most of issues and the second one just added a final key word)

Finished SYMBOL_TABLE event_type, created an append outputStream to the file.

Added a space after comma.(IonProcess.java 308)

Exit after finding errors for ionWriter. (IonProcess.java 89, 383)

For issue https://github.com/cheqianh/ion-java/pull/2#discussion_r473273689, I noticed that even though the event doesn't have a field_name, ion-c will assign it $0 as long as it's in a struct. I added this if-else statement trying to match ion-c's performance, is this necessary?

Above commits fixed current pr3 issues except https://github.com/cheqianh/ion-java/pull/3#discussion_r473277490.
I squashed above commits into one commit  23fbf78 and force pushed it which is easier to code review.
I noticed that IonContainer doesn't have add method and adding a struct need a field_name so I think we can't simply refactor parseStruct, parseList and parseSexp.

Code review commit: c1eee57
In above commit, I fixed current pr3 issues except https://github.com/cheqianh/ion-java/pull/3#discussion_r473277490 since it may create new files.
I noticed that IonContainer doesn't have add method and adding a struct need a field_name so I think we can't simply refactor parseStruct, parseList and parseSexp.

Code review commit:  a5ec1c5
In above commit, I fixed current pr3 issues except #3 (comment) since it may create new files.
I noticed that IonContainer doesn't have add method and adding a struct need a field_name so I think we can't simply refactor parseStruct, parseList and parseSexp.

Description:

Non-equivs mode is based on equivs mode, it used the same functions to check if the given sequence is equivalence. If the given sequence is equivs, write the report.
Equivs-timeline mode is based on equivs mode too. It added an extra logic in compare function. The extra code used timestamp.compare method  to compare SCALAR value if it's equivs-timeline mode and both values are timestamp type.

code review commit: 1e68c19
what I did
This commit deleted some useless variables, changed styles commented earlier and tested files from ion-tests.
test:
test equiv/non-eqvuis/timestamp files from https://github.com/amzn/ion-tests/tree/master/iontestdata/good

Currently, I convert files to a eventStream and write outputs at the same time. Is it ok to do a 2-pass? The first pass converts files to List and then processing them to desired format through the second pass.

Yes, two-pass is a good idea.

For issue #2 (comment), I noticed that even though the event doesn't have a field_name, ion-c will assign it $0 as long as it's in a struct. Otherwise it will throw an exception. I added this if-else statement trying to assign an event's field_name to $0 if it's in a struct without field_name , is this necessary? (ionProcess.java 432)

Can you give me an example of this? I'm not sure I fully understand.

For issue #2 (comment), I noticed that even though the event doesn't have a field_name, ion-c will assign it $0 as long as it's in a struct. Otherwise it will throw an exception. I added this if-else statement trying to assign an event's field_name to $0 if it's in a struct without field_name , is this necessary? (ionProcess.java 432)

Can you give me an example of this? I'm not sure I fully understand.

Sure,  For event stream:
$ion_event_stream
{
  event_type: CONTAINER_START,
  ion_type: STRUCT,
  depth: 0
}
{
  event_type: SCALAR,
  ion_type: INT,
  value_text: "1",
 // here is supposed to have field_name
  value_binary: [
    224,
    1,
    0,
    234,
    33,
    1
  ],
  depth: 1
}
{
  event_type: CONTAINER_END,
  ion_type: STRUCT,
  depth: 0
}
{
  event_type: STREAM_END,
  depth: 0
}

If I use ion-c to process this eventstream to ionstream, it output:
{
  $0: 1
}

Event though the event stream doesn't have field_name, (which might be an error) it outputs $0 instead.

Code review commit: 54b458a
This commit fix the issue https://github.com/cheqianh/ion-java/pull/3#discussion_r473277490.
I refactor both ionCompare and ionProcess into a new file IonJavaCli.java.
For this commit, file IonProcess.java and ionCompare.java is not necessary to code review anymore. I deleted them in the next commit.

code review commit: e14795c
What I did:
fix the current code review issues.
Question
I tried to write output directly to system.out when a symbol_table event faced but it didn't work.
FileOutputStream append works if the outputStream is a file. If the outputStream is system.out, Is printStream append method a good idea to do the same thing as FileOutputStream? It seems like printStream.append only support charsequence which might not be correct.

Event though the event stream doesn't have a field_name, (which might be an error) it outputs $0 instead.

Yeah, that looks like a bug in the ion-c implementation. That should be an error. Can you please open an issue in ion-c?

I tried to write output directly to system.out when a symbol_table event faced but it didn't work.
FileOutputStream append works if the outputStream is a file. If the outputStream is system.out, Is printStream append method a good idea to do the same thing as FileOutputStream? It seems like printStream.append only support charsequence which might not be correct.

I believe the problem is that closing the IonWriter closes the underlying OutputStream, and once System.out is closed, continuing to write to it will not cause the output to appear in stdout. To avoid this, you could create a custom trivial OutputStream implementation that delegates to System.out for everything except close(). That way closing the IonWriter will not close System.out and you can continue writing to it. Take a look at FilterOutputStream.

above commits fixed issues rather than SYMBAL_TABLE/System.out one

commits 0306b96 added some logic to make sure system.out isn't closed when SYMBOL_TABLE event faced.


Lead Instructor should be able to view Attendee contact information

Lead Instructors should be able to see attendee contact information. To prevent unwanted GDPR exposure, this should be hidden behind 'contact' and 'emergency contact' buttons so that they have to request these details directly. The user should also confirm their password when accessing this information.

Team Leaders should also have access to the same information. We should hide the emergency contact information on the user.show screen in the same fashion.


[TASK] Release 1.3.3

What's the task? Please describe.
Action items for releasing v1.3.3
Describe the items of the task (DoD, definition of done) you'd like.

Pre-Release

[x] Regression test plan (manual) - @khushboo-rancher
[x] Run e2e regression for pre-GA milestones (install, upgrade) - @yangchiu
[x] Run security testing of container images for pre-GA milestones - @yangchiu
[x] Verify longhorn chart PR to ensure all artifacts are ready for GA (install, upgrade)  @yangchiu

https://github.com/longhorn/longhorn/tree/v1.4.1-rc2 (longhorn/longhorn)
https://github.com/longhorn/charts/tree/v1.4.x (longhorn/charts)

[x] Run core testing (install, upgrade) for GA build from the previous patch and the last patch of the previous feature release (1.4.0 & 1.3.2). - @yangchiu

Release

[x] Release longhorn/chart from the release branch to publish to ArtifactHub
[x] Release note

[x] Deprecation note
[ ] Upgrade notes including highlighted notes, deprecation, compatible changes, and others impacting the current users

Post-Release

[ ] ~Create a new release branch of manager/ui/tests/engine/longhorn instance-manager/share-manager/backing-image-manager when creating the RC1~
[ ] Update https://github.com/longhorn/longhorn/blob/master/deploy/upgrade_responder_server/chart-values.yaml @PhanLe1010
[ ] Add another request for the rancher charts for the next release (1.4.2) @rebeccazzzz

Rancher charts: verify the chart is able to install & upgrade - @khushboo-rancher

[x] rancher/image-mirrors update @weizhe0422 (@PhanLe1010 )

https://github.com/rancher/image-mirror/pull/377

[x] rancher/charts dev-2.6 & 2.7 branches for rancher marketplace @weizhe0422 (@PhanLe1010)

dev-2.6: https://github.com/rancher/charts/pull/2558
dev-2.7: https://github.com/rancher/charts/pull/2555

cc @longhorn/qa

Verify longhorn chart PR to ensure all artifacts are ready for GA

pending by testing https://github.com/longhorn/longhorn/issues/5550

Verify longhorn chart PR to ensure all artifacts are ready for GA verified :
For both longhorn/longhorn v1.3.3-rc2 and longhorn/chart v1.3.3-rc2:

Fresh install - Pass
Upgrade from v1.3.2 to v1.3.3-rc2 - Pass
After install/upgrade to v1.3.3-rc2, below test items passed

Create a statefulset and write data
Upgrade to v1.3.3-rc2
Upgrade engine image
Scale down/up workload
Trigger replica rebuilding
Create system backup
Create volume backup and restored
Verify volume data

Uninstall

Run e2e regression for pre-GA milestones (install, upgrade):
v1.3.3-rc2:
amd64: 4 failures
arm64: 2 failures
amd64 upgrade: 3 failures
arm64 upgrade: 2 failures

Run security testing of container images for pre-GA milestones:
v1.3.3-rc2: 96 HIGH, 0 CRITICAL

- [ ] Run core testing (install, upgrade) for GA build from the previous patch and the last patch of the previous feature release

@yangchiu Please help run the core test for the 1.3.3 GA candidate, since @roger-ryao is busy on one 1.3.3 regression testing. Thanks.
https://github.com/longhorn/longhorn/pull/5780
https://github.com/longhorn/charts/pull/109
cc @longhorn/qa

Run core testing (install, upgrade) for GA build:
amd64: 0 failure
arm64: 0 failure
amd64 upgrade: 0 failure
arm64 upgrade: 0 failure

Post-Release

[ ]  ~Create a new release branch of manager/ui/tests/engine/longhorn instance-manager/share-manager/backing-image-manager when creating the RC1~
[ ]  Update https://github.com/longhorn/longhorn/blob/master/deploy/upgrade_responder_server/chart-values.yaml @PhanLe1010
[ ]  Add another request for the rancher charts for the next release (1.4.2) @rebeccazzzz

Rancher charts: verify the chart is able to install & upgrade - @khushboo-rancher

[ ]  rancher/image-mirrors update @weizhe0422 (@PhanLe1010 )

docs(longhorn): Add longhorn 1.4.1 images rancher/image-mirror#360

[ ]  rancher/charts dev-2.6 & 2.7 branches for rancher marketplace @weizhe0422 (@PhanLe1010)

dev-2.6: Add Longhorn 1.4.1 chart with dev-2.6 rancher/charts#2478
dev-2.7: Add Longhorn 1.4.1 chart with dev-2.7 rancher/charts#2479

cc @longhorn/qa

@weizhe0422 @PhanLe1010 @rebeccazzzz Please help with post-release items. Thanks.
cc @longhorn/qa

I've created PRs for Longhorn v1.3.3 in Rancher v2.6 and v2.7, and also tested to make sure it installs and starts correctly. In addition, the mirrored Longhorn images had been uploaded to the docker hub, and it is also verified that they can be pulled properly.

I've created PRs for Longhorn v1.3.3 in Rancher v2.6 and v2.7, and also tested to make sure it installs and starts correctly. In addition, the mirrored Longhorn images had been uploaded to the docker hub, and it is also verified that they can be pulled properly.

@weizhe0422 @rebeccazzzz what's the status of these charts now? I know @khushboo-rancher have verified them, so are they merged already?

@innobead Update current status: this three PRs includes mirror images and rancher chart files had been approved by @PhanLe1010, tested by @khushboo-rancher and got merged into dev2-6/dev-2.7 by Rancher dev.
But there is an UI issue(Issue#5794) raised by @khushboo-rancher, and I will create PRs to fix it.

Thanks @weizhe0422 :+1:

[ ]  Update https://github.com/longhorn/longhorn/blob/master/deploy/upgrade_responder_server/chart-values.yaml @PhanLe1010
[ ]  Add another request for the rancher charts for the next release (1.4.2) @rebeccazzzz

@PhanLe1010 @rebeccazzzz can you check if these items are all done or not? If yes, mark the checkboxes.