[android][Impeller] Janky scrolling / animation if images are on the scene

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
Impeller android is unperformant/unsmooth when images are on the scene (tested with vulcan backend, xiaomi mid-end device). We mostly notice slower rendering, stuttering scrolling or jerking effect when an animation occurs and images are on the scene.
Attaching a simple sample below.
Expected results
Smooth UI when scrolling list/grid view and faster rendering.
Actual results
Unsmooth UI when scrolling list/grid view and subpar rendering performance.
Code sample
Code sample
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(GridScrolling());
}

class GridScrolling extends StatelessWidget {

  GridScrolling({Key? key}) : super(key: key);

  final List<String> items = List<String>.generate(300, (i) => '$i');

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Janky scrolling issue'),
        ),
        body: Center(

          child: Padding(
            padding: EdgeInsets.fromLTRB(0, 0, 0, 0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children:  <Widget>[
                Expanded(
                  child: GridView.builder(
                    itemCount: 250,
                    gridDelegate:
                    const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
                    itemBuilder: (BuildContext context, int index) =>
                     Image.network('https://loremflickr.com/100/100/music?lock=$index'),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
A timeline is available in the logs section. Note: we render network images but we have the same issue with local images as well.
https://github.com/flutter/flutter/assets/53510751/742ceec5-ceb5-4882-92c5-b119e1461ad7

Logs
Logs
Timeline here
https://drive.google.com/file/d/1SsRim3NfpcUqR_SJjApD7HahgI0sojcY/view?usp=sharing

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 3.17.0-17.0.pre.25, on macOS 12.6.5 21G531 darwin-arm64, locale en-IT)
[!] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
✗ cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.2)
[✓] Connected device (3 available)
[✓] Network resources

Hi @delfme
I tried checking this with/without enabling Impeller but it's not clear to see the jank (the number of janks in tests looks equal and not noticeable). Could you share the recorded timeline (video) when not using Impeller?

I took for granted that it didnt happen with old Skia. Can you please correct the title?
We stopped to check things on android skia coz it is not a performance/smoothness reference for our app.

Do you mean the issue persists on skia as well? (on your side)
I observed this on an un-supported Vulkan device (Realme 6, Android 11), there are a few janks but mostly UI frames, and rasters sometimes. I wonder if this issue's somewhat similar to https://github.com/flutter/flutter/issues/120205?

I mean we are not compiling with skia since it is janky/unsmooth with basic UI (ie. images listview/gridview) and we cannot use it. We are still checking things on Impeller and report the issues there. I see the link you’ve found is by me 1yr ago, idk whether it is the same but I thought that one was closed :-/

I checked this on Pixel 7, Android 14 (supported Vulkan), and didn't notice a difference with and without Impeller. Labeling this as a separate issue for other's insights.

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.16.2, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.16.2 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 9e1c857886 (9 hours ago), 2023-11-30 11:51:18 -0600
    • Engine revision cf7a9d0800
    • Dart version 3.2.2
    • DevTools version 2.28.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.13.0

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

[!] Android Studio (version unknown)
    • Android Studio at /Applications/Android Studio Preview.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 determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.8+0-17.0.8b1000.22-10799086)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe Patch 3.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 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • 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
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 119.0.6045.199

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.18.0-5.0.pre.17, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.18.0-5.0.pre.17 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a0f4265575 (27 minutes ago), 2023-12-05 21:28:40 -0500
    • Engine revision fe96317750
    • Dart version 3.3.0 (build 3.3.0-194.0.dev)
    • DevTools version 2.30.0
    • 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 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.13.0

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

[!] Android Studio (version unknown)
    • Android Studio at /Applications/Android Studio Preview.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 determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.8+0-17.0.8b1000.22-10799086)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe Patch 3.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 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • 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
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 119.0.6045.199

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

I already reported this discovery time ago, but  mentioning it again here coz it seems a good trail to follow 🤔
If I keep my finger onto the screen while scrolling, then I cannot see any janks/stuttering.
Video below.
Smooth: my finger is always touching the display
https://github.com/flutter/flutter/assets/53510751/8305028e-79ac-4ace-b919-aa7ca6204718
Unsmooth, this is a normal scrolling
https://github.com/flutter/flutter/assets/53510751/b788b627-e33e-4422-b400-79ab7b624826
Issue occurs also with the sample code pasted above.
CC: @jonahwilliams is this a rendering issue impacting the performance of the scrolling animation or maybe the opposite?

I am removing the Impeller label as this does not seem Impeller specific. But otherwise a valid performance problem.

I see that https://github.com/flutter/flutter/issues/135443 is marked as P3. As you can see from above video, we cannot ship app on android until this bug is fixed. Hope you guys can find a way to change priority.

@delfme I can check if it is resolved by #43711, can you link the source code/repo which has this problem? And I'll check metrics with/without fix. However for 43711 I only applied my fix for Skia/OpenGL.

Thx @moffatman
I shared a simple sample code inside this issue, pasting it here below. As for Skia vs Impeller, whichever one allows smooth UI is welcome. We stopped to test on Skia coz we were hit by heavy janks/jerking on optimized/lightweight code, and were waiting for Impeller to resolve that. But we discovered lately that skia performance is still a reference for Impeller.
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(GridScrolling());
}

class GridScrolling extends StatelessWidget {

  GridScrolling({Key? key}) : super(key: key);

  final List<String> items = List<String>.generate(300, (i) => '$i');

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Janky scrolling issue'),
        ),
        body: Center(

          child: Padding(
            padding: EdgeInsets.fromLTRB(0, 0, 0, 0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children:  <Widget>[
                Expanded(
                  child: GridView.builder(
                    itemCount: 250,
                    gridDelegate:
                    const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
                    itemBuilder: (BuildContext context, int index) =>
                     Image.network('https://loremflickr.com/100/100/music?lock=$index'),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Also, do you think https://github.com/flutter/engine/pull/43711 could be ported on iOS? On iOS the situation is smooth, but from time to time we are hit by that one-drop-frame which seems cannot be avoided. Although the occurrence is sporadic, it impairs the app quality perception.

The demo doesn't work I just get a white screen
Are you sure you are running in profile/release mode....
I looked into a similar solution for iOS but ran into other ongoing investigations/bugs at the same time with iOS display pipeline. Maybe will revisit it at one point. But in general, I find the performance of flutter on both iOS and Android is really good, and every time I try to blame the framework, it is my own code doing something inefficient. The fix in https://github.com/flutter/engine/pull/43711 is really specific. If it's not possible for me to see the issue locally, you could do a screen recording with the flutter performance overlay enabled, it will help me check if you're having the same problem I'm trying to fix. (Set showPerformanceOverlay: true on the MaterialApp).

That's strange, let me paste the code again below, I run it in profile mode. You should see this screen:

I also shared the timeline, this is the link: https://drive.google.com/file/d/1SsRim3NfpcUqR_SJjApD7HahgI0sojcY/view?usp=sharing
Lmk if this time works. Thx!
Code:
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(GridScrolling());
}

class GridScrolling extends StatelessWidget {

  GridScrolling({Key? key}) : super(key: key);

  final List<String> items = List<String>.generate(300, (i) => '$i');

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Janky scrolling issue'),
        ),
        body: Center(

          child: Padding(
            padding: EdgeInsets.fromLTRB(0, 0, 0, 0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children:  <Widget>[
                Expanded(
                  child: GridView.builder(
                    itemCount: 250,
                    gridDelegate:
                    const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
                    itemBuilder: (BuildContext context, int index) =>
                     Image.network('https://loremflickr.com/100/100/music?lock=$index'),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Can you show a screen recording with showPerformanceOverlay: true, without connected to devtools (it adds some jank)

Issue shouldnt be reproducible in release mode if it were a devtools jank. It might be related to https://github.com/flutter/flutter/issues/135443 as mentioned above. Anyway, Im out travelling now but will do it. Will also check sample code from this other similar issue, it is reported for iOS but it is best to check it on as many android phones as possible https://github.com/flutter/flutter/issues/140288
You say you are experiencing good performance on android, if your app is available on googleplay I’d like to test it on my android device.


Error on Sierra

Hello,
I'm getting an error when I run this on macOS Sierra. When your script runs, I do pass in the correct password to make it run.
chmod: Unable to change file mode on /System/Library/QuickTime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/QuickTimeUSBVDCDigitizer: Operation not permitted
chmod: Unable to change file mode on /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC: Operation not permitted

Any ideas?

Within the last update, some part of mac OS can be changed only under special conditions or disabling "System Integrity Protection"
please read https://forums.developer.apple.com/thread/4138


RFC: attached text type for components and BOM level metadata

This could allow scenarios like embedding an SPDX SBOM in a CycloneDX SBOM. Especially for situations in which a CycloneDX SBOM has been generated from an SPDX SBOM.
There are also some differences in the SPDX and CycloneDX approaches. CycloneDX takes a facts based approach in the core spec, but SPDX supports some analysis scenarios. i.e. concluded license. This might enable adopters to take advantage of both formats?
It would also allow the inclusion of component supplier level SBOMs to be embedded within the assembled software SBOM.
And scenarios where an auditor is authoring an SBOM, and attaching the supplier provided SBOM for comparison.

After IWG discussions I think the last use case is the most likely. As in, as a software supply chain analysis vendor, here's what we think the SBOM actually is, but we've attached the vendor supplied SBOM for cross referencing.

Now tracked in #49

This was ultimately voted against #50


'cordova.plugins.backgroundMode.onactivate is not a function' in Ionic 3 app

I did a fresh install of this plugin using the Ionic V3 instructions (https://ionicframework.com/docs/v3/native/background-mode/).  When I try to run the app in the simulator or device I get TypeError: cordova.plugins.backgroundMode.onactivate is not a function. (In 'cordova.plugins.backgroundMode.onactivate()', 'cordova.plugins.backgroundMode.onactivate' is undefined when I try to put the app in the background.  It sees the subscription to the enable correctly.  Any suggestions as to what is going wrong? I've the necessary import to app.module.ts.
Here is the code that is in the app.component.ts
import { BackgroundMode } from '@ionic-native/background-mode';

....

  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, backgroundMode: BackgroundMode) {
    platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      statusBar.styleDefault();
      splashScreen.hide();
      backgroundMode.enable();
      backgroundMode.on('enable').subscribe(() => {
        console.log('enabled')
      })
      backgroundMode.on('activate').subscribe(() => {
        console.log('activated')
      })
    });
  }

See pull request - https://github.com/katzer/cordova-plugin-background-mode/pull/423

@i91 I'm seeing this issue on iOS.

Fixed in pull request https://github.com/katzer/cordova-plugin-background-mode/pull/433

Same problem on Android

I'm having the same problem on Android.

You can solve this (until contributors merge @daviddickson PR) by running:
ionic cordova plugin add https://github.com/fyayc-chrisat/cordova-plugin-background-mode --no-fetch
ionic cordova platform rm android
ionic cordova platform add android

If you're not using Ionic just remove 'ionic' from the commands. Keep in mind that It's a forked version.
Hope It helps :D

I just tried @daviddickson's fork now, but I do my initial dev using an Android device, so after I had the same error I took a closer look at that fork and noticed it only includes changes for iOS.
since @fyayc-chrisat's fork covers the Android side, but was forked from an earlier point (6 commits behind the source repo), I simply applied the Android String.format() fix to the relevant file in David's fork, but the same error kept coming up.
looking through the commits in this repo since the latest 0.7.2 tag, it seems the onactivate, ondeactivate and (something I think we all missed) onfailure methods have actually been removed.

@katzer I do see that they were already marked as "deprecated", but could you perhaps shed some light on this?
from my testing, this error doesn't seem to break any functionality in either Android or iOS, but the @ionic-native/background-mode wrapper still expects them to be there, so as it is right now, we can't hook in any custom functionality when the app moves to the background or foreground.

actually, I think we might be going down the wrong path here altogether...
PR 423 is trying to print out a string as cordova.plugins.backgroundMode.on({EVENT}, {PARAMS}), whereas the Ionic Native wrapper is expecting the plugin to have methods like on{EVENT}, such as onactivateandondeactivate`.
so now I'm even more confused by which way this whole thing is going. :/

Is there any plan to merge @daviddickson pull request? I see there is a fix through his fork, but is this something that's being tested to merge with the master @katzer ?

Any progress?

@fax1ty I'm testing with beta users now and until now it's working. Added to the disable batery optimizations.
You can try this on that fork:
https://github.com/lkonzen-garupa/cordova-plugin-background-mode

Thanks @lkonzen-garupa . I'm trying your fork right now... I have backgroundMode.setDefaults({silent:false})  set and see that no notification comes up anymore?
This is great if for me because I hated having that notification required to be there. However, before using your fork, the background audio of my app would always cut out after moving to background.
How did you fix this so the notification is not needed anymore?

@rastographics about audio I don't change anithing. I just use the plugin https://github.com/floatinghotpot/cordova-plugin-nativeaudio.
All is working and playing fine, even when in background.
On device is ready:
window.plugins.NativeAudio.preloadSimple(
    'beep',
    'audio/bell.mp3'
);

When I need to play that audio:
window.plugins.NativeAudio.play('beep');

I'm using <audio> tag inside the apps html template to play an internet stream...it works for about 10-12 minutes but then stops. (Must be when Android system puts it in background).
When using katzer's plugin, there is a constant notification created that keeps the app from dying.
I can let the app play the internet stream in background for hours and it does not stop.
But the problem is the errors mentioned in this thread that come up when building.
With your fork, the errors go away, but so does the constant notification, so the app dies after being in background for 10-12 minutes and the audio stops.
I know your plugin does not change anything with the audio...but something is done different that does not create that notification which keeps the app from being killed after long time. Does that make sense?

I understand.
Maybe that commit is creating this problem:
https://github.com/lkonzen-garupa/cordova-plugin-background-mode/commit/b2a9cd94ae61c3474850d22fb6c5a41d15295f96
But, in my case, it still showing the notification for a long time.
What your test environment? Maybe something related with it and I not get it until now with my users.

@lkonzen-garupa have you solved this issue? I have the same issue...

@n1705771 it's all working fine.

@lkonzen-garupa My test environment is android 8 running on a moto g6.
Something that happens with your fork that is different is when app runs for first time, android prompts me for permission to let app run in background. I thought that is how your fork is able to keep going in background without notification.
Is there any code to call besides backgroundMode.setDefaults({silent:false}) to make sure that the notification is instantiated?

@rastographics In m case, the prompt just occur if I execute that following comand:
window.cordova.plugins.backgroundMode.disableBatteryOptimizations();

And I use just when needed to enable the background.
window.cordova.plugins.backgroundMode.on('enable', function() {
   window.cordova.plugins.backgroundMode.disableBatteryOptimizations();
});

This is great if for me because I hated having that notification required to be there. However, before using your fork, the background audio of my app would always cut out after moving to background, unless I made the notification appear with silent:false.
How did you fix this so the notification is not needed anymore?

@rastographics I have my app running like this
const options = {
      title: 'your title', text: your text',
      hidden: false, silent: true
    };

cordova.plugins.backgroundMode.setDefaults(options);

So maybe
const options = {
      hidden: true, silent: false
    };

would do?

Is there any code to call besides backgroundMode.setDefaults({silent:false}) to make sure that the notification is instantiated?

Hi @rastographics
Maybe:
const options = {
      title: 'your title', text: 'your text',
      hidden: true, silent: false
    };
    this.plataform.ready().then(() => {
      cordova.plugins.backgroundMode.setDefaults(options);

How did you solved 'cordova.plugins.backgroundMode.onactivate is not a function' ?

I can't get this to work on device with iOS 12.
I got rid of the error TypeError: cordova.plugins.backgroundMode.onactivate is not a function. (In 'cordova.plugins.backgroundMode.onactivate()' doing what @daviddickson suggested  on #433 but the plugin isn't working either.. I mean, it just does nothing when in background.
I also tried what @zhangxiongwang suggested on #450 but I'm still unsuccessful.
Someone experiencing the same issue?
Please help!
thanks!

I can't get this to work on device with iOS 12.
I got rid of the error TypeError: cordova.plugins.backgroundMode.onactivate is not a function. (In 'cordova.plugins.backgroundMode.onactivate()' doing what @daviddickson suggested on #433 but the plugin isn't working either.. I mean, it just does nothing when in background.
I also tried what @zhangxiongwang suggested on #450 but I'm still unsuccessful.
Someone experiencing the same issue?
Please help!
thanks!

Exact same problem here, it just doesn't work on IOS. Would love a solution.

thanks
https://github.com/lkonzen-garupa/cordova-plugin-background-mode
has fixed the error

Thats the problem: using a forked version is always the solution

I can't get this to work on device with iOS 12.
I got rid of the error TypeError: cordova.plugins.backgroundMode.onactivate is not a function. (In 'cordova.plugins.backgroundMode.onactivate()' doing what @daviddickson suggested on #433 but the plugin isn't working either.. I mean, it just does nothing when in background.
I also tried what @zhangxiongwang suggested on #450 but I'm still unsuccessful.
Someone experiencing the same issue?
Please help!
thanks!

So I took all those changes and the ones posted on https://github.com/lkonzen-garupa/cordova-plugin-background-mode and made a new fork https://github.com/platanus/cordova-plugin-background-mode.
The weird thing is that it works on ios only when cordova-plugin-background-geolocation is activated.
any guess?
Thanks

Nevermind.. I was missing the "Audio" capabilitie in background modes.. Now it works perfectly!

https://stackoverflow.com/a/54398403/6617276


Final improvements

The contained commits improve documentation, wording around rendered inputs and outputs when rendering Markdown in the newly added document format, and improves code readability.

Guess we have a solution. What do you think?

Thanks @metmajer it looks great. I'm gonna merge it with "merge commit" to have this history in the original PR. You can squash them over there.


Upgrade to golang 1.18 and bump dependencies

Also fixes #47

:tada: This PR is included in version 3.4.0-beta.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


ESP32 and FreeRTOS migration

TODO use ESP32 and FreeRTOS. Many advantages over arduino, including increased storage, ram, and processing speed. FreeRTOS allows project to be more modular and allows for multithreading and use of both processing cores on ESP32 modules, with the added benefit that it is supported natively by the ESP32, which means it is easy to integrate.

https://www.youtube.com/playlist?list=PLXyB2ILBXW5FLc7j2hLcX6sAGbmH0JxX8

Migrated to FreeRTOS. This should be the basis of further development.


Parse XML from an InputStream, not a StringReader

Instead of reading all the bytes, and then converting that to a String, and then parsing a StringReader to SAX, just pass it an InputStream.  This still builds an Elem representation of the entire body, but spares a couple more complete, ephemeral materializations along the way.

/cc @vzpaul

This is bizarre.  The Scala 2.10 builds fail consistently on the scalacheck test on Travis, but it runs locally.

Scala 2.10:
scala> XML.loadString("<elem><?foo?>bar<?quux?></elem>")
res7: scala.xml.Elem = <elem><?foo?><?quux?>bar</elem>

Scala 2.11:
scala> XML.loadString("<elem><?foo?>bar<?quux?></elem>")
res1: scala.xml.Elem = <elem><?foo?>bar<?quux?></elem>

The hero of this story is https://github.com/scala/scala-xml/pull/34.  Our hero never saved Scala 2.10.

Dang.
On Sun, Oct 16, 2016 at 5:10 PM Ross A. Baker<EMAIL_ADDRESS>wrote:

The hero of this story is scala/scala-xml#34
https://github.com/scala/scala-xml/pull/34. Our hero never saved Scala
2.10.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/http4s/http4s/pull/735#issuecomment-254075159, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAg3y9RLP5ft63j3ez-8fkyQsJj24xzXks5q0pKygaJpZM4KXlvy
.

Going to merge this tomorrow morning unless there are objections.

That's true on the blocking.  We might avoid that tradeoff with aalto-xml.

If we are going to introduce blocking, I think we need to put a big fat "make sure you're using a good sized thread pool" warning, least people find themselves with deadlocked threads.

Yeah, you reminded me why I picked the existing horrible solution instead of the new horrible solution.  I wonder how hard it would be to bend that aalto-xml parser into scala-xml.

@vzpaul was using xs4s.  That, plus the linked ticket, may be the way to do this in a way more befitting http4s' goals.

This is a bad idea.  Going to poke at aalto.


Crash when comparing item reps

Comparing an item rep with anything else is always going to crash, because the #== method doesn’t check whether the compared thing is also an item rep:
def ==(other)
  item.identifier == other.item.identifier && name == other.name
end

Fixed in #738.


Adding words for improve the translation

🤔 This is a

[ ] Feature
[ ] Bug
[ ] Documentation Update
[x] Translation

✍ Description

Added spanish translation to Readme file.

Added to documentation

[ ] readme file
[x] No documentation needed

🐱💻 Use a meme/gif to describe how you feel for contributing (optional)

I can't find the conflicts, can you help me?

Hey, let me take a look at it.

Thank you, tell me anything you find.

@muchirijane do yo have anything about this PR? For solve. I'm waiting 😃

I have checked it out, You are the one who can solve it from your repo.
Step 1
git checkout -b MigueMartelo-feature/spanish-translation developer
git pull https://github.com/MigueMartelo/learning-code-through-github-repos.git feature/spanish-translation
Step 2
git checkout developer
git merge --no-ff MigueMartelo-feature/spanish-translation
git push origin developer
I hope that helps. Let me know if it doesn't.

I don´t know what happen, I made that you tell me and is the same conflict, help me please.


HAP-NodeJS + Location possible?

I was wondering if it is possible to use the iOS devices' location to create triggers. Or does it require to be connected to the iCloud service using an Apple TV?

Triggers are standard functionality in HomeKit, and they include geofences as an event type.

Geofencing must be supported by the used HomeKit app on your iOS device. This is not a feature of HAP-NodeJS

Could you suggest any apps that support this feature.

eve does for example

HMCatalog works @shawnlobo96

Eve, Hesperus, Home...

Lutron, Ecobee...

And yes, you do also need an AppleTv3 or better, OR an iPad (with Bluetooth turned on) on the same LAN as your homebridge, signed in to the same iCloud account.


Support 'group by' functionality

I have a CSV file which contains place-names and their associated counties (i.e. UK-based). I'd like to be able to group the place-names by county so that I can join them to a GeoJSON dataset for rendering.
I don't see an obvious way to do this with the current CLI tools.
Here's what I have managed to far ...
With csv2json I've created an ndjson file with JSON objects containing name and county properties.
Using reduce, I've managed to convert this into a single JSON object with place-name arrays keyed by counties:
ndjson-reduce '(p[d.county] = p[d.county] || []).push(d.name), p' '{}' \
    < uk_towns_and_counties.ndjson

However, I cannot see a way to convert this back to ndjson. Just for reference, the target format i am looking for is as follows:
{ county: 'Durham', places: ['Woodford', 'Fordham', ...] }
{ county: 'Lancaster', places: ['Bury', 'Burwell', ...] }
...

If this cannot easily be achieved with the current tools, is it worth adding an ndjson-groupby?

OK, after a bit of head-scratching I found a way:
csv2json -n < uk_towns_and_counties.csv \
  | ndjson-reduce '(p[d.county] = p[d.county] || []).push(d.name), p' '{}' \
  | ndjson-split 'Object.keys(d).map(key => ({county: key, places: d[key]}))' \
    > counties.ndjson

i.e. use reduce to create an object keyed by county, then split based on this object's keys.


Getting "panic: runtime error: invalid memory address or nil pointer dereference" on 0.7.0

This started failing for me on 0.7.0.  Previous versions of vacuum did not give the same error.
Steps to recreate:

wget https://raw.githubusercontent.com/pulibrary/allsearch_api/main/swagger/v1/swagger.yaml
npm i -g<EMAIL_ADDRESS>npx vacuum lint swagger.yaml <-- gives an error on 0.7.0
npm uninstall -g<EMAIL_ADDRESS>&& npm i -g<EMAIL_ADDRESS>npx vacuum lint swagger.yaml <-- gives no error on 0.6.3

Here is the full error message:
 INFO  Linting file 'swagger.yaml' against 43 rules: https://quobix.com/vacuum/rulesets/recommended

panic: panic: runtime error: invalid memory address or nil pointer dereference
stacktrace:
goroutine 1687 [running]:
runtime/debug.Stack()
	/opt/hostedtoolcache/go/1.21.5/x64/src/runtime/debug/stack.go:24 +0x64
github.com/sourcegraph/conc/panics.NewRecovered(0x0?, {0x103147b00, 0x103ebc420})
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/panics/panics.go:59 +0x70
github.com/sourcegraph/conc/panics.(*Catcher).tryRecover(0x140006c6328)
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/panics/panics.go:28 +0x58
panic({0x103147b00?, 0x103ebc420?})
	/opt/hostedtoolcache/go/1.21.5/x64/src/runtime/panic.go:914 +0x218
github.com/daveshanley/vacuum/functions/openapi.ExamplesSchema.RunRule.func8()
	/home/runner/work/vacuum/vacuum/functions/openapi/examples_schema.go:200 +0x64
github.com/sourcegraph/conc/panics.(*Catcher).Try(0x0?, 0x0?)
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/panics/panics.go:23 +0x50
github.com/sourcegraph/conc.(*WaitGroup).Go.func1()
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/waitgroup.go:32 +0x58
created by github.com/sourcegraph/conc.(*WaitGroup).Go in goroutine 1555
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/waitgroup.go:30 +0x7c

goroutine 1555 [running]:
github.com/sourcegraph/conc/panics.(*Catcher).Repanic(...)
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/panics/panics.go:38
github.com/sourcegraph/conc.(*WaitGroup).Wait(0x140006c6318)
	/home/runner/go/pkg/mod/github.com/sourcegraph/conc@v0.3.0/waitgroup.go:42 +0x5c
github.com/daveshanley/vacuum/functions/openapi.ExamplesSchema.RunRule({}, {0x30?, 0x1031c28c0?, 0x64000140004caa98?}, {0x14000827aa0, 0x14000091c80, {0x1030c9d00, 0x1033177e0}, {0x0, 0x0}, ...})
	/home/runner/work/vacuum/vacuum/functions/openapi/examples_schema.go:206 +0x414
github.com/daveshanley/vacuum/motor.buildResults({0x14000091c80, 0x1400042f900, 0x1400042f900, {0x103322f48, 0x1400049a000}, 0x14000127a28, 0x14000676198, 0x140002c0500, 0x1400015ab00, 0x0, ...}, ...)
	/home/runner/work/vacuum/vacuum/motor/rule_applicator.go:770 +0x588
github.com/daveshanley/vacuum/motor.runRule({0x14000091c80, 0x1400042f900, 0x1400042f900, {0x103322f48, 0x1400049a000}, 0x14000127a28, 0x14000676198, 0x140002c0500, 0x1400015ab00, 0x0, ...}, ...)
	/home/runner/work/vacuum/vacuum/motor/rule_applicator.go:692 +0x5dc
created by github.com/daveshanley/vacuum/motor.ApplyRulesToRuleSet.func7 in goroutine 1516
	/home/runner/work/vacuum/vacuum/motor/rule_applicator.go:553 +0x21c

Thanks for looking into this!  Let me know if there's anything I can do to help.

Hi, 0.7.0 has significant changes in it, for multiple reasons, this is likely an uncaught regression.
I can help diagnose this, but in order to do so, I will need the specification you're using, so I can trace the problem.
If you don't want to share it in public, please email it to me :)

This has been resolved in v0.7.1

Works like a charm, thanks @daveshanley !


Do not fall back to ignoring empty directories for skip when empty

Removes the deprecation introduced in #18783 for Gradle 8.0.

This is the PR for asciidoctor: https://github.com/asciidoctor/asciidoctor-gradle-plugin/pull/646

Replaced by https://github.com/gradle/gradle/pull/21625.


aiken uplc encode error

What Git revision are you using?
aiken v1.0.14-alpha 690e412
What operating system are you using, and which version?

[ ] Linux / Ubuntu
[ ] Linux / Other
[x] macOS
[ ] Windows

Describe what the problem is?
Related to this closed issue - https://github.com/aiken-lang/aiken/issues/680
When I run:
aiken uplc encode --to named-debruijn my_file.uplc

I get the following error:
Error:   × error at 9040:398: expected found 'Data' instead of expected type

Where the 9040 line of my_file.uplc looks the following:
((List []), (List []))

and this is with some context around:
(delay
   (con
      (pair data data)
      ((List []), (List []))
   )
)

What should be the expected behavior?
There shouldn't be any error.

I think I know what the problem is


API: Create an API to handle Magma words, equations, and implications as syntactic objects

See the discussion in https://leanprover.zulipchat.com/#narrow/stream/458659-Equational/topic/Syntax .  Among other things, this would allow one to prove "metatheorems" about equations, for instance that the equation "x = f(y,z,w)" is equivalent to "x=y" for any word f.

claim

propose PR #96

See also https://leanprover.zulipchat.com/#narrow/stream/458659-Equational/topic/Equations.20vs.20Laws for further discussion

propose PR #122
See my proof of Equation332_implies_Equation43 for a proof-of-concept example of a duality argument. This is clearly still very awkward to write out, but hopefully with some more convenience functions like the ones in FiniteSatUtils.lean, this can get more pleasant to use.
I also have a question. For some reason, my proof doesn't type check with (G: Type*), only with (G: Type). I think this has something to do with how satisfaction is defined, or how my duality functions are defined, but I'm not clear on what the actual difference between Type and Type* is. Something about different type universes? Any idea how to fix this? And is there a reason we've chosen to write all of the implications in Subgraph.lean using G: Type* rather than G: Type?

I opened a separate request #186 for this.  We've stated our implications to allow for the magma G to be "large" - not a member of the Level 0 universe, but potentially something from the Level 1 universe (e.g., a magma whose elements are arbitrary types in Level 0, and whose binary operation is, say, Cartesian product X → Y → X × Y).  But it is unlikely that we would actually encounter higher type objects in our arguments, so we could perhaps just reduce to the Type 0 universe.  On the other hand, the completeness theorem that is already proven should actually give us a way to pass back and forth between Level 0 and arbitrary level universes, so that may be the best long-term way to resolve the problem in case for some weird reason we do actually need to work with higher type objects at some point (and I think the Mathlib philosophy is to allow arbitrary level whenever possible).

can we close this task closed given that we now have FreeMagma and MagmaLaw along with typical model theoretic properties lke soundness and completeness?


Add P2A certified-connector/Converter

When submitting a connector, please make sure that you follow the requirements below, otherwise your PR might be rejected. We want to make you have a well-built connector, a smooth certification experience, and your users are happy :)
If this is your first time submitting to GitHub and you need some help, please sign up for this session.
Please note that we are experiencing a significant delay due to a high volume of connector submissions. It may take 1-2 weeks for us to provide comments for your connector.

[x] I attest that the connector works and I verified by deploying and testing all the operations.
[x] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[x] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[x] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[x] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

If you are an Independent Publisher, you must also attest to the following to ensure a smooth publishing process:

[ ] I have named this PR after the pattern of "Connector Name (Independent Publisher)" ex: HubSpot Marketing (Independent Publisher)
[ ] Within this PR markdown file, I have pasted screenshots that show: 3 unique operations (actions/triggers) working within a Flow. This can be in one flow or part of multiple flows. For each one of those flows, I have pasted in screenshots of the Flow succeeding.
[ ] Within this PR markdown file, I have pasted in a screenshot from the Test operations section within the Custom Connector UI.
[ ] If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.

Hi @stsiek, I hope you are doing well. I am following up with you to check on how updating your pull request is going.
Please do not hesitate to reach out to me if you have any questions.
Thank you very much

I have changed the open issues

@stsiek This is the default iconBrandColor for all the independent publisher connectors, Please make sure it is the background color of your connector icon.


Connect-AdSyncDatabase

this cmdlet is all wrong and doesnt exist in the newest version of azure ad connect
Connect-ADSyncToolsSqlDatabase

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1b5773bc-bc7f-1bf1-ceae-6022b376f4c9
Version Independent ID: f6c58d9b-e711-1720-5d13-03c553f6355a
Content: Azure AD Connect: Troubleshoot SQL connectivity issues
Content Source: articles/active-directory/hybrid/tshoot-connect-tshoot-sql-connectivity.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@chadmcox Thank you for pointing that out . We will investigate and update the thread.

@billmath Could you please review and update the document as required ?

@chadmcox
Thank you for the feedback.  I have created a work item to investigate this further.  I am going to close this issue now and will update it once I have additional information and an update.  Thanks!
Bill
#please-close


[Change Request]  ValidateTableRelation set to False

Describe the request
Hello, one of our customers explicitly requests to change the behavior of "Item No." fields for specific tables.
Namely, if possible, it is necessary to turn off ValidationTableRelation for "Item No." as it has already been done for Sales Line, Purchase Line, Transfer Line.
List of tables:
Service Item Line
Service Line
Item Journal Line
Warehouse Journal Line
Price List Line
Service Item Line
field(5; "Item No."; Code[20])
{
            Caption = 'Item No.';
            TableRelation = if ("Document Type" = filter(<> "Credit Memo")) Item."No." where(Blocked = const(false), "Service
            Blocked" = const(false))
            else
            if ("Document Type" = filter("Credit Memo")) Item."No." where(Blocked = const(false));
            ValidateTableRelation = false;

            trigger OnValidate()
            begin
                // Validation code here
            end;
}

Service Line
field(6; "No."; Code[20])
{
            Caption = 'No.';
            TableRelation = if (Type = const(" ")) "Standard Text"
            else
            if (Type = const("G/L Account")) "G/L Account"
            else
            if (Type = const(Item), "Document Type" = filter(<> "Credit Memo")) Item where(Blocked = const(false), "Service Blocked"
            = const(false))
            else
            if (Type = const(Item), "Document Type" = filter("Credit Memo")) Item where(Blocked = const(false))
            else
            if (Type = const(Resource)) Resource
            else
            if (Type = const(Cost)) "Service Cost";
            ValidateTableRelation = false;

            trigger OnValidate()
            begin
                // Validation code here
            end;
}

Item Journal Line
field(3; "Item No."; Code[20])
{
            Caption = 'Item No.';
            TableRelation = Item;
            ValidateTableRelation = false;

            trigger OnValidate()
            begin
                // Validation code here
            end;
}

Warehouse Journal Line
field(9; "Item No."; Code[20])
{
            Caption = 'Item No.';
            TableRelation = Item where(Type = const(Inventory));
            ValidateTableRelation = false;

            trigger OnValidate()
            begin
                // Validation code here
            end;
}

Price List Line
field(8; "Asset No."; Code[20])
{
            Caption = 'Product No. (custom)';
            DataClassification = CustomerContent;
            ValidateTableRelation = false;

            trigger OnValidate()
            begin
                // Validation code here
            end;
}

Please, let us know if this change is plausible?
Additional context
Our customer has developed a solution for extended item search by text used in sales and purchase and that solution now needs to be implemented in the specified tables. Considering that the validation of the relation is triggered before any event or trigger on the field, we cannot extract the string entered in the "Item No." field to perform a text search.

That's an interesting case, but since the code you are referring to is in the BaseApp, you'd have to suggest and fix this code in the BaseApp contribution pilot: https://github.com/microsoft/businesscentralapps. For access to the pilot, please fill out the following form: https://forms.office.com/r/E9wyE5a58f.
This repository is only for extensibility requests or pull requests towards the 1st party Business Central apps.
Would you like me to move the issue to the contribution pilot for you? Once the issue is in the contribution pilot, the product group will triage your request. It does sound like a rather impactful change, but let's see!
IMPORTANT: Microsoft is not going to address the reported issue for you. You will have to get the issue approved, and then push a pull request with the suggested changes yourself. If you would like Microsoft to address the issue, please create a support request or log an issue on bcideas.

Hi, We are aware of change impact, it is not a small change. It would be great if you could move the issue to the contribution pilot. in the meantime, I filled out the form for contribution pilot, but I need to wait few days. Please, let me know if change request is accepted.

I've added you to the contribution pilot and you should now have access. I will transfer the issue and then we will do a triage of the issue and verify, if we can approve this issue for a contribution to the BaseApp. Please stay tuned 🙂


Update openssl to most recent stable release

At the moment, this is the latest change to the bundled openssl lib, and it is v1.0.2e , which is horrifically old and the number of openssl security vunerabilities since then is very large.  Some will be irrelevant for a variety of reasons, but I'll bet that some are a real issue.
I've confirmed that the .deb and .tgz being distributed via the web UI includes its own v1.0.2e.  Also confirmed the macOS installer doesnt include its own ssl library.  Didnt try Windows ;-)
See also https://github.com/toggl/toggldesktop/issues/2279

Ah, I see 780a3698141 already did this.  Building.


Reduce price and add items to shop

Changes / 修改内容

给商店添加头像框，并降低价格。
Screenshots / 效果图

Necessity / 必要性

Checklist

[ ] Run sh scripts/test.sh, no tests failed.

If you changed the html templates or css/js, you must:

[ ] Paste screenshots.

If you changed the Python code, you must:

[ ] Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
[ ] Run flask db upgrade, no error code is returned.

Codecov Report

Merging #15 (9ec8d5d) into master (e66b2ca) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #15   +/-   ##
=======================================
  Coverage   91.71%   91.71%
=======================================
  Files          39       39
  Lines        2667     2669    +2
  Branches      305      306    +1
=======================================
+ Hits         2446     2448    +2
  Misses        130      130
  Partials       91       91

Impacted Files
Coverage Δ

flog/models.py
92.56% <100.00%> (+0.03%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e66b2ca...9ec8d5d. Read the comment docs.


Can't get it to work with the built-in SCM input

List of things I have done:

installed commitlint;
added a commitlint.config.js file;
validated with commitlint --from=HEAD~1
downloaded the extension;
tried to commit an invalid message via built-in SCM input.

on the last step nothing happened and the invalid message was commited with no warnings.
Is there something I'm missing?

Okay, cheking:

I see no squiggly lines on built-in SCM input

Same on full editor

On the {} I see an error "error loading config"

Tried enabling the commitlint.log.enabled but no new messages appeared
I have not touched my commitlint.config.js, using as default:

/* global module */
module.exports = { extends: ["@commitlint/config-conventional"] };

Commitlint is installed globally:

$ npm list -g
C:\Users\user\AppData\Roaming\npm
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>

I'm using Windows 10
I can use commitlint normally from cli, ex.:

$ commitlint --from=HEAD~1
⧗   input: dsaiyugdiuysadisda
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

I'm going to need some time to dig into this. Globally installed commitlint on Windows is a bit of a blind spot and I don't have a good test environment for it handy.
You can probably work around the issue by installing any plugins locally in your project (and/or tweaking some config settings), but I understand that's not appealing for non-npm projects.

installing locally on project solves the issue, but the possibility to have it global would be nice!

I think I got this working and published 2.4.3 with a fix. Let me know if it's still misbehaving for you. Thanks for the help reproducing the issue!

I reverted the fix for this to fix #750--on review, my initial attempt was ill-conceived and effectively just undid the work that was done to improve compatibility with global installations for #491.
Short term, v2.4.6 is the latest version with this behavior, so if that works for you, feel free to stay on that version.
Longer term, I think the fix here might involve trying to load configs multiple times (e.g., with or without PREFIX) unless there's a better test or heuristic I can identify. But I will probably also want to prioritize #107 to establish some base level of automated test coverage for these different environments, which will be more reliable than my ad-hoc testing to date.

https://github.com/joshbolduc/vscode-commitlint/issues/744#issuecomment-1591382624 says that installing locally may work and https://github.com/joshbolduc/vscode-commitlint/issues/744#issuecomment-1591737089 says that it does work, but I can't get diagnostics to show. I use the Commit button with a blank message to get the full editor COMMIT_EDITMSG view. When I type there is no diagnostic to help.
I have this installed locally...
  "devDependencies": {
    "@commitlint/cli": "^19.5.0",
    "@commitlint/config-conventional": "^19.5.0",
    "@commitlint/cz-commitlint": "^19.5.0",
    "commitizen": "^4.3.1",
    "husky": "^9.1.6"
  },

I've installed the extension, git cz works from terminal, and the documented commitlint seems to work fine:
> npx commitlint --from HEAD~1 --to HEAD --verbose
⧗   input: chore: add eslint rules
✔   found 0 problems, 0 warnings

Any suggestion as to what I could be missing?

@jibbers42 What you've shared seems okay to me. If you could answer the questions from https://github.com/joshbolduc/vscode-commitlint/issues/744#issuecomment-1587696955 it could help narrow things down a bit more. (For instance, the commitlint command you shared did not show any problems, so one possibility could be that something is wrong with the configuration.)

If you use the full editor instead, do you see any diagnostics/squiggly lines?
With the full editor open, you can hover over the {} part of the language status and it should say whether it's able to load any rules:
image
Is it saying it's loaded any rules? There's also the commitlint.log.enabled setting to enable logging to the output panel, which might also help narrow things down.
What does your commitlint.config.js look like?
Did you install commitlint globally on your system, or locally in your project?
What OS are you using?

Here is the requested info...

If you use the full editor instead, do you see any diagnostics/squiggly lines?
no
With the full editor open, you can hover over the {} part of the language status and it should say whether it's able to load any rules:
There are no rules loaded:

Is it saying it's loaded any rules? There's also the commitlint.log.enabled setting to enable logging to the output panel, which might also help narrow things down.loading @commitlint/load dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/load dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/load dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/load dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/load dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/parse dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/parse dynamically via <absolute path to<EMAIL_ADDRESS>loading @commitlint/parse dynamically via <absolute path to<EMAIL_ADDRESS>...

What does your commitlint.config.js look like?module.exports = {
    // See config at https://github.com/conventional-changelog/commitlint/tree/master/@commitlint/config-conventional
    extends: ['@commitlint/config-conventional'],
    rules: {
        // Add scopes as needed
        // 'scope-enum': [2, 'always', [
        // ]],
    },
    prompt: {
        settings: {
            enableMultipleScopes: true,
            scopeEnumSeparator: ','
        }
    }
};
``

Did you install commitlint globally on your system, or locally in your project?
commitlint is installed locally. I have commitizen installed globally via volta (and installed locally). As a test I removed commitizen from global and verified that git cz failed, but npx cz still worked. I restarted vscode, but it had the same behavior.
What OS are you using?
Windows 11 (latest updates/patches)


EVEREST-919 Support path-style URL access for Backup Storages

Support path-style URL access for Backup Storages
Problem:
EVEREST-919
S3 compatible APIs can support two flavors of bucket hosting styles:
Path-style
Virtual-hosted–style
Currently everest only supports virtual-hosted style but we should also support the path-style.
Solution:
PXC and PSMDB automatically select path-style if needed. PGBackrest needs a config option.
CHECKLIST
Jira

[x] Is the Jira ticket created and referenced properly?

Tests

[ ] Is an Integration test/test case added for the new feature/change?
[ ] Are unit tests added where appropriate?

PXC and PSMDB automatically select path-style if needed. PGBackrest needs a config option.

Are you sure that PSMDB automatically selects it? My understanding is that that PSMDBO needs to set the ForcePathStyle property here, but doesn't expose this in the CR (so this property is always set to false)

PXC and PSMDB automatically select path-style if needed. PGBackrest needs a config option.

Are you sure that PSMDB automatically selects it? My understanding is that PSMDBO needs to set the ForcePathStyle property here, but doesn't expose this in the CR (so this property is always set to false)

:thinking: I don't see such an option on that struct.
Also, I have a minio instance set up that only supports path-style and I tested the mongodb backups and it worked fine :shrug:

Okay, I think we were looking at different versions, I see it here on the main branch: https://github.com/percona/percona-backup-mongodb/blob/main/pbm/storage/s3/s3.go#L49
But if it works without it, thats great :)

Okay, I think we were looking at different versions, I see it here on the main branch: https://github.com/percona/percona-backup-mongodb/blob/main/pbm/storage/s3/s3.go#L49
But if it works without it, thats great :)

I just dug a bit deeper and this is why it works, the default is for it to be enabled:
https://github.com/percona/percona-backup-mongodb/blob/883fd6318fd41bd48e4928160e4f83ce5e86f201/pbm/storage/s3/s3.go#L136-L138
The PSMDB operator doesn't expose this parameter, so we can't really do anything from the everest side but it works :sweat_smile:


Restructrue ledger and rosetta docs

Signed-off-by: Dominic Woerner<EMAIL_ADDRESS>First PR that restructures the Ledger and Rosetta docs and adds a few introductory words and clarifications.
This PR will be followed by another PR that adds an "Interact with the ledger" page that provides practical advice for developers to interact with the ICP ledger and links to sample code.
@MarioDfinity Please have a look if this is an improvement from your perspective

Nice, thank you @domwoe ! I have to work on the working group today but I'll have a look tomorrow for sure. Jean should also review this.

@domwoe it looks good. It's an improvement already and we should merge it when you are ready. I like the idea of making docs easier to read from newcomers.


Count the number of the subsets with a given difference in c++

💥 Proposal
(A clear and concise description of what the proposal is.)
I would like to add the code for Minimum Sum Partition using Dp in cpp. Please assign this issue to me[GSSOC'21].
Have you read the Contributing Guidelines on Pull Requests?
(Write your answer here.)
yes

/assign


[BUG] Loose Satelites afert clean stop and restart of forge server

Version of Advanced Rocketry

AdvancedRocketry-1.10.2-1.4.0-12.jar

Have you verified this is an issue in the latest unstable build

[x] N/A

Version of LibVulpes

LibVulpes-1.10.2-0.2.8-37-universal.jar

Version of Minecraft
Server:

forge-1.10.2-<IP_ADDRESS>1-universal.jar
Client:
1.10.2 by CurseForge

Does this occur without other mods installed

[x] not tested

Crash report or log or visualVM (if applicable)
There is no crash
Description of the problem
I have same problem like #638 and #705
Means that I loosing my sats every new start of my multiplayer forge server.
/world/advRocketry/planetDefs.xml => https://pastebin.com/NC2DtqYS
/advRocketry <= not exists

You're on an old version, we no longer support 1.10; only 1.12.2 is supported at this time. As such you should update as your issue has likely been fixed. There's nothing we're going to do about bugs on older version. Please close this issue.

You're on an old version, we no longer support 1.10; only 1.12.2 is supported at this time. As such you should update as your issue has likely been fixed. There's nothing we're going to do about bugs on older version. Please close this issue.

You're on an old version, we no longer support 1.10; only 1.12.2 is supported at this time. As such you should update as your issue has likely been fixed. There's nothing we're going to do about bugs on older version. Please close this issue.

Sorry that make no sense.
http://arwiki.dmodoomsirius.me/AdvancedRocketry/
here you see that 1.4. is the actuall version.
I use AdvancedRocketry-1.10.2-1.4.0-12.jar

You're on an old version, we no longer support 1.10; only 1.12.2 is supported at this time. As such you should update as your issue has likely been fixed. There's nothing we're going to do about bugs on older version. Please close this issue.

Sorry that make no sense.
http://arwiki.dmodoomsirius.me/AdvancedRocketry/
here you see that 1.4. is the actuall version.
I use AdvancedRocketry-1.10.2-1.4.0-12.jar

That is still 1.10.2. Please close or update to latest version.
On Tue, Jan 26, 2021, 10:10 AM Philipp<EMAIL_ADDRESS>wrote:

You're on an old version, we no longer support 1.10; only 1.12.2 is
supported at this time. As such you should update as your issue has likely
been fixed. There's nothing we're going to do about bugs on older version.
Please close this issue.
Sorry that make no sense.
http://arwiki.dmodoomsirius.me/AdvancedRocketry/
here you see that 1.4. is the actuall version.
I use AdvancedRocketry-1.10.2-1.4.0-12.jar
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/zmaster587/AdvancedRocketry/issues/1987#issuecomment-767649915,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGVDBJC4MJLC66ETPFC5YILS33SOJANCNFSM4WTEXEVQ
.

That is still 1.10.2. Please close or update to latest version.
On Tue, Jan 26, 2021, 10:10 AM Philipp<EMAIL_ADDRESS>wrote:

You're on an old version, we no longer support 1.10; only 1.12.2 is
supported at this time. As such you should update as your issue has likely
been fixed. There's nothing we're going to do about bugs on older version.
Please close this issue.
Sorry that make no sense.
http://arwiki.dmodoomsirius.me/AdvancedRocketry/
here you see that 1.4. is the actuall version.
I use AdvancedRocketry-1.10.2-1.4.0-12.jar
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/zmaster587/AdvancedRocketry/issues/1987#issuecomment-767649915,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGVDBJC4MJLC66ETPFC5YILS33SOJANCNFSM4WTEXEVQ
.

And the wiki isn't perfectly up-to-date; I've written part of the mod, you'd think I would know what version it's on. Latest AR is 1.7.[something], it's certainly not 1.4.[something].

And the wiki isn't perfectly up-to-date; I've written part of the mod, you'd think I would know what version it's on. Latest AR is 1.7.[something], it's certainly not 1.4.[something].

The Bug is still existing. So why to close :-D
Can you please help me to merge the latest version to the 1.10.2 compatible Version?
My pack have lot mods depending of 1.10.

The Bug is still existing. So why to close :-D
Can you please help me to merge the latest version to the 1.10.2 compatible Version?
My pack have lot mods depending of 1.10.

Yeah but the bug is fixed in the 1.12.2 version.
On Tue, Jan 26, 2021, 1:30 PM Philipp<EMAIL_ADDRESS>wrote:

The Bug is still existing. So why to close :-D
Can you please help me to merge the latest version to the 1.10.2
compatible Version?
My pack have lot mods depending of 1.10.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/zmaster587/AdvancedRocketry/issues/1987#issuecomment-767775315,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGVDBJDECFCFALFYFNK4VL3S34J4FANCNFSM4WTEXEVQ
.

Yeah but the bug is fixed in the 1.12.2 version.
On Tue, Jan 26, 2021, 1:30 PM Philipp<EMAIL_ADDRESS>wrote:

The Bug is still existing. So why to close :-D
Can you please help me to merge the latest version to the 1.10.2
compatible Version?
My pack have lot mods depending of 1.10.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/zmaster587/AdvancedRocketry/issues/1987#issuecomment-767775315,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGVDBJDECFCFALFYFNK4VL3S34J4FANCNFSM4WTEXEVQ
.

Can you please help me to merge the latest version to the 1.10.2 compatible Version?
..... you do realise how much work you're asking of me? There's been hundreds of hours of work past the latest 1.10 version, I don't know it very well, and much has changed -- if you want the bug fixed, update to 1.12 and stop asking for me to spend hours I can ill afford on your flights of fancy that don't allow you to update to 1.12 where the bug is fixed.

Can you please help me to merge the latest version to the 1.10.2 compatible Version?
..... you do realise how much work you're asking of me? There's been hundreds of hours of work past the latest 1.10 version, I don't know it very well, and much has changed -- if you want the bug fixed, update to 1.12 and stop asking for me to spend hours I can ill afford on your flights of fancy that don't allow you to update to 1.12 where the bug is fixed.


Real time audio feedback for active mode.

It is possible to connect headphones to the 3.5 mm jack on the Raspberry Pi. This can be used for sound feedback.
There are three techniques mainly used for this; Heterodyne (HET), Frequency division (FD) and Time expansion (TE). I will try to implement another one: Pitch shifting, PS. With PS it is possible to transform the ultrasonic frequency range down to a range where we are able to hear it, without changing the time scale. An adjustable division factor, about 10 to 50, will probably be used.

Ready for test in the "development" branch. No settings and loggings ready yet but it works with default settings.

"Audio feedback - volume" and "Audio feedback - pitch" added as settings.

"Audio feedback - volume" and "Audio feedback - pitch" added as settings.

Still some buffering problems and UI synchronization work needed. But it is in the master branch for test.

Still some buffering problems and UI synchronization work needed. But it is in the master branch for test.

The code for sound card communication is updated. ALSA is more or less used directly instead of using big libraries, that caused all the earlier problems.
Version 0.9.0 released.


What is GO:0043744 N2-acetyl-L-aminoadipate kinase activity ?

Working on #18908
GO:0043744
name: N2-acetyl-L-aminoadipate kinase activity
namespace: molecular_function
alt_id: GO:0043868
def: "Catalysis of the reaction: ATP + N-acetyl-L-aminoadipate = ADP + N-acetyl-L-aminoadipate 5-phosphate." [IMG:01448]
Has no annotations.
Has a xref to https://biocyc.org/META/NEW-IMAGE?type=NIL&object=RXN-5182 but I cannot figure out why.
@hdrabkin what do you think about that one ?
Thanks, Pascale

It's mapped to that Metacyc because
N-acetyl-L-2-aminoadipate(2−) is what the 'amino group carrier protein' is linked to
This appears to be related to this
RHEA:28586 | ATP + N-acetyl-L-2-aminoadipate = ADP + N-acetyl-L-2-aminoadipate 6-phosphate
but this rhea product is the 6-phosphate not the 5.
metacyc has this
Enzyme Commission Primary Name: [amino group carrier protein]-L-2-aminoadipate 6-kinase
Which I can't find in EC
DO  you remember what IMG stood for?

Ok; found where to get these.
SO, the IMG:01448
can be found here
https://img.jgi.doe.gov/cgi-bin/proportal/main.cgi?section=ImgTermBrowser&page=imgTermBrowser
But you need to search on "1448"; they do not use IMG or the leading zero
Doing that you find
1448  N2-acetyl-L-aminoadipate kinase (EC 2.7.2.-) which goes to a IMG Term Details page
where we find they have it crossed referenced to EC:2.7.2.-
it's part of the L-lysine synthesis by prokaryotic aminoadipate pathway
So important.

RHEA:28586          (OBSOLETE)

Replaced by RHEA:41944          (APPROVED)
[2-aminoadipate-carrier protein]-C-terminal-gamma-(L-2-aminoadip-2-yl)-L-glutamate + ATP = [2-aminoadipate-carrier protein]-C-terminal-gamma-(6-phospho-L-2-aminoadip-2-yl)-L-glutamate + ADP

Ok, I'll tell Anne

RHEA:28586 | ATP + N-acetyl-L-2-aminoadipate = ADP + N-acetyl-L-2-aminoadipate 6-phosphate fits but again, t
generate a 6-phosphate, not a 5
-- | --

Good references PMID:26966182 and PMID:25392000
Sound like it could be a child of

I wonder if it should be a child of 'molecular carrier activity' ?
@pedruzzi

"Several bacteria and archaea utilize the amino group-carrier protein, LysW, for lysine biosynthesis, in which an isopeptide bond is formed between the C-terminal Glu of LysW and an amino group of α-aminoadipate (AAA). The resulting LysW-γ-AAA is phosphorylated by LysZ to form LysW-γ-AAA phosphate, which is subsequently reduced to LysW-γ-aminoadipic semialdehyde (LysW-γ-AASA) through a reaction catalyzed by LysY. " (PMID:26966182)
So this is an 'amino acid kinase activity' (although the amino acid is modified when attached to a carrier protein).

I'm thinking the '5-phosphate'  in the term def is an error because if you look at the structure of the  N-acetyl-L-2-aminoadipate I can't see where there would be a 5 phosphate; it should be 6

I think RHEA:41944 is right, NOT RHEA:28586

In any event the def needs to be changed to the 6-phosphate

New is bold
Removed is italics
GO:0043744
name: N2-acetyl-L-aminoadipate kinase activity
-def: "Catalysis of the reaction: ATP + N-acetyl-L-aminoadipate = ADP + N-acetyl-L-aminoadipate 5-phosphate." [IMG:01448]
+def: "Catalysis of the reaction: ATP + N-acetyl-L-2-aminoadipate = ADP + N-acetyl-L-2-aminoadipate 6-phosphate." [PMID:25392000, PMID:26966182, RHEA:41944]
+synonym: "[LysW]-aminoadipate kinase" RELATED []
synonym: "acetylaminoadipate kinase activity" EXACT []
-synonym: "LysZ" RELATED []
synonym: "N-acetyl-L-aminoadipate 5-phosphotransferase activity" EXACT []
synonym: "N-acetylaminoadipate kinase activity" EXACT []
xref: MetaCyc:RXN-5182
-is_a: GO:0016301 ! kinase activity
+xref: RHEA:41944
is_a: GO:0016774 ! phosphotransferase activity, carboxyl group as acceptor
+is_a: GO:0019202 ! amino acid kinase activity

FWIW, I have a file for RHEA where 41944 is the id they mapped go GO:0043744


Update Dockerfiles to use non-slim base OS images per new guidelines

See https://github.com/oracle/docker-images/blob/main/CONTRIBUTING.md#base-image-rules
Signed-off-by: Christopher Jones<EMAIL_ADDRESS>

The mandate not to use -slim is only for Oracle Linux 8 (because of microdnf and lack support for AppStreams/modularity). You do not (and should not) change images based on oraclelinux:7-slim.

I'll submit a clean PR


Getting Started With HTTP/2 and Server Push in Node.js

Article checklist
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
If you have not already please go over our Resources Page for more tips and tricks on how to improve our overall technical writing.
Preliminary Checks - Formatting and Structure

[x] Does your article follow any of the suggested structure formats? - see example formats
[x] Is your article properly formatted in Markdown? - see Github Markdown guide
[x] Have you used the correct folder and file structure? - see Contribution Guidelines
[x] Is your article over 750 words? - Tool: Wordcounter.net
[x] Have you used our preferred heading structure? - H3 (###) and up
[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.
[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.
[x] Have you included a hero image that is 600x400 pixels and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images
[x] In your PR - add a comment that states "This fixes #(enter your Idea Content Form #)" to link and close your Idea Content (issue) when the PR is merged.

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid -  Grammarly
[x] Please place your article through a 3rd party plagiarism checker? We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide

Contribution guidelines
For first-time contributors and for more details, see Contributing Guidelines

Hello :wave:
As you know, we were working on a new structure for our EngEd Repo, which has led to a slight slow down of article publishing. Everything is almost ready now.
In order to publish your article as soon as possible, please do the following:

Download the most recent files off this PR (Make sure to pick the latest one with my revisions and edits).
Delete your article directory from the articles folders.
Do a git pull (take a look at the new structure of the repo after a git pull).
Upload your article files to the new articles folder inside content.

Ping me via Slack if you have any problems.

Thank you v much for your patience as we worked through our Repo re-structuring process.
The purpose behind this restructure - was to better allow us to handle more volume and allow students to publish more articles and get more involved with the community (with open-source contribution and suggestions).
With most of the changes coming to completion - we will be sure to get your article published asap.
Thank you again - and we are looking forward to more amazing articles.

@Bradley8555
cc @paulodhiambo  any update on this PR - just wondering if its ready for a final review? 👍

@Bradley8555 amazing tutorial. @hectorkambow you can give it a final review.

great work gents @Bradley8555
cc @paulodhiambo
please go over the small and minor edits I may have made to improve future articles and or reviews


[FLOC-2151] Add warning about restarting VMs to tutorial doc

Fixes FLOC-2151 via documenting the workaround for loss of static IP config,

The buildbot tests are failling, but from what I can see this is because they are validating the 'live' website and not the latest-dev
http://build.clusterhq.com/builders/flocker-docs/builds/8032/steps/build-linkcheck/logs/errors
this if I am reading these correctly.
@dwgebler Can you comment, merge and close if that's the case?

Why is this in the tutorial and not the GSG?

Sorry, because of the points I've just added (particularly the GSG) can this please be resubmitted.

the GSG is going away, as per PR https://github.com/ClusterHQ/flocker/pull/1506

Why is this in the tutorial and not the GSG?

I'm not doing anything to the GSG in this branch because it's being removed in another branch.

Can you comment, merge and close if that's the case?

Broken link warnings are pretty normal, there are none in here that are "genuine" as it were, I think most of them happen because we can't retrieve HTTPS on that builder for some reason. In the first build there was also a spelling error but I've fixed that now. @Azulinho if you'd like me to merge this, please accept the JIRA issue https://clusterhq.atlassian.net/browse/FLOC-2151 thanks :)

@dwgebler Please can you make a follow-up to make any relevant issues for the new guide.

:disappointed: The GSG is here to stay for 1.0.0.
This needs to be merged into release/flocker-1.0.0pre1 too.


Bootstrap feature

update home.njk

👷 Deploy Preview for johare-cv processing.

Name
Link

🔨 Latest commit
00c7008211c74106aa68f036c218a553d2e6f959

🔍 Latest deploy log
https://app.netlify.com/sites/johare-cv/deploys/65f6cd2600c97e00086d3738


[Question] How to implement a blockRenderer which can render two or more component?

Do you want to request a feature or report a bug?
feature
What is the current behavior?
I have two custom block components, which have their own props:
// Foo1

class Foo1 extends React.Component {
  render() {
    const {block, contentState} = this.props;
    const {foo1} = this.props.blockProps;
    const data = contentState.getEntity(block.getEntityAt(0)).getData();
    // Return a child component which `Entity` is `TOKEN1` using this data.
  }
}

// Foo2

class Foo2 extends React.Component {
  render() {
    const {block, contentState} = this.props;
    const {foo2} = this.props.blockProps;
    const data = contentState.getEntity(block.getEntityAt(0)).getData();
    // Return a child component which `Entity` is `TOKEN2` using this data.
  }
}

and I don't want to merge them into Foo, but the blockRenderer only support one component:
function myBlockRenderer(contentBlock) {
  const type = contentBlock.getType();
  if (type === 'atomic') {
    return {
      component: Foo1, // here
      editable: false,
      props: {
        foo1: 'bar1', // and here
      },
    };
  }
}

or
function myBlockRenderer(contentBlock) {
  const type = contentBlock.getType();
  if (type === 'atomic') {
    return {
      component: Foo2, // here
      editable: false,
      props: {
        foo2: 'bar2', // and here
      },
    };
  }
}

What is the expected behavior?
function myBlockRenderer(contentBlock) {
  const type = contentBlock.getType();
  if (type === 'atomic') {
    // Switch `Entity`

    if (componentEntity === 'TOKEN1') {
      return {
        component: Foo1,
        editable: false,
        props: {
          foo1: 'bar1',
        },
      };
    }
    else if (componentEntity === 'TOKEN2') {
      return {
        component: Foo2,
        editable: false,
        props: {
          foo2: 'bar2',
        },
      };
    }
  }
}

but it's invalid in Draft.js, so how to implement a blockRenderer which can achieve it.
Which versions of Draft.js ?
v 0.11.7

atomic is the type of the block, in your case it looks like you want to render entities differently based on their type – so you first need to query the type of the entity. For atomic blocks, the corresponding entity is stored on character 0 of the block’s text (block.getEntityAt(0)).
Here is an example: https://github.com/springload/draftail/blob/e2237081439598419dabc9191c256e1ff8031792/lib/components/DraftailEditor.js#L737-L757


Bindings for Golang

Make magika available to Go applications.

I think I can help with this.

Awesome! should we then assign this to you so that people know someone is already on it? :-)

If you actually want to pick this up, great, and let's discuss briefly how you would approach this. There are several ways to deal with this, let's make sure we align first on the approach :-)

Here are some of my ideas:

the python version's main logic is extract features from files, then predict with onnx. I think I can rewrite the whole thing in Go, with onnx-go
the Go version would be available in both package and executable(CLI). With Go, the CLI can be distributed to more platforms more conveniently
the config and models directory should move to a parent folder, so that other languages(like Rust or PHP) can use them in a similar way

Would love to participate in this.

Thanks for the interest!
Here are my thoughts:

ideally, we would like to not reimplement the feature extraction in every language, because we may change that for future versions... and in that case we may need to update the implementation in all these ports. If it's necessary, then we'll need to do it. The question is: is it really necessary? is there a way to have a lower-level implementation of things (e.g., a shared object, .so) and then the different ports rely on the same? Not sure.
the idea would be to have n bindings for n languages/environments (so to simplify using integration with existing languages), but we would have only one CLI. The current CLI is in python, but we are investigating whether we can have a new CLI in Rust (see #93). This new CLI would replace the existing python one (as we expect it to be 8x/9x/10x faster; tests pending). So, I'm not sure about how a CLI in go would fit in the grand plan?
config/models are currently copied in the different python/, js/ folders because 1) they may be in different formats, 2) it makes the packaging much easier if all the files are part of the same dir). But, ideally, we would have "the raw model/config" in one place only, and then have all python/js model/config generated starting from that raw data. We didn't have time to implement this. I'm going to open an issue for tracking; but for now I wouldn't worry too much about this and you can assume to have model/config in the same dir?

Feedback is welcome :-)

I am not very keen on the idea of using shared library on creating bindings for go (just go, not other languages). Using shared library means using CGO(I am not very sure about this, correct me if I am wrong), and CGO has at least these drawbacks compared to native go:

cross-compiling could be a nightmare
worse performance

Hey, no worries! and sorry for delay in following up. Interesting you mentioned the rust impl would be enough... how would a golang app call out magika inference without shelling out to the CLI?

Hey, no worries! and sorry for delay in following up. Interesting you mentioned the rust impl would be enough... how would a golang app call out magika inference without shelling out to the CLI?

I mean a go CLI would not be necessary if you already have plans for a Rust one.
But for the go package, there are a few different approaches.

implement both feature extraction and inference with native go
call the Rust CLI in go, executing CLI commands(is this what you meant by "shelling out to the CLI"?)

Personally I prefer the first one because a) the feature extraction logic is not too complicated to implement, b) dependency management would be easier, and c) better performance.
The second one is easier to implement and more agnostic to changes though. But the performance overhead is not ideal since the package is more commonly used in online processing instead of offline CLI/script.

Hello @LeslieLeung, sorry for the long delay in replying! and thanks for your input! We are preparing a new release, and we are now actively thinking about this go bindings aspect as well; your input is very useful! We will update this issue when we wrap up our thoughts on the topic. Thanks again!


[SPARK-36242][CORE] Ensure spill file closed before set success = true in ExternalSorter.spillMemoryIteratorToDisk method

What changes were proposed in this pull request?
The main change of this pr is move writer.close() before success = true to ensure spill file closed before set success = true in ExternalSorter.spillMemoryIteratorToDisk method.
Why are the changes needed?
Avoid setting success = true first and then failure of close spill file
Does this PR introduce any user-facing change?
No
How was this patch tested?

Pass the Jenkins or GitHub Action
Add a new Test case to check The spill file should not exists if writer close fails

Test build #141402 has started for PR 33460 at commit 1e970f3.

Test build #141402 has finished for PR 33460 at commit 1e970f3.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141402/

Test build #141409 has started for PR 33460 at commit f38d735.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/45920/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/45920/

Kubernetes integration test unable to build dist.
exiting with code: 1
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/45926/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/45920/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/45926/

Test build #141409 has finished for PR 33460 at commit f38d735.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141409/

I would prefer if we had a test for this btw @LuciferYang.

How can I create a successful flush but fail to writer.close() case when calling this method?
writer is a local  variable in ExternalSorter#spillMemoryIteratorToDisk method and spillMemoryIteratorToDisk is private method, so it's hard to mock writer`'s behavior.
Do you have any suggestions for this? @mridulm @HyukjinKwon @Ngone51

I would prefer if we had a test for this btw @LuciferYang.

How can I create a successful flush but fail to writer.close() case when calling this method?
writer is a local  variable in ExternalSorter#spillMemoryIteratorToDisk method and spillMemoryIteratorToDisk is private method, so it's hard to mock writer`'s behavior.
Do you have any suggestions for this? @mridulm @HyukjinKwon @Ngone51

Mock blockManager.getDiskWriter ?

Mock blockManager.getDiskWriter ? See UnsafeShuffleWriterSuite for an example

Thx ~

Test build #141483 has started for PR 33460 at commit 65e6987.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46001/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46001/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/46001/

Test build #141483 has finished for PR 33460 at commit 65e6987.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141483/

Test build #141530 has started for PR 33460 at commit a57e76a.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46048/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46048/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/46048/

Test build #141530 has finished for PR 33460 at commit a57e76a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141530/

Thanks, merged to master/3.2.

+1, LGTM. Thank you, @LuciferYang and all!

BTW, this looks like a bug fix. Could you make a backport to branch-3.1/3.0 please?

BTW, this looks like a bug fix. Could you make a backport to branch-3.1/3.0 please?

@dongjoon-hyun  OK, I'll do it as soon as possible

@dongjoon-hyun
branch-3.1: https://github.com/apache/spark/pull/33513
branch-3.0: https://github.com/apache/spark/pull/33514

thx ~ @Ngone51 @mridulm @dongjoon-hyun


Change namespace for IServiceCollection extensions

This changes the namespace of the IServiceCollection extension methods to Microsoft.Extensions.DependencyInjection. This eliminates the need of importing using BlazorBootstrap within Program.cs
In addition this PR removes the not necessary ; for the _Imports.razor setup guide.

@MarvinKlein1508 I like the idea. Thinking loud of other scenarios.


az account get-access-token does not work in Cloud Shell for some resources

This is autogenerated. Please review and update as needed.
Describe the bug
The command az account get-access-token works in the downloaded Azure CLI for the resource types https://database.windows.net/ and https://ossrdbms-aad.database.windows.net, but it does not work for these resources in Cloud Shell. Instead, it results in the exception reported below.
The weird thing is that it works fine in Cloud Shell (and downloaded) for other resource types such as https://graph.windows.net/.
It is not clear to me what the difference is between the resources that work in Cloud Shell and those that do not work, nor do I know how to debug the issue. I checked the code, and it appears that Cloud Shell and downloadable versions of CLI appear to be using the same clientId ("Xplat client ID"). If they were using different client IDs, that would explain the difference.
I can see that the Cloud Shell CLI uses a different flow for get_raw_token. Any advice on how to debug this would be appreciated.
Command Name
az account get-access-token
Errors:
400 Client Error: Bad Request for url: http://localhost:50342/oauth2/token
Traceback (most recent call last):
python3.6/site-packages/knack/cli.py, ln 206, in invoke
    cmd_result = self.invocation.execute(args)
cli/core/commands/__init__.py, ln 603, in execute
    raise ex
cli/core/commands/__init__.py, ln 661, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
...
python3.6/site-packages/msrestazure/azure_active_directory.py, ln 486, in get_msi_token
    result.raise_for_status()
python3.6/site-packages/requests/models.py, ln 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://localhost:50342/oauth2/token

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Launch Cloud Shell from the Azure Portal.
az account get-access-token --resource https://database.windows.net/

Expected Behavior
Should return a JSON structure containing a valid access token for the Portal logged-in user containing the audience claim value https://database.windows.net/.
Environment Summary
Linux-4.15.0-1052-azure-x86_64-with-debian-stretch-sid
Python 3.6.5
Shell: bash

azure-cli 2.0.70

Additional Context

@maertendMSFT, when cloud shell would be able to supply the token for resources of  https://database.windows.net/ and https://ossrdbms-aad.database.windows.net?

We will reactive when cloud shell supports it. This is not a CLI issue.

The same for own App registration e.g.:
Application ID URI : api://own-apim

Errors:
The command failed with an unexpected error. Here is the traceback:

400 Client Error: Bad Request for url: http://localhost:50342/oauth2/token
Traceback (most recent call last):
  File "/opt/az/lib/python3.6/site-packages/knack/cli.py", line 206, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 603, in execute
    raise ex
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 661, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 654, in _run_job
    six.reraise(*sys.exc_info())
  File "/opt/az/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 631, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 305, in __call__
    return self.handler(*args, **kwargs)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/__init__.py", line 485, in default_command_handler
    return op(**command_args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/command_modules/profile/custom.py", line 61, in get_access_token
    creds, subscription, tenant = profile.get_raw_token(subscription=subscription, resource=resource)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 600, in get_raw_token
    creds = self._get_token_from_cloud_shell(resource)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 373, in _get_token_from_cloud_shell
    auth = MSIAuthentication(resource=resource)
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 592, in __init__
    self.set_token()
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 598, in set_token
    self.scheme, _, self.token = get_msi_token(self.resource, self.port, self.msi_conf)
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 486, in get_msi_token
    result.raise_for_status()
  File "/opt/az/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://localhost:50342/oauth2/token

For reference, in case anyone else has this issue or is looking into it:
First, there is a workaround, which is to enter the command "az login" into the Cloud Shell command prompt, and then follow the instructions to open the authentication page and paste in the given verification code. After doing that, "az account get-access-token --resource" will work in Cloud Shell as it does in the on-prem Azure CLI.
Second, in order for a resource to be supported out-of-the-box in Cloud Shell, there must be a registered resource mapping in the Portal codebase for it. So, this is not an issue in the Azure CLI code, but rather an issue where the mapping does not exist in the Portal code. For this reason, it is likely that the "az login" workaround will be needed in Cloud Shell for all but well-known resource names.


chore: add bootstrap address for duatdtvt10

Description
Briefly describe the changes introduced by this pull request.
Related issue(s)
If this Pull Request is related to an issue, mention it here.

Fixes #(issue number)

@duatbk06 Please add proper address and make sure there is no conflict