Scroll protocol assumes ballistic scroll physics, and ClampingScrollPhysics isn't ballistic

Scrolling in a Flutter list on Android and other platforms often feels much slower and less responsive than it should be. This issue is a major reason why: it can make a fling go about 15% less far than it should. This issue has also gotten in the way of previous attempts to fix some other reasons why.
Background
The framework's approach to scrolling assumes that each ScrollPhysics implementation is restartable, or ballistic. (*) The simulation is frequently restarted, and the ScrollPhysics is responsible for not letting that cause problems.
This is a lot like how the framework may frequently rebuild widgets, and if that affects behavior then that's a bug in the widget.
In the case of scrolling, this assumption is very natural because it will automatically be satisfied by any scroll physics so long as it obeys a reasonable ("ballistic") physical metaphor:

The thing that's scrolling is a physical object in motion.
Its velocity changes due to physical forces on it, according to Newton's second law.
Those forces depend only on (a) its current velocity and (b) where it is in its environment.

This metaphor works great for a wide variety of springs, frictional forces, clamping barriers, and other forms of scrolling physics one could dream up. Modulo small bugs (#109675, and ~another which I'll file shortly~ #120340 which affects macOS scrolling), it works great for all of the framework's scroll physics…
((*) This assumption doesn't seem to be clearly documented; I'll file a separate issue for that (→#120341), and see about writing a docs PR for it. Fundamentally it stems from the fact that ScrollPhysics.createBallisticAnimation takes only (a) a velocity and (b) a ScrollMetrics, where the latter encodes the current position plus some facts like ScrollMetrics.maxScrollExtent that describe the physical environment.)
Problem
… all, that is, except one. The trouble is that one scroll physics, ClampingScrollPhysics, breaks this assumption.
(That's the scroll physics we use by default on Android and all other non-Apple platforms.)
If you restart it — specifically if you restart it in the middle of a fling, where it uses ClampingScrollSimulation — then it slows down more.
The effect is that scrolling is often much slower and less responsive-feeling than it should be. In the repro below, a fling goes about 20% less far than it does for a native Android list. Part of that is due to #119875, but most of it (a 15% reduction) is due to this issue.
Related issues

Symptom caused by this issue and several others: #16371
Different issue causing overlapping symptoms: #119875
Thread about the fact that we do frequently restart the simulations: #11599
(Frequently restarting isn't a bug in itself, unless it's so often as to become a performance issue. The bug is that we do restart, even sometimes, and that the physics doesn't handle this.)
One visible quirk of ClampingScrollPhysics and ClampingScrollSimulation is that near the end, it speeds up slightly and then abruptly stops: #113424
This quirk would be impossible in a restartable/ballistic scroll simulation: it has to slow down at every speed, or it would never stop.

Steps to Reproduce

Run the platform_tests/scroll_overlay app on an Android device.

Scroll with a fling gesture: swipe rapidly upward and release. Wait a couple of seconds for the scroll to come to a stop.

Swipe just once, and swipe as precisely straight upward as possible, just like with #119875.

Observe how far the scroll went, as shown by the numbered item "Flutter n" in the Flutter-driven scrolling list.

Edit lib/main.dart to delete the line itemCount: 1000,. Reload, and scroll back to the top.

Repeat steps 2 and 3.

Expected results:
The list should go the same distance, reaching the same numbered item, regardless of whether the list is infinite or merely practically infinite. (With 1000 items, we never get close to the end of the list.)
Actual results:
The list goes much less far with itemCount: 1000 present than it does without it.
Specifically, when I try this on the current version of scroll_overlay (at flutter/platform_tests@1d797b8699546f1178e3cf58de9c6cc64f825281), I see "Flutter 81" at the top of the screen when the fling is complete. With itemCount: 1000, removed, I see "Flutter 90".
(Ideally the list should also go the same distance that the Android list does: I see "Android 94" at the top of the screen. With itemCount removed, the remaining discrepancy is #119875.)
This means the total distance travelled with itemCount present is about 15% less than without it, and about 20% less than the Android list. (Just dividing (90-81)/90 would give too low an estimate, because the later items are bigger: item N is 40+N logical pixels tall. The 15% and 20% are my calculations using those actual heights.)
How the repro works:
This repro uses the fact that passing a non-null itemCount to the ListView constructor causes frequent restarts of the scroll's ballistic simulation, #11599, and an itemCount of null suppresses them. That isolates the effect of this issue from #119875 and others.
Details of why `itemCount` affects the repro
When itemCount is non-null, the underlying SliverList will estimate a max scroll offset based on the children it's laid out, so this estimate constantly changes and each ScrollPosition.applyContentDimensions call causes an applyNewDimensions call, which leads to goBallistic and restarting the simulation. With a null itemCount, the estimate is always infinite (from SliverMultiBoxAdaptorElement.estimateMaxScrollOffset), so it never changes and applyNewDimensions isn't called.

Logs
$ flutter analyze
Analyzing scroll_overlay...
No issues found! (ran in 0.8s)

$ flutter doctor -v
[✓] Flutter (Channel main, 3.8.0-8.0.pre.13, on Debian GNU/Linux 10 (buster) 4.19.0-23-amd64, locale en_US.UTF-8)
    • Flutter version 3.8.0-8.0.pre.13 on channel main at /home/greg/n/flutter/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2303f42250 (3 hours ago), 2023-02-08 14:24:12 -0500
    • Engine revision cc4ca6a06a
    • Dart version 3.0.0 (build 3.0.0-215.0.dev)
    • DevTools version 2.21.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /home/greg/Android/Sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /home/greg/lib/android-studio-2<IP_ADDRESS>/jbr/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 7.0.1-8+deb10u2 (tags/RELEASE_701/final)
    • cmake version 3.13.4
    • ninja version 1.8.2
    • pkg-config version 0.29

[✓] Android Studio (version 2022.1)
    • Android Studio at /home/greg/lib/android-studio-2<IP_ADDRESS>
    • Flutter plugin version 71.2.4
    • Dart plugin version 221.6096
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] Android Studio (version 2021.2)
    • Android Studio at /opt/android-studio
    • Flutter plugin version 71.1.2
    • Dart plugin version 212.5744
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] VS Code (version 1.75.0)
    • VS Code at /usr/share/code
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (3 available)
    • Pixel 5 (mobile) • 08171FDD40025F • android-arm64  • Android 13 (API 33)
    • Linux (desktop)  • linux          • linux-x64      • Debian GNU/Linux 10 (buster) 4.19.0-23-amd64
    • Chrome (web)     • chrome         • web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Android's scroll physics isn't ballistic either
When PR #77497 was merged in order to switch ClampingScrollSimulation to use the native Android physics (which would fix #113424 and #119875 and thereby some of the causes of #16371), it had to be reverted because of a variation on this issue. That was:

#83632
and its duplicate #84197

The root cause of those is that it turns out that the native Android scroll physics is also not restartable/ballistic, but in the opposite direction. Restarting the current ClampingScrollSimulation makes it slow down more, but restarting the Android scroll physics makes it keep going more, i.e. makes it slow down less.
Specifically, the Android physics starts at a deceleration of zero, and gradually decelerates more later. (See the curve at https://github.com/flutter/flutter/issues/119875#issuecomment-1414580430 , the blue Android curve in the lower-left graph showing velocity, and note that the velocity at the beginning is flat.) So if you restart it, then it returns to not decelerating — which, when it happens again and again, produces the extremely long gliding behavior seen in #83632.
(That issue title says the scroll "regains velocity", but I think that is an illusion. My eyes see that same illusion too; but when I repro the issue and log the velocity, it always gets slower, not faster. It's just that it gets slower very slowly.)

I see two possible ways forward to resolve this issue and its friends. Here's one:
Fix ClampingScrollSimulation to use a restartable, physical curve
We could fix ClampingScrollSimulation to use a curve that obeys the ballistic physical metaphor and can be restarted cleanly.
In addition to this issue itself, this solution would also fix #113424. By choosing the curve appropriately, it can fix #119875 too, travelling the exact same total distance as the Android physics does for a given starting velocity.
This option doesn't open a path to using the exact Android physics. But it fixes the issues that have previously motivated people to want to swap in those exact physics:

#113424,
which motivated #77497
#119875

So we could decide to say: if the subtle details of Android's scrolling behave in a physically nonsensical way, then that's a polish issue in Android, not in Flutter.
I have an implementation of this, which I'll send as a PR shortly. In my testing, the scrolling feels natural and responsive. (*) And when comparing to Android native behavior using the scroll_overlay app, the flings end in the same place.
((*) As long as you swipe vertically, that is. Swiping diagonally pulls in a separate issue I'll file shortly which is present regardless of scroll physics, and involves how we apply the max velocity.)
Even if we want to eventually pursue the second path, I think we should go ahead and merge a version of this solution soon, because:

It fixes the major user-visible issues with the current ClampingScrollSimulation.
The code gets simpler, and the behavior closer to Android's, than it is now. So it doesn't make the second solution any harder than it otherwise would be.

Here's the other:
Remove the assumption that scroll physics is physical
We could remove the assumption that scroll physics obeys a ballistic physical metaphor that lets it be restarted cleanly.
This will then allow us to swap in Android's curve, fixing #113424 and #119875. (Or, if we like, any other curve, including the one from the previous option above.)
Previous round
This is the approach taken in #107735, which was the successor to #77497.
That PR had to be reverted too, because removing this assumption is complicated. It tried to avoid changing the ScrollPhysics API, but:

Some customers' custom scroll physics were broken by the change anyway, because they assumed the position argument would specifically be a scroll position, not just a ScrollMetrics: https://github.com/flutter/flutter/issues/16371#issuecomment-1241020432

Using the existing ScrollPhysics.createBallisticsSimulation signature involved passing that method a mixture of the original starting position and velocity with the updated minScrollExtent, maxScrollExtent, viewportDimension, and axisDirection, in order to try to create a simulation which would carry on the original simulation in the context of the new metrics.
But this won't always work: the new metrics may cause createBallisticsSimulation to make different decisions and create a completely different simulation from the original one. Because it's a mix of data from two different times, the combination may produce erratic results.

In particular, that PR introduced this symptom:

#110400
#110340

From #110400, which I think is a bit clearer of a report than the other:

Quickly scroll to the bottom of the list and then quickly fling up a bit. […]
Actual results: The list suddenly jumps to a completely different item

I suspect that was triggered by a change in axisDirection. Combining that with the original position at the start of the list would make things look to createBallisticsSimulation like an attempt to overscroll at the top, producing a completely different simulation from the original fling. (I haven't investigated that issue closely enough to be confident of this particular diagnosis, though.)
Now
I have an implementation of this approach too, which I'll send as a PR in order to show the code for discussion. It works in my testing, fixing this issue.
That PR would be a breaking change, in particular to the API that ScrollPhysics subclasses have to extend. I think probably any version of this solution will have to be a breaking change.
I also don't love the resulting API, though that can probably be improved.
On the plus side, this direction is the only way to make it possible to use the exact Android scroll physics.

Reproducible using the code sample in  https://github.com/flutter/platform_tests/tree/1d797b8699546f1178e3cf58de9c6cc64f825281/scroll_overlay
Labeling for further insight.

recording

itemCount: 1000
itemCount: null

flutter doctor -v
[✓] Flutter (Channel stable, 3.7.2, on macOS 13.1 22C65 darwin-arm64, locale en-GB)
    • Flutter version 3.7.2 on channel stable at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 32fb2f948e (17 hours ago), 2023-02-08 07:30:10 -0800
    • Engine revision f40b73f8a4
    • Dart version 2.19.2
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[!] Android Studio (version 2022.1)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/221.6008.13.2211.9477386/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] IntelliJ IDEA Community Edition (version 2022.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.75.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.58.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)           • 28291FDH2001SA                       • android-arm64  • Android 13 (API 33)
    • TA 1021 (mobile)           • PLEGAR1790423460                     • android-arm64  • Android 9 (API 28)
    • iPhone 14 Pro Max (mobile) • 70C93773-FBEC-4F48-B648-EE61E0D00BFB • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 13.1 22C65 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.

[!] Flutter (Channel master, 3.8.0-8.0.pre.19, on macOS 13.1 22C65 darwin-arm64, locale en-GB)
    • Flutter version 3.8.0-8.0.pre.19 on channel master at /Users/nexus/dev/sdks/flutters
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b1c4d5686e (7 hours ago), 2023-02-08 16:55:05 -0800
    • Engine revision 89c8a1393d
    • Dart version 3.0.0 (build 3.0.0-215.0.dev)
    • DevTools version 2.21.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/221.6008.13.2211.9477386/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] Android Studio (version 2022.1)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/221.6008.13.2211.9477386/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] IntelliJ IDEA Community Edition (version 2022.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.75.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.58.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)           • 28291FDH2001SA                       • android-arm64  • Android 13 (API 33)
    • TA 1021 (mobile)           • PLEGAR1790423460                     • android-arm64  • Android 9 (API 28)
    • iPhone 14 Pro Max (mobile) • 70C93773-FBEC-4F48-B648-EE61E0D00BFB • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 13.1 22C65 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

So we could decide to say: if the subtle details of Android's scrolling behave in a physically nonsensical way, then that's a polish issue in Android, not in Flutter.

I feel like this is worth filing a bug on Android.


[various] Enable use_build_context_synchronously

Enables the use_build_context_synchronously lint, and fixes violations.
Part of https://github.com/flutter/flutter/issues/76229
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
[x] I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

test-exempt: enables lint

Looks like this needs to wait for the next stable release.

Landing manually due to https://github.com/flutter/flutter/issues/116226


fix:  Upgrade to web ^1.0.0

Description
Please upgrade web to web ^1.0.0 as many other packages are unable to be updated.
Steps To Reproduce

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected Behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional Context
Add any other context about the problem here.

can somebody provide a fix for this

can somebody provide a fix for this @felangel

Sure I should be able to have a look later this evening 👍

@felangel  Here is the error :
Because no versions of web_socket_client match >0.1.4 <0.2.0 and web_socket_client 0.1.4 depends on web ^0.5.0, web_socket_client ^0.1.4 requires web ^0.5.0.
And because flutter_inappwebview >=6.1.0 depends on flutter_inappwebview_web ^1.1.0 which depends on web ^1.0.0, web_socket_client ^0.1.4 is incompatible with
flutter_inappwebview >=6.1.0

@felangel Here is the error :
Because no versions of web_socket_client match >0.1.4 <0.2.0 and web_socket_client 0.1.4 depends on web ^0.5.0, web_socket_client ^0.1.4 requires web ^0.5.0. And because flutter_inappwebview >=6.1.0 depends on flutter_inappwebview_web ^1.1.0 which depends on web ^1.0.0, web_socket_client ^0.1.4 is incompatible with flutter_inappwebview >=6.1.0

Can you share your pubspec.yaml and the output of flutter doctor --verbose? Thanks!

Ah nevermind, the issue is I never published the latest version. Doing that now, apologies for the inconvenience!

@felangel  Thank you

Just published v0.1.5 which should resolve this. 🎉
Closing for now but let me know if you run into any issues using 0.1.5.


Update dependencies; fix fallout form pep440_rs change from usize => u64

This also fixes a build failure, since monotrail-utils depends on a newer version of pep440_rs than we did previously.

Thank you!


Issue with Plex scrobble

I cannot seem to get Plex to scrobble...
2022-04-02T14:58:31+01:00 info : [Source - Plex - myplex ] Initializing with the following filters => Users: N/A | Libraries: N/A | Servers: http://<IP_ADDRESS>:32400
I have a webhook setup in Plex, well two and neither work;
http://<IP_ADDRESS>:9078/plex &
http://localhost:9078/plex
Nothing appears in the log except timeouts for deezer occasionally :-/

Hello! I don't have anything helpful to add here yet, but I just wanted to let you know that I may be having the same issue. I just got everything set up finally this morning. Spotify is working fine, but it is slow, so I'm kinda waiting to see if there's just a significant lag in Between me clicking "play" on a song and it eventually getting to the scrobbler. I'll report back.

Yes, the documentation uses different terminology than my Plex account does, but it clearly states that neither are needed, so it should work without the email or username.
Did you use the full ip address of your MS instance, with /plex appended in the Plex webhook?

I have the full IP address in there, yes, with /plex appended. Working just
fine.
On Thu, Apr 21, 2022 at 4:52 PM mannp @.***> wrote:

Yes, the documentation uses different terminology than my Plex account
does, but it clearly states that neither are needed, so it should work
without the email or username.
Did you use the full ip address of your MS instance, with /plex appended
in the Plex webhook?
—
Reply to this email directly, view it on GitHub
https://github.com/FoxxMD/multi-scrobbler/issues/40#issuecomment-1105796883,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFTLPE66U5WS5VE2HMBDMETVGHE3BANCNFSM5SLCMXEQ
.
You are receiving this because you commented.Message ID:
@.***>

Spotify is working fine, but it is slow, so I'm kinda waiting to see if there's just a significant lag in Between me clicking "play" on a song and it eventually getting to the scrobbler. I'll report back.

After you click on See recently played tracks returned by API there is a warning :) This list was returned from the Spotify Api now. Sometimes Spotify "backlogs" user activity so your recent tracks may not show up for minutes (or hours). ¯_(ツ)_/¯

Sorry for the severely long delay on this @mannp . Most of the free time these days is put into another project I am working on. On top of that, I've had to pin the version of plex I use (<IP_ADDRESS>73 oct 2021) because of a transcode issue that made it unusable in later versions. I mention that because trying to reproduce your issue would require me spinning up another plex instance with a new DB and I just haven't had the time to devote to doing that.
Since it still seems to be working for @mrstrayer I would suggest you first rule out any basic connectivity issues. Webhook issues should be logged and you should be able to see them from the downloadable logs (from desktop)

You can also try pointing your webhooks URL at a simple HTTP server and echo out the response so verify that its sending them at all.
@northys

It scrobbles only played songs. I don't think that multi-scrobbler has "now playing" feature as last.fm.

That is correct. MS uses spotify's recently played api endpoint which only returns tracks after a user has stopped playing them -- either through pausing for a long enough time, stopping the player, or starting a new track. This is because recently played returns a timestamp of when the track was played which makes it easier for MS to compare to recently scrobbled info from client (maloja, last.fm).

I'm having the same issue and from the logs it looks like he webhook gets sent successfully;
Jun 13, 2022 23:54:03.660 [0x146eb5bbab38] DEBUG - Webhook: Delivering media.scrobble event by user kieranthebest (1) to 1 hooks.
Jun 13, 2022 23:54:03.661 [0x146eb5acbb38] DEBUG - HTTP requesting POST http://...:9078/plex
Jun 13, 2022 23:54:03.667 [0x146eb6441b38] DEBUG - [HttpClient] HTTP/1.1 (0.0s) 200 response from POST http://...:9078/plex

I've debugged locally and it looks like the issue is here, I don't know why you wouldn't just use req.body directly however
image

Thanks for looking into this!

I did need to set the PLEX_USER env var to get the app to recognise Plex as a source

So using plex.json did not work or is there any issue with default config for plex?

it looks like Plex just isn't sending the scrobble event for whatever reason. I get the start play events just not the scrobble

I'm guessing this is a regression introduced in a recent version of plex? They do hooks in such a weird way (multi-part POST) it could also be that Plex is sending some of the hook but not data signifying the end of the mult-post POST call.

So using plex.json did not work or is there any issue with default config for plex?

That might be my bad, the docs read to me as if the configs were optional 😵

I'm guessing this is a regression introduced in a recent version of plex? They do hooks in such a weird way (multi-part POST) it could also be that Plex is sending some of the data (https://github.com/FoxxMD/multi-scrobbler/issues/40#issuecomment-1154531200) but not data signifying the end of the multi-part POST call.

So I was seeing a weird request without a body which was occurring about 80% of the way through songs (Plex docs say it sends scrobble at the 90% mark) but with no data attached, I couldn't tell what it was exactly. Also I think this weirdness might apply to the start stop too since I'm only getting some of them in my fork that uses the start event instead of scrobble.

@k-boyle you could try debugging before multer gets ahold of the request(s) to see if plex is doing things differently now. I would think multer would transparently pass along a normal json POST with no multi-part but I'm not sure.
        const testMiddle = (req, res, next) => {
            const f = 1; // put your breakpoint here and inspect req
            next();
        }

      app.postAsync('/plex', testMiddle, upload.any(), async function (req, res) {
      ...

Although funnily somehow I got a scrobble on my running fork that uses the play event
 which is the first I've seen in a couple hours of testing
Ignore the log saying the wrong thing

@k-boyle @mannp @mrstrayer I have refactored how requests from plex are handled by using a different library with more control over the request lifecycle. Changes include much more debug logging, aggressive checking for valid data in the request (with errors thrown if not), and some potential fixes for the issues @k-boyle was specifically seeing.
Can you all try MS with on the develop branch/image and see if this fixes anything for you.

@k-boyle @mannp @mrstrayer any updates or had time to test this out?

I tested the changes a few days ago and didn't see any immediate change, but it was rather brief test and I haven't got around to trying it again.
Thank you for the further investigation and changes, I will give them another try and report back.

Any updates @k-boyle @mannp ?

Sorry not had chance to retest, will do over this weekend, if that works.

I think Im having issues related to this as well. Im currently on the develop tag (tried on latest as well), but I cannot get it to pick up Plex or Tautulli webhooks being sent to the proper URL endpoints.
I see the webhooks being sent in the Tautulli notification logs, but noting is coming through on the MultiScrobbler end. Debug logs reveal nothing when configured (what I assume is) properly, but if I send a Tautulli webhook to the /plex endpoint, I get a debug log saying that it failed. It just doesn't seem to be accepting them at the proper endpoint from Plex or Tautulli

@HStep20 are you using a reverse proxy by any chance?
In the latest develop tag I have added logging for when MS receives an invalid request or request to an unknown route. Please update and then make sure debug logging is turned on by using the LOG_LEVEL=debug environmental variable.

I am not using a reverse proxy - All internal traffic. Still experiencing similar behavior where the webhook is called, but never 'read' by multiscrobbler.
Tautulli gives me this, which is odd because its a 500 error when trying to reach MultiScrobbler:
Tautulli NotificationHandler :: Notification thread exception: decoding str is not supported
Traceback (most recent call last):
    File "/app/plexpy/request.py", line 178, in request_response2
        response.raise_for_status()
    File "/app/lib/requests/models.py", line 1021, in raise_for_status
        raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: http://<IP_ADDRESS>:9078/tautulli

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
    File "/app/plexpy/notification_handler.py", line 78, in process_queue
        notify(**params)
    File "/app/plexpy/notification_handler.py", line 430, in notify
        success = notifiers.send_notification(notifier_id=notifier_config['id'],
    File "/app/plexpy/notifiers.py", line 713, in send_notification
        return agent.notify(subject=subject,
    File "/app/plexpy/notifiers.py", line 970, in notify
        return self.agent_notify(subject=subject, body=body, action=action, **kwargs)
    File "/app/plexpy/notifiers.py", line 4228, in agent_notify
        return self.make_request(self.config['hook'], method=self.config['method'], headers=headers, **data)
    File "/app/plexpy/notifiers.py", line 977, in make_request
        response, err_msg, req_msg = request.request_response2(url, method, **kwargs)
    File "/app/plexpy/request.py", line 207, in request_response2
        req_msg = server_message(e.response, return_msg=True)
    File "/app/plexpy/request.py", line 318, in server_message
        message = str(message, 'utf-8', 'replace')
TypeError: decoding str is not supported

Plex has similar issues. I ended up connecting LastFM as a source, and Majola as a client so my scrobbles flow Plex > LastFM > MultiScrobbler > Majola, however Id love to find out why its acting so odd when trying to use webhooks scrobbling within the network

@HStep20
With the updates I mentioned on develop MS should record any communication it gets from Plex or Tautulli. Even if the request is invalid. This is a good way to determine if there is a connectivity issue between Plex and MS (so not an issue with MS). You should see something like this in the MS logs when (more info when LOG_LEVEL=debug is enabled):
2023-05-24T11:56:21-04:00 info    : [Ingress] [Plex] Received request from a new remote address: ::ffff:192.168.0.XXX (UA: PlexMediaServer/<IP_ADDRESS>73-8dcc73a59)
2023-05-24T11:56:21-04:00 debug   : [Plex Request] Receiving request from Plex...
2023-05-24T11:56:21-04:00 debug   : [Plex Request] Received 0 bytes of expected 5360
2023-05-24T11:56:21-04:00 debug   : [Plex Request] Received 5360 bytes of expected 5360
2023-05-24T11:56:21-04:00 debug   : [Plex Request] File Begin: payload
2023-05-24T11:56:21-04:00 debug   : [Plex Request] File Begin: thumb
2023-05-24T11:56:21-04:00 debug   : [Plex Request] File Recieved: payload
2023-05-24T11:56:21-04:00 debug   : [Plex Request] File Recieved: thumb
2023-05-24T11:56:21-04:00 debug   : [Plex Request] Received end of form data from Plex
2023-05-24T11:56:21-04:00 info    : [Ingress] [Plex] ::ffff:192.168.0.XXX (UA: PlexMediaServer/<IP_ADDRESS>73-8dcc73a59) Received valid data from server MYSERVER for the first time.

Similar logging would occur for Tautuilli.
If you don't see anything like this in your logs at all then it means Plex/Tautulli are unable to reach the MS instance and you have a networking issue (firewall? port forwarding?) Check the FAQ for more info and some steps you can check to take to try and troubleshoot.

Tautulli gives me this

So tautulli can access MS which is good. This error is most likely fixed in the develop branch/image #77


Updated the tooler with features using patching.

here is a link for the forked version: https://github.com/themaoci/ValheimTooler

allow teleporting with restricted items (as patch)
autopin usefull staff on map (as patch)
do not kill player on the edge of the map (as patch)
godmode (unable to kill you) (as patch)
infinity stamina (as patch)
fast crafting (as patch)
sprint speedhack (kinda useless cuz it needs more patches) (as patch)
zero cap all the time (infinity weight limit) (as patch)
detecting anticheat (some easy way from loaded assemblies)
disable features that are detected (mostly player ones the rest do not trigger the anticheat) - if anticheat is present
enable/disable esp boxes

some speedup for esp's not doing calculations 2+ times if not needed

Hello @themaoci ,
Thank you for your interest in the project!
I hesitated for a long time whether to use Harmony or not, but I'm convinced by the advantages you presented.
I will incorporate a good part of your modifications.
I won't incorporate the parts related to the anti-cheat evasion, this cheat being already dangerous enough as it is, I prefer to let the community server owners block this cheat to avoid regrettable abuses (anyway as it is, it will be detected by most anti-cheats which scan the assemblies too).
I'll add you to the credits and thanks again for your work! 👏

Hello themaoci,
I have incorporated most of your developments in the new https://github.com/Astropilot/ValheimTooler/releases/tag/v1.7.0!
Thanks again for your work, which even allowed me to correct the ESP of the deposits!


 We're still not passing all tests (did I break this?) so that's probably the next PR.

If we get to 100% tests passing and 100% pylint-passing, we can us the github action checks as a requirement for a PR to be considered ready for review.

@ProfJanetDavis I think I've adjusted to match your change-requests. Did I correctly understand everything you said?
Most of these changes are just to match the .pylintrc in this repository, which is a slightly more opinionated styleguide than the black linter, but I am extremely happy to be more lax on styleguide :) Mostly wanted to make sure your team is inheriting a codebase that is consistent and pretty!

It's all good. Thanks so much for including me.


fix: optional queue + error code

What kind of change does this PR introduce?
Bug Fix
What is the current behavior?

The current version enforces pg-boss migration at start-up

#224
What is the new behavior?

pg-boss disabled by default to keep it backward compatible. You can enable it with (ENABLE_QUEUE_EVENTS)
optional PG_QUEUE_CONNECTION_URL to install and operate pg boss

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

18 of 21 (85.71%)  changed or added relevant lines in 5 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.05%) to 86.822%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/queue/queue.ts
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/http/error-handler.ts
2
84.31%

Totals

Change from base Build<PHONE_NUMBER>:
0.05%

Covered Lines:
4597

Relevant Lines:
5282

💛  - Coveralls


Run trt_yolo on batch of image

How i can run trt_yolo.detect(frame, conf_th) on multiple image like a batch.
Need something like
frames=[frame_1, frame_2, frame_3]
trt_yolo.detect(frames, conf_th)

I have problem with optimal inference trt_yolo on 3 cameras in real time, can some one help me, any advice appreciated.
In general i have something like this:

while True:
        ret1, frame1 = cap1.read()
        ret2, frame2 = cap2.read()
        ret3, frame3 = cap3.read()
        if frame1 is None:  break
        if frame2 is None:  break
        if frame3 is None:  break

        boxes1, confs1, clss1 = trt_yolo.detect(frame1, conf_th)
        boxes2, confs2, clss2 = trt_yolo.detect(frame2, conf_th)
        boxes2, confs2, clss2 = trt_yolo.detect(frame3, conf_th)

        # Some logic with boxes

Please refer to: https://github.com/jkjung-avt/tensorrt_demos/issues/306#issuecomment-940579878.

Is this best practice for work with several cameras?

Is this best practice for work with several cameras?

That depends on your application.  But you might want to look into NVIDIA DeepStream SDK.

Ok. Thanks for help!


Support RSA-PSS on macOS (for TLS 1.3+)

This pull request adds support for RSA-PSS on macOS to (partially) fix issue https://github.com/github/certstore/issues/17.
Some caveats:

Apple doesn't allow setting custom salt lengths in SecKeyCreateSignature, it appears to always use the hash output size as the salt length. I've added a check to emit an error when an unsupported salt length is requested.
Updated the Windows implementation to return "ErrUnsupportedHash" when RSA-PSS is requested so that it doesn't emit an invalid signature.
I've opted not to add support for RSA-PSS with SHA1 as Go's x509 package doesn't support it for certificate verification.

Looks like I accidentally created a dupe of pull request #18, feel free to close this one or combine them.

Not sure who can review this, maybe @vcsjones? I'd love to get RSA-PSS support into this library and I'm happy to help with any of the required work, just let me know.

This project is now part of smimesign.
Please send this PR to https://github.com/github/smimesign if it's still relevant!


[REQUEST] updating sqlite3

Refering to: https://discuss.python.org/t/request-updating-sqlite3-to-latest-version/18051
I would like to ask if the person, who is responsible for the official python images might want to update sqlite3 to it's very latest version?
image: python:3-alpine
sqlite: 3.38.5
latest availavle version: 3.39.2 (as of time writing)
Thanks in advance!!!

I now have worked around this problem. I have two image builder versions:

which creates all the dependencies from source, then pushes them to persistent storage.
which is the real image and on build time overwrites the current ones with the one from persistent storage.

the required files (for 3.39.2) are: libsqlite3-3.92.2.zip

/usr/local/lib/libsqlite3.so.0.8.6
/usr/local/lib/libsqlite3.so
/usr/local/lib/libsqlite3.so.0
/usr/local/lib/libsqlite3.a
/usr/lib/libsqlite3.so.0.8.6
/usr/lib/libsqlite3.so.0

With this, I just have to build it once and not on every image build.
Anyway having all dependencies already updated and maintained centrally in the official image would be nice!
Hope that helps. Open for feedback and a discussion about this.

For these images, we focus on building upstream Python releases; other than the Python source, we do not want to add dependencies that are outside of the OS-provided packages (Debian and Alpine). So, for the images as they are now, we are beholden to the versions of libsqlite3-0 and sqlite-libs as are packaged and available in the respective OS distribution release. We do not build language or service images based on unstable or development releases of OS's.
For Alpine, it looks like they have 3.39.2 in their "edge" repos, but until it is in an OS release, we are unable to use it. It will likely be in Alpine 3.17 which should happen around November or December judging by their previous release cadence (https://alpinelinux.org/releases/).
Debian does have the update (3.39.2) in their testing repository (aka bookworm), but there is not yet a date set for the release (https://wiki.debian.org/DebianReleases).


Update raw-window-handle to 0.6, core-graphics to 0.23, and cocoa to 0.25

These are the latest versions of each crate.

0.6 of raw-window-handle also exposes new traits which should be supported as well. The best way to do this would probably be to expose a feature which controls which versions of raw-window-handle are supported like winit does.

Split sm-raw-window-handle feature into sm-raw-window-handle-06 and sm-raw-window-handle-05 feature, with the latter's functions all being suffixed by raw_window_handle_05; these two features are not mutually exclusive.

Thanks for fixing the workflow yml; was able to clear those compiler errors up after running CI a few times.

Thanks for all your hard work here @Nopey! I'll send this to the MQ.


Doesn't find libraries when using ES modules

Issue description
What the title says. When using ES modules, this package can't seem to find the supporting libraries.
i.e.
Discord.js client is ready!
--------------------------------------------------
Core Dependencies
- @discordjs/voice: 0.7.2
- prism-media: not found

Opus Libraries
- @discordjs/opus: not found
- opusscript: not found

Encryption Libraries
- sodium: not found
- libsodium-wrappers: not found
- tweetnacl: not found

FFmpeg
- version: 4.4
- libopus: yes
--------------------------------------------------

even though @discordjs/opus is installed.
See repro.
Code sample
No response
@discordjs/voice version
0.7.2
Node.js version
v16.6.1, TS 4.4.4
Operating system
macOS
Priority this issue should have
Medium (should be fixed soon)

This is related to this issue with esbuild https://github.com/evanw/esbuild/issues/946
Affected files are:
https://github.com/discordjs/voice/blob/main/src/util/generateDependencyReport.ts
https://github.com/discordjs/voice/blob/main/src/util/Secretbox.ts
These files use require which is not defined in es module scope. But esbuild should have created the require function in this case.
There is a workaround described in the esbuild issue but maybe we should consider migrating to dynamic import syntax or reading and parsing json files manually

Same here on Linux (Debian 10 Buster).

Since it seems several other people are having this issue as well, would it be possible to add a workaround for now and then perhaps look at other options later (I assume those would take longer than adding a few config lines)?

Is this a workaround in your build or a workaround we're expected to run in our environment?

I found a rather elegant solution to avoid modifying all your code to CJS.
This way NodeJS will load the CJS version of Discord.JS CJS instead of ESM.
import { createRequire } from "module";

const {
    joinVoiceChannel,
    createAudioPlayer,
    createAudioResource,
    entersState,
    VoiceConnectionStatus,
    NoSubscriberBehavior,
} = createRequire(import.meta.url)("@discordjs/voice");

@codetheweb

Let me reopen this issue to notify of a strange behavior that may occur when using createRequire.
https://nodejs.org/api/packages.html#dual-package-hazard
Just to be sure, this should remain a temporary solution until the problem is fixed on esbuild.
Otherwise we should find another solution to load the dependencies.


Allow 'isAsync' to be specified as an option

The use case here is simply to be able to parse an async function body alone, and not as part of a complete source script or module. It is analogous to the 'allowReturnOutsideFunction' option for async functions.
I can see two possible implementations, either a new option that initialises 'inAsync' at https://github.com/ternjs/acorn/blob/master/src/state.js#L78, or move the call to initialContent() to later in the constructor to allow a plugin to set the initial value of this.inAsync.
Although I don't use it, the same use case could be made for this.inGenerator.
If you have a preference for which implementation (new option or moving this.initialContext()) I'll be happy to make the mod and submit a PR.

Actually, a plugin can already implement this by extending parse(), so I'll close this as not required (unless you feel the additional option has value to users who don't write plugins)


Fixing CVE

Short description outlining key changes/additions
cve-2024-38819
JIRA Ticket Number
Type of change

[ ] Bug fix
[ ] New feature
[ ] Breaking change
[ ] Infrastructure change

Pull request checklist

[ ] I have added unit tests for new code that I have added
[ ] I have added/updated functional tests where appropriate
[ ] The code follows our coding standards

An exhaustive list of peer review checks can be read here

CI: Security warnings found!


Drawer divider and header updates

What ❓

Drawer divider went from .5dp to 1 dp
Added HeaderViewHolder to support headers in the drawer.

Story 📖
Trello
before and after 👀

nice! Are the type styles in HeaderViewHolder fixed? If not, could you please set the font weight to 'regular'? It more closely resembles the Material spec.

 Improve navigation and filtering on Android app


Strips spaces from operation names before camelizing

We are running into this in https://github.com/fmops/oapi_hf/blob/main/mix.exs#L28
Operation tags with spaces currently get rendered as a pretty nasty name. For example, tag = "Foo Bar" results in underscored_tag = "foo _bar" and ultimately the collected operations module to be output to a file lib/basemodulename/foo _bar.ex with contends
defmodule :"Elixir.BaseModuleName.Foo Bar" do
...

By removing spaces, this PR ensures the underscored_tag is foo_bar and results in the outputted module to be named foo_bar.ex (no spaces) with module name BaseModuleName.FooBar (no quoted atom).

Yeah absolutely, can you point me to where dash replacement is happening?

Hi @feynmanliang, realizing that I messed up the tests related to naming when I renamed a module a while ago, I just pushed two commits to fix the tests and make the changes we discussed. When you have a chance, could you check and see if it still works for you?

Thanks for the help! Unfortunately, it seems like 681815b is producing double underscores in the filename and combining camel and snake case in the module name. For repro:
I ran mix deps.unlock and mix deps.get to bump the oapi_generator dep to 681815b: https://github.com/fmops/text_generation_inference.ex/blob/test-oapi-patch/mix.lock#LL21C83-L21C123
I ran mix api.gen default vendor/text-generation-inference/docs/openapi.json which produced https://github.com/fmops/text_generation_inference.ex/blob/test-oapi-patch/lib/text_generation_inference/text__generation__inference.ex containing the aforementioned defects.

Thanks @feynmanliang for the reproduction! I now see that the issue was caused by not handling capitalized tags correctly. Commit cbaf0ce should fix this.
If it's okay with you, I will keep a copy of your spec as a test fixture in the future (full integration tests are on my to-do list).

You are welcome to use the spec as a test case (it's huggingface's not mine)! Will give the update a run later today and report back.


Cow: Watch livglamcosmeticsurgeries.com

Cow requests the watch of the watch_keyword livglamcosmeticsurgeries\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

livglamcosmeticsurgeries\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Nick in Charcoal HQ


Unable to change custom eq preset

Whenever I try to change the EQ sliders in a custom preset it snaps back to manual, and then when I click the custom preset they slide back to 0.

Hey everyone 👋
I will be open sourcing the new version of eqMac, therefore, I am closing this issue and repository as I will be transfering nodeful/eqMac2 repo to bitgapp/eqMac
Please bear with me for the next couple of days as I setup that new repo. The eqMac2 code will be living in the old-eqMac2 branch if anyone is interested in referencing it for whatever reason.
Please try out the new version and report bugs to the new repo.
Thanks for using eqMac.


Better Support for ESNext

At present, using ESNext features such as decorators, async/await, class instance fields, etc. results in the editor drawing red squiggles. In the very least, it would be nice if there was an easy way to stop VSCode from complaining about these features in a normal .js file.
Perhaps some thought needs to go into how VSCode will handle the evolution of ES in general. With developers using tools like Babel, and opting into stage-n features before they are finalized as a norm, I think this is going to crop up more and more. Not to mention that popular frameworks like Aurelia, React, Ember and Angular 2 are using these features more.
As for me, I have a hard time recommending VSCode to anyone that isn't doing TypeScript or sticking strictly to ES2015. It gets ugly pretty quick otherwise. I'm looking forward to seeing this improve. It's the only thing really holding me back. Thanks for all the great work so far!

@EisenbergEffect thanks for the feedback.

At present, using ESNext features such as decorators

Actually decorators are supported and you can enable them in the jsconfig.json pls see https://github.com/Microsoft/TypeScript/issues/6872#issuecomment-190288631

async/await, class instance fields, etc. results in the editor drawing red squiggles.

We will add support for disabling the built-in diagnostics, pls see the discussion in  #3804 and I'm closing this issue in favor of this one.

closing as a duplicate of #3804

@egamma Nice to see you here :)
Thanks for looking into these features. Regarding decorators, it's actually broken on my VSCode instance with the latest release.

@EisenbergEffect this works for me. Tested in 0.10.11:
Error without the experimentalDecorators property:

No error when experimentalDecorators is true:

Check this out:

One thing that is different from your example above is my folder structure. I have something like this:

I also see that you have both a jsconfig.json and a tsconfig.json. Is it a mixed .js and .ts project? If yes then you can set allowJS to true in the tsconfig.json and then you can delete the jsconfig.json.

If I remove the tsconfig, the problem goes away :)
It's not a mixed project per se. I was working on a sample app for an Aurelia workshop I'm going to be running. I included the tsconfig because I suspect some students will want to use TS instead of Babel. So, it was there out of a convenience for them. However, I should probably provide them with a complete TS setup separate from this one. Having both clearly causes the issue and probably doesn't make sense.
Thanks!

:+1: on separate .ts and .js setup.


Question: is returning a stream of monitors a good idea?

Hi @stephaneyfx
I am wondering if the current API, or at least the usage in the windows portion of the crate is a good idea.
Because of the streams API it means that it encourages users to add computations in between fetching each monitor, e.g. by inserting a print statement in the brightness_devices() function and then running the example on windows:
Getting monitor \\.\DISPLAY1\Monitor0
Brightness of device \\.\DISPLAY1\Monitor0 is 65%
Brightness of device \\.\DISPLAY1\Monitor0 is 65%
Getting monitor \\.\DISPLAY2\Monitor0
Brightness of device \\.\DISPLAY2\Monitor0 is 65%
Brightness of device \\.\DISPLAY2\Monitor0 is 65%

And if these computations in between take time it increases the risk of errors caused by attaching/detaching monitors -  e.g. the SysError::EnumerationMismatch or SysError::DeviceInfoMissing.
In my opinion it would be best if the monitors were all detected and returned together, such that the ordering would look like:
Getting monitor \\.\DISPLAY1\Monitor0
Getting monitor \\.\DISPLAY2\Monitor0
Brightness of device \\.\DISPLAY1\Monitor0 is 65%
Brightness of device \\.\DISPLAY1\Monitor0 is 65%
Brightness of device \\.\DISPLAY2\Monitor0 is 65%
Brightness of device \\.\DISPLAY2\Monitor0 is 65%

In theory the same issue could happen on Linux? i.e. The backlight directory is read, device 1 is returned then a user application does some computation (maybe updating a UI etc.), meanwhile device 2 is disconnected, when the stream reaches device 2 it returns an error because the path no longer exists.
I am wondering if it would be better and make a lot more sense if the signature was something like:
async fn brightness_devices() -> Vec<Result<Brightness, SysError>>
i.e. brightness_devices() should really be a complete snapshot of all the monitors at a point in time
Or if you don't want to change the whole API, can we at least change windows to collect() its results first before returning them?

Hi @jacob-pro,
I agree that it makes sense to collect all devices on Windows instead of generating them lazily. As you pointed out,

Sorry for mistakenly closing the issue. The button is too close to the comment field.
Hi @jacob-pro ,
I agree that this is an issue in the Windows implementation. As you pointed out, the device info map and list of monitors are cached before the iteration begins, and so given that we do not have control over the iteration and how long it lasts, it is more likely for a device to be connected or disconnected, causing the initial cache to become outdated.
As far as I can tell, the linux implementation is not affected. It walks through the contents of a directory lazily and there is nothing cached before the iteration starts (i.e. even the contents of the directory are not cached, unless read_dir does it). Of course a Brightness value yielded by the iterator could become stale if the corresponding device is disconnected.
Does that make sense?
I think the issue in the Windows implementation can be alleviated by doing:
futures::stream::iter(hmonitors.into_iter().flat_map(...).collect::<Vec<_>>())

Please let me know if you want to take care of it or if I should do it.
Thank you for reporting the issue.


Make "Scholarship Page" pictures align properly.

Is your feature request related to a problem? Please describe.
The picture is not properly aligned.

Would like to work on this issue.
Consider assigning this issue to me.
Describe the solution you'd like.
No response
Describe alternatives you've considered.
No response
Additional context.
No response
Show us the magic with screenshots
No response
Checklist

[X] I have checked the Existing Issues
[X] I have read the Contributing Guidelines
[X] I want to work on this issue. (optional)

sure go ahead
Make sure to join the discord server for further communication
Don't forget to star the repository
Complete the task in next 2 days and kindly mention your issue # in your pr like this:
Closes #IssueNumber
Note: the level of the issue may change based on the quality of the PR code

Thanks for assigning this issue to me. I have started working on this issue.

I have solved the issue. Please check it.

I have aligned the pictures.


Adding Services file WIP and updates to Agile Baseline

@nerdstein as per https://trello.com/c/peYfWgra/1-identify-subject-matter-experts-that-are-in-each-department-or-offering-to-pitch-in-on-writing-reviewing-e-g-fen-in-security - I've started this file listing the services we offer. Just a list at this point, could be elaborated later.

@stevecurtis looping you in here too, since we discussed the writing I am working on related to discovery and design services

@stevecurtis Added "Management" heading and bullet points. Could you approve and merge this PR if all else looks good?


Main Tab Bar doesn't respond to size changes during drag-drop until the drop has completed

Version and Platform (required):

Binary Ninja Version: Noted on 4.0.4096, present in 4.x builds.
OS: macOS
OS Version: 14
CPU Architecture: M1

Bug Description:
The tab bars (specifically, the width allowed for the tab scrolling region whenever a widget is floating after tabs) are not updated during drag-drop events, resulting in gaps where removed tabs were during drags, and placeholders pushing tabs out of view during drops.
Steps To Reproduce:
Create Two windows with two tabs each, drag tabs between the two, observe incorrect behavior.
Expected Behavior:
You can view the "Console" behavior after creating multiple tabs, on Stable in a similar situation when re-parenting across splits, for how the main tab bar should be behaving here.
Screenshots:
https://github.com/Vector35/binaryninja-api/assets/55725881/5972219f-37bb-4963-8ac2-4a4e7d04c06a

Resolved in dev builds >= 4.1.4965


Interface Connections allow duplicate connections to be created

Environment

Python version:  3.5.3
NetBox version:  2.4.6

Steps to Reproduce
1)Create 3 devices with network connections with at least one physical network port each (device A, Device B, Device C)
2)Create an interface connection from device A port 1 to device B port 1, with device A port 1 being the 'A side' of the connection, and device B port 1 being the 'B side' of the connection.
3)Create an interface connection from Device C port 1 to device A port 1, with Device C port 1 as the 'A side' of the connection, and device A port 1 as the 'B side' of the connection.
Expected Behavior
After device A has a port connection already on it, it should become unavailable/error out on attempting to add another connection to it.
Observed Behavior
The 'duplicate' connection successfully creates. In previous versions, any interface with a connection on it was 'greyed' out, however it now looks like any interface with/without a connection is able to be chosen, and will succeed in creating a new connection if it is on the other side than its current connection(aka now an interface allows 2 connections, as long as one connection it is on the A side, and the other it is on the B side)

There are two problems here.
First, #2487 introduced a bug where the is_connected attribute is no longer included in the list of interfaces returned by the API. This attribute is used to render connected interfaces as disabled in the form widget.
Second, the Interface model is missing validation for this inside its clean() method.


open_manipulator class not found

https://github.com/ROBOTIS-GIT/open_manipulator/blob/326171271aa1d42bfddbbe73d81c48435623deae/Arduino/OpenManipulator/OPM_for_Arduino/Chain/open_manipulator_chain/open_manipulator_chain_config.h#L95
The class 'open_manipulator' cannot be found. Can you share the file or where I can find the definition? Thanks.

Hi :) @hozhu
You need to copy src, include folders and library.properties file and paste it into Arduino library.
Then you can solve that problem.
Thanks
Darby


Strange "Canceled" message

VSCode Version: alpha
OS Version: OS X 10.11.4

If the debug adapter terminates unexpectedly I now see this strange "Canceled" message:

Accidentely closed this, there is still an issue that I am looking into

FYI, in the Powershell extension scenario, the script didn't terminate unexpectedly from the extension's point of view.  It successfully completed execution of the script.  But I think because VSCode did not send the disconnect message (or we didn't send something to cause VSCode to send that message) - VSCode thinks the debug host terminated unexpectedly.

If it helps here is a diff of our log file - left side is latest Insiders which does not generate error cancelled popup and right side is latest alpha which does generate the error:

Good news. With today's build of alpha 2016-04-09 I am no longer getting the error cancelled popup.  This might have been fixed yesterday as I didn't check yesterday but I know I checked on Thursday and it was still generating the error popup.

@rkeithhill great! Sorry for the slow responses, I was out on vacation for a couple of days.
Anyways, is there something that still needs to be done here?
(except us improving the documentation and figuring out the right order of events on startup)

@isidorn Well, with the 1.0.0 Alpha build I just installed, if I don't have breakpoints set, I get no output from my test script at all.  :-( The insiders build from 4/4 still works fine.
We have seen this "no output from debugging" problem before. We fixed it by swapping the order of the initialized event and initializeRequest response so that we send the initialized event after the initializeRequest response.  That doesn't seem to be working anymore in the 1.0.0 Alpha. Did anything change in the debug protocol message ordering for the upcoming 1.0.0 release?

@rkeithhill no, nothing should have changed in the ordering between insiders and alpha. If you want me to investigate please give me repro steps - is it enough to use latest powershell and just any ps script? Is this the behavior you are mentioning https://github.com/Microsoft/vscode/issues/4567

@isidorn - hmm, trying this on another machine and seeing different results.  I'm beginning to wonder if the PowerShell extension debugger has an issue with pause/continue.  Let's keep this closed for now and I'll get back to you if I still think it's a VSCode issue.


feat: Find & random with multiple platforms

Added the ability to use find() and random() with an array of platforms.
closes #8

LGTM

Current coverage is 100% (diff: 100%)

Merging #9 into master will not change coverage

@@           master    #9   diff @@
===================================
  Files           2     2
  Lines          25    30     +5
  Methods         0     0
  Messages        0     0
  Branches        0     0
===================================
+ Hits           25    30     +5
  Misses          0     0
  Partials        0     0

Powered by Codecov. Last update bbf3c40...b0e4da7


Fixing install.sh so that the BASIC_ONLY option does not always skip the haskell installation.

Problem was that the 'boolean' values used before were actually just an empty variable and a 'y' character. When the BASIC_ONLY parameter was passed into main, if --basic was not used then the variable was empty and so wasn't recognised as a parameter at all.
This meant that the 3rd parameter (the hoogle db one), got passed in as the second and as it was set to 'y' by default the Haskell binary installation was skipped.
I just replaced these pseudo booleans with actual booleans and it is a little bit simpler now as a result.  Then renamed the variables so that the logic made a little more sense.

Thanks for the PR, I'll check it out tonight.

Tried restarting the test on CI. It's not able to finish in under the time limit without its build cache. Maybe we should add --dry-run to the stack installs on CI. That way it will fail if it can't determine a build plan, but won't take forever trying to build things from scratch. Would you like to try adding that feature to this PR?

Yeah no problem, should be able to do it later on today or maybe tomorrow.

This pull request is a big improvement because the master branch terminates prematurely.
However when I try this branch on a fresh machine I do get an error. After the solver finds that LTS-7.24 works, then it attempts to build and says this:
Using resolver: lts-7.24
Solver requires that cabal be on your PATH
Try running 'stack install cabal-install'

*** Solving dependencies for helper binaries failed with error 1.
*** Aborting...

Hey, really sorry I took so long on this!  Things a bit busy at work right now.  I've added the dry run feature in and have tested it - it seems to be working well.  It still takes a fair while to execute but should be more than fast enough.  Have also updated .travis.yml.
Re your question on cabal-install...stack settling on lts-7.24 for me too but I don't seem to have that particular issue.  I don't even have cabal-install installed on the machine I'm using ('which cabal-install' returns 'cabal-install not found')...

Thank you so much! This fixes a bad problem, and the dry-run on CI helps a lot too.

Glad to have helped, my thanks to you for maintaining the greatest vim configuration on the planet.

Whoops, looks like I introduced this via #238.  Glad it's fixed.


fix unread box when >100 unread messages

I noticed this when re-syncing my node.

This PR removes the width and adds some padding to fix this.

Also still ok with smaller unread messages.

Small change but hopefully useful.

Good point ... but that would require me to fake the unreads as I cleared them all. Let me see what I can do.

@chafreaky seems ok on mine - could you show maybe or suggest change ?

It's not a big concern it's just my OCD trying to get things right, but here is an example below (Using IPhone X viewport on Chrome):

maybe this instead?

Hahahaha, love that!

Sorry to nit but I don't like "loads." Can we do 999+ or something more user friendly?

@maebeam thats done - changed to 999+ for left and bottom bars


Improvement to syntax/nasm.vim

This add highlighting for more instructions:

F16c instructions set
Some of AVX instructions set
PAUSE and QDQE instructions

I don't know if tests are required for these changes. I don't know where to add them if they are.

Please contact the maintainer, the info is in the file header.  Not sure if he has a github account.


feat: addded event attendees list

Description
Added event attendees list
Comments:

Lefthook pre-commit fails for filenames of type [id].ts

You need to refresh page to update attendees list

fixes #191
Screenshots
screen-capture (4).webm
If applicable, add screenshots about your changes
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist:

[x] Doesn't break the current code.
[x] Passes linters and test, also is building.
[x] Doesn't have spelling or grammatical problems.
[x] Doesn't have unnecessary comments or debugging code.
[x] The branch is updated with the last dev branch changes.

Just in case, the only one with Attendees is event 9d88c10e-fe17-4896-be3a-96f8dac69ebf ("Reunion de DID")
Clicking on it shows the attendee's list

Further improvements will be delivered in other issue


ci: merge staging to master

This is an automatic PR generated by the pipeline CI/CD. This will be automatically fast-forward merged if successful.

Pipeline Attempt on 914234214 for 3c9688a1a20f1c327ab0532c9706205e9f8a8ae2
https://gitlab.com/MatrixAI/open-source/js-async-init/-/pipelines/914234214

Pipeline Attempt on 914240073 for 3c9688a1a20f1c327ab0532c9706205e9f8a8ae2
https://gitlab.com/MatrixAI/open-source/js-async-init/-/pipelines/914240073

Pipeline Succeeded on 914234214 for 3c9688a1a20f1c327ab0532c9706205e9f8a8ae2
https://gitlab.com/MatrixAI/open-source/js-async-init/-/pipelines/914234214


When you click the "Join this Committee", a new page should appear with a form.

This page should have some text, what it means to join this technical committee (how much time, participation in meetings, and etc.) and at the bottom there should be a form pre-filled with information (from their profile)
First and Last Name
What I would like to contribute to the technical committee? (free-text)
(Check-box) I understand that this committee will require time and effort from myself.
(Check-box) I understand that the work products of these technical committees are to benefit the community and not for the organization that I work for.

Done

Appeal -> Request

"Appeal to become a member under review" -> "Member request under review"

Done


Update README.md - [Portuguese]

Portuguese

Oh, ok. I will do it. Sorry.
Em qua., 10 de ago. de 2022 13:15, Brandon Williams <
@.***> escreveu:

@.**** approved this pull request.
Awesome @SevioCorrea https://github.com/SevioCorrea, thanks so much for
taking the time to do this!
Would you mind alphabetizing the list of languages before we merge?
—
Reply to this email directly, view it on GitHub
https://github.com/pointfreeco/swift-composable-architecture/pull/1257#pullrequestreview-1068575834,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYQOSHAT5GQU5OSPJGOHEUDVYPISPANCNFSM56FDOGBA
.
You are receiving this because you were mentioned.Message ID:
<pointfreeco/swift-composable-architecture/pull/1257/review/1068575834@
github.com>

Going to close this since #1258 took care of it.
Thanks again!


Support for G6 instances

Hello,
It seems I cant use g6 instances with L4 GPUs in ROSA. Are these on the roadmap?
Cheers,
Andrew

Hey @mooperd !
We are currently testing these instance types and are hoping to get them in within the next 2-4 weeks
Best regards,

Hunter K

Let me know if there are other questions, or if we can close this issue 😄

Thanks @hunterkepley


Push not working

The app is wired up such that:
-> user lands on Sign-up page
-> call is made to action, picked up by the sign-up saga.
-> The push is never made.
I'm sure I've wired something up incorrectly, but have spent a day looking at it.
Your help is appreciated.
index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { ConnectedRouter } from 'connected-react-router'
import './index.css';
import App from './App';
import store, {history} from './app/store';
import { Provider } from 'react-redux';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
<Provider store={store}>
        <ConnectedRouter history={history}>
            <App />
        </ConnectedRouter>
    </Provider>
  document.getElementById('root')
);

app/store.js
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';
import { createBrowserHistory } from 'history'
import createSagaMiddleware from "redux-saga";
import createRootReducer from './reducers'
import rootSaga from './saga'

export const history = createBrowserHistory();

let sagaMiddleware = createSagaMiddleware();
const middleware = [...getDefaultMiddleware({ thunk: false }), sagaMiddleware];

export default configureStore({
  reducer: createRootReducer(history),
  middleware
});

sagaMiddleware.run(rootSaga);

App.js
import React from 'react';
import logo from './logo.svg';
import { Counter } from './features/counter/Counter';
import { SignUp } from './features/sign-up/Signup';
import './App.css';
import Amplify, { Auth } from 'aws-amplify';

import routes from './routes'

function App() {
  return (

        { routes }

  );
}

export default App;

routes.js
import React from 'react'
import { Route, Switch } from 'react-router-dom'
import {SignUp} from '../features/sign-up/Signup'
import {VerifySignUp} from '../features/verify-signup/VerifySignUp'

const routes = (
    <Switch>
      <Route exact path="/" component={SignUp} />
      <Route exact path="/verify-sign-up" component={VerifySignUp} />
    </Switch>
)

export default routes

sign-ip\saga.js

import {
  take,
  call,
  all,
  put,
  cancel,
  select,
  takeLatest,
} from 'redux-saga/effects';

import { push } from 'connected-react-router';
import store, {history} from '../../app/store';

import { Auth } from 'aws-amplify';

import {signUpFormUpdate, selectSignUpForm, signUpErrorUpdate} from './signupSlice';

export function* signUp() {
  try {
  const signUpForm = yield select(selectSignUpForm());

  const result = yield call([Auth, Auth.signUp], {
        username: signUpForm.email,
        password: signUpForm.password,
        attributes: {
          ...(signUpForm.preferred_name && {
            preferred_username: signUpForm.preferred_name,
          }),
          email: signUpForm.email,
        },
        validationData: [],
      });
  yield put(push('/verify-sign-up'));
  } catch (err) {
    console.log(err);
    yield put(signUpErrorUpdate(err));
  }
}

export function* signUpwatcher() {
  yield takeLatest(signUpFormUpdate().type, signUp)
}

Singup.js
import React, { useState, useEffect } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import styled from 'styled-components';

import { Link } from 'react-router-dom';

import {H1} from '../../components/H1';
import {Input} from '../../components/Input';
import {Spacer} from '../../components/Spacer';
import {SubmitButton} from '../../components/SubmitButton';
import {Checkbox} from '../../components/Checkbox';
import Colors from '../../themes/Colors';
import Metrics from '../../themes/Metrics';
import { fadeIn } from '../../themes/animations';

import {signUpFormUpdate} from './signupSlice';

import { push } from 'connected-react-router';
import {history} from '../../app/store';

const Form = styled.form`
`;

const FlexWrapper = styled.div`
  display: flex;
  flex-direction: column;
  min-height: 100vh;

  @media screen and (min-width: 720px) {
    flex-direction: row;
    height: 100vh;
  }
`;

const SubTextc = styled.ul`
  text-align: left;
  font-size: 14px;
  margin: 0;
  padding: 0;
  opacity: 0.8;
  list-style-type: none;
  margin: 0;
  padding: 0;

  li {
      display: inline-block;
      margin-right: 20px;
    }

  @media screen and (min-width: 720px) {
    font-size: 16px;
  }
`;
const H1c = styled(H1)`
  text-align: left;
  padding: 0;
  font-size: 24px;
  letter-spacing: -0.86px;
  margin-bottom: 16px;

  @media screen and (min-width: 640px) {
    font-size: 32px;
  }
`;

const ErrorBox = styled.div`
  max-width: 860px;
  padding: 12px;
  border-radius: 6px;
  background-color: white;
  box-shadow: 0px 2px 12px ${Colors.lightShadow};
  margin: 0 auto 12px auto;
  animation: ${fadeIn} 0.5s ease-in-out backwards;

  strong {
    color: ${Colors.red};
  }
`;

const FormWrapper = styled.div`
  padding: 30px 20px 0px 20px;
  width: 100%;

  @media screen and (min-width: 600px) {
    padding: 30px 60px;
    max-width: 800px;
  }
`;

const LeftPanel = styled.div`
  height: 100%;
  width: 100%;

  @media screen and (min-width: 720px) {
    width: 50%;
    max-width: 480px;
  }
`;

const RightPanel = styled.div`
  display: flex;
  flex-grow: 1;
  overflow: hidden;
  overflow-y: scroll;
  align-items: center;
`;

const LinkS = styled(Link)`
  color: ${Colors.blue};
`;

const Label = styled.label`
  display: flex;
  align-items: center;
  font-size: 14px;
  color: #909090;
  margin-bottom: 30px;

  a {
    color: ${Colors.red};
  }
`;

export const SignUp = () => {
  const dispatch = useDispatch();
  const signUpForm = useSelector(state => state.signup.signUpForm)
  const error = useSelector(state => state.signup.signUpError)
  let[checked, updateChecked] = useState(false)
  const[form, updateForm] = useState(null)

  const onChange = (type, evt) => {
    const newForm = Object.assign({}, form)
    newForm[type] = evt.target.value
    updateForm(newForm)
  }

  const handleCheckboxChange = () => {
    checked == false ? checked = true : checked = false
  }

  const onSubmit = (evt) => {
    evt.preventDefault();
    dispatch(signUpFormUpdate(form))
  }

  let PreferredName = <Input
       name="preferredName"
       placeholder="First name / Nickname"
       value={form ? form.preferredName : ''}
       onChange={(evt) => onChange('preferredName', evt)}
       error={
         error && error.preferred_name ? error.preferred_name : null
       }
       blue
   />

  let Email = <Input
      name="email"
      placeholder="Email"
      type="email"
      value={form ? form.email : ''}
      onChange={(evt) => onChange('email', evt)}
      error={error && error.email ? error.email : null}
      blue
  />

  let Password = <Input
      name="password"
      placeholder="Password"
      type="password"
      value={form ? form.password : ''}
      onChange={(evt) => onChange('password', evt)}
      error={error && error.password ? error.password : null}
        blue
      />

    let GoButton = <SubmitButton value="Create your free account" blue />

    let TandC =
        <Checkbox
          checked={checked}
          onChange={handleCheckboxChange}
        />
        I have read and accept the <Link to="/terms-and-conditions" target="_blank">terms and conditions</Link> and <Link to="/privacy-policy" target="_blank">privacy policy</Link>

  return (
    <FlexWrapper>
      <LeftPanel>
      </LeftPanel>
      <RightPanel>
        <FormWrapper>
          <H1c>Sign up to build your profile</H1c>
          <SubTextc>

✓ Build your bucketlist

✓ Select your airports

✓ Choose your plan

          </SubTextc>
          <Spacer height={Metrics.smallSpacer} />
          <Form onSubmit={onSubmit}>
            {PreferredName}
            {Email}
            {Password}
            {TandC}
            {GoButton}
            {error && error && (
              <ErrorBox>
                Error: {error.message || error}
              </ErrorBox>
             )}
             <Spacer height={Metrics.tinySpacer} />

                Already have an account? <LinkS to="/sign-in">Sign in</LinkS>

          </Form>
        </FormWrapper>
      </RightPanel>
    </FlexWrapper>
  );
}

@tonybrbtravel There is no point on adding these kind of issues here about push. It does not work, and never worked and probably never will. There are hundreds of complains about the same thing all the way back to 2017.
Is quite sad that all of these libraries that do amazing, awesome things, and cannot do the most basic functionality of the internet... redirecting from one url to another. It's quite impressive... or sad.

@tonybrbtravel There is no point on adding these kind of issues here about push. It does not work, and never worked and probably never will. There are hundreds of complains about the same thing all the way back to 2017.
Is quite sad that all of these libraries that do amazing, awesome things, and cannot do the most basic functionality of the internet... redirecting from one url to another. It's quite impressive... or sad.

eh…but why it doesnt work and how to solve it

Can i pick this up please?

@Narven @lightyisu This works. You just have to make sure that you do not create your middleware and pass in the history api before calling createRootReducer function. If you try to create your middleware with routerMiddleware(history) too early , history will be passed in as undefined. Follow the README.md as it explains the exact execution order.

@Narven @lightyisu This works. You just have to make sure that you do not create your middleware and pass in the history api before calling createRootReducer function. If you try to create your middleware with routerMiddleware(history) too early , history will be passed in as undefined. Follow the README.md as it explains the exact execution order.

Thank u so much for ur help,I will try it😘

After many hours, I have this working.
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';
import { createBrowserHistory } from 'history'
import createSagaMiddleware from "redux-saga";
import { routerMiddleware } from 'connected-react-router'
import { applyMiddleware, compose } from 'redux'

import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage' // defaults to localStorage for web

import createRootReducer from './reducers'
import rootSaga from './saga'

export const history = createBrowserHistory();

const persistConfig = {
  key: 'root',
  storage,
}

const rootReducer = createRootReducer(history);
const persistedReducer = persistReducer(persistConfig, rootReducer)

let sagaMiddleware = createSagaMiddleware();
const middleware = [...getDefaultMiddleware({ thunk: false }), sagaMiddleware, routerMiddleware(history)];

export default configureStore({
  reducer: persistedReducer,
  middleware
});

sagaMiddleware.run(rootSaga);

import React from 'react';
import ReactDOM from 'react-dom';
import { PersistGate } from 'redux-persist/integration/react'
import { persistStore, persistReducer } from 'redux-persist'
import { ConnectedRouter } from 'connected-react-router'
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";
import './index.css';
import App from './App';
import store, {history} from './app/store';
import { Provider } from 'react-redux';
import * as serviceWorker from './serviceWorker';

let persistor = persistStore(store)

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}>
        <PersistGate loading={null} persistor={persistor}>
            <ConnectedRouter history={history}>
                <App />
            </ConnectedRouter>
        </PersistGate>
    </Provider>
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

import React from 'react'
import { Route, Switch } from 'react-router-dom'
import {SignUp} from '../features/sign-up/Signup'
import {SocialSignUp} from '../features/social-sign-up/SocialSignUp'
import {Dashboard} from '../features/dashboard/Dashboard'
import TermsAndConditions from '../features/t-and-c/Terms.js'

const routes = (
    <Switch>
      <Route exact path="/" component={Dashboard} />
      <Route exact path="/email-signup" component={SignUp} />
      <Route exact path="/social-signup" component={SocialSignUp} />
      <Route exact path="/terms-and-conditions" component={TermsAndConditions} />
    </Switch>
)

export default routes

@Narven We've been using the lib in a production app for over 2 years, I can tell you that push definitely works!


Add tooltip to inform click on reco comment and description buttons

Need to add a "title" in html that inform the user that he can click on either buttons: recomm, description or comment

Already done


Improve \Nova\ORM

Got inspired? :laughing:

@tomvlk About what?

The solving structure.

@tomvlk I used many solving structures on my history... :smirk:
To be honest, I will implement this time, something similar with the style from Laravel ORM aka Fluent. Think that the relations are defined like:
public function comments()
{
    return $this->hasMany('\App\Modules\Comment\Models\Comment', 'user_id');
}

Yet, I do not want to complicate the code too much... :smirk:

@tomvlk Maybe I will implement also belongsToMany, aka ManyToMany, also that Relation into Laravel style, aka with some Pivot associated methods like attach(), dettach() sync().
Will be something like:
$pivot = $user->roles()->pivot();

$pivot->dettach($id);

$pivot->sync();

But is not yet decided, some of my colleagues wants it, others consider is a infantile complication. :smirk:

It's a complicated relation, maybe not for the simple orm in nova..

@tomvlk Yep! You have to transparently handle the Pivot too. :smirk:
And, like I said, the concept of Nova's ORM, as seen by us is as lightweight ORM, for small projects, ie. a small blog or simple backends.
It's a well defined niche. For other things, are plenty of options, including your own SweepORM.

Please make PizzaORM then :laughing:

@tomvlk :laughing:


A11y_Windows Terminal_Search or Find Operation_Screen Reader: After entering the text and performing search operation the screen reader is not reading whether that particular word is present or not in the terminal

#A11y_WindowsTerminal; #WindowsTerminal; #A11yMAS; #A11yTCS; #DesktopApp; #Win10; #C+E-H; #ScreenReader; #Narrator; #NVDA; #A11ySev2; #NonBenchMark; #MAS1.3.1
Check out Accessibility Insights! - Identify accessibility bugs before check-in and make bug fixing faster and easier
Environment Details:
Version: 0.10.781.0
Repro steps:

Turn on screen reader
Hit the URL ""aka.ms/terminal"" and install ""Windows terminal (Preview)"" application
Open ""Windows terminal (Preview)"" application
Use "Alt + Shift + F" to perform search/find operation
Verify whether the screen reader is reading that particular word which is searched is present in the terminal or not

Actual Result:
Narrator/NVDA is not reading whether the searched word is present in the terminal or not
Expected Result:
Narrator/NVDA should read whether the searched word is present in the terminal or not
User Impact:
Screen Reader users will face difficulty if the screen reader don't read whether the searched word is present or not in the terminal because they don't understand whether the searched word is present or not
MAS Reference:
https://microsoft.sharepoint.com/:w:/r/teams/msenable/_layouts/15/WopiFrame.aspx?sourcedoc={54f28d1f-a2d1-4dcd-84e1-5c9b87e8aba4}
Bug_Narrator not reading the searched word.pptx
Bug_NVDA not reading the searched word.pptx

@SpandanaPaladi are you still seeing this issue, or can we close it?

when the search term is not found, pressing enter on the find dialog announces nothing. It would be ideal if some message was announced to the effect that it was not found.
When it is found, NVDA reads the search term. I find that this behaviour is not that intuitive.
What does work well is that when escaping out of the find dialog, NVDA's review cursor is positioned at the starting position of the match for you to review around it.

@SpandanaPaladi are we compliant given the current state? Can we close this issue?
@Neurrone What you're requesting is a good idea, but I think with regards to tracking, it's slightly separate from what this issue is talking about. That said, I've opened issue #6319 to track it.

Looking at the issue title, I think it should remain open because nothing is read if no matches are found.
I agree that the UX for when text is found and how its conveyed should be in its own issue.

Oh, I see why you split it off in its own issue. I don't mind closing this or leaving this open while the proper UX is implemented in #6319.

Now NVDA is reading regarding the searched keyword but Narrator is not reading anything. Still able to reproduce the issue with Narrator. And both NVDA and Narrator will not read anything no searched keyword is not available.

Please provide the Sample app, so that we will file bug to Narrator team and will close the current bug as it is working fine with another free screen reader (NVDA)

Logged External bug https://microsoft.visualstudio.com/OS/_workitems/edit/27084958 to Narrator team.
Closing the current bug as it is working fine with NVDA


Fixed the https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/366

Add exception to pass through to fix the issue.
public <T> T getQueryableStoreType(String storeName, QueryableStoreType<T> storeType) {

		for (KafkaStreams kafkaStream : kafkaStreams) {
			try{
			T store = kafkaStream.store(storeName, storeType);
			if (store != null) {
				return store;
			}
			}
			catch (InvalidStateStoreException ignored) {
				//pass through
			}
		}
		return null;
	}

Resolves spring-cloud/spring-cloud-stream-binder-kafka#1362

@MadeInChina Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@MadeInChina Thank you for signing the Contributor License Agreement!

@MadeInChina Can you please add your name to the author tag of the class?

@MadeInChina as it appears to be your first contribution, I'd like to welcome you to our ever growing team of community contributors and thank you for your work!

Thank you. Will notice next time.


Compare showing different is not working

Issue Type: Bug
"Compare with" function is not working as before.
Both tab is not moving together and highlighting function is not exists anymore compared to previous updates.
VS Code version: Code 1.45.1 (5763d909d5f12fe19f215cbfdd29a91c0fa9208a, 2020-05-14T08:27:35.169Z)
OS version: Windows_NT x64 10.0.17134

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz (8 x 1800)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: enabledrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
11.85GB (5.10GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (15)

Extension
Author (truncated)
Version

aws-toolkit-vscode
ama
1.9.0

vscode-eslint
dba
2.1.5

php-debug
fel
1.13.0

php-intellisense
fel
2.3.14

php-pack
fel
1.0.2

auto-close-tag
for
0.5.7

vscode-pull-request-github
Git
0.16.0

gc-excelviewer
Gra
2.1.34

todo-tree
Gru
0.0.176

compareit
in4
0.0.2

git-tree-compare
let
1.9.1

mssql
ms-
1.9.0

pdf
tom
0.6.0

gitflow
vec
1.2.1

html-css-class-completion
Zig
1.19.0

/needsMoreInfo

i also have the same issue.
i'm trying to compare 2 html codes.
clicked "select for compare" 1 file then "compare with selected" on the other.
a tab is created where the two files are. i was expecting to see the difference between the 2 files, however there were no difference indication and can't be scrolled together.

yes, probably we are facing this same issues.

i also have the same issue.
i'm trying to compare 2 html codes.
clicked "select for compare" 1 file then "compare with selected" on the other.
a tab is created where the two files are. i was expecting to see the difference between the 2 files, however there were no difference indication and can't be scrolled together.

i also have the same issue.
i'm trying to compare 2 html codes.
clicked "select for compare" 1 file then "compare with selected" on the other.
a tab is created where the two files are. i was expecting to see the difference between the 2 files, however there were no difference indication and can't be scrolled together.

yes, probably we are facing this same issue.
Both tab is not scrolled together.zip

i also have the same issue.
i'm trying to compare 2 html codes.
clicked "select for compare" 1 file then "compare with selected" on the other.
a tab is created where the two files are. i was expecting to see the difference between the 2 files, however there were no difference indication and can't be scrolled together.

yes, probably we are facing this same issue.
Both tab are not scrolled together.zip

I have the same issue too, trying to compare some *.il file.


1.1.18 Error: Module not found: Error: Default condition should be last one

Hi hi,
After the capacitor blob writer package updated,
I got this error: "Error: Module not found: Error: Default condition should be last one"
I think the issue came from the package.json under exports :)
1.1.17 (working version)
 ".": {       "types": "./definitions.d.ts",       "default": "./blob_writer.js"     },
1.1.18 (broken version)
 ".": {       "types": "./definitions.d.ts",       "default": "./blob_writer.js",       "require": "./blob_writer.umd.js"     },

Thanks!
When the tag is visible, I will update it again and try it out  🥳


Upload dev builds to GH Actions as an artifact

Let's hope this works!

Thanks -- just gonna wait for you to split this into two actions files as discussed since the CI is just for tests

Changed my mind on this actually, we can just have this as part of the standard CI. Going to merge this and add "build" to the argument, no need for two actions.


Citrix Hypervisor 8.2 CU1 Error

<IP_ADDRESS> - - [08/Sep/2023 09:28:29] "GET /metrics HTTP/1.1" 200 -
Exception occurred during processing of request from ('<IP_ADDRESS>', 45696)
Traceback (most recent call last):
File "/usr/local/lib/python3.10/socketserver.py", line 316, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 347, in process_request
self.finish_request(request, client_address)
File "/usr/local/lib/python3.10/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/app/xen-exporter.py", line 222, in init
super().init(request, client_address, server)
File "/usr/local/lib/python3.10/socketserver.py", line 747, in init
self.handle()
File "/usr/local/lib/python3.10/http/server.py", line 433, in handle
self.handle_one_request()
File "/usr/local/lib/python3.10/http/server.py", line 421, in handle_one_request

method()
File "/app/xen-exporter.py", line 228, in do_GET
self.wfile.write(collect_metrics().encode("utf-8"))
File "/app/xen-exporter.py", line 140, in collect_metrics
res = urllib.request.urlopen(
File "/usr/local/lib/python3.10/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "/usr/local/lib/python3.10/urllib/request.py", line 525, in open
response = meth(req, response)
File "/usr/local/lib/python3.10/urllib/request.py", line 634, in http_response
response = self.parent.error(
File "/usr/local/lib/python3.10/urllib/request.py", line 563, in error
return self._call_chain(*args)
File "/usr/local/lib/python3.10/urllib/request.py", line 496, in _call_chain
result = func(*args)
File "/usr/local/lib/python3.10/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 500: Internal Error

Your server is returning http 500 you will need to look at its logs.
This is not tested against citrix.


updated to k6 v0.39.0

To support latest k6 version (v0.39.0), package go.k6.io/k6/stats has been renamed to go.k6.io/k6/metrics.
I also updated logrus and prometheus client dependencies to latest versions

Without this change, the extension does not work on latest k6 version

@phsym I did fork: https://github.com/KnechtionsCoding/xk6-prometheus and updated the package name so that it can compile and be used properly. It should be updated to work on the latest k6 version and uses your contribution.

@phsym Thank you for your contribution. Sorry for delay, I had no time for these project in the past period. Now I'm back.

@KnechtionsCoding I'm back :) I'm glad that you found this project important in work.


PlayState and FunkinLua

Describe your problem here.
source/PlayState.hx:67: characters 8-22 : Type not found : vlc.MP4Handler
source/FunkinLua.hx:342: lines 342-346 : Int should be Bool
source/FunkinLua.hx:342: lines 342-346 : ... For function argument 'f'
source/PlayState.hx:1496: characters 13-23 : Type not found : MP4Handler
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build?


[ARM] arch_prctl has no attribute 'regs'

Hi,
while creating the CFG on ARM I encountered this error: arch_prctl has no attribute 'regs' within the file https://github.com/angr/simuvex/blob/fd80907da3affaaa51e5b6fd4b509efdaed96e84/simuvex/procedures/syscalls/arch_prctl.py.
I think a possible fix would be something like .self.state.regs.gs = addr rather than self.regs.regs.gs = addr. I tried with this patch applied and it worked but I'd wait your fix...
Thanks

....wait actually. could you send me a testcase to reproduce that? It shouldn't be possible to run that syscall on ARM, so this probably indicates a deeper bug.

@rhelmot I'm not entirely sure which one it is but for sure static bin from https://github.com/andrew-d/static-binaries/tree/master/binaries/linux/arm. I'd start from arand nm. Tomorrow I'll try for you on them. Is that ok?

I just tried running nm, and ran into a nasty set of errors: AngrUnsupportedSyscallError('Syscall 983045 is not found for arch ARMEL') and a decoding failure on the part of VEX. This will require some pretty intensive debugging I'm not going to be able to get to for a while.


fix: deletion

:tada: This PR is included in version 0.11.0-next.41 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: